induction (eq_dec_points P P').
subst P'.
apply out_preserves_eqo1.
assumption.
assumption.
unfold eqo.
repeat split.
assumption.
intro.
apply H.
assert(Col A B B').
apply out_col.
assumption.
assert(Col A P P').
apply out_col.
assumption.
assert(Col A P B').
apply (col_transitivity_1 _ P').
intro.
subst P'.
unfold Out in H1.
spliter.
auto.
Col.
Col.
eapply (col_transitivity_1 _ B').
intro.
subst B'.
unfold Out in H0.
spliter.
auto.
Col.
Col.
intros.
assert(B = B2).
eapply l6_11_uniqueness.
4: apply H8.
3: apply H0.
intro.
subst B'.
unfold Out in H7.
spliter.
auto.
intro.
subst B2.
unfold Out in H7.
spliter.
auto.
apply l6_6.
assumption.
apply cong_reflexivity.
subst B2.
apply l7_3 in H9.
subst M.
assert(A <> C).
apply perp_not_eq_2 in H3.
auto.
assert(A <> C1).
apply perp_not_eq_2 in H5.
auto.
assert(Perp A B C1 A).
eapply perp_col.
intro.
subst B.
apply H.
Col.
apply H5.
apply out_col.
apply l6_6.
assumption.
assert(Col A C C1).
eapply perp2__col.
apply perp_sym.
apply perp_comm.
apply H3.
apply perp_comm.
Perp.
induction(eq_dec_points P C).
subst P.
assert(P'=C1).
apply l8_9 in H6.
induction H6.
assumption.
contradiction.
assert(HH:= H1).
unfold Out in H1.
spliter.
apply out_col in HH.
ColR.
subst P'.
left.
unfold Out in H1.
spliter.
induction H17.
eapply between_exchange3.
apply between_symmetry.
apply H17.
apply midpoint_bet.
assumption.
eapply outer_transitivity_between2.
apply between_symmetry.
apply H17.
apply midpoint_bet.
assumption.
assumption.
assert(~Col P C A).
apply per_not_col.
assumption.
auto.
assumption.
assert(C <> C1).
intro.
subst C1.
assert(Col P P' C).
eapply per2__col.
apply H4.
auto.
assumption.
apply H2.
eapply l6_21.
apply not_col_permutation_2.
apply H17.
5:apply col_permutation_2.
5:apply H18.
auto.
Col.
Col.
Col.
assert(HH:=ex_col A C C1).
assert(A <> C /\ A <> C1 /\ C <> C1).
repeat split; auto.
apply HH in H19.
ex_and H19 D.
left.
unfold Out in H1.
spliter.
induction H24.
assert(Bet A C C1).
apply (per_preserves_bet D A A P P' A C C1); try auto; try Col.
apply l8_2.
apply l8_5.
eapply per_col.
2:apply H4.
auto.
Col.
eapply per_col.
2:apply H6.
auto.
ColR.
ColR.
eapply between_exchange3.
apply between_symmetry.
apply H25.
apply midpoint_bet.
assumption.
assert(Bet A C1 C).
apply (per_preserves_bet D A A P' P A C1 C); try auto; try Col.
apply l8_2.
apply l8_5.
eapply per_col.
2:apply H6.
auto.
ColR.
ColR.
eapply per_col.
2:apply H4.
auto.
ColR.
eapply between_symmetry.
eapply outer_transitivity_between.
2: apply H25.
apply midpoint_bet.
apply l7_2.
assumption.
auto.
assumption.
Qed.

(* Specifications: *)
Lemma per_one_side : forall A B P Q C C', A <> P -> C' <> P -> ~Col A B C -> Col P Q A -> Col P Q C' -> Perp A B P Q -> Per C C' P -> OS A B C C'.
intros.