(* File: Minimal.v  (last edited on 27/10/2000) (c) Klaus Weich  *)
Require Export Forces_Gamma.
Require Export Derivable_Tools.
Definition minimal (gamma : flist) (work : nf_list)
(context : flist) :=
forall (a : form) (k : kripke_tree),
Is_Monotone_kripke_tree k ->
forces_gamma gamma work k -> In a context -> forces_t k a.
intros gamma work context k k_is_mon k_forces_gamma minimal0 a der_a.
elim der_a; clear der_a.
intros t der_t.
apply soundness_t with t context; try assumption.
intros c in_c.
apply minimal0; assumption.
Qed.
(*************************************************************************)
intros a gamma work context minimal0.
unfold minimal in |- *.
intros b k k_is_mon k_forces_gamma in_b.
apply minimal0; try assumption.
apply forces_gamma_shift_work_gamma; assumption.
Qed.

Lemma minimal_shift_work_gamma :
forall (a : normal_form) (gamma : flist) (work : nf_list) (context : flist),
minimal gamma (a :: work) context ->
minimal (nf2form a :: gamma) work context.