Tag-branched element loops: the expansion atoms and the domain gates #
An expansion atom's defining sentence – and a block's domain sentence –
depends on the tags of its argument points. The
machine reads them first: one named-bit read per argument position and
candidate tag, at the canonical tag-witness cell, the verdicts stored
one-hot in the control. A branch checkpoint then dispatches on the decoded
tag tuple – one dispatch rule per tuple, their guards made exclusive by the
decoding – into that tuple's own element loop
(DescriptiveComplexity.Problems.Wide.DrawElem), which evaluates the
sentence's prefix with one leaf read per block atom of its matrix.
The expansion atoms instantiate this at their arity, the domain gates at one argument. As everywhere, the shapes and separation are fixed here; the decodings and folds are parameters.
The shapes #
The rules of a branch checkpoint: the walk back, and one dispatch per tag tuple.
- stay
{T : Type}
: BrRule T
Walk left back to the marker.
- dsp
{T : Type}
: T → BrRule T
Dispatch into the tuple's loop.
Instances For
Dependency graph
The phases of a tag-branched machinery: the witness reads, the branch checkpoint, and one element loop per tag tuple.
- tagRdP
{m : ℕ}
{T : Type}
{nrOf : T → ℕ}
: Fin m → ReadPh → TagPh m T nrOf
The
i-th witness read. - brP
{m : ℕ}
{T : Type}
{nrOf : T → ℕ}
: TagPh m T nrOf
The branch checkpoint.
- loopP
{m : ℕ}
{T : Type}
{nrOf : T → ℕ}
(τ : T)
: ElemPh (nrOf τ) → TagPh m T nrOf
A phase of the tuple's element loop.
Instances For
Dependency graph
The sites of a tag-branched machinery.
- tagRd
{m : ℕ}
{T : Type}
{nrOf : T → ℕ}
: Fin m → TagSite m T nrOf
A witness read.
- br
{m : ℕ}
{T : Type}
{nrOf : T → ℕ}
: TagSite m T nrOf
The branch checkpoint.
- loop
{m : ℕ}
{T : Type}
{nrOf : T → ℕ}
(τ : T)
: ElemSite (nrOf τ) → TagSite m T nrOf
A site of the tuple's element loop.
Instances For
Dependency graph
The rule shape of each site.
Equations
- DescriptiveComplexity.Draw.TagSh m T nrOf (DescriptiveComplexity.Draw.TagSite.tagRd a) = (DescriptiveComplexity.Draw.ReadRule ⊕ Bool)
- DescriptiveComplexity.Draw.TagSh m T nrOf DescriptiveComplexity.Draw.TagSite.br = DescriptiveComplexity.Draw.BrRule T
- DescriptiveComplexity.Draw.TagSh m T nrOf (DescriptiveComplexity.Draw.TagSite.loop τ s) = DescriptiveComplexity.Draw.ElemSh (nrOf τ) s
Instances For
Dependency graph
The owner of each phase of a tag-branched machinery.
Equations
- DescriptiveComplexity.Draw.tagOwn (DescriptiveComplexity.Draw.TagPh.tagRdP i a) = DescriptiveComplexity.Draw.TagSite.tagRd i
- DescriptiveComplexity.Draw.tagOwn DescriptiveComplexity.Draw.TagPh.brP = DescriptiveComplexity.Draw.TagSite.br
- DescriptiveComplexity.Draw.tagOwn (DescriptiveComplexity.Draw.TagPh.loopP τ p) = DescriptiveComplexity.Draw.TagSite.loop τ (DescriptiveComplexity.Draw.elemOwn p)
Instances For
Dependency graph
The first witness read's entry, or the branch checkpoint when there is none.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The phase after the i-th witness read.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The rules of a tag-branched machinery.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A tag-branched machinery leaves only into its own phases or its exit: the witness reads' trips stay inside it, the branch lands in the decoded tag's loop, and only the loop's last dispatch leaves.
Dependency graph
A property of the machinery's phases and its exit holds of every phase it can move to.
Dependency graph
Every rule of a tag-branched machinery fires from a phase its site owns; the loops' obligation is the element loop's.
Dependency graph
A tag-branched machinery separates in-shape: the reads by their kit, the branch's dispatches by the exclusive decoding, the loops by their own separation.