@@ -172,16 +172,38 @@ Proof.
172172 now rewrite (P.Pmult_comm [a; -C1] [f; -C1]).
173173Qed .
174174
175+ Lemma Pmult_0_factor : forall (p1 p2 : Polynomial),
176+ (p1 *, p2) ≅ [] -> p1 ≅ [] \/ p2 ≅ [].
177+ Proof .
178+ intros p1 p2 H.
179+ destruct (Peq_0_dec p1), (Peq_0_dec p2); try auto.
180+ destruct (Pmult_neq_0 _ _ n n0); auto.
181+ Qed .
182+
175183(* Lemma 1.4 *)
176184Lemma Pfac_cancel_l : forall (d : C) (p1 p2 : Polynomial),
177185 [d; -C1] *, p1 ≅ [d; -C1] *, p2 -> p1 ≅ p2.
178186Proof .
179187 intros d p1 p2 Hnil.
180- apply functional_extensionality; intros x.
181- unfold Peq in Hnil.
182- simpl in Hnil.
183- admit.
184- Admitted .
188+ pose proof (H := Pplus_mor _ _ Hnil ([d; -C1] *, -, p2) _ ltac:(reflexivity)).
189+ rewrite <- P.Pmult_plus_distr_l in H.
190+ unfold Popp in H.
191+ rewrite <- P.Pmult_assoc in H.
192+ rewrite (P.Pmult_comm [d; -C1] [- C1]) in H.
193+ rewrite P.Pmult_assoc in H.
194+ rewrite Pplus_opp_r in H.
195+ destruct (Pmult_0_factor _ _ H).
196+ - apply degree_mor in H0. unfold degree in H0.
197+ unfold compactify in H0.
198+ simpl in H0.
199+ destruct (Ceq_dec (-C1) 0%R) as [H01 | _]; try (inversion H01; lra).
200+ simpl in H0. lia.
201+ - pose proof (H' := Pplus_mor _ _ H0 p2 _ ltac:(reflexivity)).
202+ rewrite P.Pplus_assoc in H'.
203+ setoid_replace ([-C1] *, p2 +, p2) with
204+ ([] : Polynomial) in H' by now rewrite Pplus_opp_l.
205+ simpl in H'. now rewrite P.Pplus_0_r in H'.
206+ Qed .
185207
186208(* Lemma 1.5 *)
187209Lemma roots_equal_implies_permutation :
0 commit comments