text\<open>
Indirect recusion is allowed for sums, products, lifting, and the
continuous function space. However, the domain package does not
generate an induction rule in terms of the constructors. \<close>
text\<open>Non-regular recursion is not allowed.\<close> (* domain ('a, 'b) altlist = ANil | ACons 'a "('b, 'a) altlist" -- "illegal direct recursion with different arguments" domain 'a nest = Nest1 'a | Nest2 "'a nest nest" -- "illegal direct recursion with different arguments"
*)
text\<open>
Mutually-recursive datatypes must have all the same type arguments,
not necessarily in the same order. \<close>
text\<open>Induction rules for flat datatypes have no admissibility side-condition.\<close>
domain'a flattree = Tip | Branch "'a flattree" "'a flattree"
lemma"\P \; P Tip; \x y. \x \ \; y \ \; P x; P y\ \ P (Branch\x\y)\ \ P x" by (rule flattree.induct) \<comment> \<open>no admissibility requirement\<close>
text\<open>Trivial datatypes will produce a warning message.\<close>
text\<open>Rules about ismorphism\<close> term tree_rep term tree_abs thm tree.rep_iso thm tree.abs_iso thm tree.iso_rews
text\<open>Rules about constructors\<close> term Leaf term Node thm Leaf_def Node_def thm tree.nchotomy thm tree.exhaust thm tree.compacts thm tree.con_rews thm tree.dist_les thm tree.dist_eqs thm tree.inverts thm tree.injects
text\<open>Rules about case combinator\<close> term tree_case thm tree.tree_case_def thm tree.case_rews
text\<open>Rules about selectors\<close> term left term right thm tree.sel_rews
text\<open>Rules about discriminators\<close> term is_Leaf term is_Node thm tree.dis_rews
text\<open>Rules about monadic pattern match combinators\<close> term match_Leaf term match_Node thm tree.match_rews
text\<open>Rules about take function\<close> term tree_take thm tree.take_def thm tree.take_0 thm tree.take_Suc thm tree.take_rews thm tree.chain_take thm tree.take_take thm tree.deflation_take thm tree.take_below thm tree.take_lemma thm tree.lub_take thm tree.reach thm tree.finite_induct
text\<open>Rules about finiteness predicate\<close> term tree_finite thm tree.finite_def thm tree.finite (* only generated for flat datatypes *)
text\<open>Rules about bisimulation predicate\<close> term tree_bisim thm tree.bisim_def thm tree.coinduct
text\<open>Induction rule\<close> thm tree.induct
subsection \<open>Known bugs\<close>
text\<open>Declaring a mixfix with spaces causes some strange parse errors.\<close> (* domain xx = xx ("x y") -- "Inner syntax error: unexpected end of input"
*)
end
¤ Dauer der Verarbeitung: 0.1 Sekunden
(vorverarbeitet)
¤
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 ist noch experimentell.