Hi Christian, As far as I understand, you want to reason about the effects of actions without instantiating actions and/or states to ground terms. The way the next-rules (or in fact any gdl rule) is written this will not work by just calling the d_next predicate. Some potential problems with your approach that you might want to think about: 1. What is the semantics of variables in your State? (Are the variables existentially or universally quantified?) 2. What happens with facts that are not mentioned in the state? Are these considered as unknown, false, or true? 3. The current implementation of d_true(F) as member(F, State) will instantiate variables in F and in State. Besides, it probably doesn't address point 2 properly, it will just fail for facts that are not in the state. 4. Even with another implementation of d_true you have the problem that calling next(f(X)) with rules like next(f(X)) :- p(X). p(a). p(b). will instantiate X. I'm really interested in what you want to achieve. However, I think further discussions will not be of interest to the list, therefore I suggest to take them offline. Regards, Stephan On Tuesday 09 February 2010, Christian Wirth wrote: > My call looks now like this: > getunboundmove(Player,Move,Term,State),bagof(Effect,(d_next(Effect,[does(Pl >ayer,Move)]-State)),Effects). > [...] > if i only call getunboundmove(Player,Move,Term,State), the solution is: > > Player = Player > Move = move(north) > Term = [d_role(Player, _219), 'd_++'(_265, _340, _219), d_cell(_264, > _340, _219)] - Read as: role Player exists | _340 is _264 + 1 | cell > x=_263,y=_340 exists (the last var is State=_219, but these facts are > state independent) > State = [location(_73, _264, _265), \+ blockednorth(_264, _265)] - > Player _73 is in position _264/_265 (Here _73 should be Player, but > thats not importent) | the north of position _264/_265 is not blocked > > and for effect, i want to get: > > Effects=[location(Player,_264,_340)] -- Stephan Schiffel Technische Universität Dresden, Fakultät Informatik, 01062 Dresden, Germany Tel: [49] (351) 463-39243 Fax: [49] (351) 463-37924 Email: stephan.schiffel_at_...69...Received on Wed Feb 10 2010 - 10:07:23 CET
This archive was generated by hypermail 2.3.0 : Wed Sep 25 2024 - 15:13:20 CEST