Definition is_circumcenter G A B C := Cong A G B G /\ Cong B G C G /\ Coplanar G A B C.

(* Specifications: *)
Lemma circumcenter_cong : forall G A B C, is_circumcenter G A B C -> Cong A G B G /\ Cong B G C G /\ Cong C G A G.
Lemma is_circumcenter_perm : forall A B C G, is_circumcenter G A B C -> is_circumcenter G A B C /\ is_circumcenter G A C B /\ is_circumcenter G B A C /\ is_circumcenter G B C A /\ is_circumcenter G C A B /\ is_circumcenter G C B A.
Lemma is_circumcenter_cases : forall A B C G, is_circumcenter G A B C \/ is_circumcenter G A C B \/ is_circumcenter G B A C \/ is_circumcenter G B C A \/ is_circumcenter G C A B \/ is_circumcenter G C B A -> is_circumcenter G A B C.
Lemma is_circumcenter_perm_1 : forall A B C G, is_circumcenter G A B C -> is_circumcenter G A C B.
Lemma is_circumcenter_perm_2 : forall A B C G, is_circumcenter G A B C -> is_circumcenter G B A C.
Lemma is_circumcenter_perm_3 : forall A B C G, is_circumcenter G A B C -> is_circumcenter G B C A.
Lemma is_circumcenter_perm_4 : forall A B C G, is_circumcenter G A B C -> is_circumcenter G C A B.
Lemma is_circumcenter_perm_5 : forall A B C G, is_circumcenter G A B C -> is_circumcenter G C B A.
Lemma is_circumcenter_cop : forall A B C G, is_circumcenter G A B C -> Coplanar G A B C.
Lemma circumcenter_perp : forall A B C A' G, A<>B -> B<>C -> A<>C -> G <> A' -> is_circumcenter G A B C -> Midpoint A' B C -> Perp_bisect G A' B C.
Lemma exists_circumcenter : forall A B C, ~ Col A B C -> exists G, is_circumcenter G A B C.
Lemma circumcenter_perp_all : forall A B C A' B' C' G, A<>B -> B<>C -> A<>C -> G <> A' -> G <> B' -> G <> C' -> is_circumcenter G A B C -> Midpoint A' B C -> Midpoint B' A C -> Midpoint C' A B -> Perp_bisect G A' B C /\ Perp_bisect G B' A C /\ Perp_bisect G C' A B.
Lemma circumcenter_intersect : forall A B C A' B' C' G, A<>B -> B<>C -> A<>C -> G <> A' -> G <> B' -> G <> C' -> Midpoint A' B C -> Midpoint B' A C -> Midpoint C' A B -> Perp_bisect G A' B C -> Perp_bisect G B' A C -> Perp G C' A B.
Lemma is_circumcenter_uniqueness : forall A B C O O', A<>B -> B<>C -> A<>C -> is_circumcenter O A B C -> is_circumcenter O' A B C -> O = O'.
Lemma midpoint_thales_reci_circum : forall A B C O: Tpoint, Per A C B -> Midpoint O A B -> is_circumcenter O A B C.
Lemma circumcenter_per : forall A B C O, A<>B -> B<>C -> Per A B C -> is_circumcenter O A B C -> Midpoint O A C.