lean4-htt/tests/playground/arith_eval_nat.lean
2019-03-21 15:11:05 -07:00

19 lines
378 B
Text

inductive Expr
| Var : Nat → Expr
| Val : Nat → Expr
| Add : Expr → Expr → Expr
open Expr Nat
def mkExpr : Nat → Nat → Expr
| 0 v := Val v
| (succ n) v := Add (mkExpr n (v+1)) (mkExpr n (v-1))
def eval : Expr → Nat
| (Var x) := 0
| (Val v) := v
| (Add l r) := eval l + eval r
def main : IO UInt32 :=
IO.println (toString $ eval (mkExpr 26 1)) *>
pure 0