doc-src/IsarAdvanced/Codegen/Thy/examples/nat_binary.ML
changeset 26999 284c871d3acb
equal deleted inserted replaced
26998:2c4032d59586 26999:284c871d3acb
       
     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*)