Normality orderings (default reasoning over preorders) #
[KLM90] [Vel96] [Rud25a] [Kra81]
A normality ordering is just a Preorder on worlds: p.le w v means
w is at least as normal as v. There is no bespoke structure here —
the order is mathlib's Preorder, so the entire order API (<, Minimal,
order-duals, monotone maps) is available, and the default-reasoning
operations are thin definitions over it:
optimal p d— the most-normal worlds ind— is mathlib'sMinimal.connected p— totality — is∀ w v, p.le w v ∨ p.le v w.total = ⊤— the all-equal order — is the top ofCompleteLattice (Preorder W).refine p φ = p ⊓ crit φ— [Vel96]'s promote-φ update — is meet with the criterion preordercrit φ(w ≤ v ↔ (φ v → φ w)). The whole refinement calculus (commutativity, idempotence, the total order as unit) is therefore the meet-semilattice laws (inf_right_comm,inf_right_idem,inf_top_eq).fromProps— [Kra81]'s ordering-source order — isPreorder.ofCriteria.
This replaces the former hand-rolled NormalityOrder structure (a
field-for-field reimplementation of Preorder).
Optimality, totality, the total order #
The optimal (most normal) worlds in a domain d: mathlib's
Minimal for the membership predicate, under the preorder p.
Equations
- Core.Order.Normality.optimal p d = {w : W | Minimal (fun (x : W) => x ∈ d) w}
Instances For
A preorder is connected (total) if every two worlds are comparable.
Equations
- Core.Order.Normality.connected p = ∀ (w v : W), w ≤ v ∨ v ≤ w
Instances For
The total normality order: all worlds equally normal — the top of the lattice of preorders.
Equations
Instances For
Refinement as meet with a criterion preorder #
The criterion preorder for a property φ: w ≤ v ↔ (φ v → φ w).
Defined directly (not via Preorder.ofCriteria {φ}) so that
(refine p φ).le reduces definitionally to p.le … ∧ (φ … → φ …).
Equations
- Core.Order.Normality.crit φ = Preorder.ofLE (fun (w v : W) => φ v → φ w) ⋯ ⋯
Instances For
Refinement ([Vel96]): promote φ-worlds. refine p φ is the
meet of p with the criterion preorder for φ, so
(refine p φ).le w v ↔ p.le w v ∧ (φ v → φ w).
Equations
- Core.Order.Normality.refine p φ = p ⊓ Core.Order.Normality.crit φ
Instances For
After refinement by φ, a non-φ-world cannot be as normal as a φ-world.
Respect and persistence #
An ordering respects φ if it already promotes φ-worlds.
Equations
- Core.Order.Normality.respects p φ = ∀ (w v : W), w ≤ v → φ v → φ w
Instances For
Refining by the universal property is the identity (inf_top_eq).
Connectedness and optimality #
Construct a normality ordering from a list of propositions:
w ≤ v iff every proposition satisfied by v is satisfied by w.
This is Preorder.ofCriteria with the ordering source as criteria.
Equations
- Core.Order.Normality.fromProps props = Preorder.ofCriteria (fun (w : W) (p : W → Prop) => p w) {p : W → Prop | p ∈ props}
Instances For
Darwiche-Pearl representation conditions #
[DP97]: conditions on how a total preorder may change under
revision by μ. prior/post are the orderings before/after revision.
CR1: the ordering among μ-worlds is preserved.
Equations
- Core.Order.Normality.satisfies_CR1 prior post μ = ∀ (w v : W), μ w = true → μ v = true → (w ≤ v ↔ w ≤ v)
Instances For
CR2: the ordering among ¬μ-worlds is preserved.
Equations
- Core.Order.Normality.satisfies_CR2 prior post μ = ∀ (w v : W), μ w = false → μ v = false → (w ≤ v ↔ w ≤ v)
Instances For
CR3: a μ-world strictly below a ¬μ-world stays strictly below. The strict
order is spelled le … ∧ ¬ le … (definitionally <) so the relation is
decidable on finite world sets.
Equations
- Core.Order.Normality.satisfies_CR3 prior post μ = ∀ (w v : W), μ w = true → μ v = false → w ≤ v ∧ ¬v ≤ w → w ≤ v ∧ ¬v ≤ w
Instances For
CR4: a μ-world ≤ a ¬μ-world stays ≤.
Equations
- Core.Order.Normality.satisfies_CR4 prior post μ = ∀ (w v : W), μ w = true → μ v = false → w ≤ v → w ≤ v