src/CTT/Arith.thy
author wenzelm
Mon, 07 Jul 1997 09:09:21 +0200
changeset 3505 1cb4ea47d967
parent 1474 3f7d67927fe2
child 3837 d7f033c74b38
permissions -rw-r--r--
eliminated chmod -w;

(*  Title:      CTT/arith
    ID:         $Id$
    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
    Copyright   1991  University of Cambridge

Arithmetic operators and their definitions

Proves about elementary arithmetic: addition, multiplication, etc.
Tests definitions and simplifier.
*)

Arith = CTT +

consts "#+","-","|-|"   :: "[i,i]=>i"   (infixr 65)
       "#*",div,mod     :: "[i,i]=>i"   (infixr 70)

rules
  add_def     "a#+b == rec(a, b, %u v.succ(v))"  
  diff_def    "a-b == rec(b, a, %u v.rec(v, 0, %x y.x))"  
  absdiff_def "a|-|b == (a-b) #+ (b-a)"  
  mult_def    "a#*b == rec(a, 0, %u v. b #+ v)"  
  mod_def     "a mod b == rec(a, 0, %u v. rec(succ(v) |-| b, 0, %x y.succ(v)))"
  div_def     "a div b == rec(a, 0, %u v. rec(succ(u) mod b, succ(v), %x y.v))"
end