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.

(* Specifications: *)
Lemma minimal_derivable_forces : forall (gamma : flist) (work : nf_list) (context : flist) (k : kripke_tree), Is_Monotone_kripke_tree k -> forces_gamma gamma work k -> minimal gamma work context -> forall a : form, Derivable context a -> forces_t k a.
Lemma minimal_shift_gamma_work : forall (a : normal_form) (gamma : flist) (work : nf_list) (context : flist), minimal (nf2form a :: gamma) work context -> minimal gamma (a :: work) context.
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.
Lemma minimal_cons_gamma_cons_context : forall (gamma : flist) (work : nf_list) (context : flist) (a : form), minimal gamma work context -> minimal (a :: gamma) work (a :: context).
Lemma minimal_cons_gamma_weak : forall (gamma : flist) (work : nf_list) (context : flist) (a b : form), (forall k : kripke_tree, Is_Monotone_kripke_tree k -> forces_t k b -> forces_t k a) -> minimal (a :: gamma) work context -> minimal (b :: gamma) work context.
Lemma minimal_cons_gamma_weak2 : forall (gamma : flist) (work : nf_list) (context : flist) (a b c : form), (forall k : kripke_tree, Is_Monotone_kripke_tree k -> forces_t k b -> forces_t k c -> forces_t k a) -> minimal (a :: gamma) work context -> minimal (b :: c :: gamma) work context.