Buenas,
No tenemos claro como encarar el ejercicio 4.2. Utilizando el siguiente lema logramos demostrarlo, pero no estaríamos pudiendo demostrar dicho lema:
Lemma Ej4Aux: forall (l1 l2: list) (a: A), perm l1 l2 -> perm (cons a l1) (append l2 (cons a nil)).
Tienen alguna sugerencia sobre como encarar el ejercicio?
La implementación de reverse que utilizamos es la siguiente:
Fixpoint reverse (l : list) {struct l} : list :=
match l with
| nil => nil
| cons a l1 => append (reverse l1) (cons a nil)
end.
Desde ya muchas gracias,
Saludos!