| 
105
 | 
     1  | 
BoolNat = Arith +
  | 
| 
 | 
     2  | 
types   bool,nat    0
  | 
| 
 | 
     3  | 
arities bool,nat    :: arith
  | 
| 
 | 
     4  | 
consts  Suc         :: "nat=>nat"
  | 
| 
 | 
     5  | 
rules   add0        "0 + n = n::nat"
  | 
| 
 | 
     6  | 
        addS        "Suc(m)+n = Suc(m+n)"
  | 
| 
 | 
     7  | 
        nat1        "1 = Suc(0)"
  | 
| 
 | 
     8  | 
        or0l        "0 + x = x::bool"
  | 
| 
 | 
     9  | 
        or0r        "x + 0 = x::bool"
  | 
| 
 | 
    10  | 
        or1l        "1 + x = 1::bool"
  | 
| 
 | 
    11  | 
        or1r        "x + 1 = 1::bool"
  | 
| 
 | 
    12  | 
end
  |