doc-src/AxClass/Nat/NatClass.thy
author wenzelm
Sun, 21 May 2000 21:48:39 +0200
changeset 8903 78d6e47469e4
parent 8890 9a44d8d98731
child 8906 fc7841f31388
permissions -rw-r--r--
new Isar version;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8890
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
     1
theory NatClass = FOL:;
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
     2
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
     3
consts
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
     4
  zero :: 'a    ("0")
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
     5
  Suc :: "'a \\<Rightarrow> 'a"
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
     6
  rec :: "'a \\<Rightarrow> 'a \\<Rightarrow> ('a \\<Rightarrow> 'a \\<Rightarrow> 'a) \\<Rightarrow> 'a";
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
     7
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
     8
axclass
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
     9
  nat < "term"
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
    10
  induct:     "P(0) \\<Longrightarrow> (\\<And>x. P(x) \\<Longrightarrow> P(Suc(x))) \\<Longrightarrow> P(n)"
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
    11
  Suc_inject: "Suc(m) = Suc(n) \\<Longrightarrow> m = n"
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
    12
  Suc_neq_0:  "Suc(m) = 0 \\<Longrightarrow> R"
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
    13
  rec_0:      "rec(0, a, f) = a"
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
    14
  rec_Suc:    "rec(Suc(m), a, f) = f(m, rec(m, a, f))";
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
    15
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
    16
constdefs
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
    17
  add :: "'a::nat \\<Rightarrow> 'a \\<Rightarrow> 'a"    (infixl "+" 60)
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
    18
  "m + n \\<equiv> rec(m, n, \\<lambda>x y. Suc(y))";
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
    19
9a44d8d98731 snapshot of new Isar'ized version;
wenzelm
parents:
diff changeset
    20
end;