Individualised vertices stay where they were put #
Refinement rearranges vertices inside cells and never across them. A vertex that has been
individualised sits alone in a cell, so from that moment on it never moves again: this file
follows a singleton cell through splitCell, splitCellsFrom, refineStep, refineLoop,
refine, individualize and child, exactly as Progress.lean follows cell starts.
The payoff is Node.pin. Write pinPos n f (path.take j) for the start of the target cell of
the depth-j ancestor of a node — a position that depends on the first j individualised
vertices but not on the j-th. Then at every descendant, position pinPos n f (path.take j)
holds the vertex individualised at depth j. So two leaves whose paths agree up to depth j
park their depth-j choices at the same position, which is what makes the permutation relating
two equal-certificate leaves visibly map one branch onto the other.
Along the way nodePath makes a node an honest function of its path (Node.det).
Position c is a singleton cell of p, and the vertex sitting there is v.
The position is in range.
The cell starts here.
…and ends immediately after.
The vertex parked here.
Instances For
Individualisation pins the vertex it splits off #
Individualising v pins it at the start of its cell, for good. Refinement never moves a
vertex out of its cell, and {v} is a cell, so every descendant of this child has v sitting at
position cst[pos[v]].
A node is a function of its path #
The node reached by individualising path, in order, from the root. Node is the graph of
this function (Node.nodePath_eq); having it as an actual function is what lets two branches of
the search that share a path prefix be identified.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every individualised vertex is pinned at a position fixed by the path prefix #
The position at which the depth-j individualisation is parked: the start of the target cell
of the depth-j ancestor. It depends only on the first j entries of the path.
Equations
- IsoGraph.Canon.pinPos n f path = ((IsoGraph.Canon.nodePath n f path).2.targetCell n).getD 0
Instances For
Individualised vertices stay put. At any node, the vertex individualised at depth j sits
at position pinPos n f (path.take j) — a position determined by the path prefix, not by the
vertex. This is what makes two leaves comparable position by position.