Note: se si da il nome -> a una ipotesi equazionale, allora
la si sostituisce al volo.
by elim: l1 => //= x xs ->.
by elim: l => //= x xs ->.
by elim: l => //= y ys ->.
elim: l1.
by rewrite /= append_nil.
move=> x xs /= ->.
by rewrite appendA.
elim: l => //= x xs IH .
by rewrite rev_append /= IH.
In questo esercizio, prima di iniziare la prova bisogna
capire quale invariante serve dimostrare. In partcolare
l'accumulatore nil (da generalizzare come ben sapete) non
compare a destra. E questo è il problema che dovere risolvere...
E la soluzione è uno dei lemmi che avete dimostrato prima!
rewrite -(append_nil A (rev l)).
elim: l nil => //= x xs IH acc.
by rewrite IH append_cons.