Proof with try solve [ Geometry | ring | congruence ].
intros...
assert (T := A2a A O 2)...
elim T; intros; clear T...
exists x...
unfold symmetric_point in |- *...
intuition...
assert (O ** x = - x ** O)...
assert (A ** x + x ** O = A ** O)...
rewrite H1; clear H1...
RewriteVar (A ** x) H0...
RewriteVar (x ** O) H2...
Qed.

(* Specifications: *)
Lemma mid_point_comm :
forall A B C,
mid_point A B C -> mid_point A C B.