Semantic types and denotation domains #
The semantic types of the composition engine and their denotation domains. Ty is the type
grammar —
e, t, ⟨a,b⟩, ⟨s,a⟩, and the degree, cardinality and eventuality sorts of later
work — and Denot E W ty computes the domain of possible denotations of each type from an
entity type E and an index type W: functions denote in function spaces and intensions
in W-indexed families, so a denotation is an ordinary Lean term and composition is
function application.
Denot is reducible: a denotation of type ⟨e,t⟩ is an E → Prop to every tactic and
instance, and the pointwise Boolean algebra of a type that ends in t is mathlib's Pi
instance. Denot.booleanAlgebra? computes that algebra by recursion on the type, for the
composition engine's runtime type dispatch.
Main definitions #
Ty: semantic types.Denot E W ty: the denotation domain ofty.Denot.booleanAlgebra?: the pointwise Boolean algebra of a conjoinable type,noneon a type that does not end int.
References #
- [D. Dowty, R. Wall, S. Peters, Introduction to Montague Semantics (1981)][dowty-wall-peters-1981]
- D. Gallin, Intensional and Higher-Order Modal Logic (1975)
- B. Partee, M. Rooth, Generalized Conjunction and Type Ambiguity (1983)
Semantic types: Montague's e, t, fn a b (⟨a,b⟩) and intens a (⟨s,a⟩), the
degree sort d ([heim-2001], [wellwood-2015]), the cardinality sort n ([sudo-2016],
[scontras-2014], [little-moroney-royer-2022]), and the eventuality sorts v (events) and
s (states) ([davidson-1967], [parsons-1990], [yu-ausensi-smith-2023]).
- e : Ty
- t : Ty
- d : Ty
Degrees, denoting in the model's scale.
- n : Ty
Cardinalities, denoting in
ℕ. - v : Ty
Events.
- s : Ty
States (not the index sort, which is
intens). - fn : Ty → Ty → Ty
Functions
⟨a,b⟩. - intens : Ty → Ty
Intensions
⟨s,a⟩.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Semantics.Composition.instReprTy = { reprPrec := Semantics.Composition.instReprTy.repr }
Equations
- One or more equations did not get rendered due to their size.
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.e Semantics.Composition.Ty.e = isTrue ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.e Semantics.Composition.Ty.t = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_1
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.e Semantics.Composition.Ty.d = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_2
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.e Semantics.Composition.Ty.n = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_3
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.e Semantics.Composition.Ty.v = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_4
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.e Semantics.Composition.Ty.s = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_5
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.e (a ⇒ a_1) = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.e a.intens = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.t Semantics.Composition.Ty.e = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_8
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.t Semantics.Composition.Ty.t = isTrue ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.t Semantics.Composition.Ty.d = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_9
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.t Semantics.Composition.Ty.n = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_10
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.t Semantics.Composition.Ty.v = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_11
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.t Semantics.Composition.Ty.s = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_12
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.t (a ⇒ a_1) = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.t a.intens = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.d Semantics.Composition.Ty.e = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_15
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.d Semantics.Composition.Ty.t = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_16
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.d Semantics.Composition.Ty.d = isTrue ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.d Semantics.Composition.Ty.n = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_17
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.d Semantics.Composition.Ty.v = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_18
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.d Semantics.Composition.Ty.s = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_19
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.d (a ⇒ a_1) = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.d a.intens = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.n Semantics.Composition.Ty.e = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_22
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.n Semantics.Composition.Ty.t = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_23
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.n Semantics.Composition.Ty.d = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_24
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.n Semantics.Composition.Ty.n = isTrue ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.n Semantics.Composition.Ty.v = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_25
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.n Semantics.Composition.Ty.s = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_26
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.n (a ⇒ a_1) = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.n a.intens = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.v Semantics.Composition.Ty.e = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_29
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.v Semantics.Composition.Ty.t = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_30
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.v Semantics.Composition.Ty.d = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_31
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.v Semantics.Composition.Ty.n = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_32
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.v Semantics.Composition.Ty.v = isTrue ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.v Semantics.Composition.Ty.s = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_33
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.v (a ⇒ a_1) = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.v a.intens = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.s Semantics.Composition.Ty.e = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_36
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.s Semantics.Composition.Ty.t = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_37
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.s Semantics.Composition.Ty.d = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_38
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.s Semantics.Composition.Ty.n = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_39
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.s Semantics.Composition.Ty.v = isFalse Semantics.Composition.instDecidableEqTy.decEq._proof_40
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.s Semantics.Composition.Ty.s = isTrue ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.s (a ⇒ a_1) = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq Semantics.Composition.Ty.s a.intens = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq (a ⇒ a_1) Semantics.Composition.Ty.e = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq (a ⇒ a_1) Semantics.Composition.Ty.t = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq (a ⇒ a_1) Semantics.Composition.Ty.d = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq (a ⇒ a_1) Semantics.Composition.Ty.n = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq (a ⇒ a_1) Semantics.Composition.Ty.v = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq (a ⇒ a_1) Semantics.Composition.Ty.s = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq (a ⇒ a_1) a_2.intens = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq a.intens Semantics.Composition.Ty.e = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq a.intens Semantics.Composition.Ty.t = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq a.intens Semantics.Composition.Ty.d = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq a.intens Semantics.Composition.Ty.n = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq a.intens Semantics.Composition.Ty.v = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq a.intens Semantics.Composition.Ty.s = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq a.intens (a_1 ⇒ a_2) = isFalse ⋯
- Semantics.Composition.instDecidableEqTy.decEq a.intens b.intens = if h : a = b then h ▸ have inst := Semantics.Composition.instDecidableEqTy.decEq a a; isTrue ⋯ else isFalse ⋯
Instances For
Functions ⟨a,b⟩.
Equations
- One or more equations did not get rendered due to their size.
Instances For
⟨e,t⟩, properties of individuals.
Instances For
⟨e,⟨e,t⟩⟩, relations between individuals.
Equations
Instances For
⟨⟨e,t⟩,t⟩, generalized quantifiers.
Equations
Instances For
Denotation domains: e denotes in E, t in Prop, d in the scale D, n in
ℕ, ⟨a,b⟩ in Denot a → Denot b and ⟨s,a⟩ in W → Denot a. The eventuality sorts
have the empty domain: nothing here constructs event-typed denotations.
Equations
- Semantics.Composition.Denot E W Semantics.Composition.Ty.e D = E
- Semantics.Composition.Denot E W Semantics.Composition.Ty.t D = Prop
- Semantics.Composition.Denot E W Semantics.Composition.Ty.d D = D
- Semantics.Composition.Denot E W Semantics.Composition.Ty.n D = ℕ
- Semantics.Composition.Denot E W Semantics.Composition.Ty.v D = Empty
- Semantics.Composition.Denot E W Semantics.Composition.Ty.s D = Empty
- Semantics.Composition.Denot E W (a ⇒ a_1) D = (Semantics.Composition.Denot E W a D → Semantics.Composition.Denot E W a_1 D)
- Semantics.Composition.Denot E W a.intens D = (W → Semantics.Composition.Denot E W a D)
Instances For
The pointwise Boolean algebra of a conjoinable type ([PR83]), computed by
recursion on the type: none exactly when the type does not end in t. At a concrete
type this is the instance Pi.instBooleanAlgebra finds statically.
Equations
- One or more equations did not get rendered due to their size.
- Semantics.Composition.Denot.booleanAlgebra? E W Semantics.Composition.Ty.t D = some inferInstance
- Semantics.Composition.Denot.booleanAlgebra? E W ty D = none