resources / logic tool

Situation tree viewer

1

Fluents and initial situation

2

Action axioms

Use fluent names with !, &, |, ->, and parentheses. Empty means true.

Each T/-/F row below edits the successor-state axiom cases for that action.

Successor-state axioms
part_loaded
drilled
inspected
released
Successor-state axioms
part_loaded
drilled
inspected
released
Successor-state axioms
part_loaded
drilled
inspected
released
Successor-state axioms
part_loaded
drilled
inspected
released

3

Generated axioms

Precondition axioms

Poss(load, s) <-> !part_loadedPoss(drill, s) <-> part_loaded & !drilledPoss(inspect, s) <-> drilled & !inspectedPoss(release, s) <-> inspected & !released

Successor-state axioms

part_loaded(do(a, s)) <-> ((a = load and !part_loaded)) or (part_loaded(s) and not ((a = release and inspected & !released)))drilled(do(a, s)) <-> ((a = drill and part_loaded & !drilled)) or (drilled(s) and not ((a = load and !part_loaded)))inspected(do(a, s)) <-> ((a = inspect and drilled & !inspected)) or (inspected(s) and not ((a = load and !part_loaded)))released(do(a, s)) <-> ((a = release and inspected & !released)) or (released(s) and not ((a = load and !part_loaded)))

4

Finite situation tree

4 situations 4 actions valid
100%
loaddrillinspectS00/4S11/4S22/4S33/4

S0

Selected situation

Path S0
part_loaded false
drilled false
inspected false
released false

Executable actions

load Poss: !part_loaded
+part_loaded -drilled -inspected -released

What this visualisation is showing

This is a small situation calculus visualisation tool. You describe a miniature action theory by naming fluents, setting the initial situation, writing action preconditions, and choosing the successor-state axiom cases that say how each action changes each fluent. The generated axioms and the finite situation tree update from that model.

In situation calculus, a situation represents a history of actions. The initial situation is usually written as S0, and doing an action a in a situation s creates the next situation, do(a, s). Fluents are facts whose truth can vary by situation, such as part_loaded(s) or released(s), while Poss(a, s) records when an action is executable.

The important persistence rule is the successor-state axiom: for each fluent, it states exactly when that fluent is true after an action. In this tool, T means the action makes the fluent true, F means it makes the fluent false, and - means inertia carries the previous value forward unless another case changes it.