lean4-htt/old_tests/tests/lean/run/ginductive_pred.lean
2018-04-10 12:56:55 -07:00

14 lines
711 B
Text

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)