Subsemigroups: CompleteLattice structure #
This file defines a CompleteLattice structure on Subsemigroups,
and define the closure of a set as the minimal subsemigroup that includes this set.
Main definitions #
For each of the following definitions in the Subsemigroup namespace, there is a corresponding
definition in the AddSubsemigroup namespace.
Subsemigroup.copy: copy of a subsemigroup withcarrierreplaced by a set that is equal but possibly not definitionally equal to the carrier of the originalSubsemigroup.Subsemigroup.closure: semigroup closure of a set, i.e., the least subsemigroup that includes the set.Subsemigroup.gi:closure : Set M → Subsemigroup Mand coercioncoe : Subsemigroup M → Set Mform aGaloisInsertion;
Implementation notes #
Subsemigroup inclusion is denoted ≤ rather than ⊆, although ∈ is defined as
membership of a subsemigroup's underlying set.
Note that Subsemigroup M does not actually require Semigroup M,
instead requiring only the weaker Mul M.
This file is designed to have very few dependencies. In particular, it should not use natural numbers.
Tags #
subsemigroup, subsemigroups
Equations
- Subsemigroup.instInfSet = { sInf := fun (s : Set (Subsemigroup M)) => { carrier := ⋂ t ∈ s, ↑t, mul_mem' := ⋯ } }
Equations
- AddSubsemigroup.instInfSet = { sInf := fun (s : Set (AddSubsemigroup M)) => { carrier := ⋂ t ∈ s, ↑t, add_mem' := ⋯ } }
subsemigroups of a monoid form a complete lattice.
Equations
- One or more equations did not get rendered due to their size.
The AddSubsemigroups of an AddMonoid form a complete lattice.
Equations
- One or more equations did not get rendered due to their size.
The Subsemigroup generated by a set.
Equations
- Subsemigroup.closure s = sInf {S : Subsemigroup M | s ⊆ ↑S}
Instances For
The AddSubsemigroup generated by a set
Equations
- AddSubsemigroup.closure s = sInf {S : AddSubsemigroup M | s ⊆ ↑S}
Instances For
The AddSubsemigroup generated by a set includes the set.
Alias of AddSubsemigroup.notMem_of_notMem_closure.
Alias of Subsemigroup.notMem_of_notMem_closure.
An induction principle for closure membership. If p holds for all elements of s, and
is preserved under multiplication, then p holds for all elements of the closure of s.
An induction principle for additive closure membership. If
p holds for all elements of s, and is preserved under addition, then p holds for all
elements of the additive closure of s.
An induction principle for closure membership for predicates with two arguments.
An induction principle for additive closure membership for predicates with two arguments.
If s is a dense set in a magma M, Subsemigroup.closure s = ⊤, then in order to prove that
some predicate p holds for all x : M it suffices to verify p x for x ∈ s,
and verify that p x and p y imply p (x * y).
If s is a dense set in an additive monoid M,
AddSubsemigroup.closure s = ⊤, then in order to prove that some predicate p holds
for all x : M it suffices to verify p x for x ∈ s, and verify that p x and p y imply
p (x + y).
Closure of a subsemigroup S equals S.
Additive closure of an additive subsemigroup S equals S
Let s be a subset of a semigroup M such that the closure of s is the whole semigroup.
Then MulHom.ofDense defines a mul homomorphism from M asking for a proof
of f (x * y) = f x * f y only for y ∈ s.
Equations
- MulHom.ofDense f hs hmul = { toFun := f, map_mul' := ⋯ }
Instances For
Let s be a subset of an additive semigroup M such that the closure of s is the whole
semigroup. Then AddHom.ofDense defines an additive homomorphism from M asking for a proof
of f (x + y) = f x + f y only for y ∈ s.
Equations
- AddHom.ofDense f hs hmul = { toFun := f, map_add' := ⋯ }