From 176229da6bcdaac9af75fb0be6e2baaedb145da9 Mon Sep 17 00:00:00 2001 From: Mauro Garavello Date: Wed, 19 Aug 2020 21:15:40 +0200 Subject: [PATCH 1/2] solveset with piecewise: issue 19718 --- sympy/solvers/solveset.py | 5 ++++- sympy/solvers/tests/test_solveset.py | 4 ++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/sympy/solvers/solveset.py b/sympy/solvers/solveset.py index 0db59087a492..e6d1e30a0868 100644 --- a/sympy/solvers/solveset.py +++ b/sympy/solvers/solveset.py @@ -969,6 +969,10 @@ def _solveset(f, symbol, domain, _check=False): given symbol.""" # _check controls whether the answer is checked or not from sympy.simplify.simplify import signsimp + from sympy.logic.boolalg import BooleanTrue + + if isinstance(f, BooleanTrue): + return domain orig_f = f if f.is_Mul: @@ -1008,7 +1012,6 @@ def _solveset(f, symbol, domain, _check=False): a = f.args[0] result = solveset_real(a > 0, symbol) elif f.is_Piecewise: - result = EmptySet expr_set_pairs = f.as_expr_set_pairs(domain) for (expr, in_set) in expr_set_pairs: if in_set.is_Relational: diff --git a/sympy/solvers/tests/test_solveset.py b/sympy/solvers/tests/test_solveset.py index 673b9910a5b7..c2d87d462e9b 100644 --- a/sympy/solvers/tests/test_solveset.py +++ b/sympy/solvers/tests/test_solveset.py @@ -694,6 +694,10 @@ def test_piecewise_solveset(): assert solveset(Piecewise((x - 1, Ne(x, I)), (x, True)), x) == FiniteSet(1) + # issue 19718 + g = Piecewise((1, x > 10), (0, True)) + assert solveset(g > 0, x, S.Reals) == Interval.open(10, oo) + def test_solveset_complex_polynomial(): assert solveset_complex(a*x**2 + b*x + c, x) == \ From dd1cdae010645e12d93596f07cb8997f109151a2 Mon Sep 17 00:00:00 2001 From: Mauro Garavello Date: Sat, 29 Aug 2020 12:57:12 +0200 Subject: [PATCH 2/2] add test about BooleanTrue --- sympy/solvers/tests/test_solveset.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sympy/solvers/tests/test_solveset.py b/sympy/solvers/tests/test_solveset.py index c2d87d462e9b..e612c8152543 100644 --- a/sympy/solvers/tests/test_solveset.py +++ b/sympy/solvers/tests/test_solveset.py @@ -698,6 +698,10 @@ def test_piecewise_solveset(): g = Piecewise((1, x > 10), (0, True)) assert solveset(g > 0, x, S.Reals) == Interval.open(10, oo) + from sympy.logic.boolalg import BooleanTrue + f = BooleanTrue() + assert solveset(f, x, domain=Interval(-3, 10)) == Interval(-3, 10) + def test_solveset_complex_polynomial(): assert solveset_complex(a*x**2 + b*x + c, x) == \