Documentation

Linglib.Core.Semantics.Intension

@[reducible, inline]
abbrev Core.Intension (W : Type u_1) (τ : Type u_2) :
Type (max u_1 u_2)

An intension of type τ over indices W: a function from worlds to extensions. @cite{gallin-1975}'s Ty2 type system: every type τ has an intensional counterpart (s,τ) interpreted as W → ⟦τ⟧.

Equations
Instances For
    def Core.Intension.rigid {W : Type u_1} {τ : Type u_2} (x : τ) :

    A rigid designator: an intension that returns the same value at every world.

    Equations
    Instances For
      def Core.Intension.evalAt {W : Type u_1} {τ : Type u_2} (f : Intension W τ) (w : W) :
      τ

      Evaluate an intension at a world to get its extension.

      Equations
      Instances For
        def Core.Intension.IsRigid {W : Type u_1} {τ : Type u_2} (f : Intension W τ) :

        An intension is rigid iff it assigns the same extension at every world.

        Equations
        • f.IsRigid = ∀ (w₁ w₂ : W), f w₁ = f w₂
        Instances For
          theorem Core.Intension.rigid_isRigid {W : Type u_1} {τ : Type u_2} (x : τ) :

          A rigid designator is rigid.

          theorem Core.Intension.evalAt_rigid {W : Type u_1} {τ : Type u_2} (x : τ) (w : W) :
          (rigid x).evalAt w = x

          evalAt of rigid returns the original value.

          theorem Core.Intension.rigid_section {W : Type u_1} {τ : Type u_2} (w : W) :
          (fun (x : τ) => (rigid x).evalAt w) = id

          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).

          theorem Core.Intension.rigid_evalAt_lossy {W : Type u_1} {τ : Type u_2} (f : Intension W τ) (w : W) (hNonRigid : ¬f.IsRigid) :
          rigid (f w) f

          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 rigidevalAt · w is the identity on the image of rigid but collapses everything else.

          rigid is injective: different values give different intensions.

          def Core.Intension.CoRefer {W : Type u_1} {τ : Type u_2} (f g : Intension W τ) (w : W) :

          Two intensions co-refer at world w.

          Equations
          Instances For
            def Core.Intension.CoExtensional {W : Type u_1} {τ : Type u_2} (f g : Intension W τ) :

            Two intensions are co-extensional (agree at every world).

            Equations
            Instances For
              theorem Core.Intension.rigid_identity_necessary {W : Type u_1} {τ : Type u_2} (f g : Intension W τ) (hf : f.IsRigid) (hg : g.IsRigid) (w : W) (h : f.CoRefer g w) :

              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 @cite{kripke-1980} 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.

              theorem Core.Intension.rigid_allOrNothing {W : Type u_1} {τ : Type u_2} (f g : Intension W τ) (hf : f.IsRigid) (hg : g.IsRigid) (w₁ w₂ : W) :
              f w₁ = g w₁ f w₂ = g w₂

              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.

              theorem Core.Intension.varying_not_rigid {W : Type u_1} {τ : Type u_2} (f : Intension W τ) (w₁ w₂ : W) (h : f w₁ f w₂) :

              An intension that takes different values at two worlds is not rigid. Contrapositive of IsRigid.

              theorem Core.Intension.rigid_neq_nonrigid {W : Type u_1} {τ : Type u_2} (f g : Intension W τ) (hf : f.IsRigid) (hg : ¬g.IsRigid) :
              f g

              A rigid intension is never equal to a non-rigid intension.

              Stable Character (@cite{kaplan-1989} §XIX Remarks 5-8) #

              def Core.Intension.StableCharacter {C : Type u_1} {W : Type u_2} {τ : Type u_3} (char : CIntension W τ) :

              A character is stable iff it assigns the same content at every context.

              @cite{kaplan-1989} @cite{von-fintel-heim-2011} 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
              Instances For

                @cite{partee-1973}'s three-way interpretive classification for referential expressions. Applies uniformly to pronouns (entity variables) and tenses (temporal variables).

                ModePronounsTenses
                indexical"I" → agent of contextpresent → speech time
                anaphoric"he" → salient individualpast → salient narrative time
                bound"his" in ∀x...his...tense in "whenever...is..."

                @cite{elbourne-2013} 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
                  • 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

                      @cite{elbourne-2013}'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
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          Round-trip: collapsing then expanding recovers the original status (as a member of the expanded list).

                          @[reducible, inline]

                          Generic variable assignment: maps indices to values in domain D. Instantiate with D = Entity for pronoun interpretation (@cite{heim-kratzer-1998}) or D = Time for temporal variable interpretation.

                          Equations
                          Instances For
                            def Core.VarAssignment.updateVar {D : Type u_1} (g : VarAssignment D) (n : ) (d : D) :

                            Modified assignment g[n ↦ d]: update index n to value d.

                            Equations
                            Instances For
                              def Core.VarAssignment.lookupVar {D : Type u_1} (n : ) (g : VarAssignment D) :
                              D

                              Variable denotation: ⟦xₙ⟧^g = g(n).

                              Equations
                              Instances For
                                def Core.VarAssignment.varLambdaAbs {D : Type u_1} {α : Type u_2} (n : ) (body : VarAssignment Dα) :
                                VarAssignment DDα

                                Lambda abstraction over variable n: bind a variable in body.

                                Equations
                                Instances For
                                  @[simp]
                                  theorem Core.VarAssignment.update_lookup_same {D : Type u_1} (g : VarAssignment D) (n : ) (d : D) :
                                  lookupVar n (updateVar g n d) = d
                                  @[simp]
                                  theorem Core.VarAssignment.update_lookup_other {D : Type u_1} (g : VarAssignment D) (n i : ) (d : D) (h : i n) :
                                  theorem Core.VarAssignment.update_update_same {D : Type u_1} (g : VarAssignment D) (n : ) (d₁ d₂ : D) :
                                  updateVar (updateVar g n d₁) n d₂ = updateVar g n d₂
                                  theorem Core.VarAssignment.update_self {D : Type u_1} (g : VarAssignment D) (n : ) :
                                  updateVar g n (g n) = g