lojix/prolog/src/main/com/thesett/aima/logic/fol/prolog/builtins/Is.java
public boolean proofStep(ResolutionState state)
    {
        Functor isOp = state.getGoalStack().poll().getFunctor();

        // Evaluate the second argument as a fully instantiated numeric value.
        Term expressionValue = BuiltInUtils.evaluateAsNumeric(isOp.getArgument(1));

        // This is used to record variables bound during the unification, so that they may be undone if the resolution
        // state is backtracked over.
        List<Variable> boundVariables = new LinkedList<Variable>();

        // Unify against the LHS.
        boolean matched =
            state.getUnifier().unifyInternal(isOp.getArgument(0), expressionValue, boundVariables, boundVariables);

        for (Variable binding : boundVariables)
        {
            state.getVariableBindings().offer(binding);
        }

        return matched;
    }
public boolean proofStep(ResolutionState state)
    {
        Functor isOp = state.getGoalStack().poll().getFunctor();

        // Evaluate the second argument as a fully instantiated numeric value.
        Term expressionValue = BuiltInUtils.evaluateAsNumeric(isOp.getArgument(1));

        // This is used to record variables bound during the unification, so that they may be undone if the resolution
        // state is backtracked over.
        List<Variable> boundVariables = new LinkedList<Variable>();

        // Unify against the LHS.
        boolean matched =
            state.getUnifier().unifyInternal(isOp.getArgument(0), expressionValue, boundVariables, boundVariables);

        for (Variable binding : boundVariables)
        {
            state.getVariableBindings().offer(binding);
        }

        return matched;
    }
{@inheritDoc}