-
Notifications
You must be signed in to change notification settings - Fork 28
Description
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
(if (premise) (conclusion) ())
; or
(if (isSwan $x) (isBlack $x) ())
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 that A: all swans are black is equivalent to B: there does not exist a swan which is not black
So "there exists a black swan" could be "not all swans are not black"
(not (if (isSwan $x) (not (isBlack $x)) ()))
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?