Documentation

Complexitylib.Algebraic.LowerBound.Fusion.Pullback

Pulling fusion covers back along a counterexample section #

A semi-filter argument often studies a circuit over one ambient space while the combinatorial cover lives over the complement of a different target. A SemifilterPullback records the bridge:

Every target circuit then gives a pair cover of the source problem. The pair associated with an AND gate is obtained by pulling its two argument sets back along the section, and the cover cost is exactly the circuit's AND cost.

structure Algebraic.Fusion.SemifilterPullback {Γ : Type u_1} {Δ : Type u_2} (source : SetProblem Γ) (target : SetProblem Δ) (admissible : SemifilterClass source) :
Type (max u_1 u_2)

Data transporting semi-filter witnesses from source to a set construction problem target.

Instances For
    def Algebraic.Fusion.SemifilterPullback.model {Γ : Type u_1} {Δ : Type u_2} {source : SetProblem Γ} {target : SetProblem Δ} {admissible : SemifilterClass source} (pullback : SemifilterPullback source target admissible) :

    Observation model induced by a semi-filter pullback.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      def Algebraic.Fusion.Atom.pullbackPair? {Γ : Type u_1} {Δ : Type u_2} {source : SetProblem Γ} {target : SetProblem Δ} {admissible : SemifilterClass source} (pullback : SemifilterPullback source target admissible) (atom : Atom AndOr.signature (Set Δ)) :
      Option (Pair source)

      The pulled-back pair contributed by an AND atom.

      Equations
      Instances For
        @[simp]
        theorem Algebraic.Fusion.Atom.pullbackPair?_and {Γ : Type u_1} {Δ : Type u_2} {source : SetProblem Γ} {target : SetProblem Δ} {admissible : SemifilterClass source} (pullback : SemifilterPullback source target admissible) (arguments : Fin (AndOr.signature.Arity AndOr.Op.and) → Set Δ) :
        pullbackPair? pullback { op := AndOr.Op.and, arguments := arguments } = some (pullback.counterexampleMap ⁻¹' arguments ⟨0, pullbackPair?._proof_3⟩, pullback.counterexampleMap ⁻¹' arguments ⟨1, pullbackPair?._proof_4⟩)
        @[simp]
        theorem Algebraic.Fusion.Atom.pullbackPair?_or {Γ : Type u_1} {Δ : Type u_2} {source : SetProblem Γ} {target : SetProblem Δ} {admissible : SemifilterClass source} (pullback : SemifilterPullback source target admissible) (arguments : Fin (AndOr.signature.Arity AndOr.Op.or) → Set Δ) :
        pullbackPair? pullback { op := AndOr.Op.or, arguments := arguments } = none
        def Algebraic.Fusion.SemifilterPullback.pairs {Γ : Type u_1} {Δ : Type u_2} {source : SetProblem Γ} {target : SetProblem Δ} {admissible : SemifilterClass source} (pullback : SemifilterPullback source target admissible) (atoms : List (Atom AndOr.signature (Set Δ))) :
        List (Pair source)

        Pull back all intersection pairs from a list of target atoms.

        Equations
        Instances For
          @[simp]
          theorem Algebraic.Fusion.SemifilterPullback.pairs_cons_and {Γ : Type u_1} {Δ : Type u_2} {source : SetProblem Γ} {target : SetProblem Δ} {admissible : SemifilterClass source} (pullback : SemifilterPullback source target admissible) (arguments : Fin (AndOr.signature.Arity AndOr.Op.and) → Set Δ) (atoms : List (Atom AndOr.signature (Set Δ))) :
          pullback.pairs ({ op := AndOr.Op.and, arguments := arguments } :: atoms) = (pullback.counterexampleMap ⁻¹' arguments ⟨0, Atom.pullbackPair?._proof_3⟩, pullback.counterexampleMap ⁻¹' arguments ⟨1, Atom.pullbackPair?._proof_4⟩) :: pullback.pairs atoms
          @[simp]
          theorem Algebraic.Fusion.SemifilterPullback.pairs_cons_or {Γ : Type u_1} {Δ : Type u_2} {source : SetProblem Γ} {target : SetProblem Δ} {admissible : SemifilterClass source} (pullback : SemifilterPullback source target admissible) (arguments : Fin (AndOr.signature.Arity AndOr.Op.or) → Set Δ) (atoms : List (Atom AndOr.signature (Set Δ))) :
          pullback.pairs ({ op := AndOr.Op.or, arguments := arguments } :: atoms) = pullback.pairs atoms
          theorem Algebraic.Fusion.SemifilterPullback.pairs_length {Γ : Type u_1} {Δ : Type u_2} {source : SetProblem Γ} {target : SetProblem Δ} {admissible : SemifilterClass source} (pullback : SemifilterPullback source target admissible) (atoms : List (Atom AndOr.signature (Set Δ))) :
          (pullback.pairs atoms).length = Atom.listCost atoms AndOr.andCost

          Pulled-back pair count is the AND weight of the atoms.

          theorem Algebraic.Fusion.Atom.preservedBy_pullbackModel {Γ : Type u_1} {Δ : Type u_2} {source : SetProblem Γ} {target : SetProblem Δ} {admissible : SemifilterClass source} (pullback : SemifilterPullback source target admissible) (atom : Atom AndOr.signature (Set Δ)) (witness : SemifilterWitness source admissible) (pairPreserved : ∀ (pair : Pair source), pullbackPair? pullback atom = some pair → witness.filter.PreservesPair pair) :
          atom.PreservedBy pullback.model witness

          Preserving an atom's pulled-back pair is enough to preserve the atom in the pullback observation model.

          def Algebraic.Fusion.SemifilterPullback.pairCoverOfCircuit {Γ : Type u_1} {Δ : Type u_2} {source : SetProblem Γ} {target : SetProblem Δ} {admissible : SemifilterClass source} (pullback : SemifilterPullback source target admissible) (circuit : Circuit AndOr.signature target.inputCount 1) (constructs : Problem.Constructs target circuit (AndOr.setInterpretation Δ)) :
          PairCover source admissible

          A constructing target circuit yields a pair cover of the source problem.

          Equations
          Instances For
            theorem Algebraic.Fusion.SemifilterPullback.pairCoverOfCircuit_cost {Γ : Type u_1} {Δ : Type u_2} {source : SetProblem Γ} {target : SetProblem Δ} {admissible : SemifilterClass source} (pullback : SemifilterPullback source target admissible) (circuit : Circuit AndOr.signature target.inputCount 1) (constructs : Problem.Constructs target circuit (AndOr.setInterpretation Δ)) :
            (pullback.pairCoverOfCircuit circuit constructs).cost = circuit.cost AndOr.andCost

            Pullback preserves the exact AND cost of a constructing circuit.

            theorem Algebraic.Fusion.SemifilterPullback.lowerBound {Γ : Type u_1} {Δ : Type u_2} {source : SetProblem Γ} {target : SetProblem Δ} {admissible : SemifilterClass source} {L : ℕ} (pullback : SemifilterPullback source target admissible) (coverLowerBound : ∀ (cover : PairCover source admissible), L ≤ cover.cost) (circuit : Circuit AndOr.signature target.inputCount 1) (constructs : Problem.Constructs target circuit (AndOr.setInterpretation Δ)) :

            A lower bound for source pair covers transfers across a pullback to every constructing target circuit.