Documentation

Linglib.Semantics.Reference.ChoiceFunction

Choice functions #

A choice function picks a member of every nonempty property. For Reinhart and for Winter an indefinite noun phrase denotes the value of such a function rather than an existential quantifier, and it scopes where the function variable is bound rather than where a quantifier would raise to. Kratzer gives the function implicit arguments, skolem indices that are bound like pronouns, so a skolemized choice function is a family S → ChoiceFunction E; Mirrazi adds a world argument that an intensional operator can bind, and Owusu feeds the same situation to the function and to the restrictor. Closing the function variable existentially gives the existential reading, and closing it when its index or its restrictor varies with a bound variable gives the reading on which the indefinite scopes below the binder.

Main definitions #

Main results #

References #

structure Reference.ChoiceFunction (E : Type u_1) :
Type u_1

A choice function sends every nonempty property to one of its members.

  • toFun : (E → Prop) → E

    The individual picked from a property.

  • apply_of_exists' (P : E → Prop) : (∃ (x : E), P x) → P (self.toFun P)

    The pick of a nonempty property satisfies it.

Instances For
    @[instance_reducible]
    Equations
    theorem Reference.ChoiceFunction.ext {E : Type u_2} {f g : ChoiceFunction E} (h : ∀ (P : E → Prop), f P = g P) :
    f = g
    theorem Reference.ChoiceFunction.ext_iff {E : Type u_2} {f g : ChoiceFunction E} :
    f = g ↔ ∀ (P : E → Prop), f P = g P
    @[simp]
    theorem Reference.ChoiceFunction.coe_mk {E : Type u_2} (f : (E → Prop) → E) (h : ∀ (P : E → Prop), (∃ (x : E), P x) → P (f P)) :
    ⇑{ toFun := f, apply_of_exists' := h } = f
    theorem Reference.ChoiceFunction.apply_of_exists {E : Type u_2} (f : ChoiceFunction E) {P : E → Prop} (h : ∃ (x : E), P x) :
    P (f P)

    The pick of a nonempty property satisfies it.

    noncomputable def Reference.ChoiceFunction.epsilon {E : Type u_2} [Nonempty E] :

    Hilbert's ε is a choice function.

    Equations
    Instances For
      instance Reference.ChoiceFunction.instNonempty {E : Type u_2} [Nonempty E] :
      Nonempty (ChoiceFunction E)
      theorem Reference.ChoiceFunction.exists_apply_eq {E : Type u_2} {N : E → Prop} {x : E} (hx : N x) :
      ∃ (f : ChoiceFunction E), f N = x

      Every member of a property is the pick of some choice function.

      The existential reading #

      A choice function witnesses the existential reading GQ.some on a nonempty restrictor, but the two analyses are not equivalent: the existential reading asserts the existence of a witness, the choice function commits to one, and distinct choice functions commit differently.

      theorem Reference.ChoiceFunction.some_of_apply {E : Type u_2} (f : ChoiceFunction E) {N VP : E → Prop} (hN : ∃ (x : E), N x) (hVP : VP (f N)) :

      A choice function whose pick satisfies the predicate witnesses the existential reading.

      theorem Reference.ChoiceFunction.forall_apply_iff_some_iff {E : Type u_2} (f : ChoiceFunction E) {N : E → Prop} (hN : ∃ (x : E), N x) :
      (∀ (VP : E → Prop), VP (f N) ↔ Quantifier.GQ.some N VP) ↔ ∀ (x : E), N x → x = f N

      A choice function agrees with the existential reading on every predicate exactly when its pick is the only member of the restrictor.

      theorem Reference.ChoiceFunction.exists_apply_iff_some {E : Type u_2} {N : E → Prop} (hN : ∃ (x : E), N x) (VP : E → Prop) :
      (∃ (f : ChoiceFunction E), VP (f N)) ↔ Quantifier.GQ.some N VP

      Existential quantification over choice functions is the existential reading.

      theorem Reference.ChoiceFunction.forall_apply_iff_every {E : Type u_2} {N : E → Prop} (hN : ∃ (x : E), N x) (VP : E → Prop) :
      (∀ (f : ChoiceFunction E), VP (f N)) ↔ Quantifier.GQ.every N VP

      Universal quantification over choice functions is the universal reading, on a nonempty restrictor.

      theorem Reference.ChoiceFunction.forall_apply_iff_of_not_exists {E : Type u_2} {N : E → Prop} (hN : ¬∃ (x : E), N x) (VP : E → Prop) :
      (∀ (f : ChoiceFunction E), VP (f N)) ↔ ∀ (x : E), VP x

      On an empty restrictor a choice function is unconstrained, so universal quantification over choice functions ranges over the whole domain, where the universal reading is vacuous.

      Scope relative to a binder #

      theorem Reference.ChoiceFunction.exists_forall_apply_iff {E : Type u_2} {ι : Type u_3} [Nonempty E] (R : ι → E → Prop) (VP : E → Prop) :
      (∃ (f : ChoiceFunction E), ∀ (i : ι), VP (f (R i))) ↔ ∀ (i : ι), ∃ (f : ChoiceFunction E), VP (f (R i))

      A choice function applied to a restrictor that contains a bound variable takes no scope relative to the binder. Since the restrictor already varies with the variable, one choice function can be assembled from the pointwise choices.

      theorem Reference.ChoiceFunction.exists_forall_apply_iff_of_injective {E : Type u_2} {ι : Type u_3} [Nonempty E] {R : ι → E → Prop} (hR : Function.Injective R) (hN : ∀ (i : ι), ∃ (x : E), R i x) (VP : ι → E → Prop) :
      (∃ (f : ChoiceFunction E), ∀ (i : ι), VP i (f (R i))) ↔ ∀ (i : ι), Quantifier.GQ.some (R i) (VP i)

      When distinct values of a bound variable give distinct nonempty restrictors, closing a choice function above the binder gives the reading with the existential below it, even if the predicate also contains the variable.

      theorem Reference.ChoiceFunction.exists_pi_apply_iff {S : Type u_1} {E : Type u_2} {N : S → E → Prop} (hN : ∀ (s : S), ∃ (x : E), N s x) (VP : S → E → Prop) :
      (∃ (F : S → ChoiceFunction E), ∀ (s : S), VP s ((F s) (N s))) ↔ ∀ (s : S), Quantifier.GQ.some (N s) (VP s)

      Closing a skolemized choice function above a binder of its index gives the reading with the existential below the binder.