ℤ-lattices #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Let E be a finite dimensional vector space over a normed_linear_ordered_field K with a solid
norm and that is also a floor_ring, e.g. ℚ or ℝ. A (full) ℤ-lattice L of E is a discrete
subgroup of E such that L spans E over K.
The ℤ-lattice L can be defined in two ways:
- For
ba basis ofE, thensubmodule.span ℤ (set.range b)is a ℤ-lattice ofE. - As an
add_subgroup Ewith the additional properties:∀ r : ℝ, (L ∩ metric.closed_ball 0 r).finite, that isLis discretesubmodule.span ℝ (L : set E) = ⊤, that isLspansEoverK.
Main result #
zspan.is_add_fundamental_domain: for a ℤ-latticesubmodule.span ℤ (set.range b), proves that the set defined byzspan.fundamental_domainis a fundamental domain.
The fundamental domain of the ℤ-lattice spanned by b. See zspan.is_add_fundamental_domain
for the proof that it is the fundamental domain.
The map that sends a vector of E to the element of the ℤ-lattice spanned by b obtained
by rounding down its coordinates on the basis b.
Equations
- zspan.floor b m = finset.univ.sum (λ (i : ι), ⌊⇑(⇑(b.repr) m) i⌋ • ⇑(basis.restrict_scalars ℤ b) i)
The map that sends a vector of E to the element of the ℤ-lattice spanned by b obtained
by rounding up its coordinates on the basis b.
Equations
- zspan.ceil b m = finset.univ.sum (λ (i : ι), ⌈⇑(⇑(b.repr) m) i⌉ • ⇑(basis.restrict_scalars ℤ b) i)
The map that sends a vector E to the fundamental domain of the lattice,
see zspan.fract_mem_fundamental_domain.
Equations
- zspan.fract b m = m - ↑(zspan.floor b m)
For a ℤ-lattice submodule.span ℤ (set.range b), proves that the set defined
by zspan.fundamental_domain is a fundamental domain.