Re: [PRD] Issues to resolve before publication (Execute)

Christian de Sainte Marie wrote:
> Gary Hallmark wrote:
>>
>> The semantics of Execute doesn't make sense because it does not 
>> follow from the syntax.  There is no way to derive Eval(f,w) from f, 
>> the name of the external function, and w, the current state.  For 
>> this to work, you'd have to add syntax so users can define their own 
>> external functions and then you'd have to define Eval(f,w) in terms 
>> of the syntax of f.
>
> I do not understand that: isn't an external a black box, by 
> definition? If we "add syntax so users can define their own external 
> function", they would not be externally specified anymore: wouldn't 
> that beat the very idea of externals?
No, the definition of "external" is that its semantics is fixed and 
independent of any rules that call it.  So if I send you a ruleset with 
a reference to pred:numeric-equal in it, you know the semantics thanks 
to DTB.  But if I send you a ruleset with a reference to 
gary:secret-function in it, you have no idea. 
>
>> Assuming we don't want to define an external function definition 
>> language, a better option is to insist that w=Eval(f,w), i.e. that 
>> Execute does not change the KB.
>
> Which would restrict the use of externals when interchanging rule in 
> RIF, without solving much of a problem, as I see it, since producer 
> and consumer would still have to share the specification of f.
It means that the consumer can ignore the Execute actions and still get 
the same ending state of the KB
>
> Btw, that problem is exactly why some PR languages heve an Update 
> action. We may decide to add one,later on, but that would not change 
> anything to the fact that we cannot say anything about the semantics 
> of an externally specified function, whether or not it modifies the KB.
>
> So, I do not see that we have any alternative to 'Eval', in one form 
> or another...
>
> Christian
>

Received on Monday, 30 June 2008 20:06:13 UTC