src/HOL/Enum.thy
changeset 63950 cdc1e59aa513
parent 62390 842917225d56
child 64290 fb5c74a58796
equal deleted inserted replaced
63949:e7e41db7221b 63950:cdc1e59aa513
   578 end
   578 end
   579 
   579 
   580 instantiation finite_1 :: 
   580 instantiation finite_1 :: 
   581   "{linordered_ring_strict, linordered_comm_semiring_strict, ordered_comm_ring,
   581   "{linordered_ring_strict, linordered_comm_semiring_strict, ordered_comm_ring,
   582     ordered_cancel_comm_monoid_diff, comm_monoid_mult, ordered_ring_abs,
   582     ordered_cancel_comm_monoid_diff, comm_monoid_mult, ordered_ring_abs,
   583     one, Divides.div, sgn_if, inverse}"
   583     one, modulo, sgn_if, inverse}"
   584 begin
   584 begin
   585 definition [simp]: "Groups.zero = a\<^sub>1"
   585 definition [simp]: "Groups.zero = a\<^sub>1"
   586 definition [simp]: "Groups.one = a\<^sub>1"
   586 definition [simp]: "Groups.one = a\<^sub>1"
   587 definition [simp]: "op + = (\<lambda>_ _. a\<^sub>1)"
   587 definition [simp]: "op + = (\<lambda>_ _. a\<^sub>1)"
   588 definition [simp]: "op * = (\<lambda>_ _. a\<^sub>1)"
   588 definition [simp]: "op * = (\<lambda>_ _. a\<^sub>1)"
   696 definition "x mod y = (case (x, y) of (a\<^sub>2, a\<^sub>1) \<Rightarrow> a\<^sub>2 | _ \<Rightarrow> a\<^sub>1)"
   696 definition "x mod y = (case (x, y) of (a\<^sub>2, a\<^sub>1) \<Rightarrow> a\<^sub>2 | _ \<Rightarrow> a\<^sub>1)"
   697 definition "sgn = (\<lambda>x :: finite_2. x)"
   697 definition "sgn = (\<lambda>x :: finite_2. x)"
   698 instance
   698 instance
   699 by intro_classes
   699 by intro_classes
   700   (simp_all add: plus_finite_2_def uminus_finite_2_def minus_finite_2_def times_finite_2_def
   700   (simp_all add: plus_finite_2_def uminus_finite_2_def minus_finite_2_def times_finite_2_def
   701        inverse_finite_2_def divide_finite_2_def abs_finite_2_def mod_finite_2_def sgn_finite_2_def
   701        inverse_finite_2_def divide_finite_2_def abs_finite_2_def modulo_finite_2_def sgn_finite_2_def
   702      split: finite_2.splits)
   702      split: finite_2.splits)
   703 end
   703 end
   704 
   704 
   705 lemma two_finite_2 [simp]:
   705 lemma two_finite_2 [simp]:
   706   "2 = a\<^sub>1"
   706   "2 = a\<^sub>1"
   823 definition "x mod y = (case (x, y) of (a\<^sub>2, a\<^sub>1) \<Rightarrow> a\<^sub>2 | (a\<^sub>3, a\<^sub>1) \<Rightarrow> a\<^sub>3 | _ \<Rightarrow> a\<^sub>1)"
   823 definition "x mod y = (case (x, y) of (a\<^sub>2, a\<^sub>1) \<Rightarrow> a\<^sub>2 | (a\<^sub>3, a\<^sub>1) \<Rightarrow> a\<^sub>3 | _ \<Rightarrow> a\<^sub>1)"
   824 definition "sgn = (\<lambda>x. case x of a\<^sub>1 \<Rightarrow> a\<^sub>1 | _ \<Rightarrow> a\<^sub>2)"
   824 definition "sgn = (\<lambda>x. case x of a\<^sub>1 \<Rightarrow> a\<^sub>1 | _ \<Rightarrow> a\<^sub>2)"
   825 instance
   825 instance
   826 by intro_classes
   826 by intro_classes
   827   (simp_all add: plus_finite_3_def uminus_finite_3_def minus_finite_3_def times_finite_3_def
   827   (simp_all add: plus_finite_3_def uminus_finite_3_def minus_finite_3_def times_finite_3_def
   828        inverse_finite_3_def divide_finite_3_def abs_finite_3_def mod_finite_3_def sgn_finite_3_def
   828        inverse_finite_3_def divide_finite_3_def abs_finite_3_def modulo_finite_3_def sgn_finite_3_def
   829        less_finite_3_def
   829        less_finite_3_def
   830      split: finite_3.splits)
   830      split: finite_3.splits)
   831 end
   831 end
   832 
   832 
   833 
   833