Documentation

Linglib.Core.Order.FeaturePreorder

Feature-Pullback Preorders #

A FeaturePreorder Carrier Feature is a Preorder Carrier realized as the pullback of a Preorder Feature through feature : Carrier → Feature. The induced order is a ≤ a' ↔ feature a ≤ feature a'.

This is mathlib's Preorder.lift packaged with the witnessing feature data 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 feature spaces lifts dominance under the finer feature to dominance under the coarser feature, provided f2 = φ ∘ f1. This is the schema underlying "Pareto-on-violations ⇒ Pareto-on-satisfaction" and any other forgetful coarsening between qualitatively-comparable representations.

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

A preorder on Carrier realized as the pullback of a Preorder Feature through feature : Carrier → Feature.

extends Preorder Carrier, so all of mathlib's order vocabulary (, <, Maximal, IsMax) is available; feature/decLE expose the construction data. le_iff_feature is the load-bearing coherence field — the bundled agrees with the feature pullback.

Instances For
    @[implicit_reducible]
    instance Core.Order.FeaturePreorder.instDecidableLe {Carrier : Type u_1} {Feature : Type u_2} [Preorder Feature] (o : FeaturePreorder Carrier Feature) (a a' : Carrier) :
    Decidable (a a')
    Equations
    def Core.Order.FeaturePreorder.ofFeature {Carrier : Type u_1} {Feature : Type u_2} [Preorder Feature] (feature : CarrierFeature) (dec : (a a' : Carrier) → Decidable (feature a feature a')) :
    FeaturePreorder Carrier Feature

    Smart constructor: build a FeaturePreorder from a feature map plus decidability of feature comparison. The induced is Preorder.lift, so le_iff_feature is Iff.rfl.

    Equations
    Instances For
      theorem Core.Order.FeaturePreorder.coarsen_via_monotone {Carrier : Type u_3} {F1 : Type u_4} {F2 : Type u_5} [Preorder F1] [Preorder F2] (o1 : FeaturePreorder Carrier F1) (o2 : FeaturePreorder Carrier F2) (φ : F1F2) (hmono : Monotone φ) (hcoh : ∀ (c : Carrier), o2.feature c = φ (o1.feature c)) {a a' : Carrier} (h : a a') :
      a a'

      Change of feature space (coarsening).

      Given two FeaturePreorders on the same carrier with feature maps o1.feature : Carrier → F1 and o2.feature : Carrier → F2, plus a monotone map φ : F1 → F2 such that o2.feature = φ ∘ o1.feature, dominance under o1 implies dominance under o2.

      The converse generally fails: collapsing the feature space discards information. This is the schema behind every "qualitative coarsening" bridge — e.g. pointwise-Pareto-on-violations ⇒ subset-of-satisfied in Core/Constraint/Pareto.lean.