PIP Expression Language (Full Static Formulation) #
@cite{keshet-abney-2024}
PIP is natively a static, truth-conditional system: formulas denote
truth values relative to a model, plural assignment set G, and evaluation
world w*. This file defines the full PIPExpr type matching the paper's
thesis that PIP is "just predicate calculus with set abstraction."
Constructors #
The propositional fragment (pred, conj, neg, disj, impl, presup) is extended with:
| Constructor | Paper item | Description |
|---|---|---|
exists_ | 43 | ∃x.φ — existential quantification over domain D |
forall_ | 43 | ∀x.φ — universal quantification over domain D |
labelDef | 17.3 | X ≡ φ — tautological formula label definition |
must | 28 | □φ — universal modality (EVERY over worlds) |
might | 28 | ◇φ — existential modality (SOME over worlds) |
Domain Parameter #
The full PIPExpr is parameterized by both W (worlds) and D (individual
domain). Quantifier constructors bind over D, modals bind over W.
The propositional-only fragment uses D = Empty (no quantifiers needed).
Label Extraction #
PIPExpr.labelDefs extracts the label assignment from a formula. Since
label definitions are tautologies that float freely, this function collects
all X ≡ φ definitions regardless of their structural position.
A finite domain of individuals for PIP quantifier evaluation.
- elements : List D
- complete (d : D) : d ∈ elements
Instances
PIP expressions: the full static formula language.
Parameterized by W (possible worlds) and D (individual domain).
Each PIP construct from the paper has a constructor.
The propositional fragment (pred, conj, neg, disj, impl, presup)
matches the original Felicity.PIPExpr. The quantifier and modal
constructors extend it to the full system.
- pred
{W : Type u_1}
{D : Type u_2}
(p : W → Bool)
: PIPExprF W D
Atomic predicate: P_w(x₁, ..., xₙ). Always felicitous.
- conj
{W : Type u_1}
{D : Type u_2}
(φ ψ : PIPExprF W D)
: PIPExprF W D
Conjunction: φ ∧ ψ. Felicity is asymmetric (Karttunen).
- neg
{W : Type u_1}
{D : Type u_2}
(φ : PIPExprF W D)
: PIPExprF W D
Negation: ¬φ. Felicity passes through.
- disj
{W : Type u_1}
{D : Type u_2}
(φ ψ : PIPExprF W D)
: PIPExprF W D
Disjunction: φ ∨ ψ.
- impl
{W : Type u_1}
{D : Type u_2}
(φ ψ : PIPExprF W D)
: PIPExprF W D
Implication: φ → ψ.
- presup
{W : Type u_1}
{D : Type u_2}
(φ : PIPExprF W D)
(ψ : W → Bool)
: PIPExprF W D
Presupposition: φ|ψ. Assert φ, presuppose ψ.
- exists_
{W : Type u_1}
{D : Type u_2}
(body : D → PIPExprF W D)
: PIPExprF W D
Existential quantification: ∃x.φ (paper item 43).
bodytakes a domain element and returns a formula. - forall_
{W : Type u_1}
{D : Type u_2}
(body : D → PIPExprF W D)
: PIPExprF W D
Universal quantification: ∀x.φ (paper item 43).
bodytakes a domain element and returns a formula. - labelDef
{W : Type u_1}
{D : Type u_2}
(label : FLabel)
(φ : PIPExprF W D)
: PIPExprF W D
Formula label definition: X ≡ φ (paper item 17.3). Tautological — always true. Registers the label for later retrieval.
- must
{W : Type u_1}
{D : Type u_2}
(R : BAccessRel W)
(φ : PIPExprF W D)
: PIPExprF W D
Modal necessity: □_R φ (paper item 28, MUST). Universal quantification over R-accessible worlds.
- might
{W : Type u_1}
{D : Type u_2}
(R : BAccessRel W)
(φ : PIPExprF W D)
: PIPExprF W D
Modal possibility: ◇_R φ (paper item 28, MIGHT). Existential quantification over R-accessible worlds.
Instances For
Truth evaluation for full PIP expressions.
PIP truth conditions are classical: presuppositions play no role in determining truth values. Quantifiers and modals evaluate as standard first-order quantification over domains and worlds.
Requires [Fintype D] for quantifier evaluation and [Fintype W]
for modal evaluation.
Equations
- (Semantics.PIP.PIPExprF.pred p).truth = p
- (φ.conj ψ).truth = fun (w : W) => φ.truth w && ψ.truth w
- φ.neg.truth = fun (w : W) => !φ.truth w
- (φ.disj ψ).truth = fun (w : W) => φ.truth w || ψ.truth w
- (φ.impl ψ).truth = fun (w : W) => !φ.truth w || ψ.truth w
- (φ.presup _ψ).truth = φ.truth
- (Semantics.PIP.PIPExprF.exists_ body).truth = fun (w : W) => Semantics.PIP.FiniteDomain.elements.any fun (d : D) => (body d).truth w
- (Semantics.PIP.PIPExprF.forall_ body).truth = fun (w : W) => Semantics.PIP.FiniteDomain.elements.all fun (d : D) => (body d).truth w
- (Semantics.PIP.PIPExprF.labelDef _label φ).truth = φ.truth
- (Semantics.PIP.PIPExprF.must R φ).truth = fun (w : W) => (List.filter (R w) Finset.univ.toList).all φ.truth
- (Semantics.PIP.PIPExprF.might R φ).truth = fun (w : W) => (List.filter (R w) Finset.univ.toList).any φ.truth
Instances For
The F operator: recursive presuppositional felicity (full version).
Extends the propositional fragment with:
- F(∃xφ) iff ∀x.Fφ — felicity is universal over witnesses (item 43)
- F(∀xφ) iff ∀x.Fφ — felicity is universal over witnesses (item 43)
- F(X≡φ) iff Fφ — labels don't affect felicity
- F(□φ) iff ∀w'.Fφ — felicity universal over accessible worlds (item 47)
- F(◇φ) iff ∀w'.Fφ — felicity universal over accessible worlds (item 47)
The universal quantification in the quantifier/modal felicity clauses is the key insight: an expression is felicitous only if its presuppositions are met for EVERY possible witness/world, not just some.
Equations
- (Semantics.PIP.PIPExprF.pred p).felicitous = fun (x : W) => true
- (φ.conj ψ).felicitous = fun (w : W) => φ.felicitous w && (!φ.truth w || ψ.felicitous w)
- φ.neg.felicitous = φ.felicitous
- (φ.disj ψ).felicitous = fun (w : W) => φ.felicitous w && (φ.truth w || ψ.felicitous w)
- (φ.impl ψ).felicitous = fun (w : W) => φ.felicitous w && (!φ.truth w || ψ.felicitous w)
- (φ.presup _ψ).felicitous = fun (w : W) => φ.felicitous w && _ψ w
- (Semantics.PIP.PIPExprF.exists_ body).felicitous = fun (w : W) => Semantics.PIP.FiniteDomain.elements.all fun (d : D) => (body d).felicitous w
- (Semantics.PIP.PIPExprF.forall_ body).felicitous = fun (w : W) => Semantics.PIP.FiniteDomain.elements.all fun (d : D) => (body d).felicitous w
- (Semantics.PIP.PIPExprF.labelDef _label φ).felicitous = φ.felicitous
- (Semantics.PIP.PIPExprF.must R φ).felicitous = fun (w : W) => (List.filter (R w) Finset.univ.toList).all φ.felicitous
- (Semantics.PIP.PIPExprF.might R φ).felicitous = fun (w : W) => (List.filter (R w) Finset.univ.toList).all φ.felicitous
Instances For
Extract all formula label definitions from an expression.
Since label definitions X ≡ φ are tautologies that float freely (paper §2.3), we collect them regardless of their structural position (under negation, modals, etc.). Returns a list of (label, sub-expression) pairs.
Equations
- (Semantics.PIP.PIPExprF.pred p).labelDefs = []
- (φ.conj ψ).labelDefs = φ.labelDefs ++ ψ.labelDefs
- φ.neg.labelDefs = φ.labelDefs
- (φ.disj ψ).labelDefs = φ.labelDefs ++ ψ.labelDefs
- (φ.impl ψ).labelDefs = φ.labelDefs ++ ψ.labelDefs
- (φ.presup _ψ).labelDefs = φ.labelDefs
- (Semantics.PIP.PIPExprF.exists_ body).labelDefs = []
- (Semantics.PIP.PIPExprF.forall_ body).labelDefs = []
- (Semantics.PIP.PIPExprF.labelDef _label φ).labelDefs = (_label, φ) :: φ.labelDefs
- (Semantics.PIP.PIPExprF.must R φ).labelDefs = φ.labelDefs
- (Semantics.PIP.PIPExprF.might R φ).labelDefs = φ.labelDefs
Instances For
F(¬φ) iff Fφ — negation preserves felicity.
F(φ|ψ) iff Fφ ∧ ψ(w) — presupposition must hold.
F(X≡φ) iff Fφ — label definitions don't affect felicity.
Presupposition truth-independence: φ|ψ is true iff φ is true.
Label definitions are truth-transparent: X≡φ is true iff φ is true.
Conjunction felicity is asymmetric (Karttunen).
Existential felicity is universal over witnesses.
Modal necessity felicity is universal over accessible worlds.