lean4-htt/tests/lean/jpCasesNary.lean

47 lines
1 KiB
Text

set_option trace.Compiler.saveBase true in
def f1 (c : Bool) (a b : Nat) :=
let k d y z :=
match d with
| true => y + z + z*y
| false => z + y
match c with
| true => k false a b
| false => k true b a
set_option trace.Compiler.saveBase true in
def f2 (c : Bool) (a b : Nat) :=
let k y d z :=
match d with
| true => y + z + z*y
| false => z + y
match c with
| true => k a false b
| false => k b true a
inductive C where
| c1 | c2 | c3 | c4
set_option trace.Compiler.saveBase true in
def f3 (c c' : C) (a b : Nat) :=
let k y (d : C) z :=
match d with
| C.c1 => y + z + z*y
| _ => z + y + y
match c with
| .c1 => k a .c2 b
| .c2 => k b .c1 a
| .c3 => k b c' a
| .c4 => k a c' a
set_option trace.Compiler.saveBase true in
def f4 (c c' : C) (a b : Nat) :=
let k y z (d : C) :=
match d with
| C.c1 => y + z + z*y
| C.c3 => y*y+a
| _ => z + y + y
match c with
| .c1 => k a b .c2
| .c2 => k b b .c1
| .c3 => k b a c'
| .c4 => k a a c'