lemma append_assoc: assumes"k:Lists(A)" and"l:Lists(A)" and"m:Lists(A)" shows"k @ l @ m = (k @ l) @ m" apply (eq_coinduct3 "{p. EX x y. p=<x,y> ∧ (EX k:Lists (A). EX l:Lists (A). EX m:Lists (A). x=k @ l @ m ∧ y= (k @ l) @ m) }") apply (blast intro: assms) apply safe apply (drule ListsXH [THEN iffD1]) apply EQgen prefer2 apply blast apply (tactic ‹DEPTH_SOLVE (eresolve_tac context [XH_to_E @{thm ListsXH}] 1
THEN EQgen_tac context [] 1)›) done
subsection‹Appending anything to an infinite list doesn't alter it›
lemma ilist_append: assumes"l:ILists(A)" shows"l @ m = l" apply (eq_coinduct3 "{p. EX x y. p=<x,y> ∧ (EX l:ILists (A) .EX m. x=l@m ∧ y=l)}") apply (blast intro: assms) apply safe apply (drule IListsXH [THEN iffD1]) apply EQgen apply blast done
(*** The equivalance of two versions of an iteration function ***) (* *) (* fun iter1(f,a) = a$iter1(f,f(a)) *) (* fun iter2(f,a) = a$map(f,iter2(f,a)) *)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.