@@ -1658,6 +1658,33 @@ End MSize.
16581658Definition msizeN (I : choiceType) (G : zmodType) :=
16591659 @mmeasureN (cmonom I) G mdeg.
16601660
1661+ Section CMMap.
1662+
1663+ Definition cmmap
1664+ {I : choiceType} {R : pzSemiRingType} (f : I -> R) (m : cmonom I) :=
1665+ \prod_(k <- finsupp m) f k ^+ m k.
1666+
1667+ Context (I : choiceType) (R : comPzSemiRingType) (f : I -> R).
1668+
1669+ Lemma cmmapw (d : {fset I}) (m : {cmonom I}) :
1670+ finsupp m `<=` d -> cmmap f m = \prod_(k <- d) f k ^+ m k.
1671+ Proof .
1672+ by move=> md; apply: big_fset_incl md _ => x xd; rewrite -cmE_eq0 => /eqP->.
1673+ Qed .
1674+
1675+ Fact cmmap_is_mmorphism : mmorphism (cmmap f).
1676+ Proof .
1677+ split=> [|x y]; first by rewrite /cmmap mdom1 big_seq_fset0.
1678+ rewrite [cmmap f x](cmmapw (fsubsetUl _ (finsupp y))).
1679+ rewrite [cmmap f y](cmmapw (fsubsetUr (finsupp x) _)).
1680+ by rewrite -big_split/= /cmmap mdomD; apply/eq_bigr => i _; rewrite cmM exprD.
1681+ Qed .
1682+
1683+ HB.instance Definition _ :=
1684+ isMultiplicative.Build _ _ (cmmap f) cmmap_is_mmorphism.
1685+
1686+ End CMMap.
1687+
16611688(* -------------------------------------------------------------------- *)
16621689Section FmonomDef.
16631690
@@ -1790,3 +1817,19 @@ Lemma fm1_eq1 i : (U_(i) == 1)%M = false.
17901817Proof . by rewrite -fdeg_eq0 fdegU. Qed .
17911818
17921819End FmonomTheory.
1820+
1821+ Section FMMap.
1822+
1823+ Context (I : choiceType) (R : pzSemiRingType) (f : I -> R).
1824+
1825+ Definition fmmap (m : fmonom I) := \prod_(k <- m) f k.
1826+
1827+ Fact fmmap_is_mmorphism : mmorphism fmmap.
1828+ Proof .
1829+ split=> [|x y]; first by rewrite /fmmap [1%M]fmoneE/= big_nil.
1830+ by rewrite /fmmap [(x * y)%M]fmmulE/= big_cat/=.
1831+ Qed .
1832+
1833+ HB.instance Definition _ := isMultiplicative.Build _ _ fmmap fmmap_is_mmorphism.
1834+
1835+ End FMMap.
0 commit comments