[STATEMENT]
lemma outstanding_refs_non_volatile_Read\<^sub>s\<^sub>b_all_acquired:
"\<And>m \<S> \<O> pending_write.
  \<lbrakk>reads_consistent pending_write \<O> m sb;non_volatile_owned_or_read_only pending_write \<S> \<O> sb;
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk>
\<Longrightarrow> a \<in>  \<O> \<or> a \<in> all_acquired sb \<or>
    a \<in> read_only_reads \<O> sb"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>m \<S> \<O> pending_write. \<lbrakk>reads_consistent pending_write \<O> m sb; non_volatile_owned_or_read_only pending_write \<S> \<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads \<O> sb
[PROOF STEP]
proof (induct sb)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>m \<S> \<O> pending_write. \<lbrakk>reads_consistent pending_write \<O> m []; non_volatile_owned_or_read_only pending_write \<S> \<O> []; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b []\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired [] \<or> a \<in> read_only_reads \<O> []
 2. \<And>aa sb m \<S> \<O> pending_write. \<lbrakk>\<And>m \<S> \<O> pending_write. \<lbrakk>reads_consistent pending_write \<O> m sb; non_volatile_owned_or_read_only pending_write \<S> \<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads \<O> sb; reads_consistent pending_write \<O> m (aa # sb); non_volatile_owned_or_read_only pending_write \<S> \<O> (aa # sb); a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (aa # sb)\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (aa # sb) \<or> a \<in> read_only_reads \<O> (aa # sb)
[PROOF STEP]
case Nil
[PROOF STATE]
proof (state)
this:
reads_consistent pending_write \<O> m []
non_volatile_owned_or_read_only pending_write \<S> \<O> []
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b []

goal (2 subgoals):
 1. \<And>m \<S> \<O> pending_write. \<lbrakk>reads_consistent pending_write \<O> m []; non_volatile_owned_or_read_only pending_write \<S> \<O> []; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b []\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired [] \<or> a \<in> read_only_reads \<O> []
 2. \<And>aa sb m \<S> \<O> pending_write. \<lbrakk>\<And>m \<S> \<O> pending_write. \<lbrakk>reads_consistent pending_write \<O> m sb; non_volatile_owned_or_read_only pending_write \<S> \<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads \<O> sb; reads_consistent pending_write \<O> m (aa # sb); non_volatile_owned_or_read_only pending_write \<S> \<O> (aa # sb); a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (aa # sb)\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (aa # sb) \<or> a \<in> read_only_reads \<O> (aa # sb)
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
reads_consistent pending_write \<O> m []
non_volatile_owned_or_read_only pending_write \<S> \<O> []
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b []

goal (1 subgoal):
 1. a \<in> \<O> \<or> a \<in> all_acquired [] \<or> a \<in> read_only_reads \<O> []
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
a \<in> \<O> \<or> a \<in> all_acquired [] \<or> a \<in> read_only_reads \<O> []

goal (1 subgoal):
 1. \<And>aa sb m \<S> \<O> pending_write. \<lbrakk>\<And>m \<S> \<O> pending_write. \<lbrakk>reads_consistent pending_write \<O> m sb; non_volatile_owned_or_read_only pending_write \<S> \<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads \<O> sb; reads_consistent pending_write \<O> m (aa # sb); non_volatile_owned_or_read_only pending_write \<S> \<O> (aa # sb); a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (aa # sb)\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (aa # sb) \<or> a \<in> read_only_reads \<O> (aa # sb)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>aa sb m \<S> \<O> pending_write. \<lbrakk>\<And>m \<S> \<O> pending_write. \<lbrakk>reads_consistent pending_write \<O> m sb; non_volatile_owned_or_read_only pending_write \<S> \<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads \<O> sb; reads_consistent pending_write \<O> m (aa # sb); non_volatile_owned_or_read_only pending_write \<S> \<O> (aa # sb); a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (aa # sb)\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (aa # sb) \<or> a \<in> read_only_reads \<O> (aa # sb)
[PROOF STEP]
case (Cons x sb)
[PROOF STATE]
proof (state)
this:
\<lbrakk>reads_consistent ?pending_write ?\<O> ?m sb; non_volatile_owned_or_read_only ?pending_write ?\<S> ?\<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> ?\<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads ?\<O> sb
reads_consistent pending_write \<O> m (x # sb)
non_volatile_owned_or_read_only pending_write \<S> \<O> (x # sb)
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (x # sb)

goal (1 subgoal):
 1. \<And>aa sb m \<S> \<O> pending_write. \<lbrakk>\<And>m \<S> \<O> pending_write. \<lbrakk>reads_consistent pending_write \<O> m sb; non_volatile_owned_or_read_only pending_write \<S> \<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads \<O> sb; reads_consistent pending_write \<O> m (aa # sb); non_volatile_owned_or_read_only pending_write \<S> \<O> (aa # sb); a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (aa # sb)\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (aa # sb) \<or> a \<in> read_only_reads \<O> (aa # sb)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
proof (cases x)
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>x11 x12 x13 x14 x15 x16 x17 x18. x = Write\<^sub>s\<^sub>b x11 x12 x13 x14 x15 x16 x17 x18 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. \<And>x21 x22 x23 x24. x = Read\<^sub>s\<^sub>b x21 x22 x23 x24 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 3. \<And>x31 x32 x33. x = Prog\<^sub>s\<^sub>b x31 x32 x33 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 4. \<And>x41 x42 x43 x44. x = Ghost\<^sub>s\<^sub>b x41 x42 x43 x44 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
case (Write\<^sub>s\<^sub>b volatile a' sop v A L R W)
[PROOF STATE]
proof (state)
this:
x = Write\<^sub>s\<^sub>b volatile a' sop v A L R W

goal (4 subgoals):
 1. \<And>x11 x12 x13 x14 x15 x16 x17 x18. x = Write\<^sub>s\<^sub>b x11 x12 x13 x14 x15 x16 x17 x18 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. \<And>x21 x22 x23 x24. x = Read\<^sub>s\<^sub>b x21 x22 x23 x24 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 3. \<And>x31 x32 x33. x = Prog\<^sub>s\<^sub>b x31 x32 x33 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 4. \<And>x41 x42 x43 x44. x = Ghost\<^sub>s\<^sub>b x41 x42 x43 x44 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
proof (cases volatile)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. volatile \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. \<not> volatile \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
volatile

goal (2 subgoals):
 1. volatile \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. \<not> volatile \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
note volatile=this
[PROOF STATE]
proof (state)
this:
volatile

goal (2 subgoals):
 1. volatile \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. \<not> volatile \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
from Cons.prems
[PROOF STATE]
proof (chain)
picking this:
reads_consistent pending_write \<O> m (x # sb)
non_volatile_owned_or_read_only pending_write \<S> \<O> (x # sb)
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (x # sb)
[PROOF STEP]
obtain
	non_vo: "non_volatile_owned_or_read_only True (\<S> \<oplus>\<^bsub>W\<^esub> R \<ominus>\<^bsub>A\<^esub> L)
	            (\<O> \<union> A - R) sb" and
        out_vol: "outstanding_refs is_volatile_Read\<^sub>s\<^sub>b sb = {}" and
	out: "a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb"
[PROOF STATE]
proof (prove)
using this:
reads_consistent pending_write \<O> m (x # sb)
non_volatile_owned_or_read_only pending_write \<S> \<O> (x # sb)
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (x # sb)

goal (1 subgoal):
 1. (\<lbrakk>non_volatile_owned_or_read_only True (\<S> \<oplus>\<^bsub>W\<^esub> R \<ominus>\<^bsub>A\<^esub> L) (\<O> \<union> A - R) sb; outstanding_refs is_volatile_Read\<^sub>s\<^sub>b sb = {}; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (clarsimp simp add: Write\<^sub>s\<^sub>b True)
[PROOF STATE]
proof (state)
this:
non_volatile_owned_or_read_only True (\<S> \<oplus>\<^bsub>W\<^esub> R \<ominus>\<^bsub>A\<^esub> L) (\<O> \<union> A - R) sb
outstanding_refs is_volatile_Read\<^sub>s\<^sub>b sb = {}
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb

goal (2 subgoals):
 1. volatile \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. \<not> volatile \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
proof (cases "a \<in> \<O>")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. a \<in> \<O> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. a \<notin> \<O> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
a \<in> \<O>

goal (2 subgoals):
 1. a \<in> \<O> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. a \<notin> \<O> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
by (clarsimp simp add: Write\<^sub>s\<^sub>b True volatile)
[PROOF STATE]
proof (state)
this:
a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)

goal (1 subgoal):
 1. a \<notin> \<O> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. a \<notin> \<O> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
a \<notin> \<O>

goal (1 subgoal):
 1. a \<notin> \<O> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
from outstanding_non_volatile_Read\<^sub>s\<^sub>b_acquired_or_read_only_reads [OF non_vo out]
[PROOF STATE]
proof (chain)
picking this:
a \<in> acquired_reads True sb (\<O> \<union> A - R) \<or> a \<in> read_only_reads (\<O> \<union> A - R) sb
[PROOF STEP]
have a_in: "a \<in> acquired_reads True sb (\<O> \<union> A - R) \<or>
                    a \<in> read_only_reads (\<O> \<union> A - R) sb"
[PROOF STATE]
proof (prove)
using this:
a \<in> acquired_reads True sb (\<O> \<union> A - R) \<or> a \<in> read_only_reads (\<O> \<union> A - R) sb

goal (1 subgoal):
 1. a \<in> acquired_reads True sb (\<O> \<union> A - R) \<or> a \<in> read_only_reads (\<O> \<union> A - R) sb
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
a \<in> acquired_reads True sb (\<O> \<union> A - R) \<or> a \<in> read_only_reads (\<O> \<union> A - R) sb

goal (1 subgoal):
 1. a \<notin> \<O> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
with acquired_reads_all_acquired [of True sb "(\<O> \<union> A - R)"]
[PROOF STATE]
proof (chain)
picking this:
acquired_reads True sb (\<O> \<union> A - R) \<subseteq> \<O> \<union> A - R \<union> all_acquired sb
a \<in> acquired_reads True sb (\<O> \<union> A - R) \<or> a \<in> read_only_reads (\<O> \<union> A - R) sb
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
acquired_reads True sb (\<O> \<union> A - R) \<subseteq> \<O> \<union> A - R \<union> all_acquired sb
a \<in> acquired_reads True sb (\<O> \<union> A - R) \<or> a \<in> read_only_reads (\<O> \<union> A - R) sb

goal (1 subgoal):
 1. a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
by (auto simp add: Write\<^sub>s\<^sub>b volatile)
[PROOF STATE]
proof (state)
this:
a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)

goal (1 subgoal):
 1. \<not> volatile \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<not> volatile \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
\<not> volatile

goal (1 subgoal):
 1. \<not> volatile \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
with Cons
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>reads_consistent ?pending_write ?\<O> ?m sb; non_volatile_owned_or_read_only ?pending_write ?\<S> ?\<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> ?\<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads ?\<O> sb
reads_consistent pending_write \<O> m (x # sb)
non_volatile_owned_or_read_only pending_write \<S> \<O> (x # sb)
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (x # sb)
\<not> volatile
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>reads_consistent ?pending_write ?\<O> ?m sb; non_volatile_owned_or_read_only ?pending_write ?\<S> ?\<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> ?\<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads ?\<O> sb
reads_consistent pending_write \<O> m (x # sb)
non_volatile_owned_or_read_only pending_write \<S> \<O> (x # sb)
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (x # sb)
\<not> volatile

goal (1 subgoal):
 1. a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
by (auto simp add: Write\<^sub>s\<^sub>b False)
[PROOF STATE]
proof (state)
this:
a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)

goal (3 subgoals):
 1. \<And>x21 x22 x23 x24. x = Read\<^sub>s\<^sub>b x21 x22 x23 x24 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. \<And>x31 x32 x33. x = Prog\<^sub>s\<^sub>b x31 x32 x33 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 3. \<And>x41 x42 x43 x44. x = Ghost\<^sub>s\<^sub>b x41 x42 x43 x44 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>x21 x22 x23 x24. x = Read\<^sub>s\<^sub>b x21 x22 x23 x24 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. \<And>x31 x32 x33. x = Prog\<^sub>s\<^sub>b x31 x32 x33 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 3. \<And>x41 x42 x43 x44. x = Ghost\<^sub>s\<^sub>b x41 x42 x43 x44 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
case Read\<^sub>s\<^sub>b
[PROOF STATE]
proof (state)
this:
x = Read\<^sub>s\<^sub>b x21_ x22_ x23_ x24_

goal (3 subgoals):
 1. \<And>x21 x22 x23 x24. x = Read\<^sub>s\<^sub>b x21 x22 x23 x24 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. \<And>x31 x32 x33. x = Prog\<^sub>s\<^sub>b x31 x32 x33 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 3. \<And>x41 x42 x43 x44. x = Ghost\<^sub>s\<^sub>b x41 x42 x43 x44 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
with Cons
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>reads_consistent ?pending_write ?\<O> ?m sb; non_volatile_owned_or_read_only ?pending_write ?\<S> ?\<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> ?\<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads ?\<O> sb
reads_consistent pending_write \<O> m (x # sb)
non_volatile_owned_or_read_only pending_write \<S> \<O> (x # sb)
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (x # sb)
x = Read\<^sub>s\<^sub>b x21_ x22_ x23_ x24_
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>reads_consistent ?pending_write ?\<O> ?m sb; non_volatile_owned_or_read_only ?pending_write ?\<S> ?\<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> ?\<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads ?\<O> sb
reads_consistent pending_write \<O> m (x # sb)
non_volatile_owned_or_read_only pending_write \<S> \<O> (x # sb)
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (x # sb)
x = Read\<^sub>s\<^sub>b x21_ x22_ x23_ x24_

goal (1 subgoal):
 1. a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
apply (clarsimp simp del: o_apply simp add: Read\<^sub>s\<^sub>b
	acquired_takeWhile_non_volatile_Write\<^sub>s\<^sub>b split: if_split_asm)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>\<And>pending_write \<O> m \<S>. \<lbrakk>reads_consistent pending_write \<O> m sb; non_volatile_owned_or_read_only pending_write \<S> \<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads \<O> sb; \<not> x21_; reads_consistent pending_write \<O> m sb; pending_write \<longrightarrow> x22_ \<in> \<O> \<or> x22_ \<in> read_only \<S>; non_volatile_owned_or_read_only pending_write \<S> \<O> sb; a = x22_ \<or> a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb; pending_write \<longrightarrow> x24_ = m x22_; x22_ \<in> \<O> \<longrightarrow> x24_ = m x22_\<rbrakk> \<Longrightarrow> (x22_ \<notin> \<O> \<longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired sb \<or> a = x22_ \<or> a \<in> read_only_reads \<O> sb) \<and> (x22_ \<in> \<O> \<longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads \<O> sb)
[PROOF STEP]
apply auto
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)

goal (2 subgoals):
 1. \<And>x31 x32 x33. x = Prog\<^sub>s\<^sub>b x31 x32 x33 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. \<And>x41 x42 x43 x44. x = Ghost\<^sub>s\<^sub>b x41 x42 x43 x44 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>x31 x32 x33. x = Prog\<^sub>s\<^sub>b x31 x32 x33 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. \<And>x41 x42 x43 x44. x = Ghost\<^sub>s\<^sub>b x41 x42 x43 x44 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
case Prog\<^sub>s\<^sub>b
[PROOF STATE]
proof (state)
this:
x = Prog\<^sub>s\<^sub>b x31_ x32_ x33_

goal (2 subgoals):
 1. \<And>x31 x32 x33. x = Prog\<^sub>s\<^sub>b x31 x32 x33 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
 2. \<And>x41 x42 x43 x44. x = Ghost\<^sub>s\<^sub>b x41 x42 x43 x44 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
with Cons
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>reads_consistent ?pending_write ?\<O> ?m sb; non_volatile_owned_or_read_only ?pending_write ?\<S> ?\<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> ?\<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads ?\<O> sb
reads_consistent pending_write \<O> m (x # sb)
non_volatile_owned_or_read_only pending_write \<S> \<O> (x # sb)
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (x # sb)
x = Prog\<^sub>s\<^sub>b x31_ x32_ x33_
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>reads_consistent ?pending_write ?\<O> ?m sb; non_volatile_owned_or_read_only ?pending_write ?\<S> ?\<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> ?\<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads ?\<O> sb
reads_consistent pending_write \<O> m (x # sb)
non_volatile_owned_or_read_only pending_write \<S> \<O> (x # sb)
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (x # sb)
x = Prog\<^sub>s\<^sub>b x31_ x32_ x33_

goal (1 subgoal):
 1. a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
by (auto simp add: Read\<^sub>s\<^sub>b)
[PROOF STATE]
proof (state)
this:
a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)

goal (1 subgoal):
 1. \<And>x41 x42 x43 x44. x = Ghost\<^sub>s\<^sub>b x41 x42 x43 x44 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x41 x42 x43 x44. x = Ghost\<^sub>s\<^sub>b x41 x42 x43 x44 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
case (Ghost\<^sub>s\<^sub>b A L)
[PROOF STATE]
proof (state)
this:
x = Ghost\<^sub>s\<^sub>b A L x43_ x44_

goal (1 subgoal):
 1. \<And>x41 x42 x43 x44. x = Ghost\<^sub>s\<^sub>b x41 x42 x43 x44 \<Longrightarrow> a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
with Cons
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>reads_consistent ?pending_write ?\<O> ?m sb; non_volatile_owned_or_read_only ?pending_write ?\<S> ?\<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> ?\<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads ?\<O> sb
reads_consistent pending_write \<O> m (x # sb)
non_volatile_owned_or_read_only pending_write \<S> \<O> (x # sb)
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (x # sb)
x = Ghost\<^sub>s\<^sub>b A L x43_ x44_
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>reads_consistent ?pending_write ?\<O> ?m sb; non_volatile_owned_or_read_only ?pending_write ?\<S> ?\<O> sb; a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b sb\<rbrakk> \<Longrightarrow> a \<in> ?\<O> \<or> a \<in> all_acquired sb \<or> a \<in> read_only_reads ?\<O> sb
reads_consistent pending_write \<O> m (x # sb)
non_volatile_owned_or_read_only pending_write \<S> \<O> (x # sb)
a \<in> outstanding_refs is_non_volatile_Read\<^sub>s\<^sub>b (x # sb)
x = Ghost\<^sub>s\<^sub>b A L x43_ x44_

goal (1 subgoal):
 1. a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)
[PROOF STEP]
by (auto simp add: Ghost\<^sub>s\<^sub>b)
[PROOF STATE]
proof (state)
this:
a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
a \<in> \<O> \<or> a \<in> all_acquired (x # sb) \<or> a \<in> read_only_reads \<O> (x # sb)

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma WT_callee_of_core [WT_intro]:
  assumes WT: "WT_core \<I>_adv \<I>_usr I core"
     and I: "I s"
   shows "\<I>_full \<oplus>\<^sub>\<I> (\<I>_adv \<oplus>\<^sub>\<I> \<I>_usr) \<turnstile>c callee_of_core core s \<surd>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<I>_full \<oplus>\<^sub>\<I> (\<I>_adv \<oplus>\<^sub>\<I> \<I>_usr) \<turnstile>c callee_of_core core s \<surd>
[PROOF STEP]
apply(rule WT_calleeI)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>call ret sa. \<lbrakk>call \<in> outs_\<I> (\<I>_full \<oplus>\<^sub>\<I> (\<I>_adv \<oplus>\<^sub>\<I> \<I>_usr)); (ret, sa) \<in> set_spmf (callee_of_core core s call)\<rbrakk> \<Longrightarrow> ret \<in> responses_\<I> (\<I>_full \<oplus>\<^sub>\<I> (\<I>_adv \<oplus>\<^sub>\<I> \<I>_usr)) call
[PROOF STEP]
subgoal for x y s'
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>x \<in> outs_\<I> (\<I>_full \<oplus>\<^sub>\<I> (\<I>_adv \<oplus>\<^sub>\<I> \<I>_usr)); (y, s') \<in> set_spmf (callee_of_core core s x)\<rbrakk> \<Longrightarrow> y \<in> responses_\<I> (\<I>_full \<oplus>\<^sub>\<I> (\<I>_adv \<oplus>\<^sub>\<I> \<I>_usr)) x
[PROOF STEP]
using I WT_coreD[OF WT]
[PROOF STATE]
proof (prove)
using this:
I s
\<lbrakk>?s' \<in> set_spmf (cpoke core ?s ?e); I ?s\<rbrakk> \<Longrightarrow> I ?s'
\<lbrakk>(?y, ?s') \<in> set_spmf (cfunc_adv core ?s ?x); ?x \<in> outs_\<I> \<I>_adv; I ?s\<rbrakk> \<Longrightarrow> ?y \<in> responses_\<I> \<I>_adv ?x \<and> I ?s'
\<lbrakk>(?y, ?s') \<in> set_spmf (cfunc_usr core ?s ?x); ?x \<in> outs_\<I> \<I>_usr; I ?s\<rbrakk> \<Longrightarrow> ?y \<in> responses_\<I> \<I>_usr ?x \<and> I ?s'

goal (1 subgoal):
 1. \<lbrakk>x \<in> outs_\<I> (\<I>_full \<oplus>\<^sub>\<I> (\<I>_adv \<oplus>\<^sub>\<I> \<I>_usr)); (y, s') \<in> set_spmf (callee_of_core core s x)\<rbrakk> \<Longrightarrow> y \<in> responses_\<I> (\<I>_full \<oplus>\<^sub>\<I> (\<I>_adv \<oplus>\<^sub>\<I> \<I>_usr)) x
[PROOF STEP]
by(auto simp add: callee_of_core_def plus_oracle_def split!: sum.splits)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma iiface_rewrite_matches_Primitive:
          "matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p \<longleftrightarrow>
           matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
[PROOF STEP]
proof(cases x)
[PROOF STATE]
proof (state)
goal (11 subgoals):
 1. \<And>x1. x = Src x1 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 2. \<And>x2. x = Dst x2 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 3. \<And>x3. x = IIface x3 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 4. \<And>x4. x = OIface x4 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 5. \<And>x5. x = Prot x5 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 6. \<And>x6. x = Src_Ports x6 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 7. \<And>x7. x = Dst_Ports x7 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 8. \<And>x8. x = MultiportPorts x8 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 9. \<And>x9. x = L4_Flags x9 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 10. \<And>x10. x = CT_State x10 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
A total of 11 subgoals...
[PROOF STEP]
case (IIface ifce)
[PROOF STATE]
proof (state)
this:
x = IIface ifce

goal (11 subgoals):
 1. \<And>x1. x = Src x1 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 2. \<And>x2. x = Dst x2 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 3. \<And>x3. x = IIface x3 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 4. \<And>x4. x = OIface x4 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 5. \<And>x5. x = Prot x5 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 6. \<And>x6. x = Src_Ports x6 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 7. \<And>x7. x = Dst_Ports x7 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 8. \<And>x8. x = MultiportPorts x8 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 9. \<And>x9. x = L4_Flags x9 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 10. \<And>x10. x = CT_State x10 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
A total of 11 subgoals...
[PROOF STEP]
have "(matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) \<longleftrightarrow>
      (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
proof(cases "ipassmt ifce")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. ipassmt ifce = None \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
 2. \<And>aa. ipassmt ifce = Some aa \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
case None
[PROOF STATE]
proof (state)
this:
ipassmt ifce = None

goal (2 subgoals):
 1. ipassmt ifce = None \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
 2. \<And>aa. ipassmt ifce = Some aa \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
ipassmt ifce = None

goal (1 subgoal):
 1. (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
apply(simp add: matches_ipassmt_iface_replace_srcip_mexpr)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ipassmt ifce = None \<Longrightarrow> matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))
[PROOF STEP]
apply(simp add: ipassmt_iface_replace_srcip_mexpr_def primitive_matcher_generic.Iface_single_not[OF primitive_matcher_generic_common_matcher])
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
(matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))

goal (1 subgoal):
 1. \<And>aa. ipassmt ifce = Some aa \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>aa. ipassmt ifce = Some aa \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
case (Some ips)
[PROOF STATE]
proof (state)
this:
ipassmt ifce = Some ips

goal (1 subgoal):
 1. \<And>aa. ipassmt ifce = Some aa \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
ipassmt ifce = Some ips

goal (1 subgoal):
 1. \<And>aa. ipassmt ifce = Some aa \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
fix ips
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>aa. ipassmt ifce = Some aa \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
have "matches (common_matcher, \<alpha>)
                 (MatchNot (match_list_to_match_expr (map (Match \<circ> Src \<circ> (uncurry IpAddrNetmask)) ips))) a p \<longleftrightarrow>
                 (p_src p \<notin> ipcidr_union_set (set ips))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map ((Match \<circ> Src \<circ>\<circ> uncurry) IpAddrNetmask) ips))) a p = (p_src p \<notin> ipcidr_union_set (set ips))
[PROOF STEP]
apply(induction ips)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map ((Match \<circ> Src \<circ>\<circ> uncurry) IpAddrNetmask) []))) a p = (p_src p \<notin> ipcidr_union_set (set []))
 2. \<And>aa ips. matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map ((Match \<circ> Src \<circ>\<circ> uncurry) IpAddrNetmask) ips))) a p = (p_src p \<notin> ipcidr_union_set (set ips)) \<Longrightarrow> matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map ((Match \<circ> Src \<circ>\<circ> uncurry) IpAddrNetmask) (aa # ips)))) a p = (p_src p \<notin> ipcidr_union_set (set (aa # ips)))
[PROOF STEP]
apply(simp add: bunch_of_lemmata_about_matches ipcidr_union_set_uncurry)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>aa ips. matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map ((Match \<circ> Src \<circ>\<circ> uncurry) IpAddrNetmask) ips))) a p = (p_src p \<notin> ipcidr_union_set (set ips)) \<Longrightarrow> matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map ((Match \<circ> Src \<circ>\<circ> uncurry) IpAddrNetmask) (aa # ips)))) a p = (p_src p \<notin> ipcidr_union_set (set (aa # ips)))
[PROOF STEP]
apply(simp add: MatchOr_MatchNot)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>aa ips. matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map (\<lambda>a. Match (Src (uncurry IpAddrNetmask a))) ips))) a p = (p_src p \<notin> ipcidr_union_set (set ips)) \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (Match (Src (uncurry IpAddrNetmask aa)))) a p \<and> p_src p \<notin> ipcidr_union_set (set ips)) = (p_src p \<notin> ipcidr_union_set (insert aa (set ips)))
[PROOF STEP]
apply(simp add: ipcidr_union_set_uncurry)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>aa ips. matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map (\<lambda>a. Match (Src (uncurry IpAddrNetmask a))) ips))) a p = (\<forall>x\<in>set ips. p_src p \<notin> uncurry ipset_from_cidr x) \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (Match (Src (uncurry IpAddrNetmask aa)))) a p \<and> (\<forall>x\<in>set ips. p_src p \<notin> uncurry ipset_from_cidr x)) = (p_src p \<notin> uncurry ipset_from_cidr aa \<and> (\<forall>x\<in>set ips. p_src p \<notin> uncurry ipset_from_cidr x))
[PROOF STEP]
apply(simp add: match_simplematcher_SrcDst_not)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>aa ips. matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map (\<lambda>a. Match (Src (uncurry IpAddrNetmask a))) ips))) a p = (\<forall>x\<in>set ips. p_src p \<notin> uncurry ipset_from_cidr x) \<Longrightarrow> (p_src p \<notin> ipt_iprange_to_set (uncurry IpAddrNetmask aa) \<and> (\<forall>x\<in>set ips. p_src p \<notin> uncurry ipset_from_cidr x)) = (p_src p \<notin> uncurry ipset_from_cidr aa \<and> (\<forall>x\<in>set ips. p_src p \<notin> uncurry ipset_from_cidr x))
[PROOF STEP]
apply(thin_tac _)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a ips. (p_src p \<notin> ipt_iprange_to_set (uncurry IpAddrNetmask a) \<and> (\<forall>x\<in>set ips. p_src p \<notin> uncurry ipset_from_cidr x)) = (p_src p \<notin> uncurry ipset_from_cidr a \<and> (\<forall>x\<in>set ips. p_src p \<notin> uncurry ipset_from_cidr x))
[PROOF STEP]
apply(simp add: ipt_iprange_to_set_uncurry_IpAddrNetmask)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map ((Match \<circ> Src \<circ>\<circ> uncurry) IpAddrNetmask) ips))) a p = (p_src p \<notin> ipcidr_union_set (set ips))

goal (1 subgoal):
 1. \<And>aa. ipassmt ifce = Some aa \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map ((Match \<circ> Src \<circ>\<circ> uncurry) IpAddrNetmask) ?ipsa2))) a p = (p_src p \<notin> ipcidr_union_set (set ?ipsa2))

goal (1 subgoal):
 1. \<And>aa. ipassmt ifce = Some aa \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
note helper=this
[PROOF STATE]
proof (state)
this:
matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map ((Match \<circ> Src \<circ>\<circ> uncurry) IpAddrNetmask) ?ipsa2))) a p = (p_src p \<notin> ipcidr_union_set (set ?ipsa2))

goal (1 subgoal):
 1. \<And>aa. ipassmt ifce = Some aa \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
from Some
[PROOF STATE]
proof (chain)
picking this:
ipassmt ifce = Some ips
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
ipassmt ifce = Some ips

goal (1 subgoal):
 1. (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
apply(simp add: matches_ipassmt_iface_replace_srcip_mexpr)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ipassmt ifce = Some ips \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = ((p_src p \<in> ipcidr_union_set (set ips)) = match_iface ifce (p_iiface p))
[PROOF STEP]
apply(simp add: ipassmt_iface_replace_srcip_mexpr_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ipassmt ifce = Some ips \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (match_list_to_match_expr (map ((Match \<circ> Src \<circ>\<circ> uncurry) IpAddrNetmask) ips))) a p = (\<not> match_iface ifce (p_iiface p))) = ((p_src p \<in> ipcidr_union_set (set ips)) = match_iface ifce (p_iiface p))
[PROOF STEP]
apply(simp add: helper)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
(matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))

goal (11 subgoals):
 1. \<And>x1. x = Src x1 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 2. \<And>x2. x = Dst x2 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 3. \<And>x3. x = IIface x3 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 4. \<And>x4. x = OIface x4 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 5. \<And>x5. x = Prot x5 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 6. \<And>x6. x = Src_Ports x6 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 7. \<And>x7. x = Dst_Ports x7 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 8. \<And>x8. x = MultiportPorts x8 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 9. \<And>x9. x = L4_Flags x9 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 10. \<And>x10. x = CT_State x10 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
A total of 11 subgoals...
[PROOF STEP]
with IIface
[PROOF STATE]
proof (chain)
picking this:
x = IIface ifce
(matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
x = IIface ifce
(matches (common_matcher, \<alpha>) (MatchNot (ipassmt_iface_replace_srcip_mexpr ipassmt ifce)) a p = (\<not> match_iface ifce (p_iiface p))) = (matches (common_matcher, \<alpha>) (ipassmt_iface_replace_srcip_mexpr ipassmt ifce) a p = match_iface ifce (p_iiface p))

goal (1 subgoal):
 1. (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
[PROOF STEP]
by(simp add: primitive_matcher_generic.Iface_single_not[OF primitive_matcher_generic_common_matcher]
            primitive_matcher_generic.Iface_single[OF primitive_matcher_generic_common_matcher])
[PROOF STATE]
proof (state)
this:
(matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)

goal (10 subgoals):
 1. \<And>x1. x = Src x1 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 2. \<And>x2. x = Dst x2 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 3. \<And>x4. x = OIface x4 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 4. \<And>x5. x = Prot x5 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 5. \<And>x6. x = Src_Ports x6 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 6. \<And>x7. x = Dst_Ports x7 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 7. \<And>x8. x = MultiportPorts x8 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 8. \<And>x9. x = L4_Flags x9 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 9. \<And>x10. x = CT_State x10 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
 10. \<And>x11. x = Extra x11 \<Longrightarrow> (matches (common_matcher, \<alpha>) (MatchNot (iiface_rewrite ipassmt (Match x))) a p = matches (common_matcher, \<alpha>) (MatchNot (Match x)) a p) = (matches (common_matcher, \<alpha>) (iiface_rewrite ipassmt (Match x)) a p = matches (common_matcher, \<alpha>) (Match x) a p)
[PROOF STEP]
qed(simp_all)


[STATEMENT]
lemma (in category) cat_ntcf_equalizer_base_is_cat_cone:
  assumes "e \<aa>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<aa>"
    and "e \<bb>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>"
    and "e \<bb>\<^sub>P\<^sub>L\<^sub>2 = \<gg> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> e \<aa>\<^sub>P\<^sub>L\<^sub>2"
    and "e \<bb>\<^sub>P\<^sub>L\<^sub>2 = \<ff> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> e \<aa>\<^sub>P\<^sub>L\<^sub>2"
    and "\<gg> : \<aa> \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>"
    and "\<ff> : \<aa> \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>"
  shows "ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e :
    E <\<^sub>C\<^sub>F\<^sub>.\<^sub>c\<^sub>o\<^sub>n\<^sub>e \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> :
    \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e : E <\<^sub>C\<^sub>F\<^sub>.\<^sub>c\<^sub>o\<^sub>n\<^sub>e \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e : E <\<^sub>C\<^sub>F\<^sub>.\<^sub>c\<^sub>o\<^sub>n\<^sub>e \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
[PROOF STEP]
interpret par: cf_parallel_2 \<alpha> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> \<CC>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. cf_parallel_2 \<alpha> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> \<CC>
[PROOF STEP]
by (intro cf_parallel_2I cat_parallel_2I assms(5,6))
      (simp_all add: cat_parallel_cs_intros cat_cs_intros)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e : E <\<^sub>C\<^sub>F\<^sub>.\<^sub>c\<^sub>o\<^sub>n\<^sub>e \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e : E <\<^sub>C\<^sub>F\<^sub>.\<^sub>c\<^sub>o\<^sub>n\<^sub>e \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
[PROOF STEP]
proof(intro is_cat_coneI is_tm_ntcfI' is_ntcfI')
[PROOF STATE]
proof (state)
goal (14 subgoals):
 1. \<Z> \<alpha>
 2. vfsequence (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e)
 3. vcard (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e) = 5\<^sub>\<nat>
 4. dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>) : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
 5. \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
 6. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDom\<rparr> = dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)
 7. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTCod\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>
 8. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGDom\<rparr> = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L
 9. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGCod\<rparr> = \<CC>
 10. vsv (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>)
A total of 14 subgoals...
[PROOF STEP]
show "vfsequence (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. vfsequence (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e)
[PROOF STEP]
unfolding ntcf_equalizer_base_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. vfsequence [VLambda (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr>) e, dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>), \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>, \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L, \<CC>]\<^sub>\<circ>
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
vfsequence (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e)

goal (13 subgoals):
 1. \<Z> \<alpha>
 2. vcard (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e) = 5\<^sub>\<nat>
 3. dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>) : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
 4. \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
 5. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDom\<rparr> = dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)
 6. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTCod\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>
 7. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGDom\<rparr> = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L
 8. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGCod\<rparr> = \<CC>
 9. vsv (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>)
 10. \<D>\<^sub>\<circ> (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>) = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr>
A total of 13 subgoals...
[PROOF STEP]
show "vcard (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e) = 5\<^sub>\<nat>"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. vcard (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e) = 5\<^sub>\<nat>
[PROOF STEP]
unfolding ntcf_equalizer_base_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. vcard [VLambda (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr>) e, dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>), \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>, \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L, \<CC>]\<^sub>\<circ> = 5\<^sub>\<nat>
[PROOF STEP]
by (simp add: nat_omega_simps)
[PROOF STATE]
proof (state)
this:
vcard (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e) = 5\<^sub>\<nat>

goal (12 subgoals):
 1. \<Z> \<alpha>
 2. dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>) : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
 3. \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
 4. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDom\<rparr> = dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)
 5. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTCod\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>
 6. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGDom\<rparr> = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L
 7. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGCod\<rparr> = \<CC>
 8. vsv (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>)
 9. \<D>\<^sub>\<circ> (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>) = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr>
 10. \<And>a. a \<in>\<^sub>\<circ> \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr> \<Longrightarrow> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>a\<rparr> : dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ObjMap\<rparr>\<lparr>a\<rparr> \<mapsto>\<^bsub>\<CC>\<^esub> \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ObjMap\<rparr>\<lparr>a\<rparr>
A total of 12 subgoals...
[PROOF STEP]
from assms(2)
[PROOF STATE]
proof (chain)
picking this:
e \<bb>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
[PROOF STEP]
show
      "cf_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>"
[PROOF STATE]
proof (prove)
using this:
e \<bb>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>

goal (1 subgoal):
 1. dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>) : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
[PROOF STEP]
by
        (
          cs_concl
            cs_simp: cat_cs_simps
            cs_intro: cat_small_cs_intros cat_parallel_cs_intros cat_cs_intros
        )
[PROOF STATE]
proof (state)
this:
dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>) : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>

goal (11 subgoals):
 1. \<Z> \<alpha>
 2. \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
 3. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDom\<rparr> = dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)
 4. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTCod\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>
 5. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGDom\<rparr> = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L
 6. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGCod\<rparr> = \<CC>
 7. vsv (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>)
 8. \<D>\<^sub>\<circ> (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>) = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr>
 9. \<And>a. a \<in>\<^sub>\<circ> \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr> \<Longrightarrow> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>a\<rparr> : dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ObjMap\<rparr>\<lparr>a\<rparr> \<mapsto>\<^bsub>\<CC>\<^esub> \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ObjMap\<rparr>\<lparr>a\<rparr>
 10. \<And>a b f. f : a \<mapsto>\<^bsub>\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<^esub> b \<Longrightarrow> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>b\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ArrMap\<rparr>\<lparr>f\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ArrMap\<rparr>\<lparr>f\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>a\<rparr>
A total of 11 subgoals...
[PROOF STEP]
from assms
[PROOF STATE]
proof (chain)
picking this:
e \<aa>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<aa>
e \<bb>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
e \<bb>\<^sub>P\<^sub>L\<^sub>2 = \<gg> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> e \<aa>\<^sub>P\<^sub>L\<^sub>2
e \<bb>\<^sub>P\<^sub>L\<^sub>2 = \<ff> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> e \<aa>\<^sub>P\<^sub>L\<^sub>2
\<gg> : \<aa> \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
\<ff> : \<aa> \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
[PROOF STEP]
show
      "\<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>"
[PROOF STATE]
proof (prove)
using this:
e \<aa>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<aa>
e \<bb>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
e \<bb>\<^sub>P\<^sub>L\<^sub>2 = \<gg> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> e \<aa>\<^sub>P\<^sub>L\<^sub>2
e \<bb>\<^sub>P\<^sub>L\<^sub>2 = \<ff> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> e \<aa>\<^sub>P\<^sub>L\<^sub>2
\<gg> : \<aa> \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
\<ff> : \<aa> \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>

goal (1 subgoal):
 1. \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>
[PROOF STEP]
by (cs_concl cs_intro: cat_parallel_cs_intros cat_small_cs_intros)
[PROOF STATE]
proof (state)
this:
\<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>

goal (10 subgoals):
 1. \<Z> \<alpha>
 2. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDom\<rparr> = dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)
 3. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTCod\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>
 4. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGDom\<rparr> = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L
 5. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGCod\<rparr> = \<CC>
 6. vsv (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>)
 7. \<D>\<^sub>\<circ> (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>) = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr>
 8. \<And>a. a \<in>\<^sub>\<circ> \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr> \<Longrightarrow> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>a\<rparr> : dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ObjMap\<rparr>\<lparr>a\<rparr> \<mapsto>\<^bsub>\<CC>\<^esub> \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ObjMap\<rparr>\<lparr>a\<rparr>
 9. \<And>a b f. f : a \<mapsto>\<^bsub>\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<^esub> b \<Longrightarrow> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>b\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ArrMap\<rparr>\<lparr>f\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ArrMap\<rparr>\<lparr>f\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>a\<rparr>
 10. E \<in>\<^sub>\<circ> \<CC>\<lparr>Obj\<rparr>
[PROOF STEP]
show
      "ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>i\<rparr> :
        cf_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E\<lparr>ObjMap\<rparr>\<lparr>i\<rparr> \<mapsto>\<^bsub>\<CC>\<^esub>
        \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ObjMap\<rparr>\<lparr>i\<rparr>"
      if "i \<in>\<^sub>\<circ> \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr>" for i
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>i\<rparr> : dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ObjMap\<rparr>\<lparr>i\<rparr> \<mapsto>\<^bsub>\<CC>\<^esub> \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ObjMap\<rparr>\<lparr>i\<rparr>
[PROOF STEP]
proof-
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>i\<rparr> : dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ObjMap\<rparr>\<lparr>i\<rparr> \<mapsto>\<^bsub>\<CC>\<^esub> \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ObjMap\<rparr>\<lparr>i\<rparr>
[PROOF STEP]
from that assms(1,2,5,6)
[PROOF STATE]
proof (chain)
picking this:
i \<in>\<^sub>\<circ> \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr>
e \<aa>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<aa>
e \<bb>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
\<gg> : \<aa> \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
\<ff> : \<aa> \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
i \<in>\<^sub>\<circ> \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr>
e \<aa>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<aa>
e \<bb>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
\<gg> : \<aa> \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
\<ff> : \<aa> \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>

goal (1 subgoal):
 1. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>i\<rparr> : dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ObjMap\<rparr>\<lparr>i\<rparr> \<mapsto>\<^bsub>\<CC>\<^esub> \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ObjMap\<rparr>\<lparr>i\<rparr>
[PROOF STEP]
by (elim the_cat_parallel_2_ObjE; simp only:)
          (
            cs_concl
              cs_simp: cat_lim_cs_simps cat_cs_simps cat_parallel_cs_simps
              cs_intro: cat_cs_intros cat_parallel_cs_intros
          )
[PROOF STATE]
proof (state)
this:
ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>i\<rparr> : dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ObjMap\<rparr>\<lparr>i\<rparr> \<mapsto>\<^bsub>\<CC>\<^esub> \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ObjMap\<rparr>\<lparr>i\<rparr>

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
?i \<in>\<^sub>\<circ> \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr> \<Longrightarrow> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>?i\<rparr> : dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ObjMap\<rparr>\<lparr>?i\<rparr> \<mapsto>\<^bsub>\<CC>\<^esub> \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ObjMap\<rparr>\<lparr>?i\<rparr>

goal (9 subgoals):
 1. \<Z> \<alpha>
 2. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDom\<rparr> = dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)
 3. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTCod\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>
 4. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGDom\<rparr> = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L
 5. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGCod\<rparr> = \<CC>
 6. vsv (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>)
 7. \<D>\<^sub>\<circ> (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>) = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr>
 8. \<And>a b f. f : a \<mapsto>\<^bsub>\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<^esub> b \<Longrightarrow> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>b\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ArrMap\<rparr>\<lparr>f\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ArrMap\<rparr>\<lparr>f\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>a\<rparr>
 9. E \<in>\<^sub>\<circ> \<CC>\<lparr>Obj\<rparr>
[PROOF STEP]
show
      "ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>b'\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub>
        cf_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E\<lparr>ArrMap\<rparr>\<lparr>f'\<rparr> =
          \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ArrMap\<rparr>\<lparr>f'\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub>
          ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>a'\<rparr>"
      if "f' : a' \<mapsto>\<^bsub>\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<^esub> b'" for a' b' f'
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>b'\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ArrMap\<rparr>\<lparr>f'\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ArrMap\<rparr>\<lparr>f'\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>a'\<rparr>
[PROOF STEP]
using that assms(1,2,5,6)
[PROOF STATE]
proof (prove)
using this:
f' : a' \<mapsto>\<^bsub>\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<^esub> b'
e \<aa>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<aa>
e \<bb>\<^sub>P\<^sub>L\<^sub>2 : E \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
\<gg> : \<aa> \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>
\<ff> : \<aa> \<mapsto>\<^bsub>\<CC>\<^esub> \<bb>

goal (1 subgoal):
 1. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>b'\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ArrMap\<rparr>\<lparr>f'\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ArrMap\<rparr>\<lparr>f'\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>a'\<rparr>
[PROOF STEP]
by (elim par.the_cat_parallel_2_is_arrE; simp only:)
        (
          cs_concl
            cs_simp:
              cat_cs_simps
              cat_lim_cs_simps
              cat_parallel_cs_simps
              assms(3,4)[symmetric]
            cs_intro: cat_parallel_cs_intros
        )+
[PROOF STATE]
proof (state)
this:
?f' : ?a' \<mapsto>\<^bsub>\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<^esub> ?b' \<Longrightarrow> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>?b'\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)\<lparr>ArrMap\<rparr>\<lparr>?f'\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>\<lparr>ArrMap\<rparr>\<lparr>?f'\<rparr> \<circ>\<^sub>A\<^bsub>\<CC>\<^esub> ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>\<lparr>?a'\<rparr>

goal (8 subgoals):
 1. \<Z> \<alpha>
 2. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDom\<rparr> = dghm_const (\<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L) \<CC> E (\<CC>\<lparr>CId\<rparr>\<lparr>E\<rparr>)
 3. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTCod\<rparr> = \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff>
 4. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGDom\<rparr> = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L
 5. ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTDGCod\<rparr> = \<CC>
 6. vsv (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>)
 7. \<D>\<^sub>\<circ> (ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e\<lparr>NTMap\<rparr>) = \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L\<lparr>Obj\<rparr>
 8. E \<in>\<^sub>\<circ> \<CC>\<lparr>Obj\<rparr>
[PROOF STEP]
qed
    (
      use assms(2) in
        \<open>
          cs_concl
            cs_intro: cat_lim_cs_intros cat_cs_intros
            cs_simp: cat_lim_cs_simps
        \<close>
    )+
[PROOF STATE]
proof (state)
this:
ntcf_equalizer_base \<CC> \<aa> \<bb> \<gg> \<ff> E e : E <\<^sub>C\<^sub>F\<^sub>.\<^sub>c\<^sub>o\<^sub>n\<^sub>e \<up>\<up>\<rightarrow>\<up>\<up>\<^sub>C\<^sub>F \<CC> \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<aa> \<bb> \<gg> \<ff> : \<up>\<up>\<^sub>C \<aa>\<^sub>P\<^sub>L\<^sub>2 \<bb>\<^sub>P\<^sub>L\<^sub>2 \<gg>\<^sub>P\<^sub>L \<ff>\<^sub>P\<^sub>L \<mapsto>\<mapsto>\<^sub>C\<^bsub>\<alpha>\<^esub> \<CC>

goal:
No subgoals!
[PROOF STEP]
qed