@@ -2248,6 +2248,7 @@ def eval(self, eqs, vars, evaluation: Evaluation):
2248
2248
eq_list = eqs .elements
2249
2249
else :
2250
2250
eq_list = [eqs ]
2251
+ sympy_conditions = []
2251
2252
sympy_eqs = []
2252
2253
sympy_denoms = []
2253
2254
for eq in eq_list :
@@ -2256,8 +2257,7 @@ def eval(self, eqs, vars, evaluation: Evaluation):
2256
2257
elif eq is SymbolFalse :
2257
2258
return ListExpression ()
2258
2259
elif not eq .has_form ("Equal" , 2 ):
2259
- evaluation .message ("Solve" , "eqf" , eqs )
2260
- return
2260
+ sympy_conditions .append (eq .to_sympy ())
2261
2261
else :
2262
2262
left , right = eq .elements
2263
2263
left = left .to_sympy ()
@@ -2271,6 +2271,10 @@ def eval(self, eqs, vars, evaluation: Evaluation):
2271
2271
numer , denom = eq .as_numer_denom ()
2272
2272
sympy_denoms .append (denom )
2273
2273
2274
+ if not sympy_eqs :
2275
+ evaluation .message ("Solve" , "eqf" , eqs )
2276
+ return
2277
+
2274
2278
vars_sympy = [var .to_sympy () for var in vars ]
2275
2279
if None in vars_sympy :
2276
2280
return
@@ -2335,6 +2339,10 @@ def transform_solution(sol):
2335
2339
for sol in result :
2336
2340
results .extend (transform_solution (sol ))
2337
2341
result = results
2342
+ # filter with conditions before further translation
2343
+ conditions = sympy .And (* sympy_conditions )
2344
+ result = [sol for sol in result if conditions .subs (sol )]
2345
+
2338
2346
if any (
2339
2347
sol and any (var not in sol for var in all_vars_sympy ) for sol in result
2340
2348
):
0 commit comments