The comment by @false is correct, as far as I can see: given two sets S and S': if S is a subset of S', then the intersection of the complement of S' and S should be the empty set (there are no elements outside of S' that are elements of S).
It seems that constraint programming over finite domains should do the trick if you are dealing with integers. Using SWI-Prolog 7.3, and doing your example manually, I get:
?- use_module(library(clpfd)).
true.
?- \+ ( X #=< 10, Y #=< X, #\ X #=< 20 #\/ #\ Y #=< 20 ).
true.
The second query should read:
\+ ( % succeed if no solutions
X #=< 10, Y #=< X, % set S and...
#\ X #=< 20 #\/ #\ Y #=< 20 % complement of set S' (De Morgan's Law)
).
I think that the complement of S' could have also been written as:
\# (X #=< 20 #/\ Y #=< 20)
If you want to have a more general solution you would have to figure out a way to find the complements of an arbitrary set of constraints. Note that you can use the Prolog conjunction (the comma) as a logical AND, but you cannot use the disjunction as an OR.