src/FOL/ex/Nat2.thy
author lcp
Tue, 07 Mar 1995 13:15:25 +0100
changeset 928 cb31a4e97f75
parent 352 fd3ab8bcb69d
child 1322 9b3d3362a048
permissions -rw-r--r--
Moved declaration of ~= to a syntax section
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     1
(*  Title: 	FOL/ex/nat2.thy
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     2
    ID:         $Id$
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     3
    Author: 	Tobias Nipkow
352
fd3ab8bcb69d removal of obsolete type-declaration syntax
lcp
parents: 0
diff changeset
     4
    Copyright   1994  University of Cambridge
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     5
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     6
Theory for examples of simplification and induction on the natural numbers
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     7
*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     8
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     9
Nat2 = FOL +
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    10
352
fd3ab8bcb69d removal of obsolete type-declaration syntax
lcp
parents: 0
diff changeset
    11
types nat
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    12
arities nat :: term
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    13
352
fd3ab8bcb69d removal of obsolete type-declaration syntax
lcp
parents: 0
diff changeset
    14
consts
fd3ab8bcb69d removal of obsolete type-declaration syntax
lcp
parents: 0
diff changeset
    15
 succ,pred :: "nat => nat"
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    16
       "0" :: "nat"	("0")
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    17
       "+" :: "[nat,nat] => nat" (infixr 90)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    18
  "<","<=" :: "[nat,nat] => o"   (infixr 70)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    19
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    20
rules
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    21
 pred_0		"pred(0) = 0"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    22
 pred_succ	"pred(succ(m)) = m"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    23
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    24
 plus_0		"0+n = n"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    25
 plus_succ	"succ(m)+n = succ(m+n)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    26
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    27
 nat_distinct1	"~ 0=succ(n)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    28
 nat_distinct2	"~ succ(m)=0"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    29
 succ_inject	"succ(m)=succ(n) <-> m=n"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    30
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    31
 leq_0		"0 <= n"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    32
 leq_succ_succ	"succ(m)<=succ(n) <-> m<=n"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    33
 leq_succ_0	"~ succ(m) <= 0"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    34
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    35
 lt_0_succ	"0 < succ(n)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    36
 lt_succ_succ	"succ(m)<succ(n) <-> m<n"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    37
 lt_0 "~ m < 0"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    38
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    39
 nat_ind	"[| P(0); ALL n. P(n)-->P(succ(n)) |] ==> All(P)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    40
end