-- implicit builtin bool -- Builtin nat requires builtin bool when translated to integers, because -- matching is translated to comparison operators and cases on booleans. module test045; builtin nat type Nat := | zero : Nat | suc : Nat → Nat; syntax fixity additive := binary {assoc := left}; syntax operator + additive; + : Nat → Nat → Nat | zero b := b | (suc a) b := suc (a + b); main : Nat := suc zero + suc (suc (suc zero));