Transporting fusion models along homomorphisms #
A homomorphism of interpretations sends every circuit constructing a problem to a circuit constructing the homomorphic image of that problem, with the same gates. Consequently a fusion model for the image problem yields a fusion model for the source problem: witnesses are unchanged and both predicates are read through the homomorphism. Atoms of the source circuit map to atoms of the image circuit, so covers transport with exactly the same operation cost.
This is the basic bridge for lower bounds that observe a circuit only after a restriction, a quotient, or another structure-preserving projection of its semantic values. Each homomorphism yields one transported lower bound; combining several images requires additional accounting.
Push a construction problem forward along a map of carriers.
Equations
Instances For
A circuit constructing a problem constructs its homomorphic image.
Mapping atoms preserves the total weight of a list.
The result of a mapped atom is the image of the original result.
Pull a fusion model for the homomorphic image of a problem back to the source problem. Witnesses are unchanged; both predicates are evaluated on the image of a semantic value. The view is reducible so that the witness type of the pulled-back model is recognized as the witness type of the image model.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A witness preserves an atom in the pulled-back model exactly when it preserves the mapped atom in the image model.
Push a cover of the pulled-back model forward to the image model.
Equations
- Algebraic.Fusion.Cover.map h cover = { atoms := List.map (fun (atom : Algebraic.Fusion.Atom σ U₁) => atom.map h.map) cover.atoms, isCover := ⋯ }
Instances For
Pushing a cover forward preserves its cost.
Cover complexity can only grow when a model is pulled back.
A framework for the image model is a framework for the pulled-back model.
Equations
- Algebraic.Fusion.Framework.comap h framework = { bound := framework.bound, coverLowerBound := ⋯ }
Instances For
A fusion lower bound for the homomorphic image of a problem is a lower bound for every circuit constructing the source problem.
Cover complexity of an image model lower-bounds every source circuit.