Ltac double A B A' :=
   assert (mp:= symmetric_point_construction A B);
   elim mp; intros A' ; intro; clear mp.

Lemma Perp_cases : forall A B C D, Perp A B C D \/ Perp B A C D \/ Perp A B D C \/ Perp B A D C \/ Perp C D A B \/ Perp C D B A \/ Perp D C A B \/ Perp D C B A -> Perp A B C D.