Documentation

DescriptiveComplexity.Problems.Wide.DrawRoundSem

The round flags, read semantically, and the pack built from the pass #

The two inputs the capstone DescriptiveComplexity.Draw.Data.accVerdict_varFM_qfValue still abstracts – the flags' readings hEx/hAll and the conditional semantic pack semOf – discharged at the concrete threads:

The flags along the VAL loop, without quantified levels #

theorem DescriptiveComplexity.Draw.Data.ctlBit_flag_varFM_of_nIn_zero {L : FirstOrder.Language} (dt : Data L) {A R P : Type} [Fintype dt.SlotIx] [LinearOrder A] [LinearOrder R] [LinearOrder P] [FirstOrder.Language.wide.Structure (Univ A R P dt.KIx dt.dd)] [Finite A] {PR : Prog A R P dt.CtlIx dt.SlotIx dt.KIx dt.dd} (RF : RegFile (Univ A R P dt.KIx dt.dd)) (hord : ∀ (x y : Univ A R P dt.KIx dt.dd), WMLe x y tagTupleLe x y) [Nonempty A] [L.IsRelational] [L.Structure A] {vi : dt.VarIx} {st : TapeStD dt A R P} {ιV : Type} [LinearOrder ιV] [Finite ιV] {mV : ιVUniv A R P dt.KIx dt.ddProp} {semOf : (a : ιV) → (∀ ( : Fin (dt.nIn vi)), dt.igPassP RF PR.zero PR.one vi (dt.roundSt st (mV a)) )(b : Fin (dt.natOf vi)) → dt.KindSem PR.zero PR.one vi (dt.roundSt st (mV a)) (dt.kindOf vi b)} (hzo : PR.zero PR.one) (hn0 : dt.nIn vi = 0) {q : dt.CtlIx} (hq : q = dt.existGateC q = dt.allGateC) (v : Univ A R P dt.KIx dt.ddProp) (fG : dt.CtlIxA) (a : ιV) :
dt.ctlBit PR.one (varFM RF hord vi st v mV semOf fG a) q

Without quantified levels the two flags are constant along the VAL loop: the entry seeded them True, the inner-gates thread is empty, and no fold update writes a flag.

Dependency graph
theorem DescriptiveComplexity.Draw.Data.ctlBit_roundFX_pass_iff {L : FirstOrder.Language} (dt : Data L) {A R P : Type} [Fintype dt.SlotIx] [LinearOrder A] [LinearOrder R] [LinearOrder P] [FirstOrder.Language.wide.Structure (Univ A R P dt.KIx dt.dd)] [Finite A] {PR : Prog A R P dt.CtlIx dt.SlotIx dt.KIx dt.dd} (RF : RegFile (Univ A R P dt.KIx dt.dd)) (hord : ∀ (x y : Univ A R P dt.KIx dt.dd), WMLe x y tagTupleLe x y) [Nonempty A] [L.IsRelational] [L.Structure A] {vi : dt.VarIx} {st : TapeStD dt A R P} {ιV : Type} [LinearOrder ιV] [Finite ιV] {mV : ιVUniv A R P dt.KIx dt.ddProp} {semOf : (a : ιV) → (∀ ( : Fin (dt.nIn vi)), dt.igPassP RF PR.zero PR.one vi (dt.roundSt st (mV a)) )(b : Fin (dt.natOf vi)) → dt.KindSem PR.zero PR.one vi (dt.roundSt st (mV a)) (dt.kindOf vi b)} (hzo : PR.zero PR.one) {q : dt.CtlIx} (hq : q = dt.existGateC q = dt.allGateC) (v : Univ A R P dt.KIx dt.ddProp) (fG : dt.CtlIxA) (a : ιV) :
dt.ctlBit PR.one (roundFX RF hord vi st v mV semOf (varFM RF hord vi st v mV semOf fG a) a) q ∀ ( : Fin (dt.nIn vi)), dt.igFlag vi = qdt.igPassP RF PR.zero PR.one vi (dt.roundSt st (mV a))

A round flag at the round's exit reads as the per-polarity pass: every quantified level of the flag's polarity holds an encoding-shaped, one-hot, domain-satisfying block value. The capstone's hEx/hAll.

Dependency graph
theorem DescriptiveComplexity.Draw.Data.roundPass_of_polarities {L : FirstOrder.Language} (dt : Data L) {A R P : Type} [LinearOrder A] [LinearOrder R] [LinearOrder P] [FirstOrder.Language.wide.Structure (Univ A R P dt.KIx dt.dd)] [Finite A] (RF : RegFile (Univ A R P dt.KIx dt.dd)) [Nonempty A] [L.Structure A] {vi : dt.VarIx} {zero one : A} {stV : TapeStD dt A R P} (hEx : ∀ ( : Fin (dt.nIn vi)), dt.igFlag vi = dt.existGateCdt.igPassP RF zero one vi stV ) (hAl : ∀ ( : Fin (dt.nIn vi)), dt.igFlag vi = dt.allGateCdt.igPassP RF zero one vi stV ) ( : Fin (dt.nIn vi)) :
dt.igPassP RF zero one vi stV

The two polarity readings deliver the full pass: every level's flag is one of the two. The capstone's hPass.

Dependency graph

The pack, built from the pass #

noncomputable def DescriptiveComplexity.Draw.Data.passW {L : FirstOrder.Language} (dt : Data L) {A R P : Type} [LinearOrder A] [LinearOrder R] [LinearOrder P] [FirstOrder.Language.wide.Structure (Univ A R P dt.KIx dt.dd)] [Finite A] (RF : RegFile (Univ A R P dt.KIx dt.dd)) [Nonempty A] [L.Structure A] (zero one : A) (hzo : zero one) (hlin : IsLinOrd WMLe) (vi : dt.VarIx) (stV : TapeStD dt A R P) (hp : ∀ ( : Fin (dt.nIn vi)), dt.igPassP RF zero one vi stV ) (mbW : Fin (dt.arOf vi)dt.X.Map A) (j : Fin (dt.nOf vi)) :
dt.X.Map A

The valuation a passing round holds: the gated address's points at the free levels, the points the pass's encodings choose at the quantified ones.

Equations
Instances For
    Dependency graph
    theorem DescriptiveComplexity.Draw.Data.passW_hENC {L : FirstOrder.Language} (dt : Data L) {A R P : Type} [LinearOrder A] [LinearOrder R] [LinearOrder P] [FirstOrder.Language.wide.Structure (Univ A R P dt.KIx dt.dd)] [Finite A] (RF : RegFile (Univ A R P dt.KIx dt.dd)) [Nonempty A] [L.Structure A] {zero one : A} (hzo : zero one) (hlin : IsLinOrd WMLe) (vi : dt.VarIx) (stV : TapeStD dt A R P) (hp : ∀ ( : Fin (dt.nIn vi)), dt.igPassP RF zero one vi stV ) (mbW : Fin (dt.arOf vi)dt.X.Map A) (hmb : ∀ ( : Fin (dt.arOf vi)), wmBlk stV.mir (Tag.arg (toLex (Sum.inl (Fin.castLE )))) = encMap dt.ly zero one (mbW )) (j : Fin (dt.nOf vi)) :
    wmBlk (dt.lvSet stV vi j) (Tag.arg (toLex (dt.lvBlk vi j))) = encMap dt.ly zero one (dt.passW RF zero one hzo hlin vi stV hp mbW j)

    The master encoding fact of a passing round: every level's block – the working address's at the free levels, the round register's at the quantified ones – encodes the valuation's point. The capstone's hENC, and DescriptiveComplexity.Draw.Data.mkKindSem's input.

    Dependency graph
    noncomputable def DescriptiveComplexity.Draw.Data.passSem {L : FirstOrder.Language} (dt : Data L) {A R P : Type} [LinearOrder A] [LinearOrder R] [LinearOrder P] [FirstOrder.Language.wide.Structure (Univ A R P dt.KIx dt.dd)] [Finite A] (RF : RegFile (Univ A R P dt.KIx dt.dd)) [Nonempty A] [L.Structure A] {zero one : A} (hzo : zero one) (hlin : IsLinOrd WMLe) (vi : dt.VarIx) (stV : TapeStD dt A R P) (hp : ∀ ( : Fin (dt.nIn vi)), dt.igPassP RF zero one vi stV ) (mbW : Fin (dt.arOf vi)dt.X.Map A) (hmb : ∀ ( : Fin (dt.arOf vi)), wmBlk stV.mir (Tag.arg (toLex (Sum.inl (Fin.castLE )))) = encMap dt.ly zero one (mbW )) (b : Fin (dt.natOf vi)) :
    dt.KindSem zero one vi stV (dt.kindOf vi b)

    The semantic pack of a passing round, constructed: the capstone's semOf, with hsem definitional.

    Equations
    • dt.passSem RF hzo hlin vi stV hp mbW hmb b = dt.mkKindSem zero one vi stV (dt.passW RF zero one hzo hlin vi stV hp mbW) (dt.kindOf vi b)
    Instances For
      Dependency graph

      The stage tracks at the composed target #

      theorem DescriptiveComplexity.Draw.Data.wmBlk_stageTgtD_eq_encMap {L : FirstOrder.Language} (dt : Data L) {A R P : Type} [LinearOrder A] [Finite A] [Nonempty A] [L.Structure A] {zero one : A} (vi : dt.VarIx) (iv : dt.d.B.ι) (ts : Fin (dt.d.B.arity iv)Fin (dt.nOf vi)) (stV : TapeStD dt A R P) (v : Univ A R P dt.KIx dt.ddProp) {p : Fin (dt.d.B.arity iv)dt.X.Map A} (hsrc : ∀ ( : Fin (dt.d.B.arity iv)), wmBlk (dt.lvSet stV vi (ts )) (Tag.arg (toLex (dt.lvBlk vi (ts )))) = encMap dt.ly zero one (p )) ( : Fin (dt.d.B.arity iv)) :
      wmBlk (dt.stageTgtD zero vi iv ts stV v (dt.d.B.arity iv)) (Tag.arg (toLex (Sum.inl (Fin.castLE )))) = encMap dt.ly zero one (p )

      The composed TARGET's argument blocks are the sources': after all copy loops, block of TARGET is the position's source block – the copy is faithful on the padded cells, and an encoding holds no others.

      Dependency graph
      theorem DescriptiveComplexity.Draw.Data.old_trackOf_stageTgtD {L : FirstOrder.Language} (dt : Data L) {A R P : Type} [LinearOrder A] [Finite A] [Nonempty A] [L.Structure A] {zero one : A} (hzo : zero one) (vi : dt.VarIx) (iv : dt.d.B.ι) (ha : dt.d.B.arity iv dt.ko) (σ : dt.d.B.Assignment (dt.X.Map A)) (stV : TapeStD dt A R P) (v : Univ A R P dt.KIx dt.ddProp) {Below : (Univ A R P dt.KIx dt.ddProp)Prop} (hdict : ∀ (s : Univ A R P dt.KIx dt.ddProp), Below s → (stV.old iv s trackOf dt.ly zero one ha σ s)) (ts : Fin (dt.d.B.arity iv)Fin (dt.nOf vi)) {p : Fin (dt.d.B.arity iv)dt.X.Map A} (hsrc : ∀ ( : Fin (dt.d.B.arity iv)), wmBlk (dt.lvSet stV vi (ts )) (Tag.arg (toLex (dt.lvBlk vi (ts )))) = encMap dt.ly zero one (p )) (hbelow : Below (dt.stageTgtD zero vi iv ts stV v (dt.d.B.arity iv))) :
      stV.old iv (dt.stageTgtD zero vi iv ts stV v (dt.d.B.arity iv)) σ iv p

      A stage track reads the dictionary at the composed target: with the track holding the stage dictionary and the sources encoding the points, the random access's bit is the stage at those points – the capstone's hOld.

      Dependency graph

      The leaf, read at the round's register #

      theorem DescriptiveComplexity.Draw.Data.igFlag_eq_existGateC_iff {L : FirstOrder.Language} (dt : Data L) (vi : dt.VarIx) ( : Fin (dt.nIn vi)) :
      dt.igFlag vi = dt.existGateC dt.polOf vi (dt.arOf vi + ) = true

      A level's polarity flag is the ∃-flag exactly by its polarity.

      Dependency graph
      theorem DescriptiveComplexity.Draw.Data.igFlag_eq_allGateC_iff {L : FirstOrder.Language} (dt : Data L) (vi : dt.VarIx) ( : Fin (dt.nIn vi)) :
      dt.igFlag vi = dt.allGateC dt.polOf vi (dt.arOf vi + ) = false

      A level's polarity flag is the ∀-flag exactly by its polarity.

      Dependency graph
      theorem DescriptiveComplexity.Draw.Data.roundPass_iff_split_gen {L : FirstOrder.Language} (dt : Data L) {A R P : Type} [LinearOrder A] [LinearOrder R] [LinearOrder P] [FirstOrder.Language.wide.Structure (Univ A R P dt.KIx dt.dd)] [Finite A] (RF : RegFile (Univ A R P dt.KIx dt.dd)) [Nonempty A] [L.Structure A] {zero one : A} (hzo : zero one) (hlin : IsLinOrd WMLe) (vi : dt.VarIx) (stV : TapeStD dt A R P) {q : dt.CtlIx} {bpol : Bool} (hqiff : ∀ ( : Fin (dt.nIn vi)), dt.igFlag vi = q dt.polOf vi (dt.arOf vi + ) = bpol) :
      (∀ ( : Fin (dt.nIn vi)), dt.igFlag vi = qdt.igPassP RF zero one vi stV ) ∀ (j : Fin (dt.nOf vi)), dt.arOf vi jdt.polOf vi j = bpolIsEnc dt.ly zero one (ixBlk (argIn dt.ko) stV.val j, )

      A per-polarity pass is the split's gate clause, reindexed from the quantified levels to the pack's indices.

      Dependency graph
      theorem DescriptiveComplexity.Draw.Data.levelVal_encMap {L : FirstOrder.Language} (dt : Data L) {A R P : Type} [LinearOrder A] [LinearOrder R] [LinearOrder P] [FirstOrder.Language.wide.Structure (Univ A R P dt.KIx dt.dd)] [Finite A] (RF : RegFile (Univ A R P dt.KIx dt.dd)) [Nonempty A] [L.Structure A] {zero one : A} (hzo : zero one) (hlin : IsLinOrd WMLe) (vi : dt.VarIx) (stV : TapeStD dt A R P) (hp : ∀ ( : Fin (dt.nIn vi)), dt.igPassP RF zero one vi stV ) (mb : Fin dt.ko(Fin dt.ddA)Prop) (mbW : Fin (dt.arOf vi)dt.X.Map A) (hmb : ∀ ( : Fin (dt.arOf vi)), mb (Fin.castLE ) = encMap dt.ly zero one (mbW )) (j : Fin (dt.nOf vi)) :
      dt.levelVal vi mb (ixBlk (argIn dt.ko) stV.val) j = encMap dt.ly zero one (dt.passW RF zero one hzo hlin vi stV hp mbW j)

      The valuation the leaf decodes is the pass's: every level's block of the leaf's reading encodes passW's point.

      Dependency graph
      theorem DescriptiveComplexity.Draw.Data.leafP_pass_iff {L : FirstOrder.Language} (dt : Data L) {A R P : Type} [LinearOrder A] [LinearOrder R] [LinearOrder P] [FirstOrder.Language.wide.Structure (Univ A R P dt.KIx dt.dd)] [Finite A] (RF : RegFile (Univ A R P dt.KIx dt.dd)) [Nonempty A] [L.Structure A] {zero one : A} [LinearOrder (dt.X.Map A)] (hzo : zero one) (hlin : IsLinOrd WMLe) (vi : dt.VarIx) (stV : TapeStD dt A R P) (σ : dt.d.B.Assignment (dt.X.Map A)) (mb : Fin dt.ko(Fin dt.ddA)Prop) (mbW : Fin (dt.arOf vi)dt.X.Map A) (hmb : ∀ ( : Fin (dt.arOf vi)), mb (Fin.castLE ) = encMap dt.ly zero one (mbW )) (hp : ∀ ( : Fin (dt.nIn vi)), dt.igPassP RF zero one vi stV ) :
      dt.leafP zero one vi σ mb (ixBlk (argIn dt.ko) stV.val) qfValue (dt.matOf vi) fun (atm : ((dt.X.E.sum FirstOrder.Language.order).sum dt.d.B.lang).BoundedFormula Empty (dt.nOf vi)) => (matAtom? atm).elim False (MatAtom.holds σ (dt.passW RF zero one hzo hlin vi stV hp mbW))

      The leaf at a passing round is the matrix's value at the pass's points – the capstone's hPsPass, with Ps the gated matrix DescriptiveComplexity.Draw.Data.leafP.

      Dependency graph
      theorem DescriptiveComplexity.Draw.Data.leafP_fail_iff {L : FirstOrder.Language} (dt : Data L) {A R P : Type} [LinearOrder A] [LinearOrder R] [LinearOrder P] [FirstOrder.Language.wide.Structure (Univ A R P dt.KIx dt.dd)] [Finite A] (RF : RegFile (Univ A R P dt.KIx dt.dd)) [Nonempty A] [L.Structure A] {zero one : A} [LinearOrder (dt.X.Map A)] (hzo : zero one) (hlin : IsLinOrd WMLe) (vi : dt.VarIx) (stV : TapeStD dt A R P) (σ : dt.d.B.Assignment (dt.X.Map A)) (mb : Fin dt.ko(Fin dt.ddA)Prop) (mbW : Fin (dt.arOf vi)dt.X.Map A) (hmb : ∀ ( : Fin (dt.arOf vi)), mb (Fin.castLE ) = encMap dt.ly zero one (mbW )) (hEA : ¬((∀ ( : Fin (dt.nIn vi)), dt.igFlag vi = dt.existGateCdt.igPassP RF zero one vi stV ) ∀ ( : Fin (dt.nIn vi)), dt.igFlag vi = dt.allGateCdt.igPassP RF zero one vi stV )) :
      (∀ ( : Fin (dt.nIn vi)), dt.igFlag vi = dt.existGateCdt.igPassP RF zero one vi stV ) dt.leafP zero one vi σ mb (ixBlk (argIn dt.ko) stV.val)

      The leaf at a failing round is the ∃-clause alone – the capstone's hPsFail: the ∀-clause's implication is vacuous when the two readings do not both hold.

      Dependency graph