15-317 Constructive Logic
Recitation 3: Quantifiers

First, to warmup, we showed the existential-elimination rule locally complete by providing an expansion. It works very similarly to the expansion for disjunction, and appears in the lecture notes.

We then showed a few examples and non-examples of theorems involving quantifiers:

  • non-examples:
    • (∃ x: τ. A(x)) => ∀ x: τ A(x) -- one examples doesn't prove it for all elements
    • (∀ x: τ. A(x)) => ∃ x: τ A(x) -- what if the type τ is empty?
  • examples:
    • (∃ x: τ. ⊤) ∧ (∀ x: τ. A(x)) => ∃ x: τ A(x) -- given a τ, we can prove it for that one
    • ∀ y: τ. (∀ x: τ. A(x)) => ∃ x: τ A(x) -- equivalently, prove the implication in the scope of a new parameter
    • (∀ x: τ. A(x) => C) => (∃ x: τ. A(x)) => C -- like uncurrying for quantifiers

For the positive examples above, we saw how to prove them. The last one we proved in Tutch, introducing the syntax and constructs for dealing with quantifiers. This includes a new kind of assumption, a:t, for introducing a new parameter. Multiple assumptions (as in existential-elimination) are introduced with a comma.

References:


[ Home | Schedule | Assignments | Handouts | Software ]

fp@cs
Frank Pfenning