Inductive Qquadratic_sg_denom_nonzero :
Z -> Z -> Z -> Z -> Qpositive -> Qpositive -> Prop :=
| Qquadratic_signok0 :
forall (e f g h : Z) (p1 p2 : Qpositive),
p2 = One ->
Qhomographic_sg_denom_nonzero (e + f) (g + h) p1 ->
Qquadratic_sg_denom_nonzero e f g h p1 p2
| Qquadratic_signok0' :
forall (e f g h : Z) (p1 p2 : Qpositive),
p1 = One ->
Qhomographic_sg_denom_nonzero (e + g) (f + h) p2 ->
Qquadratic_sg_denom_nonzero e f g h p1 p2
| Qquadratic_signok1 :
forall (e f g h : Z) (p1 p2 : Qpositive),
Qquadratic_sg_denom_nonzero e (e + f)%Z (e + g)%Z
(e + f + g + h)%Z p1 p2 ->
Qquadratic_sg_denom_nonzero e f g h (nR p1) (nR p2)
| Qquadratic_signok2 :
forall (e f g h : Z) (p1 p2 : Qpositive),
Qquadratic_sg_denom_nonzero (e + f)%Z f (e + f + g + h)%Z
(f + h)%Z p1 p2 ->
Qquadratic_sg_denom_nonzero e f g h (nR p1) (dL p2)
| Qquadratic_signok3 :
forall (e f g h : Z) (p1 p2 : Qpositive),
Qquadratic_sg_denom_nonzero (e + g)%Z (e + f + g + h)%Z g
(g + h)%Z p1 p2 ->
Qquadratic_sg_denom_nonzero e f g h (dL p1) (nR p2)
| Qquadratic_signok4 :
forall (e f g h : Z) (p1 p2 : Qpositive),
Qquadratic_sg_denom_nonzero (e + f + g + h)%Z
(f + h)%Z (g + h)%Z h p1 p2 ->
Qquadratic_sg_denom_nonzero e f g h (dL p1) (dL p2).

Lemma Qquadratic_sign_nRdL_nRdL_2 :
forall (a b c d e f g h : Z) (p1 p2 : Qpositive)
(H_Qquadratic_sg_denom_nonzero : Qquadratic_sg_denom_nonzero e f g h p1 p2),
p1 <> One ->
p2 <> One ->
b = 0%Z /\ c = 0%Z /\ d = 0%Z ->
~ (f = 0%Z /\ g = 0%Z /\ h = 0%Z) ->
(2 < outside_square e f g h)%Z ->
Qquadratic_sign a b c d e f g h p1 p2 H_Qquadratic_sg_denom_nonzero =
(Z.sgn a, (a, (b, (c, d)), (e, (f, (g, h))), (p1, p2))).