equal
deleted
inserted
replaced
146 apply (subgoal_tac "[x * (a * MultInv p x) = a * (x * MultInv p x)] (mod p)") |
146 apply (subgoal_tac "[x * (a * MultInv p x) = a * (x * MultInv p x)] (mod p)") |
147 apply (drule_tac a = "StandardRes p x * StandardRes p (a * MultInv p x)" and |
147 apply (drule_tac a = "StandardRes p x * StandardRes p (a * MultInv p x)" and |
148 b = "x * (a * MultInv p x)" and |
148 b = "x * (a * MultInv p x)" and |
149 c = "a * (x * MultInv p x)" in zcong_trans, force) |
149 c = "a * (x * MultInv p x)" in zcong_trans, force) |
150 apply (frule_tac p = p and x = x in MultInv_prop2, auto) |
150 apply (frule_tac p = p and x = x in MultInv_prop2, auto) |
151 apply (metis StandardRes_SRStar_prop3 mult_1_right mult_commute zcong_sym zcong_zmult_prop1) |
151 apply (metis StandardRes_SRStar_prop3 mult_1_right mult.commute zcong_sym zcong_zmult_prop1) |
152 apply (auto simp add: mult_ac) |
152 apply (auto simp add: mult_ac) |
153 done |
153 done |
154 |
154 |
155 lemma aux1: "[| 0 < x; (x::int) < a; x \<noteq> (a - 1) |] ==> x < a - 1" |
155 lemma aux1: "[| 0 < x; (x::int) < a; x \<noteq> (a - 1) |] ==> x < a - 1" |
156 by arith |
156 by arith |