Should return True if `e` can be easily found to be True.

        :param e:                   The AST.
        :param extra_constraints:   Extra constraints (as ASTs) to add to the solver for this solve.
        :param solver:              A solver, for backends that require it.
        :param model_callback:      a function that will be executed with recovered models (if any)
        :returns:                   A boolean.

def is_true(self, e, extra_constraints=(), solver=None, model_callback=None): #pylint:disable=unused-argument
        """
        Should return True if `e` can be easily found to be True.

        :param e:                   The AST.
        :param extra_constraints:   Extra constraints (as ASTs) to add to the solver for this solve.
        :param solver:              A solver, for backends that require it.
        :param model_callback:      a function that will be executed with recovered models (if any)
        :returns:                   A boolean.
        """

        #if self._solver_required and solver is None:
        #   raise BackendError("%s requires a solver for evaluation" % self.__class__.__name__)
        if not isinstance(e, Base):
            return self._is_true(self.convert(e), extra_constraints=extra_constraints, solver=solver, model_callback=model_callback)

        try:
            return self._true_cache[e.cache_key]
        except KeyError:
            t = self._is_true(self.convert(e), extra_constraints=extra_constraints, solver=solver, model_callback=model_callback)
            self._true_cache[e.cache_key] = t
            if t is True:
                self._false_cache[e.cache_key] = False
            return t