In my enterprise application I have business rules like :
((AMOUNT < 20000.00) || ((AMOUNT >= 20000.00) && (RISKIND == 'N')))(ind = A1 || ind = A2 || ind = A3 || ind = S1 || ind = S2 || ind = S9)
Now expression #1 can be converted to a boolean expression like: (X || (!X && Y))
But I am not sure how the second expression be denoted in boolean form:
can it be like below ? :
(A || B || C || D || E || F). I want to keep the number of variables as less as possible for me feed it to a boolean solver and get results quicker
SMT solvers allow one to reason with logical combinations of arithmetic statements. Z3 has the most flexible web-based interface, with a few extensions on the standard SMT-LIB 2 format that make the task of modeling your query easier. So, I'll show what one can enter here to model and reason about yor query.
Running Z3 on this input produces:
The last line says that the unsatisfiability of the constraints depends on a conflict between the
noriskandexampleconstraints. Therightindexconstraint has nothing to do with it.