| 
26999
 | 
     1  | 
structure Nat = 
  | 
| 
 | 
     2  | 
struct
  | 
| 
 | 
     3  | 
  | 
| 
 | 
     4  | 
datatype nat = Dig1 of nat | Dig0 of nat | One_nat | Zero_nat;
  | 
| 
 | 
     5  | 
  | 
| 
 | 
     6  | 
fun plus_nat (Dig1 m) (Dig1 n) = Dig0 (plus_nat (plus_nat m n) One_nat)
  | 
| 
 | 
     7  | 
  | plus_nat (Dig1 m) (Dig0 n) = Dig1 (plus_nat m n)
  | 
| 
 | 
     8  | 
  | plus_nat (Dig0 m) (Dig1 n) = Dig1 (plus_nat m n)
  | 
| 
 | 
     9  | 
  | plus_nat (Dig0 m) (Dig0 n) = Dig0 (plus_nat m n)
  | 
| 
 | 
    10  | 
  | plus_nat (Dig1 m) One_nat = Dig0 (plus_nat m One_nat)
  | 
| 
 | 
    11  | 
  | plus_nat One_nat (Dig1 n) = Dig0 (plus_nat n One_nat)
  | 
| 
 | 
    12  | 
  | plus_nat (Dig0 m) One_nat = Dig1 m
  | 
| 
 | 
    13  | 
  | plus_nat One_nat (Dig0 n) = Dig1 n
  | 
| 
 | 
    14  | 
  | plus_nat m Zero_nat = m
  | 
| 
 | 
    15  | 
  | plus_nat Zero_nat n = n;
  | 
| 
 | 
    16  | 
  | 
| 
 | 
    17  | 
end; (*struct Nat*)
  |