test(tests/lean/run/ginductive_pred): mutually inductive predicates
@dselsam We do not have a "story" for this kind of inductive definition.
This commit is contained in:
parent
d50da0feb7
commit
35952f2941
1 changed files with 14 additions and 0 deletions
14
tests/lean/run/ginductive_pred.lean
Normal file
14
tests/lean/run/ginductive_pred.lean
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
inductive term : Type
|
||||
| var : nat → term
|
||||
| app : string → list term → term
|
||||
|
||||
/- In the current system, it will be hard to work with mutually inductive predicates.
|
||||
Reason: we cannot use well-founded recursion, and the induction principle for it
|
||||
is too weak. -/
|
||||
mutual inductive var_occ, var_occ_list
|
||||
with var_occ : nat → term → Prop
|
||||
| leaf (n : nat) : var_occ n (term.var n)
|
||||
| app (n : nat) (s : string) (ts : list term) : var_occ_list n ts → var_occ n (term.app s ts)
|
||||
with var_occ_list : nat → list term → Prop
|
||||
| head (n : nat) (t : term) (ts : list term) : var_occ n t → var_occ_list n (t::ts)
|
||||
| tail (n : nat) (t : term) (ts : list term) : var_occ_list n ts → var_occ_list n (t::ts)
|
||||
Loading…
Add table
Reference in a new issue