Documentation

Linglib.Semantics.Degree.Antonymy

Antonymy: Contradictory vs. Contrary Negation #

[krifka-2007b] [cruse-1986] [Hor89]

Two models of gradable adjective antonymy and their formal properties.

Contradictory model (single threshold θ): happy and unhappy partition the scale. contradictoryNeg d θ = !positiveMeaning d θ — double negation eliminates and "not unhappy" = "happy".

Contrary model (two thresholds θ_neg < θ_pos): happy and unhappy leave a gap. notContraryNegMeaning d tp ≠ positiveMeaning' d tp in the gap region. Double negation does NOT eliminate.

[krifka-2007b] argues that antonyms are literally contradictory (single θ) and the gap emerges through pragmatic strengthening (M-principle). The contrary model captures the effective semantics after strengthening. Both models are formalized here; the pragmatic derivation connecting them is in Studies/Krifka2007b.lean.

The core operations (contradictoryNeg, contraryNeg, inGapRegion, ThresholdPair, positiveMeaning', contraryNegMeaning, notContraryNegMeaning) are defined in Gradability/Adjective.lean.

Contradictory Negation: Involutory (DNE holds) #

@[simp]
theorem Degree.Antonymy.contradictory_is_complement {max : } (d : Bounded max) (θ : Threshold max) :

Contradictory negation is the propositional complement of positive meaning. Both compute threshold comparisons: d ≤ ↑θ vs ↑θ < d.

theorem Degree.Antonymy.contradictory_dne {max : } (d : Bounded max) (θ : Threshold max) :

Double contradictory negation eliminates: "not [not happy]" = "happy".

[krifka-2007b]: this is the LITERAL semantics. If antonyms are contradictory, then "not unhappy" and "happy" are synonymous — the puzzle that motivates pragmatic strengthening.

theorem Degree.Antonymy.contradictory_exhaustive {max : } (d : Bounded max) (θ : Threshold max) :

Under contradictory semantics, the scale is exhaustively partitioned: every degree is either positive or in the antonym region, with no gap.

Contrary Negation: Gap (DNE fails) #

@[simp]

The gap region is exactly "not unhappy" ∧ "not happy": degrees that escape the contrary negative without reaching the positive threshold.

theorem Degree.Antonymy.contrary_gap_exists {max : } (tp : ThresholdPair max) (h : { value := tp.neg.value.castSucc } < { value := tp.pos.value.castSucc }) :
∃ (d : Bounded max), notContraryNegMeaning d tp ¬positiveMeaning' d tp

When the gap is strict (θ_neg < θ_pos), there exists a degree that is "not unhappy" but NOT "happy" — double negation through contrary fails. Witness: the negative threshold itself (as a degree).

theorem Degree.Antonymy.gap_nonempty {max : } (tp : ThresholdPair max) (h : { value := tp.neg.value.castSucc } < { value := tp.pos.value.castSucc }) :
∃ (d : Bounded max), inGapRegion d tp

The gap region is nonempty when θ_neg < θ_pos.

The surface quadruplet and prediction skeleton #

[cruse-1986] [Hor89] [krifka-2007b] [TF19]

AntonymForm (happy / not happy / unhappy / not unhappy), its two contested denotations, and the polarity flip.

The four surface forms generated from an antonymic adjective pair (positive, negative) by sentential negation. Four-cell substrate; no semantic commitment — a paper claiming all four forms collapse to two (contradictory analysis) and a paper claiming a four-way gap (contrary analysis) both consume this enum and provide their own denotations.

Instances For
    def Degree.instReprAntonymForm.repr :
    AntonymFormStd.Format
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      @[instance_reducible]
      Equations

      Default morphological-syntactic complexity of each form: count of negation operators (morphological un- + syntactic not), scaled to [krifka-2007b]'s integer ordering 0 < 2 < 3 < 5. Matches [TF19]'s utteranceCost exactly.

      Per-paper analyses may override the cost (TF2020 uses a -valued coercion of this; Krifka's Economy constraint reads it directly).

      Equations
      Instances For

        The complexity ordering is strictly monotone across the quadruplet in the canonical order positive < negative < notPositive < notNegative.

        @[reducible, inline]
        abbrev Degree.AntonymForm.contradictoryDenot {max : } (θ : Threshold max) (q : AntonymForm) (d : Bounded max) :

        Contradictory denotation of an antonym form on a single threshold θ. Both poles share θ; the four forms collapse to two distinct truth values (positive/notNegative ≡ d > θ; notPositive/negative ≡ d ≤ θ). This is the literal-semantic position [krifka-2007b] attributes to antonyms before pragmatic strengthening.

        Equations
        Instances For
          @[reducible, inline]
          abbrev Degree.AntonymForm.strengthenedDenot {max : } (tp : ThresholdPair max) (q : AntonymForm) (d : Bounded max) :

          Strengthened denotation of an antonym form on a ThresholdPair. Two thresholds tp.neg ≤ tp.pos; the borderline region [tp.neg, tp.pos] lifts notNegative ("not unhappy") away from positive ("happy") and notPositive ("not happy") away from negative ("unhappy"). This is the effective-semantic position post-pragmatic-strengthening (Krifka 2007 §4) or the lexically-encoded position of [AG24b].

          Equations
          Instances For

            Under the contradictory denotation, the negative-notPositive and notNegative-positive form pairs are extensionally identical. This is the formal puzzle [krifka-2007b] solves pragmatically: literal contradictory semantics predicts not unhappyhappy.

            theorem Degree.strengthenedDenot_breaks_synonymy {max : } (tp : ThresholdPair max) (h : { value := tp.neg.value.castSucc } < { value := tp.pos.value.castSucc }) :

            Under the strengthened denotation with strict gap (tp.neg < tp.pos), the notNegative and positive extensions come apart: there exists a degree (the negative threshold itself) where not unhappy holds but happy does not. This is the witness for the polarity asymmetry.

            Grounding in the Aristotelian opposition relation #

            The antonym classification is not a stipulated tag: the two form denotations genuinely stand in the substrate's Aristotelian.IsContradictory / IsContrary ([DKD25]), so predictionForAntonymy rides on a real opposition.

            Contradictory denotation ⇒ IsContradictory. With a single threshold the negative form is the literal complement of the positive form, so the two are complementary in the Boolean algebra Degree → Prop — forced (it is IsCompl). contradictoryDenot_synonymy (DNE collapse) is a corollary.

            theorem Degree.isContrary_strengthenedDenot {max : } (tp : ThresholdPair max) (h : { value := tp.neg.value.castSucc } < { value := tp.pos.value.castSucc }) :

            Strengthened denotation with a strict gap ⇒ IsContrary. Positive (d > tp.pos) and contrary-negative (d < tp.neg) are jointly impossible (Disjoint) but, by the gap [tp.neg, tp.pos], not jointly exhaustive (¬ Codisjointcontrary_gap_exists is the witness).

            theorem Degree.AntonymForm.flip_involutive :
            Function.Involutive flip