lost with the existencial variables

with:

@forAll :a.
{ @forSome :b . :a :b :e } => { ?a :e :b }.
{ :a _:b :e } => { ?a :f _:b }.
:m :n :e.

I obtain from cwm

:m :e :b;
   :f  [];
   :n :e .
{ @forSome :b . :a :b :e . } log:implies {:a :e :b . } .
{ @forSome :_g0 . :a :_g0 :e . } log:implies {:a :f [] . } .

####################################

but from

@forAll :a.
@forSome :b .

{ :a :b :e } => { ?a :e :b }.
{ :a _:b :e } => { ?a :f _:b }.
:m :n :e.

I obtain

@forAll :a.
@forSome :b .

:m :f [];
   :n :e .
{ :a :b :e . } log:implies { :a :e :b . } .
{ @forSome :_g0 . :a :_g0 :e . } log:implies { :a :f [] . } .

this means that we louse the triple ':m :e :b' from the output. I was
aspecting to get one of 2 triples:

:m :e :n
:m :e :[]

but no triples seems strang.
Shall I intrepet that:
   if we have a existencial variable in the head (right side of the
rule), no triple shall be created.
   if we have a existencial variable in the body (left side of the
rule) defined in a upper level (outside this context {} ), no triple
shall be created.

Or there is a bug in cwm

Thanks for the help

Marcos


--
Marcos Rebelo
http://oleber.awardspace.com/

Received on Wednesday, 26 April 2006 13:51:29 UTC