02
Apr 09

Predicate logic

Courtesy of this site, we have a nice succint definition of a predicate:

A predicate is a verb phrase template that describes a property of objects, or a relationship among objects represented by the variables.

The statement Mat is right can be thus represented by the arbitrary object Mat as it applies to the predicate “is_right” represented by capital R:

R(Mat)

Or for a different verb template, “Mat gives to the world a lesson in being right” where the template reads “[object] gives to [object] an [object]”, the predicate can be expressed as Give(x,y,x) or G(x,y,z):

G(Mat,world,lesson in being right)

Fine. Hardly stretches the old wheat and grain.

(New rhyming slang invention.)

But then I come unstuck.

The page then gives us a little test as follows:

Let G(x,y) represent the predicate x > y

  • G(6,13) means 13 is greater than 6. Yes or no?

… obviously this is a no, because according to the ordering of the predicate definition, the first value should be greater than the second.

Computer says “correct”!

  • G(2,0) is true. Yes or no?

… well, yes, 2 is greater than 0.

Computer says “correct”!

(Interestingly we have now invoked an assertion outside of the predicate definition, one which depends on us being aware of what “greater than” actually means in the real world. I can just about cope. But I’m scared.)

  • G(7,1) means 7 is greater than 1. Yes or no?

Well, that’s exactly how the predicate reads. As an aside to this, seven is indeed greater than one, although that wasn’t the question that was asked.

Computer says “correct”! (Well at least to the first bit!)

  • “4 is less than 5” can be represented by G(5,4). Yes or no?

I answered NO. Maybe you can see why already, from my comments.

Computer says “incorrect”.

Mat says “does not compute does not compute”

Can someone shed some light on this? I’m sure I’m missing something very basic.

My reason for answering NO was that, regardless of the values, it doesn’t follow that if x is greater than y, then the opposite is definitely not true. This is because the predicate “is_less_than” is not even defined in this exercise, in order for us to say that it’s the opposite to the predicate “is_greater_than”.

If it read

“blue is greater than green” can be represented by G(blue,green)

… then I would agree: yes. But,

that “green is less than blue” can be represented by G(blue,green)

… is surely never true.

I prefer these object values of green and blue when dealing with a mathematical construct “is greater than”, they are more arbitrary than actual numbers and therefore helpful in abstracting predicate logic from the functions it seeks to convey.

If the predicate “is_less_than” were to be defined, then it still wouldn’t hold true, not until we have also defined “is_equal_to”.

Consider the question:

“5 is less than 5” can be represented by G(5,5). Yes or no?

The fact that 5 is not less than 5 is largely irrelevant in answering this question. Of course, 5 is NOT less than 5 in the real world – but the real world has nothing to do with predicate logic. The reason the above is NO is because the predicate “is_equal_to” has still not been defined.

I’m making such a big thing about the ‘real world’, because have we not also applied some non-predicate mathematics to our workings out when answering that second question posed by the website?

I’m down with that shit, but it would have been nice to know in advance, right? Especially as all the other questions were ones of veracity of equivalence rather than truth in the real world.

So – someone help me out on this.

Is Mat Right?

R(Mat) is true?