(********************************************************************)

Inductive search_spec (goal : form) (gamma : flist) : Set :=
  | derivable : Derivable gamma goal -> search_spec goal gamma
  | refutable :
      forall k : kripke_tree,
      Is_Monotone_kripke_tree k ->
      (forall a : form, In a gamma -> forces_t k a) ->
      (forces_t k goal -> False) -> search_spec goal gamma.(********************************************************************)

Inductive search_spec (goal : form) (gamma : flist) : Set :=
  | derivable : Derivable gamma goal -> search_spec goal gamma
  | refutable :
      forall k : kripke_tree,
      Is_Monotone_kripke_tree k ->
      (forall a : form, In a gamma -> forces_t k a) ->
      (forces_t k goal -> False) -> search_spec goal gamma.(********************************************************************)

Inductive search_spec (goal : form) (gamma : flist) : Set :=
  | derivable : Derivable gamma goal -> search_spec goal gamma
  | refutable :
      forall k : kripke_tree,
      Is_Monotone_kripke_tree k ->
      (forall a : form, In a gamma -> forces_t k a) ->
      (forces_t k goal -> False) -> search_spec goal gamma.

(* Specifications: *)
Theorem search : forall (goal : form) (gamma : flist), search_spec goal gamma.