Documentation

LeanPool.CCDN.ArithmeticHeights.Duality

The duality theorem for the height of a subspace #

A subspace and its annihilator have the same height. This is W. M. Schmidt's theorem: the Plücker coordinates of the annihilator are those of the subspace read at the complementary index, up to a sign at each index and one common nonzero factor, and every height in this development is insensitive to exactly that much — a signed reindexing and a scalar.

Main results #

Implementation notes #

The annihilator lives in the dual space, so it is transported back to ι → K along Module.piEquiv ι K K, whose value at x is the functional v ↦ v ⬝ᵥ x; the transported annihilator is therefore the orthogonal complement of V for the standard bilinear form. Submodule.comap_piEquiv_dualAnnihilator_eq_map turns the comap used here into the map along the inverse equivalence, which is the other spelling in use.

⚠ The annihilator and not the orthogonal complement is what the proof must use, even though the two are identified here. Over a field that is not formally real the two summands V and V^⊥ can meet — over ℚ(i), the line spanned by (1, i) is its own orthogonal complement — so the matrix whose rows are a basis of V stacked on a basis of V^⊥ is singular, and every argument through its determinant fails. The proof below is stated for a complement W of V, which always exists, and reaches the annihilator through the dual basis.

The proof is elementary, and in particular uses neither a Laplace expansion along a block of rows nor Jacobi's identity for the complementary minors of an inverse, neither of which Mathlib has. Instead: let the rows of C be a basis of ι → K whose first block is a basis of V, and let the rows of D be the dual basis read back in ι → K, so that C * Dᵀ = 1. For a set s of k columns, multiply C by the matrix whose first k columns are the standard basis vectors at s and whose remaining columns are the second block of Dᵀ. The product is block triangular with the s-minor of the first block of C in one corner and an identity in the other, while the second factor, read through the enumeration of ι that lists s and then its complement, is block triangular with the complementary minor of the second block of D in one corner. Two applications of Matrix.det_fromBlocks_zero₁₂ and Matrix.det_fromBlocks_zero₂₁ give the identity, and the factor that appears is the determinant of C read through that enumeration, which depends on s only through a permutation sign (Matrix.det_permute').

References #

W. M. Schmidt, On heights of algebraic subspaces and diophantine approximations, Annals of Mathematics 85 (1967), §1, equations (2) and (4), where the involution on Grassmann coordinates that reverses the index order and attaches a sign is what makes the theorem hold in every normalization at once. E. Bombieri and W. Gubler, Heights in Diophantine Geometry, Cambridge University Press (2006), Proposition 2.8.10 and Corollary 2.8.12 for the absolute Arakelov version. The same Plücker identity also gives the sup-norm counterparts here. The underlying linear algebra is Hindry–Silverman, Diophantine Geometry: An Introduction, Exercise A.1.11(c).

This is Layer 3.5 of the ArithmeticHeights roadmap.

theorem Height.mulHeight_eq_of_forall_eq_or_eq_neg {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} {x y : ι → K} (h : ∀ (i : ι), y i = x i ∨ y i = -x i) :

A change of sign in a coordinate does not change the height. Every absolute value takes the same value at x and at -x, and the tuple is zero exactly when the original is, so both the displayed product and the junk value are unchanged. This is the invariance that the duality theorem of Layer 3.5 needs, the Plücker coordinates of an annihilator carrying a sign that depends on the index.

theorem Height.logHeight_eq_of_forall_eq_or_eq_neg {K : Type u_1} [Field K] [AdmissibleAbsValues K] {ι : Type u_2} {x y : ι → K} (h : ∀ (i : ι), y i = x i ∨ y i = -x i) :

The logarithmic form of Height.mulHeight_eq_of_forall_eq_or_eq_neg.

theorem NumberField.arakelovMulHeight_eq_of_forall_eq_or_eq_neg {K : Type u_1} [Field K] {ι : Type u_2} [NumberField K] [Fintype ι] {x y : ι → K} (h : ∀ (i : ι), y i = x i ∨ y i = -x i) :

A change of sign in a coordinate does not change the Arakelov height either: the archimedean factor is a sum of squares of absolute values and the finite factor a supremum of absolute values, and neither sees a sign.

theorem NumberField.arakelovLogHeight_eq_of_forall_eq_or_eq_neg {K : Type u_1} [Field K] {ι : Type u_2} [NumberField K] [Fintype ι] {x y : ι → K} (h : ∀ (i : ι), y i = x i ∨ y i = -x i) :

The logarithmic form of NumberField.arakelovMulHeight_eq_of_forall_eq_or_eq_neg.

theorem NumberField.absMulHeight_eq_of_forall_eq_or_eq_neg {K : Type u_1} [Field K] {ι : Type u_2} [CharZero K] [Finite ι] {x y : ι → K} (h : ∀ (i : ι), y i = x i ∨ y i = -x i) :

A change of sign in a coordinate does not change the absolute height. The coordinates of y lie in the field generated by those of x and conversely, so the two are computed in one and the same number field, where the relative statement applies.

theorem NumberField.absLogHeight_eq_of_forall_eq_or_eq_neg {K : Type u_1} [Field K] {ι : Type u_2} [CharZero K] [Finite ι] {x y : ι → K} (h : ∀ (i : ι), y i = x i ∨ y i = -x i) :

The logarithmic form of NumberField.absMulHeight_eq_of_forall_eq_or_eq_neg.

theorem Matrix.det_submatrix_equiv_eq_or_eq_neg {K : Type u_1} [Field K] {ι : Type u_2} {r : Type u_3} [Fintype r] [DecidableEq r] (X : Matrix r ι K) (e₁ e₂ : r ≃ ι) :
(X.submatrix id ⇑e₁).det = (X.submatrix id ⇑e₂).det ∨ (X.submatrix id ⇑e₁).det = -(X.submatrix id ⇑e₂).det

Two enumerations of the column index differ by a permutation, so the determinants they produce differ by a sign.

theorem Matrix.isUnit_det_submatrix_of_mul_transpose_eq_one {K : Type u_1} [Field K] {ι : Type u_2} [Fintype ι] {r : Type u_3} [Fintype r] [DecidableEq r] {C D : Matrix r ι K} (hCD : C * D.transpose = 1) (e : r ≃ ι) :

Dual rows make the enumerated determinant a unit.

theorem Matrix.linearIndependent_row_of_mul_transpose_eq_one {K : Type u_1} [Field K] {ι : Type u_2} [Fintype ι] {r : Type u_3} [DecidableEq r] {C D : Matrix r ι K} (hCD : C * D.transpose = 1) :

Rows dual to a family of rows are linearly independent.

The complementary-minor identity, for any enumeration. If the rows of C and of D are dual for the standard bilinear form, the Plücker coordinate at s of the first block of C is, up to a sign, the determinant of C read through e times the Plücker coordinate at the complement of s of the second block of D. The factor does not depend on s; this is the local form of duality the twisted duality theorem runs on.

theorem Submodule.mem_comap_piEquiv_dualAnnihilator {K : Type u_1} [Field K] {ι : Type u_2} [Fintype ι] {V : Submodule K (ι → K)} {x : ι → K} :
x ∈ comap (↑(Module.piEquiv ι K K)) V.dualAnnihilator ↔ ∀ v ∈ V, v ⬝ᵥ x = 0

The transported annihilator is the orthogonal complement. Module.piEquiv ι K K sends x to the functional v ↦ v ⬝ᵥ x, so a vector lies in the annihilator of V read back in ι → K exactly when it is orthogonal to V for the standard bilinear form.

theorem Submodule.comap_piEquiv_dualAnnihilator_eq_map {K : Type u_1} [Field K] {ι : Type u_2} [Finite ι] (V : Submodule K (ι → K)) :

The two spellings of the transported annihilator: the comap along the identification of ι → K with its dual, and the map along the inverse. This is Mathlib's Submodule.comap_equiv_eq_map_symm in the form the roadmap pins.

theorem Submodule.exists_dual_matrices {K : Type u_1} [Field K] {ι : Type u_2} [Fintype ι] {k l : ℕ} (V : Submodule K (ι → K)) (hk : Module.finrank K ↥V = k) (hlk : l + k = Fintype.card ι) :
∃ (C : Matrix (Fin k ⊕ Fin l) ι K) (D : Matrix (Fin k ⊕ Fin l) ι K), C * D.transpose = 1 ∧ span K (Set.range (C.submatrix Sum.inl id).row) = V

Every subspace sits in a dual pair of matrices. The rows of C are a basis of ι → K whose first block is a basis of V; the rows of D are the dual basis, read back in ι → K through the standard bilinear form.

theorem Submodule.span_range_inr_row_eq {K : Type u_1} [Field K] {ι : Type u_2} [Fintype ι] {k l : ℕ} {V : Submodule K (ι → K)} {C D : Matrix (Fin k ⊕ Fin l) ι K} (hCD : C * D.transpose = 1) (hlk : l + k = Fintype.card ι) (hV : span K (Set.range (C.submatrix Sum.inl id).row) = V) :

The second block of the dual basis spans the orthogonal complement.

theorem Submodule.exists_plucker_eq_plucker_compl {K : Type u_1} [Field K] {ι : Type u_2} [Fintype ι] {k l : ℕ} [LinearOrder ι] (V : Submodule K (ι → K)) (hk : Module.finrank K ↥V = k) (hlk : l + k = Fintype.card ι) :
∃ (v : Fin k → ι → K) (w : Fin l → ι → K) (c : K), c ≠ 0 ∧ LinearIndependent K v ∧ LinearIndependent K w ∧ span K (Set.range v) = V ∧ span K (Set.range w) = comap (↑(Module.piEquiv ι K K)) V.dualAnnihilator ∧ ∀ (s : ↑(Set.powersetCard ι k)), exteriorPower.plucker k v s = c * exteriorPower.plucker l w ((Set.powersetCard.compl hlk) s) ∨ exteriorPower.plucker k v s = -(c * exteriorPower.plucker l w ((Set.powersetCard.compl hlk) s))

Plücker duality in coordinates (W. M. Schmidt 1967, §1, equations (2) and (4)). A subspace and its annihilator have bases whose Plücker coordinates agree at complementary indices, up to a sign at each index and one common nonzero factor — the involution Schmidt calls τ. Every height in this development is invariant under exactly that much.

Sup-norm duality: a subspace and its annihilator have the same height, with the annihilator read back in ι → K along the standard basis. This is the sup-norm counterpart of the Arakelov version in Bombieri–Gubler Proposition 2.8.10. By Submodule.mem_comap_piEquiv_dualAnnihilator the subspace on the left is the orthogonal complement of V for the standard bilinear form.

The relative multiplicative form of Arakelov duality (Bombieri–Gubler Proposition 2.8.10). Schmidt's mechanism gives both normalizations at once: the two coordinate tuples differ by a signed reindexing and a scalar, and no height in Layer 0 sees either.

The duality theorem for the absolute height.

theorem Submodule.eq_comap_piEquiv_dualAnnihilator_of_forall_dotProduct_eq_zero {K : Type u_1} [Field K] {ι : Type u_2} [Fintype ι] {V W : Submodule K (ι → K)} (h : ∀ (x : ι → K), x ∈ W ↔ ∀ v ∈ V, v ⬝ᵥ x = 0) :

The orthogonal-complement form of the hypothesis. A subspace cut out by orthogonality to V for the standard bilinear form is the transported annihilator, so each duality theorem above applies to it. Submodule.comap_piEquiv_dualAnnihilator_eq_map turns the comap into a map along the inverse, which is the other spelling in use.

The solution space of A x = 0 is the orthogonal complement of the row space of A.

The sup-norm heights of the solution space of A x = 0 and the row space of A agree. This is the sup-norm counterpart of the Arakelov duality in Bombieri–Gubler Corollary 2.8.12.

The relative Arakelov heights of the solution space and row space agree. This is the relative multiplicative form of Bombieri–Gubler Corollary 2.8.12. In the full-row-rank number-field setting of Bombieri–Vaaler, the right-hand side is H(A) ^ [K : ℚ].

The absolute height of a subspace is the absolute height of any matrix cutting it out.

Worked examples #