W3C home > Mailing lists > Public > public-rif-wg@w3.org > January 2008

Re: model theory of error [Yes, proposing one!]

From: Christian de Sainte Marie <csma@ilog.fr>
Date: Fri, 11 Jan 2008 13:57:10 +0100
Message-ID: <478767A6.2030007@ilog.fr>
To: Michael Kifer <kifer@cs.sunysb.edu>
CC: RIF WG <public-rif-wg@w3.org>

Michael,

So, while you were drinking vodka, I paused and tried to think instead 
of reacting with my reptilian brain; and (thanx to that very useless 
meeting I have to attend this morning :-) I looked a little bit into 
something I had had in the back of my head all the time and got too 
carried out to consider further...

What if the new truth value E was such that:
  ~E = E/\F = E/\T = E\/F = E\/T
     = E :- T = E :- F = T :- E = F :- E
     = Forall E = Exists E
     = E
so that as soon as you have an E somewhere, everything becomes E (so, 
the intuitive semantics of E is more like "undefined" than "error")?

Would that lead somewhere?

The intuition is that such an E would allow us to say that a RIF dialect 
does not guarantee any useful meaning if rules retrieved from the format 
are used in a way that is not supported by the dialect.

In the present case, it would allow us to say that BLD does not carry 
any useful meaning as soon as a builtin is applied to an out-of-domain 
argument, thus allowing one implementation to throw an exception, 
another one to add an error fact in a fact base, yet another to continue 
drawing inferences at its own risk (possibly notifying the user that 
these inferences are not necessarily intended by the producer of the 
rules retrieved from RIF) etc.

Would that be a workable direction to explore?

> 4. The builtin functions will be defined so that they will return rif:error
>    whenever their arguments are of the wrong type.

Another question I had in mind (but I am not sure how important it is) 
is: can we do without introducing rif:error? That is, specify directly 
something like:
                           /
                           | I_F(f)(I(t1),...,I(tn)) if all args are ok
     I(f ( t1 ... tn )) = <
                           | _|_ if one argument is of the wrong type
                           \

> Comments? (esp. if anyone can see whether option (a) breaks somewhere)

Ideally, we should specify E in suc a way that extensions (standard or 
user-defined) of BLD could give it stronger semantics, e.g. 
corresponding to options (a) or (b).

Christian
Received on Friday, 11 January 2008 12:57:35 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 2 June 2009 18:33:44 GMT