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}.

Lemma l8_12 : forall A B C D X, Perp_at X A B C D -> Perp_at X C D A B.