Chain-product decomposition for the Proposition 5.9 collapse #
This file proves the list-level core of paper (5.43). An expanded word is split into nonempty tagged segments: a singleton for every outside letter and one inside block for every marker. Its chain product factors exactly into internal segment products and boundary products. Only boundaries incident to a marker may change under collapse.
Generic nonempty-segment calculus #
First letter of a nonempty segment.
Instances For
Final letter of a nonempty segment.
Instances For
Chain product across the boundary between two nonempty segments.
Equations
- Anderson4D.segmentBoundaryEdge edge p q = edge p.last q.first
Instances For
Flatten the letters of a list of nonempty segments.
Equations
- Anderson4D.flattenSegments segments = (List.map Anderson4D.ChainSegment.letters segments).flatten
Instances For
Product of the chain products internal to each segment.
Equations
- Anderson4D.internalSegmentProduct edge segments = (List.map (fun (s : Anderson4D.ChainSegment X Y) => Anderson4D.listChainProduct edge s.letters) segments).prod
Instances For
Exact factorization of a flattened segmented chain into all internal segment chains and the chain of segment-boundary edges.
Nonnegativity of a real-valued list chain product.
Pointwise comparison on adjacent pairs compares the two chain products.
Marker-boundary ledger #
Natural indicator that a collapsed letter is the marker.
Equations
- Anderson4D.markerIndicator (Sum.inl val) = 1
- Anderson4D.markerIndicator (Sum.inr val) = 0
Instances For
Number of changed boundaries in a collapsed word.
Equations
- Anderson4D.markerBoundaryCount [] = 0
- Anderson4D.markerBoundaryCount [head] = 0
- Anderson4D.markerBoundaryCount (x_1 :: y :: rest) = Anderson4D.markerBoundaryIndicator x_1 y + Anderson4D.markerBoundaryCount (y :: rest)
Instances For
A path has at most two marker-incident boundaries per marker. The
endpoint-inclusive convention used here gives the bound 2(s+1).
Replacing every marker-incident edge factor by twice its collapsed
counterpart extracts exactly one factor 2 per changed boundary.
Generic boundary comparison for tagged segments.
Segmented-chain estimate with the corrected 4^(number of markers)
loss.
Segments canonically attached to raw collapse data #
Turn expand bs collapsed into nonempty tagged segments. A marker with
no remaining block is silently dropped, matching expand; raw collapse data
exclude that degeneration by their marker-count invariant.
Equations
- One or more equations did not get rendered due to their size.
- Anderson4D.collapseSegmentsAux x [] x_1 = []
- Anderson4D.collapseSegmentsAux x (Sum.inr b :: collapsed) x_1 = { tag := Sum.inr b, letters := [Sum.inr b], nonempty := ⋯ } :: Anderson4D.collapseSegmentsAux x collapsed x_1
- Anderson4D.collapseSegmentsAux [] (Sum.inl val :: collapsed) x_3 = Anderson4D.collapseSegmentsAux [] collapsed ⋯
Instances For
With exact marker bookkeeping, segment tags recover the collapsed word.
Internal segment factors are exactly the products internal to the inside blocks; outside singleton segments contribute one.
Canonical nonempty segments of raw collapse data.
Equations
Instances For
Product of the chain weights internal to all inside blocks.
Equations
- Anderson4D.RawCollapseData.insideBlockChainProduct edge d = (List.map (fun (block : List A) => Anderson4D.listChainProduct edge (List.map Sum.inl block)) d.blocks).prod
Instances For
Raw-coordinate form of (5.43), with the local changed-boundary
comparison exposed as an IsChain hypothesis.
Paper's coarser 4^n form, where n is the total inside length.