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

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.