All variables i have a primed and an unprimed version,
represented by 2 * i + 1 and 2 * i respectively.
Equations
- V.toUnprimed = ⟨List.map Fin.toUnprimed ↑V, ⋯⟩
Instances For
@[simp]
Equations
Instances For
Equations
- M.unprimedState = {i : Fin n | M i.toUnprimed}
Instances For
Swap the primed and unprimed versions of the variables in V and replace the other primed variables with their even version.
Equations
Instances For
theorem
Validator.Formula.Model.exists_model_of_state
{n : ℕ}
(s : State n)
:
∃ (M : Model (2 * n)), s = M.unprimedState
- toStates (φ : R) : States n
Instances
def
Validator.Formalism.Variable.models
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
:
Variable pt R → Formula.Models (2 * n)
Instances For
@[reducible, inline]
Instances For
Instances For
instance
Validator.Formalism.Variable.instMembershipFinHMulNatOfNat
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[F : Formalism pt R]
:
Membership (Fin (2 * n)) (Variable pt R)
Equations
- Validator.Formalism.Variable.instMembershipFinHMulNatOfNat = { mem := fun (x : Validator.Formalism.Variable pt R) (i : Fin (2 * n)) => i ∈ ↑x.vars }
@[reducible, inline]
abbrev
Validator.Formalism.UnprimedVariable
{n : ℕ}
(pt : STRIPS n)
(R : Type)
[F : Formalism pt R]
:
Equations
- Validator.Formalism.UnprimedVariable pt R = { x : Validator.Formalism.Variable pt R // x.vars.IsUnprimed }
Instances For
def
Validator.Formalism.UnprimedVariable.ofVarset'
{n : ℕ}
{pt : STRIPS n}
(R : Type)
[Formalism pt R]
[h : Formula.OfPartialModel (2 * n) R]
(V : VarSet' n)
(pos : Bool := true)
:
UnprimedVariable pt R
Equations
Instances For
@[simp]
theorem
Validator.Formalism.UnprimedVariable.mem_models_ofVarSet'
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
[h : Formula.OfPartialModel (2 * n) R]
{V : VarSet' n}
{pos : Bool}
{M : Formula.Model (2 * n)}
:
theorem
Validator.Formalism.UnprimedVariable.mem_models_of_eq_toState
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
{x : UnprimedVariable pt R}
{M M' : Formula.Model (2 * n)}
:
M.unprimedState = M'.unprimedState → M ∈ (↑x).models → M' ∈ (↑x).models
theorem
Validator.Formalism.UnprimedVariable.mem_models_iff_of_eq_unprimedState
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
{x : Variable pt R}
{M M' : Formula.Model (2 * n)}
:
x.vars.IsUnprimed → M.unprimedState = M'.unprimedState → (M ∈ x.models ↔ M' ∈ x.models)
@[irreducible]
def
Validator.Formalism.UnprimedVariable.toPrimedAux
{n : ℕ}
(oldVars : List (Fin (2 * n)))
(h : ∀ i ∈ oldVars, Even ↑i)
(toRename : List (Fin n))
:
Equations
- One or more equations did not get rendered due to their size.
- Validator.Formalism.UnprimedVariable.toPrimedAux [] h_2 toRename = []
- Validator.Formalism.UnprimedVariable.toPrimedAux oldVars h [] = oldVars
Instances For
def
Validator.Formalism.UnprimedVariable.toPrimedOld
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
[Formula.RenamingOld (2 * n) R]
(x : UnprimedVariable pt R)
(V : VarSet' n)
:
Variable pt R
Make all unprimed vars in x corresponding to the vars in V primed.
TODO : clarify the difference between all kinds of variables.
Equations
- x.toPrimedOld V = Validator.Formula.RenamingOld.rename ↑x ⟨Validator.Formalism.UnprimedVariable.toPrimedAux ↑(↑x).vars ⋯ ↑V, ⋯⟩ ⋯
Instances For
theorem
Validator.Formalism.UnprimedVariable.mem_models_toPrimedOld_iff
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
[Formula.RenamingOld (2 * n) R]
{x : UnprimedVariable pt R}
{V : VarSet' n}
{M : Formula.Model (2 * n)}
:
def
Validator.Formalism.UnprimedVariable.toPrimed
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
[Formula.Rename (2 * n) R]
(x : UnprimedVariable pt R)
(V : VarSet' n)
:
Variable pt R
Make all unprimed vars in x corresponding to the vars in V primed.
TODO : clarify the difference between all kinds of variables.
Equations
Instances For
theorem
Validator.Formalism.UnprimedVariable.mem_models_toPrimed_iff
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
[Formula.Rename (2 * n) R]
{x : UnprimedVariable pt R}
{V : VarSet' n}
{M : Formula.Model (2 * n)}
:
@[reducible, inline]
Equations
- Validator.Formalism.Literal pt R = (Validator.Formalism.Variable pt R × Bool)
Instances For
@[reducible, inline]
Equations
Instances For
def
Validator.Formalism.UnprimedLiteral.pos
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
(x : UnprimedVariable pt R)
:
UnprimedLiteral pt R
Instances For
def
Validator.Formalism.UnprimedLiteral.neg
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
(x : UnprimedVariable pt R)
:
UnprimedLiteral pt R
Instances For
theorem
Validator.Formalism.UnprimedLiteral.toStates_eq
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
{l : UnprimedLiteral pt R}
:
@[reducible, inline]
Equations
Instances For
Instances For
@[reducible, inline]
Equations
Instances For
def
Validator.Formalism.UnprimedVariables.single
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
:
UnprimedVariable pt R → UnprimedVariables pt R
Instances For
@[simp]
theorem
Validator.Formalism.UnprimedVariables.val_single
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
{x : UnprimedVariable pt R}
:
theorem
Validator.Formalism.UnprimedVariables.inter_subset_union_iff_models
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[F : Formalism pt R]
(X1 : Variables pt R)
(X2 : UnprimedVariables pt R)
:
def
Validator.Formalism.UnprimedVariables.toPrimed
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[F : Formalism pt R]
[Formula.Rename (2 * n) R]
(X : UnprimedVariables pt R)
(V : VarSet' n)
:
Variables pt R
Equations
- X.toPrimed V = List.map (fun (x : Validator.Formalism.UnprimedVariable pt R) => x.toPrimed V) X
Instances For
@[reducible, inline]
Equations
Instances For
@[reducible, inline]
Equations
Instances For
def
Validator.Formalism.UnprimedLiterals.single
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
:
UnprimedLiteral pt R → UnprimedLiterals pt R
Equations
Instances For
instance
Validator.Formalism.UnprimedLiterals.instAppend
{n : ℕ}
{pt : STRIPS n}
{R : Type}
[Formalism pt R]
:
Append (UnprimedLiterals pt R)
Equations
- Validator.Formalism.UnprimedLiterals.instAppend = { append := fun (L1 L2 : Validator.Formalism.UnprimedLiterals pt R) => (L1.1 ++ L2.1, L1.2 ++ L2.2) }
- empty {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] : IsVariable pt R ∅
- init {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] : IsVariable pt R {pt.init}
- goal {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] : IsVariable pt R pt.goal_states
- explicit {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] (φ : R) : IsVariable pt R (toStates pt φ)
Instances For
- pos {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] {S : States n} : IsVariable pt R S → IsLiteral pt R S
- neg {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] {S : States n} : IsVariable pt R S → IsLiteral pt R Sᶜ
Instances For
- single {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] {S : States n} : IsLiteral pt R S → IsLiteralUnion pt R S
- union {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] {S S' : States n} : IsLiteralUnion pt R S → IsLiteralUnion pt R S' → IsLiteralUnion pt R (S ∪ S')
Instances For
- single {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] {S : States n} : IsVariable pt R S → IsVariableInter pt R S
- inter {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] {S S' : States n} : IsVariableInter pt R S → IsVariableInter pt R S' → IsVariableInter pt R (S ∩ S')
Instances For
- single {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] {S : States n} : IsLiteral pt R S → IsLiteralInter pt R S
- inter {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] {S S' : States n} : IsLiteralInter pt R S → IsLiteralInter pt R S' → IsLiteralInter pt R (S ∩ S')
Instances For
- empty {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] {S : States n} {A : Actions n} : IsVariableInter pt R S → IsProgrInter pt R (pt.progression S A)
- inter {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] {S S' : States n} {A : Actions n} : IsVariableInter pt R S → IsLiteralInter pt R S' → IsProgrInter pt R (pt.progression S A ∩ S')
Instances For
- empty {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] {S : States n} {A : Actions n} : IsVariableInter pt R S → IsRegrInter pt R (pt.regression S A)
- inter {n : ℕ} {pt : STRIPS n} {R : Type} [Formalism pt R] {S S' : States n} {A : Actions n} : IsVariableInter pt R S → IsLiteralInter pt R S' → IsRegrInter pt R (pt.regression S A ∩ S')