def f (x : Nat) : IO Unit := do match x with | 0 | 1 => IO.println "0 or 1" | _ => IO.println "greater than 1" #eval f 0 #eval f 1 #eval f 2 def g (x : Nat) : IO Unit := match x with | 0 | 1 => IO.println "0 or 1" | _ => IO.println "greater than 1" #eval g 0 #eval g 1 #eval g 2 def h (x : Nat) : Nat := match x with | 0 | 1 => 1 | x + 2 => x + 1 example : h x > 0 := by match x with | 0 | 1 => decide | x + 2 => simp [h] inductive StrOrNum where | S (s : String) | I (i : Int) def StrOrNum.asString (x : StrOrNum) := match x with | I a | S a => toString a