(self, e, cast_to: Optional[CastTarget] = None, **kwargs)
return self.eval_upto(e, 1, cast_to = cast_to,  **kwargs)[0]
Evaluate an expression to get any possible solution. The desired output types can be specified using the
        `cast_to` parameter. `extra_constraints` can be used to specify additional constraints the returned values
        must satisfy.

        :param e: the expression to get a solution for
        :param kwargs: Any additional kwargs will be passed down to `eval_upto`
        :raise SimUnsatError: if no solution could be found satisfying the given constraints
        :return:
Evaluate an expression to get any possible solution. The desired output types can be specified using the
        `cast_to` parameter. `extra_constraints` can be used to specify additional constraints the returned values
        must satisfy.
Evaluate an expression to get any possible solution . The desired output types can be specified using the cast_to parameter . extra_constraints can be used to specify additional constraints the returned values must satisfy .
def eval(self, e, cast_to: Optional[CastTarget] = None, **kwargs):
        """
        Evaluate an expression to get any possible solution. The desired output types can be specified using the
        `cast_to` parameter. `extra_constraints` can be used to specify additional constraints the returned values
        must satisfy.

        :param e: the expression to get a solution for
        :param kwargs: Any additional kwargs will be passed down to `eval_upto`
        :raise SimUnsatError: if no solution could be found satisfying the given constraints
        :return:
        """
        # eval_upto already throws the UnsatError, no reason for us to worry about it
        concrete_val = _concrete_value(e)
        if concrete_val is not None:
            return self._cast_to(e, concrete_val, cast_to)

        return self.eval_upto(e, 1, cast_to = cast_to,  **kwargs)[0]
def eval ( self , e , cast_to : Optional [ CastTarget ] = None , * * kwargs ) : # eval_upto already throws the UnsatError, no reason for us to worry about it concrete_val = _concrete_value ( e ) if concrete_val is not None : return self . _cast_to ( e , concrete_val , cast_to ) return self . eval_upto ( e , 1 , cast_to = cast_to , * * kwargs ) [ 0 ]