Questions about axioms in the output of translate

24 views
Skip to first unread message

Robert P. Goldman

unread,
Apr 16, 2012, 8:42:29 PM4/16/12
to Fast Downward
[sorry if this duplicates --- I tried to send it earlier, but nothing
seemed to happen, so retrying with the web interface]

1. Are the rule layers zero-based or one-based? I believe the latter,
but am generalizing from little data.
2. The initial state output of the translator: is it semantically
prior to the running of the axioms? I believe so, but wanted to be
sure. So if I wanted to simulate using the translate output, I should
run the axiom layer before trying to execute any operators, yes?

Thank you,
Robert

Malte Helmert

unread,
Apr 17, 2012, 2:18:23 AM4/17/12
to fast-d...@googlegroups.com
On 17.04.2012 02:42, Robert P. Goldman wrote:
> [sorry if this duplicates --- I tried to send it earlier, but nothing
> seemed to happen, so retrying with the web interface]

Hi Robert,

unfortunately the list has to be moderated due to automated spam, so it
may take a while for new posts to show up.

> 1. Are the rule layers zero-based or one-based? I believe the latter,
> but am generalizing from little data.

If I recall correctly, in general they are zero-based, but it is
possible under certain circumstances that no rules show up in layer 0.
(Of course we could detect such situations and renumber the layers, but
we felt that it's not worth bothering.)

> 2. The initial state output of the translator: is it semantically
> prior to the running of the axioms?

Yes. For the derived variables, the values specified in the initial
state output of the translator are not actually the values that hold in
the initial state, but rather the default values that these variables
assume when no other value can be derived (i.e. when negation by failure
kicks in).

> I believe so, but wanted to be
> sure. So if I wanted to simulate using the translate output, I should
> run the axiom layer before trying to execute any operators, yes?

Yes indeed.

Cheers,

Malte

Robert P. Goldman

unread,
Apr 19, 2012, 8:39:30 PM4/19/12
to Fast Downward
So a quick follow-up:
And for successor states, I should, after each action RESET the
derived variables to their initial states, and then run all the rules,
so that they are at the default value, unless explicitly set by one of
the rules?

Thanks,
R

Malte Helmert

unread,
Apr 20, 2012, 8:28:23 AM4/20/12
to fast-d...@googlegroups.com
On 20.04.2012 02:39, Robert P. Goldman wrote:
> So a quick follow-up:

>
>>> I believe so, but wanted to be
>>> sure. So if I wanted to simulate using the translate output, I should
>>> run the axiom layer before trying to execute any operators, yes?
>>
>> Yes indeed.
>
> And for successor states, I should, after each action RESET the
> derived variables to their initial states, and then run all the rules,
> so that they are at the default value, unless explicitly set by one of
> the rules?

Yes. If you want to read more about this, the semantics for this and the
algorithms that Fast Downward uses to evaluate the axioms are described
in the JAIR paper on Fast Downward
(http://ai.cs.unibas.ch/papers/helmert-jair06.pdf) in Section 4,
Definitions 1 and 2 and in Section 5.3.2. (The paper only talks about
binary-valued derived variables since that's all the planner actually
generates, while the code also supports larger domains. But the
generalization is straight-forward.)

Cheers,

Malte

Robert P. Goldman

unread,
May 1, 2012, 3:34:00 PM5/1/12
to Fast Downward
I encountered one more question in dealing with the output of the
translator, in
connection with your earlier response.

On Apr 17, 1:18 am, Malte Helmert <malte.helm...@unibas.ch> wrote:
> On 17.04.2012 02:42, Robert P. Goldman wrote:
> > 2. The initial state output of the translator: is it semantically
> > prior to the running of the axioms?
>
> Yes. For the derived variables, the values specified in the initial
> state output of the translator are not actually the values that hold in
> the initial state, but rather the default values that these variables
> assume when no other value can be derived (i.e. when negation by failure
> kicks in).

I encountered a confusion about this when looking at the output of
translate.py
on one of the airport nontemporal ADL problems.

I assumed that the default values should be the ones that correspond
to <none of
those> in output.sas, but I found that in some cases, the initial
value of the
variable is not this value. E.g., I have

var10 = 0 in the initial state, but it is described as:

begin_variable
var10
1
2
Atom new-axiom@1(seg_rw_0_400, south, medium, seg_rww_0_50)
<none of those>
end_variable

So I would have thought the default value was 1, rather than zero.

Thanks,
Robert

Malte Helmert

unread,
May 1, 2012, 3:39:28 PM5/1/12
to fast-d...@googlegroups.com
On 01.05.2012 21:34, Robert P. Goldman wrote:

> I encountered one more question in dealing with the output of the
> translator, in connection with your earlier response.

[...]

> I assumed that the default values should be the ones that correspond
> to <none of
> those> in output.sas, but I found that in some cases, the initial
> value of the
> variable is not this value. E.g., I have
>
> var10 = 0 in the initial state, but it is described as:
>
> begin_variable
> var10
> 1
> 2
> Atom new-axiom@1(seg_rw_0_400, south, medium, seg_rww_0_50)
> <none of those>
> end_variable
>
> So I would have thought the default value was 1, rather than zero.

I don't think the translator guarantees that the default value is always
a "<none of those>" fact, so I wouldn't rely on it. (Generally speaking,
the "names" for the various values in the domain of a variable carry no
semantical meaning.)

Cheers,

Malte

Robert P. Goldman

unread,
May 1, 2012, 5:23:04 PM5/1/12
to Fast Downward
Thank you. I wasn't relying on the value label. I was just concerned
that it revealed a misconception on my part. So your answer is a
relief.
Reply all
Reply to author
Forward
0 new messages