src/HOL/NumberTheory/Quadratic_Reciprocity.thy
changeset 20898 113c9516a2d7
parent 20432 07ec57376051
child 21233 5a5c8ea5f66a
equal deleted inserted replaced
20897:3f8d2834b2c4 20898:113c9516a2d7
   602     by (auto simp add: zpower_zadd_distrib)
   602     by (auto simp add: zpower_zadd_distrib)
   603   also have "nat(setsum (%x. ((x * p) div q)) Q_set) +
   603   also have "nat(setsum (%x. ((x * p) div q)) Q_set) +
   604       nat(setsum (%x. ((x * q) div p)) P_set) =
   604       nat(setsum (%x. ((x * q) div p)) P_set) =
   605         nat((setsum (%x. ((x * p) div q)) Q_set) +
   605         nat((setsum (%x. ((x * p) div q)) Q_set) +
   606           (setsum (%x. ((x * q) div p)) P_set))"
   606           (setsum (%x. ((x * q) div p)) P_set))"
   607     apply (rule_tac z1 = "setsum (%x. ((x * p) div q)) Q_set" in
   607     apply (rule_tac z = "setsum (%x. ((x * p) div q)) Q_set" in
   608       nat_add_distrib [symmetric])
   608       nat_add_distrib [symmetric])
   609     apply (auto simp add: S1_carda [symmetric] S2_carda [symmetric])
   609     apply (auto simp add: S1_carda [symmetric] S2_carda [symmetric])
   610     done
   610     done
   611   also have "... = nat(((p - 1) div 2) * ((q - 1) div 2))"
   611   also have "... = nat(((p - 1) div 2) * ((q - 1) div 2))"
   612     by (auto simp add: pq_sum_prop)
   612     by (auto simp add: pq_sum_prop)