Documentation

Linglib.Core.Order.PullbackPreorder

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:

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.

structure Core.Order.PullbackPreorder (Carrier : Type u_1) (Target : Type u_2) [Preorder Target] extends Preorder Carrier :
Type (max u_1 u_2)

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.

Instances For
    @[implicit_reducible]
    instance Core.Order.PullbackPreorder.instDecidableLe {Carrier : Type u_1} {Target : Type u_2} [Preorder Target] (o : PullbackPreorder Carrier Target) (a a' : Carrier) :
    Decidable (a a')
    Equations
    def Core.Order.PullbackPreorder.ofProj {Carrier : Type u_1} {Target : Type u_2} [Preorder Target] (proj : CarrierTarget) (dec : (a a' : Carrier) → Decidable (proj a proj a')) :
    PullbackPreorder Carrier Target

    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
    Instances For
      theorem Core.Order.PullbackPreorder.coarsen_via_monotone {Carrier : Type u_3} {F1 : Type u_4} {F2 : Type u_5} [Preorder F1] [Preorder F2] (o1 : PullbackPreorder Carrier F1) (o2 : PullbackPreorder Carrier F2) (φ : F1F2) (hmono : Monotone φ) (hcoh : ∀ (c : Carrier), o2.proj c = φ (o1.proj c)) {a a' : Carrier} (h : a a') :
      a a'

      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.