[STATEMENT]
lemma expand_until_propag:
  fixes n_ns :: "_ \<times> 'a node set"
  assumes "until_propag__assm \<mu> \<eta> n_ns
           \<and> until_propag__rslt \<mu> \<eta> (snd n_ns)
           \<and> expand_assm_incoming n_ns
           \<and> expand_name_ident (snd n_ns)" (is "?Q n_ns")
  shows "expand n_ns \<le> SPEC (\<lambda>r. until_propag__rslt \<mu> \<eta> (snd r))"
    (is "_ \<le> SPEC ?P")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. expand n_ns \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
using assms
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)

goal (1 subgoal):
 1. expand n_ns \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
proof (rule_tac expand_rec_rule[where \<Phi>="?Q"], simp, intro refine_vcg, goal_cases)
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<exists>n'\<in>b. old n' = old a \<and> next n' = next a\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name a, upd_incoming a b). \<forall>nd\<in>snd (name a, upd_incoming a b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<not> (\<exists>n'\<in>b. old n' = old a \<and> next n' = next a)\<rbrakk> \<Longrightarrow> f (\<lparr>name = expand_new_name (name a), incoming = {name a}, new = next a, old = {}, next = {}\<rparr>, {a} \<union> b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 7. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 8. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
case prems: (1 f x n ns)
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n

goal (8 subgoals):
 1. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<exists>n'\<in>b. old n' = old a \<and> next n' = next a\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name a, upd_incoming a b). \<forall>nd\<in>snd (name a, upd_incoming a b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<not> (\<exists>n'\<in>b. old n' = old a \<and> next n' = next a)\<rbrakk> \<Longrightarrow> f (\<lparr>name = expand_new_name (name a), incoming = {name a}, new = next a, old = {}, next = {}\<rparr>, {a} \<union> b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 7. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 8. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n

goal (1 subgoal):
 1. \<forall>na\<in>snd (name n, upd_incoming n ns). \<forall>nd\<in>snd (name n, upd_incoming n ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
proof (simp, rule_tac upd_incoming__ident, goal_cases)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
case prems': 1
[PROOF STATE]
proof (state)
this:
(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns)))
f ?x \<le> expand ?x
(\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<or> \<eta> \<in> new (fst ?x) \<or> (\<mu> \<in> old (fst ?x) \<or> \<mu> \<in> new (fst ?x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
(\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns
(\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns)))
f ?x \<le> expand ?x
(\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<or> \<eta> \<in> new (fst ?x) \<or> (\<mu> \<in> old (fst ?x) \<or> \<mu> \<in> new (fst ?x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
(\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns
(\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
fix nd :: "'a node" and nd' :: "'a node"
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
let ?U_prop = "\<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming nd'
                           \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'"
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
assume "nd\<in>ns" and nd'_elem: "nd'\<in>upd_incoming n ns"
[PROOF STATE]
proof (state)
this:
nd \<in> ns
nd' \<in> upd_incoming n ns

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
nd \<in> ns
nd' \<in> upd_incoming n ns

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
assume "nd'\<in>ns"
[PROOF STATE]
proof (state)
this:
nd' \<in> ns

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
with prems'
[PROOF STATE]
proof (chain)
picking this:
(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns)))
f ?x \<le> expand ?x
(\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<or> \<eta> \<in> new (fst ?x) \<or> (\<mu> \<in> old (fst ?x) \<or> \<mu> \<in> new (fst ?x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
(\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns
(\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
nd' \<in> ns
[PROOF STEP]
have ?U_prop
[PROOF STATE]
proof (prove)
using this:
(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns)))
f ?x \<le> expand ?x
(\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<or> \<eta> \<in> new (fst ?x) \<or> (\<mu> \<in> old (fst ?x) \<or> \<mu> \<in> new (fst ?x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
(\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns
(\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
nd' \<in> ns

goal (1 subgoal):
 1. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming nd' \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
[PROOF STEP]
using \<open>nd\<in>ns\<close>
[PROOF STATE]
proof (prove)
using this:
(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns)))
f ?x \<le> expand ?x
(\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<or> \<eta> \<in> new (fst ?x) \<or> (\<mu> \<in> old (fst ?x) \<or> \<mu> \<in> new (fst ?x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
(\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns
(\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
nd' \<in> ns
nd \<in> ns

goal (1 subgoal):
 1. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming nd' \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming nd' \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
nd' \<in> ns \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming nd' \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
nd' \<in> ns \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming nd' \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
nd' \<in> ns \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming nd' \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
assume "nd'\<notin>ns" and
        U_in_nd: "\<mu> U\<^sub>r \<eta> \<in> old nd" and "name nd \<in>incoming nd'"
[PROOF STATE]
proof (state)
this:
nd' \<notin> ns
\<mu> U\<^sub>r \<eta> \<in> old nd
name nd \<in> incoming nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
with upd_incoming__elem[of nd' n ns] nd'_elem
[PROOF STATE]
proof (chain)
picking this:
nd' \<in> upd_incoming n ns \<Longrightarrow> nd' \<in> ns \<or> (\<exists>nd'a\<in>ns. nd' = nd'a\<lparr>incoming := incoming n \<union> incoming nd'a\<rparr> \<and> old nd'a = old n \<and> next nd'a = next n)
nd' \<in> upd_incoming n ns
nd' \<notin> ns
\<mu> U\<^sub>r \<eta> \<in> old nd
name nd \<in> incoming nd'
[PROOF STEP]
obtain nd'' where "nd''\<in>ns"
          and nd'_eq: "nd' = nd''\<lparr>incoming := incoming n \<union> incoming nd''\<rparr>"
          and old_eq: "old nd'' = old n"
[PROOF STATE]
proof (prove)
using this:
nd' \<in> upd_incoming n ns \<Longrightarrow> nd' \<in> ns \<or> (\<exists>nd'a\<in>ns. nd' = nd'a\<lparr>incoming := incoming n \<union> incoming nd'a\<rparr> \<and> old nd'a = old n \<and> next nd'a = next n)
nd' \<in> upd_incoming n ns
nd' \<notin> ns
\<mu> U\<^sub>r \<eta> \<in> old nd
name nd \<in> incoming nd'

goal (1 subgoal):
 1. (\<And>nd''. \<lbrakk>nd'' \<in> ns; nd' = nd''\<lparr>incoming := incoming n \<union> incoming nd''\<rparr>; old nd'' = old n\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
nd'' \<in> ns
nd' = nd''\<lparr>incoming := incoming n \<union> incoming nd''\<rparr>
old nd'' = old n

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
nd'' \<in> ns
nd' = nd''\<lparr>incoming := incoming n \<union> incoming nd''\<rparr>
old nd'' = old n

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
assume "name nd \<in> incoming n"
[PROOF STATE]
proof (state)
this:
name nd \<in> incoming n

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
with prems' U_in_nd \<open>nd\<in>ns\<close>
[PROOF STATE]
proof (chain)
picking this:
(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns)))
f ?x \<le> expand ?x
(\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<or> \<eta> \<in> new (fst ?x) \<or> (\<mu> \<in> old (fst ?x) \<or> \<mu> \<in> new (fst ?x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
(\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns
(\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
\<mu> U\<^sub>r \<eta> \<in> old nd
nd \<in> ns
name nd \<in> incoming n
[PROOF STEP]
have "\<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n"
[PROOF STATE]
proof (prove)
using this:
(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns)))
f ?x \<le> expand ?x
(\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<or> \<eta> \<in> new (fst ?x) \<or> (\<mu> \<in> old (fst ?x) \<or> \<mu> \<in> new (fst ?x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
(\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns
(\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
\<mu> U\<^sub>r \<eta> \<in> old nd
nd \<in> ns
name nd \<in> incoming n

goal (1 subgoal):
 1. \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n
[PROOF STEP]
have "\<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'"
[PROOF STATE]
proof (prove)
using this:
\<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n

goal (1 subgoal):
 1. \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
[PROOF STEP]
using nd'_eq old_eq
[PROOF STATE]
proof (prove)
using this:
\<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n
nd' = nd''\<lparr>incoming := incoming n \<union> incoming nd''\<rparr>
old nd'' = old n

goal (1 subgoal):
 1. \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
name nd \<in> incoming n \<Longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
name nd \<in> incoming n \<Longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
name nd \<in> incoming n \<Longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
assume "name nd \<notin> incoming n"
[PROOF STATE]
proof (state)
this:
name nd \<notin> incoming n

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
name nd \<notin> incoming n
[PROOF STEP]
have "name nd \<in> incoming nd''"
[PROOF STATE]
proof (prove)
using this:
name nd \<notin> incoming n

goal (1 subgoal):
 1. name nd \<in> incoming nd''
[PROOF STEP]
using \<open>name nd \<in>incoming nd'\<close> nd'_eq
[PROOF STATE]
proof (prove)
using this:
name nd \<notin> incoming n
name nd \<in> incoming nd'
nd' = nd''\<lparr>incoming := incoming n \<union> incoming nd''\<rparr>

goal (1 subgoal):
 1. name nd \<in> incoming nd''
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
name nd \<in> incoming nd''

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
name nd \<in> incoming nd''
[PROOF STEP]
have "\<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'"
[PROOF STATE]
proof (prove)
using this:
name nd \<in> incoming nd''

goal (1 subgoal):
 1. \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
[PROOF STEP]
unfolding nd'_eq
[PROOF STATE]
proof (prove)
using this:
name nd \<in> incoming nd''

goal (1 subgoal):
 1. \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (nd''\<lparr>incoming := incoming n \<union> incoming nd''\<rparr>)
[PROOF STEP]
using prems' \<open>nd\<in>ns\<close> \<open>nd''\<in>ns\<close> U_in_nd
[PROOF STATE]
proof (prove)
using this:
name nd \<in> incoming nd''
(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns)))
f ?x \<le> expand ?x
(\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<or> \<eta> \<in> new (fst ?x) \<or> (\<mu> \<in> old (fst ?x) \<or> \<mu> \<in> new (fst ?x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
(\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns
(\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
nd \<in> ns
nd'' \<in> ns
\<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (nd''\<lparr>incoming := incoming n \<union> incoming nd''\<rparr>)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
name nd \<notin> incoming n \<Longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
name nd \<in> incoming n \<Longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
name nd \<notin> incoming n \<Longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
[PROOF STEP]
have "\<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'"
[PROOF STATE]
proof (prove)
using this:
name nd \<in> incoming n \<Longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
name nd \<notin> incoming n \<Longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (1 subgoal):
 1. \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
[PROOF STEP]
by fast
[PROOF STATE]
proof (state)
this:
\<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<lbrakk>nd' \<notin> ns; \<mu> U\<^sub>r \<eta> \<in> old nd; name nd \<in> incoming nd'\<rbrakk> \<Longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
nd' \<in> ns \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming nd' \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
\<lbrakk>nd' \<notin> ns; \<mu> U\<^sub>r \<eta> \<in> old nd; name nd \<in> incoming nd'\<rbrakk> \<Longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
[PROOF STEP]
have ?U_prop
[PROOF STATE]
proof (prove)
using this:
nd' \<in> ns \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming nd' \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
\<lbrakk>nd' \<notin> ns; \<mu> U\<^sub>r \<eta> \<in> old nd; name nd \<in> incoming nd'\<rbrakk> \<Longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (1 subgoal):
 1. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming nd' \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming nd' \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old nd'

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<lbrakk>?nd2 \<in> ns; ?nd'2 \<in> upd_incoming n ns\<rbrakk> \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old ?nd2 \<and> name ?nd2 \<in> incoming ?nd'2 \<longrightarrow> \<eta> \<in> old ?nd2 \<or> \<mu> \<in> old ?nd2 \<and> \<mu> U\<^sub>r \<eta> \<in> old ?nd'2

goal (2 subgoals):
 1. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n\<rbrakk> \<Longrightarrow> \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<lbrakk>?nd2 \<in> ns; ?nd'2 \<in> upd_incoming n ns\<rbrakk> \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old ?nd2 \<and> name ?nd2 \<in> incoming ?nd'2 \<longrightarrow> \<eta> \<in> old ?nd2 \<or> \<mu> \<in> old ?nd2 \<and> \<mu> U\<^sub>r \<eta> \<in> old ?nd'2
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>?nd2 \<in> ns; ?nd'2 \<in> upd_incoming n ns\<rbrakk> \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old ?nd2 \<and> name ?nd2 \<in> incoming ?nd'2 \<longrightarrow> \<eta> \<in> old ?nd2 \<or> \<mu> \<in> old ?nd2 \<and> \<mu> U\<^sub>r \<eta> \<in> old ?nd'2

goal (1 subgoal):
 1. \<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<forall>na\<in>ns. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
case 2
[PROOF STATE]
proof (state)
this:
(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns)))
f ?x \<le> expand ?x
(\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<or> \<eta> \<in> new (fst ?x) \<or> (\<mu> \<in> old (fst ?x) \<or> \<mu> \<in> new (fst ?x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
(\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns
(\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
n_ \<in> ns
\<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old n_ \<and> name n_ \<in> incoming nd \<longrightarrow> \<eta> \<in> old n_ \<or> \<mu> \<in> old n_ \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. \<And>na v. \<lbrakk>(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns))); \<And>x. f x \<le> expand x; \<And>x. (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<or> \<eta> \<in> new (fst x) \<or> (\<mu> \<in> old (fst x) \<or> \<mu> \<in> new (fst x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); (\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns; (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (n, ns); new n = {}; \<exists>n'\<in>ns. old n' = old n \<and> next n' = next n; na \<in> ns; \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> name (na\<lparr>incoming := v\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (na\<lparr>incoming := v\<rparr>) \<or> \<mu> \<in> old (na\<lparr>incoming := v\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns)))
f ?x \<le> expand ?x
(\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<or> \<eta> \<in> new (fst ?x) \<or> (\<mu> \<in> old (fst ?x) \<or> \<mu> \<in> new (fst ?x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
(\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns
(\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
n_ \<in> ns
\<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old n_ \<and> name n_ \<in> incoming nd \<longrightarrow> \<eta> \<in> old n_ \<or> \<mu> \<in> old n_ \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<or> \<eta> \<in> new (fst n_ns) \<or> (\<mu> \<in> old (fst n_ns) \<or> \<mu> \<in> new (fst n_ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst n_ns)))
f ?x \<le> expand ?x
(\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<or> \<eta> \<in> new (fst ?x) \<or> (\<mu> \<in> old (fst ?x) \<or> \<mu> \<in> new (fst ?x)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> (\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<or> \<mu> U\<^sub>r \<eta> \<in> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
(\<mu> U\<^sub>r \<eta> \<in> old n \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> next n) \<and> (\<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming n \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old n) \<and> (\<forall>n\<in>ns. \<forall>nd\<in>ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming n. nm < name n) \<and> 0 < name n \<and> (\<forall>q\<in>ns. name q < name n \<and> (\<forall>nm\<in>incoming q. nm < name n)) \<and> expand_name_ident ns
(\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> (\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n
n_ \<in> ns
\<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old n_ \<and> name n_ \<in> incoming nd \<longrightarrow> \<eta> \<in> old n_ \<or> \<mu> \<in> old n_ \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. \<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (n_\<lparr>incoming := v_\<rparr>) \<and> name (n_\<lparr>incoming := v_\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (n_\<lparr>incoming := v_\<rparr>) \<or> \<mu> \<in> old (n_\<lparr>incoming := v_\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>nd\<in>upd_incoming n ns. \<mu> U\<^sub>r \<eta> \<in> old (n_\<lparr>incoming := v_\<rparr>) \<and> name (n_\<lparr>incoming := v_\<rparr>) \<in> incoming nd \<longrightarrow> \<eta> \<in> old (n_\<lparr>incoming := v_\<rparr>) \<or> \<mu> \<in> old (n_\<lparr>incoming := v_\<rparr>) \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<forall>na\<in>snd (name n, upd_incoming n ns). \<forall>nd\<in>snd (name n, upd_incoming n ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (7 subgoals):
 1. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<not> (\<exists>n'\<in>b. old n' = old a \<and> next n' = next a)\<rbrakk> \<Longrightarrow> f (\<lparr>name = expand_new_name (name a), incoming = {name a}, new = next a, old = {}, next = {}\<rparr>, {a} \<union> b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 7. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<not> (\<exists>n'\<in>b. old n' = old a \<and> next n' = next a)\<rbrakk> \<Longrightarrow> f (\<lparr>name = expand_new_name (name a), incoming = {name a}, new = next a, old = {}, next = {}\<rparr>, {a} \<union> b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 7. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
case prems: (2 f x n ns)
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<not> (\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n)

goal (7 subgoals):
 1. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<not> (\<exists>n'\<in>b. old n' = old a \<and> next n' = next a)\<rbrakk> \<Longrightarrow> f (\<lparr>name = expand_new_name (name a), incoming = {name a}, new = next a, old = {}, next = {}\<rparr>, {a} \<union> b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 7. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<not> (\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n)
[PROOF STEP]
have step: "\<And>x. ?Q x \<Longrightarrow> f x \<le> SPEC ?P" and f_sup: "\<And>x. f x \<le> expand x"
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<not> (\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n)

goal (1 subgoal):
 1. (\<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)) &&& (\<And>x. f x \<le> expand x)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
f ?x \<le> expand ?x

goal (7 subgoals):
 1. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<not> (\<exists>n'\<in>b. old n' = old a \<and> next n' = next a)\<rbrakk> \<Longrightarrow> f (\<lparr>name = expand_new_name (name a), incoming = {name a}, new = next a, old = {}, next = {}\<rparr>, {a} \<union> b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 7. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
from prems
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<not> (\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n)
[PROOF STEP]
have Q: "?Q (n, ns)"
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n = {}
\<not> (\<exists>n'\<in>ns. old n' = old n \<and> next n' = next n)

goal (1 subgoal):
 1. ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))

goal (7 subgoals):
 1. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<not> (\<exists>n'\<in>b. old n' = old a \<and> next n' = next a)\<rbrakk> \<Longrightarrow> f (\<lparr>name = expand_new_name (name a), incoming = {name a}, new = next a, old = {}, next = {}\<rparr>, {a} \<union> b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 7. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
from Q
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
[PROOF STEP]
have name_le: "name n < expand_new_name (name n)"
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))

goal (1 subgoal):
 1. name n < expand_new_name (name n)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
name n < expand_new_name (name n)

goal (7 subgoals):
 1. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<not> (\<exists>n'\<in>b. old n' = old a \<and> next n' = next a)\<rbrakk> \<Longrightarrow> f (\<lparr>name = expand_new_name (name a), incoming = {name a}, new = next a, old = {}, next = {}\<rparr>, {a} \<union> b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 7. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
let ?x' = "(\<lparr>name = expand_new_name (name n),
               incoming = {name n}, new = next n,
               old = {}, next = {}\<rparr>, {n} \<union> ns)"
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<not> (\<exists>n'\<in>b. old n' = old a \<and> next n' = next a)\<rbrakk> \<Longrightarrow> f (\<lparr>name = expand_new_name (name a), incoming = {name a}, new = next a, old = {}, next = {}\<rparr>, {a} \<union> b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 7. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
have Q'1: "expand_assm_incoming ?x'\<and> expand_name_ident (snd ?x')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<forall>nm\<in>incoming (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)). nm < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))) \<and> 0 < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> (\<forall>q\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). name q < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))))) \<and> expand_name_ident (snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))
[PROOF STEP]
using \<open>new n = {}\<close> Q[THEN conjunct2, THEN conjunct2] name_le
[PROOF STATE]
proof (prove)
using this:
new n = {}
((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
name n < expand_new_name (name n)

goal (1 subgoal):
 1. ((\<forall>nm\<in>incoming (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)). nm < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))) \<and> 0 < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> (\<forall>q\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). name q < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))))) \<and> expand_name_ident (snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))
[PROOF STEP]
by force
[PROOF STATE]
proof (state)
this:
((\<forall>nm\<in>incoming (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)). nm < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))) \<and> 0 < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> (\<forall>q\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). name q < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))))) \<and> expand_name_ident (snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))

goal (7 subgoals):
 1. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<not> (\<exists>n'\<in>b. old n' = old a \<and> next n' = next a)\<rbrakk> \<Longrightarrow> f (\<lparr>name = expand_new_name (name a), incoming = {name a}, new = next a, old = {}, next = {}\<rparr>, {a} \<union> b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 7. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
have Q'2: "until_propag__assm \<mu> \<eta> ?x' \<and> until_propag__rslt \<mu> \<eta> (snd ?x')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. ((\<mu> U\<^sub>r \<eta> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<longrightarrow> \<eta> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<union> new (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<or> \<mu> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<union> new (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))) \<and> (\<forall>nd\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<union> new (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)))) \<and> (\<forall>na\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). \<forall>nd\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
using Q \<open>new n = {}\<close>
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
new n = {}

goal (1 subgoal):
 1. ((\<mu> U\<^sub>r \<eta> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<longrightarrow> \<eta> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<union> new (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<or> \<mu> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<union> new (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))) \<and> (\<forall>nd\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<union> new (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)))) \<and> (\<forall>na\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). \<forall>nd\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<longrightarrow> \<eta> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<union> new (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<or> \<mu> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<union> new (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))) \<and> (\<forall>nd\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<union> new (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)))) \<and> (\<forall>na\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). \<forall>nd\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)

goal (7 subgoals):
 1. \<And>f x a b. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a = {}; \<not> (\<exists>n'\<in>b. old n' = old a \<and> next n' = next a)\<rbrakk> \<Longrightarrow> f (\<lparr>name = expand_new_name (name a), incoming = {name a}, new = next a, old = {}, next = {}\<rparr>, {a} \<union> b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 7. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
using \<open>new n = {}\<close>
[PROOF STATE]
proof (prove)
using this:
new n = {}

goal (1 subgoal):
 1. f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
unfolding \<open>x = (n, ns)\<close>
[PROOF STATE]
proof (prove)
using this:
new n = {}

goal (1 subgoal):
 1. f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
proof (rule_tac SPEC_rule_weak[where
      Q = "\<lambda>_ r. expand_name_ident (snd r)" and P = "\<lambda>_. ?P"], goal_cases)
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. new n = {} \<Longrightarrow> f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. expand_name_ident (snd r))
 2. new n = {} \<Longrightarrow> f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>r1 r2. \<lbrakk>new n = {}; expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
case 1
[PROOF STATE]
proof (state)
this:
new n = {}

goal (3 subgoals):
 1. new n = {} \<Longrightarrow> f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. expand_name_ident (snd r))
 2. new n = {} \<Longrightarrow> f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>r1 r2. \<lbrakk>new n = {}; expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
new n = {}
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
new n = {}

goal (1 subgoal):
 1. f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. expand_name_ident (snd r))
[PROOF STEP]
using Q'1
[PROOF STATE]
proof (prove)
using this:
new n = {}
((\<forall>nm\<in>incoming (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)). nm < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))) \<and> 0 < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> (\<forall>q\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). name q < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))))) \<and> expand_name_ident (snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))

goal (1 subgoal):
 1. f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. expand_name_ident (snd r))
[PROOF STEP]
by (rule_tac order_trans,
        rule_tac f_sup,
        rule_tac expand_name_propag__name_ident) auto
[PROOF STATE]
proof (state)
this:
f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. expand_name_ident (snd r))

goal (2 subgoals):
 1. new n = {} \<Longrightarrow> f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>r1 r2. \<lbrakk>new n = {}; expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. new n = {} \<Longrightarrow> f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>r1 r2. \<lbrakk>new n = {}; expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
case 2
[PROOF STATE]
proof (state)
this:
new n = {}

goal (2 subgoals):
 1. new n = {} \<Longrightarrow> f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>r1 r2. \<lbrakk>new n = {}; expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
new n = {}
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
new n = {}

goal (1 subgoal):
 1. f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
using Q'1 Q'2
[PROOF STATE]
proof (prove)
using this:
new n = {}
((\<forall>nm\<in>incoming (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)). nm < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))) \<and> 0 < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> (\<forall>q\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). name q < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))))) \<and> expand_name_ident (snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))
((\<mu> U\<^sub>r \<eta> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<longrightarrow> \<eta> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<union> new (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<or> \<mu> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<union> new (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns))) \<and> (\<forall>nd\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)) \<union> new (fst (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns)))) \<and> (\<forall>na\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). \<forall>nd\<in>snd (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)

goal (1 subgoal):
 1. f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
by (rule_tac step) simp
[PROOF STATE]
proof (state)
this:
f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)

goal (1 subgoal):
 1. \<And>r1 r2. \<lbrakk>new n = {}; expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>r1 r2. \<lbrakk>new n = {}; expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
case (3 nm nds)
[PROOF STATE]
proof (state)
this:
new n = {}
expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. \<And>r1 r2. \<lbrakk>new n = {}; expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
new n = {}
expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
new n = {}
expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
f (\<lparr>name = expand_new_name (name n), incoming = {name n}, new = next n, old = {}, next = {}\<rparr>, {n} \<union> ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)

goal (6 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
case 3
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f_ ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f_ ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<exists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
not\<^sub>r xa_ \<in> old (a_\<lparr>new := new a_ - {xa_}\<rparr>)

goal (6 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<in> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 6. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f_ ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f_ ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<exists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
not\<^sub>r xa_ \<in> old (a_\<lparr>new := new a_ - {xa_}\<rparr>)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f_ ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f_ ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<exists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
not\<^sub>r xa_ \<in> old (a_\<lparr>new := new a_ - {xa_}\<rparr>)

goal (1 subgoal):
 1. \<forall>n\<in>snd (name (a_\<lparr>new := new a_ - {xa_}\<rparr>), b_). \<forall>nd\<in>snd (name (a_\<lparr>new := new a_ - {xa_}\<rparr>), b_). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<forall>n\<in>snd (name (a_\<lparr>new := new a_ - {xa_}\<rparr>), b_). \<forall>nd\<in>snd (name (a_\<lparr>new := new a_ - {xa_}\<rparr>), b_). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (5 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
case prems: (4 f)
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<exists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
not\<^sub>r xa_ \<notin> old (a_\<lparr>new := new a_ - {xa_}\<rparr>)

goal (5 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<exists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
not\<^sub>r xa_ \<notin> old (a_\<lparr>new := new a_ - {xa_}\<rparr>)
[PROOF STEP]
have step: "\<And>x. ?Q x \<Longrightarrow> f x \<le> SPEC ?P"
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<exists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
not\<^sub>r xa_ \<notin> old (a_\<lparr>new := new a_ - {xa_}\<rparr>)

goal (1 subgoal):
 1. \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
by simp_all
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)

goal (5 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<exists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); not\<^sub>r xa \<notin> old (a\<lparr>new := new a - {xa}\<rparr>)\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 5. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
from prems
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<exists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
not\<^sub>r xa_ \<notin> old (a_\<lparr>new := new a_ - {xa_}\<rparr>)
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<exists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
not\<^sub>r xa_ \<notin> old (a_\<lparr>new := new a_ - {xa_}\<rparr>)

goal (1 subgoal):
 1. f (a_\<lparr>new := new a_ - {xa_}, old := {xa_} \<union> old (a_\<lparr>new := new a_ - {xa_}\<rparr>)\<rparr>, b_) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
by (rule_tac SPEC_rule_param2, rule_tac step) auto
[PROOF STATE]
proof (state)
this:
f (a_\<lparr>new := new a_ - {xa_}, old := {xa_} \<union> old (a_\<lparr>new := new a_ - {xa_}\<rparr>)\<rparr>, b_) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)

goal (4 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
case prems: (5 f)
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ = true\<^sub>r

goal (4 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ = true\<^sub>r
[PROOF STEP]
have step: "\<And>x. ?Q x \<Longrightarrow> f x \<le> SPEC ?P"
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ = true\<^sub>r

goal (1 subgoal):
 1. \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
by simp_all
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)

goal (4 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa = true\<^sub>r\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 4. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
from prems
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ = true\<^sub>r
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ = true\<^sub>r

goal (1 subgoal):
 1. f (a_\<lparr>new := new a_ - {xa_}, old := {xa_} \<union> old (a_\<lparr>new := new a_ - {xa_}\<rparr>)\<rparr>, b_) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
by (rule_tac SPEC_rule_param2, rule_tac step) auto
[PROOF STATE]
proof (state)
this:
f (a_\<lparr>new := new a_ - {xa_}, old := {xa_} \<union> old (a_\<lparr>new := new a_ - {xa_}\<rparr>)\<rparr>, b_) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)

goal (3 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
case 6
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f_ ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f_ ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ \<noteq> true\<^sub>r
xa_ = false\<^sub>r

goal (3 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa = false\<^sub>r\<rbrakk> \<Longrightarrow> \<forall>n\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<forall>nd\<in>snd (name (a\<lparr>new := new a - {xa}\<rparr>), b). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f_ ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f_ ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ \<noteq> true\<^sub>r
xa_ = false\<^sub>r
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f_ ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f_ ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ \<noteq> true\<^sub>r
xa_ = false\<^sub>r

goal (1 subgoal):
 1. \<forall>n\<in>snd (name (a_\<lparr>new := new a_ - {xa_}\<rparr>), b_). \<forall>nd\<in>snd (name (a_\<lparr>new := new a_ - {xa_}\<rparr>), b_). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<forall>n\<in>snd (name (a_\<lparr>new := new a_ - {xa_}\<rparr>), b_). \<forall>nd\<in>snd (name (a_\<lparr>new := new a_ - {xa_}\<rparr>), b_). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (2 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
case prems: (7 f)
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ \<noteq> true\<^sub>r
xa_ \<noteq> false\<^sub>r
\<exists>\<nu> \<mu>. xa_ = \<nu> and\<^sub>r \<mu> \<or> xa_ = X\<^sub>r \<nu>

goal (2 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ \<noteq> true\<^sub>r
xa_ \<noteq> false\<^sub>r
\<exists>\<nu> \<mu>. xa_ = \<nu> and\<^sub>r \<mu> \<or> xa_ = X\<^sub>r \<nu>
[PROOF STEP]
have step: "\<And>x. ?Q x \<Longrightarrow> f x \<le> SPEC ?P"
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ \<noteq> true\<^sub>r
xa_ \<noteq> false\<^sub>r
\<exists>\<nu> \<mu>. xa_ = \<nu> and\<^sub>r \<mu> \<or> xa_ = X\<^sub>r \<nu>

goal (1 subgoal):
 1. \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
by simp_all
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)

goal (2 subgoals):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<exists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
from prems
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ \<noteq> true\<^sub>r
xa_ \<noteq> false\<^sub>r
\<exists>\<nu> \<mu>. xa_ = \<nu> and\<^sub>r \<mu> \<or> xa_ = X\<^sub>r \<nu>
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<longrightarrow> \<eta> \<in> old (fst x_) \<union> new (fst x_) \<or> \<mu> \<in> old (fst x_) \<union> new (fst x_) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x_)) \<and> (\<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x_) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x_) \<union> new (fst x_))) \<and> (\<forall>n\<in>snd x_. \<forall>nd\<in>snd x_. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x_). nm < name (fst x_)) \<and> 0 < name (fst x_) \<and> (\<forall>q\<in>snd x_. name q < name (fst x_) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x_)))) \<and> expand_name_ident (snd x_)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x_ = (a_, b_)
new a_ \<noteq> {}
xa_ \<in> new a_
\<nexists>q. xa_ = prop\<^sub>r(q) \<or> xa_ = nprop\<^sub>r(q)
xa_ \<noteq> true\<^sub>r
xa_ \<noteq> false\<^sub>r
\<exists>\<nu> \<mu>. xa_ = \<nu> and\<^sub>r \<mu> \<or> xa_ = X\<^sub>r \<nu>

goal (1 subgoal):
 1. f (a_\<lparr>new := new a_ - {xa_}, new := new1 xa_ \<union> new (a_\<lparr>new := new a_ - {xa_}\<rparr>), old := {xa_} \<union> old (a_\<lparr>new := new a_ - {xa_}\<rparr>), next := next1 xa_ \<union> next (a_\<lparr>new := new a_ - {xa_}\<rparr>)\<rparr>, b_) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
by (rule_tac SPEC_rule_param2, rule_tac step) auto
[PROOF STATE]
proof (state)
this:
f (a_\<lparr>new := new a_ - {xa_}, new := new1 xa_ \<union> new (a_\<lparr>new := new a_ - {xa_}\<rparr>), old := {xa_} \<union> old (a_\<lparr>new := new a_ - {xa_}\<rparr>), next := next1 xa_ \<union> next (a_\<lparr>new := new a_ - {xa_}\<rparr>)\<rparr>, b_) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)

goal (1 subgoal):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
case prems: (8 f x n ns \<psi>)
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n \<noteq> {}
\<psi> \<in> new n
\<nexists>q. \<psi> = prop\<^sub>r(q) \<or> \<psi> = nprop\<^sub>r(q)
\<psi> \<noteq> true\<^sub>r
\<psi> \<noteq> false\<^sub>r
\<nexists>\<nu> \<mu>. \<psi> = \<nu> and\<^sub>r \<mu> \<or> \<psi> = X\<^sub>r \<nu>

goal (1 subgoal):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n \<noteq> {}
\<psi> \<in> new n
\<nexists>q. \<psi> = prop\<^sub>r(q) \<or> \<psi> = nprop\<^sub>r(q)
\<psi> \<noteq> true\<^sub>r
\<psi> \<noteq> false\<^sub>r
\<nexists>\<nu> \<mu>. \<psi> = \<nu> and\<^sub>r \<mu> \<or> \<psi> = X\<^sub>r \<nu>
[PROOF STEP]
have goal_assms: "\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)"
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n \<noteq> {}
\<psi> \<in> new n
\<nexists>q. \<psi> = prop\<^sub>r(q) \<or> \<psi> = nprop\<^sub>r(q)
\<psi> \<noteq> true\<^sub>r
\<psi> \<noteq> false\<^sub>r
\<nexists>\<nu> \<mu>. \<psi> = \<nu> and\<^sub>r \<mu> \<or> \<psi> = X\<^sub>r \<nu>

goal (1 subgoal):
 1. \<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
[PROOF STEP]
by (cases \<psi>) auto
[PROOF STATE]
proof (state)
this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)

goal (1 subgoal):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
from prems
[PROOF STATE]
proof (chain)
picking this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n \<noteq> {}
\<psi> \<in> new n
\<nexists>q. \<psi> = prop\<^sub>r(q) \<or> \<psi> = nprop\<^sub>r(q)
\<psi> \<noteq> true\<^sub>r
\<psi> \<noteq> false\<^sub>r
\<nexists>\<nu> \<mu>. \<psi> = \<nu> and\<^sub>r \<mu> \<or> \<psi> = X\<^sub>r \<nu>
[PROOF STEP]
have Q: "?Q (n, ns)"
    and step: "\<And>x. ?Q x \<Longrightarrow> f x \<le> SPEC ?P"
    and f_sup: "\<And>x. f x \<le> expand x"
[PROOF STATE]
proof (prove)
using this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
f ?x \<le> expand ?x
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x)
((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns)
x = (n, ns)
new n \<noteq> {}
\<psi> \<in> new n
\<nexists>q. \<psi> = prop\<^sub>r(q) \<or> \<psi> = nprop\<^sub>r(q)
\<psi> \<noteq> true\<^sub>r
\<psi> \<noteq> false\<^sub>r
\<nexists>\<nu> \<mu>. \<psi> = \<nu> and\<^sub>r \<mu> \<or> \<psi> = X\<^sub>r \<nu>

goal (1 subgoal):
 1. ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)) &&& (\<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)) &&& (\<And>x. f x \<le> expand x)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
((\<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<longrightarrow> \<eta> \<in> old (fst ?x) \<union> new (fst ?x) \<or> \<mu> \<in> old (fst ?x) \<union> new (fst ?x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x)) \<and> (\<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst ?x) \<union> new (fst ?x))) \<and> (\<forall>n\<in>snd ?x. \<forall>nd\<in>snd ?x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst ?x). nm < name (fst ?x)) \<and> 0 < name (fst ?x) \<and> (\<forall>q\<in>snd ?x. name q < name (fst ?x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst ?x)))) \<and> expand_name_ident (snd ?x) \<Longrightarrow> f ?x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
f ?x \<le> expand ?x

goal (1 subgoal):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
let ?x = "(n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>),
        old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>),
                            next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)
       \<rparr>, ns)"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
let ?props = "\<lambda>x r. expand_rslt_exist_eq x r
    \<and> expand_rslt_incoming r \<and> expand_rslt_name x r \<and> expand_name_ident (snd r)"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>f x a b xa. \<lbrakk>((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); \<And>x. f x \<le> expand x; \<And>x. ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x) \<Longrightarrow> f x \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd); ((\<mu> U\<^sub>r \<eta> \<in> old (fst x) \<longrightarrow> \<eta> \<in> old (fst x) \<union> new (fst x) \<or> \<mu> \<in> old (fst x) \<union> new (fst x) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst x)) \<and> (\<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst x) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst x) \<union> new (fst x))) \<and> (\<forall>n\<in>snd x. \<forall>nd\<in>snd x. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst x). nm < name (fst x)) \<and> 0 < name (fst x) \<and> (\<forall>q\<in>snd x. name q < name (fst x) \<and> (\<forall>nm\<in>incoming q. nm < name (fst x)))) \<and> expand_name_ident (snd x); ((\<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<longrightarrow> \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns) \<or> \<mu> \<in> old (fst n_ns) \<union> new (fst n_ns) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst n_ns)) \<and> (\<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst n_ns) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst n_ns) \<union> new (fst n_ns))) \<and> (\<forall>n\<in>snd n_ns. \<forall>nd\<in>snd n_ns. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst n_ns). nm < name (fst n_ns)) \<and> 0 < name (fst n_ns) \<and> (\<forall>q\<in>snd n_ns. name q < name (fst n_ns) \<and> (\<forall>nm\<in>incoming q. nm < name (fst n_ns)))) \<and> expand_name_ident (snd n_ns); x = (a, b); new a \<noteq> {}; xa \<in> new a; \<nexists>q. xa = prop\<^sub>r(q) \<or> xa = nprop\<^sub>r(q); xa \<noteq> true\<^sub>r; xa \<noteq> false\<^sub>r; \<nexists>\<nu> \<mu>. xa = \<nu> and\<^sub>r \<mu> \<or> xa = X\<^sub>r \<nu>\<rbrakk> \<Longrightarrow> f (a\<lparr>new := new a - {xa}, new := new1 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>), next := next1 xa \<union> next (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, b) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (a\<lparr>new := new a - {xa}, name := nm, new := new2 xa \<union> new (a\<lparr>new := new a - {xa}\<rparr>), old := {xa} \<union> old (a\<lparr>new := new a - {xa}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (n\<lparr>new := new n - {\<psi>}, name := nm, new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
using goal_assms Q
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))

goal (1 subgoal):
 1. f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (n\<lparr>new := new n - {\<psi>}, name := nm, new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
unfolding case_prod_unfold \<open>x = (n, ns)\<close>
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))

goal (1 subgoal):
 1. f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>x. f (n\<lparr>new := new n - {\<psi>}, name := fst x, new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd x) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))
[PROOF STEP]
proof (rule_tac SPEC_rule_weak_nested2[where Q = "?props ?x"], goal_cases)
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>r. expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) r \<and> (\<forall>q\<in>snd r. name q < fst r \<and> (\<forall>nm'\<in>incoming q. nm' < fst r)) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst r \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd r) \<and> name ` snd r = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd r. name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd r))
 2. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>r1 r2. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (r1, r2) \<and> (\<forall>q\<in>snd (r1, r2). name q < fst (r1, r2) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (r1, r2))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (r1, r2) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (r1, r2)) \<and> name ` snd (r1, r2) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (r1, r2). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, name := fst (r1, r2), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (r1, r2)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
case 1
[PROOF STATE]
proof (state)
this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))

goal (3 subgoals):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>r. expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) r \<and> (\<forall>q\<in>snd r. name q < fst r \<and> (\<forall>nm'\<in>incoming q. nm' < fst r)) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst r \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd r) \<and> name ` snd r = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd r. name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd r))
 2. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 3. \<And>r1 r2. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (r1, r2) \<and> (\<forall>q\<in>snd (r1, r2). name q < fst (r1, r2) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (r1, r2))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (r1, r2) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (r1, r2)) \<and> name ` snd (r1, r2) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (r1, r2). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, name := fst (r1, r2), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (r1, r2)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))

goal (1 subgoal):
 1. f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>r. expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) r \<and> (\<forall>q\<in>snd r. name q < fst r \<and> (\<forall>nm'\<in>incoming q. nm' < fst r)) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst r \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd r) \<and> name ` snd r = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd r. name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd r))
[PROOF STEP]
by (rule_tac SPEC_rule_conjI,
             rule_tac order_trans,
             rule_tac f_sup,
             rule_tac expand_rslt_exist_eq,
             rule_tac order_trans,
             rule_tac f_sup,
             rule_tac expand_name_propag) simp+
[PROOF STATE]
proof (state)
this:
f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>r. expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) r \<and> (\<forall>q\<in>snd r. name q < fst r \<and> (\<forall>nm'\<in>incoming q. nm' < fst r)) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst r \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd r) \<and> name ` snd r = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd r. name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd r))

goal (2 subgoals):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>r1 r2. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (r1, r2) \<and> (\<forall>q\<in>snd (r1, r2). name q < fst (r1, r2) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (r1, r2))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (r1, r2) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (r1, r2)) \<and> name ` snd (r1, r2) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (r1, r2). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, name := fst (r1, r2), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (r1, r2)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>r1 r2. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (r1, r2) \<and> (\<forall>q\<in>snd (r1, r2). name q < fst (r1, r2) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (r1, r2))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (r1, r2) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (r1, r2)) \<and> name ` snd (r1, r2) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (r1, r2). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, name := fst (r1, r2), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (r1, r2)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
case 2
[PROOF STATE]
proof (state)
this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))

goal (2 subgoals):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
 2. \<And>r1 r2. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (r1, r2) \<and> (\<forall>q\<in>snd (r1, r2). name q < fst (r1, r2) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (r1, r2))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (r1, r2) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (r1, r2)) \<and> name ` snd (r1, r2) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (r1, r2). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, name := fst (r1, r2), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (r1, r2)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))

goal (1 subgoal):
 1. f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
by (rule_tac SPEC_rule_param2[where P = "\<lambda>_. ?P"], rule_tac step) auto
[PROOF STATE]
proof (state)
this:
f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)

goal (1 subgoal):
 1. \<And>r1 r2. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (r1, r2) \<and> (\<forall>q\<in>snd (r1, r2). name q < fst (r1, r2) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (r1, r2))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (r1, r2) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (r1, r2)) \<and> name ` snd (r1, r2) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (r1, r2). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, name := fst (r1, r2), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (r1, r2)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>r1 r2. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (r1, r2) \<and> (\<forall>q\<in>snd (r1, r2). name q < fst (r1, r2) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (r1, r2))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (r1, r2) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (r1, r2)) \<and> name ` snd (r1, r2) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (r1, r2). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, name := fst (r1, r2), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (r1, r2)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
case prems: (3 nm nds)
[PROOF STATE]
proof (state)
this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. \<And>r1 r2. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (r1, r2) \<and> (\<forall>q\<in>snd (r1, r2). name q < fst (r1, r2) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (r1, r2))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (r1, r2) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (r1, r2)) \<and> name ` snd (r1, r2) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (r1, r2). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, name := fst (r1, r2), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (r1, r2)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
let ?x' = "(n\<lparr>new := new n - {\<psi>},
       name := fst (nm, nds),
       new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>),
       old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>r1 r2. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (r1, r2) \<and> (\<forall>q\<in>snd (r1, r2). name q < fst (r1, r2) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (r1, r2))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (r1, r2) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (r1, r2)) \<and> name ` snd (r1, r2) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (r1, r2). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (r1, r2)); \<forall>n\<in>snd (r1, r2). \<forall>nd\<in>snd (r1, r2). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> f (n\<lparr>new := new n - {\<psi>}, name := fst (r1, r2), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (r1, r2)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
from prems
[PROOF STATE]
proof (chain)
picking this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. f (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)
[PROOF STEP]
proof (rule_tac step, goal_cases)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds)); \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
case prems': 1
[PROOF STATE]
proof (state)
this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds)); \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
have "expand_assm_incoming ?x'"
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. (\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
(\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))))

goal (1 subgoal):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds)); \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))))

goal (1 subgoal):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds)); \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
from prems'
[PROOF STATE]
proof (chain)
picking this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
have nds_ident: "expand_name_ident (snd ?x')"
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))

goal (1 subgoal):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds)); \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))

goal (1 subgoal):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds)); \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
have "(\<mu> U\<^sub>r \<eta> \<in> old (fst ?x')
             \<longrightarrow> (\<eta>\<in>old (fst ?x')\<union>new (fst ?x')
                  \<or> (\<mu>\<in>old (fst ?x')\<union>new (fst ?x')
                     \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst ?x'))))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
using Q[THEN conjunct1] goal_assms
[PROOF STATE]
proof (prove)
using this:
(\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)

goal (1 subgoal):
 1. \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))

goal (1 subgoal):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds)); \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))

goal (1 subgoal):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds)); \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
from prems'
[PROOF STATE]
proof (chain)
picking this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
have "until_propag__rslt \<mu> \<eta> (snd ?x')"
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. \<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds)); \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds)); \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
from prems'
[PROOF STATE]
proof (chain)
picking this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
have name_nds_eq:
        "name ` nds = name ` ns \<union> name ` {nd\<in>nds. name nd \<ge> name n}"
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. name ` nds = name ` ns \<union> name ` {nd \<in> nds. name n \<le> name nd}
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
name ` nds = name ` ns \<union> name ` {nd \<in> nds. name n \<le> name nd}

goal (1 subgoal):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds)); \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
have "\<forall>nd\<in>nds. (\<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst ?x'))
        \<longrightarrow> (\<eta>\<in>old nd \<or> (\<mu>\<in>old nd \<and> \<mu> U\<^sub>r \<eta> \<in>old (fst ?x')\<union>new (fst ?x')))"
       (is "\<forall>nd\<in>nds. ?assm (fst ?x') nd \<longrightarrow> ?concl (fst ?x') nd")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>nd\<in>nds. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
fix nd
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
assume "nd\<in>nds"
[PROOF STATE]
proof (state)
this:
nd \<in> nds

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
nd \<in> nds

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
assume loc_assm: "name nd\<in>name ` ns"
[PROOF STATE]
proof (state)
this:
name nd \<in> name ` ns

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
name nd \<in> name ` ns
[PROOF STEP]
obtain n' where n': "n'\<in>ns" "name n' = name nd"
[PROOF STATE]
proof (prove)
using this:
name nd \<in> name ` ns

goal (1 subgoal):
 1. (\<And>n'. \<lbrakk>n' \<in> ns; name n' = name nd\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
n' \<in> ns
name n' = name nd

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
n' \<in> ns
name n' = name nd

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
from prems' n'
[PROOF STATE]
proof (chain)
picking this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
n' \<in> ns
name n' = name nd
[PROOF STEP]
obtain nd' where "nd'\<in>nds"
            and n'_nd'_eq: "expand_rslt_exist_eq__node n' nd'"
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
n' \<in> ns
name n' = name nd

goal (1 subgoal):
 1. (\<And>nd'. \<lbrakk>nd' \<in> nds; expand_rslt_exist_eq__node n' nd'\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
nd' \<in> nds
expand_rslt_exist_eq__node n' nd'

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
n' \<in> ns
name n' = name nd
nd' \<in> nds
expand_rslt_exist_eq__node n' nd'
[PROOF STEP]
have "nd = nd'"
[PROOF STATE]
proof (prove)
using this:
n' \<in> ns
name n' = name nd
nd' \<in> nds
expand_rslt_exist_eq__node n' nd'

goal (1 subgoal):
 1. nd = nd'
[PROOF STEP]
using nds_ident \<open>nd\<in>nds\<close> loc_assm
[PROOF STATE]
proof (prove)
using this:
n' \<in> ns
name n' = name nd
nd' \<in> nds
expand_rslt_exist_eq__node n' nd'
expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
nd \<in> nds
name nd \<in> name ` ns

goal (1 subgoal):
 1. nd = nd'
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
nd = nd'

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
nd = nd'

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
from prems'
[PROOF STATE]
proof (chain)
picking this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
[PROOF STEP]
have "?assm n n' \<longrightarrow> ?concl n n'"
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd

goal (1 subgoal):
 1. \<mu> U\<^sub>r \<eta> \<in> old n' \<and> name n' \<in> incoming n \<longrightarrow> \<eta> \<in> old n' \<or> \<mu> \<in> old n' \<and> \<mu> U\<^sub>r \<eta> \<in> old n \<union> new n
[PROOF STEP]
using \<open>n'\<in>ns\<close>
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
n' \<in> ns

goal (1 subgoal):
 1. \<mu> U\<^sub>r \<eta> \<in> old n' \<and> name n' \<in> incoming n \<longrightarrow> \<eta> \<in> old n' \<or> \<mu> \<in> old n' \<and> \<mu> U\<^sub>r \<eta> \<in> old n \<union> new n
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<mu> U\<^sub>r \<eta> \<in> old n' \<and> name n' \<in> incoming n \<longrightarrow> \<eta> \<in> old n' \<or> \<mu> \<in> old n' \<and> \<mu> U\<^sub>r \<eta> \<in> old n \<union> new n

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
nd = nd'
\<mu> U\<^sub>r \<eta> \<in> old n' \<and> name n' \<in> incoming n \<longrightarrow> \<eta> \<in> old n' \<or> \<mu> \<in> old n' \<and> \<mu> U\<^sub>r \<eta> \<in> old n \<union> new n
[PROOF STEP]
have "?assm (fst ?x') nd \<longrightarrow> ?concl (fst ?x') nd"
[PROOF STATE]
proof (prove)
using this:
nd = nd'
\<mu> U\<^sub>r \<eta> \<in> old n' \<and> name n' \<in> incoming n \<longrightarrow> \<eta> \<in> old n' \<or> \<mu> \<in> old n' \<and> \<mu> U\<^sub>r \<eta> \<in> old n \<union> new n

goal (1 subgoal):
 1. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
using n'_nd'_eq
[PROOF STATE]
proof (prove)
using this:
nd = nd'
\<mu> U\<^sub>r \<eta> \<in> old n' \<and> name n' \<in> incoming n \<longrightarrow> \<eta> \<in> old n' \<or> \<mu> \<in> old n' \<and> \<mu> U\<^sub>r \<eta> \<in> old n \<union> new n
expand_rslt_exist_eq__node n' nd'

goal (1 subgoal):
 1. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
name nd \<in> name ` ns \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
name nd \<in> name ` ns \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
name nd \<in> name ` ns \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
assume "name nd\<notin>name ` ns"
[PROOF STATE]
proof (state)
this:
name nd \<notin> name ` ns

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
with name_nds_eq \<open>nd\<in>nds\<close>
[PROOF STATE]
proof (chain)
picking this:
name ` nds = name ` ns \<union> name ` {nd \<in> nds. name n \<le> name nd}
nd \<in> nds
name nd \<notin> name ` ns
[PROOF STEP]
have "name nd \<ge> name n"
[PROOF STATE]
proof (prove)
using this:
name ` nds = name ` ns \<union> name ` {nd \<in> nds. name n \<le> name nd}
nd \<in> nds
name nd \<notin> name ` ns

goal (1 subgoal):
 1. name n \<le> name nd
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
name n \<le> name nd

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
with prems'
[PROOF STATE]
proof (chain)
picking this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
name n \<le> name nd
[PROOF STEP]
have "\<not> (?assm (fst ?x') nd)"
[PROOF STATE]
proof (prove)
using this:
\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>)
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns))
expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds))
\<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
name n \<le> name nd

goal (1 subgoal):
 1. \<not> (\<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<not> (\<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)))

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
name nd \<notin> name ` ns \<Longrightarrow> \<not> (\<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)))

goal (1 subgoal):
 1. \<And>nd. nd \<in> nds \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
name nd \<in> name ` ns \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
name nd \<notin> name ` ns \<Longrightarrow> \<not> (\<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)))
[PROOF STEP]
show "?assm (fst ?x') nd \<longrightarrow> ?concl (fst ?x') nd"
[PROOF STATE]
proof (prove)
using this:
name nd \<in> name ` ns \<Longrightarrow> \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
name nd \<notin> name ` ns \<Longrightarrow> \<not> (\<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)))

goal (1 subgoal):
 1. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<forall>nd\<in>nds. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))

goal (1 subgoal):
 1. \<lbrakk>\<psi> \<in> new n \<and> (\<exists>\<nu> \<mu>. \<psi> = \<nu> or\<^sub>r \<mu> \<or> \<psi> = \<nu> U\<^sub>r \<mu> \<or> \<psi> = \<nu> R\<^sub>r \<mu>); ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<longrightarrow> \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<or> \<mu> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n, ns))) \<and> (\<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n, ns)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n, ns)) \<union> new (fst (n, ns)))) \<and> (\<forall>na\<in>snd (n, ns). \<forall>nd\<in>snd (n, ns). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nm\<in>incoming (fst (n, ns)). nm < name (fst (n, ns))) \<and> 0 < name (fst (n, ns)) \<and> (\<forall>q\<in>snd (n, ns). name q < name (fst (n, ns)) \<and> (\<forall>nm\<in>incoming q. nm < name (fst (n, ns))))) \<and> expand_name_ident (snd (n, ns)); expand_rslt_exist_eq (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) (nm, nds) \<and> (\<forall>q\<in>snd (nm, nds). name q < fst (nm, nds) \<and> (\<forall>nm'\<in>incoming q. nm' < fst (nm, nds))) \<and> ((name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> fst (nm, nds) \<and> name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<subseteq> name ` snd (nm, nds)) \<and> name ` snd (nm, nds) = name ` snd (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<union> name ` {nd \<in> snd (nm, nds). name (fst (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns)) \<le> name nd}) \<and> expand_name_ident (snd (nm, nds)); \<forall>n\<in>snd (nm, nds). \<forall>nd\<in>snd (nm, nds). \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd\<rbrakk> \<Longrightarrow> ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
(\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))))
expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
\<forall>nd\<in>nds. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
(\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))))
expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))
\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd
\<forall>nd\<in>nds. \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds))

goal (1 subgoal):
 1. ((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
((\<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<or> \<mu> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> \<mu> U\<^sub>r \<eta> \<in> next (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> (\<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old nd \<and> name nd \<in> incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<longrightarrow> \<eta> \<in> old nd \<or> \<mu> \<in> old nd \<and> \<mu> U\<^sub>r \<eta> \<in> old (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<union> new (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))))) \<and> (\<forall>na\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<forall>nd\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). \<mu> U\<^sub>r \<eta> \<in> old na \<and> name na \<in> incoming nd \<longrightarrow> \<eta> \<in> old na \<or> \<mu> \<in> old na \<and> \<mu> U\<^sub>r \<eta> \<in> old nd) \<and> ((\<forall>nma\<in>incoming (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))). nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))) \<and> 0 < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>q\<in>snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)). name q < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds))) \<and> (\<forall>nma\<in>incoming q. nma < name (fst (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))))) \<and> expand_name_ident (snd (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
f (n\<lparr>new := new n - {\<psi>}, name := fst (nm, nds), new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, snd (nm, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
f (n\<lparr>new := new n - {\<psi>}, new := new1 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>), next := next1 \<psi> \<union> next (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, ns) \<le> SPEC (\<lambda>x. (case x of (nm, nds) \<Rightarrow> f (n\<lparr>new := new n - {\<psi>}, name := nm, new := new2 \<psi> \<union> new (n\<lparr>new := new n - {\<psi>}\<rparr>), old := {\<psi>} \<union> old (n\<lparr>new := new n - {\<psi>}\<rparr>)\<rparr>, nds)) \<le> SPEC (\<lambda>r. \<forall>n\<in>snd r. \<forall>nd\<in>snd r. \<mu> U\<^sub>r \<eta> \<in> old n \<and> name n \<in> incoming nd \<longrightarrow> \<eta> \<in> old n \<or> \<mu> \<in> old n \<and> \<mu> U\<^sub>r \<eta> \<in> old nd))

goal:
No subgoals!
[PROOF STEP]
qed