proposition: Lemma cfBigdprodK phi (Phi := cfBigdprod phi) i (a := phi i 1%g / Phi 1%g) : Phi 1%g != 0 -> P i -> a != 0 /\ a *: 'Res[A i] Phi = phi i.
proof: Proof. move=> nzPhi Pi; split. rewrite mulf_neq0 ?invr_eq0 // (contraNneq _ nzPhi) // => phi_i0. by rewrite cfBigdprod1 (bigD1 i) //= phi_i0 mul0r. apply/cfun_inP=> x Aix; rewrite cfunE cfResE ?sAG // mulrAC. have {1}->: x = (\prod_(j | P j) (if j == i then x else 1))%g. rewrite -big_mkcondr (big_pred1 i) ?eqxx // => j /=. by apply: andb_idl => /eqP->. rewrite cfBigdprodE => [|j _]; last by case: eqP => // ->. apply: canLR (mulfK nzPhi) _; rewrite cfBigdprod1 !(bigD1 i Pi) /= eqxx. by rewrite mulrCA !mulrA; congr (_ * _); apply: eq_bigr => j /andP[_ /negPf->]. Qed.
imports: HB(structures) mathcomp(ssreflect ssrbool ssrfun eqtype ssrnat seq path) mathcomp(div choice fintype tuple finfun bigop prime order) mathcomp(ssralg poly finset fingroup morphism perm) mathcomp(automorphism quotient finalg action gproduct) mathcomp(zmodp commutator cyclic center pgroup sylow) mathcomp(matrix vector falgebra ssrnum algC algnum) mathcomp(archimedean)