Documentation

DescriptiveComplexity.Problems.Wide.ShFinite

The rule names of the EXPSPACE program are finitely many #

DescriptiveComplexity.Problems.Wide.DrawTower gives every site type of the program's tower a Finite instance, and every leaf kit's rule type has one where it is defined; what was missing is the tower's shapes – the rules each site contributes – and hence the rule names themselves, which the run layer asks for as the hypothesis Finite (dt.RIx …) and which an interpretation needs of its tag type.

There is no mathematics here: a shape is a match on a site whose leaves are a kit's rules, a sum of them with a verdict, or the shape one level down, so each instance is one line per constructor. They are stated at the abstract machineries first (ChainSh, SeqSh, ElemSh, StageSh, TagSh, RoundSh, VarSh, EvalSh, OuterSh), then read up the concrete tower to DescriptiveComplexity.Draw.Data.SFSh, and the file ends at DescriptiveComplexity.Draw.Data.finite_RIx.

The branch rules of a tag dispatch #

Dependency graph

The shapes of the abstract machineries #

Dependency graph
instance DescriptiveComplexity.Draw.instFiniteChainSh {n : } {SS : Type} {ShS : SSType} [∀ (s : SS), Finite (ShS s)] (c : ChainSite n SS) :
Finite (ChainSh n SS ShS c)
Dependency graph
Dependency graph
Dependency graph
instance DescriptiveComplexity.Draw.instFiniteTagSh {m : } {T : Type} [Finite T] {nrOf : T} (c : TagSite m T nrOf) :
Finite (TagSh m T nrOf c)
Dependency graph
instance DescriptiveComplexity.Draw.instFiniteSeqSh {n : } {SA : Fin nType} {ShA : (a : Fin n) → SA aType} [∀ (a : Fin n) (s : SA a), Finite (ShA a s)] (c : SeqSite n SA) :
Finite (SeqSh n ShA c)
Dependency graph
instance DescriptiveComplexity.Draw.instFiniteRoundSh {SG SX : Type} {ShG : SGType} {ShX : SXType} [∀ (s : SG), Finite (ShG s)] [∀ (s : SX), Finite (ShX s)] (c : RoundSite SG SX) :
Finite (RoundSh SG SX ShG ShX c)
Dependency graph
instance DescriptiveComplexity.Draw.instFiniteVarSh {SG SX B : Type} {ShG : SGType} {ShX : SXType} [∀ (s : SG), Finite (ShG s)] [∀ (s : SX), Finite (ShX s)] [Finite B] (c : VarSite SG SX) :
Finite (VarSh SG SX ShG ShX B c)
Dependency graph
instance DescriptiveComplexity.Draw.instFiniteEvalSh {nv : } {SM : Type} {ShM : SMType} [∀ (s : SM), Finite (ShM s)] (c : EvalSite nv SM) :
Finite (EvalSh nv SM ShM c)
Dependency graph
instance DescriptiveComplexity.Draw.instFiniteOuterSh {SE : Type} {ShE : SEType} [∀ (s : SE), Finite (ShE s)] (c : OuterSite SE) :
Finite (OuterSh SE ShE c)
Dependency graph

And of the concrete tower #

instance DescriptiveComplexity.Draw.Data.instFiniteKindSh {L : FirstOrder.Language} (dt : Data L) {n : } (κ : MatAtom dt.X dt.d.B n) (s : dt.KindSite κ) :
Finite (dt.KindSh κ s)
Dependency graph
instance DescriptiveComplexity.Draw.Data.instFiniteAtomSh {L : FirstOrder.Language} (dt : Data L) (v : dt.VarIx) (a : Fin (dt.natOf v)) (s : dt.AtomSite v a) :
Finite (dt.AtomSh v a s)
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
instance DescriptiveComplexity.Draw.Data.instFiniteNexEvalSh {nv : } {SM : Type} {ShM : SMType} [∀ (s : SM), Finite (ShM s)] (s : EvalSite nv SM) :
Finite (NexEvalSh nv SM ShM s)

The rule shapes of the clocked evaluation are finite too: two rules at a checkpoint, the shared tower's at a machinery site.

Dependency graph
Dependency graph

The rule names #

instance DescriptiveComplexity.Draw.Data.finite_RIx {L : FirstOrder.Language} (dt : Data L) {A Q : Type} [Fintype Q] [Fintype dt.SlotIx] [LinearOrder A] {zero one : A} (hzo : zero one) (args : (v : dt.VarIx) → dt.VarArgs v) :
Finite (dt.RIx zero one hzo args)

The rule names of the program are finitely many: a site and one of its rules, both of finitely many. This is the hypothesis the run layer carries and the finiteness an interpretation needs of its tag type.

Dependency graph