30 lines
1.4 KiB
Coq
30 lines
1.4 KiB
Coq
Require Import base.
|
|
Require Import Policy.
|
|
Require Import Mealy.
|
|
(** Formally, a view partition is an assignment of an equivalence
|
|
relation [≈{u}] for every domain [u] *)
|
|
|
|
Class ViewPartition `(M : Mealy state action out) (domain : Type) := {
|
|
view_partition :> domain -> relation state;
|
|
view_partition_is_equiv :> forall v, Equivalence (view_partition v)
|
|
}.
|
|
|
|
Notation "S ≈{ U } T" := (view_partition U S T)
|
|
(at level 70, format "S ≈{ U } T").
|
|
|
|
Class OutputConsistent {domain : Type} `{M : Mealy state action out}
|
|
(P : Policy action domain) (VP: ViewPartition M domain) :=
|
|
output_consistent : (forall a s t, s ≈{dom a} t -> output s a = output t a).
|
|
|
|
Class LocallyRespectsPolicy {domain : Type} `{M : Mealy state action out}
|
|
(P : Policy action domain) (VP: ViewPartition M domain) :=
|
|
locally_respects_policy : (forall a u s, ¬(policy (dom a) u) -> s ≈{u} (step s a)).
|
|
|
|
Class WeakStepConsistent {domain : Type} `{M : Mealy state action out}
|
|
(P : Policy action domain) (VP: ViewPartition M domain) :=
|
|
weak_step_consistent : (forall a s t u, s ≈{dom a} t -> s ≈{u} t -> (step s a) ≈{u} (step t a)).
|
|
|
|
Class StepConsistent {domain : Type} `{M : Mealy state action out}
|
|
(P : Policy action domain) (VP: ViewPartition M domain) :=
|
|
step_consistent : (forall a s t u, s ≈{u} t -> (step s a) ≈{u} (step t a)).
|