20 lines
524 B
Coq
20 lines
524 B
Coq
Require Import base.
|
|
|
|
Class Policy (action domain : Type) := {
|
|
dom : action -> domain;
|
|
domain_dec :> forall (x y : domain), Decision (x = y);
|
|
policy :> relation domain;
|
|
policy_dec :> (forall v w, Decision (policy v w));
|
|
policy_refl :> Reflexive policy
|
|
}.
|
|
|
|
Infix "⇝" := policy (at level 70).
|
|
|
|
Fixpoint purge `{Policy action domain} (ls : list action) (v : domain) : list action :=
|
|
match ls with
|
|
| [] => []
|
|
| a::tl => if (decide (dom a ⇝ v)) then a::(purge tl v)
|
|
else purge tl v
|
|
end.
|
|
|