Non-expansive commutative monoids and their morphisms.
Monoids for Big Operators #
A commutative monoid on an OFE, used for big operators. The operation must be non-expansive, associative, commutative, and have a left identity.
- op_ne : OFE.NonExpansive₂ op
The operation is non-expansive in both arguments
Associativity
Commutativity
Left identity
Instances
Monoid Homomorphisms #
class
Iris.Algebra.WeakMonoidHomomorphism
{M₁ : Type u}
{M₂ : Type v}
[OFE M₁]
[OFE M₂]
(op₁ : M₁ → M₁ → M₁)
(op₂ : M₂ → M₂ → M₂)
(unit₁ : M₁)
(unit₂ : M₂)
[MonoidOps op₁ unit₁]
[MonoidOps op₂ unit₂]
(R : M₂ → M₂ → Prop)
(f : M₁ → M₂)
:
A weak monoid homomorphism preserves the operation but not necessarily the unit.
- rel_refl {a : M₂} : R a a
The relation is reflexive
- rel_trans {a b c : M₂} : R a b → R b c → R a c
The relation is transitive
- op_proper {a a' b b' : M₂} : R a a' → R b b' → R (op₂ a b) (op₂ a' b')
The operation is proper with respect to R
- map_ne : OFE.NonExpansive f
The function is non-expansive
- map_op {x y : M₁} : R (f (op₁ x y)) (op₂ (f x) (f y))
The homomorphism property
Instances
class
Iris.Algebra.MonoidHomomorphism
{M₁ : Type u}
{M₂ : Type v}
[OFE M₁]
[OFE M₂]
(op₁ : M₁ → M₁ → M₁)
(op₂ : M₂ → M₂ → M₂)
(unit₁ : M₁)
(unit₂ : M₂)
[MonoidOps op₁ unit₁]
[MonoidOps op₂ unit₂]
(R : M₂ → M₂ → Prop)
(f : M₁ → M₂)
extends Iris.Algebra.WeakMonoidHomomorphism op₁ op₂ unit₁ unit₂ R f :
A monoid homomorphism preserves both the operation and the unit.
- map_unit : R (f unit₁) unit₂
The unit is preserved