Documentation

Complexity.Computability.Circuit.Fusion.Pullback

Pulling circuit covers back to counterexamples #

A map from counterexamples of one problem into the ambient space of a circuit, together with reference points for each witness, transports its AND pairs to a cover. Each reference point must belong to the circuit's target, every mapped counterexample must avoid that target, and reference-true inputs must be accepted by the pulled-back observation.

Main definitions #

Main results #

References #

def Cslib.Circuits.Fusion.PairCover.ofCircuitPullback {U : Type u_1} {V : Type u_2} {n k m : ℕ} {target : Set U} {input : Fin n → Set U} {admissible : Semifilter ↑targetᶜ → Prop} {target' : Set V} (c : Circuit Monotone.signature k m) (input' : Fin k → Set V) (o : Fin m) (hc : c.eval (Monotone.setInterpretation V) input' o = target') (f : ↑targetᶜ → V) (reference : SemifilterWitness target input admissible → ↑target') (hin : ∀ (w : SemifilterWitness target input admissible) (i : Fin k), ↑(reference w) ∈ input' i → w.filter (f ⁻¹' input' i)) (hout : ∀ (x : ↑targetᶜ), f x ∉ target') :
PairCover target input admissible

A circuit whose accepting references and rejecting counterexamples transport the input observations yields a pair cover of the original problem. No injectivity of the map is needed.

Instances For
    @[simp]
    theorem Cslib.Circuits.Fusion.PairCover.length_ofCircuitPullback {U : Type u_1} {V : Type u_2} {n k m : ℕ} {target : Set U} {input : Fin n → Set U} {admissible : Semifilter ↑targetᶜ → Prop} {target' : Set V} (c : Circuit Monotone.signature k m) (input' : Fin k → Set V) (o : Fin m) (hc : c.eval (Monotone.setInterpretation V) input' o = target') (f : ↑targetᶜ → V) (reference : SemifilterWitness target input admissible → ↑target') (hin : ∀ (w : SemifilterWitness target input admissible) (i : Fin k), ↑(reference w) ∈ input' i → w.filter (f ⁻¹' input' i)) (hout : ∀ (x : ↑targetᶜ), f x ∉ target') :
    (ofCircuitPullback c input' o hc f reference hin hout).pairs.length = c.program.cost Monotone.andCost

    Pullback retains one pair for every AND gate, including repeated or unused gates.