(* File: niMinimal.v  (last edited on 27/10/2000) (c) Klaus Weich  *)
Require Export Forces_NGamma.
Require Export Derivable_Tools.
Definition nminimal (work : nf_list) (ds : disjs) (ni : nested_imps)
(ai : atomic_imps) (a : atoms) (context : flist) :=
forall (c : form) (k : kripke_tree),
Is_Monotone_kripke_tree k ->
forces_ngamma work ds ni ai a k -> In c context -> forces_t k c.
(*********************************************************************)
intros work ds ni ai a context k k_is_mon k_forces_ngamma mon c der_c.
elim der_c; clear der_c.
intros t der_t.
apply soundness_t with t context; try assumption.
intros c0 in_c0.
apply mon; assumption.
Qed.
(*********************************************************************)
intros work ds ni1 ni2 ai a context eq12 mon.
unfold nminimal in |- *.
intros c k k_is_mon k_forces in_a.
apply mon; try assumption.
apply forces_ngamma_eqv with ni2; assumption.
Qed.
(************************************************************************)

Lemma nminimal_shift_work_ds :
forall (i j : Int) (work : nf_list) (ds : disjs) (ni : nested_imps)
(ai : atomic_imps) (a : atoms) (context : flist),
nminimal (NDisj i j :: work) ds ni ai a context ->
nminimal work ((i, j) :: ds) ni ai a context.