Intensional Properties: Rigidity, Reference, and Variable Interpretation #
Framework-agnostic types for intensional semantics: intensions as functions from indices (possible worlds) to extensions, rigid designators, evaluation, and referential interpretation modes.
These primitives are shared by Intensional.Defs,
Semantics.Reference/, Semantics.Attitudes/, and RSA/ — any module
that needs world-parameterized meanings.
Relationship to Denot #
Denot E W (.intens a) = W → Denot E W a is an Intension W (Denot E W a).
The up/down operators in Frame.lean are definitionally equal to
rigid/evalAt here. This file provides the framework-agnostic
versions; Frame.lean provides the IL-typed versions.
Key definitions #
Intension— world-to-extension functions (W → τ)IsRigid— constancy across indicesCoRefer,CoExtensional— world-relative and world-universal agreement- Kripke's necessity of identity theorems
StableCharacter— Kaplan's stable character predicateReferentialMode— Partee 1973's three-way classificationSitVarStatus— Elbourne 2013's two-way classificationIsExtensionalAt— operator extensionality (local truth-functionality); the operator-side dual ofIsRigid
An intension of type τ over indices W: a function from worlds to extensions.
[Gal75]'s Ty2 type system: every type τ has an intensional
counterpart (s,τ) interpreted as W → ⟦τ⟧.
Equations
- Intensional.Intension W τ = (W → τ)
Instances For
A rigid designator: an intension that returns the same value at every world.
Equations
- Intensional.Intension.rigid x x✝ = x
Instances For
An intension is rigid on a set S iff it assigns the same extension at
every world in S. The set-relativized analog of IsRigid — used when
only constancy across some restricted alternative set is required (e.g.,
a believer's doxastic alternatives, or a metaphysical-history slice).
IsRigid f is the special case S = Set.univ.
Equations
- f.IsRigidOn S = ∀ (w₁ : W), w₁ ∈ S → ∀ (w₂ : W), w₂ ∈ S → f w₁ = f w₂
Instances For
Post-composition closure (Intension W is covariantly
functorial in its target type, and rigidity is preserved by the
functorial action). Given any g : τ₁ → τ₂, the post-composed
intension g ∘ f : Intension W τ₂ is rigid whenever f is.
This is what makes the substrate's polymorphism in Res
non-trivial: a rigid EntityConcept (Res = Agent) yields a rigid
TimeConcept (Res = T) for any Agent → T function — the parallel
between individual de re (Anand-Nevins shifty operators) and
temporal de re (Abusch wide-scope tenses) is functorial.
Pre-composition operator for intensions: given any
g : W₂ → W₁, send f : Intension W₁ τ to f ∘ g : Intension W₂ τ.
Equivalently Function.comp f g; named here to give the
contravariant-functor action a domain-specific handle.
Equations
- Intensional.Intension.precomp g f w = f (g w)
Instances For
Pre-composition closure (Intension W is contravariantly
functorial in its index type). Given any g : W₂ → W₁, the
pre-composed intension f ∘ g : Intension W₂ τ is rigid whenever
f is — constancy survives any relabeling of the input space.
Used by Semantics/Tense/DeRe.lean to lift a rigid
TimeConcept over KContext to a rigid intension over the
holder's WorldTimeIndex alternative-shift.
Set-relativized version of IsRigid.map: rigidity-on-a-set is
preserved by post-composition with any function.
Set-relativized version of IsRigid.precomp: rigidity-on-S is
preserved by pre-composition with g : W₂ → W₁, with the resulting
intension rigid on the preimage Set.preimage g S. Mathlib idiom:
precomp pulls back the constancy-set along g.
Reflection along injective post-composition: if g ∘ f is
rigid and g is injective, then f was already rigid. Together
with IsRigid.map, this establishes that IsRigid is preserved
AND reflected by injective post-composition — i.e., injective
g makes the lifting Intension W τ₁ → Intension W τ₂
rigidity-preserving in both directions.
Mathlib-style characterization: over a nonempty index space,
IsRigid is exactly "equals a constant function" via
Function.const. The forward direction picks any witness
w₀ : W and uses f w₀ as the constant value; the reverse is
rfl-trivial.
The Nonempty W hypothesis is needed because without it
IsRigid f is vacuously true (no two w₁ w₂ to compare), while
∃ x, f = Function.const W x requires some x : τ to exist as
a witness — which fails when τ is also empty.
rigid is a section (right inverse) of world-evaluation: embedding an
entity as a rigid intension and then evaluating recovers the entity.
Function-level formulation of evalAt_rigid. Together with
rigid_evalAt_lossy, this establishes τ as a retract of Intension W τ
via the section-retraction pair (rigid, evalAt · w).
The reverse composition — evaluating and re-embedding — is lossy:
it collapses non-rigid intensions to their value at w.
If f is non-rigid, rigid (f w) ≠ f because rigid (f w) is the constant
function at f w, which disagrees with f at the worlds where f varies.
Together with rigid_section, this shows that τ is a proper retract of
Intension W τ: the round-trip rigid ∘ evalAt · w is the identity on the
image of rigid but collapses everything else.
rigid is injective: different values give different intensions.
Two intensions are co-extensional (agree at every world).
Equations
- f.CoExtensional g = ∀ (w : W), f w = g w
Instances For
Kripke's necessity of identity: if two rigid designators co-refer at any world, they are co-extensional (and hence the same intension).
This is the formal kernel of the [Kri80] argument: "Hesperus" and "Phosphorus" are both rigid; if they co-refer at the actual world then they pick out the same object at every world, so "Hesperus = Phosphorus" is necessary if true.
Iff version of the necessity of identity: for rigid designators, co-reference at ANY world is equivalent to co-reference at EVERY world. Identity between rigid designators is never contingent — all or nothing.
A character is stable iff it assigns the same content at every context.
[Kap89] [vFH11] Remark 5: non-indexical expressions have stable character —
their content does not depend on the context of utterance. This generalizes
constantCharacter from Reference/Basic.lean to the framework-agnostic level.
Equations
- Intensional.Intension.StableCharacter char = ∀ (c₁ c₂ : C), char c₁ = char c₂
Instances For
[Par73]'s three-way interpretive classification for referential expressions. Applies uniformly to pronouns (entity variables) and tenses (temporal variables).
| Mode | Pronouns | Tenses |
|---|---|---|
| indexical | "I" → agent of context | present → speech time |
| anaphoric | "he" → salient individual | past → salient narrative time |
| bound | "his" in ∀x...his... | tense in "whenever...is..." |
[Elb13] collapses this to a two-way free/bound distinction
(SitVarStatus); isFree provides the coarsening.
- indexical : ReferentialMode
Anchored to utterance context (Kaplan's "I", Partee's deictic tense)
- anaphoric : ReferentialMode
Resolved by discourse salience (3rd-person "he", narrative past)
- bound : ReferentialMode
Bound by a c-commanding operator (∀x...his..., whenever...is...)
Instances For
Equations
- Intensional.ReferentialMode.instDecidableEqReferentialMode x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Coarsen to a two-way free/bound classification. Indexical and anaphoric are both "free" — they differ only in how the free variable is pragmatically resolved (utterance context vs. discourse salience).
Equations
Instances For
[Elb13]'s two-way classification of situation variables.
Coarsens ReferentialMode's three-way distinction: indexical and
anaphoric both map to free.
- free : SitVarStatus
Free: mapped to a contextually salient situation (→ de re)
- bound : SitVarStatus
Bound: bound by an intensional operator (→ de dicto)
Instances For
Equations
- Intensional.SitVarStatus.instDecidableEqSitVarStatus x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
Equations
- One or more equations did not get rendered due to their size.
Instances For
Expand Elbourne's two-way classification to Partee's three-way. Free situation variables correspond to either indexical or anaphoric interpretation; bound corresponds to bound.
Equations
Instances For
Collapse Partee's three-way classification to Elbourne's two-way.
Uses ReferentialMode.isFree for the coarsening.
Equations
Instances For
Round-trip: collapsing then expanding recovers the original status (as a member of the expanded list).
Operator extensionality #
The operator-side dual of IsRigid: an operator on intensions is
extensional at w when its value at w depends on its argument only
through the argument's extension at w (local truth-functionality at
β = Prop). Negation and the other pointwise connectives are extensional
everywhere; quantifiers over indices (Core.Logic.Modal.box) are not.
Semantics.Gradability.Classification.isExtensional (Kamp 1975's
extensional adjective operators) is the entity-indexed ∀ w-closure of
this notion.
O is extensional at w: its value at w depends on the argument
intension only through the argument's extension at w. Equivalently,
O · w factors through evaluation at w (isExtensionalAt_iff_factorsThrough).
Equations
- Intensional.IsExtensionalAt O w = ∀ (p q : W → α), p w = q w → O p w = O q w
Instances For
O is extensional: extensional at every index.
Equations
- Intensional.IsExtensional O = ∀ (w : W), Intensional.IsExtensionalAt O w
Instances For
Extensionality at w is O · w factoring through evaluation at w.
The iff form at β = Prop, the shape semantic theorems consume.
Refutation by witness: a pair agreeing at w on which O differs.
Evaluation itself is extensional.
Constant operators are extensional.
Pointwise negation is extensional — "negation is not an intensional operator".
Extensional operators are closed under pointwise conjunction.
Extensional operators are closed under pointwise disjunction.
Extensional operators are closed under pointwise negation.
Towers of extensional operators are extensional: if O₁, O₂ are
extensional at w, so is O₂ applied over O₁'s output intension.
Scope-inertness lifts through whole stacks of extensional operators.