Some questions/comments on the DAML draft

From: pat hayes (
Date: 10/09/00


  </Property>  <Property ID="disjointUnionOf">
<domain resource="#Class"/>
<range resource="#List"/>

for unionOf(X, Y) read: X is the disjoint union of the classes in
   the list Y: (a) for any c1 and c2 in Y, disjointWith(c1, c2),
   and (b) i.e. if something is in any of the classes in Y, it's
   in X, and vice versa.

cf OIL disjoint-covered
</comment> </Property>  <Property ID="intersectionOf">

<! COMMENT: This isnt the usual notion of 'disjoint-union'. The usual 
one is the union of two disjoint copies of the arguments. Imagine 
replacing A and B by A' and B' where A' differs from A in having all 
the elements of its intersection with B marked as 'first copy', and 
similarly for B' but marked 'second copy', then the disjoint union of 
A and B is the union of A' and B'. So for example the disjoint union 
of a set with itself is a set with two copies of everything in the 
original set. >

<! QUESTION: what is the value of your disjoint-union when the 
classes arent disjoint?>

  </Property>  <Property ID="complementOf">
   for complementOf(X, Y) read: X is the complement of Y; if something is in Y,
   then it's not in X, and vice versa. cf OIL NOT</comment>
<! COMMENT: It might be safer to use relative complement, ie 
subtraction of one class from another. Then complement is relative 
complement from the universal class. The reason this might be safer 
is that for many people there is no universal class, so (absolute) 
complement isnot exactly well-defined. In any case relative 
complement is often handy in its own right. >

<Property ID="oneOf">
<comment>for oneOf(C, L) read everything in C is one of the things in L;
This lets us define classes by enumerating the members.
<! QUESTION: Does this mean that C and L have exactly the same members? >

  <Property ID="imports">
<comment>for imports(X, Y) read: X imports Y; 	i.e. X asserts the* 
contents of Y by reference; 	i.e. if imports(X, Y) and you believe 
X and Y says something, 	then you should believe it.  	Note: 
"the contents" is, in the general case, 	an il-formed definite 
description. Different 	interactions with a resource may expose 
contents 	that vary with time, data format, preferred language, 
	requestor credentials, etc. So for "the contents", 	read 
"any contents".
</comment> </Property>

<! COMMENT: I'm sure you know this is a can of worms,and I won't ask 
about 'content', but what (kind of thing) is X supposed to be here? 
(A class??)  >


<Class ID="Numeral">  <label>Numeral</label>  <comment>a sequence 
of digits (perhaps a sign? decimal place?).	Radix 10, I guess. 
Note that "10" is a numeral,	but the corresponding number is 
something else:	"10" is a label for that number; i.e. 
daml:label(n, "10").	@@hmm... is label unambiguous over Numbers? 
	or do we allow, e.g. "010" and "10" to denote the same number?
<! I'd suggest allowing leading zeros, but they don't change the 
denotation. But note, people often do want to distinguish 10 from 
10.0 as being different kinds of thing, so be careful, if you allow 
decimals, to let people keep integers and reals separate. Similarly 
for signs and negative numbers. Usual class distinctions for 
mathematicians are: naturals (positive 
only)/integers/rationals/reals; for geeks are: integers/reals. 
Naturals are natural for counting things. >

<Property ID="min">  <domain 
resource=""/>  <range 
resource="#Integer"/>  <comment>for min(S, x) read: x is the minimum 
of s; i.e.	x is in S and every y in S is not less than x
<! Might be better to phrase this as every y in S is greater or 
equal. The way you have it, S could contain some non-integers and 
still have a minimum. Similarly for max.>

<Class ID="Range">  <label>Range</label>  <comment>    a set 
(class) of integers ranging from some min to some max.    @@Hmm... 
how to say that each instance of Range is a subclass of Integer?
<! You could say that the range was the powerset of Integer, ie set 
of all subsets of Integer, maybe? Powerset (powerclass?) is likely to 
be generally useful.>
<! Why not have this a function from a pair of integers to a class?>


<Class ID="Person">  <subClassOf resource="#Animal"/> 
<restrictedBy>    <Restriction>      <onProperty 
resource="#parent"/>      <toClass resource="#Person"/> 
</Restriction>  </restrictedBy></Class>
<! Well, this isnt wrong exactly, but its also not a very good 
definition since it is a nonterminating recusion. Does this matter in 
this framework?>

<UniqueProperty ID="mother">  <subProperty resource="#parent"/> 
<range resource="#Woman"/></UniqueProperty>
<! Is father a UniqueProperty also, or are you making some biological 
point here?>
<! Does it follow from the above that father and mother between them 
constitute all the parents? How would that conclusion be derived in 

<TransitiveProperty ID="ancestor">  <comment>@@need a property to 
relate this to parent</comment>
<! This is actually quite tricky. What you want to say is that 
ancestor is the transitive closure of parent, which means that 1. a 
parent is an ancestor, 2. that ancestor is transitive, and 3. that 
ancestor is the smallest (least true) property satisfying 1. and 2. 
This last part is the trickiest part and is hard to state properly 
even in full first-order logic. It might be a good idea to actually 
have transitiveClosure in the language as a primitive if you really 
think it is going to be used a lot, rather than try to define it.>

<Class ID="Car">  <comment>no car is a person</comment> 
<subClassOf>    <Class>      <complementOf resource="#Person"/>
<That seems to say that a car is *anything* that is not a person. 
What you should say is that it is a subclass of the complementOf, or 
just say they are disjoint. Or you can say the relativecomplement is 
unchanged. >

<Class ID="Height">  <oneOf parseType="daml:collection">    <Height 
ID="short"/>    <Height ID="medium"/>    <Height ID="tall"/> 
<! I guess it is churlish to point out that this is meaningless, 
since a tall man is shorter than short building?>

IHMC					(850)434 8903   home
40 South Alcaniz St.			(850)202 4416   office
Pensacola,  FL 32501			(850)202 4440   fax

This archive was generated by hypermail 2.1.4 : 03/26/02 EST