The Plücker point of a subspace #
A k-dimensional subspace V of ι → K determines a point of the projective space on
Set.powersetCard ι k → K, the tuple of its Plücker coordinates: wedge a basis of V together
inside ⋀[K]^k (ι → K) and read the result in the basis that the standard basis of ι → K
induces there. A change of basis of V multiplies the wedge by a determinant, hence by a unit, so
the point of projective space depends on V alone.
This file builds that point and proves it is an embedding of the k-dimensional subspaces into
projective space. Layer 3.2 defines the height of a subspace as the height of this point, and
everything the height inherits — Northcott for subspaces above all — rests on the injectivity
proved here.
Main definitions #
exteriorPower.plucker k vforv : Fin k → (ι → K): the coordinate tuple of the wedgev 0 ∧ ⋯ ∧ v (k-1), indexed by thek-element subsets ofι.Submodule.pluckerPoint V hVforhV : Module.finrank K V = k: the induced point ofProjectivization K (Set.powersetCard ι k → K).
Main results #
exteriorPower.plucker_apply: the Plücker coordinate atsis the maximal minor on the columnssof the matrix whose rows are thev i.exteriorPower.plucker_fin_eq_detis the top-rank case, where the single coordinate is the determinant, andexteriorPower.plucker_one_ofSingletonthe rank-one case, where the coordinates are the coordinates of the vector.exteriorPower.plucker_eq_zero_iff: the coordinate tuple vanishes exactly when the family is linearly dependent, so a basis ofVproduces a nonzero tuple.Submodule.pluckerPoint_eq_mkandSubmodule.pluckerPoint_span_range: the value of the Plücker point on any basis ofV, and on any linearly independent family spanning it. This is the basis-independence, stated in the form that is actually used.Submodule.pluckerPoint_span_singletonis the rank-one case: the Plücker point of a line is the point itself.Submodule.pluckerPoint_injective: distinct subspaces of the same rank have distinct Plücker points.
Two lemmas are stated here because Mathlib lacks them and the proofs need them:
exteriorPower.ιMulti_eq_zero_iff, that over a field a wedge vanishes exactly on linearly
dependent families, and linearIndependent_fin1, the Fin 1 companion of Mathlib's
linearIndependent_fin2.
Implementation notes #
The index type is Mathlib's Set.powersetCard ι k, the type of k-element finsets of ι, because
that is what Module.Basis.exteriorPower is indexed by; using it verbatim is what lets
exteriorPower.plucker_apply come out of Mathlib's exteriorPower.ιMultiDual_apply_ιMulti with no
index bookkeeping of our own. It is also why [LinearOrder ι] is a standing hypothesis: an order
on ι is needed to say which wedge of basis vectors a k-element subset names. A different
order changes each coordinate by a sign only, so nothing downstream depends on the choice.
The Plücker point is not built by Projectivization.lift. There is no projective space to lift
from: the data that varies is a basis of V, and bases do not form a projectivization. What takes
its place is Submodule.pluckerPoint_eq_mk, which says the value on an arbitrary basis is the
value on the chosen one, and which is the only thing a proof ever needs from well-definedness.
The definition itself picks Module.finBasisOfFinrankEq.
Injectivity is proved through the wedge criterion exteriorPower.ιMulti_snoc_eq_zero_iff: a vector
lies in the span of a linearly independent family exactly when wedging it on gives 0. Since the
wedge of a basis of V is recovered from the Plücker point up to a nonzero scalar, and scaling
does not change what the criterion detects, the point determines the subspace. The criterion itself
is proved in ExteriorAlgebra K (ι → K), where wedging on is multiplication.
References #
E. Bombieri and W. Gubler, Heights in Diophantine Geometry, Cambridge University Press (2006), §2.8.4.
M. Hindry and J. H. Silverman, Diophantine Geometry: An Introduction, Springer GTM 201 (2000), Exercise A.1.11(a)–(b).
This is Layer 3.1 of the ArithmeticHeights roadmap.
A one-element family is linearly independent exactly when its single vector is nonzero. This
is the Fin 1 companion of Mathlib's linearIndependent_fin2, which Mathlib does not have.
Over a field, the wedge of a linearly independent family is nonzero.
Over a field, a wedge of k vectors vanishes exactly when they are linearly dependent.
The wedge criterion for membership in a span. A vector lies in the span of a linearly
independent family exactly when wedging it onto that family gives 0.
Wedging a vector onto a wedge is multiplication in the exterior algebra.
The wedge criterion sees a wedge only up to a scalar: proportional wedges give proportional results when a further vector is wedged on.
The Plücker coordinates of a family v : Fin k → (ι → R): the coordinate tuple of the
wedge v 0 ∧ ⋯ ∧ v (k-1) in the basis of ⋀[R]^k (ι → R) induced by the standard basis of
ι → R, indexed by the k-element subsets of ι.
Equations
- exteriorPower.plucker k v = (Module.Basis.exteriorPower k (Pi.basisFun R ι)).equivFun ((exteriorPower.ιMulti R k) v)
Instances For
The Plücker coordinates are the maximal minors. The coordinate at a k-element subset s
of ι is the determinant of the k × k matrix cut out of the rows v by the columns s, the
columns taken in the order of ι.
The Plücker coordinates commute with a ring homomorphism. They are determinants, so this
is RingHom.map_det; it is what carries the Plücker point of a subspace along a base change.
The empty wedge: in rank 0 there is one Plücker coordinate and it is 1.
In rank 1 the Plücker coordinate at the singleton {i} is the i-th coordinate: the
Plücker embedding extends the identity on points.
In rank 1 the Plücker coordinates are the coordinates, re-indexed along
Set.powersetCard.ofSingleton.
The Plücker coordinates determine the wedge: proportionality of the coordinate tuples is proportionality of the wedges.
Scaling the vectors scales the Plücker coordinates by the product of the scalars. The Plücker coordinates are a multilinear function of the family, so rescaling each vector multiplies every coordinate by the product of the scalars — the statement that a determinant is multilinear in its rows, read on the maximal minors at once.
Over a field, the Plücker coordinates of a family vanish exactly when it is linearly dependent.
Over a field, the Plücker coordinates of a linearly independent family are not all zero.
The family of vectors of M underlying a basis of a submodule is linearly independent.
The span of the vectors underlying a basis of a submodule is that submodule.
The Plücker point of a k-dimensional subspace of ι → K (Bombieri–Gubler 2.8.4;
Hindry–Silverman, Exercise A.1.11(a)–(b)): the point of projective space on the k-element subsets
of ι given by the Plücker coordinates of any basis of V. It does not depend on the basis; see
Submodule.pluckerPoint_eq_mk.
Equations
- V.pluckerPoint hV = Projectivization.mk K (exteriorPower.plucker k fun (i : Fin k) => ↑((Module.finBasisOfFinrankEq K (↥V) hV) i)) ⋯
Instances For
The Plücker point is computed by every basis, not only by the chosen one.
The Plücker point of a span. For a linearly independent family, the Plücker point of the subspace it spans is the point defined by its Plücker coordinates.
Equal subspaces have equal Plücker points, whatever rank proofs they are given.
The Plücker point of a line is the point itself, re-indexed along
Set.powersetCard.ofSingleton (exteriorPower.plucker_one_comp). This is the compatibility that
makes Layer 3.2's height of a subspace agree with Mathlib's height of a point on a line.
The Plücker map is an embedding (Hindry–Silverman, Exercise A.1.11(b)): distinct subspaces of the same rank have distinct Plücker points. This is what Layer 3.7 turns into Northcott for subspaces.