src/HOL/Enum.thy
changeset 66838 17989f6bc7b2
parent 66817 0b12755ccbb2
child 67091 1393c2340eec
equal deleted inserted replaced
66837:6ba663ff2b1c 66838:17989f6bc7b2
   714 
   714 
   715 instantiation finite_2 :: "{normalization_semidom, unique_euclidean_semiring}" begin
   715 instantiation finite_2 :: "{normalization_semidom, unique_euclidean_semiring}" begin
   716 definition [simp]: "normalize = (id :: finite_2 \<Rightarrow> _)"
   716 definition [simp]: "normalize = (id :: finite_2 \<Rightarrow> _)"
   717 definition [simp]: "unit_factor = (id :: finite_2 \<Rightarrow> _)"
   717 definition [simp]: "unit_factor = (id :: finite_2 \<Rightarrow> _)"
   718 definition [simp]: "euclidean_size x = (case x of a\<^sub>1 \<Rightarrow> 0 | a\<^sub>2 \<Rightarrow> 1)"
   718 definition [simp]: "euclidean_size x = (case x of a\<^sub>1 \<Rightarrow> 0 | a\<^sub>2 \<Rightarrow> 1)"
   719 definition [simp]: "uniqueness_constraint = (\<top> :: finite_2 \<Rightarrow> _)"
   719 definition [simp]: "division_segment (x :: finite_2) = 1"
   720 instance
   720 instance
   721   by standard
   721   by standard
   722     (auto simp add: divide_finite_2_def times_finite_2_def dvd_finite_2_unfold
   722     (auto simp add: divide_finite_2_def times_finite_2_def dvd_finite_2_unfold
   723     split: finite_2.splits)
   723     split: finite_2.splits)
   724 end
   724 end
   866 
   866 
   867 instantiation finite_3 :: "{normalization_semidom, unique_euclidean_semiring}" begin
   867 instantiation finite_3 :: "{normalization_semidom, unique_euclidean_semiring}" begin
   868 definition [simp]: "normalize x = (case x of a\<^sub>3 \<Rightarrow> a\<^sub>2 | _ \<Rightarrow> x)"
   868 definition [simp]: "normalize x = (case x of a\<^sub>3 \<Rightarrow> a\<^sub>2 | _ \<Rightarrow> x)"
   869 definition [simp]: "unit_factor = (id :: finite_3 \<Rightarrow> _)"
   869 definition [simp]: "unit_factor = (id :: finite_3 \<Rightarrow> _)"
   870 definition [simp]: "euclidean_size x = (case x of a\<^sub>1 \<Rightarrow> 0 | _ \<Rightarrow> 1)"
   870 definition [simp]: "euclidean_size x = (case x of a\<^sub>1 \<Rightarrow> 0 | _ \<Rightarrow> 1)"
   871 definition [simp]: "uniqueness_constraint = (\<top> :: finite_3 \<Rightarrow> _)"
   871 definition [simp]: "division_segment (x :: finite_3) = 1"
   872 instance proof
   872 instance proof
   873   fix x :: finite_3
   873   fix x :: finite_3
   874   assume "x \<noteq> 0"
   874   assume "x \<noteq> 0"
   875   then show "is_unit (unit_factor x)"
   875   then show "is_unit (unit_factor x)"
   876     by (cases x) (simp_all add: dvd_finite_3_unfold)
   876     by (cases x) (simp_all add: dvd_finite_3_unfold)