(* File: NRules.v  (last edited on 27/10/2000) (c) Klaus Weich  *)
Require Export Cons_Counter_Model.
Require Export NSound.
Inductive nsearch_spec_result_aux (goal : Int) (work : nf_list)
(ds : disjs) (ni : nested_imps) (ai : atomic_imps)
(a : atoms) (context : flist) : Set :=
| NDerivable :
Derivable context (Atom goal) ->
nsearch_spec_result_aux goal work ds ni ai a context
| NRefutable :
forall k : kripke_tree,
Is_Monotone_kripke_tree k ->
forces_ngamma work ds ni ai a k ->
(forces_t k (Atom goal) -> False) ->
nsearch_spec_result_aux goal work ds ni ai a context.
Inductive nsearch_spec_result (goal : Int) (work : nf_list)
(ds : disjs) (ni : nested_imps) (ai : atomic_imps)
(a : atoms) (context : flist) : Set :=
NSearch_Res :
forall ni1 : nested_imps,
le_ni ni1 ni ->
deco_sound work ds ni1 ai a ->
nsearch_spec_result_aux goal work ds ni1 ai a context ->
nsearch_spec_result goal work ds ni ai a context.
Definition nsearch_spec (goal : Int) (work : nf_list)
(ds : disjs) (ni : nested_imps) (ai : atomic_imps)
(a : atoms) (context : flist) :=
deco_sound work ds ni ai a ->
nsound work ds ni ai a context ->
nminimal work ds ni ai a context ->
nsearch_spec_result goal work ds ni ai a context.
(**********************************************************************)

(* Specifications: *)
Lemma fail :
forall (i : Int) (dni : decorated_nested_imps) (ai : atomic_imps)
(a : atoms) (context : flist),
a_ai_disj a ai ->
a_goal_disj a i ->
nsearch_spec i nf_nil DNil (rev_app dni NNil) ai a context.