src/HOL/ex/Numeral.thy
changeset 28367 10ea34297962
parent 28053 a2106c0d8c45
child 28562 4e74209f113e
equal deleted inserted replaced
28366:a75d4551ee00 28367:10ea34297962
   798   "(1 :: int) = 1"
   798   "(1 :: int) = 1"
   799   "(op + :: int \<Rightarrow> int \<Rightarrow> int) = op +"
   799   "(op + :: int \<Rightarrow> int \<Rightarrow> int) = op +"
   800   "(uminus :: int \<Rightarrow> int) = uminus"
   800   "(uminus :: int \<Rightarrow> int) = uminus"
   801   "(op - :: int \<Rightarrow> int \<Rightarrow> int) = op -"
   801   "(op - :: int \<Rightarrow> int \<Rightarrow> int) = op -"
   802   "(op * :: int \<Rightarrow> int \<Rightarrow> int) = op *"
   802   "(op * :: int \<Rightarrow> int \<Rightarrow> int) = op *"
   803   "(op = :: int \<Rightarrow> int \<Rightarrow> bool) = op ="
   803   "(eq_class.eq :: int \<Rightarrow> int \<Rightarrow> bool) = eq_class.eq"
   804   "(op \<le> :: int \<Rightarrow> int \<Rightarrow> bool) = op \<le>"
   804   "(op \<le> :: int \<Rightarrow> int \<Rightarrow> bool) = op \<le>"
   805   "(op < :: int \<Rightarrow> int \<Rightarrow> bool) = op <"
   805   "(op < :: int \<Rightarrow> int \<Rightarrow> bool) = op <"
   806   by rule+
   806   by rule+
   807 
   807 
   808 lemma one_int_code [code]:
   808 lemma one_int_code [code]:
   841   "Mns m * Pls n = Mns (m * n)"
   841   "Mns m * Pls n = Mns (m * n)"
   842   "Mns m * Mns n = Pls (m * n)"
   842   "Mns m * Mns n = Pls (m * n)"
   843   by (simp_all add: of_num_times [symmetric])
   843   by (simp_all add: of_num_times [symmetric])
   844 
   844 
   845 lemma eq_int_code [code]:
   845 lemma eq_int_code [code]:
   846   "0 = (0::int) \<longleftrightarrow> True"
   846   "eq_class.eq 0 (0::int) \<longleftrightarrow> True"
   847   "0 = Pls l \<longleftrightarrow> False"
   847   "eq_class.eq 0 (Pls l) \<longleftrightarrow> False"
   848   "0 = Mns l \<longleftrightarrow> False"
   848   "eq_class.eq 0 (Mns l) \<longleftrightarrow> False"
   849   "Pls k = 0 \<longleftrightarrow> False"
   849   "eq_class.eq (Pls k) 0 \<longleftrightarrow> False"
   850   "Pls k = Pls l \<longleftrightarrow> k = l"
   850   "eq_class.eq (Pls k) (Pls l) \<longleftrightarrow> eq_class.eq k l"
   851   "Pls k = Mns l \<longleftrightarrow> False"
   851   "eq_class.eq (Pls k) (Mns l) \<longleftrightarrow> False"
   852   "Mns k = 0 \<longleftrightarrow> False"
   852   "eq_class.eq (Mns k) 0 \<longleftrightarrow> False"
   853   "Mns k = Pls l \<longleftrightarrow> False"
   853   "eq_class.eq (Mns k) (Pls l) \<longleftrightarrow> False"
   854   "Mns k = Mns l \<longleftrightarrow> k = l"
   854   "eq_class.eq (Mns k) (Mns l) \<longleftrightarrow> eq_class.eq k l"
   855   using of_num_pos [of l, where ?'a = int] of_num_pos [of k, where ?'a = int]
   855   using of_num_pos [of l, where ?'a = int] of_num_pos [of k, where ?'a = int]
   856   by (simp_all add: of_num_eq_iff)
   856   by (simp_all add: of_num_eq_iff eq)
   857 
   857 
   858 lemma less_eq_int_code [code]:
   858 lemma less_eq_int_code [code]:
   859   "0 \<le> (0::int) \<longleftrightarrow> True"
   859   "0 \<le> (0::int) \<longleftrightarrow> True"
   860   "0 \<le> Pls l \<longleftrightarrow> True"
   860   "0 \<le> Pls l \<longleftrightarrow> True"
   861   "0 \<le> Mns l \<longleftrightarrow> False"
   861   "0 \<le> Mns l \<longleftrightarrow> False"