Pointwise instances on Submonoid
s and AddSubmonoid
s #
This file provides:
and the actions
which matches the action of Set.mulActionSet
.
These are all available in the Pointwise
locale.
Additionally, it provides various degrees of monoid structure:
AddSubmonoid.one
AddSubmonoid.mul
AddSubmonoid.mulOneClass
AddSubmonoid.semigroup
AddSubmonoid.monoid
which is available globally to match the monoid structure implied bySubmodule.idemSemiring
.
Implementation notes #
Most of the lemmas in this file are direct copies of lemmas from Algebra/Pointwise.lean
.
While the statements of these lemmas are defeq, we repeat them here due to them not being
syntactically equal. Before adding new lemmas here, consider if they would also apply to the action
on Set
s.
Some lemmas about pointwise multiplication and submonoids. Ideally we put these in
GroupTheory.Submonoid.Basic
, but currently we cannot because that file is imported by this.
The additive submonoid with every element negated.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Inversion is involutive on additive submonoids.
Equations
- AddSubmonoid.involutiveNeg = Function.Injective.involutiveNeg SetLike.coe (_ : Function.Injective SetLike.coe) (_ : ∀ (x : AddSubmonoid G), ↑(-x) = ↑(-x))
Instances For
Inversion is involutive on submonoids.
Equations
- Submonoid.involutiveInv = Function.Injective.involutiveInv SetLike.coe (_ : Function.Injective SetLike.coe) (_ : ∀ (x : Submonoid G), ↑x⁻¹ = ↑x⁻¹)
Instances For
Pointwise negation of additive submonoids as an order isomorphism
Equations
- AddSubmonoid.negOrderIso = { toEquiv := Equiv.neg (AddSubmonoid G), map_rel_iff' := (_ : ∀ {a b : AddSubmonoid G}, -a ≤ -b ↔ a ≤ b) }
Instances For
The action on a submonoid corresponding to applying the action to every element.
This is available as an instance in the Pointwise
locale.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The action on an additive submonoid corresponding to applying the action to every element.
This is available as an instance in the Pointwise
locale.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Elementwise monoid structure of additive submonoids #
These definitions are a cut-down versions of the ones around Submodule.mul
, as that API is
usually more useful.
If R
is an additive monoid with one (e.g., a semiring), then 1 : AddSubmonoid R
is the range
of Nat.cast : ℕ → R
.
Equations
- AddSubmonoid.one = { one := AddMonoidHom.mrange (Nat.castAddMonoidHom R) }
Instances For
Multiplication of additive submonoids of a semiring R. The additive submonoid S * T
is the
smallest R-submodule of R
containing the elements s * t
for s ∈ S
and t ∈ T
.
Equations
- AddSubmonoid.mul = { mul := fun (M N : AddSubmonoid R) => ⨆ (s : ↥M), AddSubmonoid.map (AddMonoidHom.mul ↑s) N }
Instances For
AddSubmonoid.neg
distributes over multiplication.
This is available as an instance in the Pointwise
locale.
Equations
- AddSubmonoid.hasDistribNeg = let src := AddSubmonoid.involutiveNeg; HasDistribNeg.mk (_ : ∀ (x y : AddSubmonoid R), -x * y = -(x * y)) (_ : ∀ (x y : AddSubmonoid R), x * -y = -(x * y))
Instances For
A MulOneClass
structure on additive submonoids of a (possibly, non-associative) semiring.
Equations
- AddSubmonoid.mulOneClass = MulOneClass.mk (_ : ∀ (M : AddSubmonoid R), 1 * M = M) (_ : ∀ (M : AddSubmonoid R), M * 1 = M)
Instances For
Semigroup structure on additive submonoids of a (possibly, non-unital) semiring.
Equations
- AddSubmonoid.semigroup = Semigroup.mk (_ : ∀ (M N P : AddSubmonoid R), M * N * P = M * (N * P))
Instances For
Monoid structure on additive submonoids of a semiring.
Equations
- AddSubmonoid.monoid = let src := AddSubmonoid.semigroup; let src_1 := AddSubmonoid.mulOneClass; Monoid.mk (_ : ∀ (a : AddSubmonoid R), 1 * a = a) (_ : ∀ (a : AddSubmonoid R), a * 1 = a) npowRec