Buenas tardes!
Siguiendo este mismo hilo ya que es del Ejercicio 17. Nos faltan dos ejercicios con los que nos quedamos trancados.
El primero es:
Pruebe que para todas listas l1, l2 y l3 se cumple que si l1 « l2 y l2 « l1 entonces l1 = l2.
Intentamos hacer inducción en una de las hipótesis pero no pudimos llegar a nada.
Theorem e_4_17_4 : forall (A: Set) (l1 l2: list A), l1 << l2 /\ l2 << l1 -> l1 = l2.
Proof.
intros; elim H; intros.
induction H0.
...
Qed.
--------------------
Y el segundo ejercicio es el de la funcion ultimo.
Nuestra definicion de la funcion es la siguiente:
Fixpoint ultimo (A :Set) (l : list A ) {struct l}: list A :=
match l with
| (nil _)=> nil A
| (cons _ a (nil _)) => (cons _ a (nil _))
| (cons _ b l2) => ultimo A l2
end.
Con esta definición no hemos podido llegar a demostrar el teorema pedido.
Esta definición está bien?
Si está bien, como podemos seguir la prueba que sigue?
Theorem e_4_17_4 : forall (A: Set) (l1 : list A), ultimo A l1 << l1.
Proof.
intros.
induction l1.
simpl.
exact (equal A (nil A)).
Qed.