For example, consider the formula from SymPy's new assumptions:
(x>2) & (y>0) & (Q.integer(y) | (y>10))
The expressions (Q.integer(y) | (y>10))
means that y is an integer or y is greater than 10 (or both). If it's not an integer then it would be a real number. Is there a way to translate this into SMT-LIB format? Or would you simply have to consider the case where Q.integer(y) is true and the case where Q.integer(y) is false?
I tried researching this information online but I couldn't find anything that would provide a way to to do what I asked. I suspect that this isn't possible and after declaring the type of a variable it can not be changed. Something I tried that obviously doesn't work:
(declare-const y Real)
(assert (or (> y 10) (declare-const y Int)))