(** ** Definition *)

Inductive nd := intu | class.(** ** Definition *)

Inductive nd := intu | class.(** ** Definition *)

Inductive nd := intu | class.Notation "A ⊢C phi" := (@prv class _ A phi) (at level 30).Definition prv_min := @prv intu frag.Definition prv_class := @prv class full.Definition prv_intu := @prv intu full.(** ** Soundness *)


Definition cast {domain} (eta eta' : nat -> domain) (I : interp eta) : interp eta'.

(* Specifications: *)
Lemma eval_ext_p t dom rho rho' eta eta' (I : interp dom eta) : (forall v, v el vars_t t -> rho v = rho' v) -> (forall p, p el consts_t t -> eta p = eta' p) -> @eval _ _ I rho t = @eval _ _ (cast eta' I) rho' t.
Lemma eval_ext t dom rho rho' eta (I : interp dom eta) : (forall v, v el vars_t t -> rho v = rho' v) -> eval rho t = eval rho' t.
Lemma sat_ext_p b (phi : form b) dom rho rho' eta eta' (I : interp dom eta) : (forall v, rho v = rho' v) -> (forall p, p el consts phi -> eta p = eta' p) -> sat I rho phi <-> sat (cast eta' I) rho' phi.
Lemma sat_ext b (phi : form b) dom rho rho' eta (I : interp dom eta) : sat I rho phi -> (forall v, rho v = rho' v) -> sat I rho' phi.
Lemma sat_ext_p_list b (A : list (form b)) dom rho rho' eta eta' (I : interp dom eta) : (forall v, rho v = rho' v) -> (forall p, p el consts_l A -> eta p = eta' p) -> (forall phi, phi el A -> sat I rho phi) <-> (forall phi, phi el A -> sat (cast eta' I) rho' phi).