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 #
IsSemilinearSetis closed under union, projection, set addition and additive closure.IsSemilinearSet.isProperSemilinearSet: every semilinear set is a finite union of proper linear sets.Nat.isSemilinearSet_iff_ultimately_periodic: A set ofℕis semilinear if and only if it is ultimately periodic, i.e. periodic after some numberk.
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
An equivalent expression of IsSemilinearSet in terms of Finset instead of Set.Finite.
Semilinear sets are closed under union.
Semilinear sets are closed under set addition.
The image of a semilinear set under a homomorphism is semilinear.
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.
A variant of IsSemilinearSet.proj for backward reasoning.
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
An equivalent expression of IsProperLinearSet in terms of Finset instead of Set.Finite.
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
An equivalent expression of IsProperSemilinearSet in terms of Finset instead of
Set.Finite.
The proper decomposition of semilinear sets: every semilinear set is a finite union of proper linear sets.