text‹ 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. ›
domain 'a d7 = d7a "'a d7 ⊕ int lift" | d7b "'a ⊗ 'a d7" | d7c (lazy"'a d7 → 'a") 🍋‹Indirect recursion detected, skipping proofs of (co)induction rules›
text‹Note that ‹d7.induct›is absent.›
text‹ Indirect recursion is also allowed using previously-defined datatypes. ›
domain 'a slist = SNil | SCons 'a "'a slist"
domain 'a stree = STip | SBranch "'a stree slist"
text‹Mutually-recursive datatypes can be defined using the ‹and›keyword.›
text‹Non-regular recursion is not allowed.› (* 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‹ Mutually-recursive datatypes must have all the same type arguments, not necessarily in the same order. ›
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.