type Nat %% ::= 0 | suc (pre :? Nat)
type Nadd < Nat -> Nat
type Nat < Nadd