It is common to express denotational semantics as SAT/SMT expressions.
For example, consider a function f(x) = x << 1.
A valid sat semantics for this function is: y == f(x) implies y == 2 * x.
For example, consider a function f(x) = x << 1.
A valid sat semantics for this function is: y == f(x) implies y == 2 * x.
if f(x) != g(x) is satisfiable, you get one value of x for which f(x) != g(x)
Both of these are useful in practice.
x is the set of inputs to an instruction.