[STATEMENT]
lemma tabulation_of_right_adjoint:
    shows "tabulation V H \<a> \<i> src trg g \<eta> f (src f)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. tabulation (\<cdot>) (\<star>) \<a> \<i> src trg g \<eta> f (src f)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. tabulation (\<cdot>) (\<star>) \<a> \<i> src trg g \<eta> f (src f)
[PROOF STEP]
interpret T: tabulation_data V H \<a> \<i> src trg g \<eta> f \<open>src f\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. tabulation_data (\<cdot>) (\<star>) \<a> \<i> src trg g \<eta> f (src f)
[PROOF STEP]
using unit_in_hom antipar
[PROOF STATE]
proof (prove)
using this:
\<guillemotleft>\<eta> : src f \<rightarrow> src f\<guillemotright>
\<guillemotleft>\<eta> : src f \<Rightarrow> g \<star> f\<guillemotright>
trg g = src f
src g = trg f

goal (1 subgoal):
 1. tabulation_data (\<cdot>) (\<star>) \<a> \<i> src trg g \<eta> f (src f)
[PROOF STEP]
by (unfold_locales, simp_all)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. tabulation (\<cdot>) (\<star>) \<a> \<i> src trg g \<eta> f (src f)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. tabulation (\<cdot>) (\<star>) \<a> \<i> src trg g \<eta> f (src f)
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
 2. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
show T1: "\<And>u \<omega>. \<lbrakk> ide u; \<guillemotleft>\<omega> : dom \<omega> \<Rightarrow> g \<star> u\<guillemotright> \<rbrakk> \<Longrightarrow>
                         \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> iso \<nu> \<and>
                                 T.composite_cell w \<theta> \<cdot> \<nu> = \<omega>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
fix u v \<omega>
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
assume u: "ide u"
[PROOF STATE]
proof (state)
this:
ide u

goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
assume \<omega>: "\<guillemotleft>\<omega> : v \<Rightarrow> g \<star> u\<guillemotright>"
[PROOF STATE]
proof (state)
this:
\<guillemotleft>\<omega> : v \<Rightarrow> g \<star> u\<guillemotright>

goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
have v: "ide v"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ide v
[PROOF STEP]
using \<omega>
[PROOF STATE]
proof (prove)
using this:
\<guillemotleft>\<omega> : v \<Rightarrow> g \<star> u\<guillemotright>

goal (1 subgoal):
 1. ide v
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
ide v

goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
have 1: "src g = trg u"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. src g = trg u
[PROOF STEP]
using \<omega>
[PROOF STATE]
proof (prove)
using this:
\<guillemotleft>\<omega> : v \<Rightarrow> g \<star> u\<guillemotright>

goal (1 subgoal):
 1. src g = trg u
[PROOF STEP]
by (metis arr_cod in_homE not_arr_null seq_if_composable)
[PROOF STATE]
proof (state)
this:
src g = trg u

goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
have 2: "src f = trg v"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. src f = trg v
[PROOF STEP]
using \<omega> 1 u ide_right antipar(1) vconn_implies_hpar(4)
[PROOF STATE]
proof (prove)
using this:
\<guillemotleft>\<omega> : v \<Rightarrow> g \<star> u\<guillemotright>
src g = trg u
ide u
ide g
trg g = src f
\<guillemotleft>?\<mu> : ?f \<Rightarrow> ?g\<guillemotright> \<Longrightarrow> trg ?g = trg ?f

goal (1 subgoal):
 1. src f = trg v
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
src f = trg v

goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
text \<open>It seems clear that we need to take \<open>w = v\<close> and \<open>\<nu> = \<l>\<^sup>-\<^sup>1[v]\<close>. \<close>
[PROOF STATE]
proof (state)
this:
src f = trg v

goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
let ?w = v
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
let ?\<nu> = "\<l>\<^sup>-\<^sup>1[v]"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
have \<nu>: "\<guillemotleft>?\<nu> : v \<Rightarrow> src f \<star> ?w\<guillemotright> \<and> iso ?\<nu>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<guillemotleft>\<l>\<^sup>-\<^sup>1[v] : v \<Rightarrow> src f \<star> v\<guillemotright> \<and> local.iso \<l>\<^sup>-\<^sup>1[v]
[PROOF STEP]
using v 2 iso_lunit'
[PROOF STATE]
proof (prove)
using this:
ide v
src f = trg v
ide ?f \<Longrightarrow> local.iso \<l>\<^sup>-\<^sup>1[?f]

goal (1 subgoal):
 1. \<guillemotleft>\<l>\<^sup>-\<^sup>1[v] : v \<Rightarrow> src f \<star> v\<guillemotright> \<and> local.iso \<l>\<^sup>-\<^sup>1[v]
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<guillemotleft>\<l>\<^sup>-\<^sup>1[v] : v \<Rightarrow> src f \<star> v\<guillemotright> \<and> local.iso \<l>\<^sup>-\<^sup>1[v]

goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
text \<open>
            We need \<open>\<theta>\<close>, defined to satisfy \<open>\<guillemotleft>\<theta> : f \<star> v \<Rightarrow> u\<guillemotright>\<close> and
            \<open>\<omega> = (v \<star> \<theta>) \<cdot> \<a>[v, f, v] \<cdot> (\<eta> \<star> w) \<cdot> \<l>\<^sup>-\<^sup>1[v]\<close>.
            We have \<open>\<guillemotleft>\<omega> : v \<Rightarrow> g \<star> u\<guillemotright>\<close>, so we can get arrow \<open>\<guillemotleft>\<theta> : f \<star> v \<Rightarrow> u\<guillemotright>\<close> by adjoint transpose.
            Note that this uses adjoint transpose on the \emph{left}, rather than on the right.
          \<close>
[PROOF STATE]
proof (state)
this:
\<guillemotleft>\<l>\<^sup>-\<^sup>1[v] : v \<Rightarrow> src f \<star> v\<guillemotright> \<and> local.iso \<l>\<^sup>-\<^sup>1[v]

goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
let ?\<theta> = "trnl\<^sub>\<epsilon> u \<omega>"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
have \<theta>: "\<guillemotleft>?\<theta> : f \<star> ?w \<Rightarrow> u\<guillemotright>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<guillemotleft>trnl\<^sub>\<epsilon> u \<omega> : f \<star> v \<Rightarrow> u\<guillemotright>
[PROOF STEP]
using u v antipar 1 2 \<omega> adjoint_transpose_left(2) [of u v]
[PROOF STATE]
proof (prove)
using this:
ide u
ide v
trg g = src f
src g = trg f
src g = trg u
src f = trg v
\<guillemotleft>\<omega> : v \<Rightarrow> g \<star> u\<guillemotright>
\<lbrakk>ide u; ide v; src f = trg v; src g = trg u\<rbrakk> \<Longrightarrow> trnl\<^sub>\<epsilon> u \<in> hom v (g \<star> u) \<rightarrow> hom (f \<star> v) u

goal (1 subgoal):
 1. \<guillemotleft>trnl\<^sub>\<epsilon> u \<omega> : f \<star> v \<Rightarrow> u\<guillemotright>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<guillemotleft>trnl\<^sub>\<epsilon> u \<omega> : f \<star> v \<Rightarrow> u\<guillemotright>

goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
text \<open>
            Now, \<open>trnl\<^sub>\<eta> v \<theta> \<equiv> (g \<star> \<theta>) \<cdot> \<a>[g, f, v] \<cdot> (\<eta> \<star> v) \<cdot> \<l>\<^sup>-\<^sup>1[v]\<close>, which suggests that
            we ought to have \<open>\<omega> = trnl\<^sub>\<eta> v \<theta>\<close> and \<open>\<nu> = \<l>\<^sup>-\<^sup>1[v]\<close>;
          \<close>
[PROOF STATE]
proof (state)
this:
\<guillemotleft>trnl\<^sub>\<epsilon> u \<omega> : f \<star> v \<Rightarrow> u\<guillemotright>

goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
have "T.composite_cell ?w ?\<theta> \<cdot> ?\<nu> = \<omega>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((g \<star> trnl\<^sub>\<epsilon> u \<omega>) \<cdot> \<a>[g, f, v] \<cdot> (\<eta> \<star> v)) \<cdot> \<l>\<^sup>-\<^sup>1[v] = \<omega>
[PROOF STEP]
using u v \<omega> 1 2 adjoint_transpose_left(4) [of u v \<omega>] trnl\<^sub>\<eta>_def comp_assoc
[PROOF STATE]
proof (prove)
using this:
ide u
ide v
\<guillemotleft>\<omega> : v \<Rightarrow> g \<star> u\<guillemotright>
src g = trg u
src f = trg v
\<lbrakk>ide u; ide v; src f = trg v; src g = trg u; \<guillemotleft>\<omega> : v \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> trnl\<^sub>\<eta> v (trnl\<^sub>\<epsilon> u \<omega>) = \<omega>
trnl\<^sub>\<eta> ?v ?\<mu> \<equiv> (g \<star> ?\<mu>) \<cdot> \<a>[g, f, ?v] \<cdot> (\<eta> \<star> ?v) \<cdot> \<l>\<^sup>-\<^sup>1[?v]
(?h \<cdot> ?g) \<cdot> ?f = ?h \<cdot> ?g \<cdot> ?f

goal (1 subgoal):
 1. ((g \<star> trnl\<^sub>\<epsilon> u \<omega>) \<cdot> \<a>[g, f, v] \<cdot> (\<eta> \<star> v)) \<cdot> \<l>\<^sup>-\<^sup>1[v] = \<omega>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
((g \<star> trnl\<^sub>\<epsilon> u \<omega>) \<cdot> \<a>[g, f, v] \<cdot> (\<eta> \<star> v)) \<cdot> \<l>\<^sup>-\<^sup>1[v] = \<omega>

goal (1 subgoal):
 1. \<And>u \<omega>. \<lbrakk>ide u; \<guillemotleft>\<omega> : local.dom \<omega> \<Rightarrow> g \<star> u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom \<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
thus "\<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : v \<Rightarrow> src f \<star> w\<guillemotright> \<and> iso \<nu> \<and>
                        T.composite_cell w \<theta> \<cdot> \<nu> = \<omega>"
[PROOF STATE]
proof (prove)
using this:
((g \<star> trnl\<^sub>\<epsilon> u \<omega>) \<cdot> \<a>[g, f, v] \<cdot> (\<eta> \<star> v)) \<cdot> \<l>\<^sup>-\<^sup>1[v] = \<omega>

goal (1 subgoal):
 1. \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : v \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
using v \<theta> \<nu> antipar comp_assoc
[PROOF STATE]
proof (prove)
using this:
((g \<star> trnl\<^sub>\<epsilon> u \<omega>) \<cdot> \<a>[g, f, v] \<cdot> (\<eta> \<star> v)) \<cdot> \<l>\<^sup>-\<^sup>1[v] = \<omega>
ide v
\<guillemotleft>trnl\<^sub>\<epsilon> u \<omega> : f \<star> v \<Rightarrow> u\<guillemotright>
\<guillemotleft>\<l>\<^sup>-\<^sup>1[v] : v \<Rightarrow> src f \<star> v\<guillemotright> \<and> local.iso \<l>\<^sup>-\<^sup>1[v]
trg g = src f
src g = trg f
(?h \<cdot> ?g) \<cdot> ?f = ?h \<cdot> ?g \<cdot> ?f

goal (1 subgoal):
 1. \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : v \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright> \<and> \<guillemotleft>\<nu> : v \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = \<omega>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<lbrakk>ide ?u; \<guillemotleft>?\<omega> : local.dom ?\<omega> \<Rightarrow> g \<star> ?u\<guillemotright>\<rbrakk> \<Longrightarrow> \<exists>w \<theta> \<nu>. ide w \<and> \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> ?u\<guillemotright> \<and> \<guillemotleft>\<nu> : local.dom ?\<omega> \<Rightarrow> src f \<star> w\<guillemotright> \<and> local.iso \<nu> \<and> ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<nu> = ?\<omega>

goal (1 subgoal):
 1. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
show T2: "\<And>u w w' \<theta> \<theta>' \<beta>.
                    \<lbrakk> ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>;
                      \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>;
                     T.composite_cell w \<theta> = T.composite_cell w' \<theta>' \<cdot> \<beta> \<rbrakk> \<Longrightarrow>
                    \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
fix u w w' \<theta> \<theta>' \<beta>
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
assume w: "ide w"
[PROOF STATE]
proof (state)
this:
ide w

goal (1 subgoal):
 1. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
assume w': "ide w'"
[PROOF STATE]
proof (state)
this:
ide w'

goal (1 subgoal):
 1. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
assume \<theta>: "\<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>"
[PROOF STATE]
proof (state)
this:
\<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>

goal (1 subgoal):
 1. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
assume \<theta>': "\<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>"
[PROOF STATE]
proof (state)
this:
\<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>

goal (1 subgoal):
 1. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
assume \<beta>: "\<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>"
[PROOF STATE]
proof (state)
this:
\<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>

goal (1 subgoal):
 1. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
assume E: "T.composite_cell w \<theta> = T.composite_cell w' \<theta>' \<cdot> \<beta>"
[PROOF STATE]
proof (state)
this:
(g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>

goal (1 subgoal):
 1. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
interpret T: uw\<theta>w'\<theta>'\<beta> V H \<a> \<i> src trg g \<eta> f \<open>src f\<close> u w \<theta> w' \<theta>' \<beta>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. uw\<theta>w'\<theta>'\<beta> (\<cdot>) (\<star>) \<a> \<i> src trg g \<eta> f (src f) u w \<theta> w' \<theta>' \<beta>
[PROOF STEP]
using w w' \<theta> \<theta>' \<beta> E comp_assoc
[PROOF STATE]
proof (prove)
using this:
ide w
ide w'
\<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>
\<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>
\<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>
(g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>
(?h \<cdot> ?g) \<cdot> ?f = ?h \<cdot> ?g \<cdot> ?f

goal (1 subgoal):
 1. uw\<theta>w'\<theta>'\<beta> (\<cdot>) (\<star>) \<a> \<i> src trg g \<eta> f (src f) u w \<theta> w' \<theta>' \<beta>
[PROOF STEP]
by (unfold_locales, auto)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
have 2: "src f = trg \<beta>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. src f = trg \<beta>
[PROOF STEP]
using antipar
[PROOF STATE]
proof (prove)
using this:
trg g = src f
src g = trg f

goal (1 subgoal):
 1. src f = trg \<beta>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
src f = trg \<beta>

goal (1 subgoal):
 1. \<And>u w w' \<theta> \<theta>' \<beta>. \<lbrakk>ide w; ide w'; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>; \<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>; (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
show "\<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
text \<open>
              The requirement \<open>\<beta> = src f \<star> \<gamma>\<close> means we have to essentially invert \<open>\<lambda>\<gamma>. src f \<star> \<gamma>\<close>
              to obtain \<open>\<gamma>\<close>.  CKS say only: ``the strong form of \<open>T2\<close> is clear since \<open>g = 1\<close>"
              (here by ``\<open>g\<close>'' they are referring to \<open>dom \<eta>\<close>, the ``output leg'' of the span in
              the tabulation).  This would mean that we would have to take \<open>\<gamma> = \<beta>\<close>, which doesn't
              work for a general bicategory (we don't necessarily have \<open>src f \<star> \<gamma> = \<gamma>\<close>).
              For a general bicategory, we have to take \<open>\<gamma> = \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]\<close>.
            \<close>
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
let ?\<gamma> = "\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
have \<gamma>: "\<guillemotleft>?\<gamma> : w \<Rightarrow> w'\<guillemotright>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<guillemotleft>\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w] : w \<Rightarrow> w'\<guillemotright>
[PROOF STEP]
using \<beta>
[PROOF STATE]
proof (prove)
using this:
\<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>

goal (1 subgoal):
 1. \<guillemotleft>\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w] : w \<Rightarrow> w'\<guillemotright>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<guillemotleft>\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w] : w \<Rightarrow> w'\<guillemotright>

goal (1 subgoal):
 1. \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
have 3: "\<beta> = src f \<star> ?\<gamma>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
have "\<beta> = \<l>\<^sup>-\<^sup>1[w'] \<cdot> ?\<gamma> \<cdot> \<l>[w]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<beta> = \<l>\<^sup>-\<^sup>1[w'] \<cdot> (\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w]
[PROOF STEP]
using \<beta> iso_lunit
[PROOF STATE]
proof (prove)
using this:
\<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>
ide ?f \<Longrightarrow> local.iso \<l>[?f]

goal (1 subgoal):
 1. \<beta> = \<l>\<^sup>-\<^sup>1[w'] \<cdot> (\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w]
[PROOF STEP]
by (simp add: comp_arr_dom invert_side_of_triangle(1) comp_assoc)
[PROOF STATE]
proof (state)
this:
\<beta> = \<l>\<^sup>-\<^sup>1[w'] \<cdot> (\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w]

goal (1 subgoal):
 1. \<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
\<beta> = \<l>\<^sup>-\<^sup>1[w'] \<cdot> (\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w]

goal (1 subgoal):
 1. \<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
have "... = \<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w'] \<cdot> (src f \<star> ?\<gamma>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<l>\<^sup>-\<^sup>1[w'] \<cdot> (\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w] = \<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w'] \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
using \<gamma> lunit_naturality
[PROOF STATE]
proof (prove)
using this:
\<guillemotleft>\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w] : w \<Rightarrow> w'\<guillemotright>
arr ?\<mu> \<Longrightarrow> ?\<mu> \<cdot> \<l>[local.dom ?\<mu>] = \<l>[cod ?\<mu>] \<cdot> (trg ?\<mu> \<star> ?\<mu>)

goal (1 subgoal):
 1. \<l>\<^sup>-\<^sup>1[w'] \<cdot> (\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w] = \<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w'] \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
by (metis T.uw\<theta>.w_simps(4) in_homE trg_dom)
[PROOF STATE]
proof (state)
this:
\<l>\<^sup>-\<^sup>1[w'] \<cdot> (\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w] = \<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w'] \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
\<l>\<^sup>-\<^sup>1[w'] \<cdot> (\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w] = \<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w'] \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
have "... = (\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> (src f \<star> ?\<gamma>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w'] \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = (\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
using comp_assoc
[PROOF STATE]
proof (prove)
using this:
(?h \<cdot> ?g) \<cdot> ?f = ?h \<cdot> ?g \<cdot> ?f

goal (1 subgoal):
 1. \<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w'] \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = (\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w'] \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = (\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w'] \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = (\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
have "... = src f \<star> ?\<gamma>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
using \<gamma> iso_lunit comp_inv_arr comp_cod_arr
[PROOF STATE]
proof (prove)
using this:
\<guillemotleft>\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w] : w \<Rightarrow> w'\<guillemotright>
ide ?f \<Longrightarrow> local.iso \<l>[?f]
inverse_arrows ?f ?g \<Longrightarrow> ?g \<cdot> ?f = local.dom ?f
\<lbrakk>arr ?f; cod ?f = ?b\<rbrakk> \<Longrightarrow> ?b \<cdot> ?f = ?f

goal (1 subgoal):
 1. (\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
by (metis T.\<beta>_simps(1) calculation comp_ide_arr inv_is_inverse inverse_arrowsE w')
[PROOF STATE]
proof (state)
this:
(\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> (src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]

goal (1 subgoal):
 1. \<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
\<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]

goal (1 subgoal):
 1. \<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]

goal (1 subgoal):
 1. \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
have "\<theta> = \<theta>' \<cdot> (f \<star> ?\<gamma>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
have "\<theta> = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<theta> = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>)
[PROOF STEP]
using \<theta> adjoint_transpose_left(3) [of u w \<theta>]
[PROOF STATE]
proof (prove)
using this:
\<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>
\<lbrakk>ide u; ide w; src f = trg w; src g = trg u; \<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>\<rbrakk> \<Longrightarrow> trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>) = \<theta>

goal (1 subgoal):
 1. \<theta> = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<theta> = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>)

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
\<theta> = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>)

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
have "... = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>) = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>) = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
have "trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
have "trnl\<^sub>\<eta> w \<theta> \<cdot> \<l>[w] = (T.composite_cell w \<theta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w]"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> \<cdot> \<l>[w] = (((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w]
[PROOF STEP]
unfolding trnl\<^sub>\<eta>_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w] = (((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w]
[PROOF STEP]
using comp_assoc
[PROOF STATE]
proof (prove)
using this:
(?h \<cdot> ?g) \<cdot> ?f = ?h \<cdot> ?g \<cdot> ?f

goal (1 subgoal):
 1. ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w] = (((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w]
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
trnl\<^sub>\<eta> w \<theta> \<cdot> \<l>[w] = (((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w]

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
trnl\<^sub>\<eta> w \<theta> \<cdot> \<l>[w] = (((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w]

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
have "... = T.composite_cell w \<theta> \<cdot> (\<l>\<^sup>-\<^sup>1[w] \<cdot> \<l>[w])"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w] = ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w] \<cdot> \<l>[w]
[PROOF STEP]
using comp_assoc
[PROOF STATE]
proof (prove)
using this:
(?h \<cdot> ?g) \<cdot> ?f = ?h \<cdot> ?g \<cdot> ?f

goal (1 subgoal):
 1. (((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w] = ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w] \<cdot> \<l>[w]
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
(((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w] = ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w] \<cdot> \<l>[w]

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
(((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w]) \<cdot> \<l>[w] = ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w] \<cdot> \<l>[w]

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
have 4: "... = T.composite_cell w \<theta>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w] \<cdot> \<l>[w] = (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)
[PROOF STEP]
using comp_arr_dom
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>arr ?f; local.dom ?f = ?a\<rbrakk> \<Longrightarrow> ?f \<cdot> ?a = ?f

goal (1 subgoal):
 1. ((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w] \<cdot> \<l>[w] = (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)
[PROOF STEP]
by (simp add: comp_inv_arr')
[PROOF STATE]
proof (state)
this:
((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w] \<cdot> \<l>[w] = (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w] \<cdot> \<l>[w] = (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
have "... = T.composite_cell w' \<theta>' \<cdot> \<beta>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>
[PROOF STEP]
using E
[PROOF STATE]
proof (prove)
using this:
(g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>

goal (1 subgoal):
 1. (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
(g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
(g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w) = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta>

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
have "... = (T.composite_cell w' \<theta>' \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta> = (((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta>
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta> = (((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta>
[PROOF STEP]
have "(\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> \<beta> = \<beta>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> \<beta> = \<beta>
[PROOF STEP]
using iso_lunit \<beta> comp_cod_arr comp_assoc comp_inv_arr'
[PROOF STATE]
proof (prove)
using this:
ide ?f \<Longrightarrow> local.iso \<l>[?f]
\<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>
\<lbrakk>arr ?f; cod ?f = ?b\<rbrakk> \<Longrightarrow> ?b \<cdot> ?f = ?f
(?h \<cdot> ?g) \<cdot> ?f = ?h \<cdot> ?g \<cdot> ?f
local.iso ?f \<Longrightarrow> local.inv ?f \<cdot> ?f = local.dom ?f

goal (1 subgoal):
 1. (\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> \<beta> = \<beta>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
(\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> \<beta> = \<beta>

goal (1 subgoal):
 1. ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta> = (((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta>
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
(\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> \<beta> = \<beta>

goal (1 subgoal):
 1. ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta> = (((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta>
[PROOF STEP]
using comp_assoc
[PROOF STATE]
proof (prove)
using this:
(\<l>\<^sup>-\<^sup>1[w'] \<cdot> \<l>[w']) \<cdot> \<beta> = \<beta>
(?h \<cdot> ?g) \<cdot> ?f = ?h \<cdot> ?g \<cdot> ?f

goal (1 subgoal):
 1. ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta> = (((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta> = (((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta> = (((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta>

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<beta> = (((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta>

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
have "... = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta>
[PROOF STEP]
unfolding trnl\<^sub>\<eta>_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta> = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w') \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta>
[PROOF STEP]
using comp_assoc
[PROOF STATE]
proof (prove)
using this:
(?h \<cdot> ?g) \<cdot> ?f = ?h \<cdot> ?g \<cdot> ?f

goal (1 subgoal):
 1. (((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta> = ((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w') \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
(((g \<star> \<theta>') \<cdot> \<a>[g, f, w'] \<cdot> (\<eta> \<star> w')) \<cdot> \<l>\<^sup>-\<^sup>1[w']) \<cdot> \<l>[w'] \<cdot> \<beta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta>

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
trnl\<^sub>\<eta> w \<theta> \<cdot> \<l>[w] = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta>
[PROOF STEP]
have "trnl\<^sub>\<eta> w \<theta> \<cdot> \<l>[w] = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta>"
[PROOF STATE]
proof (prove)
using this:
trnl\<^sub>\<eta> w \<theta> \<cdot> \<l>[w] = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta>

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> \<cdot> \<l>[w] = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta>
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
trnl\<^sub>\<eta> w \<theta> \<cdot> \<l>[w] = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta>

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
trnl\<^sub>\<eta> w \<theta> \<cdot> \<l>[w] = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta>

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
using \<beta> 4 invert_side_of_triangle(2) adjoint_transpose_left iso_lunit
                          trnl\<^sub>\<eta>_def comp_assoc
[PROOF STATE]
proof (prove)
using this:
trnl\<^sub>\<eta> w \<theta> \<cdot> \<l>[w] = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta>
\<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>
((g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)) \<cdot> \<l>\<^sup>-\<^sup>1[w] \<cdot> \<l>[w] = (g \<star> \<theta>) \<cdot> \<a>[g, f, w] \<cdot> (\<eta> \<star> w)
\<lbrakk>arr ?h; ?f \<cdot> ?g = ?h; local.iso ?g\<rbrakk> \<Longrightarrow> seq ?h (local.inv ?g) \<and> ?f = ?h \<cdot> local.inv ?g
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u\<rbrakk> \<Longrightarrow> trnl\<^sub>\<eta> ?v \<in> hom (f \<star> ?v) ?u \<rightarrow> hom ?v (g \<star> ?u)
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u\<rbrakk> \<Longrightarrow> trnl\<^sub>\<epsilon> ?u \<in> hom ?v (g \<star> ?u) \<rightarrow> hom (f \<star> ?v) ?u
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u; \<guillemotleft>?\<mu> : f \<star> ?v \<Rightarrow> ?u\<guillemotright>\<rbrakk> \<Longrightarrow> trnl\<^sub>\<epsilon> ?u (trnl\<^sub>\<eta> ?v ?\<mu>) = ?\<mu>
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u; \<guillemotleft>?\<nu> : ?v \<Rightarrow> g \<star> ?u\<guillemotright>\<rbrakk> \<Longrightarrow> trnl\<^sub>\<eta> ?v (trnl\<^sub>\<epsilon> ?u ?\<nu>) = ?\<nu>
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u\<rbrakk> \<Longrightarrow> bij_betw (trnl\<^sub>\<eta> ?v) (hom (f \<star> ?v) ?u) (hom ?v (g \<star> ?u))
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u\<rbrakk> \<Longrightarrow> bij_betw (trnl\<^sub>\<epsilon> ?u) (hom ?v (g \<star> ?u)) (hom (f \<star> ?v) ?u)
ide ?f \<Longrightarrow> local.iso \<l>[?f]
trnl\<^sub>\<eta> ?v ?\<mu> \<equiv> (g \<star> ?\<mu>) \<cdot> \<a>[g, f, ?v] \<cdot> (\<eta> \<star> ?v) \<cdot> \<l>\<^sup>-\<^sup>1[?v]
(?h \<cdot> ?g) \<cdot> ?f = ?h \<cdot> ?g \<cdot> ?f

goal (1 subgoal):
 1. trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
[PROOF STEP]
by metis
[PROOF STATE]
proof (state)
this:
trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]

goal (1 subgoal):
 1. trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>) = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
trnl\<^sub>\<eta> w \<theta> = trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]

goal (1 subgoal):
 1. trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>) = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>) = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>) = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w \<theta>) = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
have "... = \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
using trnl\<^sub>\<epsilon>_def
[PROOF STATE]
proof (prove)
using this:
trnl\<^sub>\<epsilon> ?u ?\<nu> \<equiv> \<l>[?u] \<cdot> (\<epsilon> \<star> ?u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, ?u] \<cdot> (f \<star> ?\<nu>)

goal (1 subgoal):
 1. trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
have
                "... = \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
using ide_left ide_right w w' 2 \<beta> \<theta> antipar trnl\<^sub>\<epsilon>_def adjoint_transpose_left
                      whisker_left
[PROOF STATE]
proof (prove)
using this:
ide f
ide g
ide w
ide w'
src f = trg \<beta>
\<guillemotleft>\<beta> : src f \<star> w \<Rightarrow> src f \<star> w'\<guillemotright>
\<guillemotleft>\<theta> : f \<star> w \<Rightarrow> u\<guillemotright>
trg g = src f
src g = trg f
trnl\<^sub>\<epsilon> ?u ?\<nu> \<equiv> \<l>[?u] \<cdot> (\<epsilon> \<star> ?u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, ?u] \<cdot> (f \<star> ?\<nu>)
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u\<rbrakk> \<Longrightarrow> trnl\<^sub>\<eta> ?v \<in> hom (f \<star> ?v) ?u \<rightarrow> hom ?v (g \<star> ?u)
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u\<rbrakk> \<Longrightarrow> trnl\<^sub>\<epsilon> ?u \<in> hom ?v (g \<star> ?u) \<rightarrow> hom (f \<star> ?v) ?u
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u; \<guillemotleft>?\<mu> : f \<star> ?v \<Rightarrow> ?u\<guillemotright>\<rbrakk> \<Longrightarrow> trnl\<^sub>\<epsilon> ?u (trnl\<^sub>\<eta> ?v ?\<mu>) = ?\<mu>
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u; \<guillemotleft>?\<nu> : ?v \<Rightarrow> g \<star> ?u\<guillemotright>\<rbrakk> \<Longrightarrow> trnl\<^sub>\<eta> ?v (trnl\<^sub>\<epsilon> ?u ?\<nu>) = ?\<nu>
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u\<rbrakk> \<Longrightarrow> bij_betw (trnl\<^sub>\<eta> ?v) (hom (f \<star> ?v) ?u) (hom ?v (g \<star> ?u))
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u\<rbrakk> \<Longrightarrow> bij_betw (trnl\<^sub>\<epsilon> ?u) (hom ?v (g \<star> ?u)) (hom (f \<star> ?v) ?u)
\<lbrakk>ide ?f; seq ?\<nu> ?\<mu>\<rbrakk> \<Longrightarrow> ?f \<star> ?\<nu> \<cdot> ?\<mu> = (?f \<star> ?\<nu>) \<cdot> (?f \<star> ?\<mu>)

goal (1 subgoal):
 1. \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
by (metis T.uw\<theta>.\<theta>_simps(1) calculation hseqE seqE)
[PROOF STATE]
proof (state)
this:
\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>' \<cdot> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
have
                "... = (\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>')) \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = (\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>')) \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
using comp_assoc
[PROOF STATE]
proof (prove)
using this:
(?h \<cdot> ?g) \<cdot> ?f = ?h \<cdot> ?g \<cdot> ?f

goal (1 subgoal):
 1. \<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = (\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>')) \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = (\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>')) \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = (\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>')) \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
have "... = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>')) \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
unfolding trnl\<^sub>\<epsilon>_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>')) \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = (\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>')) \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
(\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>')) \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
also
[PROOF STATE]
proof (state)
this:
(\<l>[u] \<cdot> (\<epsilon> \<star> u) \<cdot> \<a>\<^sup>-\<^sup>1[f, g, u] \<cdot> (f \<star> trnl\<^sub>\<eta> w' \<theta>')) \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
have "... = \<theta>' \<cdot> (f \<star> ?\<gamma>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
using \<theta>' adjoint_transpose_left(3)
[PROOF STATE]
proof (prove)
using this:
\<guillemotleft>\<theta>' : f \<star> w' \<Rightarrow> u\<guillemotright>
\<lbrakk>ide ?u; ide ?v; src f = trg ?v; src g = trg ?u; \<guillemotleft>?\<mu> : f \<star> ?v \<Rightarrow> ?u\<guillemotright>\<rbrakk> \<Longrightarrow> trnl\<^sub>\<epsilon> ?u (trnl\<^sub>\<eta> ?v ?\<mu>) = ?\<mu>

goal (1 subgoal):
 1. trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
trnl\<^sub>\<epsilon> u (trnl\<^sub>\<eta> w' \<theta>') \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]) = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
finally
[PROOF STATE]
proof (chain)
picking this:
\<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
hence "\<exists>\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)"
[PROOF STATE]
proof (prove)
using this:
\<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])

goal (1 subgoal):
 1. \<exists>\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
using \<gamma> 3 hcomp_obj_arr
[PROOF STATE]
proof (prove)
using this:
\<theta> = \<theta>' \<cdot> (f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w])
\<guillemotleft>\<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w] : w \<Rightarrow> w'\<guillemotright>
\<beta> = src f \<star> \<l>[w'] \<cdot> \<beta> \<cdot> \<l>\<^sup>-\<^sup>1[w]
\<lbrakk>arr ?\<mu>; obj ?b; ?b = trg ?\<mu>\<rbrakk> \<Longrightarrow> ?b \<star> ?\<mu> = \<l>\<^sup>-\<^sup>1[cod ?\<mu>] \<cdot> ?\<mu> \<cdot> \<l>[local.dom ?\<mu>]
\<lbrakk>arr ?\<mu>; obj ?b; ?b = trg ?\<mu>\<rbrakk> \<Longrightarrow> \<l>[cod ?\<mu>] \<cdot> (?b \<star> ?\<mu>) \<cdot> \<l>\<^sup>-\<^sup>1[local.dom ?\<mu>] = ?\<mu>

goal (1 subgoal):
 1. \<exists>\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<exists>\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)

goal (1 subgoal):
 1. \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<exists>\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)

goal (1 subgoal):
 1. \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
have "\<And>\<gamma> \<gamma>'. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>) \<and>
                                   \<guillemotleft>\<gamma>' : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma>' \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>') \<Longrightarrow> \<gamma> = \<gamma>'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>\<gamma> \<gamma>'. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>) \<and> \<guillemotleft>\<gamma>' : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma>' \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>') \<Longrightarrow> \<gamma> = \<gamma>'
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>\<gamma> \<gamma>'. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>) \<and> \<guillemotleft>\<gamma>' : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma>' \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>') \<Longrightarrow> \<gamma> = \<gamma>'
[PROOF STEP]
fix \<gamma> \<gamma>'
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>\<gamma> \<gamma>'. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>) \<and> \<guillemotleft>\<gamma>' : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma>' \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>') \<Longrightarrow> \<gamma> = \<gamma>'
[PROOF STEP]
assume \<gamma>\<gamma>': "\<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>) \<and>
                           \<guillemotleft>\<gamma>' : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma>' \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>')"
[PROOF STATE]
proof (state)
this:
\<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>) \<and> \<guillemotleft>\<gamma>' : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma>' \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>')

goal (1 subgoal):
 1. \<And>\<gamma> \<gamma>'. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>) \<and> \<guillemotleft>\<gamma>' : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma>' \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>') \<Longrightarrow> \<gamma> = \<gamma>'
[PROOF STEP]
show "\<gamma> = \<gamma>'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<gamma> = \<gamma>'
[PROOF STEP]
using \<gamma>\<gamma>' vconn_implies_hpar(2) L.is_faithful [of \<gamma> \<gamma>']
[PROOF STATE]
proof (prove)
using this:
\<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>) \<and> \<guillemotleft>\<gamma>' : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma>' \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>')
\<guillemotleft>?\<mu> : ?f \<Rightarrow> ?g\<guillemotright> \<Longrightarrow> trg ?\<mu> = trg ?f
\<lbrakk>par \<gamma> \<gamma>'; L \<gamma> = L \<gamma>'\<rbrakk> \<Longrightarrow> \<gamma> = \<gamma>'

goal (1 subgoal):
 1. \<gamma> = \<gamma>'
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
\<gamma> = \<gamma>'

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<guillemotleft>?\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> ?\<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> ?\<gamma>) \<and> \<guillemotleft>?\<gamma>' : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> ?\<gamma>' \<and> \<theta> = \<theta>' \<cdot> (f \<star> ?\<gamma>') \<Longrightarrow> ?\<gamma> = ?\<gamma>'

goal (1 subgoal):
 1. \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<exists>\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
\<guillemotleft>?\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> ?\<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> ?\<gamma>) \<and> \<guillemotleft>?\<gamma>' : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> ?\<gamma>' \<and> \<theta> = \<theta>' \<cdot> (f \<star> ?\<gamma>') \<Longrightarrow> ?\<gamma> = ?\<gamma>'
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<exists>\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
\<guillemotleft>?\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> ?\<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> ?\<gamma>) \<and> \<guillemotleft>?\<gamma>' : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> ?\<gamma>' \<and> \<theta> = \<theta>' \<cdot> (f \<star> ?\<gamma>') \<Longrightarrow> ?\<gamma> = ?\<gamma>'

goal (1 subgoal):
 1. \<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>!\<gamma>. \<guillemotleft>\<gamma> : w \<Rightarrow> w'\<guillemotright> \<and> \<beta> = src f \<star> \<gamma> \<and> \<theta> = \<theta>' \<cdot> (f \<star> \<gamma>)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<lbrakk>ide ?w; ide ?w'; \<guillemotleft>?\<theta> : f \<star> ?w \<Rightarrow> ?u\<guillemotright>; \<guillemotleft>?\<theta>' : f \<star> ?w' \<Rightarrow> ?u\<guillemotright>; \<guillemotleft>?\<beta> : src f \<star> ?w \<Rightarrow> src f \<star> ?w'\<guillemotright>; (g \<star> ?\<theta>) \<cdot> \<a>[g, f, ?w] \<cdot> (\<eta> \<star> ?w) = ((g \<star> ?\<theta>') \<cdot> \<a>[g, f, ?w'] \<cdot> (\<eta> \<star> ?w')) \<cdot> ?\<beta>\<rbrakk> \<Longrightarrow> \<exists>!\<gamma>. \<guillemotleft>\<gamma> : ?w \<Rightarrow> ?w'\<guillemotright> \<and> ?\<beta> = src f \<star> \<gamma> \<and> ?\<theta> = ?\<theta>' \<cdot> (f \<star> \<gamma>)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
tabulation (\<cdot>) (\<star>) \<a> \<i> src trg g \<eta> f (src f)

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma ntcf_vcomp_is_ntcf[cat_cs_intros]:
  \<comment>\<open>see Chapter II-4 in \cite{mac_lane_categories_2010}.\<close>
  assumes "\<MM> : \<GG> \<mapsto>\<^sub>C\<^sub>F \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>" and "\<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F \<GG> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>"
  shows "\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>C\<^sub>F \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
[PROOF STEP]
interpret \<MM>: is_ntcf \<alpha> \<AA> \<BB> \<GG> \<HH> \<MM>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<MM> : \<GG> \<mapsto>\<^sub>C\<^sub>F \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
[PROOF STEP]
by (rule assms(1))
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
[PROOF STEP]
interpret \<NN>: is_ntcf \<alpha> \<AA> \<BB> \<FF> \<GG> \<NN>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F \<GG> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
[PROOF STEP]
by (rule assms(2))
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
[PROOF STEP]
proof(intro is_ntcfI)
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<Z> \<alpha>
 2. vfsequence (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)
 3. \<FF> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
 4. \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
 5. vcard (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>) = 5\<^sub>\<nat>
 6. ntcf_ntsmcf (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>) : cf_smcf \<FF> \<mapsto>\<^sub>S\<^sub>M\<^sub>C\<^sub>F cf_smcf \<HH> : cat_smc \<AA> \<mapsto>\<mapsto>\<^sub>S\<^sub>M\<^sub>C\<^bsub>\<alpha>\<^esub> cat_smc \<BB>
 7. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTDom\<rparr> = \<FF>
 8. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTCod\<rparr> = \<HH>
 9. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTDGDom\<rparr> = \<AA>
 10. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTDGCod\<rparr> = \<BB>
[PROOF STEP]
show "vfsequence (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>C\<^sub>F \<NN>)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. vfsequence (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)
[PROOF STEP]
by (simp add: ntsmcf_vcomp_def)
[PROOF STATE]
proof (state)
this:
vfsequence (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)

goal (9 subgoals):
 1. \<Z> \<alpha>
 2. \<FF> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
 3. \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
 4. vcard (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>) = 5\<^sub>\<nat>
 5. ntcf_ntsmcf (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>) : cf_smcf \<FF> \<mapsto>\<^sub>S\<^sub>M\<^sub>C\<^sub>F cf_smcf \<HH> : cat_smc \<AA> \<mapsto>\<mapsto>\<^sub>S\<^sub>M\<^sub>C\<^bsub>\<alpha>\<^esub> cat_smc \<BB>
 6. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTDom\<rparr> = \<FF>
 7. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTCod\<rparr> = \<HH>
 8. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTDGDom\<rparr> = \<AA>
 9. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTDGCod\<rparr> = \<BB>
[PROOF STEP]
show "vcard (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>C\<^sub>F \<NN>) = 5\<^sub>\<nat>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. vcard (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>) = 5\<^sub>\<nat>
[PROOF STEP]
unfolding ntsmcf_vcomp_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. vcard [\<lambda>a\<in>\<^sub>\<circ>\<NN>\<lparr>NTDGDom\<rparr>\<lparr>Obj\<rparr>. \<MM>\<lparr>NTMap\<rparr>\<lparr>a\<rparr> \<circ>\<^sub>A\<^bsub>\<NN>\<lparr>NTDGCod\<rparr>\<^esub> \<NN>\<lparr>NTMap\<rparr>\<lparr>a\<rparr>, \<NN>\<lparr>NTDom\<rparr>, \<MM>\<lparr>NTCod\<rparr>, \<NN>\<lparr>NTDGDom\<rparr>, \<MM>\<lparr>NTDGCod\<rparr>]\<^sub>\<circ> = 5\<^sub>\<nat>
[PROOF STEP]
by (simp add: nat_omega_simps)
[PROOF STATE]
proof (state)
this:
vcard (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>) = 5\<^sub>\<nat>

goal (8 subgoals):
 1. \<Z> \<alpha>
 2. \<FF> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
 3. \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
 4. ntcf_ntsmcf (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>) : cf_smcf \<FF> \<mapsto>\<^sub>S\<^sub>M\<^sub>C\<^sub>F cf_smcf \<HH> : cat_smc \<AA> \<mapsto>\<mapsto>\<^sub>S\<^sub>M\<^sub>C\<^bsub>\<alpha>\<^esub> cat_smc \<BB>
 5. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTDom\<rparr> = \<FF>
 6. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTCod\<rparr> = \<HH>
 7. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTDGDom\<rparr> = \<AA>
 8. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTDGCod\<rparr> = \<BB>
[PROOF STEP]
show "ntcf_ntsmcf (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>C\<^sub>F \<NN>) :
      cf_smcf \<FF> \<mapsto>\<^sub>S\<^sub>M\<^sub>C\<^sub>F cf_smcf \<HH> : cat_smc \<AA> \<mapsto>\<mapsto>\<^sub>S\<^sub>M\<^sub>C\<^bsub>\<alpha>\<^esub> cat_smc \<BB>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ntcf_ntsmcf (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>) : cf_smcf \<FF> \<mapsto>\<^sub>S\<^sub>M\<^sub>C\<^sub>F cf_smcf \<HH> : cat_smc \<AA> \<mapsto>\<mapsto>\<^sub>S\<^sub>M\<^sub>C\<^bsub>\<alpha>\<^esub> cat_smc \<BB>
[PROOF STEP]
by
        (
          rule ntsmcf_vcomp_is_ntsmcf[
            OF \<MM>.ntcf_is_ntsmcf \<NN>.ntcf_is_ntsmcf,
            unfolded slicing_simps slicing_commute
            ]
        )
[PROOF STATE]
proof (state)
this:
ntcf_ntsmcf (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>) : cf_smcf \<FF> \<mapsto>\<^sub>S\<^sub>M\<^sub>C\<^sub>F cf_smcf \<HH> : cat_smc \<AA> \<mapsto>\<mapsto>\<^sub>S\<^sub>M\<^sub>C\<^bsub>\<alpha>\<^esub> cat_smc \<BB>

goal (7 subgoals):
 1. \<Z> \<alpha>
 2. \<FF> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
 3. \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>
 4. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTDom\<rparr> = \<FF>
 5. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTCod\<rparr> = \<HH>
 6. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTDGDom\<rparr> = \<AA>
 7. (\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN>)\<lparr>NTDGCod\<rparr> = \<BB>
[PROOF STEP]
qed (auto simp: ntsmcf_vcomp_components(1) cat_cs_simps cat_cs_intros)
[PROOF STATE]
proof (state)
this:
\<MM> \<bullet>\<^sub>N\<^sub>T\<^sub>S\<^sub>M\<^sub>C\<^sub>F \<NN> : \<FF> \<mapsto>\<^sub>C\<^sub>F \<HH> : \<AA> \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<BB>

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma "\<exists>!P. P x"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>!P. P x
[PROOF STEP]
refute [expect = genuine]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>!P. P x
[PROOF STEP]
oops


[STATEMENT]
lemma "f = case_prod"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. f = case_prod
[PROOF STEP]
nitpick [card = 2, expect = genuine]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. f = case_prod
[PROOF STEP]
oops


[STATEMENT]
lemma Notes_master_imp_Notes_PMS:
     "[| Notes A \<lbrace>s, Agent A, Agent B, Nonce(PRF(PMS,NA,NB))\<rbrace> \<in> set evs;
         evs \<in> tls |]
      ==> Notes A \<lbrace>Agent B, Nonce PMS\<rbrace> \<in> set evs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>Notes A \<lbrace>s, Agent A, Agent B, Nonce (PRF (PMS, NA, NB))\<rbrace> \<in> set evs; evs \<in> tls\<rbrakk> \<Longrightarrow> Notes A \<lbrace>Agent B, Nonce PMS\<rbrace> \<in> set evs
[PROOF STEP]
apply (erule rev_mp)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. evs \<in> tls \<Longrightarrow> Notes A \<lbrace>s, Agent A, Agent B, Nonce (PRF (PMS, NA, NB))\<rbrace> \<in> set evs \<longrightarrow> Notes A \<lbrace>Agent B, Nonce PMS\<rbrace> \<in> set evs
[PROOF STEP]
apply (erule tls.induct, force, simp_all)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>evsSA Aa Ba A'' PMSa M NAa NBa X SID PA PB A'. \<lbrakk>evsSA \<in> tls; Notes A \<lbrace>s, Agent A, Agent B, Nonce (PRF (PMS, NA, NB))\<rbrace> \<in> set evsSA \<longrightarrow> Notes A \<lbrace>Agent B, Nonce PMS\<rbrace> \<in> set evsSA; Aa \<noteq> Ba; Says A'' Ba (Crypt (pubK Ba) (Nonce PMSa)) \<in> set evsSA; M = PRF (PMSa, NAa, NBa); X = Hash \<lbrace>Number SID, Nonce (PRF (PMSa, NAa, NBa)), Nonce NAa, Number PA, Agent Aa, Nonce NBa, Number PB, Agent Ba\<rbrace>; Says Ba Aa (Crypt (serverK (NAa, NBa, PRF (PMSa, NAa, NBa))) (Hash \<lbrace>Number SID, Nonce (PRF (PMSa, NAa, NBa)), Nonce NAa, Number PA, Agent Aa, Nonce NBa, Number PB, Agent Ba\<rbrace>)) \<in> set evsSA; Says A' Ba (Crypt (clientK (NAa, NBa, PRF (PMSa, NAa, NBa))) (Hash \<lbrace>Number SID, Nonce (PRF (PMSa, NAa, NBa)), Nonce NAa, Number PA, Agent Aa, Nonce NBa, Number PB, Agent Ba\<rbrace>)) \<in> set evsSA\<rbrakk> \<Longrightarrow> A = Ba \<and> s = Number SID \<and> A = Aa \<and> B = Ba \<and> PMS = PMSa \<and> NA = NAa \<and> NB = NBa \<longrightarrow> Notes Ba \<lbrace>Agent Ba, Nonce PMSa\<rbrace> \<in> set evsSA
[PROOF STEP]
txt\<open>ServerAccepts\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>evsSA Aa Ba A'' PMSa M NAa NBa X SID PA PB A'. \<lbrakk>evsSA \<in> tls; Notes A \<lbrace>s, Agent A, Agent B, Nonce (PRF (PMS, NA, NB))\<rbrace> \<in> set evsSA \<longrightarrow> Notes A \<lbrace>Agent B, Nonce PMS\<rbrace> \<in> set evsSA; Aa \<noteq> Ba; Says A'' Ba (Crypt (pubK Ba) (Nonce PMSa)) \<in> set evsSA; M = PRF (PMSa, NAa, NBa); X = Hash \<lbrace>Number SID, Nonce (PRF (PMSa, NAa, NBa)), Nonce NAa, Number PA, Agent Aa, Nonce NBa, Number PB, Agent Ba\<rbrace>; Says Ba Aa (Crypt (serverK (NAa, NBa, PRF (PMSa, NAa, NBa))) (Hash \<lbrace>Number SID, Nonce (PRF (PMSa, NAa, NBa)), Nonce NAa, Number PA, Agent Aa, Nonce NBa, Number PB, Agent Ba\<rbrace>)) \<in> set evsSA; Says A' Ba (Crypt (clientK (NAa, NBa, PRF (PMSa, NAa, NBa))) (Hash \<lbrace>Number SID, Nonce (PRF (PMSa, NAa, NBa)), Nonce NAa, Number PA, Agent Aa, Nonce NBa, Number PB, Agent Ba\<rbrace>)) \<in> set evsSA\<rbrakk> \<Longrightarrow> A = Ba \<and> s = Number SID \<and> A = Aa \<and> B = Ba \<and> PMS = PMSa \<and> NA = NAa \<and> NB = NBa \<longrightarrow> Notes Ba \<lbrace>Agent Ba, Nonce PMSa\<rbrace> \<in> set evsSA
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done