Documentation

DescriptiveComplexity.Problems.Wide.DrawDefKind

What a parameter pack owes, and one atom kind's machinery #

The machineries above the combinators take their parameters in a pack (DescriptiveComplexity.Draw.StageArgs, TagArgs, ElemArgs), so what they owe the interpretation is stated pack by pack. A pack's fields split in two: the static ones – which slot a trip walks, which block it names, where the coordinate loop lives – must not depend on the instance at all (DescriptiveComplexity.Draw.UConst), since they are what the emitted formula is built from; the dynamic ones are guards and control updates, and owe the usual three obligations.

With the three pack statements, an atom kind's machinery (DescriptiveComplexity.Draw.Data.kindRule) is definable one constructor at a time: the stage atom's by DescriptiveComplexity.Draw.Data.uRulesDefinable_stageRule, an expansion atom's by the tag-branched statement, an equality's and an order atom's by the element loop's.

A field that does not depend on the instance: what a static parameter of a pack owes, the emitted formula being built from it.

Equations
Instances For
    Dependency graph

    An element loop's pack #

    structure DescriptiveComplexity.Draw.UElemArgsDef {L : FirstOrder.Language} {Q W : Type} [Fintype Q] [Fintype W] {nr : } (args : (e : Env L) → ElemArgs e.α Q W nr) :

    What an element loop's pack owes.

    Instances For
      Dependency graph
      theorem DescriptiveComplexity.Draw.uRulesDefinable_elemArgs {L : FirstOrder.Language} {Q W P : Type} [Fintype Q] [Fintype W] {nr : } {wk rg : W} {emb : ElemPh nrP} {exitPh : P} {args : (e : Env L) → ElemArgs e.α Q W nr} (h : UElemArgsDef args) :
      URulesDefinable fun (e : Env L) => elemRule e.one wk rg emb (args e).rdTrack (args e).MatchOf (args e).setFlag (args e).initEl (args e).advEl (args e).exitSt (args e).IsMaxEl exitPh
      Dependency graph

      A tag-branched machinery's pack #

      structure DescriptiveComplexity.Draw.UTagArgsDef {L : FirstOrder.Language} {Q W : Type} [Fintype Q] [Fintype W] {m : } {T : Type} {nrOf : T} (args : (e : Env L) → TagArgs e.α Q W m T nrOf) :

      What a tag-branched machinery's pack owes.

      Instances For
        Dependency graph
        theorem DescriptiveComplexity.Draw.uRulesDefinable_tagArgs {L : FirstOrder.Language} {Q W P : Type} [Fintype Q] [Fintype W] {m : } {T : Type} {nrOf : T} {wk rg : W} {emb : TagPh m T nrOfP} {exitPh : P} {args : (e : Env L) → TagArgs e.α Q W m T nrOf} (h : UTagArgsDef args) :
        URulesDefinable fun (e : Env L) => tagRule e.one wk rg emb (args e).rdTrackT (args e).MatchT (args e).setTagFlag (args e).TagsAre (args e).rdTrackE (args e).MatchE (args e).setFlagE (args e).initEl (args e).advEl (args e).exitSt (args e).IsMaxEl exitPh
        Dependency graph

        A stage atom's pack, and an atom kind's machinery #

        structure DescriptiveComplexity.Draw.Data.UStageArgsDef {L : FirstOrder.Language} {Q : Type} [Fintype Q] {dt : Data L} [Fintype dt.SlotIx] {k : } (args : (e : Env L) → StageArgs e.α Q dt.SlotIx (Fin dt.ko Fin dt.ki) dt.dd0 k) :

        What a stage atom's pack owes.

        Instances For
          Dependency graph
          theorem DescriptiveComplexity.Draw.Data.uRulesDefinable_stageArgs {L : FirstOrder.Language} {Q P : Type} [Fintype Q] {dt : Data L} [Fintype dt.SlotIx] {k : } {emb : StagePh kP} {exitPh : P} {args : (e : Env L) → StageArgs e.α Q dt.SlotIx (Fin dt.ko Fin dt.ki) dt.dd0 k} (h : UStageArgsDef args) :
          URulesDefinable fun (e : Env L) => dt.stageRule e.zero e.one emb (args e).srcTrack (args e).srcBlk (args e).dstBlk (args e).coord (args e).bitFlag (args e).setBit (args e).initLv (args e).advLv (args e).IsMaxLv (args e).oldSlot (args e).setAv exitPh
          Dependency graph
          Dependency graph
          theorem DescriptiveComplexity.Draw.Data.uRulesDefinable_kindRule {L : FirstOrder.Language} {Q P : Type} [Fintype Q] {dt : Data L} [Fintype dt.SlotIx] {n : } (κ : MatAtom dt.X dt.d.B n) {args : (e : Env L) → dt.KindArgs κ} {emb : dt.KindPh κP} {exitPh : P} (h : UKindArgsDef κ args) :
          URulesDefinable fun (e : Env L) => dt.kindRule e.zero e.one κ (args e) emb exitPh

          An atom kind's machinery is definable, given its pack: the stage atom's by its own statement, an expansion atom's by the tag-branched one, an equality's and an order atom's by the element loop's.

          Dependency graph