# Reduce with for all and implies

I have the following question.

p1 = a (1 - c + a)
p2 = b (1 - c - b)/((1 - b)^2)
v1 = (x^1.5 - 3*x)*p1
v2 = x*p2


I want to find x ranges which makes v1>v2 under the value of a and b making p1=p2. Here, 00. So I tried

Reduce[ForAll[{a, b, c}, Implies[p1 == p2 && a > 0 && b > 0 && c > 0 && a < 1 && b < 1 && c < 1, v1 - v2 > 0]] && x > 0, x, Reals]


Then it doesn't work. I need your help.

Actually, Reduce produces the correct answer, although it is a bit slow: x > 16. (I assume that you really do want {a, b, c} to be restricted to the range {0, 1}, as indicated in the argument of Reduce.)

Another way to look at the this problem is to ask for how {p1, p2} behave in this range of {a, b, c}. First, determine c such that p1 == p2

Solve[(p1 == p2), c][[1, 1]] // Simplify
(* c -> ((-1 + b) (a (-1 + b) + a^2 (-1 + b) + b))/(a (-1 + b)^2 - b) *)


and plot p1

Plot3D[If[(1 > (c /. %) > 0), p1 /. %, Null], {a, 0, 1}, {b, 0, 1},
PlotRange -> {0 - 2, 2}, AxesLabel -> {"a", "b", "p"}, PlotPoints -> 100,
AxesStyle -> {Bold, Black, 12}]


Because, p1 is positive throughout the range of parameters, v1 > v2 can be written as x^1.5 - 3*x > x.

Reduce[{x^1.5 - 3*x > x}, x, Reals]
(* x > 16. *)


as before.