@[noinline] def f (x : Bool) := x @[noinline] def g (x y : Bool) := x def h (x : Bool) (xs : List Nat) : List Bool := match x with | true => let z := f true let y := f false xs.map fun x => g y z | false => let y := f false let z := f true xs.map fun x => g y z theorem ex1 : h true [1] = h false [1] := rfl #guard h true [1] == [false] #guard h false [1] == [false] theorem ex2 : (h true [1] == h false [1]) = true := by native_decide @[noinline] def f2 (a : String) := a @[noinline] def g2 (a : String) (x : Bool) := a def h2 (x : Bool) (xs : List Nat) : List String := match x with | false => let a := f2 "a" let y := f false xs.map fun x => g2 a y | true => let y := f false let a := f2 "a" xs.map fun x => g2 a y #guard h2 true [1] == ["a"] #guard h2 false [1] == ["a"]