I would like to use the Dreal4 SMT solver to check the following condition of a control lyapunov function:
there exists a u contained with in the set U for all x contained within the set X for which V(x,u) is negative. (I am calling V(x,u) the lie derivative of the V(x) for those familiar with CLFs).
I believe I should be able to solve this problem using the forall() function call (although I cant seem to find an exists() in the documentation), but I am not understanding the syntax of the forall function.
Simple example:
we will say x is bounded by the interval : [-5,5]and u [-25,25]
def V(x,u):
return (x**2) - 1 + u
problem = forall([x], And(V(x,u) < 0, x < 5, x > -5, u > -25, u < 25)
result = CheckSatisfiablitity(problem,0.01)
This should be verified correct based on the above condition since for every x you can chose a u that will make the function negative. Regardless of the u boundrys I set (even when I set to values that would result in the function not being able to be made negative everywhere) I just get a None return.
It seems I dont understand the forall() function syntax, How should I use the forall() function to verify this condition?