doc-src/IsarAdvanced/Codegen/Thy/examples/nat_binary.ML
author haftmann
Wed, 28 May 2008 11:05:47 +0200
changeset 26999 284c871d3acb
permissions -rw-r--r--
added new code_datatype example
     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*)