text‹ The difference is that the new domain package is completely definitional, and does not generate any axioms. The following type and constant definitions are not produced by the old domain package. ›
text‹ The new domain package also adds support for indirect recursion with user-defined datatypes. This definition of a tree datatype uses indirect recursion through the lazy list type constructor. ›
text‹ For indirect-recursive definitions, the domain package is not able to generate a high-level induction rule. (It produces a warning message instead.) The low-level reach lemma (now proved as a theorem, no longer generated as an axiom) can be used to derive other induction rules. ›
thm ltree.reach
text‹ The definition of the take function uses map functions associated with each type constructor involved in the definition. A map function for the lazy list type has been generated by the new domain package. ›
thm ltree.take_rews thm llist_map_def
lemma ltree_induct: fixes P :: "'a ltree ==> bool" assumes adm: "adm P" assumes bot: "P ⊥" assumes Leaf: "∧x. P (Leaf⋅x)" assumes Branch: "∧f l. ∀x. P (f⋅x) ==> P (Branch⋅(llist_map⋅f⋅l))" shows"P x" proof - have"P (⊔i. ltree_take i⋅x)" using adm proof (rule admD) fix i show"P (ltree_take i⋅x)" proof (induct i arbitrary: x) case (0 x) show"P (ltree_take 0⋅x)"by (simp add: bot) next case (Suc n x) show"P (ltree_take (Suc n)⋅x)" apply (cases x) apply (simp add: bot) apply (simp add: Leaf) apply (simp add: Branch Suc) done qed qed (simp add: ltree.chain_take) thus ?thesis by (simp add: ltree.reach) qed
end
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-04-28)
¤
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.