- From: Sandro Hawke <sandro@w3.org>
- Date: Tue, 05 May 2009 10:03:02 -0400
- To: Jos de Bruijn <debruijn@inf.unibz.it>
- cc: Dave Reynolds <der@hplb.hpl.hp.com>, Adrian Paschke <paschke@inf.fu-berlin.de>, 'RIF WG' <public-rif-wg@w3.org>
> Sandro Hawke wrote:
> >>> I don't see why we are restricting to ground lists rather than using the
> >>> safety definition to limit use of the list operator.
> >
> > There's some terminological confusion here. No one is suggesting having
> > anything other than ground lists in Core. Ground lists are lists which
> > (as stored and manipulated) do not contain empty slots with unification
> > semantics (aka unbound variables). No one is suggesting lists in Core
> > should contain such odd things.
>
>
> We are talking here about RIF Core syntax. A term is ground iff it does
> not contain variables.
> If you mean something else with "ground", please use a different term.
Okay, I suggest we avoid using the term 'ground' with respect to lists,
since it's clearly causing more harm than good.
> > The text in the current Core spec (to my surprise) contain an additional
> > restriction, which is that the list construction operator syntactically
> > cannot be used with variables of any kind! This is what this thread is
> > about. I guess I'd call that a "super-safe list constructor", because
> > it gives you some extra guarantees, beyond even what strong safeness
> > gives you.
> >
> > Dave and I are asking for justification for this super-safe list
> > constructor (and the GROUNDTERM, GROUNDUNITERM productions added to
> > support it).
>
> Well, this was my understanding (and it seems also the understanding of
> others) from the resolution at the F2F [1]:
>
> RESOLVED: Core will have immutable Ground Lists (no variables stored
> inside the list) with builtins generally paralleling the XPath
> "Sequence" functions (but this isn't a real XPath sequence, since it can
> be nested, etc). (Actual builtins to be settled in the future, soon) (If
> we have strong safeness in Core, then this stuff will be mostly useless
> in Core.)
>
>
> I actually still don't understand what "immutable" means. I also don't
> understand what "variables stored inside a list" are.
>
> [1] http://www.w3.org/2005/rules/wg/meeting/2009-04-15
Okay, let's fall back to test cases....
test-case-1:
PREMISE: forall ?i (
if ex:p(?i) then ex:q(List(ex:foo ?i))
)
ex:p(1)
CONCLUSION: ex:q(List(eg:foo 1))
I expect Core systems to handle that. By the current draft, that's
unfortunately a negative syntax test.
What I understood we were ruling out with the resolution you quote was
rules like this:
test-case-2:
PREMISE: forall ?i (
if List(?i) = List(1) then passed
)
NON-CONCLUSION: passed
That is, unifying list structures. We don't want that in Core.
Does that make more sense?
-- Sandro
Received on Tuesday, 5 May 2009 14:03:11 UTC