@@ -1651,6 +1651,33 @@ End MSize.
16511651Definition msizeN (I : choiceType) (G : zmodType) :=
16521652 @mmeasureN (cmonom I) G mdeg.
16531653
1654+ Section CMMap.
1655+
1656+ Definition cmmap
1657+ {I : choiceType} {R : pzSemiRingType} (f : I -> R) (m : cmonom I) :=
1658+ \prod_(k <- finsupp m) f k ^+ m k.
1659+
1660+ Context (I : choiceType) (R : comPzSemiRingType) (f : I -> R).
1661+
1662+ Lemma cmmapw (d : {fset I}) (m : {cmonom I}) :
1663+ finsupp m `<=` d -> cmmap f m = \prod_(k <- d) f k ^+ m k.
1664+ Proof .
1665+ by move=> md; apply: big_fset_incl md _ => x xd; rewrite -cmE_eq0 => /eqP->.
1666+ Qed .
1667+
1668+ Fact cmmap_is_mmorphism : mmorphism (cmmap f).
1669+ Proof .
1670+ split=> [|x y]; first by rewrite /cmmap mdom1 big_seq_fset0.
1671+ rewrite [cmmap f x](cmmapw (fsubsetUl _ (finsupp y))).
1672+ rewrite [cmmap f y](cmmapw (fsubsetUr (finsupp x) _)).
1673+ by rewrite -big_split/= /cmmap mdomD; apply/eq_bigr => i _; rewrite cmM exprD.
1674+ Qed .
1675+
1676+ HB.instance Definition _ :=
1677+ isMultiplicative.Build _ _ (cmmap f) cmmap_is_mmorphism.
1678+
1679+ End CMMap.
1680+
16541681(* -------------------------------------------------------------------- *)
16551682Section FmonomDef.
16561683
@@ -1779,3 +1806,19 @@ Lemma fm1_eq1 i : (U_(i) == 1)%M = false.
17791806Proof . by rewrite -fdeg_eq0 fdegU. Qed .
17801807
17811808End FmonomTheory.
1809+
1810+ Section FMMap.
1811+
1812+ Context (I : choiceType) (R : pzSemiRingType) (f : I -> R).
1813+
1814+ Definition fmmap (m : fmonom I) := \prod_(k <- m) f k.
1815+
1816+ Fact fmmap_is_mmorphism : mmorphism fmmap.
1817+ Proof .
1818+ split=> [|x y]; first by rewrite /fmmap [1%M]fmoneE/= big_nil.
1819+ by rewrite /fmmap [(x * y)%M]fmmulE/= big_cat/=.
1820+ Qed .
1821+
1822+ HB.instance Definition _ := isMultiplicative.Build _ _ fmmap fmmap_is_mmorphism.
1823+
1824+ End FMMap.
0 commit comments