src/CTT/Arith.thy
 author wenzelm Fri Oct 10 17:10:12 1997 +0200 (1997-10-10) changeset 3837 d7f033c74b38 parent 1474 3f7d67927fe2 child 10467 e6e7205e9e91 permissions -rw-r--r--
fixed dots;
```     1 (*  Title:      CTT/arith
```
```     2     ID:         \$Id\$
```
```     3     Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
```
```     4     Copyright   1991  University of Cambridge
```
```     5
```
```     6 Arithmetic operators and their definitions
```
```     7
```
```     8 Proves about elementary arithmetic: addition, multiplication, etc.
```
```     9 Tests definitions and simplifier.
```
```    10 *)
```
```    11
```
```    12 Arith = CTT +
```
```    13
```
```    14 consts "#+","-","|-|"   :: "[i,i]=>i"   (infixr 65)
```
```    15        "#*",div,mod     :: "[i,i]=>i"   (infixr 70)
```
```    16
```
```    17 rules
```
```    18   add_def     "a#+b == rec(a, b, %u v. succ(v))"
```
```    19   diff_def    "a-b == rec(b, a, %u v. rec(v, 0, %x y. x))"
```
```    20   absdiff_def "a|-|b == (a-b) #+ (b-a)"
```
```    21   mult_def    "a#*b == rec(a, 0, %u v. b #+ v)"
```
```    22   mod_def     "a mod b == rec(a, 0, %u v. rec(succ(v) |-| b, 0, %x y. succ(v)))"
```
```    23   div_def     "a div b == rec(a, 0, %u v. rec(succ(u) mod b, succ(v), %x y. v))"
```
```    24 end
```