[STATEMENT]
lemma poincare_line_non_homogenous:
  assumes "u \<noteq> \<infinity>\<^sub>h" "v \<noteq> \<infinity>\<^sub>h" "u \<noteq> v" "u \<noteq> inversion v"
  shows "let u' = to_complex u;  v' = to_complex v;
             A = \<i> * (u' * cnj v' - v' * cnj u');
             B = \<i> * (v' * ((cmod u')\<^sup>2 + 1) - u' * ((cmod v')\<^sup>2 + 1))
          in poincare_line u v = mk_circline A B (cnj B) A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. let u' = to_complex u; v' = to_complex v; A = \<i> * (u' * cnj v' - v' * cnj u'); B = \<i> * (v' * cor ((cmod u')\<^sup>2 + 1) - u' * cor ((cmod v')\<^sup>2 + 1)) in poincare_line u v = mk_circline A B (cnj B) A
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
u \<noteq> \<infinity>\<^sub>h
v \<noteq> \<infinity>\<^sub>h
u \<noteq> v
u \<noteq> inversion v

goal (1 subgoal):
 1. let u' = to_complex u; v' = to_complex v; A = \<i> * (u' * cnj v' - v' * cnj u'); B = \<i> * (v' * cor ((cmod u')\<^sup>2 + 1) - u' * cor ((cmod v')\<^sup>2 + 1)) in poincare_line u v = mk_circline A B (cnj B) A
[PROOF STEP]
unfolding unit_disc_def disc_def inversion_def
[PROOF STATE]
proof (prove)
using this:
u \<noteq> \<infinity>\<^sub>h
v \<noteq> \<infinity>\<^sub>h
u \<noteq> v
u \<noteq> (conjugate \<circ> reciprocal) v

goal (1 subgoal):
 1. let u' = to_complex u; v' = to_complex v; A = \<i> * (u' * cnj v' - v' * cnj u'); B = \<i> * (v' * cor ((cmod u')\<^sup>2 + 1) - u' * cor ((cmod v')\<^sup>2 + 1)) in poincare_line u v = mk_circline A B (cnj B) A
[PROOF STEP]
apply (simp add: Let_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>u \<noteq> \<infinity>\<^sub>h; v \<noteq> \<infinity>\<^sub>h; u \<noteq> v; u \<noteq> conjugate (reciprocal v)\<rbrakk> \<Longrightarrow> poincare_line u v = mk_circline (\<i> * (to_complex u * cnj (to_complex v) - to_complex v * cnj (to_complex u))) (\<i> * (to_complex v * ((cor (cmod (to_complex u)))\<^sup>2 + 1) - to_complex u * ((cor (cmod (to_complex v)))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex v) * ((cor (cmod (to_complex u)))\<^sup>2 + 1) - cnj (to_complex u) * ((cor (cmod (to_complex v)))\<^sup>2 + 1)))) (\<i> * (to_complex u * cnj (to_complex v) - to_complex v * cnj (to_complex u)))
[PROOF STEP]
proof (transfer, transfer, safe)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
fix u1 u2 v1 v2
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
assume uv: "(u1, u2) \<noteq> vec_zero" "(v1, v2) \<noteq> vec_zero"
             "\<not> (u1, u2) \<approx>\<^sub>v \<infinity>\<^sub>v" "\<not> (v1, v2) \<approx>\<^sub>v \<infinity>\<^sub>v"
             "\<not> (u1, u2) \<approx>\<^sub>v (v1, v2)" "\<not> (u1, u2) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (v1, v2))"
[PROOF STATE]
proof (state)
this:
(u1, u2) \<noteq> vec_zero
(v1, v2) \<noteq> vec_zero
\<not> (u1, u2) \<approx>\<^sub>v \<infinity>\<^sub>v
\<not> (v1, v2) \<approx>\<^sub>v \<infinity>\<^sub>v
\<not> (u1, u2) \<approx>\<^sub>v (v1, v2)
\<not> (u1, u2) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (v1, v2))

goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
let ?u = "to_complex_cvec (u1, u2)" and ?v = "to_complex_cvec (v1, v2)"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
let ?A = "\<i> * (?u * cnj ?v - ?v * cnj ?u)"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
let ?B = "\<i> * (?v * ((cor (cmod ?u))\<^sup>2 + 1) - ?u * ((cor (cmod ?v))\<^sup>2 + 1))"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
let ?C = "- (\<i> * (cnj ?v * ((cor (cmod ?u))\<^sup>2 + 1) - cnj ?u * ((cor (cmod ?v))\<^sup>2 + 1)))"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
let ?D = ?A
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
let ?H = "(?A, ?B, ?C, ?D)"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
let ?den = "u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
have "u2 \<noteq> 0" "v2 \<noteq> 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. u2 \<noteq> 0 &&& v2 \<noteq> 0
[PROOF STEP]
using uv
[PROOF STATE]
proof (prove)
using this:
(u1, u2) \<noteq> vec_zero
(v1, v2) \<noteq> vec_zero
\<not> (u1, u2) \<approx>\<^sub>v \<infinity>\<^sub>v
\<not> (v1, v2) \<approx>\<^sub>v \<infinity>\<^sub>v
\<not> (u1, u2) \<approx>\<^sub>v (v1, v2)
\<not> (u1, u2) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (v1, v2))

goal (1 subgoal):
 1. u2 \<noteq> 0 &&& v2 \<noteq> 0
[PROOF STEP]
using inf_cvec_z2_zero_iff
[PROOF STATE]
proof (prove)
using this:
(u1, u2) \<noteq> vec_zero
(v1, v2) \<noteq> vec_zero
\<not> (u1, u2) \<approx>\<^sub>v \<infinity>\<^sub>v
\<not> (v1, v2) \<approx>\<^sub>v \<infinity>\<^sub>v
\<not> (u1, u2) \<approx>\<^sub>v (v1, v2)
\<not> (u1, u2) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (v1, v2))
(?z1.0, ?z2.0) \<noteq> vec_zero \<Longrightarrow> ((?z1.0, ?z2.0) \<approx>\<^sub>v \<infinity>\<^sub>v) = (?z2.0 = 0)

goal (1 subgoal):
 1. u2 \<noteq> 0 &&& v2 \<noteq> 0
[PROOF STEP]
by blast+
[PROOF STATE]
proof (state)
this:
u2 \<noteq> 0
v2 \<noteq> 0

goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
have "\<not> (u1, u2) \<approx>\<^sub>v (cnj v2, cnj v1)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<not> (u1, u2) \<approx>\<^sub>v (cnj v2, cnj v1)
[PROOF STEP]
using uv(6)
[PROOF STATE]
proof (prove)
using this:
\<not> (u1, u2) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (v1, v2))

goal (1 subgoal):
 1. \<not> (u1, u2) \<approx>\<^sub>v (cnj v2, cnj v1)
[PROOF STEP]
by (simp add: vec_cnj_def)
[PROOF STATE]
proof (state)
this:
\<not> (u1, u2) \<approx>\<^sub>v (cnj v2, cnj v1)

goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<not> (u1, u2) \<approx>\<^sub>v (cnj v2, cnj v1)

goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
have "(cnj v2, cnj v1) \<noteq> vec_zero"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (cnj v2, cnj v1) \<noteq> vec_zero
[PROOF STEP]
using uv(2)
[PROOF STATE]
proof (prove)
using this:
(v1, v2) \<noteq> vec_zero

goal (1 subgoal):
 1. (cnj v2, cnj v1) \<noteq> vec_zero
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(cnj v2, cnj v1) \<noteq> vec_zero

goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<not> (u1, u2) \<approx>\<^sub>v (cnj v2, cnj v1)
(cnj v2, cnj v1) \<noteq> vec_zero
[PROOF STEP]
have *: "u1 * cnj v1 \<noteq> u2 * cnj v2" "u1 * v2 \<noteq> u2 * v1"
[PROOF STATE]
proof (prove)
using this:
\<not> (u1, u2) \<approx>\<^sub>v (cnj v2, cnj v1)
(cnj v2, cnj v1) \<noteq> vec_zero

goal (1 subgoal):
 1. u1 * cnj v1 \<noteq> u2 * cnj v2 &&& u1 * v2 \<noteq> u2 * v1
[PROOF STEP]
using uv(5) uv(1) uv(2) \<open>u2 \<noteq> 0\<close> \<open>v2 \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
\<not> (u1, u2) \<approx>\<^sub>v (cnj v2, cnj v1)
(cnj v2, cnj v1) \<noteq> vec_zero
\<not> (u1, u2) \<approx>\<^sub>v (v1, v2)
(u1, u2) \<noteq> vec_zero
(v1, v2) \<noteq> vec_zero
u2 \<noteq> 0
v2 \<noteq> 0

goal (1 subgoal):
 1. u1 * cnj v1 \<noteq> u2 * cnj v2 &&& u1 * v2 \<noteq> u2 * v1
[PROOF STEP]
using complex_cvec_eq_mix
[PROOF STATE]
proof (prove)
using this:
\<not> (u1, u2) \<approx>\<^sub>v (cnj v2, cnj v1)
(cnj v2, cnj v1) \<noteq> vec_zero
\<not> (u1, u2) \<approx>\<^sub>v (v1, v2)
(u1, u2) \<noteq> vec_zero
(v1, v2) \<noteq> vec_zero
u2 \<noteq> 0
v2 \<noteq> 0
\<lbrakk>(?z1.0, ?z2.0) \<noteq> vec_zero; (?w1.0, ?w2.0) \<noteq> vec_zero\<rbrakk> \<Longrightarrow> ((?z1.0, ?z2.0) \<approx>\<^sub>v (?w1.0, ?w2.0)) = (?z1.0 * ?w2.0 = ?z2.0 * ?w1.0)

goal (1 subgoal):
 1. u1 * cnj v1 \<noteq> u2 * cnj v2 &&& u1 * v2 \<noteq> u2 * v1
[PROOF STEP]
by blast+
[PROOF STATE]
proof (state)
this:
u1 * cnj v1 \<noteq> u2 * cnj v2
u1 * v2 \<noteq> u2 * v1

goal (1 subgoal):
 1. \<And>a b aa ba. \<lbrakk>(a, b) \<noteq> vec_zero; (aa, ba) \<noteq> vec_zero; \<not> (a, b) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (aa, ba) \<approx>\<^sub>v \<infinity>\<^sub>v; \<not> (a, b) \<approx>\<^sub>v (aa, ba); \<not> (a, b) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (aa, ba))\<rbrakk> \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (a, b) (aa, ba)) (mk_circline_cmat (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))) (\<i> * (to_complex_cvec (aa, ba) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - to_complex_cvec (a, b) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (aa, ba)) * ((cor (cmod (to_complex_cvec (a, b))))\<^sup>2 + 1) - cnj (to_complex_cvec (a, b)) * ((cor (cmod (to_complex_cvec (aa, ba))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (a, b) * cnj (to_complex_cvec (aa, ba)) - to_complex_cvec (aa, ba) * cnj (to_complex_cvec (a, b)))))
[PROOF STEP]
show "circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2))
                         (mk_circline_cmat ?A ?B ?C ?D)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
proof (cases "?den \<noteq> 0")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0

goal (2 subgoals):
 1. u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
let ?nom = "v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)"
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
let ?H' = "mk_poincare_line_cmat (Re (\<i> * ?den)) (\<i> * ?nom)"
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
have "circline_eq_cmat ?H ?H'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
[PROOF STEP]
let ?k = "(u2 * cnj v2) * (v2 * cnj u2)"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
[PROOF STEP]
have "is_real ?k"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. is_real (u2 * cnj v2 * (v2 * cnj u2))
[PROOF STEP]
using eq_cnj_iff_real
[PROOF STATE]
proof (prove)
using this:
(cnj ?z = ?z) = is_real ?z

goal (1 subgoal):
 1. is_real (u2 * cnj v2 * (v2 * cnj u2))
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
is_real (u2 * cnj v2 * (v2 * cnj u2))

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
[PROOF STEP]
hence "cor (Re ?k) = ?k"
[PROOF STATE]
proof (prove)
using this:
is_real (u2 * cnj v2 * (v2 * cnj u2))

goal (1 subgoal):
 1. cor (Re (u2 * cnj v2 * (v2 * cnj u2))) = u2 * cnj v2 * (v2 * cnj u2)
[PROOF STEP]
using complex_of_real_Re
[PROOF STATE]
proof (prove)
using this:
is_real (u2 * cnj v2 * (v2 * cnj u2))
is_real ?k \<Longrightarrow> cor (Re ?k) = ?k

goal (1 subgoal):
 1. cor (Re (u2 * cnj v2 * (v2 * cnj u2))) = u2 * cnj v2 * (v2 * cnj u2)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
cor (Re (u2 * cnj v2 * (v2 * cnj u2))) = u2 * cnj v2 * (v2 * cnj u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
[PROOF STEP]
have "Re (\<i> * ?den) = Re ?k * ?A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
have "?A = cnj ?A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))) = cnj (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
by (simp add: field_simps)
[PROOF STATE]
proof (state)
this:
\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))) = cnj (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal (1 subgoal):
 1. cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
hence "is_real ?A"
[PROOF STATE]
proof (prove)
using this:
\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))) = cnj (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal (1 subgoal):
 1. is_real (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
using eq_cnj_iff_real
[PROOF STATE]
proof (prove)
using this:
\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))) = cnj (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
(cnj ?z = ?z) = is_real ?z

goal (1 subgoal):
 1. is_real (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
is_real (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal (1 subgoal):
 1. cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
is_real (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal (1 subgoal):
 1. cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
have "\<i> * ?den =  cnj (\<i> * ?den)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2) = cnj (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))
[PROOF STEP]
by (simp add: field_simps)
[PROOF STATE]
proof (state)
this:
\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2) = cnj (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))

goal (1 subgoal):
 1. cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
hence "is_real (\<i> * ?den)"
[PROOF STATE]
proof (prove)
using this:
\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2) = cnj (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))

goal (1 subgoal):
 1. is_real (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))
[PROOF STEP]
using eq_cnj_iff_real
[PROOF STATE]
proof (prove)
using this:
\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2) = cnj (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))
(cnj ?z = ?z) = is_real ?z

goal (1 subgoal):
 1. is_real (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
is_real (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))

goal (1 subgoal):
 1. cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
hence "cor (Re (\<i> * ?den)) = \<i> * ?den"
[PROOF STATE]
proof (prove)
using this:
is_real (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))

goal (1 subgoal):
 1. cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = \<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2)
[PROOF STEP]
using complex_of_real_Re
[PROOF STATE]
proof (prove)
using this:
is_real (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))
is_real ?k \<Longrightarrow> cor (Re ?k) = ?k

goal (1 subgoal):
 1. cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = \<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = \<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2)

goal (1 subgoal):
 1. cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
is_real (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = \<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
is_real (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = \<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2)

goal (1 subgoal):
 1. cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
using \<open>cor (Re ?k) = ?k\<close>
[PROOF STATE]
proof (prove)
using this:
is_real (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = \<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2)
cor (Re (u2 * cnj v2 * (v2 * cnj u2))) = u2 * cnj v2 * (v2 * cnj u2)

goal (1 subgoal):
 1. cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
by (simp add: field_simps)
[PROOF STATE]
proof (state)
this:
cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
[PROOF STEP]
have "\<i> * ?nom = Re ?k  * ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))
[PROOF STEP]
using \<open>cor (Re ?k) = ?k\<close> \<open>u2 \<noteq>  0\<close> \<open>v2 \<noteq> 0\<close> complex_mult_cnj_cmod[symmetric]
[PROOF STATE]
proof (prove)
using this:
cor (Re (u2 * cnj v2 * (v2 * cnj u2))) = u2 * cnj v2 * (v2 * cnj u2)
u2 \<noteq> 0
v2 \<noteq> 0
cor ((cmod ?z)\<^sup>2) = ?z * cnj ?z

goal (1 subgoal):
 1. \<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))
[PROOF STEP]
by (auto simp add: field_simps)
[PROOF STATE]
proof (state)
this:
\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
[PROOF STEP]
have "?k \<noteq> 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. u2 * cnj v2 * (v2 * cnj u2) \<noteq> 0
[PROOF STEP]
using \<open>u2 \<noteq> 0\<close> \<open>v2 \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
u2 \<noteq> 0
v2 \<noteq> 0

goal (1 subgoal):
 1. u2 * cnj v2 * (v2 * cnj u2) \<noteq> 0
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
u2 * cnj v2 * (v2 * cnj u2) \<noteq> 0

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
[PROOF STEP]
hence "Re ?k \<noteq> 0"
[PROOF STATE]
proof (prove)
using this:
u2 * cnj v2 * (v2 * cnj u2) \<noteq> 0

goal (1 subgoal):
 1. Re (u2 * cnj v2 * (v2 * cnj u2)) \<noteq> 0
[PROOF STEP]
using \<open>is_real ?k\<close>
[PROOF STATE]
proof (prove)
using this:
u2 * cnj v2 * (v2 * cnj u2) \<noteq> 0
is_real (u2 * cnj v2 * (v2 * cnj u2))

goal (1 subgoal):
 1. Re (u2 * cnj v2 * (v2 * cnj u2)) \<noteq> 0
[PROOF STEP]
by (metis \<open>cor (Re ?k) = ?k\<close> of_real_0)
[PROOF STATE]
proof (state)
this:
Re (u2 * cnj v2 * (v2 * cnj u2)) \<noteq> 0

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))
Re (u2 * cnj v2 * (v2 * cnj u2)) \<noteq> 0
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
cor (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)) = cor (Re (u2 * cnj v2 * (v2 * cnj u2))) * (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))
Re (u2 * cnj v2 * (v2 * cnj u2)) \<noteq> 0

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
[PROOF STEP]
by simp (rule_tac x="Re ?k" in exI, simp add: mult.commute)
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))

goal (2 subgoals):
 1. u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))

goal (2 subgoals):
 1. u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
have "poincare_line_cvec_cmat (u1, u2) (v1, v2) = ?H'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))
[PROOF STEP]
using \<open>?den \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0

goal (1 subgoal):
 1. poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))
[PROOF STEP]
unfolding poincare_line_cvec_cmat_def
[PROOF STATE]
proof (prove)
using this:
u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0

goal (1 subgoal):
 1. (let (z1, z2) = (u1, u2); (w1, w2) = (v1, v2); nom = w1 * cnj w2 * (z1 * cnj z1 + z2 * cnj z2) - z1 * cnj z2 * (w1 * cnj w1 + w2 * cnj w2); den = z1 * cnj z2 * cnj w1 * w2 - w1 * cnj w2 * cnj z1 * z2 in if den \<noteq> 0 then mk_poincare_line_cmat (Re (\<i> * den)) (\<i> * nom) else if z1 * cnj z2 \<noteq> 0 then mk_poincare_line_cmat 0 (\<i> * z1 * cnj z2) else if w1 * cnj w2 \<noteq> 0 then mk_poincare_line_cmat 0 (\<i> * w1 * cnj w2) else mk_poincare_line_cmat 0 \<i>) = mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))
[PROOF STEP]
by (simp add: Let_def)
[PROOF STATE]
proof (state)
this:
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))

goal (2 subgoals):
 1. u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))

goal (2 subgoals):
 1. u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
hence "hermitean ?H' \<and> ?H' \<noteq> mat_zero"
[PROOF STATE]
proof (prove)
using this:
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))

goal (1 subgoal):
 1. hermitean (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))) \<and> mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))) \<noteq> mat_zero
[PROOF STEP]
by (metis mk_poincare_line_cmat_hermitean poincare_line_cvec_cmat_nonzero uv(1) uv(2))
[PROOF STATE]
proof (state)
this:
hermitean (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))) \<and> mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))) \<noteq> mat_zero

goal (2 subgoals):
 1. u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
hence "hermitean ?H \<and> ?H \<noteq> mat_zero"
[PROOF STATE]
proof (prove)
using this:
hermitean (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))) \<and> mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))) \<noteq> mat_zero

goal (1 subgoal):
 1. hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
[PROOF STEP]
using \<open>circline_eq_cmat ?H ?H'\<close>
[PROOF STATE]
proof (prove)
using this:
hermitean (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))) \<and> mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))) \<noteq> mat_zero
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))

goal (1 subgoal):
 1. hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
[PROOF STEP]
using circline_eq_cmat_hermitean_nonzero[of ?H' ?H] symp_circline_eq_cmat
[PROOF STATE]
proof (prove)
using this:
hermitean (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))) \<and> mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))) \<noteq> mat_zero
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
\<lbrakk>hermitean (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))) \<and> mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))) \<noteq> mat_zero; circline_eq_cmat (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))\<rbrakk> \<Longrightarrow> hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
symp circline_eq_cmat

goal (1 subgoal):
 1. hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
[PROOF STEP]
unfolding symp_def
[PROOF STATE]
proof (prove)
using this:
hermitean (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))) \<and> mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))) \<noteq> mat_zero
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
\<lbrakk>hermitean (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))) \<and> mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))) \<noteq> mat_zero; circline_eq_cmat (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))\<rbrakk> \<Longrightarrow> hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
\<forall>x y. circline_eq_cmat x y \<longrightarrow> circline_eq_cmat y x

goal (1 subgoal):
 1. hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero

goal (2 subgoals):
 1. u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
hence "mk_circline_cmat ?A ?B ?C ?D = ?H"
[PROOF STATE]
proof (prove)
using this:
hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero

goal (1 subgoal):
 1. mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) = (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) = (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal (2 subgoals):
 1. u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))
mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) = (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
have "circline_eq_cmat (mk_circline_cmat ?A ?B ?C ?D)
                           (poincare_line_cvec_cmat (u1, u2) (v1, v2))"
[PROOF STATE]
proof (prove)
using this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2))))
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat (Re (\<i> * (u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2))) (\<i> * (v1 * cnj v2 * (u1 * cnj u1 + u2 * cnj u2) - u1 * cnj u2 * (v1 * cnj v1 + v2 * cnj v2)))
mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) = (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal (1 subgoal):
 1. circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))

goal (2 subgoals):
 1. u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))

goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
using symp_circline_eq_cmat
[PROOF STATE]
proof (prove)
using this:
circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))
symp circline_eq_cmat

goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
unfolding symp_def
[PROOF STATE]
proof (prove)
using this:
circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))
\<forall>x y. circline_eq_cmat x y \<longrightarrow> circline_eq_cmat y x

goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))

goal (1 subgoal):
 1. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0

goal (1 subgoal):
 1. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
let ?d = "v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
let ?cd = "cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
have "cnj ?d = ?cd"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cnj (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) = cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2
[PROOF STEP]
by (simp add: mult.commute)
[PROOF STATE]
proof (state)
this:
cnj (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) = cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2

goal (1 subgoal):
 1. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
let ?d1 = "(v1 / v2) * (cnj u1 / cnj u2) - 1"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
let ?d2 = "u1 / u2 - v1 / v2"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
have **: "?d = ?d1 * ?d2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 = (v1 / v2 * (cnj u1 / cnj u2) - 1) * (u1 / u2 - v1 / v2)
[PROOF STEP]
using \<open>\<not> ?den \<noteq> 0\<close> \<open>u2 \<noteq> 0\<close> \<open>v2 \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0

goal (1 subgoal):
 1. v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 = (v1 / v2 * (cnj u1 / cnj u2) - 1) * (u1 / u2 - v1 / v2)
[PROOF STEP]
by(simp add: field_simps)
[PROOF STATE]
proof (state)
this:
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 = (v1 / v2 * (cnj u1 / cnj u2) - 1) * (u1 / u2 - v1 / v2)

goal (1 subgoal):
 1. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
hence "?d \<noteq> 0"
[PROOF STATE]
proof (prove)
using this:
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 = (v1 / v2 * (cnj u1 / cnj u2) - 1) * (u1 / u2 - v1 / v2)

goal (1 subgoal):
 1. v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0
[PROOF STEP]
using \<open>\<not> ?den \<noteq> 0\<close> \<open>u2 \<noteq> 0\<close> \<open>v2 \<noteq> 0\<close> *
[PROOF STATE]
proof (prove)
using this:
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 = (v1 / v2 * (cnj u1 / cnj u2) - 1) * (u1 / u2 - v1 / v2)
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
u1 * cnj v1 \<noteq> u2 * cnj v2
u1 * v2 \<noteq> u2 * v1

goal (1 subgoal):
 1. v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0
[PROOF STEP]
by auto (simp add: field_simps)+
[PROOF STATE]
proof (state)
this:
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0

goal (1 subgoal):
 1. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
have "is_real ?d1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. is_real (v1 / v2 * (cnj u1 / cnj u2) - 1)
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. is_real (v1 / v2 * (cnj u1 / cnj u2) - 1)
[PROOF STEP]
have "cnj ?d1 = ?d1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cnj (v1 / v2 * (cnj u1 / cnj u2) - 1) = v1 / v2 * (cnj u1 / cnj u2) - 1
[PROOF STEP]
using \<open>\<not> ?den \<noteq> 0\<close> \<open>u2 \<noteq> 0\<close> \<open>v2 \<noteq> 0\<close> *
[PROOF STATE]
proof (prove)
using this:
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
u1 * cnj v1 \<noteq> u2 * cnj v2
u1 * v2 \<noteq> u2 * v1

goal (1 subgoal):
 1. cnj (v1 / v2 * (cnj u1 / cnj u2) - 1) = v1 / v2 * (cnj u1 / cnj u2) - 1
[PROOF STEP]
by (simp add: field_simps)
[PROOF STATE]
proof (state)
this:
cnj (v1 / v2 * (cnj u1 / cnj u2) - 1) = v1 / v2 * (cnj u1 / cnj u2) - 1

goal (1 subgoal):
 1. is_real (v1 / v2 * (cnj u1 / cnj u2) - 1)
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
cnj (v1 / v2 * (cnj u1 / cnj u2) - 1) = v1 / v2 * (cnj u1 / cnj u2) - 1

goal (1 subgoal):
 1. is_real (v1 / v2 * (cnj u1 / cnj u2) - 1)
[PROOF STEP]
using eq_cnj_iff_real
[PROOF STATE]
proof (prove)
using this:
cnj (v1 / v2 * (cnj u1 / cnj u2) - 1) = v1 / v2 * (cnj u1 / cnj u2) - 1
(cnj ?z = ?z) = is_real ?z

goal (1 subgoal):
 1. is_real (v1 / v2 * (cnj u1 / cnj u2) - 1)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
is_real (v1 / v2 * (cnj u1 / cnj u2) - 1)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
is_real (v1 / v2 * (cnj u1 / cnj u2) - 1)

goal (1 subgoal):
 1. \<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
proof (cases "u1 * cnj u2 \<noteq> 0")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
u1 * cnj u2 \<noteq> 0

goal (2 subgoals):
 1. u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
let ?nom = "u1 * cnj u2"
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
let ?H' = "mk_poincare_line_cmat 0 (\<i> * ?nom)"
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
have "circline_eq_cmat ?H ?H'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
let ?k = "(u1 * cnj u2) / ?d"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
have "is_real ?k"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
[PROOF STEP]
have "is_real ((u1 * cnj u2) / ?d2)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
let ?rhs = "(u2 * cnj u2) / (1 - (v1*u2)/(u1*v2))"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
have 1: "(u1 * cnj u2) / ?d2 = ?rhs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. u1 * cnj u2 / (u1 / u2 - v1 / v2) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
[PROOF STEP]
using \<open>\<not> ?den \<noteq> 0\<close> \<open>u2 \<noteq> 0\<close> \<open>v2 \<noteq> 0\<close> * \<open>u1 * cnj u2 \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
u1 * cnj v1 \<noteq> u2 * cnj v2
u1 * v2 \<noteq> u2 * v1
u1 * cnj u2 \<noteq> 0

goal (1 subgoal):
 1. u1 * cnj u2 / (u1 / u2 - v1 / v2) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
[PROOF STEP]
by (simp add: field_simps)
[PROOF STATE]
proof (state)
this:
u1 * cnj u2 / (u1 / u2 - v1 / v2) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))

goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
u1 * cnj u2 / (u1 / u2 - v1 / v2) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))

goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
have "cnj ?rhs = ?rhs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cnj (u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. cnj (u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
[PROOF STEP]
have "cnj (1 - v1 * u2 / (u1 * v2)) = 1 - v1 * u2 / (u1 * v2)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cnj (1 - v1 * u2 / (u1 * v2)) = 1 - v1 * u2 / (u1 * v2)
[PROOF STEP]
using \<open>\<not> ?den \<noteq> 0\<close> \<open>u2 \<noteq> 0\<close> \<open>v2 \<noteq> 0\<close> * \<open>u1 * cnj u2 \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
u1 * cnj v1 \<noteq> u2 * cnj v2
u1 * v2 \<noteq> u2 * v1
u1 * cnj u2 \<noteq> 0

goal (1 subgoal):
 1. cnj (1 - v1 * u2 / (u1 * v2)) = 1 - v1 * u2 / (u1 * v2)
[PROOF STEP]
by (simp add: field_simps)
[PROOF STATE]
proof (state)
this:
cnj (1 - v1 * u2 / (u1 * v2)) = 1 - v1 * u2 / (u1 * v2)

goal (1 subgoal):
 1. cnj (u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
cnj (1 - v1 * u2 / (u1 * v2)) = 1 - v1 * u2 / (u1 * v2)

goal (1 subgoal):
 1. cnj (u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
[PROOF STEP]
have "cnj (u2 * cnj u2) = u2 * cnj u2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cnj (u2 * cnj u2) = u2 * cnj u2
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
cnj (u2 * cnj u2) = u2 * cnj u2

goal (1 subgoal):
 1. cnj (u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
cnj (1 - v1 * u2 / (u1 * v2)) = 1 - v1 * u2 / (u1 * v2)
cnj (u2 * cnj u2) = u2 * cnj u2
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
cnj (1 - v1 * u2 / (u1 * v2)) = 1 - v1 * u2 / (u1 * v2)
cnj (u2 * cnj u2) = u2 * cnj u2

goal (1 subgoal):
 1. cnj (u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
cnj (u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
cnj (u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))

goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
u1 * cnj u2 / (u1 / u2 - v1 / v2) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
cnj (u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
u1 * cnj u2 / (u1 / u2 - v1 / v2) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
cnj (u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))

goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
using eq_cnj_iff_real
[PROOF STATE]
proof (prove)
using this:
u1 * cnj u2 / (u1 / u2 - v1 / v2) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
cnj (u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))) = u2 * cnj u2 / (1 - v1 * u2 / (u1 * v2))
(cnj ?z = ?z) = is_real ?z

goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
is_real (u1 * cnj u2 / (u1 / u2 - v1 / v2))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
is_real (u1 * cnj u2 / (u1 / u2 - v1 / v2))

goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
is_real (u1 * cnj u2 / (u1 / u2 - v1 / v2))

goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
[PROOF STEP]
using ** \<open>is_real ?d1\<close>
[PROOF STATE]
proof (prove)
using this:
is_real (u1 * cnj u2 / (u1 / u2 - v1 / v2))
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 = (v1 / v2 * (cnj u1 / cnj u2) - 1) * (u1 / u2 - v1 / v2)
is_real (v1 / v2 * (cnj u1 / cnj u2) - 1)

goal (1 subgoal):
 1. is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
[PROOF STEP]
by (metis complex_cnj_divide divide_divide_eq_left' eq_cnj_iff_real)
[PROOF STATE]
proof (state)
this:
is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
have "?k \<noteq> 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) \<noteq> 0
[PROOF STEP]
using \<open>?d \<noteq> 0\<close> \<open>u1 * cnj u2 \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0
u1 * cnj u2 \<noteq> 0

goal (1 subgoal):
 1. u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) \<noteq> 0
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) \<noteq> 0

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
have "cnj ?k = ?k"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cnj (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
[PROOF STEP]
using \<open>is_real ?k\<close>
[PROOF STATE]
proof (prove)
using this:
is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))

goal (1 subgoal):
 1. cnj (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
[PROOF STEP]
using eq_cnj_iff_real
[PROOF STATE]
proof (prove)
using this:
is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
(cnj ?z = ?z) = is_real ?z

goal (1 subgoal):
 1. cnj (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
cnj (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
have "Re ?k \<noteq> 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
[PROOF STEP]
using \<open>?k \<noteq> 0\<close> \<open>is_real ?k\<close>
[PROOF STATE]
proof (prove)
using this:
u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) \<noteq> 0
is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))

goal (1 subgoal):
 1. Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
[PROOF STEP]
by (metis complex.expand zero_complex.simps(1) zero_complex.simps(2))
[PROOF STATE]
proof (state)
this:
Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
have "u1 * cnj u2 = ?k * ?d"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. u1 * cnj u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
[PROOF STEP]
using \<open>?d \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0

goal (1 subgoal):
 1. u1 * cnj u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
u1 * cnj u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
u1 * cnj u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
hence "cnj u1 * u2 = cnj ?k * cnj ?d"
[PROOF STATE]
proof (prove)
using this:
u1 * cnj u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)

goal (1 subgoal):
 1. cnj u1 * u2 = cnj (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) * cnj (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
[PROOF STEP]
by (metis complex_cnj_cnj complex_cnj_mult)
[PROOF STATE]
proof (state)
this:
cnj u1 * u2 = cnj (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) * cnj (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
hence "cnj u1 * u2 = ?k * ?cd"
[PROOF STATE]
proof (prove)
using this:
cnj u1 * u2 = cnj (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) * cnj (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)

goal (1 subgoal):
 1. cnj u1 * u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
[PROOF STEP]
using \<open>cnj ?k = ?k\<close> \<open>cnj ?d = ?cd\<close>
[PROOF STATE]
proof (prove)
using this:
cnj u1 * u2 = cnj (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) * cnj (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) = cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2

goal (1 subgoal):
 1. cnj u1 * u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
cnj u1 * u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
u1 * cnj u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj u1 * u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
u1 * cnj u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj u1 * u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
using \<open>~ ?den \<noteq> 0\<close> \<open>u1 * cnj u2 \<noteq> 0\<close> \<open>u2 \<noteq> 0\<close> \<open>v2 \<noteq> 0\<close> \<open>Re ?k \<noteq> 0\<close> \<open>is_real ?k\<close> \<open>?d \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
u1 * cnj u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj u1 * u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u1 * cnj u2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
using complex_mult_cnj_cmod[symmetric, of u1]
[PROOF STATE]
proof (prove)
using this:
u1 * cnj u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj u1 * u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u1 * cnj u2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0
cor ((cmod u1)\<^sup>2) = u1 * cnj u1

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
using complex_mult_cnj_cmod[symmetric, of v1]
[PROOF STATE]
proof (prove)
using this:
u1 * cnj u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj u1 * u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u1 * cnj u2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0
cor ((cmod u1)\<^sup>2) = u1 * cnj u1
cor ((cmod v1)\<^sup>2) = v1 * cnj v1

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
using complex_mult_cnj_cmod[symmetric, of u2]
[PROOF STATE]
proof (prove)
using this:
u1 * cnj u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj u1 * u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u1 * cnj u2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0
cor ((cmod u1)\<^sup>2) = u1 * cnj u1
cor ((cmod v1)\<^sup>2) = v1 * cnj v1
cor ((cmod u2)\<^sup>2) = u2 * cnj u2

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
using complex_mult_cnj_cmod[symmetric, of v2]
[PROOF STATE]
proof (prove)
using this:
u1 * cnj u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj u1 * u2 = u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u1 * cnj u2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0
cor ((cmod u1)\<^sup>2) = u1 * cnj u1
cor ((cmod v1)\<^sup>2) = v1 * cnj v1
cor ((cmod u2)\<^sup>2) = u2 * cnj u2
cor ((cmod v2)\<^sup>2) = v2 * cnj v2

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
[PROOF STEP]
apply (simp add: power_divide norm_mult norm_divide)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>cnj u1 * u2 = u1 * cnj u2 * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2) / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2); u1 * cnj u2 * cnj v1 * v2 = v1 * cnj v2 * cnj u1 * u2; u1 \<noteq> 0; u2 \<noteq> 0; v2 \<noteq> 0; Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0; is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)); v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 \<noteq> u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2; (cor (cmod u1))\<^sup>2 = u1 * cnj u1; (cor (cmod v1))\<^sup>2 = v1 * cnj v1; (cor (cmod u2))\<^sup>2 = u2 * cnj u2; (cor (cmod v2))\<^sup>2 = v2 * cnj v2\<rbrakk> \<Longrightarrow> \<exists>k. k \<noteq> 0 \<and> (k = 0 \<or> u1 * cnj v1 / (u2 * cnj v2) = v1 * cnj u1 / (v2 * cnj u2)) \<and> u1 * cnj u2 = cor k * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) \<and> \<i> * (u1 * cnj u2 * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)) / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) = cor k * (\<i> * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)) \<and> (k = 0 \<or> u1 * cnj v1 / (u2 * cnj v2) = v1 * cnj u1 / (v2 * cnj u2))
[PROOF STEP]
apply (rule_tac x="Re ?k" in exI)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>cnj u1 * u2 = u1 * cnj u2 * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2) / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2); u1 * cnj u2 * cnj v1 * v2 = v1 * cnj v2 * cnj u1 * u2; u1 \<noteq> 0; u2 \<noteq> 0; v2 \<noteq> 0; Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0; is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)); v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 \<noteq> u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2; (cor (cmod u1))\<^sup>2 = u1 * cnj u1; (cor (cmod v1))\<^sup>2 = v1 * cnj v1; (cor (cmod u2))\<^sup>2 = u2 * cnj u2; (cor (cmod v2))\<^sup>2 = v2 * cnj v2\<rbrakk> \<Longrightarrow> Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0 \<and> (is_imag (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<or> u1 * cnj v1 / (u2 * cnj v2) = v1 * cnj u1 / (v2 * cnj u2)) \<and> u1 * cnj u2 = cor (Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) \<and> \<i> * (u1 * cnj u2 * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)) / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) = cor (Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))) * (\<i> * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)) \<and> (is_imag (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<or> u1 * cnj v1 / (u2 * cnj v2) = v1 * cnj u1 / (v2 * cnj u2))
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>cnj u1 * u2 = u1 * cnj u2 * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2) / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2); u1 * cnj u2 * cnj v1 * v2 = v1 * cnj v2 * cnj u1 * u2; u1 \<noteq> 0; u2 \<noteq> 0; v2 \<noteq> 0; Re (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0; is_real (u1 * cnj u2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)); v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 \<noteq> u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2; (cor (cmod u1))\<^sup>2 = u1 * cnj u1; (cor (cmod v1))\<^sup>2 = v1 * cnj v1; (cor (cmod u2))\<^sup>2 = u2 * cnj u2; (cor (cmod v2))\<^sup>2 = v2 * cnj v2\<rbrakk> \<Longrightarrow> u1 * cnj v1 / (u2 * cnj v2) = v1 * cnj u1 / (v2 * cnj u2)
[PROOF STEP]
apply (simp add: field_simps)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))

goal (2 subgoals):
 1. u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))

goal (2 subgoals):
 1. u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
have "poincare_line_cvec_cmat (u1, u2) (v1, v2) = ?H'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))
[PROOF STEP]
using \<open>\<not> ?den \<noteq> 0\<close> \<open>u1 * cnj u2 \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u1 * cnj u2 \<noteq> 0

goal (1 subgoal):
 1. poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))
[PROOF STEP]
unfolding poincare_line_cvec_cmat_def
[PROOF STATE]
proof (prove)
using this:
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u1 * cnj u2 \<noteq> 0

goal (1 subgoal):
 1. (let (z1, z2) = (u1, u2); (w1, w2) = (v1, v2); nom = w1 * cnj w2 * (z1 * cnj z1 + z2 * cnj z2) - z1 * cnj z2 * (w1 * cnj w1 + w2 * cnj w2); den = z1 * cnj z2 * cnj w1 * w2 - w1 * cnj w2 * cnj z1 * z2 in if den \<noteq> 0 then mk_poincare_line_cmat (Re (\<i> * den)) (\<i> * nom) else if z1 * cnj z2 \<noteq> 0 then mk_poincare_line_cmat 0 (\<i> * z1 * cnj z2) else if w1 * cnj w2 \<noteq> 0 then mk_poincare_line_cmat 0 (\<i> * w1 * cnj w2) else mk_poincare_line_cmat 0 \<i>) = mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))
[PROOF STEP]
by (simp add: Let_def)
[PROOF STATE]
proof (state)
this:
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))

goal (2 subgoals):
 1. u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))

goal (2 subgoals):
 1. u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
hence "hermitean ?H' \<and> ?H' \<noteq> mat_zero"
[PROOF STATE]
proof (prove)
using this:
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))

goal (1 subgoal):
 1. hermitean (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))) \<and> mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)) \<noteq> mat_zero
[PROOF STEP]
by (metis mk_poincare_line_cmat_hermitean poincare_line_cvec_cmat_nonzero uv(1) uv(2))
[PROOF STATE]
proof (state)
this:
hermitean (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))) \<and> mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)) \<noteq> mat_zero

goal (2 subgoals):
 1. u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
hence "hermitean ?H \<and> ?H \<noteq> mat_zero"
[PROOF STATE]
proof (prove)
using this:
hermitean (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))) \<and> mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)) \<noteq> mat_zero

goal (1 subgoal):
 1. hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
[PROOF STEP]
using \<open>circline_eq_cmat ?H ?H'\<close>
[PROOF STATE]
proof (prove)
using this:
hermitean (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))) \<and> mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)) \<noteq> mat_zero
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))

goal (1 subgoal):
 1. hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
[PROOF STEP]
using circline_eq_cmat_hermitean_nonzero[of ?H' ?H] symp_circline_eq_cmat
[PROOF STATE]
proof (prove)
using this:
hermitean (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))) \<and> mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)) \<noteq> mat_zero
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
\<lbrakk>hermitean (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))) \<and> mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)) \<noteq> mat_zero; circline_eq_cmat (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))\<rbrakk> \<Longrightarrow> hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
symp circline_eq_cmat

goal (1 subgoal):
 1. hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
[PROOF STEP]
unfolding symp_def
[PROOF STATE]
proof (prove)
using this:
hermitean (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))) \<and> mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)) \<noteq> mat_zero
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
\<lbrakk>hermitean (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))) \<and> mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)) \<noteq> mat_zero; circline_eq_cmat (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))\<rbrakk> \<Longrightarrow> hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
\<forall>x y. circline_eq_cmat x y \<longrightarrow> circline_eq_cmat y x

goal (1 subgoal):
 1. hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero

goal (2 subgoals):
 1. u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
hence "mk_circline_cmat ?A ?B ?C ?D = ?H"
[PROOF STATE]
proof (prove)
using this:
hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero

goal (1 subgoal):
 1. mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) = (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) = (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal (2 subgoals):
 1. u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))
mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) = (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
have "circline_eq_cmat (mk_circline_cmat ?A ?B ?C ?D)
                             (poincare_line_cvec_cmat (u1, u2) (v1, v2))"
[PROOF STATE]
proof (prove)
using this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2)))
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (u1 * cnj u2))
mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) = (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal (1 subgoal):
 1. circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))

goal (2 subgoals):
 1. u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))

goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
using symp_circline_eq_cmat
[PROOF STATE]
proof (prove)
using this:
circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))
symp circline_eq_cmat

goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
unfolding symp_def
[PROOF STATE]
proof (prove)
using this:
circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))
\<forall>x y. circline_eq_cmat x y \<longrightarrow> circline_eq_cmat y x

goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))

goal (1 subgoal):
 1. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
case  False
[PROOF STATE]
proof (state)
this:
\<not> u1 * cnj u2 \<noteq> 0

goal (1 subgoal):
 1. \<not> u1 * cnj u2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
proof (cases "v1 * cnj v2 \<noteq> 0")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
v1 * cnj v2 \<noteq> 0

goal (2 subgoals):
 1. v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
let ?nom = "v1 * cnj v2"
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
let ?H' = "mk_poincare_line_cmat 0 (\<i> * ?nom)"
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
have "circline_eq_cmat ?H ?H'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
let ?k = "(v1 * cnj v2) / ?d"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
have "is_real ?k"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
[PROOF STEP]
have "is_real ((v1 * cnj v2) / ?d2)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
let ?rhs = "(v2 * cnj v2) / ((u1*v2)/(u2*v1) - 1)"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
have 1: "(v1 * cnj v2) / ?d2 = ?rhs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. v1 * cnj v2 / (u1 / u2 - v1 / v2) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
[PROOF STEP]
using \<open>\<not> ?den \<noteq> 0\<close> \<open>u2 \<noteq> 0\<close> \<open>v2 \<noteq> 0\<close> * \<open>v1 * cnj v2 \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
u1 * cnj v1 \<noteq> u2 * cnj v2
u1 * v2 \<noteq> u2 * v1
v1 * cnj v2 \<noteq> 0

goal (1 subgoal):
 1. v1 * cnj v2 / (u1 / u2 - v1 / v2) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
[PROOF STEP]
by (simp add: field_simps)
[PROOF STATE]
proof (state)
this:
v1 * cnj v2 / (u1 / u2 - v1 / v2) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)

goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
v1 * cnj v2 / (u1 / u2 - v1 / v2) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)

goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
have "cnj ?rhs = ?rhs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cnj (v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. cnj (v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
[PROOF STEP]
have "cnj (u1 * v2 / (u2 * v1) - 1) = u1 * v2 / (u2 * v1) - 1"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cnj (u1 * v2 / (u2 * v1) - 1) = u1 * v2 / (u2 * v1) - 1
[PROOF STEP]
using \<open>\<not> ?den \<noteq> 0\<close> \<open>u2 \<noteq> 0\<close> \<open>v2 \<noteq> 0\<close> * \<open>v1 * cnj v2 \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
u1 * cnj v1 \<noteq> u2 * cnj v2
u1 * v2 \<noteq> u2 * v1
v1 * cnj v2 \<noteq> 0

goal (1 subgoal):
 1. cnj (u1 * v2 / (u2 * v1) - 1) = u1 * v2 / (u2 * v1) - 1
[PROOF STEP]
by (simp add: field_simps)
[PROOF STATE]
proof (state)
this:
cnj (u1 * v2 / (u2 * v1) - 1) = u1 * v2 / (u2 * v1) - 1

goal (1 subgoal):
 1. cnj (v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
cnj (u1 * v2 / (u2 * v1) - 1) = u1 * v2 / (u2 * v1) - 1

goal (1 subgoal):
 1. cnj (v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
[PROOF STEP]
have "cnj (v2 * cnj v2) = v2 * cnj v2"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cnj (v2 * cnj v2) = v2 * cnj v2
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
cnj (v2 * cnj v2) = v2 * cnj v2

goal (1 subgoal):
 1. cnj (v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
cnj (u1 * v2 / (u2 * v1) - 1) = u1 * v2 / (u2 * v1) - 1
cnj (v2 * cnj v2) = v2 * cnj v2
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
cnj (u1 * v2 / (u2 * v1) - 1) = u1 * v2 / (u2 * v1) - 1
cnj (v2 * cnj v2) = v2 * cnj v2

goal (1 subgoal):
 1. cnj (v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
cnj (v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
cnj (v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)

goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
v1 * cnj v2 / (u1 / u2 - v1 / v2) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
cnj (v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
v1 * cnj v2 / (u1 / u2 - v1 / v2) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
cnj (v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)

goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
using eq_cnj_iff_real
[PROOF STATE]
proof (prove)
using this:
v1 * cnj v2 / (u1 / u2 - v1 / v2) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
cnj (v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)) = v2 * cnj v2 / (u1 * v2 / (u2 * v1) - 1)
(cnj ?z = ?z) = is_real ?z

goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (u1 / u2 - v1 / v2))
[PROOF STEP]
by fastforce
[PROOF STATE]
proof (state)
this:
is_real (v1 * cnj v2 / (u1 / u2 - v1 / v2))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
is_real (v1 * cnj v2 / (u1 / u2 - v1 / v2))

goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
is_real (v1 * cnj v2 / (u1 / u2 - v1 / v2))

goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
[PROOF STEP]
using ** \<open>is_real ?d1\<close>
[PROOF STATE]
proof (prove)
using this:
is_real (v1 * cnj v2 / (u1 / u2 - v1 / v2))
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 = (v1 / v2 * (cnj u1 / cnj u2) - 1) * (u1 / u2 - v1 / v2)
is_real (v1 / v2 * (cnj u1 / cnj u2) - 1)

goal (1 subgoal):
 1. is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
[PROOF STEP]
by (metis complex_cnj_divide divide_divide_eq_left' eq_cnj_iff_real)
[PROOF STATE]
proof (state)
this:
is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
have "?k \<noteq> 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) \<noteq> 0
[PROOF STEP]
using \<open>?d \<noteq> 0\<close> \<open>v1 * cnj v2 \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0
v1 * cnj v2 \<noteq> 0

goal (1 subgoal):
 1. v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) \<noteq> 0
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) \<noteq> 0

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
have "cnj ?k = ?k"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cnj (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
[PROOF STEP]
using \<open>is_real ?k\<close>
[PROOF STATE]
proof (prove)
using this:
is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))

goal (1 subgoal):
 1. cnj (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
[PROOF STEP]
using eq_cnj_iff_real
[PROOF STATE]
proof (prove)
using this:
is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
(cnj ?z = ?z) = is_real ?z

goal (1 subgoal):
 1. cnj (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
cnj (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
have "Re ?k \<noteq> 0"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
[PROOF STEP]
using \<open>?k \<noteq> 0\<close> \<open>is_real ?k\<close>
[PROOF STATE]
proof (prove)
using this:
v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) \<noteq> 0
is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))

goal (1 subgoal):
 1. Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
[PROOF STEP]
by (metis complex.expand zero_complex.simps(1) zero_complex.simps(2))
[PROOF STATE]
proof (state)
this:
Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
have "v1 * cnj v2 = ?k * ?d"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. v1 * cnj v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
[PROOF STEP]
using \<open>?d \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0

goal (1 subgoal):
 1. v1 * cnj v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
v1 * cnj v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
v1 * cnj v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
hence "cnj v1 * v2 = cnj ?k * cnj ?d"
[PROOF STATE]
proof (prove)
using this:
v1 * cnj v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)

goal (1 subgoal):
 1. cnj v1 * v2 = cnj (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) * cnj (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
[PROOF STEP]
by (metis complex_cnj_cnj complex_cnj_mult)
[PROOF STATE]
proof (state)
this:
cnj v1 * v2 = cnj (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) * cnj (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
hence "cnj v1 * v2 = ?k * ?cd"
[PROOF STATE]
proof (prove)
using this:
cnj v1 * v2 = cnj (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) * cnj (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)

goal (1 subgoal):
 1. cnj v1 * v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
[PROOF STEP]
using \<open>cnj ?k = ?k\<close> \<open>cnj ?d = ?cd\<close>
[PROOF STATE]
proof (prove)
using this:
cnj v1 * v2 = cnj (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) * cnj (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) = cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2

goal (1 subgoal):
 1. cnj v1 * v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
cnj v1 * v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
v1 * cnj v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj v1 * v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
v1 * cnj v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj v1 * v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
using \<open>~ ?den \<noteq> 0\<close> \<open>v1 * cnj v2 \<noteq> 0\<close> \<open>u2 \<noteq> 0\<close> \<open>v2 \<noteq> 0\<close> \<open>Re ?k \<noteq> 0\<close> \<open>is_real ?k\<close> \<open>?d \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
v1 * cnj v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj v1 * v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
v1 * cnj v2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
using complex_mult_cnj_cmod[symmetric, of u1]
[PROOF STATE]
proof (prove)
using this:
v1 * cnj v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj v1 * v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
v1 * cnj v2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0
cor ((cmod u1)\<^sup>2) = u1 * cnj u1

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
using complex_mult_cnj_cmod[symmetric, of v1]
[PROOF STATE]
proof (prove)
using this:
v1 * cnj v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj v1 * v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
v1 * cnj v2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0
cor ((cmod u1)\<^sup>2) = u1 * cnj u1
cor ((cmod v1)\<^sup>2) = v1 * cnj v1

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
using complex_mult_cnj_cmod[symmetric, of u2]
[PROOF STATE]
proof (prove)
using this:
v1 * cnj v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj v1 * v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
v1 * cnj v2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0
cor ((cmod u1)\<^sup>2) = u1 * cnj u1
cor ((cmod v1)\<^sup>2) = v1 * cnj v1
cor ((cmod u2)\<^sup>2) = u2 * cnj u2

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
using complex_mult_cnj_cmod[symmetric, of v2]
[PROOF STATE]
proof (prove)
using this:
v1 * cnj v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)
cnj v1 * v2 = v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
v1 * cnj v2 \<noteq> 0
u2 \<noteq> 0
v2 \<noteq> 0
Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0
is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))
v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2 \<noteq> 0
cor ((cmod u1)\<^sup>2) = u1 * cnj u1
cor ((cmod v1)\<^sup>2) = v1 * cnj v1
cor ((cmod u2)\<^sup>2) = u2 * cnj u2
cor ((cmod v2)\<^sup>2) = v2 * cnj v2

goal (1 subgoal):
 1. circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
[PROOF STEP]
apply (simp add: power_divide norm_mult norm_divide)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>cnj v1 * v2 = v1 * cnj v2 * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2) / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2); u1 * cnj u2 * cnj v1 * v2 = v1 * cnj v2 * cnj u1 * u2; v1 \<noteq> 0; u2 \<noteq> 0; v2 \<noteq> 0; Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0; is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)); v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 \<noteq> u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2; (cor (cmod u1))\<^sup>2 = u1 * cnj u1; (cor (cmod v1))\<^sup>2 = v1 * cnj v1; (cor (cmod u2))\<^sup>2 = u2 * cnj u2; (cor (cmod v2))\<^sup>2 = v2 * cnj v2\<rbrakk> \<Longrightarrow> \<exists>k. k \<noteq> 0 \<and> (k = 0 \<or> u1 * cnj v1 / (u2 * cnj v2) = v1 * cnj u1 / (v2 * cnj u2)) \<and> v1 * cnj v2 = cor k * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) \<and> \<i> * (v1 * cnj v2 * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)) / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) = cor k * (\<i> * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)) \<and> (k = 0 \<or> u1 * cnj v1 / (u2 * cnj v2) = v1 * cnj u1 / (v2 * cnj u2))
[PROOF STEP]
apply (rule_tac x="Re ?k" in exI)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>cnj v1 * v2 = v1 * cnj v2 * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2) / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2); u1 * cnj u2 * cnj v1 * v2 = v1 * cnj v2 * cnj u1 * u2; v1 \<noteq> 0; u2 \<noteq> 0; v2 \<noteq> 0; Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0; is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)); v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 \<noteq> u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2; (cor (cmod u1))\<^sup>2 = u1 * cnj u1; (cor (cmod v1))\<^sup>2 = v1 * cnj v1; (cor (cmod u2))\<^sup>2 = u2 * cnj u2; (cor (cmod v2))\<^sup>2 = v2 * cnj v2\<rbrakk> \<Longrightarrow> Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0 \<and> (is_imag (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<or> u1 * cnj v1 / (u2 * cnj v2) = v1 * cnj u1 / (v2 * cnj u2)) \<and> v1 * cnj v2 = cor (Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))) * (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) \<and> \<i> * (v1 * cnj v2 * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)) / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2) = cor (Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2))) * (\<i> * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2)) \<and> (is_imag (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<or> u1 * cnj v1 / (u2 * cnj v2) = v1 * cnj u1 / (v2 * cnj u2))
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>cnj v1 * v2 = v1 * cnj v2 * (cnj v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / cnj v2 - cnj u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / cnj u2) / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2); u1 * cnj u2 * cnj v1 * v2 = v1 * cnj v2 * cnj u1 * u2; v1 \<noteq> 0; u2 \<noteq> 0; v2 \<noteq> 0; Re (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)) \<noteq> 0; is_real (v1 * cnj v2 / (v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 - u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2)); v1 * (u1 * cnj u1 / (u2 * cnj u2) + 1) / v2 \<noteq> u1 * (v1 * cnj v1 / (v2 * cnj v2) + 1) / u2; (cor (cmod u1))\<^sup>2 = u1 * cnj u1; (cor (cmod v1))\<^sup>2 = v1 * cnj v1; (cor (cmod u2))\<^sup>2 = u2 * cnj u2; (cor (cmod v2))\<^sup>2 = v2 * cnj v2\<rbrakk> \<Longrightarrow> u1 * cnj v1 / (u2 * cnj v2) = v1 * cnj u1 / (v2 * cnj u2)
[PROOF STEP]
apply (simp add: field_simps)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))

goal (2 subgoals):
 1. v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))

goal (2 subgoals):
 1. v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
have "poincare_line_cvec_cmat (u1, u2) (v1, v2) = ?H'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))
[PROOF STEP]
using \<open>\<not> ?den \<noteq> 0\<close> \<open>\<not> u1 * cnj u2 \<noteq> 0\<close> \<open>v1 * cnj v2 \<noteq> 0\<close>
[PROOF STATE]
proof (prove)
using this:
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
\<not> u1 * cnj u2 \<noteq> 0
v1 * cnj v2 \<noteq> 0

goal (1 subgoal):
 1. poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))
[PROOF STEP]
unfolding poincare_line_cvec_cmat_def
[PROOF STATE]
proof (prove)
using this:
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
\<not> u1 * cnj u2 \<noteq> 0
v1 * cnj v2 \<noteq> 0

goal (1 subgoal):
 1. (let (z1, z2) = (u1, u2); (w1, w2) = (v1, v2); nom = w1 * cnj w2 * (z1 * cnj z1 + z2 * cnj z2) - z1 * cnj z2 * (w1 * cnj w1 + w2 * cnj w2); den = z1 * cnj z2 * cnj w1 * w2 - w1 * cnj w2 * cnj z1 * z2 in if den \<noteq> 0 then mk_poincare_line_cmat (Re (\<i> * den)) (\<i> * nom) else if z1 * cnj z2 \<noteq> 0 then mk_poincare_line_cmat 0 (\<i> * z1 * cnj z2) else if w1 * cnj w2 \<noteq> 0 then mk_poincare_line_cmat 0 (\<i> * w1 * cnj w2) else mk_poincare_line_cmat 0 \<i>) = mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))
[PROOF STEP]
by (simp add: Let_def)
[PROOF STATE]
proof (state)
this:
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))

goal (2 subgoals):
 1. v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))

goal (2 subgoals):
 1. v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
hence "hermitean ?H' \<and> ?H' \<noteq> mat_zero"
[PROOF STATE]
proof (prove)
using this:
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))

goal (1 subgoal):
 1. hermitean (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))) \<and> mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)) \<noteq> mat_zero
[PROOF STEP]
by (metis mk_poincare_line_cmat_hermitean poincare_line_cvec_cmat_nonzero uv(1) uv(2))
[PROOF STATE]
proof (state)
this:
hermitean (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))) \<and> mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)) \<noteq> mat_zero

goal (2 subgoals):
 1. v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
hence "hermitean ?H \<and> ?H \<noteq> mat_zero"
[PROOF STATE]
proof (prove)
using this:
hermitean (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))) \<and> mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)) \<noteq> mat_zero

goal (1 subgoal):
 1. hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
[PROOF STEP]
using \<open>circline_eq_cmat ?H ?H'\<close>
[PROOF STATE]
proof (prove)
using this:
hermitean (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))) \<and> mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)) \<noteq> mat_zero
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))

goal (1 subgoal):
 1. hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
[PROOF STEP]
using circline_eq_cmat_hermitean_nonzero[of ?H' ?H] symp_circline_eq_cmat
[PROOF STATE]
proof (prove)
using this:
hermitean (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))) \<and> mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)) \<noteq> mat_zero
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
\<lbrakk>hermitean (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))) \<and> mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)) \<noteq> mat_zero; circline_eq_cmat (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))\<rbrakk> \<Longrightarrow> hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
symp circline_eq_cmat

goal (1 subgoal):
 1. hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
[PROOF STEP]
unfolding symp_def
[PROOF STATE]
proof (prove)
using this:
hermitean (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))) \<and> mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)) \<noteq> mat_zero
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
\<lbrakk>hermitean (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))) \<and> mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)) \<noteq> mat_zero; circline_eq_cmat (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))\<rbrakk> \<Longrightarrow> hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
\<forall>x y. circline_eq_cmat x y \<longrightarrow> circline_eq_cmat y x

goal (1 subgoal):
 1. hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero

goal (2 subgoals):
 1. v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
hence "mk_circline_cmat ?A ?B ?C ?D = ?H"
[PROOF STATE]
proof (prove)
using this:
hermitean (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<and> (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) \<noteq> mat_zero

goal (1 subgoal):
 1. mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) = (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) = (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal (2 subgoals):
 1. v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))
mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) = (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))
[PROOF STEP]
have "circline_eq_cmat (mk_circline_cmat ?A ?B ?C ?D)
                               (poincare_line_cvec_cmat (u1, u2) (v1, v2))"
[PROOF STATE]
proof (prove)
using this:
circline_eq_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2)))
poincare_line_cvec_cmat (u1, u2) (v1, v2) = mk_poincare_line_cmat 0 (\<i> * (v1 * cnj v2))
mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) = (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))), \<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)), - (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))), \<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))

goal (1 subgoal):
 1. circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))

goal (2 subgoals):
 1. v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
 2. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))

goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
using symp_circline_eq_cmat
[PROOF STATE]
proof (prove)
using this:
circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))
symp circline_eq_cmat

goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
unfolding symp_def
[PROOF STATE]
proof (prove)
using this:
circline_eq_cmat (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2))))) (poincare_line_cvec_cmat (u1, u2) (v1, v2))
\<forall>x y. circline_eq_cmat x y \<longrightarrow> circline_eq_cmat y x

goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))

goal (1 subgoal):
 1. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> v1 * cnj v2 \<noteq> 0

goal (1 subgoal):
 1. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
\<not> v1 * cnj v2 \<noteq> 0

goal (1 subgoal):
 1. False
[PROOF STEP]
using \<open>\<not> ?den \<noteq> 0\<close> \<open>\<not> u1 * cnj u2 \<noteq> 0\<close> uv
[PROOF STATE]
proof (prove)
using this:
\<not> v1 * cnj v2 \<noteq> 0
\<not> u1 * cnj u2 * cnj v1 * v2 - v1 * cnj v2 * cnj u1 * u2 \<noteq> 0
\<not> u1 * cnj u2 \<noteq> 0
(u1, u2) \<noteq> vec_zero
(v1, v2) \<noteq> vec_zero
\<not> (u1, u2) \<approx>\<^sub>v \<infinity>\<^sub>v
\<not> (v1, v2) \<approx>\<^sub>v \<infinity>\<^sub>v
\<not> (u1, u2) \<approx>\<^sub>v (v1, v2)
\<not> (u1, u2) \<approx>\<^sub>v conjugate_cvec (reciprocal_cvec (v1, v2))

goal (1 subgoal):
 1. False
[PROOF STEP]
by (simp add: \<open>u2 \<noteq> 0\<close> \<open>v2 \<noteq> 0\<close>)
[PROOF STATE]
proof (state)
this:
False

goal (1 subgoal):
 1. \<not> v1 * cnj v2 \<noteq> 0 \<Longrightarrow> circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
circline_eq_cmat (poincare_line_cvec_cmat (u1, u2) (v1, v2)) (mk_circline_cmat (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))) (\<i> * (to_complex_cvec (v1, v2) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - to_complex_cvec (u1, u2) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1))) (- (\<i> * (cnj (to_complex_cvec (v1, v2)) * ((cor (cmod (to_complex_cvec (u1, u2))))\<^sup>2 + 1) - cnj (to_complex_cvec (u1, u2)) * ((cor (cmod (to_complex_cvec (v1, v2))))\<^sup>2 + 1)))) (\<i> * (to_complex_cvec (u1, u2) * cnj (to_complex_cvec (v1, v2)) - to_complex_cvec (v1, v2) * cnj (to_complex_cvec (u1, u2)))))

goal:
No subgoals!
[PROOF STEP]
qed