Proof with Geometry.
intros.
cases_equality A B.
assert (A ** B = 0)...
assert (S P A B = 0).
rewrite H1...
assert (P <> Q); eauto with Geom...
rewrite H2.
rewrite H3.
field...
assert (parallel A B P Q)...
assert (T: P<>Q).
eauto with Geom.
assert (U: ~ Col A B Q).
eapply diff_not_col_par_not_col with (Q:=P)...
assert (Th := on_line_dex_spec_strong A B P Q H2 T U)...
elim Th; intro R; intros; clear Th...
decompose [and] p; clear p...
rewrite <- H5...
assert (A <> R)...
unfold not in |- *.
intro.
assert (A ** R = 0)...
rewrite H7 in H5...
suppose (~ Col P A R).
assert (A ** B / A ** R = S P A B / S P A R)...
rewrite H8.
assert (S P A R = S A Q P).
assert (S A P A + S Q P A = S R P A + S P P A).
apply l2_11a...
assert (S A P A = 0)...
assert (S P P A = 0)...
rewrite H10 in H9.
rewrite H11 in H9.
assert (S A Q P = S Q P A)...
assert (S P A R = S R P A)...
rewrite H12.
rewrite H13.
NormalizeRing H9...
rewrite H9...
unfold parallel in H2.
unfold S4 in H2.
unfold not in |- *.
intro.
assert (Col R A P)...
assert (Col R B P).
apply col_1; apply col_1; apply col_2;eapply col_trans_1.
eapply sym_not_eq;  eexact H4.
auto.
auto.
assert (Col A B P).
apply col_2;  eapply col_trans_1.
eexact H4.
apply col_1;  eexact H8.
apply col_1;  eexact H3.
assert (Col A P B)...
rewrite H11 in H2.
NormalizeRing H2...
Qed.

(* Specifications: *)
Lemma weak_3_parallelogram_weak_3_parallelogram_1 :
forall A B C D,
weak_3_parallelogram A B C D ->
weak_3_parallelogram B C D A.