equal
deleted
inserted
replaced
457 then have "[setprod id A = ((-1)^(card E) * |
457 then have "[setprod id A = ((-1)^(card E) * |
458 (setprod id ((%x. x * a) ` A)))] (mod p)" |
458 (setprod id ((%x. x * a) ` A)))] (mod p)" |
459 by (simp add: B_def) |
459 by (simp add: B_def) |
460 then have "[setprod id A = ((-1)^(card E) * (setprod (%x. x * a) A))] |
460 then have "[setprod id A = ((-1)^(card E) * (setprod (%x. x * a) A))] |
461 (mod p)" |
461 (mod p)" |
462 apply (rule zcong_trans) |
462 by(simp add:finite_A inj_on_xa_A setprod_reindex_id[symmetric]) |
463 by (simp add: finite_A inj_on_xa_A setprod_reindex_id zcong_scalar2) |
|
464 moreover have "setprod (%x. x * a) A = |
463 moreover have "setprod (%x. x * a) A = |
465 setprod (%x. a) A * setprod id A" |
464 setprod (%x. a) A * setprod id A" |
466 by (insert finite_A, induct set: Finites, auto) |
465 by (insert finite_A, induct set: Finites, auto) |
467 ultimately have "[setprod id A = ((-1)^(card E) * (setprod (%x. a) A * |
466 ultimately have "[setprod id A = ((-1)^(card E) * (setprod (%x. a) A * |
468 setprod id A))] (mod p)" |
467 setprod id A))] (mod p)" |