Additional definitions for the STRIPS formalism #
This file extends Validator.PlanningTask.Core by implementing
- new operations for working with
Path, - definition for reachability of states,
- methods to get all (goal)states of a planning problem,
- definitions of progression and regression,
- lemmas to work with progression and regression.
Path #
snoc #
In Path.cons, paths are expanded by adding states at the front of the path
(leaving the last state unchanged). Path.snoc allows to extend the path at the back,
leaving the first state unchanged. The name snoc comes from reading cons in reverse order.
Equations
- Validator.Path.snoc a s2 ha (Validator.Path.empty s2) succ = Validator.Path.cons a s3 ha succ (Validator.Path.empty s3)
- Validator.Path.snoc a s2 ha (Validator.Path.cons a' s4 ha' succ' π') succ = Validator.Path.cons a' s4 ha' succ' (Validator.Path.snoc a s2 ha π' succ)
Instances For
The length of a path.
Equations
- (Validator.Path.empty s).length = 0
- (Validator.Path.cons a s2 ha succ π).length = π.length + 1
Instances For
Convert Path.cons, where we have access to the first action and the second state of the path,
to Path.snoc, where we have access to the last action and the second to last state of the path.
Allows to perform cases with Path.empty and Path.snoc instead of Path.empty and Path.cons.
append #
Given a path form a s1 to s2 and a path from s2 to s3, we obtain a path from s1 to s3.
Equations
- (Validator.Path.empty s2).append x✝ = x✝
- (Validator.Path.cons a s2' ha succ π').append x✝ = Validator.Path.cons a s2' ha succ (π'.append x✝)
Instances For
Equations
- Validator.Path.instHAppend = { hAppend := Validator.Path.append }
Mem #
A state s is a member of a path π if π traverses through s.
Equations
- Validator.Path.Mem s (Validator.Path.empty s2) = (s = s2)
- Validator.Path.Mem s (Validator.Path.cons a s2_3 ha succ π) = (s = s1 ∨ Validator.Path.Mem s π)
Instances For
Equations
- Validator.Path.instMembershipState = { mem := fun (π : Validator.Path pt s1 s2) (s : Validator.State n) => Validator.Path.Mem s π }
split #
Additional definitions for STRIPS #
Reachable #
A state s' is reachable from s if there is a path from s to s'.
This is the Prop version of Path.
Equations
- Validator.Reachable pt s s' = Nonempty (Validator.Path pt s s')
Instances For
states and goal_states #
The set of all goal states of the given planning problem.
Equations
- pt.goal_states = {s : Validator.State n | pt.GoalState s}
Instances For
progression and regression #
The progression of a set of states S by an action a.
Equations
- x✝.progression' S a = {s : Validator.State n | ∃ s' ∈ S, Validator.Successor a s' s}
Instances For
The progression of a set of states S by a set of actions A.
Equations
- pt.progression S A = {s : Validator.State n | ∃ a ∈ A, s ∈ pt.progression' S a}
Instances For
The regression of a set of states S by an action a.
Equations
- x✝.regression' S a = {s : Validator.State n | ∃ s' ∈ S, Validator.Successor a s s'}
Instances For
The regression of a set of states S by a set of actions A.
Equations
- pt.regression S A = {s : Validator.State n | ∃ a ∈ A, s ∈ pt.regression' S a}