src/HOL/NumberTheory/Chinese.ML
changeset 9943 55c82decf3f4
parent 9572 bfee45ac5d38
child 10175 76646fc8b1bf
equal deleted inserted replaced
9942:87f0809a06a9 9943:55c82decf3f4
    35 by Auto_tac;
    35 by Auto_tac;
    36 by (asm_full_simp_tac (simpset() addsimps [int_0_less_mult_iff]) 1);
    36 by (asm_full_simp_tac (simpset() addsimps [int_0_less_mult_iff]) 1);
    37 qed_spec_mp "funprod_pos";
    37 qed_spec_mp "funprod_pos";
    38 
    38 
    39 Goal "(ALL i. k<=i & i<=(k+l) --> zgcd (mf i, mf m) = #1) --> \
    39 Goal "(ALL i. k<=i & i<=(k+l) --> zgcd (mf i, mf m) = #1) --> \
    40 \      #0 < mf m --> zgcd (funprod mf k l, mf m) = #1";
    40 \     zgcd (funprod mf k l, mf m) = #1";
    41 by (induct_tac "l" 1);
    41 by (induct_tac "l" 1);
    42 by (ALLGOALS Simp_tac);
    42 by (ALLGOALS Simp_tac);
    43 by (REPEAT (rtac impI 1));
    43 by (REPEAT (rtac impI 1));
    44 by (stac zgcd_zmult_cancel 1);
    44 by (stac zgcd_zmult_cancel 1);
    45 by Auto_tac;
    45 by Auto_tac;
   109 by (induct_tac "n" 1);
   109 by (induct_tac "n" 1);
   110 by (ALLGOALS Simp_tac);
   110 by (ALLGOALS Simp_tac);
   111 by (blast_tac (claset() addIs [lemma]) 1);
   111 by (blast_tac (claset() addIs [lemma]) 1);
   112 by (REPEAT (rtac impI 1));
   112 by (REPEAT (rtac impI 1));
   113 by (rtac zcong_zgcd_zmult_zmod 1);
   113 by (rtac zcong_zgcd_zmult_zmod 1);
   114 by (blast_tac (claset() addIs [lemma]) 3);
   114 by (blast_tac (claset() addIs [lemma]) 1);
   115 by (stac zgcd_commute 4);
   115 by (stac zgcd_commute 2);
   116 by (rtac funprod_zgcd 6);
   116 by (rtac funprod_zgcd 2);
   117 by (rtac funprod_pos 5);
   117 by (auto_tac (claset(), 
   118 by (rtac funprod_pos 2);
   118               simpset() addsimps [m_cond_def,km_cond_def,lincong_sol_def]));  
   119 by (rewrite_goals_tac [m_cond_def,km_cond_def,lincong_sol_def]);
       
   120 by Auto_tac;
       
   121 qed_spec_mp "zcong_funprod";
   119 qed_spec_mp "zcong_funprod";
   122 
   120 
   123 
   121 
   124 (* Chinese: Existence *)
   122 (* Chinese: Existence *)
   125 
   123 
   131 \     ==> EX! x. #0<=x & x<(mf i) & \
   129 \     ==> EX! x. #0<=x & x<(mf i) & \
   132 \                [(kf i)*(mhf mf n i)*x = bf i] (mod mf i)";
   130 \                [(kf i)*(mhf mf n i)*x = bf i] (mod mf i)";
   133 by (rtac zcong_lineq_unique 1);
   131 by (rtac zcong_lineq_unique 1);
   134 by (stac zgcd_zmult_cancel 2);
   132 by (stac zgcd_zmult_cancel 2);
   135 by (rewrite_goals_tac [m_cond_def,km_cond_def,mhf_def]);
   133 by (rewrite_goals_tac [m_cond_def,km_cond_def,mhf_def]);
   136 by (case_tac "i=0" 4);
   134 by (ALLGOALS Asm_simp_tac);
   137 by (case_tac "i=n" 5);
   135 by Auto_tac;  
   138 by (ALLGOALS Asm_simp_tac);
       
   139 by (stac zgcd_zmult_cancel 3);
   136 by (stac zgcd_zmult_cancel 3);
   140 by (Asm_simp_tac 3);
   137 by (Asm_simp_tac 3);
   141 by (ALLGOALS (rtac funprod_zgcd));
   138 by (ALLGOALS (rtac funprod_zgcd));
   142 by Safe_tac;
   139 by Safe_tac;
   143 by (ALLGOALS Asm_full_simp_tac);
   140 by (ALLGOALS Asm_full_simp_tac);