Skip to content

Commit ab8e44b

Browse files
hivertstrub
authored andcommitted
pihomog and symmetry
1 parent c45cebe commit ab8e44b

File tree

1 file changed

+43
-6
lines changed

1 file changed

+43
-6
lines changed

src/mpoly.v

Lines changed: 43 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ Reserved Notation "[ 'multinom' F | i < n ]"
189189
(at level 0, i at level 0,
190190
format "[ '[hv' 'multinom' F '/' | i < n ] ']'").
191191
Reserved Notation "'U_(' n )"
192-
(at level 0, n at level 2, no associativity).
192+
(at level 0, n at level 2, no associativity, format "'U_(' n )").
193193
Reserved Notation "{ 'mpoly' T [ n ] }"
194194
(at level 0, T, n at level 2, format "{ 'mpoly' T [ n ] }").
195195
Reserved Notation "[ 'mpoly' D ]"
@@ -569,6 +569,13 @@ Proof. by rewrite -!mdeg_eq0 mdegD addn_eq0. Qed.
569569
Lemma mnm1_eq0 i : (U_(i) == 0 :> 'X_{1..n})%MM = false.
570570
Proof. by rewrite -mdeg_eq0 mdeg1. Qed.
571571

572+
Lemma eq_mnm1 (i j : 'I_n) : (U_(i)%MM == U_(j)%MM) = (i == j).
573+
Proof.
574+
case: (altP (i =P j)) => [->|/negbTE neq]; first by rewrite eqxx.
575+
apply/negbTE/negP => /eqP; rewrite mnmP => /(_ j).
576+
by rewrite !mnm1E eqxx neq.
577+
Qed.
578+
572579
Lemma mdeg_eq1 (m : 'X_{1..n}) :
573580
(mdeg m == 1)%N = [exists i : 'I_n, m == U_(i)%MM].
574581
Proof.
@@ -990,14 +997,14 @@ Variable R : ringType.
990997

991998
Implicit Types p q r : {mpoly R[n]}.
992999

1000+
Lemma nvar0_mnmE : @all_equal_to 'X_{1..0} 0%MM.
1001+
Proof. by move=> mon; apply/mnmP; case. Qed.
1002+
9931003
Lemma nvar0_mpolyC (p : {mpoly R[0]}): p = (p@_0%MM)%:MP.
994-
Proof.
995-
apply/mpolyP=> m; rewrite mcoeffC; suff ->: m = 0%MM.
996-
by rewrite eqxx mulr1. by apply/mnmP; case.
997-
Qed.
1004+
Proof. by apply/mpolyP=> m; rewrite mcoeffC nvar0_mnmE eqxx mulr1. Qed.
9981005

9991006
Lemma nvar0_mpolyC_eq p : n = 0%N -> p = (p@_0%MM)%:MP.
1000-
Proof. move=> z_p; move:p; rewrite z_p; apply/nvar0_mpolyC. Qed.
1007+
Proof. by move=> z_p; move:p; rewrite z_p; apply/nvar0_mpolyC. Qed.
10011008
End NVar0.
10021009

10031010
(* -------------------------------------------------------------------- *)
@@ -1847,6 +1854,9 @@ Proof. by rewrite msuppX mem_seq1; apply: (iffP eqP). Qed.
18471854
Lemma mcoeffX m k : 'X_[m]@_k = (m == k)%:R.
18481855
Proof. by rewrite unlock /mpolyX_def mcoeff_MPoly coeffU mul1r. Qed.
18491856

1857+
Lemma mcoeffXU (i j : 'I_n) : ('X_i : {mpoly R[n]})@_U_(j) = (i == j)%:R.
1858+
Proof. by rewrite mcoeffX eq_mnm1. Qed.
1859+
18501860
Lemma mmeasureX mf m : mmeasure mf 'X_[R, m] = (mf m).+1.
18511861
Proof. by rewrite mmeasureE msuppX big_seq1. Qed.
18521862

@@ -5128,6 +5138,7 @@ case: (ssrnat.leqP k (mf m)) => [|lt_mk].
51285138
rewrite (eq_bigl (fun i : 'I_k => i == Ordinal lt_mk)).
51295139
by rewrite big_pred1_eq. by move=> i /=; rewrite eq_sym.
51305140
Qed.
5141+
51315142
End ProjHomog.
51325143

51335144
(* -------------------------------------------------------------------- *)
@@ -5326,6 +5337,32 @@ Canonical dhomog_vectType :=
53265337
Eval hnf in VectType R (dhomog n.+1 R d) dhomog_vectMixin.
53275338
End MPolyHomogVec.
53285339

5340+
(* -------------------------------------------------------------------- *)
5341+
Section MSymHomog.
5342+
5343+
Variable n : nat.
5344+
Variable R : comRingType.
5345+
Implicit Types p q r : {mpoly R[n]}.
5346+
5347+
Lemma msym_pihomog d p (s : 'S_n) :
5348+
msym s (pihomog [measure of mdeg] d p) = pihomog [measure of mdeg] d (msym s p).
5349+
Proof.
5350+
rewrite (mpolyE p) ![_ (\sum_(m <- msupp p) _)]linear_sum /=.
5351+
rewrite [msym s _]linear_sum linear_sum /=.
5352+
apply eq_bigr => m _; rewrite !linearZ /=; congr (_ *: _).
5353+
rewrite msymX !pihomogX /=.
5354+
have -> : mdeg [multinom m ((s^-1)%g i) | i < n] = mdeg m.
5355+
rewrite /mdeg; apply perm_big.
5356+
by apply/tuple_permP; exists (s^-1)%g.
5357+
by case: (mdeg m == d); rewrite ?msym0 ?msymX.
5358+
Qed.
5359+
5360+
Lemma pihomog_sym d p :
5361+
p \is symmetric -> pihomog [measure of mdeg] d p \is symmetric.
5362+
Proof. by move=> /issymP Hp; apply/issymP => s; rewrite msym_pihomog Hp. Qed.
5363+
5364+
End MSymHomog.
5365+
53295366
(* -------------------------------------------------------------------- *)
53305367
Section MESymFundamentalHomog.
53315368
Variable n : nat.

0 commit comments

Comments
 (0)