Documentation

MIPRE.TM.CookLevin.FamilyProg

The family formulas as programs #

Every formula of FamilyFml.lean as a program reading a shared input: a candidate of readers (CandR), the width e in unary, and the data the explicit families need. The statement of each is progR … i = familyF (eu i).length Gc … (C.ev i), and its proof is simp over the constants of the layout — the shape of the formula matches definitionally, because CandR.ev is a structure literal of the programs' own values.

The constants are the only content: Sof e = 2 ^ e and 2 * Sof e + k = 2 ^ (e + 1) + k come from pow2P and incN, and numR turns a number and a width into the bit string of the field constant (planning/succinct-cook-levin.md, S3).

Conjunctions and disjunctions of readers #

@[simp]
@[simp]

and of two readers.

Equations
Instances For
    @[simp]
    theorem MIPRE.TM.CookLevin.Desc.andTwo_apply {ι : Type u_1} [Cost.SizedEncoding ι] (f g : Cost.PolyTimeFun ι SAT.Fml) (i : ι) :
    (andTwo f g).toFun i = (f.toFun i).and (g.toFun i)

    or of two readers.

    Equations
    Instances For
      @[simp]
      theorem MIPRE.TM.CookLevin.Desc.orTwo_apply {ι : Type u_1} [Cost.SizedEncoding ι] (f g : Cost.PolyTimeFun ι SAT.Fml) (i : ι) :
      (orTwo f g).toFun i = (f.toFun i).or (g.toFun i)
      @[simp]

      xnor of two readers.

      Equations
      Instances For
        @[simp]
        theorem MIPRE.TM.CookLevin.Desc.xnorR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (f g : Cost.PolyTimeFun ι SAT.Fml) (i : ι) :
        (xnorR f g).toFun i = (f.toFun i).xnor (g.toFun i)

        mux of three readers.

        Equations
        Instances For
          @[simp]
          theorem MIPRE.TM.CookLevin.Desc.muxR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (s f g : Cost.PolyTimeFun ι SAT.Fml) (i : ι) :
          (muxR s f g).toFun i = (s.toFun i).mux (f.toFun i) (g.toFun i)

          eqFields.

          Equations
          Instances For
            @[simp]
            theorem MIPRE.TM.CookLevin.Desc.eqF_apply {ι : Type u_1} [Cost.SizedEncoding ι] (fs gs : Cost.PolyTimeFun ι (List SAT.Fml)) (i : ι) :
            (eqF fs gs).toFun i = SAT.Fml.eqFields (fs.toFun i) (gs.toFun i)

            ltFields.

            Equations
            Instances For
              @[simp]
              theorem MIPRE.TM.CookLevin.Desc.ltF_apply {ι : Type u_1} [Cost.SizedEncoding ι] (fs gs : Cost.PolyTimeFun ι (List SAT.Fml)) (i : ι) :
              (ltF fs gs).toFun i = SAT.Fml.ltFields (fs.toFun i) (gs.toFun i)
              @[simp]

              The constants of the layout #

              A field constant, from a width in unary and the number.

              Equations
              Instances For
                @[simp]
                @[simp]
                theorem MIPRE.TM.CookLevin.Desc.numC_apply {ι : Type u_1} [Cost.SizedEncoding ι] (w : Cost.PolyTimeFun ι Cost.Unary) (k : ℕ) (i : ι) :
                (numC w k).toFun i = nbits (List.length (w.toFun i)) k
                @[simp]
                @[simp]
                @[simp]
                theorem MIPRE.TM.CookLevin.Desc.SofAddR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (k : ℕ) (i : ι) :
                (SofAddR eu k).toFun i = Sof (List.length (eu.toFun i)) + k
                @[simp]
                theorem MIPRE.TM.CookLevin.Desc.twoSAddR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (k : ℕ) (i : ι) :
                (twoSAddR eu k).toFun i = 2 * Sof (List.length (eu.toFun i)) + k

                The kind predicates #

                numEqF.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[simp]
                  theorem MIPRE.TM.CookLevin.Desc.numEqR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (A B : FieldsR ι) (i : ι) :
                  (numEqR A B).toFun i = numEqF (A.ev i) (B.ev i)

                  isCellF.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[simp]
                    theorem MIPRE.TM.CookLevin.Desc.isCellR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (A : FieldsR ι) (i : ι) :
                    (isCellR eu A).toFun i = isCellF (List.length (eu.toFun i)) (A.ev i)

                    isHeadF.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[simp]
                      theorem MIPRE.TM.CookLevin.Desc.isHeadR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (A : FieldsR ι) (i : ι) :
                      (isHeadR eu A).toFun i = isHeadF (List.length (eu.toFun i)) (A.ev i)

                      isStateF.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        @[simp]
                        theorem MIPRE.TM.CookLevin.Desc.isStateR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (A : FieldsR ι) (i : ι) :
                        (isStateR eu A).toFun i = isStateF (List.length (eu.toFun i)) (A.ev i)

                        isEmitOneF.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          @[simp]

                          isEmitBadF.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[simp]

                            isEmittedF.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              @[simp]

                              isAuxF.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                @[simp]
                                theorem MIPRE.TM.CookLevin.Desc.isAuxR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (A : FieldsR ι) (i : ι) :
                                (isAuxR eu A).toFun i = isAuxF (List.length (eu.toFun i)) Gc (A.ev i)

                                The same-variable formulas #

                                cellEqF.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  @[simp]
                                  theorem MIPRE.TM.CookLevin.Desc.cellEqR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (A B : FieldsR ι) (i : ι) :
                                  (cellEqR A B).toFun i = cellEqF (A.ev i) (B.ev i)
                                  @[simp]
                                  theorem MIPRE.TM.CookLevin.Desc.headEqR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (A B : FieldsR ι) (i : ι) :
                                  (headEqR A B).toFun i = headEqF (A.ev i) (B.ev i)
                                  @[simp]
                                  theorem MIPRE.TM.CookLevin.Desc.stateEqR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (A B : FieldsR ι) (i : ι) :
                                  (stateEqR A B).toFun i = stateEqF (A.ev i) (B.ev i)

                                  auxEqF.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    @[simp]
                                    theorem MIPRE.TM.CookLevin.Desc.auxEqR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (A B : FieldsR ι) (i : ι) :
                                    (auxEqR A B).toFun i = auxEqF (A.ev i) (B.ev i)
                                    @[simp]
                                    theorem MIPRE.TM.CookLevin.Desc.samePosR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (A B : FieldsR ι) (i : ι) :
                                    (samePosR A B).toFun i = samePosF (A.ev i) (B.ev i)

                                    Mapping over a list read off the input #

                                    noncomputable def MIPRE.TM.CookLevin.Desc.mapR {ι : Type u_1} [Cost.SizedEncoding ι] {α : Type u_2} {γ : Type u_3} [Cost.SizedEncoding α] [Cost.SizedEncoding γ] (F : Cost.PolyTimeFun (α × ι) γ) (l : Cost.PolyTimeFun ι (List α)) :

                                    Mapping a reader of pairs over a list read off the input.

                                    Equations
                                    Instances For
                                      @[simp]
                                      theorem MIPRE.TM.CookLevin.Desc.mapR_apply {ι : Type u_1} [Cost.SizedEncoding ι] {α : Type u_2} {γ : Type u_3} [Cost.SizedEncoding α] [Cost.SizedEncoding γ] (F : Cost.PolyTimeFun (α × ι) γ) (l : Cost.PolyTimeFun ι (List α)) (i : ι) :
                                      (mapR F l).toFun i = List.map (fun (a : α) => F.toFun (a, i)) (l.toFun i)

                                      Unit clauses and signs #

                                      unitCellF.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        @[simp]

                                        unitHeadF.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          @[simp]

                                          unitStateF.

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For
                                            @[simp]

                                            unitEmitBadF.

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For

                                              unitEmittedF.

                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For

                                                unitAuxF.

                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  @[simp]
                                                  theorem MIPRE.TM.CookLevin.Desc.unitAuxR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (i : ι) :
                                                  (unitAuxR eu C).toFun i = unitAuxF (List.length (eu.toFun i)) Gc (C.ev i)
                                                  @[simp]

                                                  Positions and values #

                                                  bdryF.

                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For
                                                    @[simp]
                                                    theorem MIPRE.TM.CookLevin.Desc.bdryR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (A : FieldsR ι) (i : ι) :
                                                    (bdryR eu A).toFun i = bdryF (List.length (eu.toFun i)) (A.ev i)

                                                    startCellF.

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      @[simp]

                                                      workValF.

                                                      Equations
                                                      • One or more equations did not get rendered due to their size.
                                                      Instances For
                                                        @[simp]
                                                        theorem MIPRE.TM.CookLevin.Desc.workValR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (A : FieldsR ι) (i : ι) :
                                                        (workValR eu A).toFun i = workValF (List.length (eu.toFun i)) (A.ev i)
                                                        theorem MIPRE.TM.CookLevin.Desc.lookupList_eq (e : ℕ) (A : FieldsF) (k : ℕ) (cs : List ℕ) :
                                                        lookupList e A k cs = List.map (fun (p : ℕ × ℕ) => (SAT.Fml.eqConst A.p (nbits (W e) p.2)).and (SAT.Fml.eqConst A.v (nbits 3 p.1))) (cs.zip (List.range' k cs.length))

                                                        The lookup table, written as a map over the codes paired with their positions.

                                                        lookupList, from cell 3.

                                                        Equations
                                                        • One or more equations did not get rendered due to their size.
                                                        Instances For
                                                          @[simp]
                                                          theorem MIPRE.TM.CookLevin.Desc.lookupR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (A : FieldsR ι) (codes : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                          (lookupR eu A codes).toFun i = lookupList (List.length (eu.toFun i)) (A.ev i) 3 (codes.toFun i)

                                                          cellValF.

                                                          Equations
                                                          • One or more equations did not get rendered due to their size.
                                                          Instances For
                                                            @[simp]
                                                            theorem MIPRE.TM.CookLevin.Desc.cellValR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (A : FieldsR ι) (codes : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                            (cellValR eu A codes).toFun i = cellValF (List.length (eu.toFun i)) (A.ev i) (codes.toFun i)

                                                            unaryValF.

                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For
                                                              @[simp]
                                                              theorem MIPRE.TM.CookLevin.Desc.unaryValR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (A : FieldsR ι) (TR : Cost.PolyTimeFun ι ℕ) (i : ι) :
                                                              (unaryValR eu A TR).toFun i = unaryValF (List.length (eu.toFun i)) (TR.toFun i) (A.ev i)

                                                              freeTapeF.

                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              Instances For
                                                                @[simp]
                                                                theorem MIPRE.TM.CookLevin.Desc.freeTapeR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (A : FieldsR ι) (frees : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                                (freeTapeR A frees).toFun i = freeTapeF (frees.toFun i) (A.ev i)
                                                                @[simp]
                                                                theorem MIPRE.TM.CookLevin.Desc.tZeroR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (A : FieldsR ι) (i : ι) :
                                                                (tZeroR eu A).toFun i = tZeroF (List.length (eu.toFun i)) (A.ev i)

                                                                The start family #

                                                                startHeadF.

                                                                Equations
                                                                • One or more equations did not get rendered due to their size.
                                                                Instances For
                                                                  @[simp]

                                                                  startStateF.

                                                                  Equations
                                                                  • One or more equations did not get rendered due to their size.
                                                                  Instances For

                                                                    startFixedF.

                                                                    Equations
                                                                    • One or more equations did not get rendered due to their size.
                                                                    Instances For
                                                                      @[simp]
                                                                      theorem MIPRE.TM.CookLevin.Desc.startFixedR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (tabs : Cost.PolyTimeFun ι (List (ℕ × SAT.Fml))) (i : ι) :
                                                                      (startFixedR eu C tabs).toFun i = startFixedF (List.length (eu.toFun i)) (tabs.toFun i) (C.ev i)

                                                                      startWorkF.

                                                                      Equations
                                                                      • One or more equations did not get rendered due to their size.
                                                                      Instances For
                                                                        @[simp]

                                                                        startF.

                                                                        Equations
                                                                        • One or more equations did not get rendered due to their size.
                                                                        Instances For
                                                                          @[simp]
                                                                          theorem MIPRE.TM.CookLevin.Desc.startR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (tabs : Cost.PolyTimeFun ι (List (ℕ × SAT.Fml))) (i : ι) :
                                                                          (startR eu C tabs).toFun i = startF (List.length (eu.toFun i)) (tabs.toFun i) (C.ev i)

                                                                          The free family #

                                                                          freeBdryF.

                                                                          Equations
                                                                          • One or more equations did not get rendered due to their size.
                                                                          Instances For
                                                                            @[simp]
                                                                            theorem MIPRE.TM.CookLevin.Desc.freeBdryR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (frees : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                                            (freeBdryR eu C frees).toFun i = freeBdryF (List.length (eu.toFun i)) (frees.toFun i) (C.ev i)

                                                                            freeOtherF.

                                                                            Equations
                                                                            • One or more equations did not get rendered due to their size.
                                                                            Instances For
                                                                              @[simp]
                                                                              theorem MIPRE.TM.CookLevin.Desc.freeOtherR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (frees : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                                              (freeOtherR eu C frees).toFun i = freeOtherF (List.length (eu.toFun i)) (frees.toFun i) (C.ev i)

                                                                              freeTwoF.

                                                                              Equations
                                                                              • One or more equations did not get rendered due to their size.
                                                                              Instances For
                                                                                @[simp]
                                                                                theorem MIPRE.TM.CookLevin.Desc.freeTwoR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (frees : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                                                (freeTwoR eu C frees).toFun i = freeTwoF (List.length (eu.toFun i)) (frees.toFun i) (C.ev i)

                                                                                freeOneOfF.

                                                                                Equations
                                                                                • One or more equations did not get rendered due to their size.
                                                                                Instances For
                                                                                  @[simp]
                                                                                  theorem MIPRE.TM.CookLevin.Desc.freeOneOfR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (frees : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                                                  (freeOneOfR eu C frees).toFun i = freeOneOfF (List.length (eu.toFun i)) (frees.toFun i) (C.ev i)

                                                                                  freeNandF.

                                                                                  Equations
                                                                                  • One or more equations did not get rendered due to their size.
                                                                                  Instances For
                                                                                    @[simp]
                                                                                    theorem MIPRE.TM.CookLevin.Desc.freeNandR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (frees : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                                                    (freeNandR eu C frees).toFun i = freeNandF (List.length (eu.toFun i)) (frees.toFun i) (C.ev i)

                                                                                    freeBlankF.

                                                                                    Equations
                                                                                    • One or more equations did not get rendered due to their size.
                                                                                    Instances For
                                                                                      @[simp]
                                                                                      theorem MIPRE.TM.CookLevin.Desc.freeBlankR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (frees : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                                                      (freeBlankR eu C frees).toFun i = freeBlankF (List.length (eu.toFun i)) (frees.toFun i) (C.ev i)

                                                                                      freeF.

                                                                                      Equations
                                                                                      • One or more equations did not get rendered due to their size.
                                                                                      Instances For
                                                                                        @[simp]
                                                                                        theorem MIPRE.TM.CookLevin.Desc.freeR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (frees : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                                                        (freeR eu C frees).toFun i = freeF (List.length (eu.toFun i)) (frees.toFun i) (C.ev i)

                                                                                        The boundary, emission and final families #

                                                                                        bdryCellF.

                                                                                        Equations
                                                                                        • One or more equations did not get rendered due to their size.
                                                                                        Instances For
                                                                                          @[simp]

                                                                                          bdryHeadF.

                                                                                          Equations
                                                                                          • One or more equations did not get rendered due to their size.
                                                                                          Instances For
                                                                                            @[simp]
                                                                                            @[simp]

                                                                                            emitZeroF.

                                                                                            Equations
                                                                                            • One or more equations did not get rendered due to their size.
                                                                                            Instances For
                                                                                              @[simp]

                                                                                              emitStepF.

                                                                                              Equations
                                                                                              • One or more equations did not get rendered due to their size.
                                                                                              Instances For
                                                                                                @[simp]

                                                                                                emitMonoF.

                                                                                                Equations
                                                                                                • One or more equations did not get rendered due to their size.
                                                                                                Instances For
                                                                                                  @[simp]

                                                                                                  emitOneF.

                                                                                                  Equations
                                                                                                  • One or more equations did not get rendered due to their size.
                                                                                                  Instances For
                                                                                                    @[simp]
                                                                                                    theorem MIPRE.TM.CookLevin.Desc.emitOneR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (i : ι) :
                                                                                                    (emitOneR eu C).toFun i = emitOneF (List.length (eu.toFun i)) (C.ev i)

                                                                                                    emitOnceF.

                                                                                                    Equations
                                                                                                    • One or more equations did not get rendered due to their size.
                                                                                                    Instances For
                                                                                                      @[simp]
                                                                                                      @[simp]
                                                                                                      theorem MIPRE.TM.CookLevin.Desc.emitBadR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (i : ι) :
                                                                                                      (emitBadR eu C).toFun i = emitBadF (List.length (eu.toFun i)) (C.ev i)

                                                                                                      emitPredF.

                                                                                                      Equations
                                                                                                      • One or more equations did not get rendered due to their size.
                                                                                                      Instances For
                                                                                                        @[simp]

                                                                                                        finalStateF.

                                                                                                        Equations
                                                                                                        • One or more equations did not get rendered due to their size.
                                                                                                        Instances For

                                                                                                          finalEmittedF.

                                                                                                          Equations
                                                                                                          • One or more equations did not get rendered due to their size.
                                                                                                          Instances For
                                                                                                            @[simp]

                                                                                                            The five explicit families #

                                                                                                            mainF.

                                                                                                            Equations
                                                                                                            • One or more equations did not get rendered due to their size.
                                                                                                            Instances For
                                                                                                              @[simp]
                                                                                                              theorem MIPRE.TM.CookLevin.Desc.mainR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (tabs : Cost.PolyTimeFun ι (List (ℕ × SAT.Fml))) (frees : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                                                                              (mainR eu C tabs frees).toFun i = mainF (List.length (eu.toFun i)) (tabs.toFun i) (frees.toFun i) (C.ev i)

                                                                                                              The window family #

                                                                                                              The templates of the check circuit are a constant of the describer — Gc is fixed — so the program maps over tplsOf Gc chk at the Lean level and the descriptors never have to be encoded: each becomes a const reader.

                                                                                                              theorem MIPRE.TM.CookLevin.Desc.selectF_zipWith (hot : List Bool) (fs : List SAT.Fml) :
                                                                                                              List.zipWith (fun (b : Bool) (f : SAT.Fml) => (SAT.Fml.const b).and f) hot fs = List.map (fun (p : Bool × SAT.Fml) => (SAT.Fml.const p.1).and p.2) (hot.zip fs)

                                                                                                              selectF, written as a map over the pairs.

                                                                                                              theorem MIPRE.TM.CookLevin.Desc.selectF_eq (hot : List Bool) (fs : List SAT.Fml) :
                                                                                                              selectF hot fs = SAT.Fml.orList (List.map (fun (p : Bool × SAT.Fml) => (SAT.Fml.const p.1).and p.2) (hot.zip fs))

                                                                                                              selectF.

                                                                                                              Equations
                                                                                                              • One or more equations did not get rendered due to their size.
                                                                                                              Instances For
                                                                                                                @[simp]
                                                                                                                theorem MIPRE.TM.CookLevin.Desc.selectR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (hot : Cost.PolyTimeFun ι (List Bool)) (fs : Cost.PolyTimeFun ι (List SAT.Fml)) (i : ι) :
                                                                                                                (selectR hot fs).toFun i = selectF (hot.toFun i) (fs.toFun i)
                                                                                                                noncomputable def MIPRE.TM.CookLevin.Desc.posR {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (Fa A : FieldsR ι) (dHot : List Bool) (δ : Cost.BitStr) :

                                                                                                                posF.

                                                                                                                Equations
                                                                                                                • One or more equations did not get rendered due to their size.
                                                                                                                Instances For
                                                                                                                  @[simp]
                                                                                                                  theorem MIPRE.TM.CookLevin.Desc.posR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (Fa A : FieldsR ι) (dHot : List Bool) (δ : Cost.BitStr) (i : ι) :
                                                                                                                  (posR eu Fa A dHot δ).toFun i = posF (List.length (eu.toFun i)) (Fa.ev i) (A.ev i) dHot δ

                                                                                                                  winMatchN.

                                                                                                                  Equations
                                                                                                                  • One or more equations did not get rendered due to their size.
                                                                                                                  Instances For
                                                                                                                    @[simp]
                                                                                                                    theorem MIPRE.TM.CookLevin.Desc.winMatchR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (Fa A : FieldsR ι) (w : WDesc) (i : ι) :
                                                                                                                    (winMatchR eu Fa A w).toFun i = winMatchN (List.length (eu.toFun i)) (Fa.ev i) (A.ev i) w

                                                                                                                    auxMatchN.

                                                                                                                    Equations
                                                                                                                    • One or more equations did not get rendered due to their size.
                                                                                                                    Instances For
                                                                                                                      @[simp]
                                                                                                                      theorem MIPRE.TM.CookLevin.Desc.auxMatchR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (Fa A : FieldsR ι) (u : Cost.BitStr) (i : ι) :
                                                                                                                      (auxMatchR eu Fa A u).toFun i = auxMatchN (List.length (eu.toFun i)) Gc (Fa.ev i) (A.ev i) u

                                                                                                                      specMatchN.

                                                                                                                      Equations
                                                                                                                      • One or more equations did not get rendered due to their size.
                                                                                                                      Instances For
                                                                                                                        @[simp]
                                                                                                                        theorem MIPRE.TM.CookLevin.Desc.specMatchR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (Fa A : FieldsR ι) (l : LDesc) (i : ι) :
                                                                                                                        (specMatchR eu Fa A l).toFun i = specMatchN (List.length (eu.toFun i)) Gc (Fa.ev i) (A.ev i) l
                                                                                                                        noncomputable def MIPRE.TM.CookLevin.Desc.tplR {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (tp : NTpl) :

                                                                                                                        tplN.

                                                                                                                        Equations
                                                                                                                        • One or more equations did not get rendered due to their size.
                                                                                                                        Instances For
                                                                                                                          @[simp]
                                                                                                                          theorem MIPRE.TM.CookLevin.Desc.tplR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (tp : NTpl) (i : ι) :
                                                                                                                          (tplR eu C tp).toFun i = tplN (List.length (eu.toFun i)) Gc tp (C.ev i)

                                                                                                                          windowGatesN, on the templates of the check circuit.

                                                                                                                          Equations
                                                                                                                          • One or more equations did not get rendered due to their size.
                                                                                                                          Instances For

                                                                                                                            windowOutF.

                                                                                                                            Equations
                                                                                                                            • One or more equations did not get rendered due to their size.
                                                                                                                            Instances For
                                                                                                                              @[simp]
                                                                                                                              @[simp]
                                                                                                                              theorem MIPRE.TM.CookLevin.Desc.windowR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (i : ι) :
                                                                                                                              (windowR eu C).toFun i = windowN (List.length (eu.toFun i)) Gc (tplsOf Gc chk) (C.ev i)

                                                                                                                              The whole tableau #

                                                                                                                              @[simp]
                                                                                                                              theorem MIPRE.TM.CookLevin.Desc.tableauR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (C : CandR ι) (tabs : Cost.PolyTimeFun ι (List (ℕ × SAT.Fml))) (frees : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                                                                                              (tableauR eu C tabs frees).toFun i = tableauF (List.length (eu.toFun i)) Gc (tabs.toFun i) (frees.toFun i) (tplsOf Gc chk) (C.ev i)

                                                                                                                              The answer-end clauses #

                                                                                                                              ansEndF.

                                                                                                                              Equations
                                                                                                                              • One or more equations did not get rendered due to their size.
                                                                                                                              Instances For
                                                                                                                                @[simp]
                                                                                                                                theorem MIPRE.TM.CookLevin.Desc.ansEndR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (TR : Cost.PolyTimeFun ι ℕ) (C : CandR ι) (i : ι) :
                                                                                                                                (ansEndR eu TR C).toFun i = ansEndF (List.length (eu.toFun i)) (TR.toFun i) (C.ev i)
                                                                                                                                @[simp]
                                                                                                                                theorem MIPRE.TM.CookLevin.Desc.tableauPlusR_apply {ι : Type u_1} [Cost.SizedEncoding ι] (eu : Cost.PolyTimeFun ι Cost.Unary) (TR : Cost.PolyTimeFun ι ℕ) (C : CandR ι) (tabs : Cost.PolyTimeFun ι (List (ℕ × SAT.Fml))) (frees : Cost.PolyTimeFun ι (List ℕ)) (i : ι) :
                                                                                                                                (tableauPlusR eu TR C tabs frees).toFun i = tableauPlusF (List.length (eu.toFun i)) Gc (TR.toFun i) (tabs.toFun i) (frees.toFun i) (tplsOf Gc chk) (C.ev i)