equal
deleted
inserted
replaced
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) |