Docs / Logic / Trivalent / Deployment

Peters-Kleene deployment

import Linglib.Logic.Trivalent.Deployment · namespace Trivalent

Peters-Kleene deployment applies a classical truth function to three-valued arguments one at a time, from left to right (George 2014 §3). A classical argument fills the next argument position. An undefined argument is repaired to either classical value, and the repair succeeds only if the two values leave the same function of the remaining arguments; otherwise the whole application is undefined. Each argument position is thus treated by the Strong Kleene principle with the earlier arguments fixed and the later ones still open, which is Krahmer's middle Kleene intuition made explicit.

Deploying the classical negation, conjunction, disjunction and material conditional gives exactly the connectives of Peters 1979, the Middle Kleene connectives meetMiddle and joinMiddle. As stipulated truth tables the Peters connectives do not meet the explanatory challenge of Schlenker 2008a, since nothing selects them among the trivalent extensions of the classical connectives. Deriving them by deployment does: the rule is uniform, so a connective's projection behaviour follows from its classical meaning and the order of its arguments.

Main definitions

Main results

Implementation notes

An n-ary truth function is a function on Fin n → Bool, and a 0-ary one is identified with its value. A failed reduction is none rather than George's constant function to the failure value, which deployment then sends to 0. The repair set of a value (Definition 14) is SignType.toFinset. Choosing true or false as the member to reduce by is specific to Bool; repair sets of predicates over an infinite domain (George 2014 §4) will need George's existential formulation of Definition 13.

References

  • George 2014, Some Remarks on Certain Trivalent Accounts of Presupposition Projection
  • Peters 1979, A Truth-Conditional Formulation of Karttunen’s Account of Presupposition
  • Kleene 1952, Introduction to Metamathematics
  • Schlenker 2008a, Be Articulate: A Pragmatic Theory of Presupposition Projection

Declarations

L84–85
L87–89

The Peters-Kleene reduction f///X is the reduction of f by any member of X when every member gives the same reduction, and fails otherwise. It reduces by true when X contains it and by false otherwise, which for a nonempty X is a member; Definition 13 requires X nonempty, and on ∅ the reduction is by false.

def pkReduceL91–99
{n : ℕ} (f : (Fin (n + 1) → Bool) → Bool) (X : Finset Bool) :
Option ((Fin n → Bool) → Bool)

Built from

Used by pkReduce_singleton, pkReduce_toFinset_zero, deploy

L101–104

The Peters-Kleene deployment f[x₁, …, xₙ] Peters-Kleene reduces f by the repair set of each argument in turn, following George's convention f[x₁, …, xₙ] = f[x₁]…[xₙ], and is undefined once a reduction fails.

def deployL111–119
{n : ℕ} :
((Fin n → Bool) → Bool) → (Fin n → SignType) → SignType

Built from

Used by deploy_cons_ofProp, deploy_cons_zero, deploy_ofProp, deploy_eq_zero_of_reduceFirst_ne, deploy₁, deploy₂

An undefined first argument is skipped if its position does not matter, and makes the deployment undefined otherwise.

theorem deploy_cons_zeroL127–133
{n : ℕ} (f : (Fin (n + 1) → Bool) → Bool) (x : Fin n → SignType) :
deploy f (Fin.cons 0 x) = if reduceFirst f true = reduceFirst f false then deploy (reduceFirst f true) x else 0

Built from ,

An undefined argument in a position whose value matters makes the deployment undefined, generalising Remarks 9 and 10.

theorem deploy_eq_zero_of_reduceFirst_neL145–150
{n : ℕ} {f : (Fin (n + 1) → Bool) → Bool} (h : reduceFirst f true ≠ reduceFirst f false) {x : Fin (n + 1) → SignType} (hx : x 0 = 0) :
deploy f x = 0

Built from ,

Unary and binary deployment

Unary deployment is the Strong Kleene lift: it leaves open the classical values f takes on the repair set of its argument.

theorem toFinset_deploy₁L162–166
(f : Bool → Bool) (x : SignType) :
(deploy₁ f x).toFinset = Finset.image f x.toFinset

Built from

After an undefined first argument, binary deployment is unary deployment if the first position does not matter, and undefined otherwise.

theorem deploy₂_zero_leftL173–177
(f : Bool → Bool → Bool) (y : SignType) :
deploy₂ f 0 y = if f true = f false then deploy₁ (f true) y else 0

Built from ,

The Peters connectives

Deploying classical negation gives Kleene's negation (Proposition 3).

@[simp] theorem deploy₁_notL181–183
:
(deploy₁ fun (x : Bool) => !x) = Neg.neg

Built from

Deploying the classical material conditional gives Peters' conditional (Proposition 3).

@[simp] theorem deploy₂_impL193–195
:
(deploy₂ fun (a b : Bool) => !a || b) = fun (x y : SignType) => (-x).joinMiddle y

Built from