Degree semantics: core types and classification carriers #
Foundational definitions for degree-based analyses of gradable expressions [Hei01] [Ken07] [Sch08f] [Bel25]:
- the discrete scale types
Degree max/Threshold max(the finite carriers used by the RSA fragment), and - the Kennedy-style classification enums (
PositiveStandard,AdjectiveClass, …).
Positive-form semantics is in Basic.lean; Kennedy 2007's interpretive economy is in
Kennedy.lean. The abstract theory works with plain measure functions μ : E → α
into a linear order — there is no measure typeclass.
Klein-style delineation [Kle80] has no measure function and lives in
Gradability/Delineation.lean.
Main definitions #
Degree max,Threshold max— discrete bounded scale types (Fin-backed).DegPType— DegP compositional taxonomy.PositiveStandard,AdjectiveClass— Kennedy-style classification carriers.
Adjectival surface-construction types (AdjectivalConstruction) live in
Gradability/Construction.lean.
Discrete bounded scales #
Degree max wraps Fin (max + 1) with LinearOrder, BoundedOrder, Fintype;
Threshold max wraps Fin max with a coercion to Degree max. These are the
discretized carriers used by the gradable-adjective RSA fragment.
A degree on a scale from 0 to max — a discretized continuous value
(height, temperature, …).
- value : Fin (max + 1)
Instances For
Equations
- Degree.instReprDegree.repr x✝ prec✝ = Std.Format.bracket "{ " (Std.Format.nil ++ Std.Format.text "value" ++ Std.Format.text " := " ++ (Std.Format.nest 9 (repr x✝.value)).group) " }"
Instances For
Equations
- Degree.instReprDegree = { reprPrec := Degree.instReprDegree.repr }
Equations
- Degree.instDecidableEqDegree.decEq { value := a } { value := b } = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- Degree.instInhabitedDegree = { default := { value := ⟨0, ⋯⟩ } }
Degree max inherits a linear order from Fin (max + 1).
Equations
- Degree.instLinearOrderDegree = LinearOrder.lift' Degree.Degree.value ⋯
All degrees from 0 to max.
Equations
- Degree.allDegrees max = List.map (fun (x : Fin (max + 1)) => { value := x }) (List.finRange (max + 1))
Instances For
Degree from Nat (clamped to max).
Equations
- Degree.Degree.ofNat max n = { value := ⟨min n max, ⋯⟩ }
Instances For
The numeric value of a degree.
Instances For
A threshold for a gradable adjective: x is "tall" iff degree x > threshold.
- value : Fin max
Instances For
Equations
- Degree.instReprThreshold = { reprPrec := Degree.instReprThreshold.repr }
Equations
- Degree.instReprThreshold.repr x✝ prec✝ = Std.Format.bracket "{ " (Std.Format.nil ++ Std.Format.text "value" ++ Std.Format.text " := " ++ (Std.Format.nest 9 (repr x✝.value)).group) " }"
Instances For
Equations
- Degree.instDecidableEqThreshold.decEq { value := a } { value := b } = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- Degree.instInhabitedThresholdOfNeZeroNat = { default := { value := ⟨0, ⋯⟩ } }
Threshold max inherits a linear order from Fin max.
Equations
- Degree.instLinearOrderThreshold = LinearOrder.lift' Degree.Threshold.value ⋯
All thresholds from 0 to max - 1.
Equations
- Degree.allThresholds max x✝ = List.map (fun (x : Fin max) => { value := x }) (List.finRange max)
Instances For
The numeric value of a threshold.
Instances For
Equations
- Degree.instFintypeDegree = Fintype.ofEquiv (Fin (max + 1)) { toFun := Degree.Degree.mk, invFun := Degree.Degree.value, left_inv := ⋯, right_inv := ⋯ }
Equations
- Degree.instFintypeThresholdOfNeZeroNat = Fintype.ofEquiv (Fin max) { toFun := Degree.Threshold.mk, invFun := Degree.Threshold.value, left_inv := ⋯, right_inv := ⋯ }
Coercion: a Threshold embeds into Degree via Fin.castSucc.
Equations
- Degree.instCoeThresholdDegree = { coe := fun (t : Degree.Threshold max) => { value := t.value.castSucc } }
Construct a degree by literal: deg 5 : Degree 10.
Equations
- Degree.deg n h = { value := ⟨n, ⋯⟩ }
Instances For
Construct a threshold by literal: thr 5 : Threshold 10.
Equations
- Degree.thr n h = { value := ⟨n, h⟩ }
Instances For
DegP compositional taxonomy #
The compositional structure of a Degree Phrase (DegP).
In all degree frameworks, DegP is the syntactic locus where degree
comparison happens. The internal structure varies — Kennedy posits
[DegP [Deg -er/as/est] [DegComplement than-clause]], Heim posits a
sentential -er operator — but the framework-independent taxonomy is
captured here.
- comparative : DegPType
-er/ more. - equative : DegPType
as...as. - superlative : DegPType
-est/ most. - excessive : DegPType
too.
- sufficiency : DegPType
enough.
Instances For
Equations
- Degree.instDecidableEqDegPType x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Degree.instReprDegPType = { reprPrec := Degree.instReprDegPType.repr }
Equations
- Degree.instReprDegPType.repr Degree.DegPType.comparative prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Degree.DegPType.comparative")).group prec✝
- Degree.instReprDegPType.repr Degree.DegPType.equative prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Degree.DegPType.equative")).group prec✝
- Degree.instReprDegPType.repr Degree.DegPType.superlative prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Degree.DegPType.superlative")).group prec✝
- Degree.instReprDegPType.repr Degree.DegPType.excessive prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Degree.DegPType.excessive")).group prec✝
- Degree.instReprDegPType.repr Degree.DegPType.sufficiency prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Degree.DegPType.sufficiency")).group prec✝
Instances For
Kennedy-style classification carriers #
Positive form standard: how the contextual threshold is determined. For open scales, the standard is the contextual norm ([Ken07]); for closed scales, it is the relevant endpoint fixed by Interpretive Economy.
- contextual : PositiveStandard
Open-scale: θ = norm relative to comparison class.
- minEndpoint : PositiveStandard
Lower-bounded: θ = minimum (e.g., "bent", "wet").
- maxEndpoint : PositiveStandard
Upper-bounded / closed: θ = maximum (e.g., "full", "dry").
- functional : PositiveStandard
Necessity standard: θ = minimum value for pursuit ([Bel25]).
Instances For
Equations
- Degree.instDecidableEqPositiveStandard x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Degree.instReprPositiveStandard = { reprPrec := Degree.instReprPositiveStandard.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Whether the positive standard depends on contextual domain information.
[Ken07] argues the comparison class is not a semantic argument
of pos (contra [Kle80]), replacing it with the standard-fixing
function s: ⟦pos⟧ = λg.λx. g(x) ≥ s(g). For relative (open-scale)
adjectives, s still requires contextual domain information; for
absolute (closed-scale) adjectives the standard comes from scale
endpoints via Interpretive Economy.
Equations
Instances For
Equations
- Degree.instDecidablePredPositiveStandardRequiresComparisonClass Degree.PositiveStandard.contextual = isTrue Degree.instDecidablePredPositiveStandardRequiresComparisonClass._proof_1
- Degree.instDecidablePredPositiveStandardRequiresComparisonClass Degree.PositiveStandard.minEndpoint = isFalse Degree.instDecidablePredPositiveStandardRequiresComparisonClass._proof_2
- Degree.instDecidablePredPositiveStandardRequiresComparisonClass Degree.PositiveStandard.maxEndpoint = isFalse Degree.instDecidablePredPositiveStandardRequiresComparisonClass._proof_3
- Degree.instDecidablePredPositiveStandardRequiresComparisonClass Degree.PositiveStandard.functional = isTrue Degree.instDecidablePredPositiveStandardRequiresComparisonClass._proof_4
Kennedy's adjective classification by scale structure and standard
type [Ken07] [KMcN05], plus a
nonGradable case for adjectives outside the degree-based fragment.
- relativeGradable : AdjectiveClass
Standard varies with comparison class — tall, expensive, big.
- absoluteMaximum : AdjectiveClass
Threshold fixed at scale maximum — full, straight, closed, dry.
- absoluteMinimum : AdjectiveClass
Threshold fixed at scale minimum — wet, bent, open, dirty.
- mildlyPositive : AdjectiveClass
Necessity-relative threshold — decent, acceptable ([Bel25]).
- nonGradable : AdjectiveClass
Non-gradable: no degree argument, no scale — atomic, prime, 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.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Degree.instReprAdjectiveClass = { reprPrec := Degree.instReprAdjectiveClass.repr }
Equations
- Degree.instDecidableEqAdjectiveClass x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Coarse two-way classification: relative vs absolute. Collapses
absoluteMaximum and absoluteMinimum.