intros.
assert (HPar := plgs_par_strict A B C D H); spliter...
Qed.
End Quadrilateral_inter_dec_2.
Ltac not_exist_hyp_perm_par A B C D := not_exist_hyp (Par A B C D); not_exist_hyp (Par A B D C);
not_exist_hyp (Par B A C D); not_exist_hyp (Par B A D C);
not_exist_hyp (Par C D A B); not_exist_hyp (Par C D B A);
not_exist_hyp (Par D C A B); not_exist_hyp (Par D C B A).
Ltac not_exist_hyp_perm_pars A B C D := not_exist_hyp (Par_strict A B C D); not_exist_hyp (Par_strict A B D C);
not_exist_hyp (Par_strict B A C D); not_exist_hyp (Par_strict B A D C);
not_exist_hyp (Par_strict C D A B); not_exist_hyp (Par_strict C D B A);
not_exist_hyp (Par_strict D C A B); not_exist_hyp (Par_strict D C B A).
Ltac assert_pars_1 :=
repeat
match goal with
| H:Par_strict ?X1 ?X2 ?X3 ?X4 |- _ =>
let h := fresh in
not_exist_hyp_perm_par X1 X2 X3 X4;
assert (h := par_strict_par X1 X2 X3 X4 H)
| H:Par ?X1 ?X2 ?X3 ?X4, H2:Col ?X1 ?X2 ?X5, H3:(~Col ?X3 ?X4 ?X5) |- _ =>
let h := fresh in
not_exist_hyp_perm_pars X1 X2 X3 X4;
assert (h := par_not_col_strict X1 X2 X3 X4 X5 H H2 H3)
| H: ?X1 <> ?X2, H2:?X2 <> ?X3, H3:Parallelogram ?X1 ?X2 ?X3 ?X4 |- _ =>
let h := fresh in
not_exist_hyp_perm_par X1 X2 X3 X4;
assert (h := plg_par_1 X1 X2 X3 X4 H H2 H3)
| H:Parallelogram_strict ?X1 ?X2 ?X3 ?X4 |- _ =>
let h := fresh in
not_exist_hyp_perm_pars X1 X2 X3 X4;
assert (h := plgs_pars_1 X1 X2 X3 X4 H)
end.
Ltac assert_pars_2 :=
repeat
match goal with
| H: ?X1 <> ?X2, H2:?X2 <> ?X3, H3:Parallelogram ?X1 ?X2 ?X3 ?X4 |- _ =>
let h := fresh in
not_exist_hyp_perm_par X1 X4 X2 X3;
assert (h := plg_par_2 X1 X2 X3 X4 H H2 H3)
| H:Parallelogram_strict ?X1 ?X2 ?X3 ?X4 |- _ =>
let h := fresh in
not_exist_hyp_perm_pars X1 X4 X2 X3;
assert (h := plgs_pars_2 X1 X2 X3 X4 H)
end.
Ltac assert_pars_perm := permutation_intro_in_hyps; assert_pars_1; assert_pars_2; clean_reap_hyps.
Hint Resolve plg_par_1 plg_par_2 plgs_pars_1 plgs_pars_2 : par.
Section Quadrilateral_inter_dec_3.
Context `{TE:Tarski_euclidean}.

Lemma par_cong3_rect : forall A B C D, A <> C \/ B <> D -> Par A B C D -> Cong A B C D -> Cong A D B C -> Cong A C B D -> Rectangle A B C D \/ Rectangle A B D C.