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
- (∃ 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?
- (∃ 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
- (∀ 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.