[STATEMENT]
theorem (in Congruence_Rule) Ang_Right_angle_Cong :
  assumes
    "Right_angle (An l1 o1 h1)" "Right_angle (An l2 o2 h2)"
  shows
    "Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from assms
[PROOF STATE]
proof (chain)
picking this:
Right_angle (An l1 o1 h1)
Right_angle (An l2 o2 h2)
[PROOF STEP]
have "\<exists>p. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 p)) add Emp)
        \<and> Bet_Point (Se h1 p) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 p))"
[PROOF STATE]
proof (prove)
using this:
Right_angle (An l1 o1 h1)
Right_angle (An l2 o2 h2)

goal (1 subgoal):
 1. \<exists>p. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 p)) add Emp) \<and> Bet_Point (Se h1 p) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 p))
[PROOF STEP]
by (simp add:Ang_Right_angle_def)
[PROOF STATE]
proof (state)
this:
\<exists>p. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 p)) add Emp) \<and> Bet_Point (Se h1 p) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 p))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<exists>p. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 p)) add Emp) \<and> Bet_Point (Se h1 p) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 p))
[PROOF STEP]
obtain k1 :: Point where P1 : "Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)
        \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))"
[PROOF STATE]
proof (prove)
using this:
\<exists>p. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 p)) add Emp) \<and> Bet_Point (Se h1 p) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 p))

goal (1 subgoal):
 1. (\<And>k1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1)) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from assms
[PROOF STATE]
proof (chain)
picking this:
Right_angle (An l1 o1 h1)
Right_angle (An l2 o2 h2)
[PROOF STEP]
have "\<exists>p. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 p)) add Emp)
        \<and> Bet_Point (Se h2 p) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 p))"
[PROOF STATE]
proof (prove)
using this:
Right_angle (An l1 o1 h1)
Right_angle (An l2 o2 h2)

goal (1 subgoal):
 1. \<exists>p. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 p)) add Emp) \<and> Bet_Point (Se h2 p) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 p))
[PROOF STEP]
by (simp add:Ang_Right_angle_def)
[PROOF STATE]
proof (state)
this:
\<exists>p. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 p)) add Emp) \<and> Bet_Point (Se h2 p) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 p))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<exists>p. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 p)) add Emp) \<and> Bet_Point (Se h2 p) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 p))
[PROOF STEP]
obtain k2 :: Point where P2 : "Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp)
        \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))"
[PROOF STATE]
proof (prove)
using this:
\<exists>p. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 p)) add Emp) \<and> Bet_Point (Se h2 p) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 p))

goal (1 subgoal):
 1. (\<And>k2. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2)) \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
[PROOF STEP]
have P3 : "\<not> Line_on (Li o1 h1) l1"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))

goal (1 subgoal):
 1. \<not> Line_on (Li o1 h1) l1
[PROOF STEP]
by (simp add:Ang_to_Tri Tri_def_Line)
[PROOF STATE]
proof (state)
this:
\<not> Line_on (Li o1 h1) l1

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1 P2 P3
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
\<not> Line_on (Li o1 h1) l1
[PROOF STEP]
have "\<exists>p. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An p o1 h1)) add Emp)
    \<and> Plane_sameside (Li o1 h1) p l1"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
\<not> Line_on (Li o1 h1) l1

goal (1 subgoal):
 1. \<exists>p. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An p o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) p l1
[PROOF STEP]
by (simp add:Ang_move_sameside)
[PROOF STATE]
proof (state)
this:
\<exists>p. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An p o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) p l1

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<exists>p. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An p o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) p l1
[PROOF STEP]
obtain l11 :: Point where P4 : "Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
    \<and> Plane_sameside (Li o1 h1) l11 l1"
[PROOF STATE]
proof (prove)
using this:
\<exists>p. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An p o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) p l1

goal (1 subgoal):
 1. (\<And>l11. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1 \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
[PROOF STEP]
have P5 : "\<not> Line_on (Li o1 h1) l11"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1

goal (1 subgoal):
 1. \<not> Line_on (Li o1 h1) l11
[PROOF STEP]
by (simp add:Plane_sameside_def)
[PROOF STATE]
proof (state)
this:
\<not> Line_on (Li o1 h1) l11

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
[PROOF STEP]
have P6 : "\<not> Eq (Geos (Poi o1) add Emp) (Geos (Poi h1) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))

goal (1 subgoal):
 1. \<not> Eq (Geos (Poi o1) add Emp) (Geos (Poi h1) add Emp)
[PROOF STEP]
by (simp add:Ang_def)
[PROOF STATE]
proof (state)
this:
\<not> Eq (Geos (Poi o1) add Emp) (Geos (Poi h1) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P5 P6
[PROOF STATE]
proof (chain)
picking this:
\<not> Line_on (Li o1 h1) l11
\<not> Eq (Geos (Poi o1) add Emp) (Geos (Poi h1) add Emp)
[PROOF STEP]
have "Def (Ang (An o1 h1 l11))"
[PROOF STATE]
proof (prove)
using this:
\<not> Line_on (Li o1 h1) l11
\<not> Eq (Geos (Poi o1) add Emp) (Geos (Poi h1) add Emp)

goal (1 subgoal):
 1. Def (Ang (An o1 h1 l11))
[PROOF STEP]
by (simp add:Ang_sinple_def)
[PROOF STATE]
proof (state)
this:
Def (Ang (An o1 h1 l11))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
Def (Ang (An o1 h1 l11))
[PROOF STEP]
have P7 : "Def (Ang (An l11 o1 h1))"
[PROOF STATE]
proof (prove)
using this:
Def (Ang (An o1 h1 l11))

goal (1 subgoal):
 1. Def (Ang (An l11 o1 h1))
[PROOF STEP]
by (blast intro:Ang_def_rev Ang_def_inv)
[PROOF STATE]
proof (state)
this:
Def (Ang (An l11 o1 h1))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P2 P4 P7
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
Def (Ang (An l11 o1 h1))
[PROOF STEP]
have P8 : "Cong (Geos (Ang (An l2 o2 k2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
Def (Ang (An l11 o1 h1))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l2 o2 k2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
[PROOF STEP]
by (blast intro:Ang_rev Ang_trans)
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l2 o2 k2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P2
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
[PROOF STEP]
have P9 : "Def (Ang (An h2 o2 l2))"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))

goal (1 subgoal):
 1. Def (Ang (An h2 o2 l2))
[PROOF STEP]
by (simp add:Ang_def_rev)
[PROOF STATE]
proof (state)
this:
Def (Ang (An h2 o2 l2))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P7
[PROOF STATE]
proof (chain)
picking this:
Def (Ang (An l11 o1 h1))
[PROOF STEP]
have P10 : "Def (Ang (An h1 o1 l11))"
[PROOF STATE]
proof (prove)
using this:
Def (Ang (An l11 o1 h1))

goal (1 subgoal):
 1. Def (Ang (An h1 o1 l11))
[PROOF STEP]
by (simp add:Ang_def_rev)
[PROOF STATE]
proof (state)
this:
Def (Ang (An h1 o1 l11))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
have P11 : "Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An h2 o2 l2)) add Emp)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An h2 o2 l2)) add Emp)
[PROOF STEP]
by (simp add:Ang_roll)
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An h2 o2 l2)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
have P12 : "Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An h1 o1 l11)) add Emp)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An h1 o1 l11)) add Emp)
[PROOF STEP]
by (simp add:Ang_roll)
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An h1 o1 l11)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P2 P4 P7 P9 P11
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
Def (Ang (An l11 o1 h1))
Def (Ang (An h2 o2 l2))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An h2 o2 l2)) add Emp)
[PROOF STEP]
have P13 : "Cong (Geos (Ang (An h2 o2 l2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
Def (Ang (An l11 o1 h1))
Def (Ang (An h2 o2 l2))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An h2 o2 l2)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An h2 o2 l2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
[PROOF STEP]
by (blast intro:Ang_rev Ang_trans)
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An h2 o2 l2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P7 P9 P10 P12 P13
[PROOF STATE]
proof (chain)
picking this:
Def (Ang (An l11 o1 h1))
Def (Ang (An h2 o2 l2))
Def (Ang (An h1 o1 l11))
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An h1 o1 l11)) add Emp)
Cong (Geos (Ang (An h2 o2 l2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
[PROOF STEP]
have P14 : "Cong (Geos (Ang (An h2 o2 l2)) add Emp) (Geos (Ang (An h1 o1 l11)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Def (Ang (An l11 o1 h1))
Def (Ang (An h2 o2 l2))
Def (Ang (An h1 o1 l11))
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An h1 o1 l11)) add Emp)
Cong (Geos (Ang (An h2 o2 l2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An h2 o2 l2)) add Emp) (Geos (Ang (An h1 o1 l11)) add Emp)
[PROOF STEP]
by (blast intro:Ang_rev Ang_trans)
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An h2 o2 l2)) add Emp) (Geos (Ang (An h1 o1 l11)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1 P2 P9 P10 P14
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
Def (Ang (An h2 o2 l2))
Def (Ang (An h1 o1 l11))
Cong (Geos (Ang (An h2 o2 l2)) add Emp) (Geos (Ang (An h1 o1 l11)) add Emp)
[PROOF STEP]
have P15 : "Cong (Geos (Ang (An l2 o2 k2)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
Def (Ang (An h2 o2 l2))
Def (Ang (An h1 o1 l11))
Cong (Geos (Ang (An h2 o2 l2)) add Emp) (Geos (Ang (An h1 o1 l11)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l2 o2 k2)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
[PROOF STEP]
by (simp add:Ang_complementary)
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l2 o2 k2)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1 P4 P7
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
Def (Ang (An l11 o1 h1))
[PROOF STEP]
have P16 : "Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp) \<Longrightarrow>
    Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
Def (Ang (An l11 o1 h1))

goal (1 subgoal):
 1. Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp) \<Longrightarrow> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)
[PROOF STEP]
by (simp add:Ang_move_unique_inv)
[PROOF STATE]
proof (state)
this:
Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp) \<Longrightarrow> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1 P2 P4 P7 P16
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
Def (Ang (An l11 o1 h1))
Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp) \<Longrightarrow> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)
[PROOF STEP]
have "Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp) \<Longrightarrow>
    Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
Def (Ang (An l11 o1 h1))
Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp) \<Longrightarrow> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)

goal (1 subgoal):
 1. Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp) \<Longrightarrow> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
by (blast intro:Ang_trans Ang_rev)
[PROOF STATE]
proof (state)
this:
Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp) \<Longrightarrow> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp) \<Longrightarrow> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
have P17 : "\<not> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp) \<Longrightarrow>
    \<not> Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp) \<Longrightarrow> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)

goal (1 subgoal):
 1. \<not> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp) \<Longrightarrow> \<not> Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<not> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp) \<Longrightarrow> \<not> Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1 P4 P7 P17
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
Def (Ang (An l11 o1 h1))
\<not> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp) \<Longrightarrow> \<not> Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp)
[PROOF STEP]
have P18 : "\<not> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp) \<Longrightarrow>
    Ang_inside (An l11 o1 h1) l1 \<and> \<not> Ang_inside (An l1 o1 h1) l11
    \<or> \<not> Ang_inside (An l11 o1 h1) l1 \<and> Ang_inside (An l1 o1 h1) l11"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
Def (Ang (An l11 o1 h1))
\<not> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp) \<Longrightarrow> \<not> Eq (Geos (Lin (Li o1 l11)) add Emp) (Geos (Lin (Li o1 l1)) add Emp)

goal (1 subgoal):
 1. \<not> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp) \<Longrightarrow> Ang_inside (An l11 o1 h1) l1 \<and> \<not> Ang_inside (An l1 o1 h1) l11 \<or> \<not> Ang_inside (An l11 o1 h1) l1 \<and> Ang_inside (An l1 o1 h1) l11
[PROOF STEP]
by (simp add:Ang_inside_case)
[PROOF STATE]
proof (state)
this:
\<not> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp) \<Longrightarrow> Ang_inside (An l11 o1 h1) l1 \<and> \<not> Ang_inside (An l1 o1 h1) l11 \<or> \<not> Ang_inside (An l11 o1 h1) l1 \<and> Ang_inside (An l1 o1 h1) l11

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P4
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
[PROOF STEP]
have P19 : "Plane_sameside (Li o1 h1) l1 l11"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1

goal (1 subgoal):
 1. Plane_sameside (Li o1 h1) l1 l11
[PROOF STEP]
by (simp add:Plane_sameside_rev)
[PROOF STATE]
proof (state)
this:
Plane_sameside (Li o1 h1) l1 l11

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
have P20 : "Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P19 P20
[PROOF STATE]
proof (chain)
picking this:
Plane_sameside (Li o1 h1) l1 l11
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)
[PROOF STEP]
have P21 : "Ang_inside (An l11 o1 h1) l1 \<Longrightarrow>
    Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Plane_sameside (Li o1 h1) l1 l11
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)

goal (1 subgoal):
 1. Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)
[PROOF STEP]
by (simp add:Ang_greater_def)
[PROOF STATE]
proof (state)
this:
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
[PROOF STEP]
have P22 : "Line_on (Li o1 h1) k1"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))

goal (1 subgoal):
 1. Line_on (Li o1 h1) k1
[PROOF STEP]
by (simp add:Line_Bet_on)
[PROOF STATE]
proof (state)
this:
Line_on (Li o1 h1) k1

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
have P23 : "Line_on (Li o1 h1) o1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Line_on (Li o1 h1) o1
[PROOF STEP]
by (simp add:Line_on_rule)
[PROOF STATE]
proof (state)
this:
Line_on (Li o1 h1) o1

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
have P24 : "Line_on (Li o1 k1) k1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Line_on (Li o1 k1) k1
[PROOF STEP]
by (simp add:Line_on_rule)
[PROOF STATE]
proof (state)
this:
Line_on (Li o1 k1) k1

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
have P25 : "Line_on (Li o1 k1) o1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Line_on (Li o1 k1) o1
[PROOF STEP]
by (simp add:Line_on_rule)
[PROOF STATE]
proof (state)
this:
Line_on (Li o1 k1) o1

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
[PROOF STEP]
have P26 : "Bet_Point (Se h1 k1) o1"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))

goal (1 subgoal):
 1. Bet_Point (Se h1 k1) o1
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Bet_Point (Se h1 k1) o1

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
Bet_Point (Se h1 k1) o1
[PROOF STEP]
have P27 : "\<not> Eq (Geos (Poi k1) add Emp) (Geos (Poi o1) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Bet_Point (Se h1 k1) o1

goal (1 subgoal):
 1. \<not> Eq (Geos (Poi k1) add Emp) (Geos (Poi o1) add Emp)
[PROOF STEP]
by (simp add:Bet_Point_def)
[PROOF STATE]
proof (state)
this:
\<not> Eq (Geos (Poi k1) add Emp) (Geos (Poi o1) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P22 P23 P24 P25 P27
[PROOF STATE]
proof (chain)
picking this:
Line_on (Li o1 h1) k1
Line_on (Li o1 h1) o1
Line_on (Li o1 k1) k1
Line_on (Li o1 k1) o1
\<not> Eq (Geos (Poi k1) add Emp) (Geos (Poi o1) add Emp)
[PROOF STEP]
have P28 : "Eq (Geos (Lin (Li o1 h1)) add Emp) (Geos (Lin (Li o1 k1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Line_on (Li o1 h1) k1
Line_on (Li o1 h1) o1
Line_on (Li o1 k1) k1
Line_on (Li o1 k1) o1
\<not> Eq (Geos (Poi k1) add Emp) (Geos (Poi o1) add Emp)

goal (1 subgoal):
 1. Eq (Geos (Lin (Li o1 h1)) add Emp) (Geos (Lin (Li o1 k1)) add Emp)
[PROOF STEP]
by (simp add:Line_unique)
[PROOF STATE]
proof (state)
this:
Eq (Geos (Lin (Li o1 h1)) add Emp) (Geos (Lin (Li o1 k1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P19 P28
[PROOF STATE]
proof (chain)
picking this:
Plane_sameside (Li o1 h1) l1 l11
Eq (Geos (Lin (Li o1 h1)) add Emp) (Geos (Lin (Li o1 k1)) add Emp)
[PROOF STEP]
have P29 : "Plane_sameside (Li o1 k1) l1 l11"
[PROOF STATE]
proof (prove)
using this:
Plane_sameside (Li o1 h1) l1 l11
Eq (Geos (Lin (Li o1 h1)) add Emp) (Geos (Lin (Li o1 k1)) add Emp)

goal (1 subgoal):
 1. Plane_sameside (Li o1 k1) l1 l11
[PROOF STEP]
by (simp add:Plane_Line_trans)
[PROOF STATE]
proof (state)
this:
Plane_sameside (Li o1 k1) l1 l11

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
Plane_sameside (Li o1 k1) l1 l11
[PROOF STEP]
have P30 : "Plane_sameside (Li o1 k1) l11 l1"
[PROOF STATE]
proof (prove)
using this:
Plane_sameside (Li o1 k1) l1 l11

goal (1 subgoal):
 1. Plane_sameside (Li o1 k1) l11 l1
[PROOF STEP]
by (simp add:Plane_sameside_rev)
[PROOF STATE]
proof (state)
this:
Plane_sameside (Li o1 k1) l11 l1

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
Plane_sameside (Li o1 k1) l11 l1
[PROOF STEP]
have P31 : "\<not> Line_on (Li o1 k1) l11"
[PROOF STATE]
proof (prove)
using this:
Plane_sameside (Li o1 k1) l11 l1

goal (1 subgoal):
 1. \<not> Line_on (Li o1 k1) l11
[PROOF STEP]
by (simp add:Plane_sameside_def)
[PROOF STATE]
proof (state)
this:
\<not> Line_on (Li o1 k1) l11

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
[PROOF STEP]
have P32 : "\<not> Eq (Geos (Poi o1) add Emp) (Geos (Poi k1) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))

goal (1 subgoal):
 1. \<not> Eq (Geos (Poi o1) add Emp) (Geos (Poi k1) add Emp)
[PROOF STEP]
by (simp add:Ang_def)
[PROOF STATE]
proof (state)
this:
\<not> Eq (Geos (Poi o1) add Emp) (Geos (Poi k1) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P31 P32
[PROOF STATE]
proof (chain)
picking this:
\<not> Line_on (Li o1 k1) l11
\<not> Eq (Geos (Poi o1) add Emp) (Geos (Poi k1) add Emp)
[PROOF STEP]
have "Def (Ang (An o1 k1 l11))"
[PROOF STATE]
proof (prove)
using this:
\<not> Line_on (Li o1 k1) l11
\<not> Eq (Geos (Poi o1) add Emp) (Geos (Poi k1) add Emp)

goal (1 subgoal):
 1. Def (Ang (An o1 k1 l11))
[PROOF STEP]
by (simp add:Ang_sinple_def)
[PROOF STATE]
proof (state)
this:
Def (Ang (An o1 k1 l11))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
Def (Ang (An o1 k1 l11))
[PROOF STEP]
have P33 : "Def (Ang (An l11 o1 k1))"
[PROOF STATE]
proof (prove)
using this:
Def (Ang (An o1 k1 l11))

goal (1 subgoal):
 1. Def (Ang (An l11 o1 k1))
[PROOF STEP]
by (blast intro:Ang_def_rev Ang_def_inv)
[PROOF STATE]
proof (state)
this:
Def (Ang (An l11 o1 k1))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P2 P7 P8 P15 P33
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
Def (Ang (An l11 o1 h1))
Cong (Geos (Ang (An l2 o2 k2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
Cong (Geos (Ang (An l2 o2 k2)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
Def (Ang (An l11 o1 k1))
[PROOF STEP]
have P34 : "Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l2 o2 k2)) add Emp) \<and> Bet_Point (Se h2 k2) o2 \<and> Def (Ang (An l2 o2 h2)) \<and> Def (Ang (An l2 o2 k2))
Def (Ang (An l11 o1 h1))
Cong (Geos (Ang (An l2 o2 k2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
Cong (Geos (Ang (An l2 o2 k2)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
Def (Ang (An l11 o1 k1))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
[PROOF STEP]
by (blast intro:Ang_rev Ang_trans)
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
[PROOF STEP]
have P35 : "Def (Ang (An l1 o1 h1))"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))

goal (1 subgoal):
 1. Def (Ang (An l1 o1 h1))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Def (Ang (An l1 o1 h1))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P26 P35
[PROOF STATE]
proof (chain)
picking this:
Bet_Point (Se h1 k1) o1
Def (Ang (An l1 o1 h1))
[PROOF STEP]
have P36 : "Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Ang_inside (An l1 o1 k1) l11"
[PROOF STATE]
proof (prove)
using this:
Bet_Point (Se h1 k1) o1
Def (Ang (An l1 o1 h1))

goal (1 subgoal):
 1. Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Ang_inside (An l1 o1 k1) l11
[PROOF STEP]
by (simp add:Ang_complementary_inside)
[PROOF STATE]
proof (state)
this:
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Ang_inside (An l1 o1 k1) l11

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
have P37 : "Cong (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Cong (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P30 P36 P37
[PROOF STATE]
proof (chain)
picking this:
Plane_sameside (Li o1 k1) l11 l1
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Ang_inside (An l1 o1 k1) l11
Cong (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
[PROOF STEP]
have P38 : "Ang_inside (An l11 o1 h1) l1 \<Longrightarrow>
    Gr (Geos (Ang (An l1 o1 k1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Plane_sameside (Li o1 k1) l11 l1
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Ang_inside (An l1 o1 k1) l11
Cong (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)

goal (1 subgoal):
 1. Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l1 o1 k1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
[PROOF STEP]
by (simp add:Ang_greater_def)
[PROOF STATE]
proof (state)
this:
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l1 o1 k1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1 P7 P21
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Def (Ang (An l11 o1 h1))
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)
[PROOF STEP]
have P39 : "Ang_inside (An l11 o1 h1) l1 \<Longrightarrow>
    Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Def (Ang (An l11 o1 h1))
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)

goal (1 subgoal):
 1. Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)
[PROOF STEP]
by (blast intro:Ang_Gr_trans_Gr_Eq)
[PROOF STATE]
proof (state)
this:
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1 P7 P33 P38 P39
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Def (Ang (An l11 o1 h1))
Def (Ang (An l11 o1 k1))
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l1 o1 k1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)
[PROOF STEP]
have P40 : "Ang_inside (An l11 o1 h1) l1 \<Longrightarrow>
    Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Def (Ang (An l11 o1 h1))
Def (Ang (An l11 o1 k1))
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l1 o1 k1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)

goal (1 subgoal):
 1. Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
[PROOF STEP]
by (blast intro:Ang_Gr_trans_Gr_Gr)
[PROOF STATE]
proof (state)
this:
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P7 P33
[PROOF STATE]
proof (chain)
picking this:
Def (Ang (An l11 o1 h1))
Def (Ang (An l11 o1 k1))
[PROOF STEP]
have P41 :
    "Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
    \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
    \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
    \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
    \<and> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
    \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
    \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
    \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
    \<and> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Def (Ang (An l11 o1 h1))
Def (Ang (An l11 o1 k1))

goal (1 subgoal):
 1. Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
[PROOF STEP]
by (simp add:Ang_relation_case_fact)
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P40 P41
[PROOF STATE]
proof (chain)
picking this:
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
[PROOF STEP]
have P42 : "Ang_inside (An l11 o1 h1) l1 \<Longrightarrow>
    \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)

goal (1 subgoal):
 1. Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P34 P42
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
[PROOF STEP]
have P43 : "\<not> Ang_inside (An l11 o1 h1) l1"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
Ang_inside (An l11 o1 h1) l1 \<Longrightarrow> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)

goal (1 subgoal):
 1. \<not> Ang_inside (An l11 o1 h1) l1
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<not> Ang_inside (An l11 o1 h1) l1

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
have P44 : "Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P4 P44
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
[PROOF STEP]
have P45 : "Ang_inside (An l1 o1 h1) l11 \<Longrightarrow>
    Gr (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l2 o2 h2)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<and> Plane_sameside (Li o1 h1) l11 l1
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)

goal (1 subgoal):
 1. Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
[PROOF STEP]
by (simp add:Ang_greater_def)
[PROOF STATE]
proof (state)
this:
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1 P7
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Def (Ang (An l11 o1 h1))
[PROOF STEP]
have P46 : "Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Ang_inside (An l11 o1 k1) l1"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Def (Ang (An l11 o1 h1))

goal (1 subgoal):
 1. Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Ang_inside (An l11 o1 k1) l1
[PROOF STEP]
by (simp add:Ang_complementary_inside)
[PROOF STATE]
proof (state)
this:
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Ang_inside (An l11 o1 k1) l1

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
have P47 : "Cong (Geos (Ang (An l1 o1 k1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 k1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l1 o1 k1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P29 P46 P47
[PROOF STATE]
proof (chain)
picking this:
Plane_sameside (Li o1 k1) l1 l11
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Ang_inside (An l11 o1 k1) l1
Cong (Geos (Ang (An l1 o1 k1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)
[PROOF STEP]
have P48 : "Ang_inside (An l1 o1 h1) l11 \<Longrightarrow>
    Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Plane_sameside (Li o1 k1) l1 l11
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Ang_inside (An l11 o1 k1) l1
Cong (Geos (Ang (An l1 o1 k1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)

goal (1 subgoal):
 1. Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)
[PROOF STEP]
by (simp add:Ang_greater_def)
[PROOF STATE]
proof (state)
this:
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1 P33 P48
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Def (Ang (An l11 o1 k1))
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)
[PROOF STEP]
have P49 : "Ang_inside (An l1 o1 h1) l11 \<Longrightarrow>
    Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Def (Ang (An l11 o1 k1))
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp)

goal (1 subgoal):
 1. Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)
[PROOF STEP]
by (blast intro:Ang_Gr_trans_Gr_Eq Ang_rev)
[PROOF STATE]
proof (state)
this:
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P1 P7 P33 P45 P49
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Def (Ang (An l11 o1 h1))
Def (Ang (An l11 o1 k1))
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)
[PROOF STEP]
have P50 : "Ang_inside (An l1 o1 h1) l11 \<Longrightarrow>
    Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l1 o1 k1)) add Emp) \<and> Bet_Point (Se h1 k1) o1 \<and> Def (Ang (An l1 o1 h1)) \<and> Def (Ang (An l1 o1 k1))
Def (Ang (An l11 o1 h1))
Def (Ang (An l11 o1 k1))
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l1 o1 h1)) add Emp)

goal (1 subgoal):
 1. Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
[PROOF STEP]
by (blast intro:Ang_Gr_trans_Gr_Gr)
[PROOF STATE]
proof (state)
this:
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P41 P50
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
[PROOF STEP]
have P51 : "Ang_inside (An l1 o1 h1) l11 \<Longrightarrow>
    \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp) \<or> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> \<not> Gr (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp) \<and> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> Gr (Geos (Ang (An l11 o1 k1)) add Emp) (Geos (Ang (An l11 o1 h1)) add Emp)

goal (1 subgoal):
 1. Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P34 P51
[PROOF STATE]
proof (chain)
picking this:
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
[PROOF STEP]
have P52 : "\<not> Ang_inside (An l1 o1 h1) l11"
[PROOF STATE]
proof (prove)
using this:
Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)
Ang_inside (An l1 o1 h1) l11 \<Longrightarrow> \<not> Cong (Geos (Ang (An l11 o1 h1)) add Emp) (Geos (Ang (An l11 o1 k1)) add Emp)

goal (1 subgoal):
 1. \<not> Ang_inside (An l1 o1 h1) l11
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<not> Ang_inside (An l1 o1 h1) l11

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
from P18 P43 P52
[PROOF STATE]
proof (chain)
picking this:
\<not> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp) \<Longrightarrow> Ang_inside (An l11 o1 h1) l1 \<and> \<not> Ang_inside (An l1 o1 h1) l11 \<or> \<not> Ang_inside (An l11 o1 h1) l1 \<and> Ang_inside (An l1 o1 h1) l11
\<not> Ang_inside (An l11 o1 h1) l1
\<not> Ang_inside (An l1 o1 h1) l11
[PROOF STEP]
show "Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)"
[PROOF STATE]
proof (prove)
using this:
\<not> Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp) \<Longrightarrow> Ang_inside (An l11 o1 h1) l1 \<and> \<not> Ang_inside (An l1 o1 h1) l11 \<or> \<not> Ang_inside (An l11 o1 h1) l1 \<and> Ang_inside (An l1 o1 h1) l11
\<not> Ang_inside (An l11 o1 h1) l1
\<not> Ang_inside (An l1 o1 h1) l11

goal (1 subgoal):
 1. Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
Cong (Geos (Ang (An l1 o1 h1)) add Emp) (Geos (Ang (An l2 o2 h2)) add Emp)

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma cartesian_product_carrier:
"cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>)) =  carrier (R\<^bsup>n + m\<^esup>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>)) = carrier (R\<^bsup>n + m\<^esup>)
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>)) \<subseteq> carrier (R\<^bsup>n + m\<^esup>)
 2. carrier (R\<^bsup>n + m\<^esup>) \<subseteq> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))
[PROOF STEP]
show "cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>)) \<subseteq> carrier (R\<^bsup>n + m\<^esup>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>)) \<subseteq> carrier (R\<^bsup>n + m\<^esup>)
[PROOF STEP]
using cartesian_product_closed[of "(carrier (R\<^bsup>n\<^esup>))" R n "(carrier (R\<^bsup>m\<^esup>)) " m]
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>carrier (R\<^bsup>n\<^esup>) \<subseteq> carrier (R\<^bsup>n\<^esup>); carrier (R\<^bsup>m\<^esup>) \<subseteq> carrier (R\<^bsup>m\<^esup>)\<rbrakk> \<Longrightarrow> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>)) \<subseteq> carrier (R\<^bsup>n + m\<^esup>)

goal (1 subgoal):
 1. cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>)) \<subseteq> carrier (R\<^bsup>n + m\<^esup>)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>)) \<subseteq> carrier (R\<^bsup>n + m\<^esup>)

goal (1 subgoal):
 1. carrier (R\<^bsup>n + m\<^esup>) \<subseteq> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))
[PROOF STEP]
show "carrier (R\<^bsup>n + m\<^esup>) \<subseteq> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. carrier (R\<^bsup>n + m\<^esup>) \<subseteq> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> carrier (R\<^bsup>n + m\<^esup>) \<Longrightarrow> x \<in> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))
[PROOF STEP]
fix x
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> carrier (R\<^bsup>n + m\<^esup>) \<Longrightarrow> x \<in> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))
[PROOF STEP]
assume A: "x \<in> carrier (R\<^bsup>n + m\<^esup>)"
[PROOF STATE]
proof (state)
this:
x \<in> carrier (R\<^bsup>n + m\<^esup>)

goal (1 subgoal):
 1. \<And>x. x \<in> carrier (R\<^bsup>n + m\<^esup>) \<Longrightarrow> x \<in> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))
[PROOF STEP]
have 0: "take n x \<in> carrier (R\<^bsup>n\<^esup>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. take n x \<in> carrier (R\<^bsup>n\<^esup>)
[PROOF STEP]
apply(rule cartesian_power_car_memI')
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. length (take n x) = n
 2. \<And>i. i < n \<Longrightarrow> take n x ! i \<in> carrier R
[PROOF STEP]
apply (metis A cartesian_power_car_memE le_add1 length_take min.absorb2)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> take n x ! i \<in> carrier R
[PROOF STEP]
by (metis A add.commute cartesian_power_car_memE'
            nth_take trans_less_add2)
[PROOF STATE]
proof (state)
this:
take n x \<in> carrier (R\<^bsup>n\<^esup>)

goal (1 subgoal):
 1. \<And>x. x \<in> carrier (R\<^bsup>n + m\<^esup>) \<Longrightarrow> x \<in> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))
[PROOF STEP]
have 1: "drop n x \<in> carrier (R\<^bsup>m\<^esup>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. drop n x \<in> carrier (R\<^bsup>m\<^esup>)
[PROOF STEP]
apply(rule cartesian_power_car_memI')
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. length (drop n x) = m
 2. \<And>i. i < m \<Longrightarrow> drop n x ! i \<in> carrier R
[PROOF STEP]
apply (metis A add_diff_cancel_left' cartesian_power_car_memE length_drop)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>i. i < m \<Longrightarrow> drop n x ! i \<in> carrier R
[PROOF STEP]
by (metis A cartesian_power_car_memE cartesian_power_car_memE' le_add1 nat_add_left_cancel_less nth_drop)
[PROOF STATE]
proof (state)
this:
drop n x \<in> carrier (R\<^bsup>m\<^esup>)

goal (1 subgoal):
 1. \<And>x. x \<in> carrier (R\<^bsup>n + m\<^esup>) \<Longrightarrow> x \<in> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))
[PROOF STEP]
show "x \<in> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. x \<in> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))
[PROOF STEP]
using 0 1
[PROOF STATE]
proof (prove)
using this:
take n x \<in> carrier (R\<^bsup>n\<^esup>)
drop n x \<in> carrier (R\<^bsup>m\<^esup>)

goal (1 subgoal):
 1. x \<in> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))
[PROOF STEP]
by (smt A cartesian_power_decomp cartesian_product_def mem_Collect_eq)
[PROOF STATE]
proof (state)
this:
x \<in> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
carrier (R\<^bsup>n + m\<^esup>) \<subseteq> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))

goal:
No subgoals!
[PROOF STEP]
text\<open>Higher function rings\<close>
[PROOF STATE]
proof (state)
this:
carrier (R\<^bsup>n + m\<^esup>) \<subseteq> cartesian_product (carrier (R\<^bsup>n\<^esup>)) (carrier (R\<^bsup>m\<^esup>))

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma nth_default_replicate_eq:
    "nth_default dflt (replicate n x) i = (if i < n then x else dflt)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. nth_default dflt (replicate n x) i = (if i < n then x else dflt)
[PROOF STEP]
by (auto simp: nth_default_def)


[STATEMENT]
lemma star_slide1: "(x \<cdot> y)\<^sup>\<star> \<cdot> x \<le> x \<cdot> (y \<cdot> x)\<^sup>\<star>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (x \<cdot> y)\<^sup>\<star> \<cdot> x \<le> x \<cdot> (y \<cdot> x)\<^sup>\<star>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (x \<cdot> y)\<^sup>\<star> \<cdot> x \<le> x \<cdot> (y \<cdot> x)\<^sup>\<star>
[PROOF STEP]
have "(x \<cdot> y)\<^sup>\<star> \<cdot> x = (1 + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y) \<cdot> x"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (x \<cdot> y)\<^sup>\<star> \<cdot> x = ((1::'a) + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y) \<cdot> x
[PROOF STEP]
by (metis star_prod_unfold)
[PROOF STATE]
proof (state)
this:
(x \<cdot> y)\<^sup>\<star> \<cdot> x = ((1::'a) + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y) \<cdot> x

goal (1 subgoal):
 1. (x \<cdot> y)\<^sup>\<star> \<cdot> x \<le> x \<cdot> (y \<cdot> x)\<^sup>\<star>
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
(x \<cdot> y)\<^sup>\<star> \<cdot> x = ((1::'a) + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y) \<cdot> x

goal (1 subgoal):
 1. (x \<cdot> y)\<^sup>\<star> \<cdot> x \<le> x \<cdot> (y \<cdot> x)\<^sup>\<star>
[PROOF STEP]
have "... = (x + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y \<cdot> x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((1::'a) + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y) \<cdot> x = x + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y \<cdot> x
[PROOF STEP]
by (metis mult_onel distrib_right')
[PROOF STATE]
proof (state)
this:
((1::'a) + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y) \<cdot> x = x + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y \<cdot> x

goal (1 subgoal):
 1. (x \<cdot> y)\<^sup>\<star> \<cdot> x \<le> x \<cdot> (y \<cdot> x)\<^sup>\<star>
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
((1::'a) + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y) \<cdot> x = x + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y \<cdot> x

goal (1 subgoal):
 1. (x \<cdot> y)\<^sup>\<star> \<cdot> x \<le> x \<cdot> (y \<cdot> x)\<^sup>\<star>
[PROOF STEP]
have "... = x \<cdot> (1 + (y \<cdot> x)\<^sup>\<star> \<cdot> y \<cdot> x)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. x + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y \<cdot> x = x \<cdot> ((1::'a) + (y \<cdot> x)\<^sup>\<star> \<cdot> y \<cdot> x)
[PROOF STEP]
by (metis distrib_left mult.assoc mult_oner)
[PROOF STATE]
proof (state)
this:
x + x \<cdot> (y \<cdot> x)\<^sup>\<star> \<cdot> y \<cdot> x = x \<cdot> ((1::'a) + (y \<cdot> x)\<^sup>\<star> \<cdot> y \<cdot> x)

goal (1 subgoal):
 1. (x \<cdot> y)\<^sup>\<star> \<cdot> x \<le> x \<cdot> (y \<cdot> x)\<^sup>\<star>
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
(x \<cdot> y)\<^sup>\<star> \<cdot> x = x \<cdot> ((1::'a) + (y \<cdot> x)\<^sup>\<star> \<cdot> y \<cdot> x)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
(x \<cdot> y)\<^sup>\<star> \<cdot> x = x \<cdot> ((1::'a) + (y \<cdot> x)\<^sup>\<star> \<cdot> y \<cdot> x)

goal (1 subgoal):
 1. (x \<cdot> y)\<^sup>\<star> \<cdot> x \<le> x \<cdot> (y \<cdot> x)\<^sup>\<star>
[PROOF STEP]
by (metis eq_refl mult.assoc star_unfoldr_eq)
[PROOF STATE]
proof (state)
this:
(x \<cdot> y)\<^sup>\<star> \<cdot> x \<le> x \<cdot> (y \<cdot> x)\<^sup>\<star>

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma gcd_diff1_nat: "m \<ge> n \<Longrightarrow> gcd (m - n) n = gcd m n"
  for m n :: nat
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. n \<le> m \<Longrightarrow> gcd (m - n) n = gcd m n
[PROOF STEP]
by (subst gcd_add1 [symmetric]) auto


[STATEMENT]
lemma right_minus_zero_mat:
  fixes A::"'a::{group_add} Matrix.mat"
  shows "A - 0\<^sub>m (dim_row A) (dim_col A) = A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A - 0\<^sub>m (dim_row A) (dim_col A) = A
[PROOF STEP]
by (intro eq_matI, auto)


[STATEMENT]
lemma c_pair_strict_mono2: "y1 < y2 \<Longrightarrow> c_pair x y1 < c_pair x y2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. y1 < y2 \<Longrightarrow> c_pair x y1 < c_pair x y2
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. y1 < y2 \<Longrightarrow> c_pair x y1 < c_pair x y2
[PROOF STEP]
assume A1: "y1 < y2"
[PROOF STATE]
proof (state)
this:
y1 < y2

goal (1 subgoal):
 1. y1 < y2 \<Longrightarrow> c_pair x y1 < c_pair x y2
[PROOF STEP]
from A1
[PROOF STATE]
proof (chain)
picking this:
y1 < y2
[PROOF STEP]
have S1: "x + y1 < x + y2"
[PROOF STATE]
proof (prove)
using this:
y1 < y2

goal (1 subgoal):
 1. x + y1 < x + y2
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
x + y1 < x + y2

goal (1 subgoal):
 1. y1 < y2 \<Longrightarrow> c_pair x y1 < c_pair x y2
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
x + y1 < x + y2
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
x + y1 < x + y2

goal (1 subgoal):
 1. c_pair x y1 < c_pair x y2
[PROOF STEP]
by (rule c_pair_sum_mono)
[PROOF STATE]
proof (state)
this:
c_pair x y1 < c_pair x y2

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma asym_factor_rtrancl: "asym_factor (r\<^sup>*) = asym_factor (r\<^sup>+)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. asym_factor (r\<^sup>*) = asym_factor (r\<^sup>+)
[PROOF STEP]
unfolding asym_factor_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {(x, y). (x, y) \<in> r\<^sup>* \<and> (y, x) \<notin> r\<^sup>*} = {(x, y). (x, y) \<in> r\<^sup>+ \<and> (y, x) \<notin> r\<^sup>+}
[PROOF STEP]
by (auto simp add: rtrancl_eq_or_trancl)


[STATEMENT]
lemma nth_prime_0 [simp]: "nth_prime 0 = 2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. nth_prime 0 = 2
[PROOF STEP]
by (intro nth_prime_eqI) (auto dest: prime_gt_1_nat)


[STATEMENT]
lemma nonnegative_absolutely_integrable:
  fixes f :: "'a :: euclidean_space \<Rightarrow> 'b :: euclidean_space"
  assumes "f integrable_on A" and comp: "\<And>x b. \<lbrakk>x \<in> A; b \<in> Basis\<rbrakk> \<Longrightarrow> 0 \<le> f x \<bullet> b"
  shows "f absolutely_integrable_on A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. f absolutely_integrable_on A
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. f absolutely_integrable_on A
[PROOF STEP]
have "(\<lambda>x. (f x \<bullet> i) *\<^sub>R i) absolutely_integrable_on A" if "i \<in> Basis" for i
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<lambda>x. (f x \<bullet> i) *\<^sub>R i) absolutely_integrable_on A
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. (\<lambda>x. (f x \<bullet> i) *\<^sub>R i) absolutely_integrable_on A
[PROOF STEP]
have "(\<lambda>x. f x \<bullet> i) integrable_on A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<lambda>x. f x \<bullet> i) integrable_on A
[PROOF STEP]
by (simp add: assms(1) integrable_component)
[PROOF STATE]
proof (state)
this:
(\<lambda>x. f x \<bullet> i) integrable_on A

goal (1 subgoal):
 1. (\<lambda>x. (f x \<bullet> i) *\<^sub>R i) absolutely_integrable_on A
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(\<lambda>x. f x \<bullet> i) integrable_on A
[PROOF STEP]
have "(\<lambda>x. f x \<bullet> i) absolutely_integrable_on A"
[PROOF STATE]
proof (prove)
using this:
(\<lambda>x. f x \<bullet> i) integrable_on A

goal (1 subgoal):
 1. (\<lambda>x. f x \<bullet> i) absolutely_integrable_on A
[PROOF STEP]
by (metis that comp nonnegative_absolutely_integrable_1)
[PROOF STATE]
proof (state)
this:
(\<lambda>x. f x \<bullet> i) absolutely_integrable_on A

goal (1 subgoal):
 1. (\<lambda>x. (f x \<bullet> i) *\<^sub>R i) absolutely_integrable_on A
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(\<lambda>x. f x \<bullet> i) absolutely_integrable_on A
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
(\<lambda>x. f x \<bullet> i) absolutely_integrable_on A

goal (1 subgoal):
 1. (\<lambda>x. (f x \<bullet> i) *\<^sub>R i) absolutely_integrable_on A
[PROOF STEP]
by (rule absolutely_integrable_scaleR_right)
[PROOF STATE]
proof (state)
this:
(\<lambda>x. (f x \<bullet> i) *\<^sub>R i) absolutely_integrable_on A

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
?i \<in> Basis \<Longrightarrow> (\<lambda>x. (f x \<bullet> ?i) *\<^sub>R ?i) absolutely_integrable_on A

goal (1 subgoal):
 1. f absolutely_integrable_on A
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
?i \<in> Basis \<Longrightarrow> (\<lambda>x. (f x \<bullet> ?i) *\<^sub>R ?i) absolutely_integrable_on A
[PROOF STEP]
have "(\<lambda>x. \<Sum>i\<in>Basis. (f x \<bullet> i) *\<^sub>R i) absolutely_integrable_on A"
[PROOF STATE]
proof (prove)
using this:
?i \<in> Basis \<Longrightarrow> (\<lambda>x. (f x \<bullet> ?i) *\<^sub>R ?i) absolutely_integrable_on A

goal (1 subgoal):
 1. (\<lambda>x. \<Sum>i\<in>Basis. (f x \<bullet> i) *\<^sub>R i) absolutely_integrable_on A
[PROOF STEP]
by (simp add: absolutely_integrable_sum)
[PROOF STATE]
proof (state)
this:
(\<lambda>x. \<Sum>i\<in>Basis. (f x \<bullet> i) *\<^sub>R i) absolutely_integrable_on A

goal (1 subgoal):
 1. f absolutely_integrable_on A
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(\<lambda>x. \<Sum>i\<in>Basis. (f x \<bullet> i) *\<^sub>R i) absolutely_integrable_on A
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
(\<lambda>x. \<Sum>i\<in>Basis. (f x \<bullet> i) *\<^sub>R i) absolutely_integrable_on A

goal (1 subgoal):
 1. f absolutely_integrable_on A
[PROOF STEP]
by (simp add: euclidean_representation)
[PROOF STATE]
proof (state)
this:
f absolutely_integrable_on A

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma dim_col_conjugate[simp]: "dim_col (conjugate m) = dim_col m"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. dim_col (conjugate m) = dim_col m
[PROOF STEP]
unfolding conjugate_mat_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. dim_col (mat (dim_row m) (dim_col m) (\<lambda>(i, j). conjugate (m $$ (i, j)))) = dim_col m
[PROOF STEP]
by auto


[STATEMENT]
lemma jointfun_hom:"\<lbrakk> f \<in> {i. i \<le> n} \<rightarrow> A; g \<in> {j. j \<le> m} \<rightarrow> B \<rbrakk> \<Longrightarrow>
                   (jointfun n f m g) \<in> {j. j \<le> (Suc (n + m))} \<rightarrow> A \<union> B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>f \<in> {i. i \<le> n} \<rightarrow> A; g \<in> {j. j \<le> m} \<rightarrow> B\<rbrakk> \<Longrightarrow> jointfun n f m g \<in> {j. j \<le> Suc (n + m)} \<rightarrow> A \<union> B
[PROOF STEP]
by (simp add:sliden_def Pi_def jointfun_def)


[STATEMENT]
lemma corthogonal_col_ev_0: fixes A :: "'a :: conjugatable_ordered_field mat"
  assumes A: "A \<in> carrier_mat n n"
  and v: "v \<in> carrier_vec n"
  and v0: "v \<noteq> 0\<^sub>v n"
  and eigen[simp]: "A *\<^sub>v v = e \<cdot>\<^sub>v v"
  and n: "n \<noteq> 0"
  and hdws: "hd ws = v"
  and ws: "set ws \<subseteq> carrier_vec n" "corthogonal ws" "length ws = n"
  defines "W == mat_of_cols n ws"
  defines "W' == corthogonal_inv W"
  defines "A' == W' * A * W"
  shows "col A' 0 = vec n (\<lambda> i. if i = 0 then e else 0)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. col A' 0 = vec n (\<lambda>i. if i = 0 then e else (0::'a))
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. col A' 0 = vec n (\<lambda>i. if i = 0 then e else (0::'a))
[PROOF STEP]
let ?f = "(\<lambda> i. if i = 0 then e else 0)"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. col A' 0 = vec n (\<lambda>i. if i = 0 then e else (0::'a))
[PROOF STEP]
from ws
[PROOF STATE]
proof (chain)
picking this:
set ws \<subseteq> carrier_vec n
corthogonal ws
length ws = n
[PROOF STEP]
have W: "W \<in> carrier_mat n n"
[PROOF STATE]
proof (prove)
using this:
set ws \<subseteq> carrier_vec n
corthogonal ws
length ws = n

goal (1 subgoal):
 1. W \<in> carrier_mat n n
[PROOF STEP]
unfolding W_def
[PROOF STATE]
proof (prove)
using this:
set ws \<subseteq> carrier_vec n
corthogonal ws
length ws = n

goal (1 subgoal):
 1. mat_of_cols n ws \<in> carrier_mat n n
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
W \<in> carrier_mat n n

goal (1 subgoal):
 1. col A' 0 = vec n (\<lambda>i. if i = 0 then e else (0::'a))
[PROOF STEP]
from W
[PROOF STATE]
proof (chain)
picking this:
W \<in> carrier_mat n n
[PROOF STEP]
have W': "W' \<in> carrier_mat n n"
[PROOF STATE]
proof (prove)
using this:
W \<in> carrier_mat n n

goal (1 subgoal):
 1. W' \<in> carrier_mat n n
[PROOF STEP]
unfolding W'_def
    corthogonal_inv_def mat_of_rows_def
[PROOF STATE]
proof (prove)
using this:
W \<in> carrier_mat n n

goal (1 subgoal):
 1. mat (length (map vec_inv (cols W))) (dim_row W) (\<lambda>(i, y). map vec_inv (cols W) ! i $ y) \<in> carrier_mat n n
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
W' \<in> carrier_mat n n

goal (1 subgoal):
 1. col A' 0 = vec n (\<lambda>i. if i = 0 then e else (0::'a))
[PROOF STEP]
from A W W'
[PROOF STATE]
proof (chain)
picking this:
A \<in> carrier_mat n n
W \<in> carrier_mat n n
W' \<in> carrier_mat n n
[PROOF STEP]
have A': "A' \<in> carrier_mat n n"
[PROOF STATE]
proof (prove)
using this:
A \<in> carrier_mat n n
W \<in> carrier_mat n n
W' \<in> carrier_mat n n

goal (1 subgoal):
 1. A' \<in> carrier_mat n n
[PROOF STEP]
unfolding A'_def
[PROOF STATE]
proof (prove)
using this:
A \<in> carrier_mat n n
W \<in> carrier_mat n n
W' \<in> carrier_mat n n

goal (1 subgoal):
 1. W' * A * W \<in> carrier_mat n n
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
A' \<in> carrier_mat n n

goal (1 subgoal):
 1. col A' 0 = vec n (\<lambda>i. if i = 0 then e else (0::'a))
[PROOF STEP]
show "col A' 0 = vec n ?f"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. col A' 0 = vec n (\<lambda>i. if i = 0 then e else (0::'a))
[PROOF STEP]
proof (rule,unfold dim_vec)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
 2. dim_vec (col A' 0) = n
[PROOF STEP]
show dim: "dim_vec (col A' 0) = n"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. dim_vec (col A' 0) = n
[PROOF STEP]
using A'
[PROOF STATE]
proof (prove)
using this:
A' \<in> carrier_mat n n

goal (1 subgoal):
 1. dim_vec (col A' 0) = n
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
dim_vec (col A' 0) = n

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have row0: "vec_inv v \<bullet> (A *\<^sub>v v) = e"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. vec_inv v \<bullet> (A *\<^sub>v v) = e
[PROOF STEP]
using scalar_prod_smult_distrib[OF vec_inv_closed[OF v] v]
[PROOF STATE]
proof (prove)
using this:
vec_inv v \<bullet> (?a \<cdot>\<^sub>v v) = ?a * (vec_inv v \<bullet> v)

goal (1 subgoal):
 1. vec_inv v \<bullet> (A *\<^sub>v v) = e
[PROOF STEP]
using vec_inv[OF v v0]
[PROOF STATE]
proof (prove)
using this:
vec_inv v \<bullet> (?a \<cdot>\<^sub>v v) = ?a * (vec_inv v \<bullet> v)
vec_inv v \<bullet> v = (1::'a)

goal (1 subgoal):
 1. vec_inv v \<bullet> (A *\<^sub>v v) = e
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
vec_inv v \<bullet> (A *\<^sub>v v) = e

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
fix i
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
assume i: "i < n"
[PROOF STATE]
proof (state)
this:
i < n

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
hence i2: "i < length ws"
[PROOF STATE]
proof (prove)
using this:
i < n

goal (1 subgoal):
 1. i < length ws
[PROOF STEP]
using ws
[PROOF STATE]
proof (prove)
using this:
i < n
set ws \<subseteq> carrier_vec n
corthogonal ws
length ws = n

goal (1 subgoal):
 1. i < length ws
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
i < length ws

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
let ?wsi = "ws ! i"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have z: "0 < dim_col A'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. 0 < dim_col A'
[PROOF STEP]
using A' n
[PROOF STATE]
proof (prove)
using this:
A' \<in> carrier_mat n n
n \<noteq> 0

goal (1 subgoal):
 1. 0 < dim_col A'
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
0 < dim_col A'

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
hence z2: "0 < length ws"
[PROOF STATE]
proof (prove)
using this:
0 < dim_col A'

goal (1 subgoal):
 1. 0 < length ws
[PROOF STEP]
using A' ws
[PROOF STATE]
proof (prove)
using this:
0 < dim_col A'
A' \<in> carrier_mat n n
set ws \<subseteq> carrier_vec n
corthogonal ws
length ws = n

goal (1 subgoal):
 1. 0 < length ws
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
0 < length ws

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have wsi[simp]: "ws!i : carrier_vec n"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ws ! i \<in> carrier_vec n
[PROOF STEP]
using ws i
[PROOF STATE]
proof (prove)
using this:
set ws \<subseteq> carrier_vec n
corthogonal ws
length ws = n
i < n

goal (1 subgoal):
 1. ws ! i \<in> carrier_vec n
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
ws ! i \<in> carrier_vec n

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
hence ws0[simp]: "ws!0 = v"
[PROOF STATE]
proof (prove)
using this:
ws ! i \<in> carrier_vec n

goal (1 subgoal):
 1. ws ! 0 = v
[PROOF STEP]
using hd_conv_nth[symmetric] hdws z2
[PROOF STATE]
proof (prove)
using this:
ws ! i \<in> carrier_vec n
?xs \<noteq> [] \<Longrightarrow> ?xs ! 0 = hd ?xs
hd ws = v
0 < length ws

goal (1 subgoal):
 1. ws ! 0 = v
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
ws ! 0 = v

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have "col A' 0 $ i = A' $$ (i, 0)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. col A' 0 $ i = A' $$ (i, 0)
[PROOF STEP]
using A' i
[PROOF STATE]
proof (prove)
using this:
A' \<in> carrier_mat n n
i < n

goal (1 subgoal):
 1. col A' 0 $ i = A' $$ (i, 0)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
col A' 0 $ i = A' $$ (i, 0)

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
col A' 0 $ i = A' $$ (i, 0)

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have "... = (W' * (A * W)) $$ (i, 0)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A' $$ (i, 0) = (W' * (A * W)) $$ (i, 0)
[PROOF STEP]
unfolding A'_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (W' * A * W) $$ (i, 0) = (W' * (A * W)) $$ (i, 0)
[PROOF STEP]
using W' A W
[PROOF STATE]
proof (prove)
using this:
W' \<in> carrier_mat n n
A \<in> carrier_mat n n
W \<in> carrier_mat n n

goal (1 subgoal):
 1. (W' * A * W) $$ (i, 0) = (W' * (A * W)) $$ (i, 0)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
A' $$ (i, 0) = (W' * (A * W)) $$ (i, 0)

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
A' $$ (i, 0) = (W' * (A * W)) $$ (i, 0)

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have "... = row W' i \<bullet> col (A * W) 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (W' * (A * W)) $$ (i, 0) = row W' i \<bullet> col (A * W) 0
[PROOF STEP]
apply (subst index_mult_mat)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. i < dim_row W'
 2. 0 < dim_col (A * W)
 3. row W' i \<bullet> col (A * W) 0 = row W' i \<bullet> col (A * W) 0
[PROOF STEP]
using W W' A i
[PROOF STATE]
proof (prove)
using this:
W \<in> carrier_mat n n
W' \<in> carrier_mat n n
A \<in> carrier_mat n n
i < n

goal (3 subgoals):
 1. i < dim_row W'
 2. 0 < dim_col (A * W)
 3. row W' i \<bullet> col (A * W) 0 = row W' i \<bullet> col (A * W) 0
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(W' * (A * W)) $$ (i, 0) = row W' i \<bullet> col (A * W) 0

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
(W' * (A * W)) $$ (i, 0) = row W' i \<bullet> col (A * W) 0

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have "row W' i = vec_inv ?wsi"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. row W' i = vec_inv (ws ! i)
[PROOF STEP]
unfolding W'_def W_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. row (corthogonal_inv (mat_of_cols n ws)) i = vec_inv (ws ! i)
[PROOF STEP]
unfolding corthogonal_inv_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. row (mat_of_rows (dim_row (mat_of_cols n ws)) (map vec_inv (cols (mat_of_cols n ws)))) i = vec_inv (ws ! i)
[PROOF STEP]
using i ws
[PROOF STATE]
proof (prove)
using this:
i < n
set ws \<subseteq> carrier_vec n
corthogonal ws
length ws = n

goal (1 subgoal):
 1. row (mat_of_rows (dim_row (mat_of_cols n ws)) (map vec_inv (cols (mat_of_cols n ws)))) i = vec_inv (ws ! i)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
row W' i = vec_inv (ws ! i)

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
row W' i = vec_inv (ws ! i)

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have "col (A * W) 0 = A *\<^sub>v col W 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. col (A * W) 0 = A *\<^sub>v col W 0
[PROOF STEP]
using A W z A'
[PROOF STATE]
proof (prove)
using this:
A \<in> carrier_mat n n
W \<in> carrier_mat n n
0 < dim_col A'
A' \<in> carrier_mat n n

goal (1 subgoal):
 1. col (A * W) 0 = A *\<^sub>v col W 0
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
col (A * W) 0 = A *\<^sub>v col W 0

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
col (A * W) 0 = A *\<^sub>v col W 0

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have "col W 0 = v"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. col W 0 = v
[PROOF STEP]
unfolding W_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. col (mat_of_cols n ws) 0 = v
[PROOF STEP]
using z2 ws0 n col_mat_of_cols v
[PROOF STATE]
proof (prove)
using this:
0 < length ws
ws ! 0 = v
n \<noteq> 0
\<lbrakk>?j < length ?vs; ?vs ! ?j \<in> carrier_vec ?n\<rbrakk> \<Longrightarrow> col (mat_of_cols ?n ?vs) ?j = ?vs ! ?j
v \<in> carrier_vec n

goal (1 subgoal):
 1. col (mat_of_cols n ws) 0 = v
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
col W 0 = v

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
col W 0 = v

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have "A *\<^sub>v v = e \<cdot>\<^sub>v v"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A *\<^sub>v v = e \<cdot>\<^sub>v v
[PROOF STEP]
using eigen
[PROOF STATE]
proof (prove)
using this:
A *\<^sub>v v = e \<cdot>\<^sub>v v

goal (1 subgoal):
 1. A *\<^sub>v v = e \<cdot>\<^sub>v v
[PROOF STEP]
.
[PROOF STATE]
proof (state)
this:
A *\<^sub>v v = e \<cdot>\<^sub>v v

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
A *\<^sub>v v = e \<cdot>\<^sub>v v

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have "vec_inv ?wsi \<bullet> (e \<cdot>\<^sub>v v) = e * (vec_inv ?wsi \<bullet> v)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. vec_inv (ws ! i) \<bullet> (e \<cdot>\<^sub>v v) = e * (vec_inv (ws ! i) \<bullet> v)
[PROOF STEP]
using scalar_prod_smult_distrib[OF vec_inv_closed[OF wsi] v]
[PROOF STATE]
proof (prove)
using this:
vec_inv (ws ! i) \<bullet> (?a \<cdot>\<^sub>v v) = ?a * (vec_inv (ws ! i) \<bullet> v)

goal (1 subgoal):
 1. vec_inv (ws ! i) \<bullet> (e \<cdot>\<^sub>v v) = e * (vec_inv (ws ! i) \<bullet> v)
[PROOF STEP]
.
[PROOF STATE]
proof (state)
this:
vec_inv (ws ! i) \<bullet> (e \<cdot>\<^sub>v v) = e * (vec_inv (ws ! i) \<bullet> v)

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
vec_inv (ws ! i) \<bullet> (e \<cdot>\<^sub>v v) = e * (vec_inv (ws ! i) \<bullet> v)

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have "... = ?f i"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
proof(cases "i = 0")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. i = 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
 2. i \<noteq> 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
i = 0

goal (2 subgoals):
 1. i = 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
 2. i \<noteq> 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
i = 0

goal (1 subgoal):
 1. e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
using vec_inv[OF v v0]
[PROOF STATE]
proof (prove)
using this:
i = 0
vec_inv v \<bullet> v = (1::'a)

goal (1 subgoal):
 1. e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))

goal (1 subgoal):
 1. i \<noteq> 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. i \<noteq> 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
i \<noteq> 0

goal (1 subgoal):
 1. i \<noteq> 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
hence z: "0 < length ws"
[PROOF STATE]
proof (prove)
using this:
i \<noteq> 0

goal (1 subgoal):
 1. 0 < length ws
[PROOF STEP]
using i ws
[PROOF STATE]
proof (prove)
using this:
i \<noteq> 0
i < n
set ws \<subseteq> carrier_vec n
corthogonal ws
length ws = n

goal (1 subgoal):
 1. 0 < length ws
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
0 < length ws

goal (1 subgoal):
 1. i \<noteq> 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
note cwsi = carrier_vec_conjugate[OF wsi]
[PROOF STATE]
proof (state)
this:
conjugate (ws ! i) \<in> carrier_vec n

goal (1 subgoal):
 1. i \<noteq> 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
have "vec_inv ?wsi \<bullet> v = 1 / (?wsi \<bullet>c ?wsi) * (conjugate ?wsi \<bullet> v)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. vec_inv (ws ! i) \<bullet> v = (1::'a) / (ws ! i \<bullet>c ws ! i) * (conjugate (ws ! i) \<bullet> v)
[PROOF STEP]
unfolding vec_inv_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((1::'a) / (ws ! i \<bullet>c ws ! i) \<cdot>\<^sub>v conjugate (ws ! i)) \<bullet> v = (1::'a) / (ws ! i \<bullet>c ws ! i) * (conjugate (ws ! i) \<bullet> v)
[PROOF STEP]
unfolding smult_scalar_prod_distrib[OF cwsi v]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (1::'a) / (ws ! i \<bullet>c ws ! i) * (conjugate (ws ! i) \<bullet> v) = (1::'a) / (ws ! i \<bullet>c ws ! i) * (conjugate (ws ! i) \<bullet> v)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
vec_inv (ws ! i) \<bullet> v = (1::'a) / (ws ! i \<bullet>c ws ! i) * (conjugate (ws ! i) \<bullet> v)

goal (1 subgoal):
 1. i \<noteq> 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
vec_inv (ws ! i) \<bullet> v = (1::'a) / (ws ! i \<bullet>c ws ! i) * (conjugate (ws ! i) \<bullet> v)

goal (1 subgoal):
 1. i \<noteq> 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
have "conjugate ?wsi \<bullet> v = v \<bullet>c ?wsi"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. conjugate (ws ! i) \<bullet> v = v \<bullet>c ws ! i
[PROOF STEP]
using comm_scalar_prod[OF cwsi v]
[PROOF STATE]
proof (prove)
using this:
conjugate (ws ! i) \<bullet> v = v \<bullet>c ws ! i

goal (1 subgoal):
 1. conjugate (ws ! i) \<bullet> v = v \<bullet>c ws ! i
[PROOF STEP]
.
[PROOF STATE]
proof (state)
this:
conjugate (ws ! i) \<bullet> v = v \<bullet>c ws ! i

goal (1 subgoal):
 1. i \<noteq> 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
conjugate (ws ! i) \<bullet> v = v \<bullet>c ws ! i

goal (1 subgoal):
 1. i \<noteq> 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
have "... = 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. v \<bullet>c ws ! i = (0::'a)
[PROOF STEP]
using corthogonalD[OF ws(2) z i2] False
[PROOF STATE]
proof (prove)
using this:
(ws ! 0 \<bullet>c ws ! i = (0::'a)) = (0 \<noteq> i)
i \<noteq> 0

goal (1 subgoal):
 1. v \<bullet>c ws ! i = (0::'a)
[PROOF STEP]
unfolding ws0
[PROOF STATE]
proof (prove)
using this:
(v \<bullet>c ws ! i = (0::'a)) = (0 \<noteq> i)
i \<noteq> 0

goal (1 subgoal):
 1. v \<bullet>c ws ! i = (0::'a)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
v \<bullet>c ws ! i = (0::'a)

goal (1 subgoal):
 1. i \<noteq> 0 \<Longrightarrow> e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
vec_inv (ws ! i) \<bullet> v = (1::'a) / (ws ! i \<bullet>c ws ! i) * (0::'a)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
vec_inv (ws ! i) \<bullet> v = (1::'a) / (ws ! i \<bullet>c ws ! i) * (0::'a)

goal (1 subgoal):
 1. e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
using False
[PROOF STATE]
proof (prove)
using this:
vec_inv (ws ! i) \<bullet> v = (1::'a) / (ws ! i \<bullet>c ws ! i) * (0::'a)
i \<noteq> 0

goal (1 subgoal):
 1. e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
e * (vec_inv (ws ! i) \<bullet> v) = (if i = 0 then e else (0::'a))

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
have "... = vec n ?f $ i"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (if i = 0 then e else (0::'a)) = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
using i
[PROOF STATE]
proof (prove)
using this:
i < n

goal (1 subgoal):
 1. (if i = 0 then e else (0::'a)) = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
(if i = 0 then e else (0::'a)) = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i

goal (1 subgoal):
 1. \<And>i. i < n \<Longrightarrow> col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
show "col A' 0 $ i = vec n ?f $ i"
[PROOF STATE]
proof (prove)
using this:
col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i

goal (1 subgoal):
 1. col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i
[PROOF STEP]
.
[PROOF STATE]
proof (state)
this:
col A' 0 $ i = vec n (\<lambda>i. if i = 0 then e else (0::'a)) $ i

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
col A' 0 = vec n (\<lambda>i. if i = 0 then e else (0::'a))

goal:
No subgoals!
[PROOF STEP]
qed