Bundled subsemirings #
We define some standard constructions on bundled subsemirings: CompleteLattice structure,
subsemiring map, comap and range (rangeS) of a RingHom etc.
Product of a list of elements in a Subsemiring is in the Subsemiring.
Sum of a list of elements in a Subsemiring is in the Subsemiring.
Product of a multiset of elements in a Subsemiring of a CommSemiring
is in the Subsemiring.
Sum of a multiset of elements in a Subsemiring of a NonAssocSemiring is
in the Subsemiring.
Product of elements of a subsemiring of a CommSemiring indexed by a Finset is in the
Subsemiring.
Sum of elements in a Subsemiring of a NonAssocSemiring indexed by a Finset
is in the Subsemiring.
The preimage of a subsemiring along a ring homomorphism is a subsemiring.
Equations
- Subsemiring.comap f s = { carrier := ⇑f ⁻¹' ↑s, mul_mem' := ⋯, one_mem' := ⋯, add_mem' := ⋯, zero_mem' := ⋯ }
Instances For
The image of a subsemiring along a ring homomorphism is a subsemiring.
Equations
- Subsemiring.map f s = { carrier := ⇑f '' ↑s, mul_mem' := ⋯, one_mem' := ⋯, add_mem' := ⋯, zero_mem' := ⋯ }
Instances For
A subsemiring is isomorphic to its image under an injective function
Equations
- s.equivMapOfInjective f hf = { toEquiv := Equiv.Set.image (⇑f) (↑s) hf, map_mul' := ⋯, map_add' := ⋯ }
Instances For
The range of a ring homomorphism is a subsemiring. See Note [range copy pattern].
Instances For
The range of a morphism of semirings is a fintype, if the domain is a fintype.
Note: this instance can form a diamond with Subtype.fintype in the
presence of Fintype S.
Equations
Equations
- Subsemiring.instBot = { bot := (Nat.castRingHom R).rangeS }
Equations
- Subsemiring.instInhabited = { default := ⊥ }
Equations
- Subsemiring.instInfSet = { sInf := fun (s : Set (Subsemiring R)) => Subsemiring.mk' (⋂ t ∈ s, ↑t) (⨅ t ∈ s, t.toSubmonoid) ⋯ (⨅ t ∈ s, t.toAddSubmonoid) ⋯ }
Subsemirings of a semiring form a complete lattice.
Equations
- One or more equations did not get rendered due to their size.
The center of a non-associative semiring R is the set of elements that commute and associate
with everything in R
Equations
- Subsemiring.center R = { carrier := (NonUnitalSubsemiring.center R).carrier, mul_mem' := ⋯, one_mem' := ⋯, add_mem' := ⋯, zero_mem' := ⋯ }
Instances For
The center is commutative and associative.
This is not an instance as it forms a non-defeq diamond with
NonUnitalSubringClass.toNonUnitalRing in the npow field.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The center of isomorphic (not necessarily associative) semirings are isomorphic.
Equations
Instances For
The center of a (not necessarily associative) semiring is isomorphic to the center of its opposite.
Instances For
The center is commutative.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Subsemiring.decidableMemCenter x✝ = decidable_of_iff' (∀ (g : R), g * x✝ = x✝ * g) ⋯
The centralizer of a set as subsemiring.
Equations
- Subsemiring.centralizer s = { carrier := s.centralizer, mul_mem' := ⋯, one_mem' := ⋯, add_mem' := ⋯, zero_mem' := ⋯ }
Instances For
The Subsemiring generated by a set.
Equations
- Subsemiring.closure s = sInf {S : Subsemiring R | s ⊆ ↑S}
Instances For
The subsemiring generated by a set includes the set.
Alias of Subsemiring.notMem_of_notMem_closure.
A subsemiring S includes closure s if and only if it includes s.
The additive closure of a submonoid is a subsemiring.
Equations
- M.subsemiringClosure = { carrier := (AddSubmonoid.closure ↑M).carrier, mul_mem' := ⋯, one_mem' := ⋯, add_mem' := ⋯, zero_mem' := ⋯ }
Instances For
The Subsemiring generated by a multiplicative submonoid coincides with the
Subsemiring.closure of the submonoid itself .
The elements of the subsemiring closure of M are exactly the elements of the additive closure
of a multiplicative submonoid M.
An induction principle for closure membership. If p holds for 0, 1, and all elements
of s, and is preserved under addition and multiplication, then p holds for all elements
of the closure of s.
An induction principle for closure membership for predicates with two arguments.
closure forms a Galois insertion with the coercion to set.
Equations
- Subsemiring.gi R = { choice := fun (s : Set R) (x : ↑(Subsemiring.closure s) ≤ s) => Subsemiring.closure s, gc := ⋯, le_l_u := ⋯, choice_eq := ⋯ }
Instances For
Closure of a subsemiring S equals S.
Given Subsemirings s, t of semirings R, S respectively, s.prod t is s × t
as a subsemiring of R × S.
Equations
Instances For
Product of subsemirings is isomorphic to their product as monoids.
Equations
- s.prodEquiv t = { toEquiv := Equiv.Set.prod ↑s ↑t, map_mul' := ⋯, map_add' := ⋯ }
Instances For
Restriction of a ring homomorphism to a subsemiring of the codomain.
Equations
Instances For
The ring homomorphism from the preimage of s to s.
Equations
- f.restrict s' s h = (f.domRestrict s').codRestrict s ⋯
Instances For
Restriction of a ring homomorphism to its range interpreted as a subsemiring.
This is the bundled version of Set.rangeFactorization.
Equations
- f.rangeSRestrict = f.codRestrict f.rangeS ⋯
Instances For
The range of a surjective ring homomorphism is the whole of the codomain.
If two ring homomorphisms are equal on a set, then they are equal on its subsemiring closure.
The image under a ring homomorphism of the subsemiring generated by a set equals the subsemiring generated by the image of the set.
The ring homomorphism associated to an inclusion of subsemirings.
Equations
- Subsemiring.inclusion h = S.subtype.codRestrict T ⋯
Instances For
Makes the identity isomorphism from a proof two subsemirings of a multiplicative monoid are equal.
Equations
- RingEquiv.subsemiringCongr h = { toEquiv := Equiv.setCongr ⋯, map_mul' := ⋯, map_add' := ⋯ }
Instances For
Restrict a ring homomorphism with a left inverse to a ring isomorphism to its
RingHom.rangeS.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given an equivalence e : R ≃+* S of semirings and a subsemiring s of R,
subsemiringMap e s is the induced equivalence between s and s.map e
Equations
- e.subsemiringMap s = { toEquiv := (e.toAddEquiv.addSubmonoidMap s.toAddSubmonoid).toEquiv, map_mul' := ⋯, map_add' := ⋯ }
Instances For
Actions by Subsemirings #
These are just copies of the definitions about Submonoid starting from Submonoid.mulAction.
The only new result is Subsemiring.module.
When R is commutative, Algebra.ofSubsemiring provides a stronger result than those found in
this file, which uses the same scalar action.
The action by a subsemiring is the action by the underlying semiring.
Equations
Note that this provides IsScalarTower S R R which is needed by smul_mul_assoc.
Equations
- Subsemiring.instSMulWithZeroSubtypeMem s = { toSMul := Submonoid.instSMulSubtypeMem s, smul_zero := ⋯, zero_smul := ⋯ }
The action by a subsemiring is the action by the underlying semiring.
Equations
The action by a subsemiring is the action by the underlying semiring.
Equations
The action by a subsemiring is the action by the underlying semiring.
Equations
The action by a subsemiring is the action by the underlying semiring.
Equations
Equations
- Subsemiring.instMulActionWithZeroSubtypeMem s = { toMulAction := Submonoid.instMulActionSubtypeMem s, smul_zero := ⋯, zero_smul := ⋯ }
The action by a subsemiring is the action by the underlying semiring.
Equations
Equations
- Subsemiring.instModuleSubtypeMem s = { toDistribMulAction := inferInstance, add_smul := ⋯, zero_smul := ⋯ }
The action by a subsemiring is the action by the underlying semiring.
Equations
The action by a subsemiring is the action by the underlying semiring.
Equations
The center of a semiring acts commutatively on that semiring.
The center of a semiring acts commutatively on that semiring.
If all the elements of a set s commute, then closure s is a commutative semiring.
Equations
- Subsemiring.closureCommSemiringOfComm hcomm = { toSemiring := (Subsemiring.closure s).toSemiring, mul_comm := ⋯ }