Horn scale: list of expressions ordered by semantic strength.
- members : List α
Members ordered from weakest to strongest.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- Alternatives.scalePosition s x = List.findIdx? (fun (x_1 : α) => x_1 == x) s.members
Instances For
Equations
- Alternatives.isWeaker s x y = match Alternatives.scalePosition s x, Alternatives.scalePosition s y with | some px, some py => decide (px < py) | x, x_1 => false
Instances For
Equations
- Alternatives.isStronger s x y = Alternatives.isWeaker s y x
Instances For
Equations
- Alternatives.weakerAlternatives s x = match Alternatives.scalePosition s x with | some px => List.take px s.members | none => []
Instances For
Equations
- Alternatives.Quantifiers.instBEqQuantExpr.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Alternatives.Quantifiers.QuantExpr.ofString? "none" = some Alternatives.Quantifiers.QuantExpr.none_
- Alternatives.Quantifiers.QuantExpr.ofString? "some" = some Alternatives.Quantifiers.QuantExpr.some_
- Alternatives.Quantifiers.QuantExpr.ofString? "most" = some Alternatives.Quantifiers.QuantExpr.most
- Alternatives.Quantifiers.QuantExpr.ofString? "all" = some Alternatives.Quantifiers.QuantExpr.all
- Alternatives.Quantifiers.QuantExpr.ofString? "every" = some Alternatives.Quantifiers.QuantExpr.all
- Alternatives.Quantifiers.QuantExpr.ofString? x✝ = none
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Alternatives.Quantifiers.entails Alternatives.Quantifiers.QuantExpr.all Alternatives.Quantifiers.QuantExpr.some_ = true
- Alternatives.Quantifiers.entails Alternatives.Quantifiers.QuantExpr.all Alternatives.Quantifiers.QuantExpr.most = true
- Alternatives.Quantifiers.entails Alternatives.Quantifiers.QuantExpr.all Alternatives.Quantifiers.QuantExpr.all = true
- Alternatives.Quantifiers.entails Alternatives.Quantifiers.QuantExpr.most Alternatives.Quantifiers.QuantExpr.some_ = true
- Alternatives.Quantifiers.entails Alternatives.Quantifiers.QuantExpr.most Alternatives.Quantifiers.QuantExpr.most = true
- Alternatives.Quantifiers.entails Alternatives.Quantifiers.QuantExpr.some_ Alternatives.Quantifiers.QuantExpr.some_ = true
- Alternatives.Quantifiers.entails Alternatives.Quantifiers.QuantExpr.none_ Alternatives.Quantifiers.QuantExpr.none_ = true
- Alternatives.Quantifiers.entails x✝¹ x✝ = false
Instances For
Equations
- Alternatives.Quantifiers.instBEqQuantWorld.beq { count := a } { count := b } = (a == b)
- Alternatives.Quantifiers.instBEqQuantWorld.beq x✝¹ x✝ = false
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Intensional meaning: quantifier as function from worlds to truth values.
Equations
- Alternatives.Quantifiers.worldMeaning maxN Alternatives.Quantifiers.QuantExpr.none_ x✝ = (↑x✝.count == 0)
- Alternatives.Quantifiers.worldMeaning maxN Alternatives.Quantifiers.QuantExpr.some_ x✝ = decide (↑x✝.count ≥ 1)
- Alternatives.Quantifiers.worldMeaning maxN Alternatives.Quantifiers.QuantExpr.most x✝ = decide (↑x✝.count > maxN / 2)
- Alternatives.Quantifiers.worldMeaning maxN Alternatives.Quantifiers.QuantExpr.all x✝ = (↑x✝.count == maxN)
Instances For
Equations
- Alternatives.Quantifiers.allWorlds maxN = List.filterMap (fun (n : ℕ) => if h : n < maxN + 1 then some { count := ⟨n, h⟩ } else none) (List.range (maxN + 1))
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
- Alternatives.Connectives.instBEqConnExpr.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
Instances For
Equations
Instances For
Equations
- Alternatives.Connectives.entails Alternatives.Connectives.ConnExpr.and_ Alternatives.Connectives.ConnExpr.or_ = true
- Alternatives.Connectives.entails Alternatives.Connectives.ConnExpr.and_ Alternatives.Connectives.ConnExpr.and_ = true
- Alternatives.Connectives.entails Alternatives.Connectives.ConnExpr.or_ Alternatives.Connectives.ConnExpr.or_ = true
- Alternatives.Connectives.entails x✝¹ x✝ = false
Instances For
Instances For
Equations
- Alternatives.Modals.instBEqModalExpr.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- Alternatives.Modals.ModalExpr.ofString? "possible" = some Alternatives.Modals.ModalExpr.possible
- Alternatives.Modals.ModalExpr.ofString? "might" = some Alternatives.Modals.ModalExpr.possible
- Alternatives.Modals.ModalExpr.ofString? "may" = some Alternatives.Modals.ModalExpr.possible
- Alternatives.Modals.ModalExpr.ofString? "necessary" = some Alternatives.Modals.ModalExpr.necessary
- Alternatives.Modals.ModalExpr.ofString? "must" = some Alternatives.Modals.ModalExpr.necessary
- Alternatives.Modals.ModalExpr.ofString? x✝ = none
Instances For
Equations
- Alternatives.Modals.ModalExpr.possible.toString = "possible"
- Alternatives.Modals.ModalExpr.necessary.toString = "necessary"
Instances For
Equations
Equations
Instances For
Equations
- Alternatives.Modals.entails Alternatives.Modals.ModalExpr.necessary Alternatives.Modals.ModalExpr.possible = true
- Alternatives.Modals.entails Alternatives.Modals.ModalExpr.necessary Alternatives.Modals.ModalExpr.necessary = true
- Alternatives.Modals.entails Alternatives.Modals.ModalExpr.possible Alternatives.Modals.ModalExpr.possible = true
- Alternatives.Modals.entails x✝¹ x✝ = false
Instances For
Numerals and Horn Scales #
@cite{horn-1972} @cite{kennedy-2015}
Numerals are NOT represented as a HornScale here because:
Under lower-bound semantics, numerals do form a scale (⟨1, 2, 3,...⟩), but it is infinite — a finite
HornScalelist can't represent it correctly ("five" would have no stronger alternatives).Under bilateral semantics, numerals are non-monotonic and do NOT form a Horn scale at all. The relevant alternatives are {bare n, Class A n, Class B n}, not other numerals.
Both cases are handled properly in
Theories/Semantics.Montague/Determiner/Numeral/Semantics.lean:
NumeralTheory.isStrongerThancomputes strength for any theoryNumeralAlternativerepresents Kennedy's alternative setslowerBound_monotonic/bilateral_not_monotonicprove the key contrast
Singular/Plural as a Horn Scale #
@cite{sauerland-2003} @cite{spector-2007} @cite{tieu-etal-2020}
The singular and plural morphemes form a Horn scale ⟨singular, plural⟩ where singular ("a giraffe") is the stronger alternative to plural ("giraffes").
Under the implicature approach to multiplicity inferences, the plural literally means "one or more" and the "more than one" inference arises as a scalar implicature: the listener reasons that the speaker chose the weaker "giraffes" over the stronger "a giraffe," implying that the singular alternative is false — hence more than one.
This scale is structurally unusual: the alternatives differ in morphology (number marking), not in lexical choice (unlike some/all, or/and).
- singular : NumberExpr
- plural : NumberExpr
Instances For
Equations
- Alternatives.Number.instBEqNumberExpr.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Alternatives.Number.NumberExpr.singular.toString = "singular"
- Alternatives.Number.NumberExpr.plural.toString = "plural"
Instances For
Singular is stronger: "a giraffe" entails "giraffes" (one or more).
Equations
Instances For
Equations
Instances For
- upward : Monotonicity
- downward : Monotonicity
Instances For
Equations
Equations
- Alternatives.instBEqMonotonicity.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Sentence polarity determines monotonicity context: positive sentences are upward-entailing, negative are downward-entailing. This is the Ladusaw (1979) / Fauconnier (1975) connection.
Equations
Instances For
A Horn scale with semantic content: a pair of propositions where
stronger entails weaker but not vice versa.
This is the proposition-level counterpart of HornScale α (form-level).
The entailment asymmetry drives scalar implicatures via exhaustification.
- name : String
Name of the scale
- weakerTerm : String
The weaker scalar term (e.g., "some")
- strongerTerm : String
The stronger scalar term (e.g., "all")
- weaker : World → Prop
Semantic denotation of weaker term
- stronger : World → Prop
Semantic denotation of stronger term
Stronger entails weaker
Weaker does not entail stronger (non-trivial scale)
Instances For
Worlds for quantifier scale: number satisfying predicate (0 to 3).
Equations
Instances For
Some does not entail all.
The some/all semantic scale.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
"A or B" (inclusive).
Equations
Instances For
"A and B".
Equations
Instances For
The or/and semantic scale.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Worlds for modal scale: accessibility relation outcomes.
- none : ModalWorld
- some : ModalWorld
- all : ModalWorld
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
"Possibly P" = at least one accessible world has P.
Equations
Instances For
"Necessarily P" = all accessible worlds have P.
Equations
Instances For
Necessary entails possible.
Possible does not entail necessary.
The possible/necessary semantic scale.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An alternative source generates candidate alternatives for an expression.
Alternatives include the expression itself (standard convention).
The exhaustification operator (exhB) determines which alternatives
to exclude — the source just provides the candidates.
- alternatives : Form → List Form
Candidate alternatives to
x, includingxitself.
Instances
Build an AlternativeSource from any HornScale.
Equations
- Alternatives.alternativeSourceOfScale s = { alternatives := fun (x : α) => s.members }
Instances For
Quantifier alternatives: {none, some, most, all}.
Equations
- Alternatives.instAlternativeSourceQuantExpr = { alternatives := fun (x : Alternatives.Quantifiers.QuantExpr) => Alternatives.Quantifiers.quantScale.members }
Connective alternatives: {or, and}.
Equations
- Alternatives.instAlternativeSourceConnExpr = { alternatives := fun (x : Alternatives.Connectives.ConnExpr) => Alternatives.Connectives.connScale.members }
Modal alternatives: {possible, necessary}.
Equations
- Alternatives.instAlternativeSourceModalExpr = { alternatives := fun (x : Alternatives.Modals.ModalExpr) => Alternatives.Modals.modalScale.members }
Number alternatives: {plural, singular}.
Equations
- Alternatives.instAlternativeSourceNumberExpr = { alternatives := fun (x : Alternatives.Number.NumberExpr) => Alternatives.Number.numberScale.members }
Which Horn scale a closed-class expression belongs to, and where.
Numerals are excluded: under lower-bound semantics they form an infinite
scale (not representable as a finite HornScale), and under bilateral
semantics they don't form a scale at all.
- quantifier (pos : Quantifiers.QuantExpr) : ScaleMembership
- connective (pos : Connectives.ConnExpr) : ScaleMembership
- modal (pos : Modals.ModalExpr) : ScaleMembership
Instances For
Equations
- Alternatives.instDecidableEqScaleMembership.decEq (Alternatives.ScaleMembership.quantifier a) (Alternatives.ScaleMembership.quantifier b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Alternatives.instDecidableEqScaleMembership.decEq (Alternatives.ScaleMembership.quantifier pos) (Alternatives.ScaleMembership.connective pos_1) = isFalse ⋯
- Alternatives.instDecidableEqScaleMembership.decEq (Alternatives.ScaleMembership.quantifier pos) (Alternatives.ScaleMembership.modal pos_1) = isFalse ⋯
- Alternatives.instDecidableEqScaleMembership.decEq (Alternatives.ScaleMembership.connective pos) (Alternatives.ScaleMembership.quantifier pos_1) = isFalse ⋯
- Alternatives.instDecidableEqScaleMembership.decEq (Alternatives.ScaleMembership.connective a) (Alternatives.ScaleMembership.connective b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Alternatives.instDecidableEqScaleMembership.decEq (Alternatives.ScaleMembership.connective pos) (Alternatives.ScaleMembership.modal pos_1) = isFalse ⋯
- Alternatives.instDecidableEqScaleMembership.decEq (Alternatives.ScaleMembership.modal pos) (Alternatives.ScaleMembership.quantifier pos_1) = isFalse ⋯
- Alternatives.instDecidableEqScaleMembership.decEq (Alternatives.ScaleMembership.modal pos) (Alternatives.ScaleMembership.connective pos_1) = isFalse ⋯
- Alternatives.instDecidableEqScaleMembership.decEq (Alternatives.ScaleMembership.modal a) (Alternatives.ScaleMembership.modal b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- Alternatives.instBEqScaleMembership.beq (Alternatives.ScaleMembership.quantifier a) (Alternatives.ScaleMembership.quantifier b) = (a == b)
- Alternatives.instBEqScaleMembership.beq (Alternatives.ScaleMembership.connective a) (Alternatives.ScaleMembership.connective b) = (a == b)
- Alternatives.instBEqScaleMembership.beq (Alternatives.ScaleMembership.modal a) (Alternatives.ScaleMembership.modal b) = (a == b)
- Alternatives.instBEqScaleMembership.beq x✝¹ x✝ = false
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Look up the scale position of a word form.
Equations
- Alternatives.scaleOf "some" = some (Alternatives.ScaleMembership.quantifier Alternatives.Quantifiers.QuantExpr.some_)
- Alternatives.scaleOf "every" = some (Alternatives.ScaleMembership.quantifier Alternatives.Quantifiers.QuantExpr.all)
- Alternatives.scaleOf "all" = some (Alternatives.ScaleMembership.quantifier Alternatives.Quantifiers.QuantExpr.all)
- Alternatives.scaleOf "most" = some (Alternatives.ScaleMembership.quantifier Alternatives.Quantifiers.QuantExpr.most)
- Alternatives.scaleOf "no" = some (Alternatives.ScaleMembership.quantifier Alternatives.Quantifiers.QuantExpr.none_)
- Alternatives.scaleOf "none" = some (Alternatives.ScaleMembership.quantifier Alternatives.Quantifiers.QuantExpr.none_)
- Alternatives.scaleOf "or" = some (Alternatives.ScaleMembership.connective Alternatives.Connectives.ConnExpr.or_)
- Alternatives.scaleOf "and" = some (Alternatives.ScaleMembership.connective Alternatives.Connectives.ConnExpr.and_)
- Alternatives.scaleOf "might" = some (Alternatives.ScaleMembership.modal Alternatives.Modals.ModalExpr.possible)
- Alternatives.scaleOf "may" = some (Alternatives.ScaleMembership.modal Alternatives.Modals.ModalExpr.possible)
- Alternatives.scaleOf "possible" = some (Alternatives.ScaleMembership.modal Alternatives.Modals.ModalExpr.possible)
- Alternatives.scaleOf "must" = some (Alternatives.ScaleMembership.modal Alternatives.Modals.ModalExpr.necessary)
- Alternatives.scaleOf "necessary" = some (Alternatives.ScaleMembership.modal Alternatives.Modals.ModalExpr.necessary)
- Alternatives.scaleOf x✝ = none
Instances For
The stronger alternatives of a scale position, as surface forms.
Equations
- Alternatives.strongerAlternativeForms (Alternatives.ScaleMembership.quantifier a) = List.map toString (Alternatives.strongerAlternatives Alternatives.Quantifiers.quantScale a)
- Alternatives.strongerAlternativeForms (Alternatives.ScaleMembership.connective a) = List.map toString (Alternatives.strongerAlternatives Alternatives.Connectives.connScale a)
- Alternatives.strongerAlternativeForms (Alternatives.ScaleMembership.modal a) = List.map toString (Alternatives.strongerAlternatives Alternatives.Modals.modalScale a)