-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Representing propositions in MeTTa (existential quantifier?) #64
Comments
Also, about the concept of negation. let the analogue of is this the same as |
Okay here's what I learned: An existential statement So Crucially propositions like "all swans are black" are types and not 'normal' atoms so
and so on. Quantifiers should sit at the level of functions transforming proofs into proofs, not at the level of proofs. I'm thinking
then, an observation
would suffice to prove
is this similar to what you had in mind? |
What I've been using so far is, like you suggested, to use a dependent sum for existential quantification and a dependent product for universal quantification. An example of dependent sum in MeTTa can be found here. As for dependent product, you can merely use the arrow type |
Representation depends on how one would like to interpret the quantifiers. Here is an example of building existential and universal quantifiers as programs which returns unit when proposition is true and empty results otherwise.
One can also represent propositions as types or have predicates as a functions which return a boolean value. |
Let's say we have a statement "Bob has blue hair". We could represent it as a unary predicate like
(Predicate Object) ; or (hasBlueHair Bob)
In case of a binary predicate like "Robin loves James", we can write
(Predicate Subject Object) ; or (loves Robin James)
Universal quantification is most intuitively represented by an 'if' statement (functions are not appropriate, as discussed)
For example "all swans are black" could be represented as
How would you represent the existential quantifier though? Obviously a predicate like
(Exists $x)
won't work. My initial thought is that it should be in a way 'dual' to the universal quantifier in the sense thatA: all swans are black
is equivalent toB: there does not exist a swan which is not black
So "there exists a black swan" could be "not all swans are not black"
This is not equivalent to a direct assertion though, and you have to accept law of excluded middle.
As far as I'm aware you should be able to express quantified statements using dependent types in intuitionistic logic but I'm not sure how you would go about this in MeTTa.
What are your thoughts?
The text was updated successfully, but these errors were encountered: