universes u v -- setOption pp.binderTypes False set_option pp.implicit true set_option trace.compiler.llnf true -- set_option trace.compiler.boxed true namespace x1 def f (x : Bool) (y z : Nat) : Nat := match x with | true := y | false := z + y + y end x1 namespace x2 def f (x : Nat) : Nat := x end x2 namespace x3 def f (x y : Nat) : Nat := x end x3 namespace x4 @[noinline] def h (x y : Nat) : Nat := x + y def f1 (x y : Nat) : Nat := h x y def f2 (x y : Nat) : Nat := h (h x y) (h y x) def f3 (x y : Nat) : Nat := h (h x x) x def f4 (x y : Nat) : Nat := h (h 1 0) x def f5 (x y : Nat) : Nat := h (h 1 1) x end x4 namespace x5 def myMap {α : Type u} {β : Type v} (f : α → β) : List α → List β | [] := [] | (x::xs) := f x :: myMap xs end x5 namespace x6 @[noinline] def act : State Nat Unit := modify (+1) def f : State Nat Unit := act *> act end x6 namespace x7 inductive S | v1 | v2 | v3 def foo : S → S × S | S.v1 := (S.v2, S.v1) | S.v2 := (S.v3, S.v2) | S.v3 := (S.v1, S.v2) end x7 namespace x8 def f (x : Nat) : List Nat := x :: x :: [] end x8