(* File: Rules.v  (last edited on 27/10/2000) (c) Klaus Weich  *)
Require Export Minimal.
Require Export Sound.
Require Export NSearch.
Inductive search_spec_aux (goal : form) (gamma : flist)
(work : nf_list) (context : flist) : Set :=
| derivable :
Derivable context goal -> search_spec_aux goal gamma work context
| refutable :
forall k : kripke_tree,
Is_Monotone_kripke_tree k ->
forces_gamma gamma work k ->
(forces_t k goal -> False) -> search_spec_aux goal gamma work context.
Definition search_spec (goal : form) (gamma : flist)
(work : nf_list) (context : flist) (i : Int) :=
below_form goal i ->
below_list gamma i ->
below_list context i ->
sound gamma work context ->
minimal gamma work context -> search_spec_aux goal gamma work context.
(**********************************************************************)

(* Specifications: *)
Lemma rule_shift_gamma_work :
forall (goal : form) (l : list Int) (a : normal_form)
(gamma : flist) (work : nf_list) (context : flist)
(j : Int),
search_spec goal gamma (nvimp l a :: work) context j ->
search_spec goal (vimp l (nf2form a) :: gamma) work context j.