Separating vectors by a left- or right-separating form #
For a left-separating matrix M over a field (for example a nondegenerate one), the linear forms
w ↦ v ⬝ᵥ M *ᵥ w determine v. This file records the two-vector form of that statement: if x
is not a multiple of u, then some w is orthogonal to u but not to x. Otherwise the form of
x would vanish on the kernel of the form of u, making it a multiple of that form by Mathlib's
mem_span_of_iInf_ker_le_ker, and left separation would make x the same multiple of u. This
complements Mathlib's Matrix.Nondegenerate.exists_not_ortho_of_ne_zero, the case u = 0, and is
the basic tool for moving vectors by transvections in the classical groups.
For a right-separating matrix M over any commutative semiring (for example a nondegenerate one,
over the field with two elements as well), two nonzero vectors x and y have a common vector z
pairing nontrivially with both M *ᵥ x and M *ᵥ y.
Main results #
Matrix.SeparatingLeft.exists_ortho_and_not_ortho_of_notMem_span: a vector orthogonal toubut not tox, whenxis not a multiple ofu.Matrix.SeparatingRight.exists_not_ortho_and_not_ortho_of_ne_zero_of_ne_zero: a vectorzwithz ⬝ᵥ M *ᵥ x ≠ 0andz ⬝ᵥ M *ᵥ y ≠ 0, for nonzeroxandy.
A vector orthogonal to u but not to x, for a left-separating matrix M, when x is
not a multiple of u.
If M is right-separating (for example nondegenerate) and x, y are nonzero, then some z
pairs nontrivially with both: z ⬝ᵥ M *ᵥ x ≠ 0 and z ⬝ᵥ M *ᵥ y ≠ 0. This holds over any
commutative semiring, in particular over the field with two elements.