The data the interface recursion carries #
RS21 composes two fragments in one step; the flag model glues the
interface one pair at a time, so the ledger (14) is proved by a
recursion over glueInterface. What the recursion carries is a
subset of the current fragment, a transition system on it, and the
record that the subset uses the two halves of every remaining
interface pair together — the condition that makes the interface
matching exist and that a glue preserves.
This file names that data and the step that advances it.
The lexicographic order on the recursion's label type, as the
ambient instance. It has to outrank the sum's own ≤, which
otherwise wins on a sum type and does not agree with it.
Equations
- RS.EdgeSubset.stageOrder n = RS.sumLexLinearOrder (Fin (0 + n)) (Fin (n + 0))
Instances For
The same order one stage up, where the index shape differs.
Equations
- RS.EdgeSubset.stageOrderSucc n = RS.sumLexLinearOrder (Fin (0 + n + 1)) (Fin (n + 1 + 0))
Instances For
The relabel the recursion performs after a glue. The order has
to be pinned: on a sum type the ambient ≤ is the sum's own, which
is not the lexicographic one the interface uses.
Equations
Instances For
The swap on the labels surviving the glue: the next stage's swap, read back through the relabel.
Equations
- RS.EdgeSubset.stepSwap n x = (RS.interfaceStepEquiv 0 n 0).symm (RS.EdgeSubset.interfaceSwap (RS.EdgeSubset.stepIdent n) ((RS.interfaceStepEquiv 0 n 0) x))
Instances For
The interface swap exchanges the pair the recursion glues.
The data one stage of the recursion carries.
- sub : EdgeSubset V
The subset of the current fragment.
- paired : self.sub.SwapPaired (interfaceSwap (stepIdent n))
It uses the two halves of every remaining interface pair together.
- rel : self.sub.RelTransitionSystem
A transition system on it.
Instances For
One step #
Gluing the top interface pair takes the subset to its drop, the system to its glue, and the pairing record along with them; the relabel that follows carries all three. The subset's own pairing record is what makes the step total: it is exactly the condition under which the drop is closed under the glued pairing.
The two branches are built over the fragment each glue actually
produces, and the dispatch Fragment.gluePair performs is undone
once, on the finished data.
The flags the glue passes down: the subset's, less the two glued ones.
Equations
- RS.EdgeSubset.stepFlags n V D = V.dropSubset (RS.EdgeSubset.cutL n) (RS.EdgeSubset.cutR n) D.sub.flags
Instances For
Whether the subset carries the closed cut's own edge.
Equations
- RS.EdgeSubset.stepBit n V D = decide (V.boundaryFlag (RS.EdgeSubset.cutL n) ∈ D.sub.flags)
Instances For
On a closed cut the passed-down flags are edge-closed in the glued fragment.
The lifted flags are edge-closed in the unglued fragment.
The stage's subset is the lift of what the closed glue passes down: nothing is lost across the step.
The glued subset at a closed cut.
Equations
- RS.EdgeSubset.stepSubClosed n V D hcl = { flags := RS.EdgeSubset.stepFlags n V D, pairing_mem := ⋯ }
Instances For
One step at a closed cut.
Equations
- One or more equations did not get rendered due to their size.
Instances For
On an open cut the passed-down flags are edge-closed in the glued fragment.
The lifted flags are edge-closed in the unglued fragment.
The glued subset at an open cut.
Equations
- RS.EdgeSubset.stepSubOpen n V D hop = { flags := RS.EdgeSubset.stepFlags n V D, pairing_mem := ⋯ }
Instances For
One step at an open cut.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The recursion #
Iterating the step over the whole interface carries the data to the composed fragment, and the accumulator records the cuts at which a component of the union disappears: the closed ones whose edge the subset carries.
The relabel that closes the recursion at the empty interface.
Equations
Instances For
The data carried to the composed fragment.
Equations
- RS.EdgeSubset.glueData 0 x_3 D = { sub := RS.EdgeSubset.relabelUp RS.EdgeSubset.endEquiv D.sub, paired := ⋯, rel := RS.relabelTransUp RS.EdgeSubset.endEquiv D.sub D.rel }
- RS.EdgeSubset.glueData n.succ V D = RS.EdgeSubset.glueData n ((V.gluePair (Sum.inl ⟨0 + n, ⋯⟩) (Sum.inr ⟨n, ⋯⟩) ⋯).relabel (RS.interfaceStepEquiv 0 n 0)) (RS.EdgeSubset.stepData n V D)
Instances For
The cuts at which a component disappears: the closed ones whose edge the subset carries.
Equations
- One or more equations did not get rendered due to their size.
- RS.EdgeSubset.glueCount 0 x_3 D = 0
Instances For
The ledger the recursion transports #
RS21's (14) compares the composed system's circuit count with the two fragments' counts and the number of components of the union. In the recursion that quantity is read at every stage, of the current fragment's own system and the interface matching still to be glued.
The ledger at one stage: the circuit count plus the number of components of the union with the interface matching.
Equations
- F.ledgerOf hp κ = κ.openCircuitCount + (RS.cutMatching F κ (RS.relBuildOrientation κ)).unionCount (F.interfaceCut (RS.EdgeSubset.stepIdent n) ⋯)
Instances For
The ledger does not see which of two equal subsets it is stated at.
One stage of the ledger #
Each branch of the step is discharged by the stage theorem for its kind of cut, at the interface matching and any orientation — the ledger reads neither the orientation nor which proof of the pairing record is supplied.
The closed-cut step of the ledger: gluing a closed pair the subset carries closes one more circuit, so the ledger drops by the step bit.
The open-cut step of the ledger: gluing an open pair closes nothing, so the ledger is unchanged.
RS21's (14) #
The ledger is transported by the whole recursion: the composed system's circuit count, plus one for each closed cut whose edge the subset carries, is the starting system's circuit count plus the number of components of the union with the interface matching.
At the empty interface the ledger is the circuit count: there are no used labels, hence no components to count.
RS21's (14). The composed system's circuit count, plus one for each closed cut whose edge the subset carries, is the starting system's circuit count plus the number of components of its union with the interface matching.
The circles the composition creates #
A closed cut turns its edge into a free circle, and the partition
function weights each by k - 2ℓ. RS21's graph model has no room
for a vertex-free circle, so this is bookkeeping the flag model has
to carry on its own; it depends only on the fragment, not on the
subset.
The ledger at the start of the recursion #
The recursion starts at the disjoint union of the two fragments, and there the ledger splits into RS21's own terms: the two circuit counts and the number of components of the union of the two chord matchings, read on one copy of the label set.
The ledger at a disjoint union.
The interface identification at size n, as an order
isomorphism.
Equations
Instances For
RS21's (14), as the sign identity it is used as. The two fragments' matching signs and circuit signs multiply to the composed system's circuit sign, together with the sign of the cuts at which a component disappears.