The labeled-fiber language, the generic row assembly, and its prefix specialization #
A row assembly glues a family of component structures into one structure: a set of rows,
and for every row r and every label τ a fiber C r τ carrying a component structure. The
generic assembly is parameterized by an arbitrary row type R and fiber family
C : R → Label U → Type, so that different row types (finite allowed words now, infinite
allowed paths later) and different fiber families can be compared by the assembly theorems.
The prefix specialization instantiates it with rows the allowed words and fibers chosen by
the prefix rule.
Labels and the language #
Labels are all nonempty words over a linear order U, admissible or not (Label U), so the
signature does not depend on any allowed-word membership. The language lang U Lc is
relational, with equality and the symbols of Sym U Lc:
row, arity 1: the element is a row.own, arity 2:own(x, r)saysxis a fiber point whose owner row isr.lab τ, arity 1: the element is a fiber point with labelτ.lift R, arityl + 1, for a component symbolR : Lc.Relations (l + 1): all arguments lie in one fiber (same owner row, same label) andRholds there of their component elements. Mixed-fiber tuples and row arguments are false.lift0 R τ, arity 1, for a component symbolR : Lc.Relations 0:lift0 R τ (r)saysris a row andRholds in the fiber ofrat labelτ. This lift is owner-indexed: the nullary fact is read at the owner, so it is visible even when that fiber has no points.
Component-language boundary. The assembly encodes the relation symbols of Lc only;
component function symbols are not encoded, so two component structures with the same
relational data but different function interpretations assemble identically. For that reason
the restriction theorem that recovers component isomorphisms from an assembled isomorphism
requires [Lc.IsRelational]; the definitions here do not, and no unused hypothesis is imposed.
The generic assembly #
Carrier R C is the disjoint union of the rows and of all fiber points (Carrier.row,
Carrier.pt). instStructure interprets every symbol as listed above (relMap), with one
interpretation equation per symbol.
The prefix specialization #
- A row is an allowed word: a nondecreasing list
poverUwithp[i] ∈ A ifor the allowed setsA : ℕ → Set U(IsAllowed,Row A); the empty word is a row. - The fiber of
patτis the componentB (last τ)ifτis a prefix ofp, and the default componentB_*otherwise (compIndex,Comp,prefixFiber).compIndexis computable, so on concrete inputs the fiber type reduces definitionally; this is a convenience for regressions and claims nothing about an effective presentation of the whole assembly. PrefixCarrier B_* B A := Carrier (Row A) (prefixFiber B_* B A).
The construction uses allowed-word membership, order comparisons, prefixes, and the component
family. No well-founded initial segment W appears anywhere. The input order on rows and
its successor relation are not symbols of lang.
The symbol set is countable when U and the component symbols are (instCountableSigmaSym).
Labels #
The language #
The relation symbols of the assembled language.
- row {U : Type u} {Lc : Language} : Sym U Lc 1
- own {U : Type u} {Lc : Language} : Sym U Lc 2
- lab {U : Type u} {Lc : Language} (τ : Label U) : Sym U Lc 1
- lift {U : Type u} {Lc : Language} {l : ℕ} (R : Lc.Relations (l + 1)) : Sym U Lc (l + 1)
- lift0 {U : Type u} {Lc : Language} (R : Lc.Relations 0) (τ : Label U) : Sym U Lc 1
Instances For
The assembled language: relational, with the symbols of Sym.
Equations
- FirstOrder.Language.FiberAssembly.lang U Lc = { Functions := fun (x : ℕ) => PEmpty.{?u.3 + 1}, Relations := FirstOrder.Language.FiberAssembly.Sym U Lc }
Instances For
The generic assembly #
The assembled carrier over a row type R and a fiber family C: rows, and the points of
every fiber.
- row {U R : Type u} {C : R → Label U → Type u} (r : R) : Carrier R C
- pt {U R : Type u} {C : R → Label U → Type u} (r : R) (τ : Label U) (x : C r τ) : Carrier R C
Instances For
Interpretation of each symbol, by cases on the symbol.
Equations
- One or more equations did not get rendered due to their size.
- FirstOrder.Language.FiberAssembly.relMap FirstOrder.Language.FiberAssembly.Sym.row v = ∃ (r : R), v 0 = FirstOrder.Language.FiberAssembly.Carrier.row r
- FirstOrder.Language.FiberAssembly.relMap (FirstOrder.Language.FiberAssembly.Sym.lab τ) v = ∃ (r : R) (x : C r τ), v 0 = FirstOrder.Language.FiberAssembly.Carrier.pt r τ x
Instances For
Interpretation equations, one per symbol #
Lifted relations never hold of a row argument.
Mixed-fiber tuples are false: a lifted relation holds only of arguments from one fiber, the same owner row and the same label.
The lift of a nullary symbol is read at the owner row; it does not require the fiber to have any point.
The prefix specialization #
An allowed word: nondecreasing, with the i-th letter in A i.
Equations
Instances For
The rows of the prefix specialization: allowed words, the empty word included.
Equations
Instances For
Which component sits at (p, τ): some (last τ) if τ is a prefix of p, else none
(the default component). Computable, so it reduces on concrete inputs.
Instances For
The component at an index: B_* at none, B u at some u.
Equations
- FirstOrder.Language.FiberAssembly.Comp Bstar B none = Bstar
- FirstOrder.Language.FiberAssembly.Comp Bstar B (some u) = B u
Instances For
The prefix fiber family: the component of last τ when τ is a prefix of the row, the
default component otherwise.
Equations
- FirstOrder.Language.FiberAssembly.prefixFiber Bstar B A p τ = FirstOrder.Language.FiberAssembly.Comp Bstar B (FirstOrder.Language.FiberAssembly.compIndex (↑p) τ)
Instances For
Equations
- FirstOrder.Language.FiberAssembly.instPrefixFiberStructure Lc Bstar B A p τ = FirstOrder.Language.FiberAssembly.instCompStructure Lc Bstar B (FirstOrder.Language.FiberAssembly.compIndex (↑p) τ)
The carrier of the prefix specialization.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Countability of the carrier #
The rows of the prefix specialization are countable when U is.