Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions Linglib/Semantics/Attitudes/EpistemicThreshold.lean
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ function maps an entity to a degree on a scale, and the predicate holds
iff the degree meets a contextual/lexical threshold. Epistemic expressions
are gradable predicates on a probability scale bounded by [0, 1].

This connection is formalized in §8 via `epistemicAsGradable`.
This connection is formalized in §8 via `epistemicAsDirectedMeasure`.

## Unification of Three Formalizations

Expand Down Expand Up @@ -478,7 +478,7 @@ expressions.
def epistemicBoundedness : Core.Order.Boundedness := .closed

/-- An epistemic gradable predicate: an `EpistemicEntry` viewed as a
`GradablePredicate` on the probability scale.
`DirectedMeasure` on the probability scale.

The entity type is `E × (W → Bool)` (agent–proposition pairs), and the
measure function is agent credence `cr`. This makes the structural
Expand All @@ -487,9 +487,8 @@ def epistemicBoundedness : Core.Order.Boundedness := .closed
Polarity: threshold entries (`believes`, `must`, `likely`) are positive
(upward monotone: higher credence → more likely to satisfy). Reversed
entries (`uncertain`, `unlikely`) are negative (downward monotone). -/
def epistemicAsGradable (cr : AgentCredence E W) (_entry : EpistemicEntry)
: Semantics.Degree.GradablePredicate (E × (W → Bool)) ℚ where
form := ""
def epistemicAsDirectedMeasure (cr : AgentCredence E W) (_entry : EpistemicEntry)
: Semantics.Degree.DirectedMeasure ℚ (E × (W → Bool)) where
μ := fun ⟨a, φ⟩ => cr a φ
boundedness := epistemicBoundedness

Expand Down
16 changes: 0 additions & 16 deletions Linglib/Semantics/Degree/Abstraction.lean
Original file line number Diff line number Diff line change
Expand Up @@ -143,22 +143,6 @@ theorem matrixPredicate_monotone {Entity D : Type*} [Preorder D]
-- § 3. Degree Operators
-- ════════════════════════════════════════════════════

/-- Heim's `-er` operating on degree predicates (paper def. (6)):
⟦-er⟧(D₂)(D₁) = max(D₁) > max(D₂)
Takes two degree predicates and compares their maxima. -/
def erOnPredicates {D : Type*} [LE D] [LT D]
(_P₁ _P₂ : DegreePredicate D) (d₁ d₂ : D)
(_h₁ : IsMaxDeg _P₁ d₁) (_h₂ : IsMaxDeg _P₂ d₂) : Prop :=
d₁ > d₂

/-- Heim's `less` operator (paper (23)):
⟦less than P⟧ = λQ. max(Q) < max(P) -/
def lessOnPredicates {D : Type*} [LE D] [LT D]
(_P₁ _P₂ : DegreePredicate D) (d₁ d₂ : D)
(_h₁ : IsMaxDeg _P₁ d₁) (_h₂ : IsMaxDeg _P₂ d₂) : Prop :=
d₁ < d₂

/-- Heim comparative with measure function: the result of composing
`-er` with degree predicates derived from a monotone adjective.
Expand Down
43 changes: 2 additions & 41 deletions Linglib/Semantics/Degree/Bounds.lean
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ Two clusters of theorems:
`NoMinOrder`) interact with monotonicity to admit/block optima.

2. **Order-sensitive maximality** (§6b of legacy Scale.lean):
`maxOnScale R X`, `IsMaxDetermined`, `isAmbidirectional` — Rett 2026's
relation-parameterized MAX operator + ambidirectionality scaffolding.
`maxOnScale R X`, `isAmbidirectional` — Rett 2026's relation-parameterized
MAX operator + ambidirectionality predicate.

This file is part of the Phase A decomposition of the legacy
`Core/Scales/Scale.lean` dumping ground (master plan v4).
Expand Down Expand Up @@ -192,45 +192,6 @@ theorem maxOnScale_gt_closedInterval {α : Type*} [LinearOrder α]
def isAmbidirectional {α : Type*} (f : Set α → Prop) (B : Set α) : Prop :=
f B ↔ f Bᶜ

/-- A predicate `f` is **MAX_R-determined** iff its value depends only on
`maxOnScale R` of its argument: any two sets with the same `MAX_R`
yield the same `f`-verdict. The before/until/comparative theorems all
establish exactly this: *before* relates A to `MAX₍<₎` of B, the
comparative *than*-clause to `MAX₍≥₎` of the degree set, etc. -/
def IsMaxDetermined {α : Type*} (R : α → α → Prop) (f : Set α → Prop) : Prop :=
∀ B₁ B₂ : Set α, maxOnScale R B₁ = maxOnScale R B₂ → (f B₁ ↔ f B₂)

/-- **Shared informative bound** ⇒ ambidirectionality. The general
template behind Rett's typology: if a construction is `MAX_R`-determined
and `B` and `Bᶜ` share their `MAX_R`-bound, then the construction is
truth-conditionally insensitive to negation of B.

Each per-construction ambidirectionality theorem in the library is an
instance of this template — they prove the shared-bound side condition
for a specific `f` and a class of `B`'s, then this lemma packages the
result. See `Tense.TemporalConnectives.before_preEvent_ambidirectional`
for the canonical instance. -/
theorem ambidirectional_of_shared_max {α : Type*} {R : α → α → Prop}
(f : Set α → Prop) (hf : IsMaxDetermined R f) (B : Set α)
(hshared : maxOnScale R B = maxOnScale R Bᶜ) :
isAmbidirectional f B :=
hf B Bᶜ hshared

/-- **Converse**: an ambidirectional construction must share its `MAX_R`
bound between B and Bᶜ — but only when MAX_R alone *witnesses* the
distinction. Stated as a contrapositive to make the empirical content
explicit: if MAX_R differs between B and Bᶜ but the construction
cannot tell them apart by any *other* means (i.e. MAX_R-determined),
then the construction is non-ambidirectional. The full converse
requires assuming `f` separates sets with distinct MAX_R values, so
we instead expose this as a derived fact only under that assumption. -/
theorem not_ambidirectional_of_distinct_max_separated {α : Type*}
{R : α → α → Prop} (f : Set α → Prop) (B : Set α)
(hsep : ∀ B₁ B₂ : Set α,
maxOnScale R B₁ ≠ maxOnScale R B₂ → ¬ (f B₁ ↔ f B₂))
(hdiff : maxOnScale R B ≠ maxOnScale R Bᶜ) :
¬ isAmbidirectional f B :=
hsep B Bᶜ hdiff

/-- **Bridge**: `maxOnScale (· ≥ ·)` applied to the "at least" degree set
`{d | d ≤ μ(w)}` yields `{μ(w)}` — the singleton containing the true
Expand Down
14 changes: 1 addition & 13 deletions Linglib/Semantics/Degree/Defs.lean
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ economy classification is in `Kennedy.lean`. Klein-style delineation

## Main definitions

* `GradablePredicate` — measure-function interface extending `DirectedMeasure`
* `DegPType`, `StandardType` — DegP compositional taxonomy
* `ModifierDirection` — amplifier / downtoner axis
* `AdjectivalConstruction` — surface-construction type for evaluativity
Expand All @@ -24,17 +23,6 @@ economy classification is in `Kennedy.lean`. Klein-style delineation
namespace Semantics.Degree

open Core.Order (Boundedness)
/-- Minimal interface for a gradable predicate: a measure function mapping
entities to degrees on a scale with known boundedness.

Extends `DirectedMeasure D Entity` with a lexical `form` field. Every
degree framework (Kennedy, Heim, Schwarzschild) provides an instance;
Klein's delineation approach does not use degrees and so does not instantiate
this interface (see `Gradability/Delineation.lean`). -/
structure GradablePredicate (Entity D : Type*) [LinearOrder D]
extends Semantics.Degree.DirectedMeasure D Entity where
/-- The adjective's lexical form (for identification). -/
form : String

/-- The compositional structure of a Degree Phrase (DegP).

Expand Down Expand Up @@ -153,7 +141,7 @@ inductive AdjectiveClass where
/-- Necessity-relative threshold — *decent*, *acceptable* ([beltrama-2025]). -/
| mildlyPositive
/-- Non-gradable: no degree argument, no scale — *atomic*, *prime*,
*deceased*, *pregnant*. Outside the `GradablePredicate` fragment;
*deceased*, *pregnant*. Outside the gradable (`DirectedMeasure`) system;
consumers that classify a general adjective should map non-gradables
here rather than coercing them into a gradable class. -/
| nonGradable
Expand Down
11 changes: 5 additions & 6 deletions Linglib/Semantics/Degree/DirectedMeasure.lean
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@ import Linglib.Semantics.Degree.Predicate
[kennedy-2007] [kennedy-2015] [lassiter-goodman-2017] [krantz-1971]

A `DirectedMeasure D E` packages a degree type, entity type, measure function,
boundedness classification, and direction. The common algebraic core of
`GradablePredicate`, degree-domain constructors, and epistemic threshold
semantics.
boundedness classification, and direction. The common algebraic core of the
degree-domain constructors and epistemic threshold semantics.

## Main declarations

Expand Down Expand Up @@ -48,9 +47,9 @@ open Core.Order
an entity type `E`, a measure function `μ : E → D`, boundedness
(from `ComparativeScale`), and a direction.

Common algebraic core of `GradablePredicate` (which extends it with `form`),
the `numeral`/`adjective` domain constructors, and epistemic thresholds
(`DirectedMeasure ℚ (E × (W → Prop))`). The degree property (`atLeastDeg`
Common algebraic core of the `numeral`/`adjective` domain constructors and
epistemic thresholds (`epistemicAsDirectedMeasure`, on
`DirectedMeasure ℚ (E × (W → Bool))`). The degree property (`atLeastDeg`
for positive, `atMostDeg` for negative) is derived from `direction`, not
stored — per [lassiter-goodman-2017], the binary direction choice is the
fundamental parameter. -/
Expand Down
8 changes: 4 additions & 4 deletions Linglib/Semantics/Degree/Superlative.lean
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ namespace Semantics.Degree.Superlative
y ≠ x in C, height(x) > height(y). -/
def absoluteSuperlative {Entity D : Type*} [LinearOrder D]
(μ : Entity → D) (C : Set Entity) (x : Entity) : Prop :=
x ∈ C ∧ ∀ y ∈ C, y ≠ x → μ x > μ y
x ∈ C ∧ ∀ y ∈ C, y ≠ x → comparativeSem μ x y .positive

-- ════════════════════════════════════════════════════
-- § 2. Relative Superlative
Expand All @@ -52,7 +52,7 @@ def absoluteSuperlative {Entity D : Type*} [LinearOrder D]
def relativeSuperlative {Alt Entity D : Type*} [LinearOrder D]
(μ : Entity → D) (f : Alt → Entity) (focusedAlt : Alt)
(alternatives : Set Alt) : Prop :=
∀ a ∈ alternatives, a ≠ focusedAlt → μ (f focusedAlt) > μ (f a)
∀ a ∈ alternatives, a ≠ focusedAlt → comparativeSem μ (f focusedAlt) (f a) .positive

-- ════════════════════════════════════════════════════
-- § 3. Uniqueness and Definiteness
Expand Down Expand Up @@ -104,7 +104,7 @@ theorem superlative_iff_universal_comparative {Entity D : Type*} [LinearOrder D]
(μ : Entity → D) (C : Set Entity) (x : Entity) :
absoluteSuperlative μ C x ↔
x ∈ C ∧ ∀ y ∈ C, y ≠ x →
Semantics.Degree.comparativeSem μ x y .positive := by
simp [absoluteSuperlative, Semantics.Degree.comparativeSem]
Semantics.Degree.comparativeSem μ x y .positive :=
Iff.rfl

end Semantics.Degree.Superlative
Loading