1.3. Local rigidity and the regular locus
The formalization does not cite Asimow and Roth. For a finite simple graph in
any dimension it proves the equivalence Theorem 1.1 needs of them: attaining
the complete graph's maximum rigidity rank is the same condition as local
rigidity at every placement of some open dense set. The argument is analytic,
and it was added to the formalization after the paper was released. We recall
the Euclidean vocabulary it is stated in, then the placements at which the
comparison is made, and then the equivalence itself. Throughout, \rho_d(G)
is the maximum rank of R_G over placements V \to \R^d, so \rho_3 is
the rank function of the maximum-rank
definition, and K is the complete graph on the vertices of G.
-
RB31E2E.BarJoint.squaredLengthMap[complete] -
RB31E2E.BarJoint.IsEquivalent[complete] -
RB31E2E.BarJoint.IsCongruent[complete] -
RB31E2E.BarJoint.IsLocallyRigid[complete]
Two placements of a graph are equivalent when corresponding edges have equal
lengths in both, and congruent when every pair of vertices is at the same
distance in both. A placement p is locally rigid when every placement near
enough to p and equivalent to it is congruent to it. The squared edge-length
map sends a placement to the squared lengths of its edges and a nonadjacent
pair to zero; its derivative at p is twice R_G(p).
Lean code for Definition1.3.1●4 definitions
Associated Lean declarations
-
RB31E2E.BarJoint.squaredLengthMap[complete]
-
RB31E2E.BarJoint.IsEquivalent[complete]
-
RB31E2E.BarJoint.IsCongruent[complete]
-
RB31E2E.BarJoint.IsLocallyRigid[complete]
-
RB31E2E.BarJoint.squaredLengthMap[complete] -
RB31E2E.BarJoint.IsEquivalent[complete] -
RB31E2E.BarJoint.IsCongruent[complete] -
RB31E2E.BarJoint.IsLocallyRigid[complete]
-
defdefined in RB31EndToEnd/Rigidity/LengthMap.leancomplete
def RB31E2E.BarJoint.squaredLengthMap {V : Type} {d : ℕ} (G : SimpleGraph V) (p : RB31E2E.BarJoint.Placement V d) : V × V → ℝ
def RB31E2E.BarJoint.squaredLengthMap {V : Type} {d : ℕ} (G : SimpleGraph V) (p : RB31E2E.BarJoint.Placement V d) : V × V → ℝ
The squared edge-length map. Coordinates indexed by nonedges are zero.
-
defdefined in RB31EndToEnd/Rigidity/LengthMap.leancomplete
def RB31E2E.BarJoint.IsEquivalent {V : Type} {d : ℕ} (G : SimpleGraph V) (p q : RB31E2E.BarJoint.Placement V d) : Prop
def RB31E2E.BarJoint.IsEquivalent {V : Type} {d : ℕ} (G : SimpleGraph V) (p q : RB31E2E.BarJoint.Placement V d) : Prop
Two placements are equivalent if corresponding graph edges have the same Euclidean length.
-
defdefined in RB31EndToEnd/Rigidity/LengthMap.leancomplete
def RB31E2E.BarJoint.IsCongruent {V : Type} {d : ℕ} (p q : RB31E2E.BarJoint.Placement V d) : Prop
def RB31E2E.BarJoint.IsCongruent {V : Type} {d : ℕ} (p q : RB31E2E.BarJoint.Placement V d) : Prop
Two labelled placements are congruent if every pairwise Euclidean distance agrees.
-
defdefined in RB31EndToEnd/Rigidity/LengthMap.leancomplete
def RB31E2E.BarJoint.IsLocallyRigid {V : Type} {d : ℕ} (G : SimpleGraph V) (p : RB31E2E.BarJoint.Placement V d) : Prop
def RB31E2E.BarJoint.IsLocallyRigid {V : Type} {d : ℕ} (G : SimpleGraph V) (p : RB31E2E.BarJoint.Placement V d) : Prop
A framework is locally rigid when every sufficiently close equivalent placement is congruent to it.
Distances are Euclidean, and taking them costs a change of norm. The
coordinate space (\R^d)^V on which the rigidity operator is defined carries
the supremum norm, so a placement is moved to its L^2 counterpart by
toEuclideanPlacement before any
distance is measured. The two spaces are continuously linearly isomorphic and
hence homeomorphic, so each of the three notions above also has a native
Euclidean form — EuclideanIsEquivalent,
EuclideanIsCongruent and
EuclideanIsLocallyRigid — and
each of those is proved equivalent to the coordinate form it is written from.
/-- The squared edge-length map. Coordinates indexed by nonedges are zero. -/
noncomputable def squaredLengthMap {V : Type} {d : ℕ}
(G : SimpleGraph V) (p : Placement V d) : V × V → ℝ := V:Typed:ℕG:SimpleGraph Vp:Placement V d⊢ V × V → ℝ
classical
All goals completed! 🐙/-- Two placements are equivalent if corresponding graph edges have the same
Euclidean length. -/
def IsEquivalent {V : Type} {d : ℕ} (G : SimpleGraph V)
(p q : Placement V d) : Prop :=
∀ v w : V, G.Adj v w →
dist (toEuclideanPoint (p v)) (toEuclideanPoint (p w)) =
dist (toEuclideanPoint (q v)) (toEuclideanPoint (q w))/-- Two labelled placements are congruent if every pairwise Euclidean
distance agrees. -/
def IsCongruent {V : Type} {d : ℕ} (p q : Placement V d) : Prop :=
∀ v w : V,
dist (toEuclideanPoint (p v)) (toEuclideanPoint (p w)) =
dist (toEuclideanPoint (q v)) (toEuclideanPoint (q w))/-- A framework is locally rigid when every sufficiently close equivalent
placement is congruent to it. -/
def IsLocallyRigid {V : Type} {d : ℕ} (G : SimpleGraph V)
(p : Placement V d) : Prop :=
∀ᶠ q in nhds p, IsEquivalent G p q → IsCongruent p q
Local rigidity concerns a neighbourhood of p and nothing beyond it: a
distant equivalent placement may fail to be congruent to p, and no
statement below asserts otherwise. Since congruence is equality of all pairwise
distances, G is locally rigid at p exactly when the level set of its own
squared edge-length map through p is contained, near p, in the level set
of K's through p. By
hasStrictFDerivAt_squaredLengthMap
the derivative of the squared edge-length map at p is 2R_G(p), so map and
operator have the same kernel and the same rank at every placement, and the
rigidity matrix of (1.4) is the linearization of the edge-length constraints.
-
RB31E2E.BarJoint.IsRegularPlacement[complete] -
RB31E2E.BarJoint.IsGenericPlacement[complete] -
RB31E2E.BarJoint.dense_isRegularPlacement[complete] -
RB31E2E.BarJoint.exists_isGenericPlacement[complete]
A placement is regular for G when R_G attains the rank \rho_d(G)
there, and generic when it is regular for every simple graph on the same
vertex set at once. For each G the regular placements are open and dense in
(\R^d)^V; so are the generic placements, and in particular a generic
placement exists.
Lean code for Theorem1.3.2●4 declarations
Associated Lean declarations
-
RB31E2E.BarJoint.IsRegularPlacement[complete]
-
RB31E2E.BarJoint.IsGenericPlacement[complete]
-
RB31E2E.BarJoint.dense_isRegularPlacement[complete]
-
RB31E2E.BarJoint.exists_isGenericPlacement[complete]
-
RB31E2E.BarJoint.IsRegularPlacement[complete] -
RB31E2E.BarJoint.IsGenericPlacement[complete] -
RB31E2E.BarJoint.dense_isRegularPlacement[complete] -
RB31E2E.BarJoint.exists_isGenericPlacement[complete]
-
defdefined in RB31EndToEnd/Rigidity/RegularPlacement.leancomplete
def RB31E2E.BarJoint.IsRegularPlacement {V : Type} [Fintype V] {d : ℕ} (G : SimpleGraph V) (p : RB31E2E.BarJoint.Placement V d) : Prop
def RB31E2E.BarJoint.IsRegularPlacement {V : Type} [Fintype V] {d : ℕ} (G : SimpleGraph V) (p : RB31E2E.BarJoint.Placement V d) : Prop
A placement is regular for `G` when the rigidity operator has its maximum attained rank there.
-
defdefined in RB31EndToEnd/Rigidity/RegularPlacement.leancomplete
def RB31E2E.BarJoint.IsGenericPlacement {V : Type} [Fintype V] {d : ℕ} (p : RB31E2E.BarJoint.Placement V d) : Prop
def RB31E2E.BarJoint.IsGenericPlacement {V : Type} [Fintype V] {d : ℕ} (p : RB31E2E.BarJoint.Placement V d) : Prop
A placement is generic when it is regular for every simple graph on the same labelled vertex set.
-
theoremdefined in RB31EndToEnd/Rigidity/RegularPlacement.leancomplete
theorem RB31E2E.BarJoint.dense_isRegularPlacement {V : Type} [Fintype V] {d : ℕ} (G : SimpleGraph V) : Dense {p | RB31E2E.BarJoint.IsRegularPlacement G p}
theorem RB31E2E.BarJoint.dense_isRegularPlacement {V : Type} [Fintype V] {d : ℕ} (G : SimpleGraph V) : Dense {p | RB31E2E.BarJoint.IsRegularPlacement G p}
The regular placements of a fixed graph are dense.
-
theoremdefined in RB31EndToEnd/Rigidity/RegularPlacement.leancomplete
theorem RB31E2E.BarJoint.exists_isGenericPlacement {V : Type} [Fintype V] (d : ℕ) : ∃ p, RB31E2E.BarJoint.IsGenericPlacement p
theorem RB31E2E.BarJoint.exists_isGenericPlacement {V : Type} [Fintype V] (d : ℕ) : ∃ p, RB31E2E.BarJoint.IsGenericPlacement p
A finite labelled vertex set admits a placement regular for every simple graph on that set.
A lower bound k on the rank is an open condition, since it holds exactly
where some k \times k minor of R_G is nonzero and the entries of R_G
are polynomial in the placement. No placement gives a rank above
\rho_d(G), so the regular placements are exactly the placements satisfying
that bound for k = \rho_d(G), and they are open. For density, take any
placement p and a placement w of rank \rho_d(G), and restrict R_G
to the segment from p to w. A minor of size \rho_d(G) is then a polynomial in the segment
parameter whose value at w is nonzero, so it has finitely many roots and
cannot vanish throughout a subinterval; points of the segment arbitrarily close
to p are therefore regular. A finite vertex set admits only finitely many
simple graphs, so the generic placements are a finite intersection of open
dense sets, hence open and dense, and nonempty because the space of placements
is.
The necessity chapter's avoidance argument is the same interpolation along a segment, with the determinant of one body's core displacements in place of a minor of the rigidity operator.
Asimow and Roth prove this openness and density, and prove in addition that the complement is Lebesgue-null. The formalization does not prove the null complement, and the register has an entry for the difference. No step below needs it, since every use made of a regular placement here is a use of density.
Generic in the formalization means simultaneous regularity for every graph on the vertex set, and it is not algebraic independence of the coordinates; the two are nowhere identified. The open dense set in the statement below mentions no rank at all.
/-- A placement is regular for `G` when the rigidity operator has its maximum
attained rank there. -/
def IsRegularPlacement {V : Type} [Fintype V] {d : ℕ}
(G : SimpleGraph V) (p : Placement V d) : Prop :=
rigidityRank G p = genericRigidityRank G d/-- A placement is generic when it is regular for every simple graph on the
same labelled vertex set. -/
def IsGenericPlacement {V : Type} [Fintype V] {d : ℕ}
(p : Placement V d) : Prop :=
∀ G : SimpleGraph V, IsRegularPlacement G p-
RB31E2E.BarJoint.EuclideanIsGenericallyLocallyRigid[complete] -
RB31E2E.BarJoint.euclideanIsGenericallyLocallyRigid_iff_isGenericallyRigid[complete] -
RB31E2E.EndToEndGeometricBodyPinStatement[complete] -
RB31E2E.endToEndGeometricBodyPinStatement[complete] -
RB31E2E.bodyPin_isLocallyRigid_iff_partition_of_isGenericPlacement[complete]
A graph attains the complete graph's maximum rigidity rank if and only if it is locally rigid at every placement of some open dense set. For the expanded body–pin graph the partition condition is therefore equivalent to local rigidity on an open dense set of placements, and at a generic placement it is equivalent to local rigidity at that placement.
Lean code for Theorem1.3.3●5 declarations
Associated Lean declarations
-
RB31E2E.BarJoint.EuclideanIsGenericallyLocallyRigid[complete]
-
RB31E2E.BarJoint.euclideanIsGenericallyLocallyRigid_iff_isGenericallyRigid[complete]
-
RB31E2E.EndToEndGeometricBodyPinStatement[complete]
-
RB31E2E.endToEndGeometricBodyPinStatement[complete]
-
RB31E2E.bodyPin_isLocallyRigid_iff_partition_of_isGenericPlacement[complete]
-
RB31E2E.BarJoint.EuclideanIsGenericallyLocallyRigid[complete] -
RB31E2E.BarJoint.euclideanIsGenericallyLocallyRigid_iff_isGenericallyRigid[complete] -
RB31E2E.EndToEndGeometricBodyPinStatement[complete] -
RB31E2E.endToEndGeometricBodyPinStatement[complete] -
RB31E2E.bodyPin_isLocallyRigid_iff_partition_of_isGenericPlacement[complete]
-
defdefined in RB31EndToEnd/Rigidity/AsimowRoth.leancomplete
def RB31E2E.BarJoint.EuclideanIsGenericallyLocallyRigid {V : Type} (G : SimpleGraph V) (d : ℕ) : Prop
def RB31E2E.BarJoint.EuclideanIsGenericallyLocallyRigid {V : Type} (G : SimpleGraph V) (d : ℕ) : Prop
The open-dense geometric property using native Euclidean placements.
-
theoremdefined in RB31EndToEnd/Rigidity/AsimowRoth.leancomplete
theorem RB31E2E.BarJoint.euclideanIsGenericallyLocallyRigid_iff_isGenericallyRigid {V : Type} [Fintype V] (G : SimpleGraph V) (d : ℕ) : RB31E2E.BarJoint.EuclideanIsGenericallyLocallyRigid G d ↔ RB31E2E.BarJoint.IsGenericallyRigidInDimension G d
theorem RB31E2E.BarJoint.euclideanIsGenericallyLocallyRigid_iff_isGenericallyRigid {V : Type} [Fintype V] (G : SimpleGraph V) (d : ℕ) : RB31E2E.BarJoint.EuclideanIsGenericallyLocallyRigid G d ↔ RB31E2E.BarJoint.IsGenericallyRigidInDimension G d
Native Euclidean generic local rigidity is equivalent to maximum rank.
-
defdefined in RB31Geometric.leancomplete
def RB31E2E.EndToEndGeometricBodyPinStatement : Prop
def RB31E2E.EndToEndGeometricBodyPinStatement : Prop
The partition criterion is equivalent to local Euclidean rigidity on an open dense set of placements of the expanded body--pin graph.
-
theoremdefined in RB31Geometric.leancomplete
theorem RB31E2E.endToEndGeometricBodyPinStatement : RB31E2E.EndToEndGeometricBodyPinStatement
theorem RB31E2E.endToEndGeometricBodyPinStatement : RB31E2E.EndToEndGeometricBodyPinStatement
The unconditional body--pin theorem in geometric local-rigidity form.
-
theoremdefined in RB31Geometric.leancomplete
theorem RB31E2E.bodyPin_isLocallyRigid_iff_partition_of_isGenericPlacement (H : RB31E2E.BodyPinIncidence) (extra : H.Body → ℕ) (p : RB31E2E.BarJoint.Placement (H.BPVertex extra) 3) (hp : RB31E2E.BarJoint.IsGenericPlacement p) : RB31E2E.BarJoint.IsLocallyRigid (H.bodyPinGraph extra) p ↔ H.PartitionCondition
theorem RB31E2E.bodyPin_isLocallyRigid_iff_partition_of_isGenericPlacement (H : RB31E2E.BodyPinIncidence) (extra : H.Body → ℕ) (p : RB31E2E.BarJoint.Placement (H.BPVertex extra) 3) (hp : RB31E2E.BarJoint.IsGenericPlacement p) : RB31E2E.BarJoint.IsLocallyRigid (H.bodyPinGraph extra) p ↔ H.PartitionCondition
At every simultaneously regular real placement of the expanded graph, ordinary local Euclidean rigidity is equivalent to the partition criterion.
Suppose R_G has rank \rho_d(K) at p, and let q be equivalent to
p, with midpoint m. For every pair vw, the squared distance at q
less the squared distance at p is twice the value of R_G(m)(q - p) at
vw, so equality on the edges of G puts q - p in \ker R_G(m). The
midpoint tends to p as q does and a rank bound is an open condition, so
for q near enough to p the rank of R_G at m is again
\rho_d(K); no rank exceeds \rho_d(K) and G \subseteq K, so R_G
and R_K have equal rank at m and hence equal kernel there. Reading the
same identity at every pair now gives p and q equal pairwise
distances. This is
isLocallyRigid_of_rigidityRank_eq_complete_genericRank,
and the regular locus of G serves as the open dense set.
Conversely, let p be regular for G and locally rigid. Near p a
placement with the edge lengths of p has all the pairwise distances of
p, so the squared edge-length map of K is constant on the local level set
of the squared edge-length map of G. At a maximum-rank point of a C^1
map, the implicit function theorem gives a slice of the level set through that
point whose tangent directions at it are the whole kernel of the derivative, so
a second C^1 map constant on the level set annihilates that kernel; this is
ker_fderiv_le_of_eventually_level_imp,
and with the two squared edge-length maps it gives
\ker R_G(p) \subseteq \ker R_K(p). The reverse inclusion holds because
G \subseteq K, so the kernels and then the ranks agree at p, and if p
is regular for K as well this reads \rho_d(G) = \rho_d(K). An open dense
set of locally rigid placements meets the dense set of generic placements, and
a generic placement is regular for both graphs.
Two things separate this from the theorem above, and the register records both. Where Asimow and Roth state a rank formula in the dimension of the affine hull, the formalization compares with the complete graph on the same vertices, which agrees with the formula on frameworks large enough for it and stays correct on the small ones where it fails; the empty vertex set and dimension zero are included in the statement. And where the paper says generic, the formal statement says on an open dense set; whether those name the same class of placements is a reading question, and the reason this node is a deviation rather than a mapping.
Regularity of K is a hypothesis of the pointwise comparison and not a
convenience. Two unit bars forming a straight three-vertex path in \R^3 are
the standing example. At that collinear placement the path and K_3 both have
rank 2, and yet one bar rotates about the middle vertex, so the path is not
locally rigid there; K_3 attains its maximum rank 3 only off the line, so
the placement is not regular for it. The equivalence above compares with the
maximum rank of K rather than with its rank at p, and the pointwise
form
isLocallyRigid_iff_of_isGenericPlacement
asks for a generic placement, which is regular for both graphs at once.
/-- The open-dense geometric property using native Euclidean placements. -/
def EuclideanIsGenericallyLocallyRigid (G : SimpleGraph V) (d : ℕ) : Prop :=
∃ U : Set (V → EuclideanSpace ℝ (Fin d)), IsOpen U ∧ Dense U ∧
∀ p ∈ U, EuclideanIsLocallyRigid G p/-- The partition criterion is equivalent to local Euclidean rigidity on an
open dense set of placements of the expanded body--pin graph. -/
def EndToEndGeometricBodyPinStatement : Prop :=
∀ (H : BodyPinIncidence) (extra : H.Body → ℕ),
BarJoint.EuclideanIsGenericallyLocallyRigid (H.bodyPinGraph extra) 3 ↔ H.PartitionCondition