41 lines
949 B
Text
41 lines
949 B
Text
import data.vector
|
||
open nat
|
||
universes u v
|
||
|
||
-- set_option trace.eqn_compiler.wf_rec true
|
||
set_option trace.debug.eqn_compiler.wf_rec true
|
||
-- set_option trace.debug.eqn_compiler.mutual true
|
||
|
||
mutual def even, odd
|
||
with even : nat → bool
|
||
| 0 := tt
|
||
| (a+1) := odd a
|
||
with odd : nat → bool
|
||
| 0 := ff
|
||
| (a+1) := even a
|
||
|
||
#print even
|
||
#print even._main
|
||
#print _mutual.even.odd
|
||
|
||
#eval even 3
|
||
#eval even 4
|
||
#eval odd 3
|
||
#eval odd 4
|
||
#check even.equations._eqn_1
|
||
#check even.equations._eqn_2
|
||
#check odd.equations._eqn_1
|
||
#check odd.equations._eqn_2
|
||
|
||
mutual def f, g {α β : Type u} (p : α × β)
|
||
with f : Π n : nat, vector (α × β) n
|
||
| 0 := vector.nil
|
||
| (succ n) := vector.cons p $ (g n p.1).map (λ b, (p.1, b))
|
||
with g : Π n : nat, α → vector β n
|
||
| 0 a := vector.nil
|
||
| (succ n) a := vector.cons p.2 $ (f n).map (λ p, p.2)
|
||
|
||
#check @f.equations._eqn_1
|
||
#check @f.equations._eqn_2
|
||
#check @g.equations._eqn_1
|
||
#check @g.equations._eqn_2
|