src/FOL/ex/Nat2.thy
author clasohm
Mon, 05 Feb 1996 13:44:28 +0100
changeset 1473 e8d4606e6502
parent 1322 9b3d3362a048
child 17245 1c519a3cca59
permissions -rw-r--r--
expanded tabs

(*  Title:      FOL/ex/nat2.thy
    ID:         $Id$
    Author:     Tobias Nipkow
    Copyright   1994  University of Cambridge

Theory for examples of simplification and induction on the natural numbers
*)

Nat2 = FOL +

types nat
arities nat :: term

consts
 succ,pred :: nat => nat  
       "0" :: nat       ("0")
       "+" :: [nat,nat] => nat   (infixr 90)
  "<","<=" :: [nat,nat] => o     (infixr 70)

rules
 pred_0         "pred(0) = 0"
 pred_succ      "pred(succ(m)) = m"

 plus_0         "0+n = n"
 plus_succ      "succ(m)+n = succ(m+n)"

 nat_distinct1  "~ 0=succ(n)"
 nat_distinct2  "~ succ(m)=0"
 succ_inject    "succ(m)=succ(n) <-> m=n"

 leq_0          "0 <= n"
 leq_succ_succ  "succ(m)<=succ(n) <-> m<=n"
 leq_succ_0     "~ succ(m) <= 0"

 lt_0_succ      "0 < succ(n)"
 lt_succ_succ   "succ(m)<succ(n) <-> m<n"
 lt_0 "~ m < 0"

 nat_ind        "[| P(0); ALL n. P(n)-->P(succ(n)) |] ==> All(P)"
end