I have a problem reading existing question's answers. I've successfully encoded the proof of one of De Morgan's Laws, ¬∃x P(x) → ∀x ¬P(x)
, for Quantifiers formally via cubicaltt type-checker via Curry-Howard correspondence, the solution is available on GitHub. As the basis, I took the answers from StackExchange question mentioned above, but as I went through their steps, this was unclear to me:
All the answers are using a strange (for a person who isn't too familiar with formal logic) notion of mentioning a predicate without a quantifier, and then using rules like ∀-intro
and ∃-intro
. For example, the first, accepted answer assumes P(x)
in its second step. What would be a Curry-Howard counterpart to something like that? What is the meaning of P(x)
and how is it different from ∀xP(x)
?
It uses ∃-intro
in one step, and ∀-intro
in another (step 6). Obviously, you cannot just arbitrary add ∃
or ∀
whenever you want. What are the rules, and which is permitted to use and when?
P(x)
might be a typo and what is meant isP(a)
wherea
is an arbitrary constant (note the[a]
in that line).P(a)
doesn't need a quantifier sincea
is not a variable. Similarly line 5 should be~P(a)
. Does this clarify anything for you?