Buenas noches,
En el segundo punto del ejercicio 17.2 se pide demostrar que:
para todas listas l1, l2: Si l1 « l2 entonces existe una lista l3 tal que l2 = l3++l1.
Nuestra definición de posfijo es
Inductive posfijo (A:Set): list A -> list A -> Prop :=
posfijo0 : forall l1, posfijo A l1 l1
| posfijoS : forall (l1 l2: list A)(a:A),
posfijo A l1 l2 -> posfijo A l1 (cons A a l2).
No estamos logrando demostrar dicho lema. En principio, estamos haciendo los siguientes pasos:
Lemma correccionPosfijo2 :
forall (A:Set)(l1 l2: list A),
posfijo A l1 l2 -> (exists l3:list A, l2 = append A l3 l1).
Proof.
intros A l1 l2 h1.
destruct h1.
exists (nil A).
simpl.
reflexivity.