Affine lattices generated by rational points #
A finite rational set has a common denominator. Consequently its affine integer span is contained in a rescaled copy of the standard integer lattice, so its intersection with a compact set is finite.
The explicit finite-combination definition of affineIntSpan agrees
with Mathlib's affine span over ℤ. This characterization supplies the
closure laws of the support-generated lattices used by the face flag.
Affine integer span is monotone.
Taking the affine integer span twice does not enlarge it.
Every generator belongs to its affine integer span.
Integer affine combinations of rational points are rational.
A rational point becomes integral after multiplication by one positive integer.
Integral points remain integral after multiplication by a natural number.
A finite set of rational points admits one positive common denominator in every coordinate.
A common denominator for the generators is also a common denominator for every integer affine combination of them.
A compact set meets the affine integer span of a finite rational set in only finitely many points. No affine independence or full-dimensionality is required.
A finitely generated rational polytope is compact.
Abstract affine lattices #
For convex flags we only need the carrier of an affine lattice, closure under integer affine combinations, and local finiteness. Packaging precisely those properties lets a flag use a different lattice in every fibre without first choosing bases which identify all of them with standard integer coordinates.
A locally finite affine ℤ-lattice in real coordinate space.
The carrier is required to be nonempty and closed under finite integer affine
combinations. finite_inter_compact is the operational discreteness property
used to make the population of integral points in a bounded flag fibre finite.
Underlying set of points in the affine lattice.
- affineIntSpan_closed : affineIntSpan self.carrier ⊆ self.carrier
Instances For
Equations
- EGZ.AffineLattice.instMembershipRealCoord = { mem := fun (L : EGZ.AffineLattice d) (q : EGZ.RealCoord d) => q ∈ L.carrier }
Membership in an affine lattice is membership in its carrier.
The standard integer lattice in the chosen coordinates.
Equations
- EGZ.AffineLattice.standard d = { carrier := {q : EGZ.RealCoord d | EGZ.IsIntegral q}, nonempty := ⋯, affineIntSpan_closed := ⋯, finite_inter_compact := ⋯ }
Instances For
The affine lattice generated by a finite nonempty rational set.
Equations
- EGZ.AffineLattice.span S hfinite hnonempty hrational = { carrier := EGZ.affineIntSpan S, nonempty := ⋯, affineIntSpan_closed := ⋯, finite_inter_compact := ⋯ }