Thanks for the rapid response, Elias, Matt, and Ektemple. I had a feeling there was no direct way to do this, but I wanted to be sure I wasn't missing something.
I like the pseudo-relation suggestion. About the only thing it sacrifices is the ability to say things like "Whiskers likes every catnip toy" -- you'd have to loop over catnip toys, calling the "Cause to like" phrase on each -- but it's still much better than manipulating both of the underlying relations by hand.
In fact, it now occurs to me that with a set of
N hidden underlying relations and some convenient phrases, you could have a pseudo-relation with 2^
N distinct values. For example, the phrases
Code:
to decide which number is the opinion of (p - a person) toward (t - a thing):
...
to set the opinion of (p - a person) toward (t - a thing) to (n - a number):
...
to alter the opinion of (p - a person) toward (t - a thing) by (n - a number):
...
could implement numerical opinions ranging from 0 to 255...when what is really going on behind the scenes is that eight hidden relations are carrying the eight bits of the number. After writing the three "interface" phrases, the programmer would never again have to think about those eight underlying relations...