Hint Resolve l8_5 : perp.
Ltac let_symmetric C P A :=
let id1:=fresh in (assert (id1:(exists A', Midpoint P A A'));
[apply symmetric_point_construction|ex_and id1 C]).
Ltac symmetric B' A B :=
assert(sp:= symmetric_point_construction B A); ex_and sp B'.
Section T8_3.
Context `{TnEQD:Tarski_neutral_dimensionless_with_decidable_point_equality}.

(* Specifications: *)
Lemma l8_7 : forall A B C, Per A B C -> Per A C B -> B=C.
Lemma l8_8 : forall A B, Per A B A -> A=B.
Lemma per_distinct : forall A B C, Per A B C -> A <> B -> A <> C.
Lemma per_distinct_1 : forall A B C, Per A B C -> B <> C -> A <> C.
Lemma l8_9 : forall A B C, Per A B C -> Col A B C -> A=B \/ C=B.
Lemma l8_10 : forall A B C A' B' C',  Per A B C -> Cong_3 A B C A' B' C' -> Per A' B' C'.
Lemma col_col_per_per : forall A X C U V,
A<>X -> C<>X ->
Col U A X ->
Col V C X ->
Per A X C ->
Per U X V.
Lemma perp_in_dec : forall X A B C D, Perp_at X A B C D \/ ~ Perp_at X A B C D.
Lemma perp_distinct : forall A B C D, Perp A B C D -> A <> B /\ C <> D.
Lemma l8_12 : forall A B C D X, Perp_at X A B C D -> Perp_at X C D A B.
Lemma per_col : forall A B C D,
B <> C -> Per A B C -> Col B C D -> Per A B D.
Lemma l8_13_2 : forall A B C D X,
A <> B -> C <> D -> Col X A B -> Col X C D ->
(exists U, exists V :Tpoint, Col U A B /\ Col V C D /\ U<>X /\ V<>X /\ Per U X V) ->
Perp_at X A B C D.
Lemma l8_14_1 : forall A B, ~ Perp A B A B.
Lemma l8_14_2_1a : forall X A B C D, Perp_at X A B C D -> Perp A B C D.
Lemma perp_in_distinct : forall X A B C D , Perp_at X A B C D -> A <> B /\ C <> D.
Lemma l8_14_2_1b : forall X A B C D Y, Perp_at X A B C D -> Col Y A B -> Col Y C D -> X=Y.
Lemma l8_14_2_1b_bis : forall A B C D X, Perp A B C D -> Col X A B -> Col X C D -> Perp_at X A B C D.
Lemma l8_14_2_2 : forall X A B C D,
Perp A B C D -> (forall Y, Col Y A B -> Col Y C D -> X=Y) ->  Perp_at X A B C D.
Lemma l8_14_3 : forall A B C D X Y, Perp_at X A B C D -> Perp_at Y A B C D -> X=Y.
Lemma l8_15_1 : forall A B C X, Col A B X -> Perp A B C X -> Perp_at X A B C X.
Lemma l8_15_2 : forall A B C X, Col A B X ->  Perp_at X A B C X -> Perp A B C X.
Lemma perp_in_per : forall A B C, Perp_at B A B B C-> Per A B C.
Lemma perp_sym : forall A B C D, Perp A B C D -> Perp C D A B.
Lemma perp_col0 : forall A B C D X Y, Perp A B C D -> X <> Y -> Col A B X -> Col A B Y -> Perp C D X Y.
Lemma per_perp_in : forall A B C, A <> B -> B <> C -> Per A B C -> Perp_at B A B B C.
Lemma per_perp : forall A B C, A <> B -> B <> C -> Per A B C -> Perp A B B C.
Lemma perp_left_comm : forall A B C D, Perp A B C D -> Perp B A C D.
Lemma perp_right_comm : forall A B C D, Perp A B C D -> Perp A B D C.
Lemma perp_comm : forall A B C D, Perp A B C D -> Perp B A D C.
Lemma perp_in_sym :
forall A B C D X,
Perp_at X A B C D -> Perp_at X C D A B.
Lemma perp_in_left_comm :
forall A B C D X,
Perp_at X A B C D -> Perp_at X B A C D.
Lemma perp_in_right_comm : forall A B C D X, Perp_at X A B C D -> Perp_at X A B D C.
Lemma perp_in_comm : forall A B C D X, Perp_at X A B C D -> Perp_at X B A D C.
End T8_3.