doc-src/IsarAdvanced/Codegen/Thy/examples/nat_binary.ML
changeset 30228 2aaf339fb7c1
parent 30224 79136ce06bdb
parent 30227 853abb4853cc
child 30229 9861257b18e6
child 30243 09d5944e224e
equal deleted inserted replaced
30224:79136ce06bdb 30228:2aaf339fb7c1
     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*)