[STATEMENT]
lemma spr_trans_cec:
  assumes tC: "t \<in> SPR.jkbpC"
      and ec: "spr_simAbs ec = SPRdet.sim_equiv_class a t"
  shows "set (spr_trans (fst ec) (fst ec))
       = { (tFirst t', s) |t' s. t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t }" (is "?lhs = ?rhs")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. set (local.spr_trans (fst ec) (fst ec)) = rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. set (local.spr_trans (fst ec) (fst ec)) \<subseteq> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)
 2. rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t) \<subseteq> set (local.spr_trans (fst ec) (fst ec))
[PROOF STEP]
show "?lhs \<subseteq> ?rhs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. set (local.spr_trans (fst ec) (fst ec)) \<subseteq> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> set (local.spr_trans (fst ec) (fst ec)) \<Longrightarrow> x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)
[PROOF STEP]
fix x
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> set (local.spr_trans (fst ec) (fst ec)) \<Longrightarrow> x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)
[PROOF STEP]
assume x: "x \<in> ?lhs"
[PROOF STATE]
proof (state)
this:
x \<in> set (local.spr_trans (fst ec) (fst ec))

goal (1 subgoal):
 1. \<And>x. x \<in> set (local.spr_trans (fst ec) (fst ec)) \<Longrightarrow> x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)
[PROOF STEP]
with assms
[PROOF STATE]
proof (chain)
picking this:
t \<in> SPR.jkbpC
spr_simAbs ec = SPRdet.sim_equiv_class a t
x \<in> set (local.spr_trans (fst ec) (fst ec))
[PROOF STEP]
show "x \<in> ?rhs"
[PROOF STATE]
proof (prove)
using this:
t \<in> SPR.jkbpC
spr_simAbs ec = SPRdet.sim_equiv_class a t
x \<in> set (local.spr_trans (fst ec) (fst ec))

goal (1 subgoal):
 1. x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)
[PROOF STEP]
unfolding spr_trans_def
[PROOF STATE]
proof (prove)
using this:
t \<in> SPR.jkbpC
spr_simAbs ec = SPRdet.sim_equiv_class a t
x \<in> set (concat (map (\<lambda>(initialS, finalS). concat (map (\<lambda>eact. map (Pair initialS) (map (\<lambda>aact. envTrans eact aact finalS) (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (initialS, finalS)) (toList agents)))) (envAction finalS))) (toList (fst ec))))

goal (1 subgoal):
 1. x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)
[PROOF STEP]
apply (clarsimp simp del: split_paired_Ex split_paired_All simp add: toSet_def[symmetric] tObsC_abs_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xaa \<in> set (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t')) (toList agents)); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>t'a. tFirst t' = tFirst t'a \<and> t'a \<leadsto> envTrans xa xaa (tLast t') \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t
[PROOF STEP]
apply (rule_tac x=t' in exI)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xaa \<in> set (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t')) (toList agents)); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> tFirst t' = tFirst t' \<and> t' \<leadsto> envTrans xa xaa (tLast t') \<in> SPR.jkbpC \<and> tObsC t' = tObsC t
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xaa \<in> set (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t')) (toList agents)); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> t' \<leadsto> envTrans xa xaa (tLast t') \<in> SPR.jkbpC
[PROOF STEP]
apply (rule_tac n="Suc (tLength t')" in SPR.jkbpCn_jkbpC_inc)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xaa \<in> set (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t')) (toList agents)); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> t' \<leadsto> envTrans xa xaa (tLast t') \<in> SPR.jkbpCn (Suc (tLength t'))
[PROOF STEP]
apply (auto iff: Let_def simp del: split_paired_Ex split_paired_All)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xaa \<in> set (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t')) (toList agents)); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>eact aact. envTrans xa xaa (tLast t') = envTrans eact aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> eact \<in> set (envAction (tLast t')) \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (simp add: listToFuns_ext[OF agents[unfolded toSet_def]])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t') x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>eact aact. envTrans xa xaa (tLast t') = envTrans eact aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> eact \<in> set (envAction (tLast t')) \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (rule_tac x=xa in exI)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t') x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> xa \<in> set (envAction (tLast t')) \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t') x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (subst (asm) spr_simAction)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> ?t46 t' xa xaa \<in> SPR.jkbpC
 2. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t')) = SPRdet.sim_equiv_class xaaa (?t46 t' xa xaa)
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC (?t46 t' xa xaa) x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply assumption
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t')) = SPRdet.sim_equiv_class xaaa t'
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply rule
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t')) \<subseteq> SPRdet.sim_equiv_class xaaa t'
 2. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply clarsimp
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa xb. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xb \<in> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))\<rbrakk> \<Longrightarrow> xb \<in> SPRdet.sim_equiv_class xaaa t'
 2. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (clarsimp simp: spr_simAbs_def)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa s s'. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); (s, s') \<in> toSet (spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))\<rbrakk> \<Longrightarrow> \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<in> SPRdet.sim_equiv_class xaaa t'
 2. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (subst (asm) spr_knowledge)
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. \<And>t' xa xaa xaaa s s'. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> toSet (fst ec)
 2. \<And>t' xa xaa xaaa s s'. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); (s, s') \<in> relations (spr_repMC (toSet (fst ec))) xaaa `` {(tFirst t', tLast t')}\<rbrakk> \<Longrightarrow> \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<in> SPRdet.sim_equiv_class xaaa t'
 3. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 4. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (simp add: ec)
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. \<And>t' xa xaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> tObsC_abs t
 2. \<And>t' xa xaa xaaa s s'. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); (s, s') \<in> relations (spr_repMC (toSet (fst ec))) xaaa `` {(tFirst t', tLast t')}\<rbrakk> \<Longrightarrow> \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<in> SPRdet.sim_equiv_class xaaa t'
 3. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 4. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (erule tObsC_absI)
[PROOF STATE]
proof (prove)
goal (6 subgoals):
 1. \<And>t' xa xaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> tObsC t' = tObsC t
 2. \<And>t' xa xaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> tFirst t' = tFirst t'
 3. \<And>t' xa xaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> tLast t' = tLast t'
 4. \<And>t' xa xaa xaaa s s'. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); (s, s') \<in> relations (spr_repMC (toSet (fst ec))) xaaa `` {(tFirst t', tLast t')}\<rbrakk> \<Longrightarrow> \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<in> SPRdet.sim_equiv_class xaaa t'
 5. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 6. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply simp_all
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa s s'. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); ((tFirst t', tLast t'), s, s') \<in> local.spr_repRels xaaa \<and> (tFirst t', tLast t') \<in> toSet (fst ec) \<and> (s, s') \<in> toSet (fst ec)\<rbrakk> \<Longrightarrow> \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<in> SPRdet.sim_equiv_class xaaa t'
 2. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (clarsimp simp: spr_repRels_def tObsC_abs_conv ec)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa t'a t'b. \<lbrakk>x = (tFirst t'a, envTrans xa xaa (tLast t'a)); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'a)); envObs xaaa (tFirst t'a) = envObs xaaa (tFirst t'b); envObs xaaa (tLast t'a) = envObs xaaa (tLast t'b); t'a \<in> SPR.jkbpC; t'b \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'b = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> \<lparr>sprFst = tFirst t'b, sprLst = tLast t'b, sprCRel = tObsC_abs t\<rparr> \<in> SPRdet.sim_equiv_class xaaa t'
 2. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (rule_tac x=t'b in image_eqI)
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. \<And>t' xa xaa xaaa t'a t'b. \<lbrakk>x = (tFirst t'a, envTrans xa xaa (tLast t'a)); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'a)); envObs xaaa (tFirst t'a) = envObs xaaa (tFirst t'b); envObs xaaa (tLast t'a) = envObs xaaa (tLast t'b); t'a \<in> SPR.jkbpC; t'b \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'b = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> \<lparr>sprFst = tFirst t'b, sprLst = tLast t'b, sprCRel = tObsC_abs t\<rparr> = spr_sim t'b
 2. \<And>t' xa xaa xaaa t'a t'b. \<lbrakk>x = (tFirst t'a, envTrans xa xaa (tLast t'a)); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'a)); envObs xaaa (tFirst t'a) = envObs xaaa (tFirst t'b); envObs xaaa (tLast t'a) = envObs xaaa (tLast t'b); t'a \<in> SPR.jkbpC; t'b \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'b = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> t'b \<in> rel_ext (\<lambda>t'a. t'a \<in> SPR.jkbpC \<and> spr_jview xaaa t'a = spr_jview xaaa t')
 3. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 4. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (auto iff: spr_sim_def ec)[1]
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa t'a t'b. \<lbrakk>x = (tFirst t'a, envTrans xa xaa (tLast t'a)); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'a)); envObs xaaa (tFirst t'a) = envObs xaaa (tFirst t'b); envObs xaaa (tLast t'a) = envObs xaaa (tLast t'b); t'a \<in> SPR.jkbpC; t'b \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'b = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> t'b \<in> rel_ext (\<lambda>t'a. t'a \<in> SPR.jkbpC \<and> spr_jview xaaa t'a = spr_jview xaaa t')
 2. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply clarsimp
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa t'a t'b. \<lbrakk>x = (tFirst t'a, envTrans xa xaa (tLast t'a)); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'a)); envObs xaaa (tFirst t'a) = envObs xaaa (tFirst t'b); envObs xaaa (tLast t'a) = envObs xaaa (tLast t'b); t'a \<in> SPR.jkbpC; t'b \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'b = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> spr_jview xaaa t'b = spr_jview xaaa t'
 2. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (rule spr_jview_tObsCI[OF _ _ spr_jview_det_ps])
[PROOF STATE]
proof (prove)
goal (7 subgoals):
 1. \<And>t' xa xaa xaaa t'a t'b. \<lbrakk>x = (tFirst t'a, envTrans xa xaa (tLast t'a)); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'a)); envObs xaaa (tFirst t'a) = envObs xaaa (tFirst t'b); envObs xaaa (tLast t'a) = envObs xaaa (tLast t'b); t'a \<in> SPR.jkbpC; t'b \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'b = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> tObsC t'b = tObsC t'
 2. \<And>t' xa xaa xaaa t'a t'b. \<lbrakk>x = (tFirst t'a, envTrans xa xaa (tLast t'a)); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'a)); envObs xaaa (tFirst t'a) = envObs xaaa (tFirst t'b); envObs xaaa (tLast t'a) = envObs xaaa (tLast t'b); t'a \<in> SPR.jkbpC; t'b \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'b = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> envObs xaaa (tFirst t'b) = envObs xaaa (tFirst t')
 3. \<And>t' xa xaa xaaa t'a t'b. \<lbrakk>x = (tFirst t'a, envTrans xa xaa (tLast t'a)); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'a)); envObs xaaa (tFirst t'a) = envObs xaaa (tFirst t'b); envObs xaaa (tLast t'a) = envObs xaaa (tLast t'b); t'a \<in> SPR.jkbpC; t'b \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'b = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> {t'b, t'} \<subseteq> SPR.jkbpC
 4. \<And>t' xa xaa xaaa t'a t'b. \<lbrakk>x = (tFirst t'a, envTrans xa xaa (tLast t'a)); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'a)); envObs xaaa (tFirst t'a) = envObs xaaa (tFirst t'b); envObs xaaa (tLast t'a) = envObs xaaa (tLast t'b); t'a \<in> SPR.jkbpC; t'b \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'b = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> tObsC t'b = tObsC t'
 5. \<And>t' xa xaa xaaa t'a t'b. \<lbrakk>x = (tFirst t'a, envTrans xa xaa (tLast t'a)); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'a)); envObs xaaa (tFirst t'a) = envObs xaaa (tFirst t'b); envObs xaaa (tLast t'a) = envObs xaaa (tLast t'b); t'a \<in> SPR.jkbpC; t'b \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'b = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> envObs xaaa (tFirst t'b) = envObs xaaa (tFirst t')
 6. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 7. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply simp_all
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t'))\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xaaa t' \<subseteq> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (clarsimp simp: spr_simAbs_def)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> \<exists>s s'. spr_sim xc = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> (s, s') \<in> toSet (spr_knowledge envObs (fst ec) xaaa (tFirst t', tLast t'))
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (subst spr_knowledge)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa xc s' s. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> toSet (fst ec)
 2. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> \<exists>s s'. spr_sim xc = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> (s, s') \<in> relations (spr_repMC (toSet (fst ec))) xaaa `` {(tFirst t', tLast t')}
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (simp_all add: ec)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> tObsC_abs t
 2. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> \<exists>s s'. spr_sim xc = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> ((tFirst t', tLast t'), s, s') \<in> local.spr_repRels xaaa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (s, s') \<in> tObsC_abs t
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (erule tObsC_absI)
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> tObsC t' = tObsC t
 2. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> tFirst t' = tFirst t'
 3. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> tLast t' = tLast t'
 4. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> \<exists>s s'. spr_sim xc = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> ((tFirst t', tLast t'), s, s') \<in> local.spr_repRels xaaa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (s, s') \<in> tObsC_abs t
 5. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply simp_all
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> \<exists>s s'. spr_sim xc = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> ((tFirst t', tLast t'), s, s') \<in> local.spr_repRels xaaa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (s, s') \<in> tObsC_abs t
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (rule_tac x="tFirst xc" in exI)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> \<exists>s'. spr_sim xc = \<lparr>sprFst = tFirst xc, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> ((tFirst t', tLast t'), tFirst xc, s') \<in> local.spr_repRels xaaa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (tFirst xc, s') \<in> tObsC_abs t
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (rule_tac x="tLast xc" in exI)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> spr_sim xc = \<lparr>sprFst = tFirst xc, sprLst = tLast xc, sprCRel = tObsC_abs t\<rparr> \<and> ((tFirst t', tLast t'), tFirst xc, tLast xc) \<in> local.spr_repRels xaaa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (tFirst xc, tLast xc) \<in> tObsC_abs t
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (simp add: spr_sim_def)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> tObsC_abs xc = tObsC_abs t \<and> ((tFirst t', tLast t'), tFirst xc, tLast xc) \<in> local.spr_repRels xaaa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (tFirst xc, tLast xc) \<in> tObsC_abs t
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply rule
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> tObsC_abs xc = tObsC_abs t
 2. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> ((tFirst t', tLast t'), tFirst xc, tLast xc) \<in> local.spr_repRels xaaa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (tFirst xc, tLast xc) \<in> tObsC_abs t
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (drule tObsC_abs_jview_eq)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; tObsC_abs t' = tObsC_abs xc\<rbrakk> \<Longrightarrow> tObsC_abs xc = tObsC_abs t
 2. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> ((tFirst t', tLast t'), tFirst xc, tLast xc) \<in> local.spr_repRels xaaa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (tFirst xc, tLast xc) \<in> tObsC_abs t
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply auto[1]
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> ((tFirst t', tLast t'), tFirst xc, tLast xc) \<in> local.spr_repRels xaaa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (tFirst xc, tLast xc) \<in> tObsC_abs t
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (clarsimp simp: spr_repRels_def tObsC_abs_conv)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> envObs xaaa (tFirst t') = envObs xaaa (tFirst xc) \<and> envObs xaaa (tLast t') = envObs xaaa (tLast xc) \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xc = tFirst t' \<and> tLast xc = tLast t')
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply rule
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> envObs xaaa (tFirst t') = envObs xaaa (tFirst xc)
 2. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> envObs xaaa (tLast t') = envObs xaaa (tLast xc) \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xc = tFirst t' \<and> tLast xc = tLast t')
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (rule spr_tFirst)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> spr_jview xaaa t' = spr_jview xaaa xc
 2. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> envObs xaaa (tLast t') = envObs xaaa (tLast xc) \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xc = tFirst t' \<and> tLast xc = tLast t')
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> envObs xaaa (tLast t') = envObs xaaa (tLast xc) \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xc = tFirst t' \<and> tLast xc = tLast t')
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply rule
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> envObs xaaa (tLast t') = envObs xaaa (tLast xc)
 2. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xc = tFirst t' \<and> tLast xc = tLast t')
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (rule spr_tLast)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> spr_jview xaaa t' = spr_jview xaaa xc
 2. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xc = tFirst t' \<and> tLast xc = tLast t')
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xc = tFirst t' \<and> tLast xc = tLast t')
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply rule
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> \<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a
 2. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> \<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xc = tFirst t' \<and> tLast xc = tLast t'
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (rule_tac x=t' in exI)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst t' = tFirst t' \<and> tLast t' = tLast t'
 2. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> \<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xc = tFirst t' \<and> tLast xc = tLast t'
 3. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> \<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xc = tFirst t' \<and> tLast xc = tLast t'
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (rule_tac x=xc in exI)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> xc \<in> SPR.jkbpC \<and> tObsC xc = tObsC t \<and> tFirst xc = tFirst xc \<and> tLast xc = tLast xc
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; spr_jview xaaa xc = spr_jview xaaa t'\<rbrakk> \<Longrightarrow> tObsC xc = tObsC t
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (drule spr_jview_tObsC)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa xaaa xc. \<lbrakk>x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t; t \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); xa \<in> set (envAction (tLast t')); xc \<in> SPR.jkbpC; tObsC xc = tObsC t'\<rbrakk> \<Longrightarrow> tObsC xc = tObsC t
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a))
[PROOF STEP]
apply (subst SPR.jkbpC_jkbpCn_jAction_eq[symmetric])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>t' xa xaa aa aact. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> t' \<in> SPR.jkbpCn (tLength t')
 2. \<And>t' xa xaa. \<lbrakk>t \<in> SPR.jkbpC; xa \<in> set (envAction (tLast t')); \<forall>x. xaa x \<in> set (jAction SPR.MC t' x); x = (tFirst t', envTrans xa xaa (tLast t')); t' \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> \<exists>aact. envTrans xa xaa (tLast t') = envTrans xa aact (tLast t') \<and> t' \<in> SPR.jkbpCn (tLength t') \<and> (\<forall>a. aact a \<in> set (jAction SPR.MC t' a))
[PROOF STEP]
apply auto
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
set (local.spr_trans (fst ec) (fst ec)) \<subseteq> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)

goal (1 subgoal):
 1. rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t) \<subseteq> set (local.spr_trans (fst ec) (fst ec))
[PROOF STEP]
show "?rhs \<subseteq> ?lhs"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t) \<subseteq> set (local.spr_trans (fst ec) (fst ec))
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t) \<Longrightarrow> x \<in> set (local.spr_trans (fst ec) (fst ec))
[PROOF STEP]
fix x
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x. x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t) \<Longrightarrow> x \<in> set (local.spr_trans (fst ec) (fst ec))
[PROOF STEP]
assume x: "x \<in> ?rhs"
[PROOF STATE]
proof (state)
this:
x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)

goal (1 subgoal):
 1. \<And>x. x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t) \<Longrightarrow> x \<in> set (local.spr_trans (fst ec) (fst ec))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)
[PROOF STEP]
obtain t' s
      where x': "x = (tFirst t', s)"
        and t'sC: "t' \<leadsto> s \<in> SPR.jkbpC"
        and F: "tObsC t' = tObsC t"
[PROOF STATE]
proof (prove)
using this:
x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t)

goal (1 subgoal):
 1. (\<And>t' s. \<lbrakk>x = (tFirst t', s); t' \<leadsto> s \<in> SPR.jkbpC; tObsC t' = tObsC t\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
x = (tFirst t', s)
t' \<leadsto> s \<in> SPR.jkbpC
tObsC t' = tObsC t

goal (1 subgoal):
 1. \<And>x. x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t) \<Longrightarrow> x \<in> set (local.spr_trans (fst ec) (fst ec))
[PROOF STEP]
from t'sC
[PROOF STATE]
proof (chain)
picking this:
t' \<leadsto> s \<in> SPR.jkbpC
[PROOF STEP]
have t'Cn: "t' \<in> SPR.jkbpCn (tLength t')"
[PROOF STATE]
proof (prove)
using this:
t' \<leadsto> s \<in> SPR.jkbpC

goal (1 subgoal):
 1. t' \<in> SPR.jkbpCn (tLength t')
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
t' \<in> SPR.jkbpCn (tLength t')

goal (1 subgoal):
 1. \<And>x. x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t) \<Longrightarrow> x \<in> set (local.spr_trans (fst ec) (fst ec))
[PROOF STEP]
from t'sC
[PROOF STATE]
proof (chain)
picking this:
t' \<leadsto> s \<in> SPR.jkbpC
[PROOF STEP]
obtain eact aact
      where eact: "eact \<in> set (envAction (tLast t'))"
        and aact: "\<forall>a. aact a \<in> set (jAction (SPR.mkM (SPR.jkbpCn (tLength t'))) t' a)"
        and s: "s = envTrans eact aact (tLast t')"
[PROOF STATE]
proof (prove)
using this:
t' \<leadsto> s \<in> SPR.jkbpC

goal (1 subgoal):
 1. (\<And>eact aact. \<lbrakk>eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); s = envTrans eact aact (tLast t')\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
using SPR.jkbpC_tLength_inv[where t="t' \<leadsto> s" and n="Suc (tLength t')"]
[PROOF STATE]
proof (prove)
using this:
t' \<leadsto> s \<in> SPR.jkbpC
\<lbrakk>t' \<leadsto> s \<in> SPR.jkbpC; tLength (t' \<leadsto> s) = Suc (tLength t')\<rbrakk> \<Longrightarrow> t' \<leadsto> s \<in> SPR.jkbpCn (Suc (tLength t'))

goal (1 subgoal):
 1. (\<And>eact aact. \<lbrakk>eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); s = envTrans eact aact (tLast t')\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by (auto iff: Let_def)
[PROOF STATE]
proof (state)
this:
eact \<in> set (envAction (tLast t'))
\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)
s = envTrans eact aact (tLast t')

goal (1 subgoal):
 1. \<And>x. x \<in> rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t) \<Longrightarrow> x \<in> set (local.spr_trans (fst ec) (fst ec))
[PROOF STEP]
from tC t'sC ec F x' s eact aact
[PROOF STATE]
proof (chain)
picking this:
t \<in> SPR.jkbpC
t' \<leadsto> s \<in> SPR.jkbpC
spr_simAbs ec = SPRdet.sim_equiv_class a t
tObsC t' = tObsC t
x = (tFirst t', s)
s = envTrans eact aact (tLast t')
eact \<in> set (envAction (tLast t'))
\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)
[PROOF STEP]
show "x \<in> ?lhs"
[PROOF STATE]
proof (prove)
using this:
t \<in> SPR.jkbpC
t' \<leadsto> s \<in> SPR.jkbpC
spr_simAbs ec = SPRdet.sim_equiv_class a t
tObsC t' = tObsC t
x = (tFirst t', s)
s = envTrans eact aact (tLast t')
eact \<in> set (envAction (tLast t'))
\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)

goal (1 subgoal):
 1. x \<in> set (local.spr_trans (fst ec) (fst ec))
[PROOF STEP]
unfolding spr_trans_def
[PROOF STATE]
proof (prove)
using this:
t \<in> SPR.jkbpC
t' \<leadsto> s \<in> SPR.jkbpC
spr_simAbs ec = SPRdet.sim_equiv_class a t
tObsC t' = tObsC t
x = (tFirst t', s)
s = envTrans eact aact (tLast t')
eact \<in> set (envAction (tLast t'))
\<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)

goal (1 subgoal):
 1. x \<in> set (concat (map (\<lambda>(initialS, finalS). concat (map (\<lambda>eact. map (Pair initialS) (map (\<lambda>aact. envTrans eact aact finalS) (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (initialS, finalS)) (toList agents)))) (envAction finalS))) (toList (fst ec))))
[PROOF STEP]
apply (clarsimp simp del: split_paired_Ex split_paired_All simp: toSet_def[symmetric])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> \<exists>x\<in>tObsC_abs t. \<exists>uu_ uua_. (uua_, uu_) = x \<and> (\<exists>x\<in>set (envAction uu_). (tFirst t', envTrans eact aact (tLast t')) \<in> (\<lambda>xa. (uua_, envTrans x xa uu_)) ` set (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (uua_, uu_)) (toList agents)))
[PROOF STEP]
apply (rule bexI[where x="(tFirst t', tLast t')"])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> \<exists>uu_ uua_. (uua_, uu_) = (tFirst t', tLast t') \<and> (\<exists>x\<in>set (envAction uu_). (tFirst t', envTrans eact aact (tLast t')) \<in> (\<lambda>xa. (uua_, envTrans x xa uu_)) ` set (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (uua_, uu_)) (toList agents)))
 2. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> tObsC_abs t
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> \<exists>x\<in>set (envAction (tLast t')). (tFirst t', envTrans eact aact (tLast t')) \<in> (\<lambda>xa. (tFirst t', envTrans x xa (tLast t'))) ` set (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t')) (toList agents))
 2. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> tObsC_abs t
[PROOF STEP]
apply (rule bexI[where x="eact"])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> (tFirst t', envTrans eact aact (tLast t')) \<in> (\<lambda>x. (tFirst t', envTrans eact x (tLast t'))) ` set (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t')) (toList agents))
 2. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> eact \<in> set (envAction (tLast t'))
 3. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> tObsC_abs t
[PROOF STEP]
apply (rule_tac x="aact" in image_eqI)
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> (tFirst t', envTrans eact aact (tLast t')) = (tFirst t', envTrans eact aact (tLast t'))
 2. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> aact \<in> set (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t')) (toList agents))
 3. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> eact \<in> set (envAction (tLast t'))
 4. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> tObsC_abs t
[PROOF STEP]
apply simp_all
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> aact \<in> set (listToFuns (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t')) (toList agents))
 2. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> tObsC_abs t
[PROOF STEP]
apply (simp add: listToFuns_ext[OF agents[unfolded toSet_def]])
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> \<forall>x. aact x \<in> set (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t') x)
 2. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> tObsC_abs t
[PROOF STEP]
defer
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> tObsC_abs t
 2. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> \<forall>x. aact x \<in> set (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t') x)
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> \<forall>x. aact x \<in> set (spr_jAction jkbp envVal envObs (fst ec) (tFirst t', tLast t') x)
[PROOF STEP]
apply (subst spr_simAction[where t=t'])
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> t' \<in> SPR.jkbpC
 2. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xa (tFirst t', tLast t')) = SPRdet.sim_equiv_class xa t'
 3. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> \<forall>x. aact x \<in> set (jAction SPR.MC t' x)
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xa (tFirst t', tLast t')) = SPRdet.sim_equiv_class xa t'
 2. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> \<forall>x. aact x \<in> set (jAction SPR.MC t' x)
[PROOF STEP]
defer
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> \<forall>x. aact x \<in> set (jAction SPR.MC t' x)
 2. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xa (tFirst t', tLast t')) = SPRdet.sim_equiv_class xa t'
[PROOF STEP]
apply (auto iff: SPR.jkbpC_jkbpCn_jAction_eq[OF t'Cn])[1]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; spr_simAbs ec = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> spr_simAbs (fst ec, spr_knowledge envObs (fst ec) xa (tFirst t', tLast t')) = SPRdet.sim_equiv_class xa t'
[PROOF STEP]
apply (clarsimp simp: spr_simAbs_def)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> (s, s') \<in> toSet (spr_knowledge envObs (fst ec) xa (tFirst t', tLast t'))) = SPRdet.sim_equiv_class xa t'
[PROOF STEP]
apply (subst spr_knowledge)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>xa s' sa _. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> toSet (fst ec)
 2. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> (s, s') \<in> relations (spr_repMC (toSet (fst ec))) xa `` {(tFirst t', tLast t')}) = SPRdet.sim_equiv_class xa t'
[PROOF STEP]
apply (simp_all add: ec)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> (tFirst t', tLast t') \<in> tObsC_abs t
 2. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> ((tFirst t', tLast t'), s, s') \<in> local.spr_repRels xa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (s, s') \<in> tObsC_abs t) = SPRdet.sim_equiv_class xa t'
[PROOF STEP]
apply (rule tObsC_absI[where t=t and t'=t'])
[PROOF STATE]
proof (prove)
goal (5 subgoals):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> t' \<in> SPR.jkbpC
 2. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> tObsC t' = tObsC t
 3. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> tFirst t' = tFirst t'
 4. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> tLast t' = tLast t'
 5. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> ((tFirst t', tLast t'), s, s') \<in> local.spr_repRels xa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (s, s') \<in> tObsC_abs t) = SPRdet.sim_equiv_class xa t'
[PROOF STEP]
apply simp_all
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> t' \<in> SPR.jkbpC
 2. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> ((tFirst t', tLast t'), s, s') \<in> local.spr_repRels xa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (s, s') \<in> tObsC_abs t) = SPRdet.sim_equiv_class xa t'
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> ((tFirst t', tLast t'), s, s') \<in> local.spr_repRels xa \<and> (tFirst t', tLast t') \<in> tObsC_abs t \<and> (s, s') \<in> tObsC_abs t) = SPRdet.sim_equiv_class xa t'
[PROOF STEP]
apply (clarsimp simp: spr_repRels_def tObsC_abs_conv)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> envObs xa (tFirst t') = envObs xa s \<and> envObs xa (tLast t') = envObs xa s' \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> s = tFirst t' \<and> s' = tLast t')) = SPRdet.sim_equiv_class xa t'
[PROOF STEP]
apply rule
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> envObs xa (tFirst t') = envObs xa s \<and> envObs xa (tLast t') = envObs xa s' \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> s = tFirst t' \<and> s' = tLast t')) \<subseteq> SPRdet.sim_equiv_class xa t'
 2. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xa t' \<subseteq> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> envObs xa (tFirst t') = envObs xa s \<and> envObs xa (tLast t') = envObs xa s' \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> s = tFirst t' \<and> s' = tLast t'))
[PROOF STEP]
apply clarsimp
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>xa t'a t'aa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t'a) \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t'a, envTrans eact aact (tLast t'a)); s = envTrans eact aact (tLast t'a); eact \<in> set (envAction (tLast t'a)); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); envObs xa (tFirst t'a) = envObs xa (tFirst t'aa); envObs xa (tLast t'a) = envObs xa (tLast t'aa); t'a \<in> SPR.jkbpC; t'aa \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'aa = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> \<lparr>sprFst = tFirst t'aa, sprLst = tLast t'aa, sprCRel = tObsC_abs t\<rparr> \<in> SPRdet.sim_equiv_class xa t'
 2. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xa t' \<subseteq> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> envObs xa (tFirst t') = envObs xa s \<and> envObs xa (tLast t') = envObs xa s' \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> s = tFirst t' \<and> s' = tLast t'))
[PROOF STEP]
apply (rule_tac x=t'aa in image_eqI)
[PROOF STATE]
proof (prove)
goal (3 subgoals):
 1. \<And>xa t'a t'aa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t'a) \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t'a, envTrans eact aact (tLast t'a)); s = envTrans eact aact (tLast t'a); eact \<in> set (envAction (tLast t'a)); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); envObs xa (tFirst t'a) = envObs xa (tFirst t'aa); envObs xa (tLast t'a) = envObs xa (tLast t'aa); t'a \<in> SPR.jkbpC; t'aa \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'aa = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> \<lparr>sprFst = tFirst t'aa, sprLst = tLast t'aa, sprCRel = tObsC_abs t\<rparr> = spr_sim t'aa
 2. \<And>xa t'a t'aa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t'a) \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t'a, envTrans eact aact (tLast t'a)); s = envTrans eact aact (tLast t'a); eact \<in> set (envAction (tLast t'a)); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); envObs xa (tFirst t'a) = envObs xa (tFirst t'aa); envObs xa (tLast t'a) = envObs xa (tLast t'aa); t'a \<in> SPR.jkbpC; t'aa \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'aa = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> t'aa \<in> rel_ext (\<lambda>t'a. t'a \<in> SPR.jkbpC \<and> spr_jview xa t'a = spr_jview xa t')
 3. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xa t' \<subseteq> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> envObs xa (tFirst t') = envObs xa s \<and> envObs xa (tLast t') = envObs xa s' \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> s = tFirst t' \<and> s' = tLast t'))
[PROOF STEP]
apply (auto iff: spr_sim_def [abs_def])[1]
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>xa t'a t'aa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t'a) \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t'a, envTrans eact aact (tLast t'a)); s = envTrans eact aact (tLast t'a); eact \<in> set (envAction (tLast t'a)); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); envObs xa (tFirst t'a) = envObs xa (tFirst t'aa); envObs xa (tLast t'a) = envObs xa (tLast t'aa); t'a \<in> SPR.jkbpC; t'aa \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'aa = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> t'aa \<in> rel_ext (\<lambda>t'a. t'a \<in> SPR.jkbpC \<and> spr_jview xa t'a = spr_jview xa t')
 2. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xa t' \<subseteq> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> envObs xa (tFirst t') = envObs xa s \<and> envObs xa (tLast t') = envObs xa s' \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> s = tFirst t' \<and> s' = tLast t'))
[PROOF STEP]
apply simp
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>xa t'a t'aa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t'a) \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t'a, envTrans eact aact (tLast t'a)); s = envTrans eact aact (tLast t'a); eact \<in> set (envAction (tLast t'a)); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); envObs xa (tFirst t'a) = envObs xa (tFirst t'aa); envObs xa (tLast t'a) = envObs xa (tLast t'aa); t'a \<in> SPR.jkbpC; t'aa \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'aa = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> spr_jview xa t'aa = spr_jview xa t'
 2. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xa t' \<subseteq> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> envObs xa (tFirst t') = envObs xa s \<and> envObs xa (tLast t') = envObs xa s' \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> s = tFirst t' \<and> s' = tLast t'))
[PROOF STEP]
apply (rule spr_jview_tObsCI[OF _ _ spr_jview_det_ps])
[PROOF STATE]
proof (prove)
goal (6 subgoals):
 1. \<And>xa t'a t'aa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t'a) \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t'a, envTrans eact aact (tLast t'a)); s = envTrans eact aact (tLast t'a); eact \<in> set (envAction (tLast t'a)); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); envObs xa (tFirst t'a) = envObs xa (tFirst t'aa); envObs xa (tLast t'a) = envObs xa (tLast t'aa); t'a \<in> SPR.jkbpC; t'aa \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'aa = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> tObsC t'aa = tObsC t'
 2. \<And>xa t'a t'aa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t'a) \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t'a, envTrans eact aact (tLast t'a)); s = envTrans eact aact (tLast t'a); eact \<in> set (envAction (tLast t'a)); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); envObs xa (tFirst t'a) = envObs xa (tFirst t'aa); envObs xa (tLast t'a) = envObs xa (tLast t'aa); t'a \<in> SPR.jkbpC; t'aa \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'aa = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> envObs xa (tFirst t'aa) = envObs xa (tFirst t')
 3. \<And>xa t'a t'aa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t'a) \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t'a, envTrans eact aact (tLast t'a)); s = envTrans eact aact (tLast t'a); eact \<in> set (envAction (tLast t'a)); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); envObs xa (tFirst t'a) = envObs xa (tFirst t'aa); envObs xa (tLast t'a) = envObs xa (tLast t'aa); t'a \<in> SPR.jkbpC; t'aa \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'aa = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> {t'aa, t'} \<subseteq> SPR.jkbpC
 4. \<And>xa t'a t'aa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t'a) \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t'a, envTrans eact aact (tLast t'a)); s = envTrans eact aact (tLast t'a); eact \<in> set (envAction (tLast t'a)); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); envObs xa (tFirst t'a) = envObs xa (tFirst t'aa); envObs xa (tLast t'a) = envObs xa (tLast t'aa); t'a \<in> SPR.jkbpC; t'aa \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'aa = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> tObsC t'aa = tObsC t'
 5. \<And>xa t'a t'aa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t'a) \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t'a, envTrans eact aact (tLast t'a)); s = envTrans eact aact (tLast t'a); eact \<in> set (envAction (tLast t'a)); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); envObs xa (tFirst t'a) = envObs xa (tFirst t'aa); envObs xa (tLast t'a) = envObs xa (tLast t'aa); t'a \<in> SPR.jkbpC; t'aa \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'aa = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> envObs xa (tFirst t'aa) = envObs xa (tFirst t')
 6. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xa t' \<subseteq> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> envObs xa (tFirst t') = envObs xa s \<and> envObs xa (tLast t') = envObs xa s' \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> s = tFirst t' \<and> s' = tLast t'))
[PROOF STEP]
apply simp_all
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>xa t'a t'aa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t'a) \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t'a, envTrans eact aact (tLast t'a)); s = envTrans eact aact (tLast t'a); eact \<in> set (envAction (tLast t'a)); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); envObs xa (tFirst t'a) = envObs xa (tFirst t'aa); envObs xa (tLast t'a) = envObs xa (tLast t'aa); t'a \<in> SPR.jkbpC; t'aa \<in> SPR.jkbpC; tObsC t'a = tObsC t; tObsC t'aa = tObsC t; tFirst t' = tFirst t'a; tLast t' = tLast t'a\<rbrakk> \<Longrightarrow> t' \<in> SPR.jkbpC
 2. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xa t' \<subseteq> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> envObs xa (tFirst t') = envObs xa s \<and> envObs xa (tLast t') = envObs xa s' \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> s = tFirst t' \<and> s' = tLast t'))
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>xa. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = SPRdet.sim_equiv_class a t; tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a)\<rbrakk> \<Longrightarrow> SPRdet.sim_equiv_class xa t' \<subseteq> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = tObsC_abs t\<rparr> \<and> envObs xa (tFirst t') = envObs xa s \<and> envObs xa (tLast t') = envObs xa s' \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> s = tFirst t' \<and> s' = tLast t'))
[PROOF STEP]
apply (clarsimp simp: spr_sim_def [abs_def])
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> tObsC_abs xb = tObsC_abs t \<and> envObs xa (tFirst t') = envObs xa (tFirst xb) \<and> envObs xa (tLast t') = envObs xa (tLast xb) \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xb = tFirst t' \<and> tLast xb = tLast t')
[PROOF STEP]
apply (rule conjI)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> tObsC_abs xb = tObsC_abs t
 2. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> envObs xa (tFirst t') = envObs xa (tFirst xb) \<and> envObs xa (tLast t') = envObs xa (tLast xb) \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xb = tFirst t' \<and> tLast xb = tLast t')
[PROOF STEP]
apply (auto dest!: tObsC_abs_jview_eq intro: spr_tFirst spr_tLast)[1]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> envObs xa (tFirst t') = envObs xa (tFirst xb) \<and> envObs xa (tLast t') = envObs xa (tLast xb) \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xb = tFirst t' \<and> tLast xb = tLast t')
[PROOF STEP]
apply (rule conjI)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> envObs xa (tFirst t') = envObs xa (tFirst xb)
 2. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> envObs xa (tLast t') = envObs xa (tLast xb) \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xb = tFirst t' \<and> tLast xb = tLast t')
[PROOF STEP]
apply (auto intro: spr_tFirst)[1]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> envObs xa (tLast t') = envObs xa (tLast xb) \<and> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xb = tFirst t' \<and> tLast xb = tLast t')
[PROOF STEP]
apply (rule conjI)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> envObs xa (tLast t') = envObs xa (tLast xb)
 2. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xb = tFirst t' \<and> tLast xb = tLast t')
[PROOF STEP]
apply (auto intro: spr_tLast)[1]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> (\<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a) \<and> (\<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xb = tFirst t' \<and> tLast xb = tLast t')
[PROOF STEP]
apply (rule conjI)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> \<exists>t'a. t'a \<in> SPR.jkbpC \<and> tObsC t'a = tObsC t \<and> tFirst t' = tFirst t'a \<and> tLast t' = tLast t'a
 2. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> \<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xb = tFirst t' \<and> tLast xb = tLast t'
[PROOF STEP]
apply (auto intro: spr_tLast)[1]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> \<exists>t'. t' \<in> SPR.jkbpC \<and> tObsC t' = tObsC t \<and> tFirst xb = tFirst t' \<and> tLast xb = tLast t'
[PROOF STEP]
apply (rule_tac x=xb in exI)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>xa xb. \<lbrakk>t \<in> SPR.jkbpC; t' \<leadsto> envTrans eact aact (tLast t') \<in> SPR.jkbpC; (case ec of (cec, aec) \<Rightarrow> rel_ext (\<lambda>uu_. \<exists>s s'. uu_ = \<lparr>sprFst = s, sprLst = s', sprCRel = toSet cec\<rparr> \<and> (s, s') \<in> toSet aec)) = (\<lambda>x. \<lparr>sprFst = tFirst x, sprLst = tLast x, sprCRel = tObsC_abs x\<rparr>) ` rel_ext (\<lambda>t'. t' \<in> SPR.jkbpC \<and> spr_jview a t' = spr_jview a t); tObsC t' = tObsC t; x = (tFirst t', envTrans eact aact (tLast t')); s = envTrans eact aact (tLast t'); eact \<in> set (envAction (tLast t')); \<forall>a. aact a \<in> set (jAction (SPR.MCn (tLength t')) t' a); xb \<in> SPR.jkbpC; spr_jview xa xb = spr_jview xa t'\<rbrakk> \<Longrightarrow> xb \<in> SPR.jkbpC \<and> tObsC xb = tObsC t \<and> tFirst xb = tFirst xb \<and> tLast xb = tLast xb
[PROOF STEP]
apply (auto dest: spr_jview_tObsC intro: spr_jview_tObsC_trans)[1]
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done
[PROOF STATE]
proof (state)
this:
x \<in> set (local.spr_trans (fst ec) (fst ec))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
rel_ext (\<lambda>uu_. \<exists>t' s. uu_ = (tFirst t', s) \<and> t' \<leadsto> s \<in> SPR.jkbpC \<and> tObsC t' = tObsC t) \<subseteq> set (local.spr_trans (fst ec) (fst ec))

goal:
No subgoals!
[PROOF STEP]
qed