Vectors in the same ray: partitions, sums, finite orbits, and durations of segments #
Mathlib's SameRay.trans chains two ray relations SameRay R x y and SameRay R y z into
SameRay R x z, provided the middle vector y vanishes only when x or z does.
TauCeti.sameRay_of_partition iterates this step along a finite ordered partition of an interval
in a linear order: if a map w into an ordered scalar module lies, on each piece of the
partition, on the ray of its value at the end of that piece, and w vanishes at a point of the
interval only if it vanishes at every earlier point, then every value of w lies on the ray of
the final value. The explicit-partition induction follows the pattern of the Apache-2.0
frenzymath/Poincare-Conjecture
formalization, revision 24f32e4d600878bfaac6bc2f2f9324175571c321, as used in
TauCeti/Geometry/Manifold/Riemannian/EDistComparison.lean.
Negating a ray twice gives it back (Module.Ray.neg_neg), in a form that rw and simp find on
orientations. Scaling a ray by a unit commutes with negating it (Module.Ray.units_smul_neg),
complementing Mathlib's Module.Ray.neg_units_smul, and with transporting it along a linear
equivalence (Module.Ray.map_units_smul). Over a linearly ordered ring, any map of rays
commuting with negation also commutes with scaling by units (Module.Ray.units_smul_of_map_neg).
Two nonzero vectors in the same ray cannot cancel: their sum is again nonzero. This is the
non-degeneracy needed to merge adjacent segments of a piecewise-linear path that point in the same
direction. A vector lies in the same ray as such a sum exactly when it lies in the same ray as the
summands, since SameRay is transitive through a nonzero vector.
Two distinct points of a finite orbit of a linear group action never lie in the same ray. This is
what makes the velocity of each segment of a path with velocities in a Weyl orbit recoverable from
the segment alone: if no two distinct points of a set S ∌ 0 lie in the same ray, a segment v
traversed in a positive time d at a velocity d⁻¹ • v ∈ S determines d
(Set.Pairwise.eq_of_snd_eq_of_inv_smul_mem), and a list of such segments determines its list
of durations (Set.Pairwise.eq_of_map_snd_eq_of_inv_smul_mem). Two pairs (d, v) and (e, w)
of positive durations lie in the same ray exactly when they have the same velocity
(Prod.sameRay_iff_inv_fst_smul_snd_eq).
SameRay is transitive through a nonzero vector.
Transporting a ray along a linear equivalence commutes with scaling it by a unit.
Rays chain through a partition. If a map w into an ordered scalar module lies, on each
piece of an ordered partition, on the ray of its value at the end of that piece, and w vanishes
at a point of the interval only if it vanishes at every earlier point of the interval, then every
value lies on the ray of the final value.
Negating a ray twice produces the original ray. This is Mathlib's neg_neg stated with the
instance Neg (Module.Ray R M), so that rw and simp also find it on orientations, where the
generic lemma does not match.
Scaling a ray by a unit commutes with negating it.
A map of rays commuting with negation commutes with scaling by units, since a unit acts on rays as the identity or as negation according to its sign.
The sum of two vectors in the same ray, the first of them nonzero, is nonzero.
If x and y lie in the same ray and y is nonzero, then a vector lies in the same ray as
x + y exactly when it lies in the same ray as y.
Two points of a finite orbit of a group acting by maps commuting with scalar multiplication
are equal as soon as they lie in the same ray. If g moved a nonzero point y of the orbit to
r • y with 0 < r, the powers of g would move y to the points r ^ n • y of the orbit, which
are pairwise distinct unless r = 1.
If no two distinct points of a set S ∌ 0 lie in the same ray, a pair (d, v) with 0 < d
and d⁻¹ • v ∈ S is determined by v: a segment traversed at a velocity in S determines its
duration.
If no two distinct points of a set S ∌ 0 lie in the same ray, a list of pairs (d, v) with
0 < d and d⁻¹ • v ∈ S is determined by its second components: segments traversed at velocities
in S determine their durations.
Two pairs (d, v) and (e, w) with 0 < d and 0 < e lie in the same ray exactly when they
have the same velocity, d⁻¹ • v = e⁻¹ • w.