src/HOL/NumberTheory/Gauss.thy
changeset 20217 25b068a99d2b
parent 18369 694ea14ab4f2
child 20272 0ca998e83447
equal deleted inserted replaced
20216:f30b73385060 20217:25b068a99d2b
   102 
   102 
   103 lemma (in GAUSS) A_res: "ResSet p A"
   103 lemma (in GAUSS) A_res: "ResSet p A"
   104   apply (auto simp add: A_def ResSet_def)
   104   apply (auto simp add: A_def ResSet_def)
   105   apply (rule_tac m = p in zcong_less_eq)
   105   apply (rule_tac m = p in zcong_less_eq)
   106   apply (insert p_g_2, auto)
   106   apply (insert p_g_2, auto)
   107   apply (subgoal_tac [1-2] "(p - 1) div 2 < p")
       
   108   apply (auto, auto simp add: p_minus_one_l)
       
   109   done
   107   done
   110 
   108 
   111 lemma (in GAUSS) B_res: "ResSet p B"
   109 lemma (in GAUSS) B_res: "ResSet p B"
   112   apply (insert p_g_2 p_a_relprime p_minus_one_l)
   110   apply (insert p_g_2 p_a_relprime p_minus_one_l)
   113   apply (auto simp add: B_def)
   111   apply (auto simp add: B_def)
   253   by (auto simp add: D_def C_def B_def A_def)
   251   by (auto simp add: D_def C_def B_def A_def)
   254 
   252 
   255 lemma (in GAUSS) D_leq: "x \<in> D ==> x \<le> (p - 1) div 2"
   253 lemma (in GAUSS) D_leq: "x \<in> D ==> x \<le> (p - 1) div 2"
   256   by (auto simp add: D_eq)
   254   by (auto simp add: D_eq)
   257 
   255 
       
   256 ML {* fast_arith_split_limit := 0; *} (*FIXME*)
       
   257 
   258 lemma (in GAUSS) F_ge: "x \<in> F ==> x \<le> (p - 1) div 2"
   258 lemma (in GAUSS) F_ge: "x \<in> F ==> x \<le> (p - 1) div 2"
   259   apply (auto simp add: F_eq A_def)
   259   apply (auto simp add: F_eq A_def)
   260 proof -
   260 proof -
   261   fix y
   261   fix y
   262   assume "(p - 1) div 2 < StandardRes p (y * a)"
   262   assume "(p - 1) div 2 < StandardRes p (y * a)"
   267   also have "2 * ((p - 1) div 2) + 1 - (p - 1) div 2 = (p - 1) div 2 + 1"
   267   also have "2 * ((p - 1) div 2) + 1 - (p - 1) div 2 = (p - 1) div 2 + 1"
   268     by arith
   268     by arith
   269   finally show "p - StandardRes p (y * a) \<le> (p - 1) div 2"
   269   finally show "p - StandardRes p (y * a) \<le> (p - 1) div 2"
   270     using zless_add1_eq [of "p - StandardRes p (y * a)" "(p - 1) div 2"] by auto
   270     using zless_add1_eq [of "p - StandardRes p (y * a)" "(p - 1) div 2"] by auto
   271 qed
   271 qed
       
   272 
       
   273 ML {* fast_arith_split_limit := 9; *} (*FIXME*)
   272 
   274 
   273 lemma (in GAUSS) all_A_relprime: "\<forall>x \<in> A. zgcd(x, p) = 1"
   275 lemma (in GAUSS) all_A_relprime: "\<forall>x \<in> A. zgcd(x, p) = 1"
   274   using p_prime p_minus_one_l by (auto simp add: A_def zless_zprime_imp_zrelprime)
   276   using p_prime p_minus_one_l by (auto simp add: A_def zless_zprime_imp_zrelprime)
   275 
   277 
   276 lemma (in GAUSS) A_prod_relprime: "zgcd((setprod id A),p) = 1"
   278 lemma (in GAUSS) A_prod_relprime: "zgcd((setprod id A),p) = 1"