[sc34wg3] Re: Reducing redundant constructs
Robert Barta
sc34wg3@isotopicmaps.org
Sat, 16 Jul 2005 13:42:20 +1000
On Fri, Jul 15, 2005 at 07:15:50AM -0400, Patrick Durusau wrote:
> The question is: What is the "set" in question.
>
> If it is only the set of values, then yes, your reading is correct.
>
> If the set in question is an identifier, plus a set of values, then the
> fact that sets of values are "identical" does not lead to the same
> result. At least if the identifiers are different. If they are the
> same, then again, you are correct.
Lars, Patrick,
Thanks for the insightful discussion :-). I think you hit a point
which is important to elaborate on.
1) Tau+ says that proxies are sets (of whatever).
2) It also introduces identifiers, but they are nothing else than
a convenience, a shorthand for the 'real thing', the proxy itself.
So the proxies
{ < name, "Larsbot" >, < shoesize, 123 > }
{ < name, "Patrick" >, < haircolor, white > }
are what they are. They do not need an identifier, per se, but
if I ever want to connect them into a statement
{ < protagonist, ....>, < protagonist, ....> }
and I would want the Patrick and the Larsbot proxies there, I would
have to expand
{ < protagonist, { < name, "Larsbot" >, < shoesize, 123 > } >,
< protagonist, { < name, "Patrick" >, < haircolor, white > } > }
which is not overly convenient. So, Tau+ decides to introduce (otherwise
completely meaningless identifiers) and simply says "we treat identifiers
and the proxy they are for as interchangeable".
Real logicians may wince here.
NOTE: THESE IDENTIFIERS ARE NOT PART OF THE SET THEY STAND FOR. Nothing
in Tau+ would say so.
So the above becomes:
xyz = { < name, "Larsbot" >, < shoesize, 123 > }
abc = { < name, "Patrick" >, < haircolor, white > }
{ < protagonist, xyz >, < protagonist, abz > }
3) 'Identical' is not 'equivalent'.
Identical proxies are just identical sets. And sets are identical, if
they have the same elements. And if these elements are <key, value> pairs,
then they are compared as such.
Example:
{ < name, "Larsbot" >, < shoesize, 123 > }
and
{ < shoesize, 123 >, < name, "Larsbot" > }
are identical.
Example:
{ < name, "Larsbot" >, < shoesize, 123 > }
and
{ < shoesize, 123 >, < name, "Larsbot" >, < tmdm-lover, 'most-certainly' > }
are obviously not.
'Equivalence' is now a semantical relationship between two (or more)
proxies. This is handled by this beautiful partial function \bowtie which
can be used to let a map be 'viewed through the eyes of a particular equivalence
relation'.
If part of this \bowtie it is defined that
function bowtie (proxy1, proxy2) {
if proxy1.shoesize == proxy2.shoesize then
return union (proxy1, proxy2)
else
undefined
}
then this would merge according to the shoesize and simply would
build the union of all properties. [ But anything can be hidden in this
function, even accessing outside knowledge. ]
\rho