Section Exports.
Variable Lstate : Type.
Variable nodes: dstatelet -> pred nid.
Coercion sort : cohpred >-> Funclass.
Definition cohpred := cohpred.
Definition CohPredMixin := Mixin.
Definition CohPred T m := (@pack T m).
Notation "[ 'cohPredMixin' 'of' T ]" := (class _ : mixin_of T)
(at level 0, format "[ 'cohPredMixin'  'of'  T ]") : form_scope.
Notation "[ 'cohpred' 'of' T 'for' C ]" := (@clone T C _ (erefl _) id)
(at level 0, format "[ 'cohpred'  'of'  T  'for'  C ]") : form_scope.
Notation "[ 'cohpred' 'of' T ]" := (@clone T _ _ (erefl _) id)
(at level 0, format "[ 'cohpred'  'of'  T ]") : form_scope.
Canonical cohpred_PredType := mkPredType (@sort nodes).
Variable coh : cohpred nodes.

Lemma cohVl d : d \In coh -> valid (dstate d).