(*****************************************************************)

Inductive k_deco_sound (k : kripke_tree) (i0 i1 : Int) 
(work : nf_list) (ds : disjs) (ni : nested_imps) (ai : atomic_imps)
(a : atoms) : Prop :=
    k_deco_sound_intro :
      Is_Monotone_kripke_tree k ->
      forces_ngamma work ds ni ai a k ->
      (forces_t k (Imp (Atom i0) (Atom i1)) -> False) ->
      k_deco_sound k i0 i1 work ds ni ai a.(*****************************************************************)

Inductive k_deco_sound (k : kripke_tree) (i0 i1 : Int) 
(work : nf_list) (ds : disjs) (ni : nested_imps) (ai : atomic_imps)
(a : atoms) : Prop :=
    k_deco_sound_intro :
      Is_Monotone_kripke_tree k ->
      forces_ngamma work ds ni ai a k ->
      (forces_t k (Imp (Atom i0) (Atom i1)) -> False) ->
      k_deco_sound k i0 i1 work ds ni ai a.Definition deco_sound (work : nf_list) (ds : disjs) 
  (ni : nested_imps) (ai : atomic_imps) (a : atoms) :=
  forall (k : kripke_tree) (i0 i1 : Int) (b : normal_form),
  In (Decorated (NImp i0 i1 b) k) ni -> k_deco_sound k i0 i1 work ds ni ai a.

Lemma deco_sound_inf : forall (ni ni1 ni2 : nested_imps) (work : nf_list) (ds : disjs) (ai : atomic_imps) (a : atoms), le_ni ni ni1 -> eqv_ni ni ni2 -> (forall (x : nimp) (k : kripke_tree), In (Decorated x k) ni -> In (Decorated x k) ni1 \/ In (Decorated x k) ni2) -> deco_sound work ds ni1 ai a -> deco_sound work ds ni2 ai a -> deco_sound work ds ni ai a.