- From: Gary Hallmark <gary.hallmark@oracle.com>
- Date: Mon, 18 Aug 2008 10:37:25 -0700
- To: kifer@cs.sunysb.edu
- CC: Dave Reynolds <der@hplb.hpl.hp.com>, RIF WG <public-rif-wg@w3.org>
you'd also need to extend builtins to support multiple arities for the same function symbol. I think the builtin approach can be made to work but it's rather ugly for my use case, because I always need to assert a classification and the frame slots, so I always have a rule head like And(func:genSym(long-argument-list)#MyType func:genSym(long-argument-list)[slot1->value1 slot2->value2]) I prefer something more purpose-built: New MyType[slot1->value1 slot2->value2] This way, you don't have to write the long-argument-list twice -- you don't write it all. We can explain that the semantics are equivalent to the above where long-argument-list is constructed from the rule ID, its Forall variables, and an occurrence number (should multiple New formulas appear in the same rule). Michael Kifer wrote: > > On Sun, 17 Aug 2008 10:18:22 +0100 > Dave Reynolds <der@hplb.hpl.hp.com> wrote: > > >> Michael Kifer wrote: >> >>> On Fri, 15 Aug 2008 16:07:45 +0100 >>> Dave Reynolds <der@hplb.hpl.hp.com> wrote: >>> >>> >>>> (c) some genSym builtin >>>> >>> Just 0.02c: this cannot be in the Core or in BLD. >>> >> Surely it could if it was deterministic (in which case genSym is not a >> great choice of name). >> > > Exactly. A builtin function instead of a gensym is a different matter. > > >> Perhaps something like: >> >> """ >> func:genSym >> >> (?arg1, ... ?argn; func:genSym(?arg1, ... ?argn)) >> >> Generates and returns a constant uniquely determined by the values of >> the n arguments. This constant takes the form: >> "gensym:ID"^^rif:local >> where ID is a string uniquely determined by the values of the arguments >> ?arg1 through to ?argn. For example, this might be a digest of the >> concatenation of the canonical lexical forms for each argument. >> """ >> >> Thus to use it to generate skolem constants the rule author would need >> to explicitly include a rule identifier and the values of the >> universally quantified variables in the set of genSym arguments. >> > > This would not be a Skolem function. You need an infinite supply of those > functions to achieve the behavior of Skolem functions. But because our > situation has restricted syntax, a builtin like this can go a long way, I > agree. > > > --michael > > > >> Would something along those lines be reasonable? >> >> Dave >> > >
Received on Monday, 18 August 2008 17:40:23 UTC