Intensional Logic: Types and Denotations #
Foundations for intensional logic following DWP Ch. 6. Ty is the recursive
grammar of semantic types; Denot E W computes denotation domains from
explicit entity (E) and index (W) type parameters and a type.
Key definitions #
Semantic types for Intensional Logic.
e— entitiest— truth valuesfn a b— functions ⟨a,b⟩intens a— intensions ⟨s,a⟩ (functions from indices to a-extensions)
The old Ty.s base type is replaced by the intens constructor:
intensionality is a type-forming operation, not a separate domain.
The core e, t, ⟨a,b⟩, ⟨s,a⟩ grammar is [DWP81]
Ch. 6 (equivalently [HK98]'s (5) plus intensions); the
degree and eventuality sorts are the standard extensions of degree and
neo-Davidsonian event semantics. Following [YAS23]'s
convention, v is the sort of events and s the sort of states — so
⟨e,⟨s,t⟩⟩ is an individual/state relation (a stative or property-concept
root) and ⟨e,⟨v,t⟩⟩ an individual/event relation (a change-of-state
root).
Instances For
Equations
- One or more equations did not get rendered due to their size.
- Intensional.instReprTy.repr Intensional.Ty.e prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Intensional.Ty.e")).group prec✝
- Intensional.instReprTy.repr Intensional.Ty.t prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Intensional.Ty.t")).group prec✝
- Intensional.instReprTy.repr Intensional.Ty.d prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Intensional.Ty.d")).group prec✝
- Intensional.instReprTy.repr Intensional.Ty.v prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Intensional.Ty.v")).group prec✝
- Intensional.instReprTy.repr Intensional.Ty.s prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Intensional.Ty.s")).group prec✝
Instances For
Equations
- Intensional.instReprTy = { reprPrec := Intensional.instReprTy.repr }
Equations
- One or more equations did not get rendered due to their size.
- Intensional.instDecidableEqTy.decEq Intensional.Ty.e Intensional.Ty.e = isTrue ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.e Intensional.Ty.t = isFalse Intensional.instDecidableEqTy.decEq._proof_1
- Intensional.instDecidableEqTy.decEq Intensional.Ty.e Intensional.Ty.d = isFalse Intensional.instDecidableEqTy.decEq._proof_2
- Intensional.instDecidableEqTy.decEq Intensional.Ty.e Intensional.Ty.v = isFalse Intensional.instDecidableEqTy.decEq._proof_3
- Intensional.instDecidableEqTy.decEq Intensional.Ty.e Intensional.Ty.s = isFalse Intensional.instDecidableEqTy.decEq._proof_4
- Intensional.instDecidableEqTy.decEq Intensional.Ty.e (a ⇒ a_1) = isFalse ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.e a.intens = isFalse ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.t Intensional.Ty.e = isFalse Intensional.instDecidableEqTy.decEq._proof_7
- Intensional.instDecidableEqTy.decEq Intensional.Ty.t Intensional.Ty.t = isTrue ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.t Intensional.Ty.d = isFalse Intensional.instDecidableEqTy.decEq._proof_8
- Intensional.instDecidableEqTy.decEq Intensional.Ty.t Intensional.Ty.v = isFalse Intensional.instDecidableEqTy.decEq._proof_9
- Intensional.instDecidableEqTy.decEq Intensional.Ty.t Intensional.Ty.s = isFalse Intensional.instDecidableEqTy.decEq._proof_10
- Intensional.instDecidableEqTy.decEq Intensional.Ty.t (a ⇒ a_1) = isFalse ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.t a.intens = isFalse ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.d Intensional.Ty.e = isFalse Intensional.instDecidableEqTy.decEq._proof_13
- Intensional.instDecidableEqTy.decEq Intensional.Ty.d Intensional.Ty.t = isFalse Intensional.instDecidableEqTy.decEq._proof_14
- Intensional.instDecidableEqTy.decEq Intensional.Ty.d Intensional.Ty.d = isTrue ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.d Intensional.Ty.v = isFalse Intensional.instDecidableEqTy.decEq._proof_15
- Intensional.instDecidableEqTy.decEq Intensional.Ty.d Intensional.Ty.s = isFalse Intensional.instDecidableEqTy.decEq._proof_16
- Intensional.instDecidableEqTy.decEq Intensional.Ty.d (a ⇒ a_1) = isFalse ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.d a.intens = isFalse ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.v Intensional.Ty.e = isFalse Intensional.instDecidableEqTy.decEq._proof_19
- Intensional.instDecidableEqTy.decEq Intensional.Ty.v Intensional.Ty.t = isFalse Intensional.instDecidableEqTy.decEq._proof_20
- Intensional.instDecidableEqTy.decEq Intensional.Ty.v Intensional.Ty.d = isFalse Intensional.instDecidableEqTy.decEq._proof_21
- Intensional.instDecidableEqTy.decEq Intensional.Ty.v Intensional.Ty.v = isTrue ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.v Intensional.Ty.s = isFalse Intensional.instDecidableEqTy.decEq._proof_22
- Intensional.instDecidableEqTy.decEq Intensional.Ty.v (a ⇒ a_1) = isFalse ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.v a.intens = isFalse ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.s Intensional.Ty.e = isFalse Intensional.instDecidableEqTy.decEq._proof_25
- Intensional.instDecidableEqTy.decEq Intensional.Ty.s Intensional.Ty.t = isFalse Intensional.instDecidableEqTy.decEq._proof_26
- Intensional.instDecidableEqTy.decEq Intensional.Ty.s Intensional.Ty.d = isFalse Intensional.instDecidableEqTy.decEq._proof_27
- Intensional.instDecidableEqTy.decEq Intensional.Ty.s Intensional.Ty.v = isFalse Intensional.instDecidableEqTy.decEq._proof_28
- Intensional.instDecidableEqTy.decEq Intensional.Ty.s Intensional.Ty.s = isTrue ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.s (a ⇒ a_1) = isFalse ⋯
- Intensional.instDecidableEqTy.decEq Intensional.Ty.s a.intens = isFalse ⋯
- Intensional.instDecidableEqTy.decEq (a ⇒ a_1) Intensional.Ty.e = isFalse ⋯
- Intensional.instDecidableEqTy.decEq (a ⇒ a_1) Intensional.Ty.t = isFalse ⋯
- Intensional.instDecidableEqTy.decEq (a ⇒ a_1) Intensional.Ty.d = isFalse ⋯
- Intensional.instDecidableEqTy.decEq (a ⇒ a_1) Intensional.Ty.v = isFalse ⋯
- Intensional.instDecidableEqTy.decEq (a ⇒ a_1) Intensional.Ty.s = isFalse ⋯
- Intensional.instDecidableEqTy.decEq (a ⇒ a_1) a_2.intens = isFalse ⋯
- Intensional.instDecidableEqTy.decEq a.intens Intensional.Ty.e = isFalse ⋯
- Intensional.instDecidableEqTy.decEq a.intens Intensional.Ty.t = isFalse ⋯
- Intensional.instDecidableEqTy.decEq a.intens Intensional.Ty.d = isFalse ⋯
- Intensional.instDecidableEqTy.decEq a.intens Intensional.Ty.v = isFalse ⋯
- Intensional.instDecidableEqTy.decEq a.intens Intensional.Ty.s = isFalse ⋯
- Intensional.instDecidableEqTy.decEq a.intens (a_1 ⇒ a_2) = isFalse ⋯
- Intensional.instDecidableEqTy.decEq a.intens b.intens = if h : a = b then h ▸ have inst := Intensional.instDecidableEqTy.decEq a a; isTrue ⋯ else isFalse ⋯
Instances For
Equations
- Intensional.«term_⇒_» = Lean.ParserDescr.trailingNode `Intensional.«term_⇒_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⇒ ") (Lean.ParserDescr.cat `term 25))
Instances For
Functional application at type level #
Type-level functional application ([HK98]'s Functional
Application, on types): a function type applied to a matching argument
type yields the value type; anything else is a type mismatch (none).
Composition failures are computed, not stipulated.
Instances For
Standard type abbreviations.
Equations
Instances For
Equations
Instances For
Equations
Instances For
⟨s,t⟩ — propositions (sets of indices).
Equations
Instances For
⟨s,e⟩ — individual concepts (index-dependent individuals).
Equations
Instances For
A type is conjoinable if it "ends in t" ([PR83] Definition 4).
Intension types ⟨s,a⟩ are conjoinable iff the base type is —
conjunction is pointwise over indices.
Equations
- Intensional.Ty.t.isConjoinable = true
- Intensional.Ty.e.isConjoinable = false
- Intensional.Ty.d.isConjoinable = false
- Intensional.Ty.v.isConjoinable = false
- Intensional.Ty.s.isConjoinable = false
- (a ⇒ τ).isConjoinable = τ.isConjoinable
- a.intens.isConjoinable = a.isConjoinable
Instances For
Denotation domains, computed from an entity type E, an index type W,
and a semantic type.
DWP's model is ⟨A, W, T, <, F⟩; here E = A (the domain of individuals) and
W = W × T (world-time pairs), or just W, or Unit for extensional. Temporal
ordering, accessibility relations, etc. are structure on W, not baked in.
D_e = E D_t = Prop D_⟨a,b⟩ = D_a → D_b D_⟨s,a⟩ = W → D_a
The eventuality sorts v and s denote in the empty domain: the
extensional DWP fragment carries no eventuality domain, and nothing
here constructs event-typed denotations. Event-semantic
interpretation is the extension point — a carrier-parametric
variant of Denot supplying event and state domains — and lands
with the first study that composes event-typed denotations.
Equations
- Intensional.Denot E W Intensional.Ty.e = E
- Intensional.Denot E W Intensional.Ty.t = Prop
- Intensional.Denot E W Intensional.Ty.d = ℚ
- Intensional.Denot E W Intensional.Ty.v = Empty
- Intensional.Denot E W Intensional.Ty.s = Empty
- Intensional.Denot E W (a ⇒ a_1) = (Intensional.Denot E W a → Intensional.Denot E W a_1)
- Intensional.Denot E W a.intens = (W → Intensional.Denot E W a)
Instances For
Soundness of type-level application: when apply succeeds, the
denotation domain of the function type is exactly the function space
from the argument's domain to the value's.
^α — form the rigid intension of an expression.
Maps a denotation to the constant function over indices.
Definitionally equal to Intensional.Intension.rigid.
Equations
- Intensional.up x x✝ = x
Instances For
ˇα — extract the extension at index i.
Evaluates an intension at a given index.
Definitionally equal to Intensional.Intension.evalAt.
Equations
- Intensional.down s i = s i
Instances For
Convert a predicate e → t to a Set (the extension).
Equations
- Intensional.predicateToSet p = {x : E | p x}