Ltac col_with_conga := 
match goal with
   | H: (CongA ?A ?B ?I ?I ?B ?C) |- Col ?A ?B ?C => 
      assert (Col A B I) by (assert_diffs;ColR); assert (HH : Col I B C) by (apply (col_conga_col A B I I B C);assumption);
      assert_diffs;ColR
   | H :(CongA ?A ?B ?I ?C ?B ?I) |- Col ?A ?B ?C => 
      assert (CongA A B I I B C) by (apply (conga_right_comm A B I C B I);assumption); col_with_conga
   | H :(CongA ?I ?B ?A ?I ?B ?C) |- Col ?A ?B ?C => 
      assert (CongA A B I I B C) by (apply (conga_left_comm I B A I B C);assumption); col_with_conga
   | H :(CongA ?I ?B ?A ?C ?B ?I) |- Col ?A ?B ?C => 
      assert (CongA A B I C B I) by (apply (conga_left_comm I B A C B I);assumption); col_with_conga
   | H :(CongA ?I ?B ?C ?A ?B ?I) |- Col ?A ?B ?C =>
      assert (CongA A B I I B C) by (apply (conga_sym I B C A B I);assumption); col_with_conga
   | H :(CongA ?C ?B ?I ?A ?B ?I) |- Col ?A ?B ?C =>
      assert (CongA A B I C B I) by (apply (conga_sym C B I A B I);assumption); col_with_conga
   | H :(CongA ?I ?B ?C ?I ?B ?A) |- Col ?A ?B ?C =>
      assert (CongA I B A I B C) by (apply (conga_sym I B C I B A);assumption); col_with_conga
   | H: (CongA ?C ?B ?I ?I ?B ?A) |- Col ?A ?B ?C =>
      assert (CongA I B A C B I) by (apply (conga_sym C B I I B A);assumption); col_with_conga
   | H: (CongA ?A ?B ?I ?I ?B ?C) |- Col ?C ?B ?A => 
      apply (col_permutation_3 A B C);auto;col_with_conga
   | H :(CongA ?A ?B ?I ?C ?B ?I) |- Col ?C ?B ?A => 
      apply (col_permutation_3 A B C);auto;col_with_conga
   | H :(CongA ?I ?B ?A ?I ?B ?C) |- Col ?C ?B ?A => 
      apply (col_permutation_3 A B C);auto;col_with_conga
   | H :(CongA ?I ?B ?A ?C ?B ?I) |- Col ?C ?B ?A => 
      apply (col_permutation_3 A B C);auto;col_with_conga
   | H :(CongA ?I ?B ?C ?A ?B ?I) |- Col ?C ?B ?A =>
      apply (col_permutation_3 A B C);auto;col_with_conga
   | H :(CongA ?C ?B ?I ?A ?B ?I) |- Col ?C ?B ?A =>
      apply (col_permutation_3 A B C);auto;col_with_conga
   | H :(CongA ?I ?B ?C ?I ?B ?A) |- Col ?C ?B ?A =>
      apply (col_permutation_3 A B C);auto;col_with_conga
   | H: (CongA ?C ?B ?I ?I ?B ?A) |- Col ?C ?B ?A =>
      apply (col_permutation_3 A B C);auto;col_with_conga
end.

(* Specifications: *)
Lemma equality_foot_out_out : forall A B C I H1 H2, ~ Col A B C -> InAngle I A B C -> Col A B H1 -> Col B C H2-> Cong I H1 I H2-> Perp A B I H1 -> Perp B C I H2 -> (Out B H1 A -> Out B H2 C).
Lemma bisector_perp_equality : forall A B C I H1 H2, Coplanar A B C I -> Col B H1 A -> Col B H2 C -> Perp A B I H1 -> Perp B C I H2 -> CongA A B I I B C -> Cong I H1 I H2.
Lemma perp_equality_bisector : forall A B C I H1 H2, ~ Col A B C -> InAngle I A B C -> Col B H1 A -> Col B H2 C -> Perp A B I H1 -> Perp B C I H2 -> Cong I H1 I H2 -> CongA A B I I B C.