/*
 * @(#)$Id: sym_eval,v 1.6 1997/10/09 17:20:35 img Exp $
 *
 * $Log: sym_eval,v $
 * Revision 1.6  1997/10/09 17:20:35  img
 * specify type of casesplit
 *
 * Revision 1.5  1997/04/07 11:39:17  img
 * Only applicable when goal is unannotated (to prevent rewriting to
 * ill-annotated terms)
 *
 * Revision 1.4  1997/04/07 10:34:49  img
 * Allow branching proofs via repeat methodical
 *
 * Revision 1.3  1996/12/11 15:07:21  img
 * New methods for lazy application of unblocking.
 *
 * Revision 1.2  1996/06/12 10:44:19  img
 * Use new reduction rule machinery.
 *
 * Revision 1.2  1996/05/14  16:00:58  img
 * Fast symbolic evaluation using nf/2.
 *
 * Revision 1.1  1994/09/16  09:34:27  dream
 * Initial revision
 */

method(sym_eval(SubPlan),
       H==>G,
       [unannotated(G),
       repeat([H==>G],
               Goal :=> SubGoals,
               Method,
               (member(Method, [equal(_,_),
                                normalize_term(_),
                                casesplit(disjunction(_)),
                                existential(_,_)]),
                applicable_submethod(Goal, Method, _, SubGoals)),
               [SubPlan],
               SubGoals
              ),!,
        SubPlan \= idtac ],
       [],
       SubGoals,
       SubPlan ).
