src/HOL/Nat.thy
changeset 25510 38c15efe603b
parent 25502 9200b36280c0
child 25534 d0b74fdd6067
--- a/src/HOL/Nat.thy	Fri Nov 30 16:23:52 2007 +0100
+++ b/src/HOL/Nat.thy	Fri Nov 30 20:13:03 2007 +0100
@@ -54,9 +54,15 @@
 
 local
 
-instance nat :: zero
-  Zero_nat_def: "0 == Abs_Nat Zero_Rep" ..
-lemmas [code func del] = Zero_nat_def
+instantiation nat :: zero
+begin
+
+definition Zero_nat_def [code func del]:
+  "0 = Abs_Nat Zero_Rep"
+
+instance ..
+
+end
 
 defs
   Suc_def:      "Suc == (%n. Abs_Nat (Suc_Rep (Rep_Nat n)))"
@@ -155,11 +161,18 @@
   pred_nat :: "(nat * nat) set" where
   "pred_nat = {(m, n). n = Suc m}"
 
-instance nat :: ord
-  less_def: "m < n == (m, n) : pred_nat^+"
-  le_def:   "m \<le> (n::nat) == ~ (n < m)" ..
+instantiation nat :: ord
+begin
+
+definition
+  less_def [code func del]: "m < n \<longleftrightarrow> (m, n) : pred_nat^+"
 
-lemmas [code func del] = less_def le_def
+definition
+  le_def [code func del]:   "m \<le> (n\<Colon>nat) \<longleftrightarrow> \<not> n < m"
+
+instance ..
+
+end
 
 lemma wf_pred_nat: "wf pred_nat"
   apply (unfold wf_def pred_nat_def, clarify)
@@ -1488,8 +1501,8 @@
 text {* the lattice order on @{typ nat} *}
 
 instance nat :: distrib_lattice
-  "inf \<Colon> nat \<Rightarrow> nat \<Rightarrow> nat \<equiv> min"
-  "sup \<Colon> nat \<Rightarrow> nat \<Rightarrow> nat \<equiv> max"
+  "(inf \<Colon> nat \<Rightarrow> nat \<Rightarrow> nat) = min"
+  "(sup \<Colon> nat \<Rightarrow> nat \<Rightarrow> nat) = max"
   by intro_classes
     (simp_all add: inf_nat_def sup_nat_def)