Pullback Preorders #
A PullbackPreorder Carrier Target is a Preorder Carrier realized as
the pullback of a Preorder Target through a projection
proj : Carrier → Target. The induced order is
a ≤ a' ↔ proj a ≤ proj a'.
This is mathlib's Preorder.lift packaged with the witnessing
projection and decidability of ≤. It is the common pattern behind
several constructions in linglib:
Preorder.ofCriteria(Core/Order/OfCriteria.lean) — the general criteria-derived preorder; its≤is the pullback of⊇along the satisfied-set map (Preorder.ofCriteria_le_iff_subset), without the bundled decidability.Core.Order.SatisfactionOrdering α Criterion— the projection is the satisfied criterion set, the target is(Finset Criterion)ᵒᵈ(or equivalently, the violated set with standard ⊆).Core.Optimization.paretoPullbackPreorder— the projection is the score vector, the target isProfile β nwith pointwise ≤.Semantics.Modality.Kratzer.worldOrdering— the projection is the satisfied proposition set, same shape asSatisfactionOrdering.BundleLike.subsumptionPreorder— the projection is a feature bundle's valuation, the target isFeatures.Bundlewith subsumption.
The reusable theorem #
coarsen_via_monotone states that a monotone map φ : F1 → F2 between
targets lifts dominance under the finer projection to dominance under
the coarser one, provided o2.proj = φ ∘ o1.proj. This is the schema
underlying "Pareto-on-violations ⇒ Pareto-on-satisfaction" and any
other forgetful coarsening between qualitatively-comparable
representations.
A preorder on Carrier realized as the pullback of a
Preorder Target through proj : Carrier → Target.
extends Preorder Carrier, so all of mathlib's order vocabulary
(≤, <, Maximal, IsMax) is available; proj/decLE expose
the construction data. le_iff_proj is the load-bearing coherence
field — the bundled ≤ agrees with the projection pullback.
- proj : Carrier → Target
- decLE (a a' : Carrier) : Decidable (a ≤ a')
Instances For
Equations
- o.instDecidableLe a a' = o.decLE a a'
Smart constructor: build a PullbackPreorder from a projection plus
decidability of target comparison. The induced ≤ is
Preorder.lift, so le_iff_proj is Iff.rfl.
Equations
- Core.Order.PullbackPreorder.ofProj proj dec = { toPreorder := Preorder.lift proj, proj := proj, decLE := dec, le_iff_proj := ⋯ }
Instances For
Change of target (coarsening).
Given two PullbackPreorders on the same carrier with projections
o1.proj : Carrier → F1 and o2.proj : Carrier → F2, plus a
monotone map φ : F1 → F2 such that o2.proj = φ ∘ o1.proj,
dominance under o1 implies dominance under o2.
The converse generally fails: collapsing the target discards
information. This is the schema behind every "qualitative
coarsening" bridge — e.g. pointwise-Pareto-on-violations ⇒
subset-of-satisfied in Core/Optimization/Pareto.lean.