Theory Order

(*<*)
theory Order imports Incidence begin
(*>*)

section‹Order›

locale Definition_2 = Incidence_Rule +
  fixes Line_on_Seg :: "Line  Segment  bool"
    and Bet_Point :: "Segment  Point  bool"
    and Seg_on_Seg :: "Segment  Segment  bool"
    and Line_on_Line :: "Line  Line  bool"
    and Plane_sameside :: "Line  Point  Point  bool"
    and Plane_diffside :: "Line  Point  Point  bool"
  assumes Bet_Point_def : "Bet_Point (Se p1 p2) p3  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp) 
         ¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p3) add Emp)  ¬ Eq (Geos (Poi p3) add Emp) (Geos (Poi p1) add Emp)"
    and Bet_rev : "Bet_Point (Se p1 p2) p3  Bet_Point (Se p2 p1) p3"
    and Line_Bet_exist : "Bet_Point (Se p1 p2) p3  l. Line_on l p1  Line_on l p2  Line_on l p3"
    and Seg_rev : "Eq (Geos (Seg (Se p1 p2)) add Emp) (Geos (Seg (Se p2 p1)) add Emp)"
    and Plane_sameside_def : "Plane_sameside l1 p1 p2  ¬ Line_on_Seg l1 (Se p1 p2)  ¬ Line_on l1 p1  ¬ Line_on l1 p2  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)"
    and Plane_diffside_def : "Plane_diffside l1 p1 p2  (p. Bet_Point (Se p1 p2) p  Line_on l1 p  ¬ Line_on l1 p1  ¬ Line_on l1 p2)"
        
locale Axiom_2 = Definition_2 +
  assumes Bet_extension : "Line_on l1 p1; Line_on l1 p2; ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)  p. Bet_Point (Se p1 p) p2  Line_on l1 p"
    and Bet_iff : "Bet_Point (Se p1 p2) p3  Inv (Bet_Point (Se p2 p3) p1)  Inv (Bet_Point (Se p3 p1) p2)"
    and Pachets_axiom : "¬ Line_on (Li p1 p2) p3; Bet_Point (Se p1 p2) p4; Line_on l1 p4;
        ¬ Line_on l1 p1; ¬ Line_on l1 p2; ¬ Line_on l1 p3  
        Line_on_Seg l1 (Se p1 p3)  ¬ Line_on_Seg l1 (Se p2 p3)
         Line_on_Seg l1 (Se p2 p3)  ¬ Line_on_Seg l1 (Se p1 p3)"
    and Seg_move_sameside : "Line_on l1 p1; Line_on l1 p2; ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp);
        ¬ Eq (Geos (Poi p3) add Emp) (Geos (Poi p4) add Emp)  
        p. Eq (Geos (Seg (Se p3 p4)) add Emp) (Geos (Seg (Se p1 p)) add Emp)  ¬ Bet_Point (Se p p2) p1  Line_on l1 p  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p) add Emp)"
    and Seg_move_diffside : "Line_on l1 p1; Line_on l1 p2; ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp);
        ¬ Eq (Geos (Poi p3) add Emp) (Geos (Poi p4) add Emp)  
        p. Eq (Geos (Seg (Se p3 p4)) add Emp) (Geos (Seg (Se p1 p)) add Emp)  Bet_Point (Se p p2) p1  Line_on l1 p  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p) add Emp)"

locale Order_Rule = Axiom_2 +
  assumes Bet_Point_Eq : "Bet_Point (Se p1 p2) p3; Eq (Geos (Poi p1) add Emp) (Geos (Poi p4) add Emp)  Bet_Point (Se p4 p2) p3"
    and Line_on_Seg_rule : "Line_on_Seg l1 (Se p1 p2)  (p. Line_on l1 p  Bet_Point (Se p1 p2) p)"
    and Seg_on_Seg_rule : "Seg_on_Seg (Se p1 p2) (Se p3 p4)  (p. Bet_Point (Se p1 p2) p  Bet_Point (Se p3 p4) p)"
    and Line_on_Line_rule : "Line_on_Line l1 l2  (p. Line_on l1 p  Line_on l2 p)"
    and Seg_Point_Eq : "Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)  Eq (Geos (Seg (Se p3 p1)) add Emp) (Geos (Seg (Se p3 p2)) add Emp)"

lemma(in Order_Rule) Line_Bet_on : 
  assumes
    "Bet_Point (Se p1 p2) p3"
  shows "Line_on (Li p1 p2) p3" and "Line_on (Li p2 p1) p3"
    and "Line_on (Li p2 p3) p1" and "Line_on (Li p3 p2) p1"
    and "Line_on (Li p1 p3) p2" and "Line_on (Li p3 p1) p2"
proof -
  from assms have "l. Line_on l p1  Line_on l p2  Line_on l p3" by (blast intro:Line_Bet_exist)
  then obtain l1 :: Line where P1 : "Line_on l1 p1  Line_on l1 p2  Line_on l1 p3" by blast
  from assms have P2 : "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)" by (simp add:Bet_Point_def)
  have P3 : "Line_on (Li p1 p2) p1  Line_on (Li p1 p2) p2" by (simp add:Line_on_rule)
  from P1 have P4 : "Line_on l1 p1" by simp
  from P1 have P5 : "Line_on l1 p2" by simp
  from P2 P3 P4 P5 have P6 : "Eq (Geos (Lin l1) add Emp) (Geos (Lin (Li p1 p2)) add Emp)" by (simp add:Line_unique)
  from P1 P6 show P7 : "Line_on (Li p1 p2) p3" by (simp add:Line_on_trans)
  from assms have P8 : "¬ Eq (Geos (Poi p3) add Emp) (Geos (Poi p1) add Emp)" by (simp add:Bet_Point_def)
  from P2 P7 P8 show "Line_on (Li p1 p3) p2" by (blast intro:Line_on_rev Eq_rev)
  from P2 P7 P8 show "Line_on (Li p3 p1) p2" by (blast intro:Line_on_trans Line_on_rev Eq_rev Line_rev)
  from P2 P7 show "Line_on (Li p2 p1) p3" by (blast intro:Line_on_trans Line_rev)
  from assms have P9 : "¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p3) add Emp)" by (simp add:Bet_Point_def)
  from P2 P7 P9 show "Line_on (Li p2 p3) p1" by (blast intro:Line_on_rev Line_on_trans Line_rev Eq_rev)
  from P9 have P10 : "¬ Eq (Geos (Poi p3) add Emp) (Geos (Poi p2) add Emp)" by (blast intro:Eq_rev)
  from assms P2 P7 P8 P10 show "Line_on (Li p3 p2) p1" by (blast intro:Line_on_rev Bet_Point_def Line_on_trans Eq_rev Line_rev)
qed

lemma(in Order_Rule) Line_Bet_not_Eq :
  assumes N :
    "Bet_Point (Se p1 p2) p3"
    "¬ Line_on (Li p1 p2) p4"
  shows "¬ Eq (Geos (Lin (Li p4 p3)) add Emp) (Geos (Lin (Li p4 p2)) add Emp)" 
proof 
  assume W : "Eq (Geos (Lin (Li p4 p3)) add Emp) (Geos (Lin (Li p4 p2)) add Emp)" 
  have P1 : "Line_on (Li p4 p3) p3" by (simp add:Line_on_rule)
  from W P1 have P2 : "Line_on (Li p4 p2) p3" by (simp add:Line_on_trans)
  have P3 : "Line_on (Li p4 p2) p2" by (simp add:Line_on_rule)
  from N have P4 : "Line_on (Li p1 p2) p3" by (simp add:Line_Bet_on)
  have P5 : "Line_on (Li p1 p2) p2" by (simp add:Line_on_rule)
  from assms have P6 : "¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p3) add Emp)" by (simp add:Bet_Point_def)
  from P2 P3 P4 P5 P6 have P7 : "Eq (Geos (Lin (Li p4 p2)) add Emp) (Geos (Lin (Li p1 p2)) add Emp)" by (simp add:Line_unique)
  have P8 : "Line_on (Li p4 p2) p4" by (simp add:Line_on_rule)
  from P7 P8 have P9 : "Line_on (Li p1 p2) p4" by (simp add:Line_on_trans)
  from N P9 show False by simp
qed

text‹Theorem3›

theorem(in Order_Rule) Seg_density :
  assumes "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi C) add Emp)"
  shows "p. Bet_Point (Se A C) p" 
proof -
  have "p q r. ¬ Line_on (Li A C) p  ¬ Line_on (Li A C) q  ¬ Line_on (Li A C) r
         ¬ Eq (Geos (Poi p) add Emp) (Geos (Poi q) add Emp)  ¬ Eq (Geos (Poi q) add Emp) (Geos (Poi r) add Emp)
         ¬ Eq (Geos (Poi r) add Emp) (Geos (Poi p) add Emp)" by (blast intro:Line_not_on_exist)
  then obtain E :: Point where P1 : "¬ Line_on (Li A C) E" by blast
  then have P2 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi E) add Emp)" by (simp add:Line_not_on_Point)
  have P3 : "Line_on (Li A E) A  Line_on (Li A E) E" by (simp add:Line_on_rule)
  from P2 P3 have "p. Bet_Point (Se A p) E  Line_on (Li A E) p" by (simp add:Bet_extension)
  then obtain F :: Point where P4 : "Bet_Point (Se A F) E  Line_on (Li A E) F" by blast
  then have P5 : "Line_on (Li A F) E" by (simp add:Line_Bet_on)
  from P4 have P6 : "Bet_Point (Se A F) E" by simp
  from P6 have P7 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi F) add Emp)" by (simp add:Bet_Point_def)
  from P2 P4 P6 P7 have P8 : "Line_on (Li A E) F" by (simp add:Line_on_rev)
  from assms P1 have P9 : "¬ Eq (Geos (Lin (Li A C)) add Emp) (Geos (Lin (Li A E)) add Emp)" by (simp add:Line_not_Eq)
  have P10 : "Line_on (Li A F) A" by (simp add:Line_on_rule)
  from P2 P3 P5 P10 have P11 : "Eq (Geos (Lin (Li A E)) add Emp) (Geos (Lin (Li A F)) add Emp)" by (blast intro:Line_unique)
  from P9 P11 have P12 : "¬ Eq (Geos (Lin (Li A C)) add Emp) (Geos (Lin (Li A F)) add Emp)" by (simp add:Eq_not_trans)
  from assms P7 P12 have P13 : "¬ Line_on (Li A C) F" by (simp add:Line_not_Eq_on)
  from assms P7 P13 have P14 : "¬ Line_on (Li A F) C" by (blast intro:Line_on_rev)
  have "Line_on (Li A F) F" by (simp add:Line_on_rule)
  then have P15 : "Eq (Geos (Poi F) add Emp) (Geos (Poi C) add Emp)  Line_on (Li A F) C" by (simp add:Point_Eq)
  from P14 P15 have P16 : "¬ Eq (Geos (Poi F) add Emp) (Geos (Poi C) add Emp)" by blast
  have P17 : "Line_on (Li F C) F  Line_on (Li F C) C" by (simp add:Line_on_rule)
  from P16 P17 have "p. Bet_Point (Se F p) C  Line_on (Li F C) p" by (simp add:Bet_extension)
  then obtain G :: Point where P18 : "Bet_Point (Se F G) C  Line_on (Li F C) G" by blast
  from P18 have P19 : "Line_on (Li F G) C" by (simp add:Line_Bet_on)
  from P18 have P20 : "Bet_Point (Se F G) C" by simp
  then have P21 : "¬ Eq (Geos (Poi F) add Emp) (Geos (Poi G) add Emp)" by (simp add:Bet_Point_def)
  from P20 have P22 : "Line_on (Li F C) G" by (simp add:Line_Bet_on)
  from P7 P14 P21 P22 have P23 : "¬ Line_on (Li A F) G" by (simp add:Line_cross_not_on)
  from P6 P23 have P24 : "¬ Eq (Geos (Lin (Li G E)) add Emp) (Geos (Lin (Li G F)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from P5 have P25 : "Eq (Geos (Poi E) add Emp) (Geos (Poi G) add Emp)  Line_on (Li A F) G" by (simp add:Point_Eq)
  from P23 P25 have P26 : "¬ Eq (Geos (Poi G) add Emp) (Geos (Poi E) add Emp)" by (blast intro:Eq_rev)
  from P21 have P27 : "¬ Eq (Geos (Poi G) add Emp) (Geos (Poi F) add Emp)" by (blast intro:Eq_rev)
  from P24 P26 P27 have P28 : "¬ Line_on (Li G E) F" by (simp add:Line_not_Eq_on)
  from P26 P28 have P29 : "¬ Line_on (Li E G) F" by (blast intro:Line_rev Line_on_trans Eq_rev)
  have P30 : "Line_on (Li E G) E" by (simp add:Line_on_rule)
  have P31 : "Line_on (Li A E) E" by (simp add:Line_on_rule)
  have P32 : "Line_on (Li A E) A" by (simp add:Line_on_rule)
  from P2 P30 P31 P32 have P33 : "Line_on (Li E G) A  Eq (Geos (Lin (Li A E)) add Emp) (Geos (Lin (Li E G)) add Emp)" by (simp add:Line_unique)
  from P8 P33 have P34 : "Line_on (Li E G) A  Line_on (Li E G) F" by (simp add:Line_on_trans)
  from P29 P34 have P35 : "¬ Line_on (Li E G) A" by blast
  have P36 : "Line_on (Li E G) G" by (simp add:Line_on_rule)
  have P37 : "Line_on (Li F G) G" by (simp add:Line_on_rule)
  from P20 have P38 : "¬ Eq (Geos (Poi G) add Emp) (Geos (Poi C) add Emp)" by (simp add:Bet_Point_def)
  from P19 P36 P37 P38 have P39 : "Line_on (Li E G) C  Eq (Geos (Lin (Li F G)) add Emp) (Geos (Lin (Li E G)) add Emp)" by (simp add:Line_unique)
  have P40 : "Line_on (Li F G) F" by (simp add:Line_on_rule)
  from P39 P40 have P41 : "Line_on (Li E G) C  Line_on (Li E G) F" by (simp add:Line_on_trans)
  from P29 P41 have P42 : "¬ Line_on (Li E G) C" by blast
  from P6 P14 P29 P30 P35 P42 have P43 : "Line_on_Seg (Li E G) (Se A C)  ¬ Line_on_Seg (Li E G) (Se F C)  Line_on_Seg (Li E G) (Se F C)  ¬ Line_on_Seg (Li E G) (Se A C)" by (simp add:Pachets_axiom)
  then have "Line_on_Seg (Li E G) (Se F C)  p. Line_on (Li E G) p  Bet_Point (Se F C) p" by (simp add:Line_on_Seg_rule)
  then obtain D :: Point where P44 : "Line_on_Seg (Li E G) (Se F C)  Line_on (Li E G) D  Bet_Point (Se F C) D" by blast
  from P44 have P46 : "Line_on_Seg (Li E G) (Se F C)  Bet_Point (Se F C) D" by simp
  from P46 have "Line_on_Seg (Li E G) (Se F C)  ¬ Eq (Geos (Poi D) add Emp) (Geos (Poi F) add Emp)" by (simp add:Bet_Point_def)
  from P46 have P47 : "Line_on_Seg (Li E G) (Se F C)  Line_on (Li F D) C" by (simp add:Line_Bet_on)
  have P48 : "Line_on (Li F D) F" by (simp add:Line_on_rule)
  have P49 : "Line_on (Li F G) F" by (simp add:Line_on_rule)
  from P16 P19 P47 P48 P49 have P50 : "Line_on_Seg (Li E G) (Se F C)   
    Eq (Geos (Lin (Li F D)) add Emp) (Geos (Lin (Li F G)) add Emp)" by (simp add:Line_unique)
  have P51 : "Line_on (Li F D) D" by (simp add:Line_on_rule)
  from P50 P51 have P52 : "Line_on_Seg (Li E G) (Se F C)  Line_on (Li F G) D" by (simp add:Line_on_trans)
  have P53 : "Line_on (Li F G) G" by (simp add:Line_on_rule)
  have P54 : "Line_on (Li E G) G" by (simp add:Line_on_rule)
  from P46 have P55 : "Line_on_Seg (Li E G) (Se F C)  Eq (Geos (Poi D) add Emp) (Geos (Poi G) add Emp) 
     Bet_Point (Se F C) G" by (simp add:Point_Eq)
  from P20 have "Inv (Bet_Point (Se G C) F)  Inv (Bet_Point (Se C F) G)" by (simp add:Bet_iff)
  then have "¬ Bet_Point (Se C F) G" by (simp add:Inv_def)
  then have P56 : "¬ Bet_Point (Se F C) G" by (blast intro:Bet_rev)
  from P55 P56 have P57 : "Line_on_Seg (Li E G) (Se F C)  ¬ Eq (Geos (Poi D) add Emp) (Geos (Poi G) add Emp)" by blast
  from P44 P52 P53 P54 P57 have P58 : "Line_on_Seg (Li E G) (Se F C)  
    Eq (Geos (Lin (Li E G)) add Emp) (Geos (Lin (Li F G)) add Emp)" by (blast intro:Line_unique)
  from P26 have P59 : "Eq (Geos (Lin (Li E G)) add Emp) (Geos (Lin (Li G E)) add Emp)" by (simp add:Line_rev Eq_rev)
  from P27 have P60 : "Eq (Geos (Lin (Li F G)) add Emp) (Geos (Lin (Li G F)) add Emp)" by (simp add:Line_rev Eq_rev)
  from P58 P59 P60 have P61 : "Line_on_Seg (Li E G) (Se F C)  
    Eq (Geos (Lin (Li G E)) add Emp) (Geos (Lin (Li G F)) add Emp)" by (blast intro:Eq_trans Eq_rev)
  from P24 P61 have P62 : "¬ Line_on_Seg (Li E G) (Se F C)" by blast
  from P43 P62 have "Line_on_Seg (Li E G) (Se A C)  ¬ Line_on_Seg (Li E G) (Se F C)" by blast
  then have "p. Line_on (Li E G) p  Bet_Point (Se A C) p" by (simp add:Line_on_Seg_rule)
  thus "p. Bet_Point (Se A C) p" by blast
qed

lemma(in Order_Rule) Line_Bet_not_on : 
  assumes 
    "Line_on (Li p1 p2) p3"
    "¬ Line_on (Li p1 p2) p4"
    "Bet_Point (Se p3 p4) p5"
  shows "Inv (Line_on (Li p1 p2) p5)" 
proof -
  from assms have "¬ Eq (Geos (Poi p5) add Emp) (Geos (Poi p3) add Emp)" by (simp add:Bet_Point_def)
  then have P1 : "¬ Eq (Geos (Poi p3) add Emp) (Geos (Poi p5) add Emp)" by (blast intro:Eq_rev)
  from assms have P2 : "Line_on (Li p3 p5) p4" by (simp add:Line_Bet_on)
  have P3 : "Line_on (Li p3 p5) p3" by (simp add:Line_on_rule)
  have P4 : "Line_on (Li p3 p5) p5" by (simp add:Line_on_rule)
  from assms P1 P3 P4 have P5 : "Line_on (Li p1 p2) p5  Eq (Geos (Lin (Li p3 p5)) add Emp) (Geos (Lin (Li p1 p2)) add Emp)" by (simp add:Line_unique)
  from P2 P5 have P6 : "Line_on (Li p1 p2) p5  Line_on (Li p1 p2) p4" by (simp add:Line_on_trans)
  from assms P6 have "¬ Line_on (Li p1 p2) p5" by blast
  thus "Inv (Line_on (Li p1 p2) p5)" by (simp add:Inv_def)
qed

lemma(in Order_Rule) Line_not_on_ex : 
  assumes N :
    "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)"
    "¬ Line_on (Li p1 p2) p3"
    "Line_on (Li p1 p4) p2"
  shows "¬ Line_on (Li p1 p4) p3" 
proof 
  assume W : "Line_on (Li p1 p4) p3" 
  have P1 : "Line_on (Li p1 p2) p2" by (simp add:Line_on_rule)
  have P2 : "Line_on (Li p1 p2) p1" by (simp add:Line_on_rule)
  have P3 : "Line_on (Li p1 p4) p1" by (simp add:Line_on_rule)
  from N P1 P2 P3 have P4 : "Eq (Geos (Lin (Li p1 p4)) add Emp) (Geos (Lin (Li p1 p2)) add Emp)" by (simp add:Line_unique)
  from W P4 have P5 : "Line_on (Li p1 p2) p3" by (simp add:Line_on_trans)
  from N P5 show False by simp
qed

lemma(in Order_Rule) Line_on_dens : 
  assumes
    "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp)"
    "¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p4) add Emp)"
    "Line_on (Li p1 p2) p3"
    "Line_on (Li p1 p4) p3"
  shows "Line_on (Li p2 p4) p3" 
proof -
  have P1 : "Line_on (Li p1 p2) p1" by (simp add:Line_on_rule)
  have P2 : "Line_on (Li p1 p4) p1" by (simp add:Line_on_rule)
  from assms P1 P2 have P3 : "Eq (Geos (Lin (Li p1 p2)) add Emp) (Geos (Lin (Li p1 p4)) add Emp)" by (simp add:Line_unique)
  have P4 : "Line_on (Li p1 p2) p2" by (simp add:Line_on_rule)
  from P3 P4 have P5 : "Line_on (Li p1 p4) p2" by (simp add:Line_on_trans)
  have P6 : "Line_on (Li p1 p4) p4" by (simp add:Line_on_rule)
  have P7 : "Line_on (Li p2 p4) p2" by (simp add:Line_on_rule)
  have P8 : "Line_on (Li p2 p4) p4" by (simp add:Line_on_rule)
  from assms P5 P6 P7 P8 have P9 : "Eq (Geos (Lin (Li p1 p4)) add Emp) (Geos (Lin (Li p2 p4)) add Emp)" by (simp add:Line_unique)
  from assms P9 show "Line_on (Li p2 p4) p3" by (simp add:Line_on_trans)
qed

lemma(in Order_Rule) Bet_case_lemma1 : 
  assumes 
    "Line_on l1 A"
    "Line_on l1 B"
    "Line_on l1 C"
    "¬ Bet_Point (Se B A) C"
    "¬ Bet_Point (Se C B) A"
    "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi B) add Emp)"
    "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi C) add Emp)"
    "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi A) add Emp)"
    "¬ Line_on (Li A C) D"
    "Bet_Point (Se B G) D"
  shows "p. Line_on (Li A D) p  Bet_Point (Se G C) p"
proof -
  have P1 : "Line_on (Li A C) A" by (simp add:Line_on_rule)
  have P2 : "Line_on (Li A C) C" by (simp add:Line_on_rule)
  from assms P1 P2 have P3 : "Eq (Geos (Lin l1) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_unique)
  from assms P3 have P4 : "Line_on (Li A C) B" by (simp add:Line_on_trans)
  have P11 : "Line_on (Li B G) B" by (simp add:Line_on_rule)
  from assms P2 P4 P11 have P12 : "Line_on (Li B G) C  Eq (Geos (Lin (Li B G)) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_unique)
  from assms have P13 : "Line_on (Li B G) D" by (simp add:Line_Bet_on)
  from P12 P13 have P14 : "Line_on (Li B G) C  Line_on (Li A C) D" by (simp add:Line_on_trans)
  from assms P14 have P15 : "¬ Line_on (Li B G) C" by blast
  have P16 : "Line_on (Li A D) A" by (simp add:Line_on_rule)
  from assms P1 P4 P16 have P17 : "Line_on (Li A D) B  Eq (Geos (Lin (Li A D)) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_unique)
  have P18 : "Line_on (Li A D) D" by (simp add:Line_on_rule)
  from P17 P18 have P19 : "Line_on (Li A D) B  Line_on (Li A C) D" by (simp add:Line_on_trans)
  from assms P19 have P20 : "¬ Line_on (Li A D) B" by blast
  from assms P1 P2 P16 have P21 : "Line_on (Li A D) C  Eq (Geos (Lin (Li A D)) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_unique)
  from P18 P21 have P22 : "Line_on (Li A D) C  Line_on (Li A C) D" by (simp add:Line_on_trans)
  from assms P22 have P23 : "¬ Line_on (Li A D) C" by blast
  from assms P1 P4 P11 have P24 : "Line_on (Li B G) A  Eq (Geos (Lin (Li B G)) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_unique)
  from P13 P24 have P25 : "Line_on (Li B G) A  Line_on (Li A C) D" by (simp add:Line_on_trans)
  from assms P25 have P26 : "¬ Line_on (Li B G) A" by blast
  have P27 : "Line_on (Li B G) G" by (simp add:Line_on_rule)
  from assms have P28 : "¬ Eq (Geos (Poi G) add Emp) (Geos (Poi D) add Emp)" by (simp add:Bet_Point_def)
  from P13 P18 P27 P28 have P29 : "Line_on (Li A D) G  Eq (Geos (Lin (Li A D)) add Emp) (Geos (Lin (Li B G)) add Emp)" by (simp add:Line_unique)
  from P16 P29 have P30 : "Line_on (Li A D) G  Line_on (Li B G) A" by (simp add:Line_on_trans)
  from P26 P30 have P31 : "¬ Line_on (Li A D) G" by blast
  from assms P15 P18 P20 P23 P31 have P32 : "Line_on_Seg (Li A D) (Se B C)  ¬ Line_on_Seg (Li A D) (Se G C)
     Line_on_Seg (Li A D) (Se G C)  ¬ Line_on_Seg (Li A D) (Se B C)" by (simp add:Pachets_axiom)
  have "Line_on_Seg (Li A D) (Se B C)  p. Line_on (Li A D) p  Bet_Point (Se B C) p" by (simp add:Line_on_Seg_rule)
  then obtain A2 :: Point where P33 : "Line_on_Seg (Li A D) (Se B C)  Line_on (Li A D) A2  Bet_Point (Se B C) A2" by blast
  from assms have P34 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi C) add Emp)" by (blast intro:Eq_rev)
  from assms P34 have P35 : "¬ Eq (Geos (Lin (Li A C)) add Emp) (Geos (Lin (Li A D)) add Emp)" by (simp add:Line_not_Eq)
  have P36 : "Line_on (Li B C) B" by (simp add:Line_on_rule)
  have P37 : "Line_on (Li B C) C" by (simp add:Line_on_rule)
  from assms P2 P4 P36 P37 have P38 : "Eq (Geos (Lin (Li B C)) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_unique)
  from P33 have P39 : "Line_on_Seg (Li A D) (Se B C)  Bet_Point (Se B C) A2" by simp
  then have P40 : "Line_on_Seg (Li A D) (Se B C)  Line_on (Li B C) A2" by (simp add:Line_Bet_on)
  from P38 P40 have P41 : "Line_on_Seg (Li A D) (Se B C)  Line_on (Li A C) A2" by (simp add:Line_on_trans)
  from P1 P16 P33 P35 P41 have P42 : "Line_on_Seg (Li A D) (Se B C)  Eq (Geos (Poi A2) add Emp) (Geos (Poi A) add Emp)" by (simp add:Line_unique_Point)
  from P39 P42 have P43 : "Line_on_Seg (Li A D) (Se B C)  Bet_Point (Se B C) A" by (simp add:Point_Eq)
  from assms have P44 : "¬ Bet_Point (Se B C) A" by (blast intro:Bet_rev)
  from P43 P44 have P45 : "¬ Line_on_Seg (Li A D) (Se B C)" by blast
  from P32 P45 have "Line_on_Seg (Li A D) (Se G C)  ¬ Line_on_Seg (Li A D) (Se B C)" by blast
  thus "p. Line_on (Li A D) p  Bet_Point (Se G C) p" by (simp add:Line_on_Seg_rule)
qed

lemma(in Order_Rule) Bet_case_lemma2 : 
  assumes 
    "Line_on l1 A"
    "Line_on l1 B"
    "Line_on l1 C"
    "¬ Bet_Point (Se B A) C"
    "¬ Bet_Point (Se C B) A"
    "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi B) add Emp)"
    "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi C) add Emp)"
    "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi A) add Emp)"
  shows "Bet_Point (Se A C) B"
proof -
  have P1 : "Line_on (Li A C) A" by (simp add:Line_on_rule)
  have P2 : "Line_on (Li A C) C" by (simp add:Line_on_rule)
  from assms P1 P2 have P3 : "Eq (Geos (Lin l1) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_unique)
  from assms P3 have P4 : "Line_on (Li A C) B" by (simp add:Line_on_trans)
  have "p q r. ¬ Line_on (Li A C) p  ¬ Line_on (Li A C) q  ¬ Line_on (Li A C) r
     ¬ Eq (Geos (Poi p) add Emp) (Geos (Poi q) add Emp)  ¬ Eq (Geos (Poi q) add Emp) (Geos (Poi r) add Emp)
     ¬ Eq (Geos (Poi r) add Emp) (Geos (Poi p) add Emp)" by (blast intro:Line_not_on_exist)
  then obtain D :: Point where P5 : "¬ Line_on (Li A C) D" by blast
  from P4 have P6 : "Eq (Geos (Poi B) add Emp) (Geos (Poi D) add Emp)  Line_on (Li A C) D" by (simp add:Point_Eq)
  from P5 P6 have P7 : "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi D) add Emp)" by blast
  have P8 : "Line_on (Li B D) B" by (simp add:Line_on_rule)
  have P9 : "Line_on (Li B D) D" by (simp add:Line_on_rule)
  from P7 P8 P9 have "p. Bet_Point (Se B p) D  Line_on (Li B D) p" by (simp add:Bet_extension)
  then obtain G :: Point where P10 : "Bet_Point (Se B G) D" by blast
  from assms P5 P10 have "p. Line_on (Li A D) p  Bet_Point (Se G C) p" by (simp add:Bet_case_lemma1)
  then obtain E :: Point where P11 : "Line_on (Li A D) E  Bet_Point (Se G C) E" by blast
  from assms have P12 : "¬ Bet_Point (Se B C) A" by (blast intro:Bet_rev)
  from assms have P13 : "¬ Bet_Point (Se A B) C" by (blast intro:Bet_rev)
  from assms have P14 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi C) add Emp)" by (blast intro:Eq_rev)
  from assms have P15 : "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi A) add Emp)" by (blast intro:Eq_rev)
  from assms have P16 : "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi B) add Emp)" by (blast intro:Eq_rev)
  from P14 have P17 : "Eq (Geos (Lin (Li A C)) add Emp) (Geos (Lin (Li C A)) add Emp)" by (simp add:Line_rev)
  from P5 P17 have P18 : "¬ Line_on (Li C A) D" by (simp add:Line_not_on_trans)
  from assms P10 P12 P13 P14 P15 P16 P18 have "p. Line_on (Li C D) p  Bet_Point (Se G A) p" by (simp add:Bet_case_lemma1)
  then obtain F :: Point where P19 : "Line_on (Li C D) F  Bet_Point (Se G A) F" by blast
  have P20 : "Line_on (Li B G) B" by (simp add:Line_on_rule)
  have P21 : "Line_on (Li B G) G" by (simp add:Line_on_rule)
  from P10 have P22 : "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi G) add Emp)" by (simp add:Bet_Point_def)
  from P4 P20 P21 P22 have P23 : "Line_on (Li A C) G  Eq (Geos (Lin (Li B G)) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_unique)
  from P10 have P24 : "Line_on (Li B G) D" by (simp add:Line_Bet_on)
  from P23 P24 have P25 : "Line_on (Li A C) G  Line_on (Li A C) D" by (simp add:Line_on_trans)
  from P5 P25 have P26 : "¬ Line_on (Li A C) G" by blast
  from P11 have P27 : "Bet_Point (Se C G) E" by (blast intro:Bet_rev)
  have P28 : "Line_on (Li C G) C" by (simp add:Line_on_rule)
  from assms P1 P2 P28 have P29 : "Line_on (Li C G) A  Eq (Geos (Lin (Li C G)) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_unique)
  have P30 : "Line_on (Li C G) G" by (simp add:Line_on_rule)
  from P29 P30 have P31 : "Line_on (Li C G) A  Line_on (Li A C) G" by (simp add:Line_on_trans)
  from P26 P31 have P32 : "¬ Line_on (Li C G) A" by blast
  from P27 P32 have "¬ Eq (Geos (Lin (Li A E)) add Emp) (Geos (Lin (Li A G)) add Emp)" by (simp add:Line_Bet_not_Eq)
  then have P33 : "¬ Eq (Geos (Lin (Li A G)) add Emp) (Geos (Lin (Li A E)) add Emp)" by (blast intro:Eq_rev)
  from P19 have P34 : "Bet_Point (Se A G) F" by (blast intro:Bet_rev)
  then have P35 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi G) add Emp)" by (simp add:Bet_Point_def)
  from P27 have P36 : "Line_on (Li C G) E" by (simp add:Line_Bet_on)
  then have P37 : "Eq (Geos (Poi E) add Emp) (Geos (Poi A) add Emp)  Line_on (Li C G) A" by (simp add:Point_Eq)
  from P32 P37 have P38 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi E) add Emp)" by (blast intro:Eq_rev)
  from P33 P35 P38 have P39 : "¬ Line_on (Li A G) E" by (simp add:Line_not_Eq_on)
  from P14 P26 P35 have P40 : "¬ Line_on (Li A G) C" by (blast intro:Line_on_rev)
  from P34 P40 have P41 : "¬ Eq (Geos (Lin (Li C F)) add Emp) (Geos (Lin (Li C G)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from P34 have P42 : "Line_on (Li A G) F" by (simp add:Line_Bet_on)
  then have P43 : "Eq (Geos (Poi F) add Emp) (Geos (Poi C) add Emp)  Line_on (Li A G) C" by (simp add:Point_Eq)
  from P40 P43 have P44 : "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi F) add Emp)" by (blast intro:Eq_rev)
  from P27 have P45 : "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi G) add Emp)" by (simp add:Bet_Point_def)
  from P41 P44 P45 have P46 : "¬ Line_on (Li C F) G" by (simp add:Line_not_Eq_on)
  from P35 have P47 : "Eq (Geos (Lin (Li A G)) add Emp) (Geos (Lin (Li G A)) add Emp)" by (simp add:Line_rev)
  from P40 P47 have P48 : "¬ Line_on (Li G A) C" by (simp add:Line_not_on_trans)
  from P19 have P49 : "Bet_Point (Se G A) F" by simp
  from P48 P49 have P50 : "¬ Eq (Geos (Lin (Li C F)) add Emp) (Geos (Lin (Li C A)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from assms P44 P50 have P51 : "¬ Line_on (Li C F) A" by (simp add:Line_not_Eq_on)
  have P52 : "Line_on (Li C F) C" by (simp add:Line_on_rule)
  from P27 have P53 : "¬ Eq (Geos (Poi E) add Emp) (Geos (Poi C) add Emp)" by (simp add:Bet_Point_def)
  from P28 P36 P52 P53 have P54 : "Line_on (Li C F) E  Eq (Geos (Lin (Li C G)) add Emp) (Geos (Lin (Li C F)) add Emp)" by (simp add:Line_unique)
  from P30 P54 have P55 : "Line_on (Li C F) E  Line_on (Li C F) G" by (simp add:Line_on_trans)
  from P46 P55 have P56 : "¬ Line_on (Li C F) E" by blast
  have P57 : "Line_on (Li C F) F" by (simp add:Line_on_rule)
  from P34 P39 P46 P51 P56 P57 have P58 : "Line_on_Seg (Li C F) (Se A E)  ¬ Line_on_Seg (Li C F) (Se G E)
     Line_on_Seg (Li C F) (Se G E)  ¬ Line_on_Seg (Li C F) (Se A E)" by (simp add:Pachets_axiom)
  have "Line_on_Seg (Li C F) (Se G E)  p. Line_on (Li C F) p  Bet_Point (Se G E) p" by (simp add:Line_on_Seg_rule)
  then obtain D2 :: Point where P59 : "Line_on_Seg (Li C F) (Se G E)  Line_on (Li C F) D2  Bet_Point (Se G E) D2" by blast
  then have P60 : "Line_on_Seg (Li C F) (Se G E)  Bet_Point (Se G E) D2" by simp
  then have P61 : "Line_on_Seg (Li C F) (Se G E)  Line_on (Li G E) D2" by (simp add:Line_Bet_on)
  have P62 : "Line_on (Li G E) G" by (simp add:Line_on_rule)
  have P63 : "Line_on (Li G E) E" by (simp add:Line_on_rule)
  from P27 have P64 : "¬ Eq (Geos (Poi G) add Emp) (Geos (Poi E) add Emp)" by (simp add:Bet_Point_def)
  from P27 have P66 : "Line_on (Li G E) C" by (simp add:Line_Bet_on)
  from P59 have P67 : "Line_on_Seg (Li C F) (Se G E)  Line_on (Li C F) D2" by simp
  from P60 have P68 : "Line_on_Seg (Li C F) (Se G E)  Eq (Geos (Poi D2) add Emp) (Geos (Poi C) add Emp)  
    Bet_Point (Se G E) C" by (simp add:Point_Eq)
  from P27 have "Inv (Bet_Point (Se G E) C)  Inv (Bet_Point (Se E C) G)" by (simp add:Bet_iff)
  then have P69 : "¬ Bet_Point (Se G E) C  ¬ Bet_Point (Se E C) G" by (simp add:Inv_def)
  from P68 P69 have P70 : "Line_on_Seg (Li C F) (Se G E)  ¬ Eq (Geos (Poi D2) add Emp) (Geos (Poi C) add Emp)" by blast
  from P52 P61 P66 P67 P70 have P71 : "Line_on_Seg (Li C F) (Se G E)  Eq (Geos (Lin (Li G E)) add Emp) (Geos (Lin (Li C F)) add Emp)" by (simp add:Line_unique)
  from P63 P71 have P72 : "Line_on_Seg (Li C F) (Se G E)  Line_on (Li C F) E" by (simp add:Line_on_trans)
  from P56 P72 have P73 : "¬ Line_on_Seg (Li C F) (Se G E)" by blast
  from P58 P73 have "Line_on_Seg (Li C F) (Se A E)  ¬ Line_on_Seg (Li C F) (Se G E)" by blast
  then have "p. Line_on (Li C F) p  Bet_Point (Se A E) p" by (simp add:Line_on_Seg_rule)
  then obtain D3 :: Point where P74 : "Line_on (Li C F) D3  Bet_Point (Se A E) D3" by blast
  then have P75 : "Line_on (Li C F) D3" by simp
  from P74 have P76 : "Bet_Point (Se A E) D3" by simp
  then have P77 : "Line_on (Li A E) D3" by (simp add:Line_Bet_on)
  from P19 have P78 : "Line_on (Li C D) F" by simp
  from P2 have P79 : "Eq (Geos (Poi C) add Emp) (Geos (Poi D) add Emp)  Line_on (Li A C) D" by (simp add:Point_Eq)
  from P5 P79 have P80 : "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi D) add Emp)" by blast
  from P44 P78 P80 have P81 : "Line_on (Li C F) D" by (simp add:Line_on_rev)
  from P11 have P82 : "Line_on (Li A D) E" by simp
  from P1 have P83 : "Eq (Geos (Poi A) add Emp) (Geos (Poi D) add Emp)  Line_on (Li A C) D" by (simp add:Point_Eq)
  from P5 P83 have P84 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi D) add Emp)" by blast
  from P38 P82 P84 have P85 : "Line_on (Li A E) D" by (simp add:Line_on_rev)
  have P86 : "Line_on (Li A E) E" by (simp add:Line_on_rule)
  then have P87 : "Eq (Geos (Lin (Li A E)) add Emp) (Geos (Lin (Li C F)) add Emp)  Line_on (Li C F) E" by (simp add:Line_on_trans)
  from P56 P87 have P88 : "¬ Eq (Geos (Lin (Li A E)) add Emp) (Geos (Lin (Li C F)) add Emp)" by blast
  from P75 P77 P81 P85 P88 have P89 : "Eq (Geos (Poi D3) add Emp) (Geos (Poi D) add Emp)" by (simp add:Line_unique_Point)
  from P76 P89 have P90 : "Bet_Point (Se A E) D" by (simp add:Point_Eq)
  have P91 : "Line_on (Li A E) A" by (simp add:Line_on_rule)
  from assms P1 P2 P91 have P92 : "Line_on (Li A E) C  Eq (Geos (Lin (Li A E)) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_unique)
  from P85 P92 have P93 : "Line_on (Li A E) C  Line_on (Li A C) D" by (simp add:Line_on_trans)
  from P5 P93 have P94 : "¬ Line_on (Li A E) C" by blast
  from assms P1 P4 P20 have P95 : "Line_on (Li B G) A  Eq (Geos (Lin (Li B G)) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_unique)
  from P24 P95 have P96 : "Line_on (Li B G) A  Line_on (Li A C) D" by (simp add:Line_on_trans)
  from P5 P96 have P97 : "¬ Line_on (Li B G) A" by blast
  from assms P2 P4 P20 have P98 : "Line_on (Li B G) C  Eq (Geos (Lin (Li B G)) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_unique)
  from P24 P98 have P99 : "Line_on (Li B G) C  Line_on (Li A C) D" by (simp add:Line_on_trans)
  from P5 P99 have P100 : "¬ Line_on (Li B G) C" by blast
  from P21 P62 P63 P64 have P101 : "Line_on (Li B G) E  Eq (Geos (Lin (Li G E)) add Emp) (Geos (Lin (Li B G)) add Emp)" by (simp add:Line_unique)
  from P66 P101 have P102 : "Line_on (Li B G) E  Line_on (Li B G) C" by (simp add:Line_on_trans)
  from P100 P102 have P103 : "¬ Line_on (Li B G) E" by blast
  from P24 P90 P94 P97 P100 P103 have P104 : "Line_on_Seg (Li B G) (Se A C)  ¬ Line_on_Seg (Li B G) (Se E C)
     Line_on_Seg (Li B G) (Se E C)  ¬ Line_on_Seg (Li B G) (Se A C)" by (simp add:Pachets_axiom)
  have "Line_on_Seg (Li B G) (Se E C)  p. Line_on (Li B G) p  Bet_Point (Se E C) p" by (simp add:Line_on_Seg_rule)
  then obtain B2 :: Point where P105 : "Line_on_Seg (Li B G) (Se E C)  Line_on (Li B G) B2  Bet_Point (Se E C) B2" by blast
  then have P106 : "Line_on_Seg (Li B G) (Se E C)  Bet_Point (Se E C) B2" by simp
  then have P107 : "Line_on_Seg (Li B G) (Se E C)  Line_on (Li E C) B2" by (simp add:Line_Bet_on)
  from P105 have P108 : "Line_on_Seg (Li B G) (Se E C)  Line_on (Li B G) B2" by simp
  have P109 : "Line_on (Li E C) E" by (simp add:Line_on_rule)
  have P110 : "Line_on (Li E C) C" by (simp add:Line_on_rule)
  from P28 P36 P53 P109 P110 have P111 : "Eq (Geos (Lin (Li C G)) add Emp) (Geos (Lin (Li E C)) add Emp)" by (simp add:Line_unique)
  from P30 P111 have P112 : "Line_on (Li E C) G" by (simp add:Line_on_trans)
  from P106 have P113 : "Line_on_Seg (Li B G) (Se E C)  Eq (Geos (Poi B2) add Emp) (Geos (Poi G) add Emp) 
    Bet_Point (Se E C) G" by (simp add:Point_Eq)
  from P69 P113 have P114 : "Line_on_Seg (Li B G) (Se E C)  ¬ Eq (Geos (Poi B2) add Emp) (Geos (Poi G) add Emp)" by blast
  from P21 P107 P108 P112 P114 have P115 : "Line_on_Seg (Li B G) (Se E C)  Eq (Geos (Lin (Li E C)) add Emp) (Geos (Lin (Li B G)) add Emp)" by (simp add:Line_unique)
  from P109 P115 have P116 : "Line_on_Seg (Li B G) (Se E C)  Line_on (Li B G) E" by (simp add:Line_on_trans)
  from P103 P116 have P117 : "¬ Line_on_Seg (Li B G) (Se E C)" by blast
  from P104 P117 have "Line_on_Seg (Li B G) (Se A C)" by blast
  then have "p. Line_on (Li B G) p  Bet_Point (Se A C) p" by (simp add:Line_on_Seg_rule)
  then obtain B3 :: Point where P118 : "Line_on (Li B G) B3  Bet_Point (Se A C) B3" by blast
  from P24 have P119 : "Eq (Geos (Lin (Li B G)) add Emp) (Geos (Lin (Li A C)) add Emp)  Line_on (Li A C) D" by (simp add:Line_on_trans)
  from P5 P119 have P120 : "¬ Eq (Geos (Lin (Li B G)) add Emp) (Geos (Lin (Li A C)) add Emp)" by blast
  from P118 have P121 : "Line_on (Li B G) B3" by simp
  from P118 have P122 : "Bet_Point (Se A C) B3" by simp
  then have P123 : "Line_on (Li A C) B3" by (simp add:Line_Bet_on)
  from P4 P20 P120 P121 P123 have P124 : "Eq (Geos (Poi B3) add Emp) (Geos (Poi B) add Emp)" by (simp add:Line_unique_Point)
  from P122 P124 show "Bet_Point (Se A C) B" by (simp add:Point_Eq)
qed

text‹Theorem4›

lemma(in Order_Rule) Bet_case : 
  assumes 
    "Line_on l1 A"
    "Line_on l1 B"
    "Line_on l1 C"
    "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi B) add Emp)"
    "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi C) add Emp)"
    "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi A) add Emp)"
  shows "Bet_Point (Se A C) B  Bet_Point (Se C B) A  Bet_Point (Se B A) C"
proof -
  from assms have P1 : "¬ Bet_Point (Se B A) C  ¬ Bet_Point (Se C B) A  Bet_Point (Se A C) B" by (simp add:Bet_case_lemma2)
  from assms have P2 : "¬ Bet_Point (Se C B) A  ¬ Bet_Point (Se A C) B  Bet_Point (Se B A) C" by (simp add:Bet_case_lemma2)
  from assms have P3 : "¬ Bet_Point (Se A C) B  ¬ Bet_Point (Se B A) C  Bet_Point (Se C B) A" by (simp add:Bet_case_lemma2)
  from P1 P2 P3 show "Bet_Point (Se A C) B  Bet_Point (Se C B) A  Bet_Point (Se B A) C" by blast
qed

lemma(in Order_Rule) Bet_case_fact : 
  assumes 
    "Bet_Point (Se A C) B  Bet_Point (Se C B) A  Bet_Point (Se B A) C"
  shows 
    "Bet_Point (Se A C) B  ¬ Bet_Point (Se C B) A  ¬ Bet_Point (Se B A) C
     ¬ Bet_Point (Se A C) B  Bet_Point (Se C B) A  ¬ Bet_Point (Se B A) C
     ¬ Bet_Point (Se A C) B  ¬ Bet_Point (Se C B) A  Bet_Point (Se B A) C"
proof -
  have "Bet_Point (Se A C) B  Inv (Bet_Point (Se C B) A)  Inv (Bet_Point (Se B A) C)" by (simp add:Bet_iff)
  then have P1 : "Bet_Point (Se A C) B  ¬ Bet_Point (Se C B) A  ¬ Bet_Point (Se B A) C" by (simp add:Inv_def)
  have "Bet_Point (Se C B) A  Inv (Bet_Point (Se A C) B)  Inv (Bet_Point (Se B A) C)" by (simp add:Bet_iff)
  then have P2 : "Bet_Point (Se C B) A  ¬ Bet_Point (Se A C) B  ¬ Bet_Point (Se B A) C" by (simp add:Inv_def)
  have "Bet_Point (Se B A) C  Inv (Bet_Point (Se A C) B)  Inv (Bet_Point (Se C B) A)" by (simp add:Bet_iff)
  then have P3 : "Bet_Point (Se B A) C  ¬ Bet_Point (Se A C) B  ¬ Bet_Point (Se C B) A" by (simp add:Inv_def)
  from assms P1 P2 P3 show "Bet_Point (Se A C) B  ¬ Bet_Point (Se C B) A  ¬ Bet_Point (Se B A) C
     ¬ Bet_Point (Se A C) B  Bet_Point (Se C B) A  ¬ Bet_Point (Se B A) C
     ¬ Bet_Point (Se A C) B  ¬ Bet_Point (Se C B) A  Bet_Point (Se B A) C" by blast
qed

lemma(in Order_Rule) Bet_swap_lemma_1 : 
  assumes
    "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi D) add Emp)"
    "Bet_Point (Se A C) B"
    "Bet_Point (Se B D) C"
  shows "Line_on (Li A D) B  Line_on (Li A D) C"
proof -
  from assms have P1 : "Line_on (Li A B) C" by (simp add:Line_Bet_on)
  have P2 : "Line_on (Li A B) B" by (simp add:Line_on_rule)
  have P3 : "Line_on (Li B C) C" by (simp add:Line_on_rule)
  have P4 : "Line_on (Li B C) B" by (simp add:Line_on_rule)
  from assms have P5 : "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi B) add Emp)" by (simp add:Bet_Point_def)
  from P1 P2 P3 P4 P5 have P6 : "Eq (Geos (Lin (Li B C)) add Emp) (Geos (Lin (Li A B)) add Emp)" by (simp add:Line_unique)
  from assms have P7 : "Line_on (Li B C) D" by (simp add:Line_Bet_on)
  from P6 P7 have P8 : "Line_on (Li A B) D" by (simp add:Line_on_trans)
  from assms have "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi A) add Emp)" by (simp add:Bet_Point_def)
  then have P9 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi B) add Emp)" by (blast intro:Eq_rev)
  from assms P8 P9 have P10 : "Line_on (Li A D) B" by (simp add:Line_on_rev)
  have P11 : "Line_on (Li A D) D" by (simp add:Line_on_rule)
  from assms have P12 : "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi D) add Emp)" by (simp add:Bet_Point_def)
  from P4 P7 P10 P11 P12 have P13 : "Eq (Geos (Lin (Li B C)) add Emp) (Geos (Lin (Li A D)) add Emp)" by (simp add:Line_unique)
  from P3 P13 have P14 : "Line_on (Li A D) C" by (simp add:Line_on_trans)
  from P10 P14 show "Line_on (Li A D) B  Line_on (Li A D) C" by simp
qed

lemma(in Order_Rule) Bet_swap_lemma_2 : 
  assumes
    "Bet_Point (Se p1 p3) p2"
    "¬ Line_on (Li p1 p3) p4"
    "¬ Line_on (Li p2 p5) p3"
    "¬ Line_on (Li p2 p5) p1"
    "¬ Line_on (Li p2 p5) p4"
    "Bet_Point (Se p3 p5) p4"
  shows "p. Line_on (Li p2 p5) p  Bet_Point (Se p1 p4) p" 
proof -
  have P1 : "Line_on (Li p2 p5) p2" by (simp add:Line_on_rule)
  from assms P1 have P2 : "Line_on_Seg (Li p2 p5) (Se p1 p4)  ¬ Line_on_Seg (Li p2 p5) (Se p3 p4)  Line_on_Seg (Li p2 p5) (Se p3 p4)  ¬ Line_on_Seg (Li p2 p5) (Se p1 p4)" by (simp add:Pachets_axiom)
  then have "Line_on_Seg (Li p2 p5) (Se p3 p4)  p. Line_on (Li p2 p5) p  Bet_Point (Se p3 p4) p" by (simp add:Line_on_Seg_rule)
  then obtain p6 :: Point where P3 : "Line_on_Seg (Li p2 p5) (Se p3 p4)  Line_on (Li p2 p5) p6  Bet_Point (Se p3 p4) p6" by blast
  from assms have "¬ Eq (Geos (Poi p4) add Emp) (Geos (Poi p3) add Emp)" by (simp add:Bet_Point_def)
  then have P4 : "¬ Eq (Geos (Poi p3) add Emp) (Geos (Poi p4) add Emp)" by (blast intro:Eq_rev)
  from P3 have P5 : "Line_on_Seg (Li p2 p5) (Se p3 p4)  Bet_Point (Se p3 p4) p6" by simp
  from P3 have P6 : "Line_on_Seg (Li p2 p5) (Se p3 p4)  Line_on (Li p3 p6) p4" by (simp add:Line_Bet_on)
  from assms have P7 : "Line_on (Li p3 p5) p4" by (simp add:Line_Bet_on)    
  have P8 : "Line_on (Li p3 p6) p3" by (simp add:Line_on_rule)
  have P9 : "Line_on (Li p3 p5) p3" by (simp add:Line_on_rule)
  from P4 P6 P7 P8 P9 have P10 : "Line_on_Seg (Li p2 p5) (Se p3 p4)  
    Eq (Geos (Lin (Li p3 p5)) add Emp) (Geos (Lin (Li p3 p6)) add Emp)" by (simp add:Line_unique)
  have P11 : "Line_on (Li p3 p5) p5" by (simp add:Line_on_rule)
  from P10 P11 have P12 : "Line_on_Seg (Li p2 p5) (Se p3 p4)  Line_on (Li p3 p6) p5" by (simp add:Line_on_trans)
  have P13 : "Line_on (Li p2 p5) p5" by (simp add:Line_on_rule)
  have P14 : "Line_on (Li p3 p6) p6" by (simp add:Line_on_rule)
  from P5 have P15 : "Line_on_Seg (Li p2 p5) (Se p3 p4)  Eq (Geos (Poi p6) add Emp) (Geos (Poi p5) add Emp) 
    Bet_Point (Se p3 p4) p5" by (simp add:Point_Eq)
  from assms have "Inv (Bet_Point (Se p5 p4) p3)  Inv (Bet_Point (Se p4 p3) p5)" by (simp add:Bet_iff)
  then have "¬ Bet_Point (Se p4 p3) p5" by (simp add:Inv_def)
  then have P16 : "¬ Bet_Point (Se p3 p4) p5" by (blast intro:Bet_rev)
  from P15 P16 have P17 : "Line_on_Seg (Li p2 p5) (Se p3 p4)  ¬ Eq (Geos (Poi p6) add Emp) (Geos (Poi p5) add Emp)" by blast
  from P3 P12 P13 P14 P17 have P18 : "Line_on_Seg (Li p2 p5) (Se p3 p4)  
    Eq (Geos (Lin (Li p3 p6)) add Emp) (Geos (Lin (Li p2 p5)) add Emp)" by (simp add:Line_unique)
  from P8 P18 have P19 : "Line_on_Seg (Li p2 p5) (Se p3 p4)  Line_on (Li p2 p5) p3" by (simp add:Line_on_trans)
  from assms P19 have P20 : "¬ Line_on_Seg (Li p2 p5) (Se p3 p4)" by blast
  from P2 P3 P20 have "Line_on_Seg (Li p2 p5) (Se p1 p4)" by blast
  thus "p. Line_on (Li p2 p5) p  Bet_Point (Se p1 p4) p" by (simp add:Line_on_Seg_rule)
qed

lemma(in Order_Rule) Bet_swap_lemma_3 : 
  assumes
    "Bet_Point (Se p1 p3) p2"
    "Bet_Point (Se p3 p5) p4"
    "¬ Line_on (Li p1 p3) p5"
  shows "p. Bet_Point (Se p1 p4) p  Bet_Point (Se p5 p2) p" 
proof -
  from assms have P1 : "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp)" by (simp add:Bet_Point_def)
  then have P2 : "Eq (Geos (Lin (Li p1 p3)) add Emp) (Geos (Lin (Li p3 p1)) add Emp)" by (simp add:Line_rev)
  from assms P2 have P3 : "¬ Line_on (Li p3 p1) p5" by (simp add:Line_not_on_trans)
  from assms have P4 : "¬ Eq (Geos (Poi p3) add Emp) (Geos (Poi p5) add Emp)" by (simp add:Bet_Point_def)
  from P1 have P5 : "¬ Eq (Geos (Poi p3) add Emp) (Geos (Poi p1) add Emp)" by (blast intro:Eq_rev)
  from P3 P4 P5 have P6 : "¬ Line_on (Li p3 p5) p1" by (blast intro:Line_on_rev)
  from assms have P7 : "Bet_Point (Se p5 p3) p4" by (simp add:Bet_rev)
  from P4 have P8 : "Eq (Geos (Lin (Li p3 p5)) add Emp) (Geos (Lin (Li p5 p3)) add Emp)" by (simp add:Line_rev)
  from P8 P6 have P9 : "¬ Line_on (Li p5 p3) p1" by (simp add:Line_not_on_trans)
  from P7 P9 have P10 : "¬ Eq (Geos (Lin (Li p1 p4)) add Emp) (Geos (Lin (Li p1 p3)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from assms have "Line_on (Li p3 p5) p4" by (simp add:Line_Bet_on)
  then have P11 : "Eq (Geos (Poi p4) add Emp) (Geos (Poi p1) add Emp)  Line_on (Li p3 p5) p1" by (simp add:Point_Eq)
  from P6 P11 have "¬ Eq (Geos (Poi p4) add Emp) (Geos (Poi p1) add Emp)" by blast
  then have P12 : "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p4) add Emp)" by (blast intro:Eq_rev)
  from P1 P10 P12 have P13 : "¬ Line_on (Li p1 p4) p3" by (simp add:Line_not_Eq_on)
  from P1 P12 P13 have P14 : "¬ Line_on (Li p1 p3) p4" by (blast intro:Line_on_rev) 
  from assms have P15 : "¬ Eq (Geos (Lin (Li p5 p2)) add Emp) (Geos (Lin (Li p5 p3)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from assms have P16 : "Line_on (Li p1 p3) p2" by (simp add:Line_Bet_on)
  then have P17 : "Eq (Geos (Poi p2) add Emp) (Geos (Poi p5) add Emp)  Line_on (Li p1 p3) p5" by (simp add:Point_Eq)
  from assms P17 have "¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p5) add Emp)" by blast
  then have P18 : "¬ Eq (Geos (Poi p5) add Emp) (Geos (Poi p2) add Emp)" by (blast intro:Eq_rev)
  from P4 have P19 : "¬ Eq (Geos (Poi p5) add Emp) (Geos (Poi p3) add Emp)" by (blast intro:Eq_rev)
  from P15 P18 P19 have P20 : "¬ Line_on (Li p5 p2) p3" by (simp add:Line_not_Eq_on)
  from P18 have P21 : "Eq (Geos (Lin (Li p5 p2)) add Emp) (Geos (Lin (Li p2 p5)) add Emp)" by (simp add:Line_rev)
  from P20 P21 have P22 : "¬ Line_on (Li p2 p5) p3" by (simp add:Line_not_on_trans) 
  from assms have P23 :"Bet_Point (Se p3 p1) p2" by (blast intro:Bet_rev)
  from P3 P23 have P24 : "¬ Eq (Geos (Lin (Li p5 p2)) add Emp) (Geos (Lin (Li p5 p1)) add Emp)" by (simp add:Line_Bet_not_Eq)
  have "Line_on (Li p3 p1) p1" by (simp add:Line_on_rule)
  then have P25 : "Eq (Geos (Poi p1) add Emp) (Geos (Poi p5) add Emp)  Line_on (Li p3 p1) p5" by (simp add:Point_Eq)
  from P3 P25 have P26 : "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p5) add Emp)" by blast
  then have P27 : "¬ Eq (Geos (Poi p5) add Emp) (Geos (Poi p1) add Emp)" by (blast intro:Eq_rev)
  from P18 P24 P27 have P28 : "¬ Line_on (Li p5 p2) p1" by (simp add:Line_not_Eq_on)
  from P21 P28 have P29 : "¬ Line_on (Li p2 p5) p1" by (simp add:Line_not_on_trans) 
  from assms have P31 : "Line_on (Li p3 p4) p5" by (simp add:Line_Bet_on)
  have P32 : "Line_on (Li p3 p4) p4" by (simp add:Line_on_rule)
  have P33 : "Line_on (Li p2 p5) p5" by (simp add:Line_on_rule)
  from assms have P34 : "¬ Eq (Geos (Poi p5) add Emp) (Geos (Poi p4) add Emp)" by (simp add:Bet_Point_def)
  from P31 P32 P33 P34 have P35 : "Line_on (Li p2 p5) p4  Eq (Geos (Lin (Li p3 p4)) add Emp) (Geos (Lin (Li p2 p5)) add Emp)" by (simp add:Line_unique)
  have P36 : "Line_on (Li p3 p4) p3" by (simp add:Line_on_rule)
  from P35 P36 have P37 : "Line_on (Li p2 p5) p4  Line_on (Li p2 p5) p3" by (simp add:Line_on_trans)
  from P22 P37 have P38 : "¬ Line_on (Li p2 p5) p4" by blast
  from assms P14 P22 P29 P38 have "p. Line_on (Li p2 p5) p  Bet_Point (Se p1 p4) p" by (simp add:Bet_swap_lemma_2)
  then obtain p6 :: Point where P39 : "Line_on (Li p2 p5) p6  Bet_Point (Se p1 p4) p6" by blast
  from P12 have P40 : "Eq (Geos (Lin (Li p1 p4)) add Emp) (Geos (Lin (Li p4 p1)) add Emp)" by (simp add:Line_rev)
  from P13 P40 have P41 : "¬ Line_on (Li p4 p1) p3" by (simp add:Line_not_on_trans) 
  from assms P6 have P42 : "¬ Eq (Geos (Lin (Li p1 p4)) add Emp) (Geos (Lin (Li p1 p5)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from P12 P26 P42 have P43 : "¬ Line_on (Li p1 p4) p5" by (simp add:Line_not_Eq_on)
  from P40 P43 have P44 : "¬ Line_on (Li p4 p1) p5" by (simp add:Line_not_on_trans)
  from assms have "¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p1) add Emp)" by (simp add:Bet_Point_def)
  then have P45 : "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)" by (blast intro:Eq_rev)
  from P1 P16 P45 have P47 : "Line_on (Li p1 p2) p3" by (simp add:Line_on_rev)
  from P47 have P48 : "Eq (Geos (Lin (Li p1 p2)) add Emp) (Geos (Lin (Li p1 p4)) add Emp)  Line_on (Li p1 p4) p3" by (simp add:Line_on_trans)
  from P13 P48 have P49 : "¬ Eq (Geos (Lin (Li p1 p2)) add Emp) (Geos (Lin (Li p1 p4)) add Emp)" by blast
  from P12 P45 P49 have P50 : "¬ Line_on (Li p1 p2) p4" by (simp add:Line_not_Eq_on)
  from P12 P45 P50 have P51 : "¬ Line_on (Li p1 p4) p2" by (blast intro:Line_on_rev)
  from P40 P51 have P52 : "¬ Line_on (Li p4 p1) p2" by (simp add:Line_not_on_trans) 
  from P18 P19 P20 have P53 : "¬ Line_on (Li p5 p3) p2" by (blast intro:Line_on_rev)
  from P7 P23 P41 P44 P52 P53 have "p. Line_on (Li p4 p1) p  Bet_Point (Se p5 p2) p" by (simp add:Bet_swap_lemma_2)
  then obtain p7 :: Point where P54 : "Line_on (Li p4 p1) p7  Bet_Point (Se p5 p2) p7" by blast
  from P33 P44 have P55 : "¬ Eq (Geos (Lin (Li p4 p1)) add Emp) (Geos (Lin (Li p2 p5)) add Emp)" by (simp add:Line_not_on_Eq)
  from P39 have P56 : "Line_on (Li p4 p1) p6" by (simp add:Line_Bet_on)
  from P54 have P57 : "Line_on (Li p2 p5) p7" by (simp add:Line_Bet_on)
  from P39 P54 P55 P56 P57 have P58 : "Eq (Geos (Poi p7) add Emp) (Geos (Poi p6) add Emp)" by (blast intro:Line_unique_Point)
  from P54 have P59 : "Bet_Point (Se p5 p2) p7" by simp
  from P58 P59 have P60 : "Bet_Point (Se p5 p2) p6" by (simp add:Point_Eq)
  from P39 P60 show "p. Bet_Point (Se p1 p4) p  Bet_Point (Se p5 p2) p" by blast
qed

lemma(in Order_Rule) Bet_swap_lemma_4 : 
  assumes 
    "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi D) add Emp)"
    "Bet_Point (Se A E) G"
    "Bet_Point (Se D G) H"
    "¬ Line_on (Li A D) E"
  shows "p. Line_on (Li H E) p  Bet_Point (Se D A) p"
proof -
  from assms have P1 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi E) add Emp)" by (simp add:Bet_Point_def)
  from assms P1 have P2 : "¬ Line_on (Li A E) D" by (blast intro:Line_on_rev)
  from P1 have P3 : "Eq (Geos (Lin (Li A E)) add Emp) (Geos (Lin (Li E A)) add Emp)" by (simp add:Line_rev)
  from P2 P3 have P4 : "¬ Line_on (Li E A) D" by (simp add:Line_not_on_trans)
  from assms have P5 : "Bet_Point (Se E A) G" by (simp add:Bet_rev)
  from P4 P5 have P6 : "¬ Eq (Geos (Lin (Li D G)) add Emp) (Geos (Lin (Li D A)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from assms have P7 : "¬ Eq (Geos (Poi D) add Emp) (Geos (Poi G) add Emp)" by (simp add:Bet_Point_def)
  from assms have P8 : "¬ Eq (Geos (Poi D) add Emp) (Geos (Poi A) add Emp)" by (blast intro:Eq_rev)
  from P6 P7 P8 have P9 : "¬ Line_on (Li D G) A" by (simp add:Line_not_Eq_on)
  from assms P2 have P10 : "¬ Eq (Geos (Lin (Li D G)) add Emp) (Geos (Lin (Li D E)) add Emp)" by (simp add:Line_Bet_not_Eq)
  have "Line_on (Li A D) D" by (simp add:Line_on_rule)
  then have P11 : "Eq (Geos (Poi D) add Emp) (Geos (Poi E) add Emp)  Line_on (Li A D) E" by (simp add:Point_Eq)
  from assms P11 have P12 : "¬ Eq (Geos (Poi D) add Emp) (Geos (Poi E) add Emp)" by blast
  from P7 P10 P12 have P13 : "¬ Line_on (Li D G) E" by (simp add:Line_not_Eq_on)
  from assms P13 have P14 : "¬ Eq (Geos (Lin (Li E H)) add Emp) (Geos (Lin (Li E G)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from assms have "Line_on (Li D G) H" by (simp add:Line_Bet_on)
  then have P15 : "Eq (Geos (Poi H) add Emp) (Geos (Poi E) add Emp)  Line_on (Li D G) E" by (simp add:Point_Eq)
  from P13 P15 have P16 : "¬ Eq (Geos (Poi E) add Emp) (Geos (Poi H) add Emp)" by (blast intro:Eq_rev)
  from assms have "Line_on (Li D G) G" by (simp add:Line_on_rule)
  then have P17 : "Eq (Geos (Poi G) add Emp) (Geos (Poi E) add Emp)  Line_on (Li D G) E" by (simp add:Point_Eq)
  from P13 P17 have P18 : "¬ Eq (Geos (Poi E) add Emp) (Geos (Poi G) add Emp)" by (blast intro:Eq_rev)
  from P14 P16 P18 have P19 : "¬ Line_on (Li E H) G" by (simp add:Line_not_Eq_on)
  from P7 have P20 : "Eq (Geos (Lin (Li D G)) add Emp) (Geos (Lin (Li G D)) add Emp)" by (simp add:Line_rev)
  from P13 P20 have P21 : "¬ Line_on (Li G D) E" by (simp add:Line_not_on_trans)
  from assms have P22 : "Bet_Point (Se G D) H" by (simp add:Bet_rev)
  from P21 P22 have P23 : "¬ Eq (Geos (Lin (Li E H)) add Emp) (Geos (Lin (Li E D)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from P12 have P24 : "¬ Eq (Geos (Poi E) add Emp) (Geos (Poi D) add Emp)" by (blast intro:Eq_rev)
  from P16 P23 P24 have P25 : "¬ Line_on (Li E H) D" by (simp add:Line_not_Eq_on)
  from P16 have P26 : "Eq (Geos (Lin (Li E H)) add Emp) (Geos (Lin (Li H E)) add Emp)" by (simp add:Line_rev)
  from P25 P26 have P27 : "¬ Line_on (Li H E) D" by (simp add:Line_not_on_trans)
  have P28 : "Line_on (Li A E) A" by (simp add:Line_on_rule)
  have P29 : "Line_on (Li A E) E" by (simp add:Line_on_rule)
  have P30 : "Line_on (Li E H) E" by (simp add:Line_on_rule)
  from P1 P28 P29 P30 have P31 : "Line_on (Li E H) A  Eq (Geos (Lin (Li A E)) add Emp) (Geos (Lin (Li E H)) add Emp)" by (simp add:Line_unique)
  from assms have P32 : "Line_on (Li A E) G" by (simp add:Line_Bet_on)
  from assms have "¬ Eq (Geos (Poi G) add Emp) (Geos (Poi A) add Emp)" by (simp add:Bet_Point_def)
  then have P33 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi G) add Emp)" by (blast intro:Eq_rev)
  from P31 P32 have P34 : "Line_on (Li E H) A  Line_on (Li E H) G" by (simp add:Line_on_trans)
  from P19 P34 have P35 : "¬ Line_on (Li E H) A" by blast
  from P26 P35 have P36 : "¬ Line_on (Li H E) A" by (simp add:Line_not_on_trans)
  from P26 P19 have P37 : "¬ Line_on (Li H E) G" by (simp add:Line_not_on_trans)
  have P38 : "Line_on (Li H E) H" by (simp add:Line_on_rule)
  from assms P9 P27 P36 P37 P38 have P39 : "Line_on_Seg (Li H E) (Se D A)  ¬ Line_on_Seg (Li H E) (Se G A)  Line_on_Seg (Li H E) (Se G A)  ¬ Line_on_Seg (Li H E) (Se D A)" by (simp add:Pachets_axiom)
  then have "Line_on_Seg (Li H E) (Se G A)  p. Line_on (Li H E) p  Bet_Point (Se G A) p" by (simp add:Line_on_Seg_rule)
  then obtain C2 :: Point where P40 : "Line_on_Seg (Li H E) (Se G A)  Line_on (Li H E) C2  Bet_Point (Se G A) C2" by blast
  from assms have P41 : "Line_on (Li G A) E" by (simp add:Line_Bet_on)
  from P40 have P42 : "Line_on_Seg (Li H E) (Se G A)  Line_on (Li G A) C2" by (simp add:Line_Bet_on)
  have P43 : "Line_on (Li H E) E" by (simp add:Line_on_rule)
  from P40 have "Line_on_Seg (Li H E) (Se G A)  Bet_Point (Se G A) C2" by simp
  then have P44 : "Line_on_Seg (Li H E) (Se G A)  Eq (Geos (Poi C2) add Emp) (Geos (Poi E) add Emp) 
    Bet_Point (Se G A) E" by (simp add:Point_Eq)
  from assms have "Inv (Bet_Point (Se E G) A)  Inv (Bet_Point (Se G A) E)" by (simp add:Bet_iff)
  then have P45 : "¬ Bet_Point (Se G A) E" by (simp add:Inv_def)
  from P44 P45 have P46 : "Line_on_Seg (Li H E) (Se G A)  ¬ Eq (Geos (Poi C2) add Emp) (Geos (Poi E) add Emp)" by blast
  from P40 P41 P42 P43 P46 have P47 : "Line_on_Seg (Li H E) (Se G A)  
    Eq (Geos (Lin (Li G A)) add Emp) (Geos (Lin (Li H E)) add Emp)" by (simp add:Line_unique)
  have P48 : "Line_on (Li G A) G" by (simp add:Line_on_rule)
  from P47 P48 have P49 : "Line_on_Seg (Li H E) (Se G A)  Line_on (Li H E) G" by (simp add:Line_on_trans)
  from P37 P49 have P50 : "¬ Line_on_Seg (Li H E) (Se G A)" by blast
  from P39 P40 P50 have "Line_on_Seg (Li H E) (Se D A)" by blast
  thus "p. Line_on (Li H E) p  Bet_Point (Se D A) p" by (simp add:Line_on_Seg_rule)
qed

lemma(in Order_Rule) Bet_swap_lemma_5 : 
  assumes 
    "Bet_Point (Se A C) B"
    "Bet_Point (Se B D) C"
    "Bet_Point (Se C F) E"
    "¬ Line_on (Li A D) F"
    "¬ Line_on (Li A C) F"
  shows "Bet_Point (Se A D) C"
proof -
  from assms have P1 : "Eq (Geos (Poi A) add Emp) (Geos (Poi D) add Emp)  Bet_Point (Se D C) B" by (simp add:Bet_Point_Eq)
  from assms have "Inv (Bet_Point (Se D C) B)  Inv (Bet_Point (Se C B) D)" by (simp add:Bet_iff)
  then have P2 : "¬ Bet_Point (Se D C) B" by (simp add:Inv_def)
  from P1 P2 have P3 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi D) add Emp)" by blast
  from assms P3 have P4 : "Line_on (Li A D) B  Line_on (Li A D) C" by (simp add:Bet_swap_lemma_1)
  then have P5 : "Line_on (Li A D) C" by simp
  from assms have "p. Bet_Point (Se A E) p  Bet_Point (Se F B) p" by (simp add:Bet_swap_lemma_3)
  then obtain G :: Point where P6 : "Bet_Point (Se A E) G  Bet_Point (Se F B) G" by blast 
  from P3 have P7 : "Eq (Geos (Lin (Li A D)) add Emp) (Geos (Lin (Li D A)) add Emp)" by (simp add:Line_rev)
  from P4 P7 have P8 : "Line_on (Li D A) B" by (blast intro:Line_on_trans)
  from assms P7 have P9 : "¬ Line_on (Li D A) F" by (simp add:Line_not_on_trans)
  have P10 : "Line_on (Li D A) D" by (simp add:Line_on_rule)
  have P11 : "Line_on (Li D B) D" by (simp add:Line_on_rule)
  have P12 : "Line_on (Li D B) B" by (simp add:Line_on_rule)
  from assms have P13 : "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi D) add Emp)" by (simp add:Bet_Point_def)
  from P8 P10 P11 P12 P13 have P14 : "Eq (Geos (Lin (Li D A)) add Emp) (Geos (Lin (Li D B)) add Emp)" by (simp add:Line_unique)
  from P9 P14 have P15 : "¬ Line_on (Li D B) F" by (simp add:Line_not_on_trans) 
  from assms have P16 : "Bet_Point (Se D B) C" by (simp add:Bet_rev)
  from P6 have P17 : "Bet_Point (Se B F) G" by (simp add:Bet_rev)
  from P15 P16 P17 have "p. Bet_Point (Se D G) p  Bet_Point (Se F C) p" by (simp add:Bet_swap_lemma_3)
  then obtain H :: Point where P18 : "Bet_Point (Se D G) H  Bet_Point (Se F C) H" by blast
  from assms have P19 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi C) add Emp)" by (simp add:Bet_Point_def)
  then have P20 : "Eq (Geos (Lin (Li A C)) add Emp) (Geos (Lin (Li C A)) add Emp)" by (simp add:Line_rev)
  from assms P20 have P21 : "¬ Line_on (Li C A) F" by (simp add:Line_not_on_trans)
  from P19 have P22 : "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi A) add Emp)" by (blast intro:Eq_rev)
  from assms have P23 : "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi F) add Emp)" by (simp add:Bet_Point_def)
  from P21 P22 P23 have P24 : "¬ Line_on (Li C F) A" by (blast intro:Line_on_rev)
  from assms have P25 : "Bet_Point (Se F C) E" by (simp add:Bet_rev)
  from P23 have P26 : "Eq (Geos (Lin (Li C F)) add Emp) (Geos (Lin (Li F C)) add Emp)" by (simp add:Line_rev)
  from P24 P26 have P27 : "¬ Line_on (Li F C) A" by (simp add:Line_not_on_trans)
  from P25 P27 have P28 : "¬ Eq (Geos (Lin (Li A E)) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from P25 have "Line_on (Li F C) E" by (simp add:Line_Bet_on)
  then have P29 : "Eq (Geos (Poi E) add Emp) (Geos (Poi A) add Emp)  Line_on (Li F C) A" by (simp add:Point_Eq)
  from P27 P29 have "¬ Eq (Geos (Poi E) add Emp) (Geos (Poi A) add Emp)" by blast
  then have P30 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi E) add Emp)" by (blast intro:Eq_rev)
  from P19 P28 P30 have P31 : "¬ Line_on (Li A E) C" by (simp add:Line_not_Eq_on)
  from P19 P30 P31 have P32 : "¬ Line_on (Li A C) E" by (blast intro:Line_on_rev) 
  from P5 P19 P32 have P33 : "¬ Line_on (Li A D) E" by (simp add:Line_not_on_ex) 
  from P3 P30 P33 have P34 : "¬ Line_on (Li A E) D" by (blast intro:Line_on_rev)
  from P30 have P35 : "Eq (Geos (Lin (Li A E)) add Emp) (Geos (Lin (Li E A)) add Emp)" by (simp add:Line_rev)
  from P18 have P36 : "Bet_Point (Se D G) H" by simp
  from P6 have P37 : "Bet_Point (Se A E) G" by simp
  from P3 P18 P33 P37 have "p. Line_on (Li H E) p  Bet_Point (Se D A) p" by (simp add:Bet_swap_lemma_4)
  then obtain C2 :: Point where P38 : "Line_on (Li H E) C2  Bet_Point (Se D A) C2" by blast
  have "Line_on (Li H E) E" by (simp add:Line_on_rule)
  then have P39 : "Eq (Geos (Lin (Li H E)) add Emp) (Geos (Lin (Li A D)) add Emp)  Line_on (Li A D) E" by (simp add:Line_on_trans)
  from P33 P39 have P40 : "¬ Eq (Geos (Lin (Li H E)) add Emp) (Geos (Lin (Li A D)) add Emp)" by blast
  from P23 have P41 : "¬ Eq (Geos (Poi F) add Emp) (Geos (Poi C) add Emp)" by (blast intro:Eq_rev)
  from P25 have P42 : "Line_on (Li F E) C" by (simp add:Line_Bet_on)
  from P18 have P43 : "Line_on (Li F H) C" by (simp add:Line_Bet_on)
  from P36 have P44 : "Eq (Geos (Poi H) add Emp) (Geos (Poi E) add Emp)  Bet_Point (Se D G) E" by (simp add:Point_Eq)
  then have P45 : "Eq (Geos (Poi H) add Emp) (Geos (Poi E) add Emp)  Line_on (Li D G) E" by (simp add:Line_Bet_on)
  have P46 : "Line_on (Li D G) G" by (simp add:Line_on_rule)
  have P47 : "Line_on (Li A E) E" by (simp add:Line_on_rule)
  from P37 have P48 : "Line_on (Li A E) G" by (simp add:Line_Bet_on)
  from P44 have P49 : "Eq (Geos (Poi H) add Emp) (Geos (Poi E) add Emp)  ¬ Eq (Geos (Poi G) add Emp) (Geos (Poi E) add Emp)" by (simp add:Bet_Point_def)
  from P45 P46 P47 P48 P49 have P50 : "Eq (Geos (Poi H) add Emp) (Geos (Poi E) add Emp) 
    Eq (Geos (Lin (Li D G)) add Emp) (Geos (Lin (Li A E)) add Emp)" by (simp add:Line_unique)
  have P51 : "Line_on (Li D G) D" by (simp add:Line_on_rule)
  from P50 P51 have P52 : "Eq (Geos (Poi H) add Emp) (Geos (Poi E) add Emp)  Line_on (Li A E) D" by (simp add:Line_on_trans)
  from P34 P52 have P53 : "¬ Eq (Geos (Poi E) add Emp) (Geos (Poi H) add Emp)" by (blast intro:Eq_rev)
  from P41 P42 P43 P53 have P54 : "Line_on (Li E H) C" by (blast intro:Line_on_dens)
  from P53 have P55 : "Eq (Geos (Lin (Li E H)) add Emp) (Geos (Lin (Li H E)) add Emp)" by (simp add:Line_rev)
  from P54 P55 have P56 : "Line_on (Li H E) C" by (blast intro:Line_on_trans)
  from P38 have P57 : "Line_on (Li A D) C2" by (simp add:Line_Bet_on)
  from P5 P38 P40 P56 P57 have P58 : "Eq (Geos (Poi C2) add Emp) (Geos (Poi C) add Emp)" by (blast intro:Line_unique_Point)
  from P38 have P59 : "Bet_Point (Se D A) C2" by simp
  from P58 P59 have "Bet_Point (Se D A) C" by (simp add:Point_Eq)
  thus "Bet_Point (Se A D) C" by (simp add:Bet_rev)
qed

theorem(in Order_Rule) Bet_swap_234_134 : 
  assumes 
    "Bet_Point (Se A C) B"
    "Bet_Point (Se B D) C"
  shows "Bet_Point (Se A D) C"
proof -
  from assms have P1 : "Eq (Geos (Poi A) add Emp) (Geos (Poi D) add Emp)  Bet_Point (Se D C) B" by (simp add:Bet_Point_Eq)
  from assms have "Inv (Bet_Point (Se D C) B)  Inv (Bet_Point (Se C B) D)" by (simp add:Bet_iff)
  then have P2 : "¬ Bet_Point (Se D C) B" by (simp add:Inv_def)
  from P1 P2 have P3 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi D) add Emp)" by blast
  from assms P3 have "Line_on (Li A D) B  Line_on (Li A D) C" by (simp add:Bet_swap_lemma_1)
  then have P4 : "Line_on (Li A D) C" by simp
  have "p q r. ¬ Line_on (Li A D) p  ¬ Line_on (Li A D) q  ¬ Line_on (Li A D) r
         ¬ Eq (Geos (Poi p) add Emp) (Geos (Poi q) add Emp)  ¬ Eq (Geos (Poi q) add Emp) (Geos (Poi r) add Emp)
         ¬ Eq (Geos (Poi r) add Emp) (Geos (Poi p) add Emp)" by (blast intro:Line_not_on_exist)
  then obtain F :: Point where P5 : "¬ Line_on (Li A D) F" by blast
  from P4 have P6 : "Eq (Geos (Poi C) add Emp) (Geos (Poi F) add Emp)  Line_on (Li A D) F" by (simp add:Point_Eq)
  from P5 P6 have "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi F) add Emp)" by blast
  then have "p. Bet_Point (Se C F) p" by (simp add:Seg_density)
  then obtain E :: Point where P7 : "Bet_Point (Se C F) E" by blast 
  have P8 : "Line_on (Li A D) A" by (simp add:Line_on_rule)
  have P9 : "Line_on (Li A C) C" by (simp add:Line_on_rule)
  have P10 : "Line_on (Li A C) A" by (simp add:Line_on_rule)
  from assms have P11 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi C) add Emp)" by (simp add:Bet_Point_def)
  from P4 P8 P9 P10 P11 have "Eq (Geos (Lin (Li A C)) add Emp) (Geos (Lin (Li A D)) add Emp)" by (simp add:Line_unique)
  then have P12 : "Line_on (Li A C) F  Line_on (Li A D) F" by (simp add:Line_on_trans)
  from P5 P12 have P13 : "¬ Line_on (Li A C) F" by blast
  from assms P5 P7 P13 show "Bet_Point (Se A D) C" by (blast intro:Bet_swap_lemma_5)
qed

theorem(in Order_Rule) Bet_swap_234_124 : 
  assumes 
    "Bet_Point (Se A C) B"
    "Bet_Point (Se B D) C"
  shows "Bet_Point (Se A D) B"
proof -
  from assms have P1 : "Eq (Geos (Poi A) add Emp) (Geos (Poi D) add Emp)  Bet_Point (Se D C) B" by (simp add:Bet_Point_Eq)
  from assms have "Inv (Bet_Point (Se D C) B)  Inv (Bet_Point (Se C B) D)" by (simp add:Bet_iff)
  then have P2 : "¬ Bet_Point (Se D C) B" by (simp add:Inv_def)
  from P1 P2 have P3 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi D) add Emp)" by blast
  from assms P3 have "Line_on (Li A D) B  Line_on (Li A D) C" by (simp add:Bet_swap_lemma_1)
  then have P4 : "Line_on (Li A D) B" by simp
  have "p q r. ¬ Line_on (Li A D) p  ¬ Line_on (Li A D) q  ¬ Line_on (Li A D) r
         ¬ Eq (Geos (Poi p) add Emp) (Geos (Poi q) add Emp)  ¬ Eq (Geos (Poi q) add Emp) (Geos (Poi r) add Emp)
         ¬ Eq (Geos (Poi r) add Emp) (Geos (Poi p) add Emp)" by (blast intro:Line_not_on_exist)
  then obtain F :: Point where P5 : "¬ Line_on (Li A D) F" by blast
  from P4 have P6 : "Eq (Geos (Poi B) add Emp) (Geos (Poi F) add Emp)  Line_on (Li A D) F" by (simp add:Point_Eq)
  from P5 P6 have "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi F) add Emp)" by blast
  then have "p. Bet_Point (Se B F) p" by (simp add:Seg_density)
  then obtain E :: Point where P7 : "Bet_Point (Se B F) E" by blast 
  from assms have P8 : "Bet_Point (Se D B) C" by (simp add:Bet_rev)
  from assms have P9 : "Bet_Point (Se C A) B" by (simp add:Bet_rev)
  from P3 have P10 : "Eq (Geos (Lin (Li A D)) add Emp) (Geos (Lin (Li D A)) add Emp)" by (simp add:Line_rev)
  from P5 P10 have P11 : "¬ Line_on (Li D A) F" by (simp add:Line_not_on_trans)
  from P4 P10 have P12 : "Line_on (Li D A) B" by (simp add:Line_on_trans)
  have P13 : "Line_on (Li D A) D" by (simp add:Line_on_rule)
  have P14 : "Line_on (Li D B) D" by (simp add:Line_on_rule)
  have P15 : "Line_on (Li D B) B" by (simp add:Line_on_rule)
  from assms have P16 : "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi D) add Emp)" by (simp add:Bet_Point_def)
  from P12 P13 P14 P15 P16 have "Eq (Geos (Lin (Li D B)) add Emp) (Geos (Lin (Li D A)) add Emp)" by (simp add:Line_unique)
  then have P17 : "Line_on (Li D B) F  Line_on (Li D A) F" by (simp add:Line_on_trans)
  from P11 P17 have P18 : "¬ Line_on (Li D B) F" by blast
  from P7 P8 P9 P11 P18 have "Bet_Point (Se D A) B" by (blast intro:Bet_swap_lemma_5)
  thus "Bet_Point (Se A D) B" by (blast intro:Bet_rev)
qed

theorem(in Order_Rule) Bet_swap_134_234 : 
  assumes 
    "Bet_Point (Se A C) B"
    "Bet_Point (Se A D) C"
  shows "Bet_Point (Se B D) C"
proof -
  from assms have P2 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi C) add Emp)" by (simp add:Bet_Point_def)
  from assms have P3 : "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi A) add Emp)" by (simp add:Bet_Point_def)
  then have P4 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi B) add Emp)" by (blast intro:Eq_rev)
  from assms have P5 : "Line_on (Li A B) C" by (simp add:Line_Bet_on)
  have P6 : "Line_on (Li A B) A" by (simp add:Line_on_rule)
  from assms have P7 : "Line_on (Li A D) C" by (simp add:Line_Bet_on)
  have P8 : "Line_on (Li A D) A" by (simp add:Line_on_rule)
  from P2 P5 P6 P7 P8 have P9 : "Eq (Geos (Lin (Li A B)) add Emp) (Geos (Lin (Li A D)) add Emp)" by (simp add:Line_unique)
  have P10 : "Line_on (Li A B) B" by (simp add:Line_on_rule)
  from P9 P10 have P11 : "Line_on (Li A D) B" by (simp add:Line_on_trans)
  from assms have P12 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi D) add Emp)" by (simp add:Bet_Point_def)
  then have P13 : "Eq (Geos (Lin (Li A D)) add Emp) (Geos (Lin (Li D A)) add Emp)" by (simp add:Line_rev)
  from P11 P13 have P14 : "Line_on (Li D A) B" by (simp add:Line_on_trans)
  from P12 have P15 : "¬ Eq (Geos (Poi D) add Emp) (Geos (Poi A) add Emp)" by (blast intro:Eq_rev)
  from assms have P16 : "Eq (Geos (Poi B) add Emp) (Geos (Poi D) add Emp)  Bet_Point (Se A C) D" by (simp add:Point_Eq)
  from assms have "Inv (Bet_Point (Se D C) A)  Inv (Bet_Point (Se C A) D)" by (simp add:Bet_iff)
  then have "¬ Bet_Point (Se C A) D" by (simp add:Inv_def)
  then have P17 : "¬ Bet_Point (Se A C) D" by (blast intro:Bet_rev)
  from P16 P17 have P18 : "¬ Eq (Geos (Poi D) add Emp) (Geos (Poi B) add Emp)" by (blast intro:Eq_rev)
  from P14 P15 P18 have P19 : "Line_on (Li D B) A" by (simp add:Line_on_rev)
  from P18 have P20 : "Eq (Geos (Lin (Li D B)) add Emp) (Geos (Lin (Li B D)) add Emp)" by (simp add:Line_rev)
  from P19 P20 have P21 : "Line_on (Li B D) A" by (simp add:Line_on_trans)
  have P22 : "Line_on (Li B D) B" by (simp add:Line_on_rule)
  from P4 P8 P11 P21 P22 have P23 : "Eq (Geos (Lin (Li A D)) add Emp) (Geos (Lin (Li B D)) add Emp)" by (simp add:Line_unique)
  from P7 P23 have P24 : "Line_on (Li B D) C" by (simp add:Line_on_trans)
  have "p q r. ¬ Line_on (Li A D) p  ¬ Line_on (Li A D) q  ¬ Line_on (Li A D) r
         ¬ Eq (Geos (Poi p) add Emp) (Geos (Poi q) add Emp)  ¬ Eq (Geos (Poi q) add Emp) (Geos (Poi r) add Emp)
         ¬ Eq (Geos (Poi r) add Emp) (Geos (Poi p) add Emp)" by (blast intro:Line_not_on_exist)
  then obtain F :: Point where P25 : "¬ Line_on (Li A D) F" by blast
  from P11 have P26 : "Eq (Geos (Poi B) add Emp) (Geos (Poi F) add Emp)  Line_on (Li A D) F" by (simp add:Point_Eq)
  from P25 P26 have "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi F) add Emp)" by blast
  then have "p. Bet_Point (Se B F) p" by (simp add:Seg_density)
  then obtain G :: Point where P27 : "Bet_Point (Se B F) G" by blast 
  from P11 P25 P27 have "Inv (Line_on (Li A D) G)" by (simp add:Line_Bet_not_on)
  then have P28 : "¬ Line_on (Li A D) G" by (simp add:Inv_def) 
  from assms P25 have P29 : "¬ Eq (Geos (Lin (Li F C)) add Emp) (Geos (Lin (Li F D)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from P7 have P30 : "Eq (Geos (Poi C) add Emp) (Geos (Poi F) add Emp)  Line_on (Li A D) F" by (simp add:Point_Eq)
  from P25 P30 have P31 : "¬ Eq (Geos (Poi F) add Emp) (Geos (Poi C) add Emp)" by (blast intro:Eq_rev)
  have P32 : "Line_on (Li A D) D" by (simp add:Line_on_rule)
  then have P33 : "Eq (Geos (Poi D) add Emp) (Geos (Poi F) add Emp)  Line_on (Li A D) F" by (simp add:Point_Eq)
  from P25 P33 have P34 : "¬ Eq (Geos (Poi F) add Emp) (Geos (Poi D) add Emp)" by (blast intro:Eq_rev)
  from P29 P31 P34 have P35 : "¬ Line_on (Li F C) D" by (simp add:Line_not_Eq_on)
  from P31 have P36 : "Eq (Geos (Lin (Li F C)) add Emp) (Geos (Lin (Li C F)) add Emp)" by (simp add:Line_rev)
  from P35 P36 have P37 : "¬ Line_on (Li C F) D" by (simp add:Line_not_on_trans) 
  from assms have P38 : "Bet_Point (Se D A) C" by (simp add:Bet_rev)
  from P13 P25 have P39 : "¬ Line_on (Li D A) F" by (simp add:Line_not_on_trans)
  from P38 P39 have P40 : "¬ Eq (Geos (Lin (Li F C)) add Emp) (Geos (Lin (Li F A)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from P8 have P41 : "Eq (Geos (Poi A) add Emp) (Geos (Poi F) add Emp)  Line_on (Li A D) F" by (simp add:Point_Eq)
  from P25 P41 have P42 : "¬ Eq (Geos (Poi F) add Emp) (Geos (Poi A) add Emp)" by (blast intro:Eq_rev)
  from P31 P40 P42 have P43 : "¬ Line_on (Li F C) A" by (simp add:Line_not_Eq_on)
  from P36 P43 have P44 : "¬ Line_on (Li C F) A" by (simp add:Line_not_on_trans) 
  from P2 have P45 : "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi A) add Emp)" by (blast intro:Eq_rev)
  from P31 have P46 : "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi F) add Emp)" by (blast intro:Eq_rev)
  from P44 P45 P46 have P47 : "¬ Line_on (Li C A) F" by (blast intro:Line_on_rev)
  from P45 have P48 : "Eq (Geos (Lin (Li C A)) add Emp) (Geos (Lin (Li A C)) add Emp)" by (simp add:Line_rev)
  from P47 P48 have P49 : "¬ Line_on (Li A C) F" by (simp add:Line_not_on_trans)
  from assms P49 have P50 : "¬ Eq (Geos (Lin (Li F B)) add Emp) (Geos (Lin (Li F C)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from P11 have P51 : "Eq (Geos (Poi B) add Emp) (Geos (Poi F) add Emp)  Line_on (Li A D) F" by (simp add:Point_Eq)
  from P25 P51 have P52 : "¬ Eq (Geos (Poi F) add Emp) (Geos (Poi B) add Emp)" by (blast intro:Eq_rev)
  from P31 P50 P52 have P53 : "¬ Line_on (Li F B) C" by (simp add:Line_not_Eq_on)
  from P27 have P54 : "Line_on (Li B F) G" by (simp add:Line_Bet_on)
  from P27 have P56 : "Line_on (Li F B) G" by (simp add:Line_Bet_on)
  have P57 : "Line_on (Li F B) F" by (simp add:Line_on_rule)
  have P58 : "Line_on (Li C F) F" by (simp add:Line_on_rule)
  from P27 have P59 : "¬ Eq (Geos (Poi F) add Emp) (Geos (Poi G) add Emp)" by (simp add:Bet_Point_def)
  from P56 P57 P58 P59 have P60 : "Line_on (Li C F) G  Eq (Geos (Lin (Li C F)) add Emp) (Geos (Lin (Li F B)) add Emp)" by (simp add:Line_unique)
  have P61 : "Line_on (Li C F) C" by (simp add:Line_on_rule)
  from P60 P61 have P62 : "Line_on (Li C F) G  Line_on (Li F B) C" by (simp add:Line_on_trans)
  from P53 P62 have P63 : "¬ Line_on (Li C F) G" by blast
  have P64 : "Line_on (Li C F) C" by (simp add:Line_on_rule)
  from assms P28 P37 P44 P63 P64 have P65 : "Line_on_Seg (Li C F) (Se A G)  ¬ Line_on_Seg (Li C F) (Se D G)  Line_on_Seg (Li C F) (Se D G)  ¬ Line_on_Seg (Li C F) (Se A G)" by (simp add:Pachets_axiom)
  then have "Line_on_Seg (Li C F) (Se A G)  p. Line_on (Li C F) p  Bet_Point (Se A G) p" by (simp add:Line_on_Seg_rule)
  then obtain H :: Point where P66 : "Line_on_Seg (Li C F) (Se A G)  Line_on (Li C F) H  Bet_Point (Se A G) H" by blast
  from P9 have P67 : "Line_on (Li A B) F  Line_on (Li A D) F" by (simp add:Line_on_trans)
  from P25 P67 have P68 : "¬ Line_on (Li A B) F" by blast
  from P4 have P69 : "Eq (Geos (Lin (Li A B)) add Emp) (Geos (Lin (Li B A)) add Emp)" by (simp add:Line_rev)
  from P68 P69 have P70 : "¬ Line_on (Li B A) F" by (simp add:Line_not_on_trans)
  from P3 P27 P66 P70 have "Line_on_Seg (Li C F) (Se A G)  p. Line_on (Li H F) p  Bet_Point (Se A B) p" by (simp add:Bet_swap_lemma_4)
  then obtain E :: Point where P71 : "Line_on_Seg (Li C F) (Se A G)  Line_on (Li H F) E  Bet_Point (Se A B) E" by blast
  then have P72 : "Line_on_Seg (Li C F) (Se A G)  Line_on (Li A B) E" by (simp add:Line_Bet_on)
  from P36 have P73 : "Eq (Geos (Lin (Li C F)) add Emp) (Geos (Lin (Li F C)) add Emp)" by (simp add:Eq_rev)
  from P66 P73 have P74 : "Line_on_Seg (Li C F) (Se A G)  Line_on (Li F C) H" by (simp add:Line_on_trans)
  from P66 have "Line_on_Seg (Li C F) (Se A G)  Bet_Point (Se A G) H" by simp
  then have "Line_on_Seg (Li C F) (Se A G)  Eq (Geos (Poi H) add Emp) (Geos (Poi F) add Emp)  
    Bet_Point (Se A G) F" by (simp add:Point_Eq)
  then have P75 : "Line_on_Seg (Li C F) (Se A G)  Eq (Geos (Poi H) add Emp) (Geos (Poi F) add Emp)  
    Line_on (Li A G) F" by (simp add:Line_Bet_on)
  have P76 : "Line_on (Li A G) G" by (simp add:Line_on_rule)
  have P77 : "Line_on (Li B F) F" by (simp add:Line_on_rule)
  from P54 P59 P75 P76 P77 have P78 : "Line_on_Seg (Li C F) (Se A G)  Eq (Geos (Poi H) add Emp) (Geos (Poi F) add Emp) 
    Eq (Geos (Lin (Li A G)) add Emp) (Geos (Lin (Li B F)) add Emp)" by (simp add:Line_unique)
  have P79 : "Line_on (Li A G) A" by (simp add:Line_on_rule)
  from P78 P79 have P80 : "Line_on_Seg (Li C F) (Se A G)  Eq (Geos (Poi H) add Emp) (Geos (Poi F) add Emp) 
    Line_on (Li B F) A" by (simp add:Line_on_trans)
  have P81 : "Line_on (Li B F) B" by (simp add:Line_on_rule)
  from P4 P6 P10 P80 P81 have P82 : "Line_on_Seg (Li C F) (Se A G)  Eq (Geos (Poi H) add Emp) (Geos (Poi F) add Emp) 
    Eq (Geos (Lin (Li B F)) add Emp) (Geos (Lin (Li A B)) add Emp)" by (simp add:Line_unique)
  from P77 P82 have P83 : "Line_on_Seg (Li C F) (Se A G)  Eq (Geos (Poi H) add Emp) (Geos (Poi F) add Emp) 
    Line_on (Li A B) F" by (simp add:Line_on_trans)
  from P68 P83 have P84 : "Line_on_Seg (Li C F) (Se A G)  ¬ Eq (Geos (Poi F) add Emp) (Geos (Poi H) add Emp)" by (blast intro:Eq_rev)
  from P46 have P85 : "¬ Eq (Geos (Poi F) add Emp) (Geos (Poi C) add Emp)" by (blast intro:Eq_rev)
  from P74 P84 P85 have P86 : "Line_on_Seg (Li C F) (Se A G)  Line_on (Li F H) C" by (blast intro:Line_on_rev)
  from P84 have P87 : "Line_on_Seg (Li C F) (Se A G)  Eq (Geos (Lin (Li F H)) add Emp) (Geos (Lin (Li H F)) add Emp)" by (simp add:Line_rev)
  from P86 P87 have P88 : "Line_on_Seg (Li C F) (Se A G)  Line_on (Li H F) C" by (simp add:Line_on_trans)
  from P71 have "Line_on_Seg (Li C F) (Se A G)  Bet_Point (Se A B) E" by simp
  then have P89 : "Line_on_Seg (Li C F) (Se A G)  Eq (Geos (Poi E) add Emp) (Geos (Poi C) add Emp)  Bet_Point (Se A B) C" by (simp add:Point_Eq)
  from assms have "Inv (Bet_Point (Se C B) A)  Inv (Bet_Point (Se B A) C)" by (simp add:Bet_iff)
  then have "¬ Bet_Point (Se B A) C" by (simp add:Inv_def)
  then have P90 : "¬ Bet_Point (Se A B) C" by (blast intro:Bet_rev)
  from P89 P90 have P91 : "Line_on_Seg (Li C F) (Se A G)  ¬ Eq (Geos (Poi E) add Emp) (Geos (Poi C) add Emp)" by blast
  from P5 P71 P72 P88 P91 have P92 : "Line_on_Seg (Li C F) (Se A G) 
    Eq (Geos (Lin (Li A B)) add Emp) (Geos (Lin (Li H F)) add Emp)" by (simp add:Line_unique)
  from P4 P11 P12 have P93 : "Line_on (Li A B) D" by (simp add:Line_on_rev)
  from P92 P93 have P94 : "Line_on_Seg (Li C F) (Se A G)  Line_on (Li H F) D" by (simp add:Line_on_trans)
  have P95 : "Line_on (Li C F) F" by (simp add:Line_on_rule)
  have P96 : "Line_on (Li H F) H" by (simp add:Line_on_rule)
  have P97 : "Line_on (Li H F) F" by (simp add:Line_on_rule)
  from P66 P84 P95 P96 P97 have P98 : "Line_on_Seg (Li C F) (Se A G)  
    Eq (Geos (Lin (Li H F)) add Emp) (Geos (Lin (Li C F)) add Emp)" by (simp add:Line_unique)
  from P94 P98 have P99 : "Line_on_Seg (Li C F) (Se A G)  Line_on (Li C F) D" by (simp add:Line_on_trans)
  from P37 P99 have P100 : "¬ Line_on_Seg (Li C F) (Se A G)" by blast
  from P65 P100 have "Line_on_Seg (Li C F) (Se D G)" by blast
  then have "p. Line_on (Li C F) p  Bet_Point (Se D G) p" by (simp add:Line_on_Seg_rule)
  then obtain H2 :: Point where P101 : "Line_on (Li C F) H2  Bet_Point (Se D G) H2" by blast
  from P23 have "Eq (Geos (Lin (Li B D)) add Emp) (Geos (Lin (Li A D)) add Emp)" by (simp add:Eq_rev)
  then have P102 : "Line_on (Li B D) F  Line_on (Li A D) F" by (simp add:Line_on_trans)
  from P25 P102 have P103 : "¬ Line_on (Li B D) F" by blast
  from P18 have P104 : "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi D) add Emp)" by (blast intro:Eq_rev)
  from P27 P101 P103 P104 have "p. Line_on (Li H2 F) p  Bet_Point (Se D B) p" by (simp add:Bet_swap_lemma_4)
  then obtain C2 :: Point where P105 : "Line_on (Li H2 F) C2  Bet_Point (Se D B) C2" by blast
  have "Line_on (Li H2 F) F" by (simp add:Line_on_rule)
  then have P106 : "Eq (Geos (Lin (Li H2 F)) add Emp) (Geos (Lin (Li B D)) add Emp)  Line_on (Li B D) F" by (simp add:Line_on_trans)
  from P103 P106 have P107 : "¬ Eq (Geos (Lin (Li H2 F)) add Emp) (Geos (Lin (Li B D)) add Emp)" by blast
  from P73 P101 have P108 : "Line_on (Li F C) H2" by (simp add:Line_on_trans)
  from P101 have "Bet_Point (Se D G) H2" by simp
  then have "Eq (Geos (Poi H2) add Emp) (Geos (Poi F) add Emp)  Bet_Point (Se D G) F" by (simp add:Point_Eq)
  then have P109 : "Eq (Geos (Poi H2) add Emp) (Geos (Poi F) add Emp)  Line_on (Li D G) F" by (simp add:Line_Bet_on)
  have P110 : "Line_on (Li D G) G" by (simp add:Line_on_rule)
  from P54 P59 P77 P109 P110 have P111 : "Eq (Geos (Poi H2) add Emp) (Geos (Poi F) add Emp) 
    Eq (Geos (Lin (Li B F)) add Emp) (Geos (Lin (Li D G)) add Emp)" by (simp add:Line_unique)
  from P81 P111 have P112 : "Eq (Geos (Poi H2) add Emp) (Geos (Poi F) add Emp)  Line_on (Li D G) B" by (simp add:Line_on_trans)
  have P113 : "Line_on (Li D G) D" by (simp add:Line_on_rule)
  from P11 P18 P32 P112 P113 have P114 : "Eq (Geos (Poi H2) add Emp) (Geos (Poi F) add Emp) 
    Eq (Geos (Lin (Li D G)) add Emp) (Geos (Lin (Li A D)) add Emp)" by (simp add:Line_unique)
  from P110 P114 have P115 : "Eq (Geos (Poi H2) add Emp) (Geos (Poi F) add Emp)  Line_on (Li A D) G" by (simp add:Line_on_trans)
  from P28 P115 have P116 : "¬ Eq (Geos (Poi F) add Emp) (Geos (Poi H2) add Emp)" by (blast intro:Eq_rev)
  from P31 P108 P116 have P117 : "Line_on (Li F H2) C" by (simp add:Line_on_rev)
  from P116 have P118 : "Eq (Geos (Lin (Li F H2)) add Emp) (Geos (Lin (Li H2 F)) add Emp)" by (simp add:Line_rev)
  from P117 P118 have P119 : "Line_on (Li H2 F) C" by (simp add:Line_on_trans)
  from P105 have P121 : "Line_on (Li B D) C2" by (simp add:Line_Bet_on)
  from P24 P105 P107 P119 P121 have P122 : "Eq (Geos (Poi C2) add Emp) (Geos (Poi C) add Emp)" by (blast intro:Line_unique_Point)
  from P105 have P123 : "Bet_Point (Se D B) C2" by simp
  from P122 P123 have "Bet_Point (Se D B) C" by (simp add:Point_Eq)
  thus "Bet_Point (Se B D) C" by (blast intro:Bet_rev)
qed

lemma(in Order_Rule) Bet_swap_134_124 : 
  assumes 
    "Bet_Point (Se A C) B"
    "Bet_Point (Se A D) C"
  shows "Bet_Point (Se A D) B"
proof -
  from assms have P1 : "Bet_Point (Se B D) C" by (blast intro:Bet_swap_134_234)
  from assms P1 show "Bet_Point (Se A D) B" by (blast intro:Bet_swap_234_124)
qed

theorem(in Order_Rule) Bet_swap_243_124 : 
  assumes 
    "Bet_Point (Se A D) B"
    "Bet_Point (Se B D) C"
  shows "Bet_Point (Se A C) B"
proof -
  from assms have P1 : "Bet_Point (Se D B) C" by (simp add:Bet_rev)
  from assms have P2 : "Bet_Point (Se D A) B" by (simp add:Bet_rev)
  from P1 P2 have "Bet_Point (Se C A) B" by (blast intro:Bet_swap_134_234)
  thus "Bet_Point (Se A C) B" by (simp add:Bet_rev)
qed

theorem(in Order_Rule) Bet_swap_243_143 : 
  assumes 
    "Bet_Point (Se A D) B"
    "Bet_Point (Se B D) C"
  shows "Bet_Point (Se A D) C"
proof -
  from assms have P1 : "Bet_Point (Se D B) C" by (simp add:Bet_rev)
  from assms have P2 : "Bet_Point (Se D A) B" by (simp add:Bet_rev)
  from P1 P2 have "Bet_Point (Se D A) C" by (blast intro:Bet_swap_134_124)
  thus "Bet_Point (Se A D) C" by (simp add:Bet_rev)
qed

text‹Theorem5›

lemma(in Order_Rule) Bet_four_Point_case : 
  assumes 
    "Line_on l1 P"
    "Line_on l1 Q"
    "Line_on l1 R"
    "Line_on l1 S"
    "Bet_Point (Se P R) Q"
    "¬ Eq (Geos (Poi P) add Emp) (Geos (Poi S) add Emp)"
    "¬ Eq (Geos (Poi Q) add Emp) (Geos (Poi S) add Emp)"
    "¬ Eq (Geos (Poi R) add Emp) (Geos (Poi S) add Emp)"
  shows "Bet_Point (Se P S) R  Bet_Point (Se R S) P
     Bet_Point (Se P R) S  Bet_Point (Se P S) Q
     Bet_Point (Se P Q) S  Bet_Point (Se Q S) P"
proof -
  from assms have P1 : "¬ Eq (Geos (Poi P) add Emp) (Geos (Poi R) add Emp)" by (simp add:Bet_Point_def)
  from assms have P2 : "¬ Eq (Geos (Poi S) add Emp) (Geos (Poi P) add Emp)" by (blast intro:Eq_rev)
  from assms P1 P2 have "Bet_Point (Se P S) R  Bet_Point (Se S R) P  Bet_Point (Se R P) S" by (simp add:Bet_case)
  then have P3 : "Bet_Point (Se P S) R  Bet_Point (Se R S) P  Bet_Point (Se P R) S" by (blast intro:Bet_rev)
  from assms have P4 : "¬ Eq (Geos (Poi S) add Emp) (Geos (Poi Q) add Emp)" by (blast intro:Eq_rev)
  from assms have P5 : "¬ Eq (Geos (Poi Q) add Emp) (Geos (Poi P) add Emp)" by (simp add:Bet_Point_def)
  from assms P4 P5 have "Bet_Point (Se P Q) S  Bet_Point (Se Q S) P  Bet_Point (Se S P) Q" by (simp add:Bet_case)
  then have P6 : "Bet_Point (Se P Q) S  Bet_Point (Se Q S) P  Bet_Point (Se P S) Q" by (blast intro:Bet_rev)
  from P3 P6 show "Bet_Point (Se P S) R  Bet_Point (Se R S) P
     Bet_Point (Se P R) S  Bet_Point (Se P S) Q
     Bet_Point (Se P Q) S  Bet_Point (Se Q S) P" by blast
qed

lemma(in Order_Rule) Plane_diffside_rev : 
  assumes 
    "Plane_diffside l1 p1 p2"
  shows "Plane_diffside l1 p2 p1"
proof -
  from assms have "p. Bet_Point (Se p1 p2) p  Line_on l1 p  ¬ Line_on l1 p1  ¬ Line_on l1 p2" by (simp add:Plane_diffside_def)
  then obtain p3 :: Point where P1 : "Bet_Point (Se p1 p2) p3  Line_on l1 p3  ¬ Line_on l1 p1  ¬ Line_on l1 p2" by blast
  then have P2 : "Bet_Point (Se p2 p1) p3" by (simp add:Bet_rev)
  from P1 P2 have "p. Bet_Point (Se p2 p1) p  Line_on l1 p  ¬ Line_on l1 p2  ¬ Line_on l1 p1" by blast
  thus "Plane_diffside l1 p2 p1" by (simp add:Plane_diffside_def)
qed

lemma(in Order_Rule) Plane_sameside_rev : 
  assumes 
    "Plane_sameside l1 p1 p2"
  shows "Plane_sameside l1 p2 p1"
proof -
  have "Line_on_Seg l1 (Se p2 p1)  p. Line_on l1 p  Bet_Point (Se p2 p1) p" by (simp add:Line_on_Seg_rule)
  then obtain p3 :: Point where P1 : "Line_on_Seg l1 (Se p2 p1)  
    Line_on l1 p3  Bet_Point (Se p2 p1) p3" by blast
  then have P2 : "Line_on_Seg l1 (Se p2 p1)  Bet_Point (Se p1 p2) p3" by (simp add:Bet_rev)
  from P1 P2 have "Line_on_Seg l1 (Se p2 p1)  p. Line_on l1 p  Bet_Point (Se p1 p2) p" by blast
  then have "Line_on_Seg l1 (Se p2 p1)  Line_on_Seg l1 (Se p1 p2)" by (simp add:Line_on_Seg_rule)
  then have P3 : "¬ Line_on_Seg l1 (Se p1 p2)  ¬ Line_on_Seg l1 (Se p2 p1)" by blast
  from assms have P4 : "¬ Line_on_Seg l1 (Se p1 p2)  ¬ Line_on l1 p1 
     ¬ Line_on l1 p2  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)" by (simp add:Plane_sameside_def)
  from P3 P4 have P5 : "¬ Line_on_Seg l1 (Se p2 p1)" by blast
  from P4 have P6 : "¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p1) add Emp)" by (blast intro:Eq_rev)
  from P4 P5 P6 show "Plane_sameside l1 p2 p1" by (simp add:Plane_sameside_def)
qed

lemma(in Order_Rule) Plane_sameside_not_diffside : 
  assumes N : 
    "Plane_sameside l1 p1 p2"
  shows "¬ Plane_diffside l1 p1 p2"
proof 
  assume W : "Plane_diffside l1 p1 p2"
  then have "p. Bet_Point (Se p1 p2) p  Line_on l1 p  ¬ Line_on l1 p1  ¬ Line_on l1 p2" by (simp add:Plane_diffside_def)
  then have "p. Line_on l1 p  Bet_Point (Se p1 p2) p" by blast
  then have P1 : "Line_on_Seg l1 (Se p1 p2)" by (simp add:Line_on_Seg_rule)
  from N have P2 : "¬ Line_on_Seg l1 (Se p1 p2)" by (simp add:Plane_sameside_def)
  from P1 P2 show False by blast
qed

lemma(in Order_Rule) Plane_diffside_not_sameside : 
  assumes N :
    "Plane_diffside l1 p1 p2"
  shows "¬ Plane_sameside l1 p1 p2"
proof 
  assume W : "Plane_sameside l1 p1 p2"
  then have P1 : "¬ Plane_diffside l1 p1 p2" by (simp add:Plane_sameside_not_diffside)
  from N P1 show False by blast
qed

lemma(in Order_Rule) Plane_not_sameside_diffside : 
  assumes "¬ Plane_sameside l1 p1 p2"
    "¬ Line_on l1 p1" "¬ Line_on l1 p2"
    "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)"
  shows "Plane_diffside l1 p1 p2"
proof -
  from assms have P1 : "¬ Line_on_Seg l1 (Se p1 p2)  Plane_sameside l1 p1 p2" by (simp add:Plane_sameside_def)
  from assms P1 have P2 : "Line_on_Seg l1 (Se p1 p2)" by blast
  from P2 have P3 : "p. Line_on l1 p  Bet_Point (Se p1 p2) p" by (simp add:Line_on_Seg_rule)
  from assms P3 have "p. Bet_Point (Se p1 p2) p
     Line_on l1 p  ¬ Line_on l1 p1  ¬ Line_on l1 p2" by blast
  thus "Plane_diffside l1 p1 p2" by (simp add:Plane_diffside_def)
qed

lemma(in Order_Rule) Plane_not_diffside_sameside : 
  assumes "¬ Plane_diffside l1 p1 p2"
    "¬ Line_on l1 p1" "¬ Line_on l1 p2"
    "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)"
  shows "Plane_sameside l1 p1 p2"
proof -
  from assms have P1 : "¬ Plane_sameside l1 p1 p2  Plane_diffside l1 p1 p2" by (simp add:Plane_not_sameside_diffside)
  from assms P1 show "Plane_sameside l1 p1 p2" by blast
qed

lemma(in Order_Rule) Plane_Line_diff_trans : 
  assumes 
    "Plane_diffside l1 p1 p2"
    "Eq (Geos (Lin l1) add Emp) (Geos (Lin l2) add Emp)"
  shows "Plane_diffside l2 p1 p2"
proof -
  from assms have "p. Bet_Point (Se p1 p2) p  Line_on l1 p  ¬ Line_on l1 p1  ¬ Line_on l1 p2" by (simp add:Plane_diffside_def)
  then obtain p3 :: Point where P1 : "Bet_Point (Se p1 p2) p3  Line_on l1 p3  ¬ Line_on l1 p1  ¬ Line_on l1 p2" by blast
  from assms P1 have P2 : "Line_on l2 p3" by (simp add:Line_on_trans)
  from assms P1 have P3 : "¬ Line_on l2 p1" by (simp add:Line_not_on_trans)
  from assms P1 have P4 : "¬ Line_on l2 p2" by (simp add:Line_not_on_trans)
  from P1 P2 P3 P4 have "p. Bet_Point (Se p1 p2) p  Line_on l2 p  ¬ Line_on l2 p1  ¬ Line_on l2 p2" by blast
  thus "Plane_diffside l2 p1 p2" by (simp add:Plane_diffside_def)
qed

lemma(in Order_Rule) Plane_Line_trans : 
  assumes 
    "Plane_sameside l1 p1 p2"
    "Eq (Geos (Lin l1) add Emp) (Geos (Lin l2) add Emp)"
  shows "Plane_sameside l2 p1 p2"
proof -
  have "Line_on_Seg l2 (Se p1 p2)  p. Line_on l2 p  Bet_Point (Se p1 p2) p" by (simp add:Line_on_Seg_rule)
  then obtain p3 :: Point where P1 : "Line_on_Seg l2 (Se p1 p2)  Line_on l2 p3  Bet_Point (Se p1 p2) p3" by blast
  from assms P1 have P2 : "Line_on_Seg l2 (Se p1 p2)  Line_on l1 p3" by (blast intro:Line_on_trans Eq_rev)
  from P1 P2 have "Line_on_Seg l2 (Se p1 p2)  p. Line_on l1 p  Bet_Point (Se p1 p2) p" by blast
  then have P3 : "Line_on_Seg l2 (Se p1 p2)  Line_on_Seg l1 (Se p1 p2)" by (simp add:Line_on_Seg_rule)
  from assms have P4 : "¬ Line_on_Seg l1 (Se p1 p2)  ¬ Line_on l1 p1 
     ¬ Line_on l1 p2  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)" by (simp add:Plane_sameside_def)
  from P3 P4 have P5 : "¬ Line_on_Seg l2 (Se p1 p2)" by blast
  from assms P4 have P6 : "Line_on l2 p1  Line_on l1 p1" by (blast intro:Line_on_trans Eq_rev)
  from P4 P6 have P7 : "¬ Line_on l2 p1" by blast
  from assms P4 have P8 : "Line_on l2 p2  Line_on l1 p2" by (blast intro:Line_on_trans Eq_rev)
  from P4 P8 have P9 : "¬ Line_on l2 p2" by blast
  from P4 P5 P7 P9 show "Plane_sameside l2 p1 p2" by (simp add:Plane_sameside_def)
qed

lemma(in Order_Rule) Line_other_Point : 
  assumes "Line_on l1 p1"
  shows "p. Line_on l1 p  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p) add Emp)"
proof -
  have "p q. Line_on l1 p  Line_on l1 q  ¬ Eq (Geos (Poi p) add Emp) (Geos (Poi q) add Emp)" by (blast intro:Line_on_exist)
  then obtain p2 p3 :: Point where P1 : "Line_on l1 p2  Line_on l1 p3  ¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p3) add Emp)" by blast
  then have P2 : "Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)  Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp) 
    Eq (Geos (Poi p2) add Emp) (Geos (Poi p3) add Emp)" by (blast intro:Eq_trans Eq_rev)
  from P1 P2 have "¬ (Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)  Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp))" by blast
  then have P3 : "Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp)
     ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)  Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp)
     ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp)" by blast
  from P1 have P4 : "Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp) 
    p. Line_on l1 p  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p) add Emp)" by blast
  from P1 have P5 : "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)  Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp) 
    p. Line_on l1 p  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p) add Emp)" by blast
  from P1 have P6 : "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p2) add Emp)  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp) 
    p. Line_on l1 p  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p) add Emp)" by blast
  from P3 P4 P5 P6 show "p. Line_on l1 p  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p) add Emp)" by blast
qed

lemma(in Order_Rule) Plane_Bet_sameside : 
  assumes 
    "Bet_Point (Se p1 p3) p2"
    "Line_on l1 p1"
    "¬ Eq (Geos (Lin (Li p1 p3)) add Emp) (Geos (Lin l1) add Emp)"
  shows "Plane_sameside l1 p2 p3"
proof -
  from assms have "p. Line_on l1 p  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p) add Emp)" by (simp add:Line_other_Point)
  then obtain p4 :: Point where P1 : "Line_on l1 p4  ¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p4) add Emp)" by blast
  have P2 : "Line_on (Li p4 p1) p4" by (simp add:Line_on_rule)
  have P3 : "Line_on (Li p4 p1) p1" by (simp add:Line_on_rule)
  have "Plane_diffside (Li p4 p1) p2 p3  
    (p. Bet_Point (Se p2 p3) p  Line_on (Li p4 p1) p  ¬ Line_on (Li p4 p1) p2  ¬ Line_on (Li p4 p1) p3)" by (simp add:Plane_diffside_def)
  then obtain p5 :: Point where P4 : "Plane_diffside (Li p4 p1) p2 p3  
    Bet_Point (Se p2 p3) p5  Line_on (Li p4 p1) p5  ¬ Line_on (Li p4 p1) p2  ¬ Line_on (Li p4 p1) p3" by blast
  then have P5 : "Plane_diffside (Li p4 p1) p2 p3  Bet_Point (Se p3 p2) p5" by (simp add:Bet_rev)
  from assms have P6 : "Bet_Point (Se p3 p1) p2" by (simp add:Bet_rev)
  from P5 P6 have "Plane_diffside (Li p4 p1) p2 p3  Bet_Point (Se p3 p1) p5" by (blast intro:Bet_swap_134_124)
  then have P7 : "Plane_diffside (Li p4 p1) p2 p3  Line_on (Li p3 p1) p5" by (simp add:Line_Bet_on)
  have P8 : "Line_on (Li p3 p1) p1" by (simp add:Line_on_rule)
  from P4 have "Plane_diffside (Li p4 p1) p2 p3  Bet_Point (Se p2 p3) p5" by simp
  then have P9 : "Plane_diffside (Li p4 p1) p2 p3  Eq (Geos (Poi p5) add Emp) (Geos (Poi p1) add Emp) 
    Bet_Point (Se p2 p3) p1" by (simp add:Point_Eq)
  from assms have "Inv (Bet_Point (Se p3 p2) p1)  Inv (Bet_Point (Se p2 p1) p3)" by (simp add:Bet_iff)
  then have "¬ Bet_Point (Se p3 p2) p1" by (simp add:Inv_def)
  then have P10 : "¬ Bet_Point (Se p2 p3) p1" by (blast intro:Bet_rev)
  from P9 P10 have P11 : "Plane_diffside (Li p4 p1) p2 p3  ¬ Eq (Geos (Poi p5) add Emp) (Geos (Poi p1) add Emp)" by blast
  from P3 P4 P7 P8 P11 have P12 : "Plane_diffside (Li p4 p1) p2 p3  
    Eq (Geos (Lin (Li p3 p1)) add Emp) (Geos (Lin (Li p4 p1)) add Emp)" by (simp add:Line_unique)
  have P13 : "Line_on (Li p3 p1) p3" by (simp add:Line_on_rule)
  from P12 P13 have P14 : "Plane_diffside (Li p4 p1) p2 p3  Line_on (Li p4 p1) p3" by (simp add:Line_on_trans)
  from P4 P14 have P15 : "¬ Plane_diffside (Li p4 p1) p2 p3" by blast
  from assms P1 P2 P3 have "Eq (Geos (Lin (Li p4 p1)) add Emp) (Geos (Lin l1) add Emp)" by (simp add:Line_unique)
  then have P16 : "Plane_diffside l1 p2 p3  Plane_diffside (Li p4 p1) p2 p3" by (blast intro:Plane_Line_diff_trans Eq_rev)
  from P15 P16 have P17 : "¬ Plane_diffside l1 p2 p3" by blast
  from assms have P18 : "Line_on (Li p1 p3) p2" by (simp add:Line_Bet_on)
  have P19 : "Line_on (Li p1 p3) p1" by (simp add:Line_on_rule)
  have P20 : "Line_on (Li p1 p3) p3" by (simp add:Line_on_rule)
  from assms have P21 : "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp)" by (simp add:Bet_Point_def)
  from assms P19 P20 P21 have P22 : "Line_on l1 p3  Eq (Geos (Lin (Li p1 p3)) add Emp) (Geos (Lin l1) add Emp)" by (simp add:Line_unique)
  from assms P22 have P23 : "¬ Line_on l1 p3" by blast
  from assms have P24 : "¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p1) add Emp)" by (simp add:Bet_Point_def)
  from assms P18 P19 P24 have P25 : "Line_on l1 p2  Eq (Geos (Lin (Li p1 p3)) add Emp) (Geos (Lin l1) add Emp)" by (simp add:Line_unique)
  from assms P25 have P26 : "¬ Line_on l1 p2" by blast
  from assms have "¬ Eq (Geos (Poi p3) add Emp) (Geos (Poi p2) add Emp)" by (simp add:Bet_Point_def)
  then have P27 : "¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p3) add Emp)" by (blast intro:Eq_rev)
  from P17 P23 P26 P27 show "Plane_sameside l1 p2 p3" by (simp add:Plane_not_diffside_sameside)
qed

lemma(in Order_Rule) Plane_Bet_diffside : 
  assumes 
    "Bet_Point (Se p1 p3) p2"
    "Line_on l1 p2"
    "¬ Eq (Geos (Lin (Li p1 p3)) add Emp) (Geos (Lin l1) add Emp)"
  shows "Plane_diffside l1 p1 p3"
proof -
  from assms have "p. Line_on l1 p  ¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p) add Emp)" by (simp add:Line_other_Point)
  then obtain p4 :: Point where P1 : "Line_on l1 p4  ¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p4) add Emp)" by blast
  from assms have P2 : "Line_on (Li p1 p3) p2" by (simp add:Line_Bet_on)
  from assms P1 P2 have P3 : "Line_on (Li p1 p3) p4  Eq (Geos (Lin (Li p1 p3)) add Emp) (Geos (Lin l1) add Emp)" by (simp add:Line_unique)
  from assms P3 have P4 : "¬ Line_on (Li p1 p3) p4" by blast
  have P5 : "Line_on (Li p4 p2) p4" by (simp add:Line_on_rule)
  have P6 : "Line_on (Li p4 p2) p2" by (simp add:Line_on_rule)
  from assms P4 have P7 : "¬ Eq (Geos (Lin (Li p4 p2)) add Emp) (Geos (Lin (Li p4 p3)) add Emp)" by (simp add:Line_Bet_not_Eq)
  from assms have "Eq (Geos (Poi p2) add Emp) (Geos (Poi p4) add Emp)  Bet_Point (Se p1 p3) p4" by (simp add:Point_Eq)
  then have P8 : "Eq (Geos (Poi p2) add Emp) (Geos (Poi p4) add Emp)  Line_on (Li p1 p3) p4" by (simp add:Line_Bet_on)
  from assms P4 P8 have P9 : "¬ Eq (Geos (Poi p4) add Emp) (Geos (Poi p2) add Emp)" by (blast intro:Eq_rev)
  have "Line_on (Li p1 p3) p3" by (simp add:Line_on_rule)
  then have P10 : "Eq (Geos (Poi p3) add Emp) (Geos (Poi p4) add Emp)  Line_on (Li p1 p3) p4" by (simp add:Point_Eq)
  from assms P4 P10 have P11 : "¬ Eq (Geos (Poi p4) add Emp) (Geos (Poi p3) add Emp)" by (blast intro:Eq_rev)
  from P7 P9 P11 have P12 : "¬ Line_on (Li p4 p2) p3" by (simp add:Line_not_Eq_on)
  from assms have P13 : "Bet_Point (Se p3 p1) p2" by (simp add:Bet_rev)
  from assms have "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp)" by (simp add:Bet_Point_def)
  then have P14 : "Eq (Geos (Lin (Li p1 p3)) add Emp) (Geos (Lin (Li p3 p1)) add Emp)" by (simp add:Line_rev)
  from assms P4 P14 have P15 : "¬ Line_on (Li p3 p1) p4" by (simp add:Line_not_on_trans)
  from P13 P15 have P16 : "¬ Eq (Geos (Lin (Li p4 p2)) add Emp) (Geos (Lin (Li p4 p1)) add Emp)" by (simp add:Line_Bet_not_Eq)
  have "Line_on (Li p1 p3) p1" by (simp add:Line_on_rule)
  then have P17 : "Eq (Geos (Poi p1) add Emp) (Geos (Poi p4) add Emp)  Line_on (Li p1 p3) p4" by (simp add:Point_Eq)
  from assms P4 P17 have P18 : "¬ Eq (Geos (Poi p4) add Emp) (Geos (Poi p1) add Emp)" by (blast intro:Eq_rev)
  from P9 P16 P18 have P19 : "¬ Line_on (Li p4 p2) p1" by (simp add:Line_not_Eq_on)
  from assms P6 P12 P19 have "p. Bet_Point (Se p1 p3) p  Line_on (Li p4 p2) p  ¬ Line_on (Li p4 p2) p1  ¬ Line_on (Li p4 p2) p3" by blast
  then have P20 : "Plane_diffside (Li p4 p2) p1 p3" by (simp add:Plane_diffside_def)
  from assms P1 P5 P6 have P21 : "Eq (Geos (Lin (Li p4 p2)) add Emp) (Geos (Lin l1) add Emp)" by (simp add:Line_unique)
  from P20 P21 show "Plane_diffside l1 p1 p3" by (simp add:Plane_Line_diff_trans)
qed

lemma(in Order_Rule) Plane_trans_inv : 
  assumes 
    "Plane_diffside l1 A B"
    "Plane_diffside l1 A C"
    "¬ Eq (Geos (Poi B) add Emp) (Geos (Poi C) add Emp)"
  shows "Plane_sameside l1 B C"
proof -
  from assms have "p. Bet_Point (Se A B) p  Line_on l1 p  ¬ Line_on l1 A  ¬ Line_on l1 B" by (simp add:Plane_diffside_def)
  then obtain D :: Point where P1 : "Bet_Point (Se A B) D  Line_on l1 D  ¬ Line_on l1 A  ¬ Line_on l1 B" by blast
  then have P2 : "Bet_Point (Se A B) D" by simp
  from assms have "p. Bet_Point (Se A C) p  Line_on l1 p  ¬ Line_on l1 A  ¬ Line_on l1 C" by (simp add:Plane_diffside_def)
  then obtain p2 :: Point where P3 : "Bet_Point (Se A C) p2  Line_on l1 p2  ¬ Line_on l1 A  ¬ Line_on l1 C" by blast
  then have "Bet_Point (Se A C) p2" by simp
  then have P4 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi C) add Emp)" by (simp add:Bet_Point_def)
  from P3 have P5 : "¬ Line_on l1 C" by simp
  from P1 have P6 : "Line_on l1 D" by simp
  from P1 have P7 : "¬ Line_on l1 A" by simp
  from P1 have P8 : "¬ Line_on l1 B" by simp
  from P2 P5 P6 P7 P8 have P9 : "¬ Line_on (Li A B) C  Line_on_Seg l1 (Se A C)  ¬ Line_on_Seg l1 (Se B C)
         Line_on_Seg l1 (Se B C)  ¬ Line_on_Seg l1 (Se A C)" by (simp add:Pachets_axiom)
  from P3 have "Bet_Point (Se A C) p2  Line_on l1 p2" by simp
  then have "p. Line_on l1 p  Bet_Point (Se A C) p" by blast
  then have P10 : "Line_on_Seg l1 (Se A C)" by (simp add:Line_on_Seg_rule)
  from P9 P10 have P11 : "¬ Line_on (Li A B) C  ¬ Line_on_Seg l1 (Se B C)" by blast
  from assms P5 P8 P11 have P12 : "¬ Line_on (Li A B) C  Plane_sameside l1 B C" by (simp add:Plane_sameside_def)
  from P6 have P13 : "Eq (Geos (Poi D) add Emp) (Geos (Poi C) add Emp)  Line_on l1 C" by (simp add:Point_Eq)
  from P5 P13 have P14 : "¬ Eq (Geos (Poi D) add Emp) (Geos (Poi C) add Emp)" by blast
  from P2 have P15 : "Line_on (Li A B) D" by (simp add:Line_Bet_on)
  from P2 have P16 : "Line_on (Li A B) A" by (simp add:Line_on_rule)
  from P2 have P17 : "Line_on (Li A B) B" by (simp add:Line_on_rule)
  from assms P2 P4 P14 P15 P16 P17 have P18 : "Line_on (Li A B) C  Bet_Point (Se A C) B  Bet_Point (Se B C) A
     Bet_Point (Se A B) C  Bet_Point (Se A C) D  Bet_Point (Se A D) C  Bet_Point (Se D C) A" by (simp add:Bet_four_Point_case)  
  from P2 have P19 : "Line_on (Li A B) C  Bet_Point (Se A C) B  Bet_Point (Se D C) B" by (blast intro:Bet_swap_134_234)
  have "Line_on (Li D C) C" by (simp add:Line_on_rule)
  then have P20 : "Eq (Geos (Lin (Li D C)) add Emp) (Geos (Lin l1) add Emp)  Line_on l1 C" by (simp add:Line_on_trans)
  from P5 P20 have P21 : "¬ Eq (Geos (Lin (Li D C)) add Emp) (Geos (Lin l1) add Emp)" by blast
  from P6 P19 P21 have P22 : "Line_on (Li A B) C  Bet_Point (Se A C) B  Plane_sameside l1 B C" by (simp add:Plane_Bet_sameside)
  from P2 have "Bet_Point (Se B A) D" by (simp add:Bet_rev)
  then have P23 : "Bet_Point (Se B C) A  Bet_Point (Se D C) A" by (blast intro:Bet_swap_134_234)
  from P6 P21 P23 have P24 : "Bet_Point (Se B C) A  Plane_sameside l1 A C" by (simp add:Plane_Bet_sameside)
  from assms have P25 : "¬ Plane_sameside l1 A C" by (simp add:Plane_diffside_not_sameside)
  from P24 P25 have P26 : "¬ Bet_Point (Se B C) A" by blast 
  have "Bet_Point (Se A B) C  Bet_Point (Se A C) D  Bet_Point (Se B A) C  Bet_Point (Se C A) D" by (simp add:Bet_rev)
  then have P27 : "Bet_Point (Se A B) C  Bet_Point (Se A C) D  Bet_Point (Se D B) C" by (blast intro:Bet_swap_243_124 Bet_rev)
  have "Line_on (Li D B) B" by (simp add:Line_on_rule)
  then have P28 : "Eq (Geos (Lin (Li D B)) add Emp) (Geos (Lin l1) add Emp)  Line_on l1 B" by (simp add:Line_on_trans)
  from P8 P28 have P29 : "¬ Eq (Geos (Lin (Li D B)) add Emp) (Geos (Lin l1) add Emp)" by blast
  from P6 P27 P29 have P30 : "Bet_Point (Se A B) C  Bet_Point (Se A C) D  Plane_sameside l1 B C" by (simp add:Plane_Bet_sameside Plane_sameside_rev)
  have P31 : "Bet_Point (Se A D) C  Bet_Point (Se D A) C" by (simp add:Bet_rev)
  have "Line_on (Li D A) A" by (simp add:Line_on_rule)
  then have P32 : "Eq (Geos (Lin (Li D A)) add Emp) (Geos (Lin l1) add Emp)  Line_on l1 A" by (simp add:Line_on_trans)
  from P7 P32 have P33 : "¬ Eq (Geos (Lin (Li D A)) add Emp) (Geos (Lin l1) add Emp)" by blast
  from P6 P31 P33 have P34 : "Bet_Point (Se A D) C  Plane_sameside l1 A C" by (simp add:Plane_Bet_sameside Plane_sameside_rev)
  from P25 P34 have P35 : "¬ Bet_Point (Se A D) C" by blast
  from P6 P21 have P36 : "Bet_Point (Se D C) A  Plane_sameside l1 A C" by (simp add:Plane_Bet_sameside)
  from P25 P36 have P37 : "¬ Bet_Point (Se D C) A" by blast
  from P18 P22 P26 P30 P35 P37 have P38 : "Line_on (Li A B) C  Plane_sameside l1 B C" by blast
  from P12 P38 show "Plane_sameside l1 B C" by blast
qed 

lemma(in Order_Rule) Plane_trans : 
  assumes 
    "Plane_sameside l1 A B"
    "Plane_diffside l1 A C"
  shows "Plane_diffside l1 B C"
proof -
  from assms have "p. Bet_Point (Se A C) p  Line_on l1 p  ¬ Line_on l1 A  ¬ Line_on l1 C" by (simp add:Plane_diffside_def)
  then obtain D :: Point where P1 : "Bet_Point (Se A C) D  Line_on l1 D  ¬ Line_on l1 A  ¬ Line_on l1 C" by blast
  from assms have P2 : "¬ Line_on l1 B" by (simp add:Plane_sameside_def)
  from P1 have P3 : "Bet_Point (Se A C) D" by simp
  from P1 have P4 : "¬ Line_on l1 A" by simp
  from P1 have P5 : "¬ Line_on l1 C" by simp
  from P1 have P6 : "Line_on l1 D" by simp
  from P2 P3 P4 P5 P6 have P7 : "¬ Line_on (Li A C) B  Line_on_Seg l1 (Se A B)  ¬ Line_on_Seg l1 (Se C B)
     Line_on_Seg l1 (Se C B)  ¬ Line_on_Seg l1 (Se A B)" by (simp add:Pachets_axiom)
  have P8 : "Line_on_Seg l1 (Se A B)  p. Line_on l1 p  Bet_Point (Se A B) p" by (simp add:Line_on_Seg_rule)
  from P2 P4 P8 have "Line_on_Seg l1 (Se A B)  p. Bet_Point (Se A B) p  Line_on l1 p  ¬ Line_on l1 A  ¬ Line_on l1 B" by blast
  then have "Line_on_Seg l1 (Se A B)  Plane_diffside l1 A B" by (simp add:Plane_diffside_def)
  then have P9 : "Line_on_Seg l1 (Se A B)  ¬ Plane_sameside l1 A B" by (simp add:Plane_diffside_not_sameside)
  from assms P9 have P10 : "¬ Line_on_Seg l1 (Se A B)" by blast
  from P7 P10 have "¬ Line_on (Li A C) B  Line_on_Seg l1 (Se C B)"by blast
  then have P11 : "¬ Line_on (Li A C) B  p. Line_on l1 p  Bet_Point (Se C B) p" by (simp add:Line_on_Seg_rule)
  from P2 P5 P11 have "¬ Line_on (Li A C) B  p. Bet_Point (Se C B) p  Line_on l1 p  ¬ Line_on l1 C  ¬ Line_on l1 B" by blast
  then have "¬ Line_on (Li A C) B  Plane_diffside l1 C B" by (simp add:Plane_diffside_def)
  then have P12 : "¬ Line_on (Li A C) B  Plane_diffside l1 B C" by (simp add:Plane_diffside_rev)
  have P13 : "Line_on (Li A C) A" by (simp add:Line_on_rule)
  have P14 : "Line_on (Li A C) C" by (simp add:Line_on_rule)
  from P3 have P15 : "Line_on (Li A C) D" by (simp add:Line_Bet_on)
  from assms have "Eq (Geos (Poi C) add Emp) (Geos (Poi B) add Emp)  Plane_sameside l1 A C" by (blast intro:Point_Eq Eq_rev)
  then have P16 : "Eq (Geos (Poi C) add Emp) (Geos (Poi B) add Emp)  ¬ Plane_diffside l1 A C" by (simp add:Plane_sameside_not_diffside)
  from assms P16 have P17 : "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi B) add Emp)" by blast
  from P6 have P18 : "Eq (Geos (Poi D) add Emp) (Geos (Poi B) add Emp)  Line_on l1 B" by (simp add:Point_Eq)
  from P2 P18 have P19 : "¬ Eq (Geos (Poi D) add Emp) (Geos (Poi B) add Emp)" by blast
  from assms have P20 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi B) add Emp)" by (simp add:Plane_sameside_def)
  from assms P3 P13 P14 P15 P17 P19 P20 have P21 : "Line_on (Li A C) B  Bet_Point (Se A B) C  Bet_Point (Se C B) A
     Bet_Point (Se A C) B  Bet_Point (Se A B) D  Bet_Point (Se A D) B  Bet_Point (Se D B) A" by (simp add:Bet_four_Point_case)
  from P3 have P22 : "Bet_Point (Se A B) C  Bet_Point (Se A B) D" by (blast intro:Bet_swap_134_124)
  have "Line_on (Li A B) A" by (simp add:Line_on_rule)
  then have P23 : "Eq (Geos (Lin (Li A B)) add Emp) (Geos (Lin l1) add Emp)  Line_on l1 A" by (simp add:Line_on_trans)
  from P4 P23 have P24 : "¬ Eq (Geos (Lin (Li A B)) add Emp) (Geos (Lin l1) add Emp)" by blast
  from P6 P22 P24 have "Bet_Point (Se A B) C  Plane_diffside l1 A B" by (simp add:Plane_Bet_diffside)
  then have P25 : "Bet_Point (Se A B) C  ¬ Plane_sameside l1 A B" by (simp add:Plane_diffside_not_sameside)
  from assms P25 have P26 : "¬ Bet_Point (Se A B) C" by blast
  from P3 have P27 : "Bet_Point (Se C A) D" by (simp add:Bet_rev)
  from P27 have P28 : "Bet_Point (Se C B) A  Bet_Point (Se C B) D" by (blast intro:Bet_swap_134_124)
  have "Line_on (Li C B) B" by (simp add:Line_on_rule)
  then have P29 : "Eq (Geos (Lin (Li C B)) add Emp) (Geos (Lin l1) add Emp)  Line_on l1 B" by (simp add:Line_on_trans)
  from P2 P29 have P30 : "¬ Eq (Geos (Lin (Li C B)) add Emp) (Geos (Lin l1) add Emp)" by blast
  from P6 P28 P30 have "Bet_Point (Se C B) A  Plane_diffside l1 C B" by (simp add:Plane_Bet_diffside)
  then have P31 : "Bet_Point (Se C B) A  Plane_diffside l1 B C" by (blast intro:Plane_diffside_rev)  
  from P6 P24 have "Bet_Point (Se A B) D  Plane_diffside l1 A B" by (simp add:Plane_Bet_diffside)
  then have P32 : "Bet_Point (Se A B) D  ¬ Plane_sameside l1 A B" by (simp add:Plane_diffside_not_sameside)
  from assms P32 have "¬ Bet_Point (Se A B) D" by blast
  then have P33 : "¬ (Bet_Point (Se A C) B  Bet_Point (Se A B) D)" by blast
  from P3 have P34 : "Bet_Point (Se A D) B  Bet_Point (Se C B) D" by (blast intro:Bet_swap_134_234 Bet_rev)
  from P6 P30 P34 have "Bet_Point (Se A D) B  Plane_diffside l1 C B" by (simp add:Plane_Bet_diffside)
  then have P35 : "Bet_Point (Se A D) B  Plane_diffside l1 B C" by (simp add:Plane_diffside_rev)
  from P27 have P36 : "Bet_Point (Se D B) A  Bet_Point (Se C B) D" by (blast intro:Bet_swap_234_124 Bet_rev)
  from P6 P30 P36 have "Bet_Point (Se D B) A  Plane_diffside l1 C B" by (simp add:Plane_Bet_diffside)
  then have P37 : "Bet_Point (Se D B) A  Plane_diffside l1 B C" by (simp add:Plane_diffside_rev)
  from P21 P26 P31 P33 P35 P37 have P38 : "Line_on (Li A C) B  Plane_diffside l1 B C" by blast
  from P12 P38 show "Plane_diffside l1 B C" by blast
qed

lemma(in Order_Rule) Plane_sameside_trans : 
  assumes 
    "Plane_sameside l1 A B"
    "Plane_sameside l1 B C"
    "¬ Eq (Geos (Poi C) add Emp) (Geos (Poi A) add Emp)"
  shows "Plane_sameside l1 A C"
proof -
  from assms have P1 : "Plane_diffside l1 A C  Plane_diffside l1 B C" by (blast intro:Plane_trans)
  from assms have P2 : "¬ Plane_diffside l1 B C" by (simp add:Plane_sameside_not_diffside)
  from P1 P2 have P3 : "¬ Plane_diffside l1 A C" by blast
  from assms have P4 : "¬ Line_on l1 A" by (simp add:Plane_sameside_def)
  from assms have P5 : "¬ Line_on l1 C" by (simp add:Plane_sameside_def)
  from assms have P6 : "¬ Eq (Geos (Poi A) add Emp) (Geos (Poi C) add Emp)" by (blast intro:Eq_rev)
  from P3 P4 P5 P6 show "Plane_sameside l1 A C" by (simp add:Plane_not_diffside_sameside)
qed

lemma (in Order_Rule) Seg_Bet_not_on : 
  assumes 
    "Bet_Point (Se p1 p3) p2"
  shows "¬ Seg_on_Seg (Se p1 p2) (Se p2 p3)"
proof -
  from assms have "l. Line_on l p1  Line_on l p3  Line_on l p2" by (simp add:Line_Bet_exist)
  then obtain l1 :: Line where P1 : "Line_on l1 p1  Line_on l1 p3  Line_on l1 p2" by blast
  have "Seg_on_Seg (Se p1 p2) (Se p2 p3)  p. Bet_Point (Se p1 p2) p  Bet_Point (Se p2 p3) p" by (simp add:Seg_on_Seg_rule)
  then obtain p4 :: Point where P2 : "Seg_on_Seg (Se p1 p2) (Se p2 p3)  Bet_Point (Se p1 p2) p4  Bet_Point (Se p2 p3) p4" by blast
  then have P3 : "Seg_on_Seg (Se p1 p2) (Se p2 p3)  Bet_Point (Se p2 p1) p4" by (blast intro:Bet_rev)
  from assms have P4 : "Bet_Point (Se p3 p1) p2" by (simp add:Bet_rev)
  from P3 P4 have P5 : "Seg_on_Seg (Se p1 p2) (Se p2 p3)  Bet_Point (Se p3 p1) p4" by (blast intro:Bet_swap_243_143)
  have "p q r. ¬ Line_on l1 p  ¬ Line_on l1 q  ¬ Line_on l1 r
         ¬ Eq (Geos (Poi p) add Emp) (Geos (Poi q) add Emp)  ¬ Eq (Geos (Poi q) add Emp) (Geos (Poi r) add Emp)
         ¬ Eq (Geos (Poi r) add Emp) (Geos (Poi p) add Emp)" by (blast intro:Line_not_on_exist)
  then obtain p5 :: Point where P6 : "¬ Line_on l1 p5" by blast
  have P7 : "Line_on (Li p5 p4) p5" by (simp add:Line_on_rule)
  have P8 : "Line_on (Li p3 p1) p3" by (simp add:Line_on_rule)
  have P9 : "Line_on (Li p3 p1) p1" by (simp add:Line_on_rule)
  from assms have P10 : "¬ Eq (Geos (Poi p1) add Emp) (Geos (Poi p3) add Emp)" by (simp add:Bet_Point_def)
  from P1 P8 P9 P10 have "Eq (Geos (Lin (Li p3 p1)) add Emp) (Geos (Lin l1) add Emp)" by (simp add:Line_unique)
  then have P11 : "Line_on (Li p3 p1) p5  Line_on l1 p5" by (simp add:Line_on_trans)
  from P6 P11 have P12 : "¬ Line_on (Li p3 p1) p5" by blast
  from P7 have P13 : "Eq (Geos (Lin (Li p5 p4)) add Emp) (Geos (Lin (Li p3 p1)) add Emp)  Line_on (Li p3 p1) p5" by (simp add:Line_on_trans)
  from P12 P13 have P14 : "¬ Eq (Geos (Lin (Li p3 p1)) add Emp) (Geos (Lin (Li p5 p4)) add Emp)" by (blast intro:Eq_rev)
  have P15 : "Line_on (Li p5 p4) p4" by (simp add:Line_on_rule)
  from P5 P14 P15 have P16 : "Seg_on_Seg (Se p1 p2) (Se p2 p3)  Plane_diffside (Li p5 p4) p3 p1" by (simp add:Plane_Bet_diffside)
  have P17 : "Line_on (Li p1 p2) p1" by (simp add:Line_on_rule)
  have P18 : "Line_on (Li p1 p2) p2" by (simp add:Line_on_rule)
  from assms have P19 : "¬ Eq (Geos (Poi p2) add Emp) (Geos (Poi p1) add Emp)" by (simp add:Bet_Point_def)
  from P1 P17 P18 P19 have "Eq (Geos (Lin (Li p1 p2)) add Emp) (Geos (Lin l1) add Emp)" by (simp add:Line_unique)
  then have P20 : "Line_on (Li p1 p2) p5  Line_on l1 p5" by (simp add:Line_on_trans)
  from P6 P20 have P21 : "¬ Line_on (Li p1 p2) p5" by blast
  from P7 have P22 : "Eq (Geos (Lin (Li p5 p4)) add Emp) (Geos (Lin (Li p1 p2)) add Emp)  Line_on (Li p1 p2) p5" by (simp add:Line_on_trans)
  from P21 P22 have P23 : "¬ Eq (Geos (Lin (Li p1 p2)) add Emp) (Geos (Lin (Li p5 p4)) add Emp)" by (blast intro:Eq_rev)
  from P2 have P24 : "Seg_on_Seg (Se p1 p2) (Se p2 p3)  Bet_Point (Se p1 p2) p4" by simp
  from P15 P23 P24 have "Seg_on_Seg (Se p1 p2) (Se p2 p3)  Plane_diffside (Li p5 p4) p1 p2" by (simp add:Plane_Bet_diffside)
  then have P25 : "Seg_on_Seg (Se p1 p2) (Se p2 p3)  Plane_diffside (Li p5 p4) p2 p1" by (simp add:Plane_diffside_rev)
  have P26 : "Line_on (Li p2 p3) p2" by (simp add:Line_on_rule)
  have P27 : "Line_on (Li p2 p3) p3" by (simp add:Line_on_rule)
  from assms have P28 : "¬ Eq (Geos (Poi p3) add Emp) (Geos (Poi p2) add Emp)" by (simp add:Bet_Point_def)
  from P1 P26 P27 P28 have "Eq (Geos (Lin (Li p2 p3)) add Emp) (Geos (Lin l1) add Emp)" by (simp add:Line_unique)
  then have P29 : "Line_on (Li p2 p3) p5  Line_on l1 p5" by (simp add:Line_on_trans)
  from P6 P29 have P30 : "¬ Line_on (Li p2 p3) p5" by blast
  from P7 have P31 : "Eq (Geos (Lin (Li p5 p4)) add Emp) (Geos (Lin (Li p2 p3)) add Emp)  Line_on (Li p2 p3) p5" by (simp add:Line_on_trans)
  from P30 P31 have P32 : "¬ Eq (Geos (Lin (Li p2 p3)) add Emp) (Geos (Lin (Li p5 p4)) add Emp)" by (blast intro:Eq_rev)
  from P2 have P33 : "Seg_on_Seg (Se p1 p2) (Se p2 p3)  Bet_Point (Se p2 p3) p4" by simp
  from P15 P32 P33 have P34 : "Seg_on_Seg (Se p1 p2) (Se p2 p3)  Plane_diffside (Li p5 p4) p2 p3" by (simp add:Plane_Bet_diffside)
  from P10 P25 P28 P34 have "Seg_on_Seg (Se p1 p2) (Se p2 p3)  Plane_sameside (Li p5 p4) p1 p3" by (blast intro:Plane_trans_inv)
  then have "Seg_on_Seg (Se p1 p2) (Se p2 p3)  Plane_sameside (Li p5 p4) p3 p1" by (simp add:Plane_sameside_rev)
  then have P35 : "Seg_on_Seg (Se p1 p2) (Se p2 p3)  ¬ Plane_diffside (Li p5 p4) p3 p1" by (simp add:Plane_sameside_not_diffside)
  from P16 P35 show "¬ Seg_on_Seg (Se p1 p2) (Se p2 p3)" by blast
qed

end