src/CTT/arith.thy
author wenzelm
Thu, 14 Oct 1999 15:04:36 +0200
changeset 7866 3ccaa11b6df9
parent 0 a5a9c433f639
permissions -rw-r--r--
pdf: generate thumbnails if ISABELLE_THUMBPDF set;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     1
(*  Title: 	CTT/arith
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     2
    ID:         $Id$
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     3
    Author: 	Lawrence C Paulson, Cambridge University Computer Laboratory
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     4
    Copyright   1991  University of Cambridge
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     5
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     6
Arithmetic operators and their definitions
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     7
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     8
Proves about elementary arithmetic: addition, multiplication, etc.
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     9
Tests definitions and simplifier.
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    10
*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    11
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    12
Arith = CTT +
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    13
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    14
consts "#+","-","|-|"	:: "[i,i]=>i"	(infixr 65)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    15
       "#*",div,mod     :: "[i,i]=>i"	(infixr 70)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    16
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    17
rules
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    18
  add_def     "a#+b == rec(a, b, %u v.succ(v))"  
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    19
  diff_def    "a-b == rec(b, a, %u v.rec(v, 0, %x y.x))"  
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    20
  absdiff_def "a|-|b == (a-b) #+ (b-a)"  
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    21
  mult_def    "a#*b == rec(a, 0, %u v. b #+ v)"  
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    22
  mod_def     "a mod b == rec(a, 0, %u v. rec(succ(v) |-| b, 0, %x y.succ(v)))"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    23
  div_def     "a div b == rec(a, 0, %u v. rec(succ(u) mod b, succ(v), %x y.v))"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    24
end