Core Negation Types #
Framework-agnostic types for negation phenomena shared across fragments and phenomena layers.
Expletive Negation Classification #
Two orthogonal classifications of expletive negation (EN):
ENType(high/low) — @cite{rett-2026}'s position-based classificationENStrength(weak/strong) — @cite{greco-2020}'s polarity-based classificationPolarityClass/PolarityLicensing— polarity-sensitive element classes and their licensing profiles
These types are framework-agnostic: they classify EN constructions by
their empirical properties without committing to a syntactic analysis.
The syntactic derivation (from merge position in the extended projection)
lives in Phenomena.Negation.Studies.Greco2020 under
namespace Minimalist.NegScope.
Cross-linguistic reasons why a trigger class may not license expletive negation in a particular language (@cite{jin-koenig-2021} §7).
- modalRestriction : ENBlockingReason
Language disprefers modal operators in complement clauses
- npOnlyComplement : ENBlockingReason
Comparative complements only allow NPs, not clauses
- analyticNegation : ENBlockingReason
Concept expressed analytically with necessary (non-expletive) negation
Instances For
Equations
- Phenomena.Negation.ExpletiveNegation.instDecidableEqENBlockingReason x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Two syntactic types of expletive negation (@cite{rett-2026}).
High EN appears above TP, targets non-truth-conditional content (exclamatives, surprise negation). It is obligatory where licensed.
Low EN appears below TP (VP-level), targets truth-conditional content in ambidirectional environments. It is optional and triggers a manner implicature (evaluativity).
Instances For
Equations
- Phenomena.Negation.ExpletiveNegation.instDecidableEqENType x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
ENType ≃ Bool: low ↦ false, high ↦ true.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Phenomena.Negation.ExpletiveNegation.instFintypeENType = Fintype.ofEquiv Bool Phenomena.Negation.ExpletiveNegation.ENType.equivBool.symm
Numeric embedding: low ↦ 0, high ↦ 1. Ordering: low < high (truth-conditional before non-truth-conditional).
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
@cite{greco-2020} §2.1: EN constructions divide into two classes based on co-occurrence with polarity-sensitive elements.
Weak EN retains some polarity properties of standard negation: licenses weak NPIs and N-words (e.g. finché-clauses, unless-clauses).
Strong EN loses all polarity properties: rejects weak NPIs, strong NPIs, not-also conjunctions, and N-words (e.g. negative exclamatives, rhetorical questions, surprise negation).
- weak : ENStrength
- strong : ENStrength
Instances For
Equations
- Phenomena.Negation.ExpletiveNegation.instDecidableEqENStrength x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
ENStrength ≃ Bool: weak ↦ false, strong ↦ true.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Phenomena.Negation.ExpletiveNegation.instFintypeENStrength = Fintype.ofEquiv Bool Phenomena.Negation.ExpletiveNegation.ENStrength.equivBool.symm
Numeric embedding: weak ↦ 0, strong ↦ 1. Ordering: weak < strong (retains-polarity before loses-polarity).
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
The four classes of polarity-sensitive elements tested by @cite{greco-2020} Table 1. Each EN environment either licenses or rejects each class, giving a four-bit fingerprint.
- weakNPI : PolarityClass
- strongNPI : PolarityClass
- notAlsoConj : PolarityClass
- nWord : PolarityClass
Instances For
Equations
- Phenomena.Negation.ExpletiveNegation.instDecidableEqPolarityClass x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- One or more equations did not get rendered due to their size.
Instances For
PolarityClass ≃ Fin 4: weakNPI ↦ 0, strongNPI ↦ 1, notAlsoConj ↦ 2, nWord ↦ 3.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Phenomena.Negation.ExpletiveNegation.instFintypePolarityClass = Fintype.ofEquiv (Fin 4) Phenomena.Negation.ExpletiveNegation.PolarityClass.equivFin.symm
Polarity licensing profile for an EN environment (@cite{greco-2020} Table 1). Each field records whether that class of polarity-sensitive element is grammatical in the construction.
- weakNPIs : Bool
- strongNPIs : Bool
- notAlsoConj : Bool
- nWords : Bool
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Accessor: look up a polarity class in the licensing profile.
Equations
- p.licenses Phenomena.Negation.ExpletiveNegation.PolarityClass.weakNPI = p.weakNPIs
- p.licenses Phenomena.Negation.ExpletiveNegation.PolarityClass.strongNPI = p.strongNPIs
- p.licenses Phenomena.Negation.ExpletiveNegation.PolarityClass.notAlsoConj = p.notAlsoConj
- p.licenses Phenomena.Negation.ExpletiveNegation.PolarityClass.nWord = p.nWords
Instances For
Weak EN environments license weak NPIs and N-words but NOT strong NPIs or not-also conjunctions.
Equations
- Phenomena.Negation.ExpletiveNegation.weakENProfile = { weakNPIs := true, strongNPIs := false, notAlsoConj := false, nWords := true }
Instances For
Strong EN environments license NONE of the four polarity classes.
Equations
- Phenomena.Negation.ExpletiveNegation.strongENProfile = { weakNPIs := false, strongNPIs := false, notAlsoConj := false, nWords := false }
Instances For
Strong EN rejects ALL polarity classes (universally quantified).
Weak EN licenses exactly the weak NPIs and N-words.
Equivalence with Bool⁴ for Fintype derivation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Phenomena.Negation.ExpletiveNegation.instFintypePolarityLicensing = Fintype.ofEquiv (Bool × Bool × Bool × Bool) Phenomena.Negation.ExpletiveNegation.PolarityLicensing.equiv.symm
Equations
- One or more equations did not get rendered due to their size.
Equations
- Phenomena.Negation.ExpletiveNegation.instDecidableRelPolarityLicensingLe a b = instDecidableEqBool (Phenomena.Negation.ExpletiveNegation.PolarityLicensing.leBool✝ a b) true
Equations
- One or more equations did not get rendered due to their size.
Standard negation profile: licenses all polarity-sensitive elements.
Equations
- Phenomena.Negation.ExpletiveNegation.standardNegProfile = { weakNPIs := true, strongNPIs := true, notAlsoConj := true, nWords := true }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Strong EN (⊥) ≤ weak EN in the licensing lattice.
Partial map from PolarityClass to PolarityType. Two of the four Greco classes correspond directly to PolarityType constructors. N-words and not-also conjunctions are Italian-specific categories without a PolarityType counterpart.
Equations
Instances For
Inverse: map PolarityType to PolarityClass (partial — only NPIs).
Equations
- Phenomena.Negation.ExpletiveNegation.PolarityClass.fromPolarityType? Typology.PolarityItem.PolarityType.npiWeak = some Phenomena.Negation.ExpletiveNegation.PolarityClass.weakNPI
- Phenomena.Negation.ExpletiveNegation.PolarityClass.fromPolarityType? Typology.PolarityItem.PolarityType.npiStrong = some Phenomena.Negation.ExpletiveNegation.PolarityClass.strongNPI
- Phenomena.Negation.ExpletiveNegation.PolarityClass.fromPolarityType? x✝ = none
Instances For
Round-trip: PolarityType → PolarityClass → PolarityType is identity (for the NPI types that have counterparts).
Compose the bridges: look up a PolarityType in a licensing profile
by routing through PolarityClass. Returns none for types without
a PolarityClass counterpart (FCIs, PPIs, NPI-FCIs).
Equations
- p.licensesType t = Option.map p.licenses (Phenomena.Negation.ExpletiveNegation.PolarityClass.fromPolarityType? t)