Linear and semilinear sets #
This file defines linear and semilinear sets. In an AddCommMonoid
, a linear set is a coset of a
finitely generated additive submonoid, and a semilinear set is a finite union of linear sets.
We prove that semilinear sets are closed under union, projection, set addition and additive closure. We also prove that any semilinear set can be decomposed into a finite union of proper linear sets, which are linear sets with linearly independent submonoid generators (periods).
Main Definitions #
IsLinearSet
: a set is linear if it is a coset of a finitely generated additive submonoid.IsSemilinearSet
: a set is semilinear if it is a finite union of linear sets.IsProperLinearSet
: a linear set is proper if its submonoid generators (periods) are linearly independent.IsProperSemilinearSet
: a semilinear set is proper if it is a finite union of proper linear sets.
Main Results #
IsSemilinearSet
is closed under union, projection, set addition and additive closure.IsSemilinearSet.isProperSemilinearSet
: every semilinear set is a finite union of proper linear sets.
Naming convention #
IsSemilinearSet.proj
projects a semilinear set of ι ⊕ κ → M
to ι → M
by taking Sum.inl
on
the index. It is a special case of IsSemilinearSet.image
, and is useful in proving semilinearity
of sets in form { x | ∃ y, p x y }
.
References #
A set is linear if it is a coset of a finitely generated additive submonoid.
Equations
- IsLinearSet s = ∃ (a : M) (t : Set M), t.Finite ∧ s = a +ᵥ ↑(AddSubmonoid.closure t)
Instances For
An equivalent expression of IsLinearSet
in terms of Finset
instead of Set.Finite
.
A set is semilinear if it is a finite union of linear sets.
Equations
- IsSemilinearSet s = ∃ (S : Set (Set M)), S.Finite ∧ (∀ t ∈ S, IsLinearSet t) ∧ s = ⋃₀ S
Instances For
Semilinear sets are closed under union.
Semilinear sets are closed under set addition.
Semilinear sets are closed under projection (from ι ⊕ κ → M
to ι → M
by taking Sum.inl
on
the index). It is a special case of IsSemilinearSet.image
.
Semilinear sets are closed under additive closure.
A linear set is proper if its submonoid generators (periods) are linearly independent.
Equations
- IsProperLinearSet s = ∃ (a : M) (t : Set M), t.Finite ∧ LinearIndepOn ℕ id t ∧ s = a +ᵥ ↑(AddSubmonoid.closure t)
Instances For
A semilinear set is proper if it is a finite union of proper linear sets.
Equations
- IsProperSemilinearSet s = ∃ (S : Set (Set M)), S.Finite ∧ (∀ t ∈ S, IsProperLinearSet t) ∧ s = ⋃₀ S
Instances For
The proper decomposition of semilinear sets: every semilinear set is a finite union of proper linear sets.