This can be set up as a quantifier elimination problem, for which cylindrical decomposition can be used.
Clear[poly]
poly[
l_] := (dl - dl sl) l^3 + (2 dl + ml - sl - dl sM +
sl*sM) l^2 + (dl - 2 sl + sl ml) l - sl
CylindricalDecomposition[
Exists[{l1, l2, l3},
poly[l1] == 0 && poly[l2] == 0 && poly[l3] == 0], {sl, dl, ml, sM}]
(* Out[66]= (sl <
0 && (dl <
0 || (dl ==
0 && ((ml < 2 &&
sM >= Root[
4 ml^3 - 8 ml^2 sl - 4 ml^3 sl + ml^4 sl + 4 ml sl^2 +
8 ml^2 sl^2 - 2 ml^3 sl^2 - 4 ml sl^3 +
ml^2 sl^3 + (12 ml^2 sl - 16 ml sl^2 - 8 ml^2 sl^2 +
2 ml^3 sl^2 + 4 sl^3 + 8 ml sl^3 -
2 ml^2 sl^3) #1 + (12 ml sl^2 - 8 sl^3 - 4 ml sl^3 +
ml^2 sl^3) #1^2 + 4 sl^3 #1^3 &, 1]) || (ml == 2 &&
sM > Root[
8 - 12 sl + 6 sl^2 -
sl^3 + (12 sl - 12 sl^2 + 3 sl^3) #1 + (6 sl^2 -
3 sl^3) #1^2 + sl^3 #1^3 &, 3]) || (ml > 2 &&
sM >= Root[
4 ml^3 - 8 ml^2 sl - 4 ml^3 sl + ml^4 sl + 4 ml sl^2 +
8 ml^2 sl^2 - 2 ml^3 sl^2 - 4 ml sl^3 +
ml^2 sl^3 + (12 ml^2 sl - 16 ml sl^2 - 8 ml^2 sl^2 +
2 ml^3 sl^2 + 4 sl^3 + 8 ml sl^3 -
2 ml^2 sl^3) #1 + (12 ml sl^2 - 8 sl^3 - 4 ml sl^3 +
ml^2 sl^3) #1^2 + 4 sl^3 #1^3 &, 1]))) ||
dl > 0)) ||
sl == 0 || (0 < sl <
1 && (dl <
0 || (dl ==
0 && ((ml < 2 &&
sM >= Root[
4 ml^3 - 8 ml^2 sl - 4 ml^3 sl + ml^4 sl + 4 ml sl^2 +
8 ml^2 sl^2 - 2 ml^3 sl^2 - 4 ml sl^3 +
ml^2 sl^3 + (12 ml^2 sl - 16 ml sl^2 - 8 ml^2 sl^2 +
2 ml^3 sl^2 + 4 sl^3 + 8 ml sl^3 -
2 ml^2 sl^3) #1 + (12 ml sl^2 - 8 sl^3 - 4 ml sl^3 +
ml^2 sl^3) #1^2 + 4 sl^3 #1^3 &, 1]) || (ml == 2 &&
sM > Root[
8 - 12 sl + 6 sl^2 -
sl^3 + (12 sl - 12 sl^2 + 3 sl^3) #1 + (6 sl^2 -
3 sl^3) #1^2 + sl^3 #1^3 &, 3]) || (ml > 2 &&
sM >= Root[
4 ml^3 - 8 ml^2 sl - 4 ml^3 sl + ml^4 sl + 4 ml sl^2 +
8 ml^2 sl^2 - 2 ml^3 sl^2 - 4 ml sl^3 +
ml^2 sl^3 + (12 ml^2 sl - 16 ml sl^2 - 8 ml^2 sl^2 +
2 ml^3 sl^2 + 4 sl^3 + 8 ml sl^3 -
2 ml^2 sl^3) #1 + (12 ml sl^2 - 8 sl^3 - 4 ml sl^3 +
ml^2 sl^3) #1^2 + 4 sl^3 #1^3 &, 1]))) ||
dl > 0)) || (sl ==
1 && ((dl <
1 && ((ml <
Root[-8 + 12 dl - 6 dl^2 +
dl^3 + (12 - 12 dl + 3 dl^2) #1 + (-6 +
3 dl) #1^2 + #1^3 &, 3] &&
sM >= Root[-4 dl + 15 dl^2 - 12 dl^3 - 4 dl^4 + 6 dl ml -
6 dl^2 ml - 12 dl^3 ml - ml^2 + 4 dl ml^2 -
13 dl^2 ml^2 + 2 ml^3 - 6 dl ml^3 -
ml^4 + (-4 + 28 dl - 54 dl^2 + 26 dl^3 + 4 dl^4 +
8 ml - 28 dl ml + 10 dl^2 ml + 10 dl^3 ml -
2 ml^2 - 6 dl ml^2 + 8 dl^2 ml^2 - 2 ml^3 +
2 dl ml^3) #1 + (8 - 36 dl + 47 dl^2 - 18 dl^3 -
dl^4 - 8 ml + 14 dl ml - 4 dl^2 ml - 2 dl^3 ml -
ml^2 + 2 dl ml^2 - dl^2 ml^2) #1^2 + (-4 + 12 dl -
12 dl^2 + 4 dl^3) #1^3 &, 1]) || (ml ==
Root[-8 + 12 dl - 6 dl^2 +
dl^3 + (12 - 12 dl + 3 dl^2) #1 + (-6 +
3 dl) #1^2 + #1^3 &, 3] &&
sM > Root[-4 dl + 15 dl^2 - 12 dl^3 - 4 dl^4 + 6 dl ml -
6 dl^2 ml - 12 dl^3 ml - ml^2 + 4 dl ml^2 -
13 dl^2 ml^2 + 2 ml^3 - 6 dl ml^3 -
ml^4 + (-4 + 28 dl - 54 dl^2 + 26 dl^3 + 4 dl^4 +
8 ml - 28 dl ml + 10 dl^2 ml + 10 dl^3 ml -
2 ml^2 - 6 dl ml^2 + 8 dl^2 ml^2 - 2 ml^3 +
2 dl ml^3) #1 + (8 - 36 dl + 47 dl^2 - 18 dl^3 -
dl^4 - 8 ml + 14 dl ml - 4 dl^2 ml - 2 dl^3 ml -
ml^2 + 2 dl ml^2 - dl^2 ml^2) #1^2 + (-4 + 12 dl -
12 dl^2 + 4 dl^3) #1^3 &, 3]) || (ml >
Root[-8 + 12 dl - 6 dl^2 +
dl^3 + (12 - 12 dl + 3 dl^2) #1 + (-6 +
3 dl) #1^2 + #1^3 &, 3] &&
sM >= Root[-4 dl + 15 dl^2 - 12 dl^3 - 4 dl^4 + 6 dl ml -
6 dl^2 ml - 12 dl^3 ml - ml^2 + 4 dl ml^2 -
13 dl^2 ml^2 + 2 ml^3 - 6 dl ml^3 -
ml^4 + (-4 + 28 dl - 54 dl^2 + 26 dl^3 + 4 dl^4 +
8 ml - 28 dl ml + 10 dl^2 ml + 10 dl^3 ml -
2 ml^2 - 6 dl ml^2 + 8 dl^2 ml^2 - 2 ml^3 +
2 dl ml^3) #1 + (8 - 36 dl + 47 dl^2 - 18 dl^3 -
dl^4 - 8 ml + 14 dl ml - 4 dl^2 ml - 2 dl^3 ml -
ml^2 + 2 dl ml^2 - dl^2 ml^2) #1^2 + (-4 + 12 dl -
12 dl^2 + 4 dl^3) #1^3 &, 1]))) ||
dl == 1 || (dl >
1 && ((ml <
Root[-8 + 12 dl - 6 dl^2 +
dl^3 + (12 - 12 dl + 3 dl^2) #1 + (-6 +
3 dl) #1^2 + #1^3 &, 3] &&
sM <= Root[-4 dl + 15 dl^2 - 12 dl^3 - 4 dl^4 + 6 dl ml -
6 dl^2 ml - 12 dl^3 ml - ml^2 + 4 dl ml^2 -
13 dl^2 ml^2 + 2 ml^3 - 6 dl ml^3 -
ml^4 + (-4 + 28 dl - 54 dl^2 + 26 dl^3 + 4 dl^4 +
8 ml - 28 dl ml + 10 dl^2 ml + 10 dl^3 ml -
2 ml^2 - 6 dl ml^2 + 8 dl^2 ml^2 - 2 ml^3 +
2 dl ml^3) #1 + (8 - 36 dl + 47 dl^2 - 18 dl^3 -
dl^4 - 8 ml + 14 dl ml - 4 dl^2 ml - 2 dl^3 ml -
ml^2 + 2 dl ml^2 - dl^2 ml^2) #1^2 + (-4 + 12 dl -
12 dl^2 + 4 dl^3) #1^3 &, 3]) || (ml ==
Root[-8 + 12 dl - 6 dl^2 +
dl^3 + (12 - 12 dl + 3 dl^2) #1 + (-6 +
3 dl) #1^2 + #1^3 &, 3] &&
sM < Root[-4 dl + 15 dl^2 - 12 dl^3 - 4 dl^4 + 6 dl ml -
6 dl^2 ml - 12 dl^3 ml - ml^2 + 4 dl ml^2 -
13 dl^2 ml^2 + 2 ml^3 - 6 dl ml^3 -
ml^4 + (-4 + 28 dl - 54 dl^2 + 26 dl^3 + 4 dl^4 +
8 ml - 28 dl ml + 10 dl^2 ml + 10 dl^3 ml -
2 ml^2 - 6 dl ml^2 + 8 dl^2 ml^2 - 2 ml^3 +
2 dl ml^3) #1 + (8 - 36 dl + 47 dl^2 - 18 dl^3 -
dl^4 - 8 ml + 14 dl ml - 4 dl^2 ml - 2 dl^3 ml -
ml^2 + 2 dl ml^2 - dl^2 ml^2) #1^2 + (-4 + 12 dl -
12 dl^2 + 4 dl^3) #1^3 &, 3]) || (ml >
Root[-8 + 12 dl - 6 dl^2 +
dl^3 + (12 - 12 dl + 3 dl^2) #1 + (-6 +
3 dl) #1^2 + #1^3 &, 3] &&
sM <= Root[-4 dl + 15 dl^2 - 12 dl^3 - 4 dl^4 + 6 dl ml -
6 dl^2 ml - 12 dl^3 ml - ml^2 + 4 dl ml^2 -
13 dl^2 ml^2 + 2 ml^3 - 6 dl ml^3 -
ml^4 + (-4 + 28 dl - 54 dl^2 + 26 dl^3 + 4 dl^4 +
8 ml - 28 dl ml + 10 dl^2 ml + 10 dl^3 ml -
2 ml^2 - 6 dl ml^2 + 8 dl^2 ml^2 - 2 ml^3 +
2 dl ml^3) #1 + (8 - 36 dl + 47 dl^2 - 18 dl^3 -
dl^4 - 8 ml + 14 dl ml - 4 dl^2 ml - 2 dl^3 ml -
ml^2 + 2 dl ml^2 - dl^2 ml^2) #1^2 + (-4 + 12 dl -
12 dl^2 + 4 dl^3) #1^3 &, 3]))))) || (sl >
1 && (dl <
0 || (dl ==
0 && ((ml < 2 &&
sM >= Root[
4 ml^3 - 8 ml^2 sl - 4 ml^3 sl + ml^4 sl + 4 ml sl^2 +
8 ml^2 sl^2 - 2 ml^3 sl^2 - 4 ml sl^3 +
ml^2 sl^3 + (12 ml^2 sl - 16 ml sl^2 - 8 ml^2 sl^2 +
2 ml^3 sl^2 + 4 sl^3 + 8 ml sl^3 -
2 ml^2 sl^3) #1 + (12 ml sl^2 - 8 sl^3 - 4 ml sl^3 +
ml^2 sl^3) #1^2 + 4 sl^3 #1^3 &, 1]) || (ml == 2 &&
sM > Root[
8 - 12 sl + 6 sl^2 -
sl^3 + (12 sl - 12 sl^2 + 3 sl^3) #1 + (6 sl^2 -
3 sl^3) #1^2 + sl^3 #1^3 &, 3]) || (ml > 2 &&
sM >= Root[
4 ml^3 - 8 ml^2 sl - 4 ml^3 sl + ml^4 sl + 4 ml sl^2 +
8 ml^2 sl^2 - 2 ml^3 sl^2 - 4 ml sl^3 +
ml^2 sl^3 + (12 ml^2 sl - 16 ml sl^2 - 8 ml^2 sl^2 +
2 ml^3 sl^2 + 4 sl^3 + 8 ml sl^3 -
2 ml^2 sl^3) #1 + (12 ml sl^2 - 8 sl^3 - 4 ml sl^3 +
ml^2 sl^3) #1^2 + 4 sl^3 #1^3 &, 1]))) || dl > 0)) *)
Not the prettiest of sights. Also it might be too complicated to be of much use.
Another possibility, suggested in a comment by @J.M., would be to solve for zeros of Discriminant[poly[l], l]
.
Reduce[(dl - dl sl) l^3 + (2 dl + ml - sl - dl sM + slsM) l^2 + (dl - 2 sl + sl ml) l - sl == 0 && dl > 0 && sl > 0 && ml > 0 && sM > 0, l, Reals]
. Wait a while; you'll get a LOT of conditions! $\endgroup$Discriminant[]
is built-in… $\endgroup$slsM
should besl*sM
. Not that the change will make things faster. $\endgroup$