35 lines
752 B
Text
35 lines
752 B
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 true a b
|
|
| false => k false b a
|
|
|
|
set_option trace.Compiler.saveBase true in
|
|
def f2 (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 c a b
|
|
| false => k c b 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 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 c
|
|
| .c2 => k b b c
|
|
| .c3 => k b a c'
|
|
| .c4 => k a a c'
|