(* Proof by case analysis: 81 cases in 6 line :-) *)

(* Specifications: *)
Lemma outside_square_1 :
forall a b c d : Z, (2 < outside_square a b c d)%Z -> (0 < a + b + c + d)%Z.
Lemma outside_square_2 :
forall a b c d : Z, (outside_square a b c d < -2)%Z -> (a + b + c + d < 0)%Z.
Lemma outside_square_3 :
forall a b c d : Z, (2 < outside_square a b c d)%Z -> (0 <= a)%Z.
Lemma outside_square_4 :
forall a b c d : Z, (2 < outside_square a b c d)%Z -> (0 <= b)%Z.
Lemma outside_square_5 :
forall a b c d : Z, (2 < outside_square a b c d)%Z -> (0 <= c)%Z.
Lemma outside_square_6 :
forall a b c d : Z, (2 < outside_square a b c d)%Z -> (0 <= d)%Z.
Lemma outside_square_7 :
forall a b c d : Z, (outside_square a b c d < -2)%Z -> (a <= 0)%Z.
Lemma outside_square_8 :
forall a b c d : Z, (outside_square a b c d < -2)%Z -> (b <= 0)%Z.
Lemma outside_square_9 :
forall a b c d : Z, (outside_square a b c d < -2)%Z -> (c <= 0)%Z.
Lemma outside_square_10 :
forall a b c d : Z, (outside_square a b c d < -2)%Z -> (d <= 0)%Z.
Lemma inside_square_1_inf :
forall o1 o2 : Z,
inside_square_1 o1 o2 ->
{(2 < o1)%Z /\ (2 < o2)%Z} + {(o1 < -2)%Z /\ (o2 < -2)%Z}.
Lemma inside_square_2_inf :
forall o1 o2 : Z,
inside_square_2 o1 o2 ->
{(2 < o1)%Z /\ (o2 < -2)%Z} + {(o1 < -2)%Z /\ (2 < o2)%Z}.
Lemma Qquadratic_sign_pos_1 :
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)
(na nb nc nd ne nf ng nh : Z) (np1 np2 : Qpositive),
Qquadratic_sign a b c d e f g h p1 p2 H_Qquadratic_sg_denom_nonzero =
(1%Z, (na, (nb, (nc, nd)), (ne, (nf, (ng, nh))), (np1, np2))) ->
{(0 < na + nb + nc + nd)%Z /\ (0 < ne + nf + ng + nh)%Z} +
{(na + nb + nc + nd < 0)%Z /\ (ne + nf + ng + nh < 0)%Z}.
Lemma Qquadratic_sign_pos_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)
(na nb nc nd ne nf ng nh : Z) (np1 np2 : Qpositive),
Qquadratic_sign a b c d e f g h p1 p2 H_Qquadratic_sg_denom_nonzero =
(1%Z, (na, (nb, (nc, nd)), (ne, (nf, (ng, nh))), (np1, np2))) ->
{(0 <= na)%Z /\
(0 <= nb)%Z /\
(0 <= nc)%Z /\
(0 <= nd)%Z /\ (0 <= ne)%Z /\ (0 <= nf)%Z /\ (0 <= ng)%Z /\ (0 <= nh)%Z} +
{(na <= 0)%Z /\
(nb <= 0)%Z /\
(nc <= 0)%Z /\
(nd <= 0)%Z /\ (ne <= 0)%Z /\ (nf <= 0)%Z /\ (ng <= 0)%Z /\ (nh <= 0)%Z} +
{np1 = One /\
(0 <= na + nc)%Z /\
(0 <= nb + nd)%Z /\ (0 <= ne + ng)%Z /\ (0 <= nf + nh)%Z} +
{np1 = One /\
(na + nc <= 0)%Z /\
(nb + nd <= 0)%Z /\ (ne + ng <= 0)%Z /\ (nf + nh <= 0)%Z} +
{np1 = One /\ np2 = One} +
{np1 <> One /\
np2 = One /\
(0 <= na + nb)%Z /\
(0 <= nc + nd)%Z /\ (0 <= ne + nf)%Z /\ (0 <= ng + nh)%Z} +
{np1 <> One /\
np2 = One /\
(na + nb <= 0)%Z /\
(nc + nd <= 0)%Z /\ (ne + nf <= 0)%Z /\ (ng + nh <= 0)%Z}.
Lemma Qquadratic_sign_neg_1 :
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)
(na nb nc nd ne nf ng nh : Z) (np1 np2 : Qpositive),
Qquadratic_sign a b c d e f g h p1 p2 H_Qquadratic_sg_denom_nonzero =
((-1)%Z, (na, (nb, (nc, nd)), (ne, (nf, (ng, nh))), (np1, np2))) ->
{(0 < na + nb + nc + nd)%Z /\ (ne + nf + ng + nh < 0)%Z} +
{(na + nb + nc + nd < 0 < ne + nf + ng + nh)%Z}.
Lemma Qquadratic_sign_neg_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)
(na nb nc nd ne nf ng nh : Z) (np1 np2 : Qpositive),
Qquadratic_sign a b c d e f g h p1 p2 H_Qquadratic_sg_denom_nonzero =
((-1)%Z, (na, (nb, (nc, nd)), (ne, (nf, (ng, nh))), (np1, np2))) ->
{(0 <= na)%Z /\
(0 <= nb)%Z /\
(0 <= nc)%Z /\
(0 <= nd)%Z /\ (ne <= 0)%Z /\ (nf <= 0)%Z /\ (ng <= 0)%Z /\ (nh <= 0)%Z} +
{(na <= 0)%Z /\
(nb <= 0)%Z /\
(nc <= 0)%Z /\
(nd <= 0)%Z /\ (0 <= ne)%Z /\ (0 <= nf)%Z /\ (0 <= ng)%Z /\ (0 <= nh)%Z} +
{np1 = One /\
(0 <= na + nc)%Z /\
(0 <= nb + nd)%Z /\ (ne + ng <= 0)%Z /\ (nf + nh <= 0)%Z} +
{np1 = One /\
(na + nc <= 0)%Z /\
(nb + nd <= 0)%Z /\ (0 <= ne + ng)%Z /\ (0 <= nf + nh)%Z} +
{np1 = One /\ np2 = One} +
{np1 <> One /\
np2 = One /\
(0 <= na + nb)%Z /\
(0 <= nc + nd)%Z /\ (ne + nf <= 0)%Z /\ (ng + nh <= 0)%Z} +
{np1 <> One /\
np2 = One /\
(na + nb <= 0)%Z /\
(nc + nd <= 0)%Z /\ (0 <= ne + nf)%Z /\ (0 <= ng + nh)%Z}.