Documentation

DescriptiveComplexity.Problems.CodeHalt.Hardness.Tags

The elements of the CODEHALT instance an instance is drawn as #

The tags of the reduction P ≤ᶠᵒ[≤] CODEHALT, and the positions of the one abstract code it mentions.

The abstract code is drawn one tag per node #

The reduction composes a fixed code cP – the semi-decision procedure of the source problem, which Mathlib's Nat.Partrec.Code.exists_code supplies rather than has to be built – with the value the instance is written as. The subtree of cP has no reason to be indexed by the input structure, so it is drawn with one tag per node: DescriptiveComplexity.SubPos cP, the positions of a code's syntax tree, defined by recursion on the code so that a position's subterm (DescriptiveComplexity.subAt) and children (DescriptiveComplexity.sub1, DescriptiveComplexity.sub2) are read off definitionally. Tags cost nothing at any instance size, which is what makes this compatible with hardness being cofinal in the reduction order.

The rest of the tags #

tagcoordinatesdraws
rootcomp cP (pair numeral nest)
cp pthe node p of cP
pairNthe pair of the numeral and the nest
numN(x, ⊥, …)the comp succ … chain of the numeral, from x on
symN ithe nest of the blocks of the symbols, from i on
chainN i l(x₀, …, x_l, ⊥, …)the level-l chain of the block of i, from x_l on
oneNsucc: the value 1
zeroNzero: the value 0, and every empty tail

Two of them are shared: oneN and zeroN are single elements, pointed at by every chain that ends and by every bit of the table. A drawing is a relation on the elements, so an element may have several parents – and sharing is what keeps the bit of a tuple an edge of the drawing rather than a conditional mark, so that every tag has one constructor (DescriptiveComplexity.ProgTag.mark) and exclusivity of the marks is immediate.

The positions of a code's syntax tree #

Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph

The position of the first child of a position, if it has one.

Equations
Instances For
    Dependency graph

    The position of the second child of a position, if it has one.

    Equations
    Instances For
      Dependency graph
      Dependency graph

      The tags #

      The tags of the reduction into CODEHALT.

      Instances For
        Dependency graph
        Dependency graph
        Dependency graph
        Dependency graph
        Dependency graph
        @[instance_reducible]
        Equations
        Dependency graph
        Dependency graph
        Dependency graph