Definition sound (Gamma : flist) (work : nf_list) (context : flist) :=
  forall a : form, in_gamma Gamma work a -> Derivable context a.

(* Specifications: *)
Lemma sound_cons_gamma : forall (gamma : flist) (work : nf_list) (context : flist) (a : form), Derivable context a -> sound gamma work context -> sound (a :: gamma) work context.
Lemma sound_cons_gamma_tail : forall (gamma : flist) (work : nf_list) (context : flist) (a : form), sound (a :: gamma) work context -> sound gamma work context.
Lemma sound_cons_gamma_head : forall (gamma : flist) (work : nf_list) (context : flist) (a : form), sound (a :: gamma) work context -> Derivable context a.
Lemma sound_shift_gamma_work : forall (a : normal_form) (gamma : flist) (work : nf_list) (context : flist), sound (nf2form a :: gamma) work context -> sound gamma (a :: work) context.
Lemma sound_shift_work_gamma : forall (a : normal_form) (gamma : flist) (work : nf_list) (context : flist), sound gamma (a :: work) context -> sound (nf2form a :: gamma) work context.
Lemma sound_cons_gamma_cons_context : forall (gamma : flist) (work : nf_list) (context : flist) (a : form), sound gamma work context -> sound (a :: gamma) work (a :: context).
Lemma sound_cons_gamma_weak : forall (gamma : flist) (work : nf_list) (context : flist) (a b : form), (Derivable context a -> Derivable context b) -> sound (a :: gamma) work context -> sound (b :: gamma) work context.
Lemma sound_cons_gamma_weak2 : forall (gamma : flist) (work : nf_list) (context : flist) (a b c : form), (Derivable context a -> Derivable2 context b c) -> sound (a :: gamma) work context -> sound (b :: c :: gamma) work context.