[STATEMENT]
lemma summandTransition:
  fixes P  :: pi
  and   a  :: name
  and   x  :: name
  and   b  :: name
  and   P' :: pi

  assumes "hnf P"

  shows "P \<longmapsto>\<tau> \<prec> P' = (\<tau>.(P') \<in> summands P)"
  and   "P \<longmapsto>a<x> \<prec> P' = (a<x>.P' \<in> summands P)"
  and   "P \<longmapsto>a[b] \<prec> P' = (a{b}.P' \<in> summands P)"
  and   "a \<noteq> x \<Longrightarrow> P \<longmapsto>a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P) &&& P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)) &&& P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P) &&& (a \<noteq> x \<Longrightarrow> P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P))
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
 2. P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
 3. P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
 4. a \<noteq> x \<Longrightarrow> P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
from assms
[PROOF STATE]
proof (chain)
picking this:
hnf P
[PROOF STEP]
show "P \<longmapsto>\<tau> \<prec> P' = (\<tau>.(P') \<in> summands P)"
[PROOF STATE]
proof (prove)
using this:
hnf P

goal (1 subgoal):
 1. P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
[PROOF STEP]
proof(induct P rule: pi.induct)
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. hnf \<zero> \<Longrightarrow> \<zero> \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands \<zero>)
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1{name2}.pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 6. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 8. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 9. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 10. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
case PiNil
[PROOF STATE]
proof (state)
this:
hnf \<zero>

goal (10 subgoals):
 1. hnf \<zero> \<Longrightarrow> \<zero> \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands \<zero>)
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1{name2}.pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 6. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 8. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 9. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 10. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<zero> \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands \<zero>)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<zero> \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands \<zero>)

goal (9 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
case(Output a b P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
hnf (a{b}.P)

goal (9 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a{b}.P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (a{b}.P))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
a{b}.P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (a{b}.P))

goal (8 subgoals):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
case(Tau P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
hnf (\<tau>.P)

goal (8 subgoals):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
have "\<tau>.(P) \<longmapsto>\<tau> \<prec> P' \<Longrightarrow> \<tau>.(P') \<in> summands (\<tau>.(P))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<tau>.P \<longmapsto> \<tau> \<prec> P' \<Longrightarrow> \<tau>.P' \<in> summands (\<tau>.P)
[PROOF STEP]
by(auto elim: tauCases simp add: pi.inject residual.inject)
[PROOF STATE]
proof (state)
this:
\<tau>.P \<longmapsto> \<tau> \<prec> P' \<Longrightarrow> \<tau>.P' \<in> summands (\<tau>.P)

goal (8 subgoals):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
\<tau>.P \<longmapsto> \<tau> \<prec> P' \<Longrightarrow> \<tau>.P' \<in> summands (\<tau>.P)

goal (8 subgoals):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
have "\<tau>.(P') \<in> summands (\<tau>.(P)) \<Longrightarrow> \<tau>.(P) \<longmapsto>\<tau> \<prec> P'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<tau>.P' \<in> summands (\<tau>.P) \<Longrightarrow> \<tau>.P \<longmapsto> \<tau> \<prec> P'
[PROOF STEP]
by(auto simp add: pi.inject intro: transitions.Tau)
[PROOF STATE]
proof (state)
this:
\<tau>.P' \<in> summands (\<tau>.P) \<Longrightarrow> \<tau>.P \<longmapsto> \<tau> \<prec> P'

goal (8 subgoals):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
\<tau>.P \<longmapsto> \<tau> \<prec> P' \<Longrightarrow> \<tau>.P' \<in> summands (\<tau>.P)
\<tau>.P' \<in> summands (\<tau>.P) \<Longrightarrow> \<tau>.P \<longmapsto> \<tau> \<prec> P'
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
\<tau>.P \<longmapsto> \<tau> \<prec> P' \<Longrightarrow> \<tau>.P' \<in> summands (\<tau>.P)
\<tau>.P' \<in> summands (\<tau>.P) \<Longrightarrow> \<tau>.P \<longmapsto> \<tau> \<prec> P'

goal (1 subgoal):
 1. \<tau>.P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.P))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<tau>.P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (\<tau>.P))

goal (7 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
case(Input a x P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
hnf (a<x>.P)

goal (7 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a<x>.P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (a<x>.P))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
a<x>.P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (a<x>.P))

goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
case(Match a b P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
hnf ([a\<frown>b]P)

goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf ([a\<frown>b]P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf ([a\<frown>b]P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf ([a\<frown>b]P)

goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf ([a\<frown>b]P)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. [a\<frown>b]P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([a\<frown>b]P))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
[a\<frown>b]P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([a\<frown>b]P))

goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
case(Mismatch a b P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
hnf ([a\<noteq>b]P)

goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf ([a\<noteq>b]P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf ([a\<noteq>b]P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf ([a\<noteq>b]P)

goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf ([a\<noteq>b]P)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. [a\<noteq>b]P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([a\<noteq>b]P))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
[a\<noteq>b]P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands ([a\<noteq>b]P))

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
case(Sum P Q)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
hnf Q \<Longrightarrow> Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)
hnf (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (P \<oplus> Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (P \<oplus> Q)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
hence Phnf: "hnf P" and Qhnf: "hnf Q"
[PROOF STATE]
proof (prove)
using this:
hnf (P \<oplus> Q)

goal (1 subgoal):
 1. hnf P &&& hnf Q
[PROOF STEP]
by simp+
[PROOF STATE]
proof (state)
this:
hnf P
hnf Q

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
have IHP: "P \<longmapsto>\<tau> \<prec> P' = (\<tau>.(P') \<in> summands P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
[PROOF STEP]
have "hnf P \<Longrightarrow> P \<longmapsto>\<tau> \<prec> P' = (\<tau>.(P') \<in> summands P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)

goal (1 subgoal):
 1. P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
[PROOF STEP]
with Phnf
[PROOF STATE]
proof (chain)
picking this:
hnf P
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
hnf P
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)

goal (1 subgoal):
 1. P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
have IHQ: "Q \<longmapsto>\<tau> \<prec> P' = (\<tau>.(P') \<in> summands Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)
[PROOF STEP]
have "hnf Q \<Longrightarrow> Q \<longmapsto>\<tau> \<prec> P' = (\<tau>.(P') \<in> summands Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf Q \<Longrightarrow> Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf Q \<Longrightarrow> Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)

goal (1 subgoal):
 1. Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)
[PROOF STEP]
with Qhnf
[PROOF STATE]
proof (chain)
picking this:
hnf Q
hnf Q \<Longrightarrow> Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
hnf Q
hnf Q \<Longrightarrow> Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)

goal (1 subgoal):
 1. Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
from IHP IHQ
[PROOF STATE]
proof (chain)
picking this:
P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)
[PROOF STEP]
have "P \<oplus> Q \<longmapsto>\<tau> \<prec> P' \<Longrightarrow> \<tau>.(P') \<in> summands (P \<oplus> Q)"
[PROOF STATE]
proof (prove)
using this:
P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)

goal (1 subgoal):
 1. P \<oplus> Q \<longmapsto> \<tau> \<prec> P' \<Longrightarrow> \<tau>.P' \<in> summands (P \<oplus> Q)
[PROOF STEP]
by(erule_tac sumCases, auto)
[PROOF STATE]
proof (state)
this:
P \<oplus> Q \<longmapsto> \<tau> \<prec> P' \<Longrightarrow> \<tau>.P' \<in> summands (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
P \<oplus> Q \<longmapsto> \<tau> \<prec> P' \<Longrightarrow> \<tau>.P' \<in> summands (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
from IHP IHQ
[PROOF STATE]
proof (chain)
picking this:
P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)
[PROOF STEP]
have "\<tau>.(P') \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto>\<tau> \<prec> P'"
[PROOF STATE]
proof (prove)
using this:
P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)

goal (1 subgoal):
 1. \<tau>.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> \<tau> \<prec> P'
[PROOF STEP]
by(auto dest: Sum1 Sum2)
[PROOF STATE]
proof (state)
this:
\<tau>.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> \<tau> \<prec> P'

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
P \<oplus> Q \<longmapsto> \<tau> \<prec> P' \<Longrightarrow> \<tau>.P' \<in> summands (P \<oplus> Q)
\<tau>.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> \<tau> \<prec> P'
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
P \<oplus> Q \<longmapsto> \<tau> \<prec> P' \<Longrightarrow> \<tau>.P' \<in> summands (P \<oplus> Q)
\<tau>.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> \<tau> \<prec> P'

goal (1 subgoal):
 1. P \<oplus> Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (P \<oplus> Q))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
P \<oplus> Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (P \<oplus> Q))

goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
case(Par P Q)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
hnf Q \<Longrightarrow> Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands Q)
hnf (P \<parallel> Q)

goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (P \<parallel> Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (P \<parallel> Q)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (P \<parallel> Q)

goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf (P \<parallel> Q)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. P \<parallel> Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (P \<parallel> Q))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
P \<parallel> Q \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (P \<parallel> Q))

goal (2 subgoals):
 1. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
case(Res x P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
hnf (<\<nu>x>P)

goal (2 subgoals):
 1. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
hnf (<\<nu>x>P)

goal (1 subgoal):
 1. <\<nu>x>P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>x>P))
[PROOF STEP]
by(auto elim: resCasesF)
[PROOF STATE]
proof (state)
this:
<\<nu>x>P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (<\<nu>x>P))

goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
case(Bang P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)
hnf (!P)

goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (!P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (!P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (!P)

goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf (!P)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. !P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!P))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
!P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands (!P))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
P \<longmapsto> \<tau> \<prec> P' = (\<tau>.P' \<in> summands P)

goal (3 subgoals):
 1. P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
 2. P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
 3. a \<noteq> x \<Longrightarrow> P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
 2. P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
 3. a \<noteq> x \<Longrightarrow> P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
from assms
[PROOF STATE]
proof (chain)
picking this:
hnf P
[PROOF STEP]
show "P \<longmapsto>a<x> \<prec> P' = (a<x>.P' \<in> summands P)"
[PROOF STATE]
proof (prove)
using this:
hnf P

goal (1 subgoal):
 1. P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
[PROOF STEP]
proof(induct P rule: pi.induct)
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. hnf \<zero> \<Longrightarrow> \<zero> \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands \<zero>)
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1{name2}.pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (\<tau>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 6. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 8. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 9. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 10. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
case PiNil
[PROOF STATE]
proof (state)
this:
hnf \<zero>

goal (10 subgoals):
 1. hnf \<zero> \<Longrightarrow> \<zero> \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands \<zero>)
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1{name2}.pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (\<tau>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 6. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 8. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 9. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 10. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<zero> \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands \<zero>)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<zero> \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands \<zero>)

goal (9 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
case(Output c b P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
hnf (c{b}.P)

goal (9 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. c{b}.P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (c{b}.P))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
c{b}.P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (c{b}.P))

goal (8 subgoals):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
case(Tau P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
hnf (\<tau>.P)

goal (8 subgoals):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<tau>.P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (\<tau>.P))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<tau>.P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (\<tau>.P))

goal (7 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
case(Input b y P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
hnf (b<y>.P)

goal (7 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
have "b<y>.P \<longmapsto>a<x> \<prec> P' \<Longrightarrow> a<x>.P' \<in> summands (b<y>.P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. b<y>.P \<longmapsto> a<x> \<prec> P' \<Longrightarrow> a<x>.P' \<in> summands (b<y>.P)
[PROOF STEP]
by(auto elim: inputCases' simp add: pi.inject residual.inject)
[PROOF STATE]
proof (state)
this:
b<y>.P \<longmapsto> a<x> \<prec> P' \<Longrightarrow> a<x>.P' \<in> summands (b<y>.P)

goal (7 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
b<y>.P \<longmapsto> a<x> \<prec> P' \<Longrightarrow> a<x>.P' \<in> summands (b<y>.P)

goal (7 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
have "a<x>.P' \<in> summands (b<y>.P) \<Longrightarrow> b<y>.P \<longmapsto>a<x> \<prec> P'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a<x>.P' \<in> summands (b<y>.P) \<Longrightarrow> b<y>.P \<longmapsto> a<x> \<prec> P'
[PROOF STEP]
apply(auto simp add: pi.inject name_abs_eq intro: Late_Semantics.Input)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>a = b; x \<noteq> y; x \<sharp> P; P' = [(x, y)] \<bullet> P\<rbrakk> \<Longrightarrow> b<y>.P \<longmapsto> b<x> \<prec> [(x, y)] \<bullet> P
[PROOF STEP]
apply(subgoal_tac "b<x> \<prec> [(x, y)] \<bullet> P = (b<y> \<prec> [(x, y)] \<bullet> [(x, y)] \<bullet> P)")
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<lbrakk>a = b; x \<noteq> y; x \<sharp> P; P' = [(x, y)] \<bullet> P; b<x> \<prec> [(x, y)] \<bullet> P = b<y> \<prec> [(x, y)] \<bullet> [(x, y)] \<bullet> P\<rbrakk> \<Longrightarrow> b<y>.P \<longmapsto> b<x> \<prec> [(x, y)] \<bullet> P
 2. \<lbrakk>a = b; x \<noteq> y; x \<sharp> P; P' = [(x, y)] \<bullet> P\<rbrakk> \<Longrightarrow> b<x> \<prec> [(x, y)] \<bullet> P = b<y> \<prec> [(x, y)] \<bullet> [(x, y)] \<bullet> P
[PROOF STEP]
apply(auto intro: Late_Semantics.Input)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>a = b; x \<noteq> y; x \<sharp> P; P' = [(x, y)] \<bullet> P\<rbrakk> \<Longrightarrow> b<x> \<prec> [(x, y)] \<bullet> P = b<y> \<prec> P
[PROOF STEP]
by(simp add: alphaBoundResidual name_swap)
[PROOF STATE]
proof (state)
this:
a<x>.P' \<in> summands (b<y>.P) \<Longrightarrow> b<y>.P \<longmapsto> a<x> \<prec> P'

goal (7 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
b<y>.P \<longmapsto> a<x> \<prec> P' \<Longrightarrow> a<x>.P' \<in> summands (b<y>.P)
a<x>.P' \<in> summands (b<y>.P) \<Longrightarrow> b<y>.P \<longmapsto> a<x> \<prec> P'
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
b<y>.P \<longmapsto> a<x> \<prec> P' \<Longrightarrow> a<x>.P' \<in> summands (b<y>.P)
a<x>.P' \<in> summands (b<y>.P) \<Longrightarrow> b<y>.P \<longmapsto> a<x> \<prec> P'

goal (1 subgoal):
 1. b<y>.P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (b<y>.P))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
b<y>.P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (b<y>.P))

goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
case(Match a b P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
hnf ([a\<frown>b]P)

goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf ([a\<frown>b]P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf ([a\<frown>b]P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf ([a\<frown>b]P)

goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf ([a\<frown>b]P)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. [a\<frown>b]P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([a\<frown>b]P))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
[a\<frown>b]P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([a\<frown>b]P))

goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
case(Mismatch a b P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
hnf ([a\<noteq>b]P)

goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf ([a\<noteq>b]P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf ([a\<noteq>b]P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf ([a\<noteq>b]P)

goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf ([a\<noteq>b]P)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. [a\<noteq>b]P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([a\<noteq>b]P))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
[a\<noteq>b]P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands ([a\<noteq>b]P))

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
case(Sum P Q)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
hnf Q \<Longrightarrow> Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)
hnf (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (P \<oplus> Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (P \<oplus> Q)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
hence Phnf: "hnf P" and Qhnf: "hnf Q"
[PROOF STATE]
proof (prove)
using this:
hnf (P \<oplus> Q)

goal (1 subgoal):
 1. hnf P &&& hnf Q
[PROOF STEP]
by simp+
[PROOF STATE]
proof (state)
this:
hnf P
hnf Q

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
have IHP: "P \<longmapsto>a<x> \<prec> P' = (a<x>.P' \<in> summands P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
[PROOF STEP]
have "hnf P \<Longrightarrow> P \<longmapsto>a<x> \<prec> P' = (a<x>.P' \<in> summands P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)

goal (1 subgoal):
 1. P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
[PROOF STEP]
with Phnf
[PROOF STATE]
proof (chain)
picking this:
hnf P
hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
hnf P
hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)

goal (1 subgoal):
 1. P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
have IHQ: "Q \<longmapsto>a<x> \<prec> P' = (a<x>.P' \<in> summands Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)
[PROOF STEP]
have "hnf Q \<Longrightarrow> Q \<longmapsto>a<x> \<prec> P' = (a<x>.P' \<in> summands Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf Q \<Longrightarrow> Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf Q \<Longrightarrow> Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)

goal (1 subgoal):
 1. Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)
[PROOF STEP]
with Qhnf
[PROOF STATE]
proof (chain)
picking this:
hnf Q
hnf Q \<Longrightarrow> Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
hnf Q
hnf Q \<Longrightarrow> Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)

goal (1 subgoal):
 1. Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
from IHP IHQ
[PROOF STATE]
proof (chain)
picking this:
P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)
[PROOF STEP]
have "P \<oplus> Q \<longmapsto>a<x> \<prec> P' \<Longrightarrow> a<x>.P' \<in> summands (P \<oplus> Q)"
[PROOF STATE]
proof (prove)
using this:
P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)

goal (1 subgoal):
 1. P \<oplus> Q \<longmapsto> a<x> \<prec> P' \<Longrightarrow> a<x>.P' \<in> summands (P \<oplus> Q)
[PROOF STEP]
by(erule_tac sumCases, auto)
[PROOF STATE]
proof (state)
this:
P \<oplus> Q \<longmapsto> a<x> \<prec> P' \<Longrightarrow> a<x>.P' \<in> summands (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
P \<oplus> Q \<longmapsto> a<x> \<prec> P' \<Longrightarrow> a<x>.P' \<in> summands (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
from IHP IHQ
[PROOF STATE]
proof (chain)
picking this:
P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)
[PROOF STEP]
have "a<x>.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto>a<x> \<prec> P'"
[PROOF STATE]
proof (prove)
using this:
P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)

goal (1 subgoal):
 1. a<x>.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> a<x> \<prec> P'
[PROOF STEP]
by(auto dest: Sum1 Sum2)
[PROOF STATE]
proof (state)
this:
a<x>.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> a<x> \<prec> P'

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
P \<oplus> Q \<longmapsto> a<x> \<prec> P' \<Longrightarrow> a<x>.P' \<in> summands (P \<oplus> Q)
a<x>.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> a<x> \<prec> P'
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
P \<oplus> Q \<longmapsto> a<x> \<prec> P' \<Longrightarrow> a<x>.P' \<in> summands (P \<oplus> Q)
a<x>.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> a<x> \<prec> P'

goal (1 subgoal):
 1. P \<oplus> Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (P \<oplus> Q))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
P \<oplus> Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (P \<oplus> Q))

goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
case(Par P Q)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
hnf Q \<Longrightarrow> Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands Q)
hnf (P \<parallel> Q)

goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (P \<parallel> Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (P \<parallel> Q)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (P \<parallel> Q)

goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf (P \<parallel> Q)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. P \<parallel> Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (P \<parallel> Q))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
P \<parallel> Q \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (P \<parallel> Q))

goal (2 subgoals):
 1. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
case(Res y P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
hnf (<\<nu>y>P)

goal (2 subgoals):
 1. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf(<\<nu>y>P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (<\<nu>y>P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (<\<nu>y>P)

goal (2 subgoals):
 1. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
hnf (<\<nu>y>P)

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>y>P))
[PROOF STEP]
by(auto simp add: if_split)
[PROOF STATE]
proof (state)
this:
<\<nu>y>P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (<\<nu>y>P))

goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
case(Bang P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)
hnf (!P)

goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (!P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (!P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (!P)

goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf (!P)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. !P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!P))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
!P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands (!P))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
P \<longmapsto> a<x> \<prec> P' = (a<x>.P' \<in> summands P)

goal (2 subgoals):
 1. P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
 2. a \<noteq> x \<Longrightarrow> P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
 2. a \<noteq> x \<Longrightarrow> P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
from assms
[PROOF STATE]
proof (chain)
picking this:
hnf P
[PROOF STEP]
show "P \<longmapsto>a[b] \<prec> P' = (a{b}.P' \<in> summands P)"
[PROOF STATE]
proof (prove)
using this:
hnf P

goal (1 subgoal):
 1. P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
[PROOF STEP]
proof(induct P rule: pi.induct)
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. hnf \<zero> \<Longrightarrow> \<zero> \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands \<zero>)
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1{name2}.pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 6. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 8. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 9. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 10. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
case PiNil
[PROOF STATE]
proof (state)
this:
hnf \<zero>

goal (10 subgoals):
 1. hnf \<zero> \<Longrightarrow> \<zero> \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands \<zero>)
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1{name2}.pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 6. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 8. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 9. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 10. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<zero> \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands \<zero>)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<zero> \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands \<zero>)

goal (9 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
case(Output c d P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
hnf (c{d}.P)

goal (9 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
have "c{d}.P \<longmapsto>a[b] \<prec> P' \<Longrightarrow> a{b}.P' \<in> summands (c{d}.P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. c{d}.P \<longmapsto> a[b] \<prec> P' \<Longrightarrow> a{b}.P' \<in> summands (c{d}.P)
[PROOF STEP]
by(auto elim: outputCases simp add: residual.inject pi.inject)
[PROOF STATE]
proof (state)
this:
c{d}.P \<longmapsto> a[b] \<prec> P' \<Longrightarrow> a{b}.P' \<in> summands (c{d}.P)

goal (9 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
c{d}.P \<longmapsto> a[b] \<prec> P' \<Longrightarrow> a{b}.P' \<in> summands (c{d}.P)

goal (9 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
have "a{b}.P' \<in> summands (c{d}.P) \<Longrightarrow> c{d}.P \<longmapsto>a[b] \<prec> P'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a{b}.P' \<in> summands (c{d}.P) \<Longrightarrow> c{d}.P \<longmapsto> a[b] \<prec> P'
[PROOF STEP]
by(auto simp add: pi.inject intro: transitions.Output)
[PROOF STATE]
proof (state)
this:
a{b}.P' \<in> summands (c{d}.P) \<Longrightarrow> c{d}.P \<longmapsto> a[b] \<prec> P'

goal (9 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1{name2}.pi)\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
c{d}.P \<longmapsto> a[b] \<prec> P' \<Longrightarrow> a{b}.P' \<in> summands (c{d}.P)
a{b}.P' \<in> summands (c{d}.P) \<Longrightarrow> c{d}.P \<longmapsto> a[b] \<prec> P'
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
c{d}.P \<longmapsto> a[b] \<prec> P' \<Longrightarrow> a{b}.P' \<in> summands (c{d}.P)
a{b}.P' \<in> summands (c{d}.P) \<Longrightarrow> c{d}.P \<longmapsto> a[b] \<prec> P'

goal (1 subgoal):
 1. c{d}.P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (c{d}.P))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
c{d}.P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (c{d}.P))

goal (8 subgoals):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
case(Tau P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
hnf (\<tau>.P)

goal (8 subgoals):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (\<tau>.pi)\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<tau>.P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.P))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<tau>.P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (\<tau>.P))

goal (7 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
case(Input c x P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
hnf (c<x>.P)

goal (7 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (name1<name2>.pi)\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. c<x>.P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (c<x>.P))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
c<x>.P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (c<x>.P))

goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
case(Match a b P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
hnf ([a\<frown>b]P)

goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf ([a\<frown>b]P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf ([a\<frown>b]P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf ([a\<frown>b]P)

goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf ([a\<frown>b]P)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (6 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<frown>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. [a\<frown>b]P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([a\<frown>b]P))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
[a\<frown>b]P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([a\<frown>b]P))

goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
case(Mismatch a b P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
hnf ([a\<noteq>b]P)

goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf ([a\<noteq>b]P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf ([a\<noteq>b]P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf ([a\<noteq>b]P)

goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf ([a\<noteq>b]P)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (5 subgoals):
 1. \<And>name1 name2 pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf ([name1\<noteq>name2]pi)\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. [a\<noteq>b]P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([a\<noteq>b]P))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
[a\<noteq>b]P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands ([a\<noteq>b]P))

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
case(Sum P Q)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
hnf Q \<Longrightarrow> Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)
hnf (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (P \<oplus> Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (P \<oplus> Q)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
hence Phnf: "hnf P" and Qhnf: "hnf Q"
[PROOF STATE]
proof (prove)
using this:
hnf (P \<oplus> Q)

goal (1 subgoal):
 1. hnf P &&& hnf Q
[PROOF STEP]
by simp+
[PROOF STATE]
proof (state)
this:
hnf P
hnf Q

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
have IHP: "P \<longmapsto>a[b] \<prec> P' = (a{b}.P' \<in> summands P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
[PROOF STEP]
have "hnf P \<Longrightarrow> P \<longmapsto>a[b] \<prec> P' = (a{b}.P' \<in> summands P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)

goal (1 subgoal):
 1. P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
[PROOF STEP]
with Phnf
[PROOF STATE]
proof (chain)
picking this:
hnf P
hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
hnf P
hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)

goal (1 subgoal):
 1. P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
have IHQ: "Q \<longmapsto>a[b] \<prec> P' = (a{b}.P' \<in> summands Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)
[PROOF STEP]
have "hnf Q \<Longrightarrow> Q \<longmapsto>a[b] \<prec> P' = (a{b}.P' \<in> summands Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf Q \<Longrightarrow> Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf Q \<Longrightarrow> Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)

goal (1 subgoal):
 1. Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)
[PROOF STEP]
with Qhnf
[PROOF STATE]
proof (chain)
picking this:
hnf Q
hnf Q \<Longrightarrow> Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
hnf Q
hnf Q \<Longrightarrow> Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)

goal (1 subgoal):
 1. Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
from IHP IHQ
[PROOF STATE]
proof (chain)
picking this:
P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)
[PROOF STEP]
have "P \<oplus> Q \<longmapsto>a[b] \<prec> P' \<Longrightarrow> a{b}.P' \<in> summands (P \<oplus> Q)"
[PROOF STATE]
proof (prove)
using this:
P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)

goal (1 subgoal):
 1. P \<oplus> Q \<longmapsto> a[b] \<prec> P' \<Longrightarrow> a{b}.P' \<in> summands (P \<oplus> Q)
[PROOF STEP]
by(erule_tac sumCases, auto)
[PROOF STATE]
proof (state)
this:
P \<oplus> Q \<longmapsto> a[b] \<prec> P' \<Longrightarrow> a{b}.P' \<in> summands (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
P \<oplus> Q \<longmapsto> a[b] \<prec> P' \<Longrightarrow> a{b}.P' \<in> summands (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
from IHP IHQ
[PROOF STATE]
proof (chain)
picking this:
P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)
[PROOF STEP]
have "a{b}.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto>a[b] \<prec> P'"
[PROOF STATE]
proof (prove)
using this:
P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)

goal (1 subgoal):
 1. a{b}.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> a[b] \<prec> P'
[PROOF STEP]
by(auto dest: Sum1 Sum2)
[PROOF STATE]
proof (state)
this:
a{b}.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> a[b] \<prec> P'

goal (4 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<oplus> pi2)\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
P \<oplus> Q \<longmapsto> a[b] \<prec> P' \<Longrightarrow> a{b}.P' \<in> summands (P \<oplus> Q)
a{b}.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> a[b] \<prec> P'
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
P \<oplus> Q \<longmapsto> a[b] \<prec> P' \<Longrightarrow> a{b}.P' \<in> summands (P \<oplus> Q)
a{b}.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> a[b] \<prec> P'

goal (1 subgoal):
 1. P \<oplus> Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (P \<oplus> Q))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
P \<oplus> Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (P \<oplus> Q))

goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
case(Par P Q)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
hnf Q \<Longrightarrow> Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands Q)
hnf (P \<parallel> Q)

goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (P \<parallel> Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (P \<parallel> Q)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (P \<parallel> Q)

goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf (P \<parallel> Q)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (3 subgoals):
 1. \<And>pi1 pi2. \<lbrakk>hnf pi1 \<Longrightarrow> pi1 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi1); hnf pi2 \<Longrightarrow> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi2); hnf (pi1 \<parallel> pi2)\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. P \<parallel> Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (P \<parallel> Q))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
P \<parallel> Q \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (P \<parallel> Q))

goal (2 subgoals):
 1. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
case(Res x P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
hnf (<\<nu>x>P)

goal (2 subgoals):
 1. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (<\<nu>x>P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (<\<nu>x>P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (<\<nu>x>P)

goal (2 subgoals):
 1. \<And>name pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (<\<nu>name>pi)\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
hnf (<\<nu>x>P)

goal (1 subgoal):
 1. <\<nu>x>P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>x>P))
[PROOF STEP]
by(force elim: resCasesF outputCases simp add: if_split residual.inject)
[PROOF STATE]
proof (state)
this:
<\<nu>x>P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (<\<nu>x>P))

goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
case(Bang P)
[PROOF STATE]
proof (state)
this:
hnf P \<Longrightarrow> P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)
hnf (!P)

goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (!P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (!P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (!P)

goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf (!P)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (1 subgoal):
 1. \<And>pi. \<lbrakk>hnf pi \<Longrightarrow> pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands pi); hnf (!pi)\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. !P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!P))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
!P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands (!P))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
P \<longmapsto> a[b] \<prec> P' = (a{b}.P' \<in> summands P)

goal (1 subgoal):
 1. a \<noteq> x \<Longrightarrow> P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. a \<noteq> x \<Longrightarrow> P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
assume "a\<noteq>x"
[PROOF STATE]
proof (state)
this:
a \<noteq> x

goal (1 subgoal):
 1. a \<noteq> x \<Longrightarrow> P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
with assms
[PROOF STATE]
proof (chain)
picking this:
hnf P
a \<noteq> x
[PROOF STEP]
show "P \<longmapsto>a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)"
[PROOF STATE]
proof (prove)
using this:
hnf P
a \<noteq> x

goal (1 subgoal):
 1. P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
proof(nominal_induct P avoiding: x P' rule: pi.strong_induct)
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<And>x P'. \<lbrakk>hnf \<zero>; a \<noteq> x\<rbrakk> \<Longrightarrow> \<zero> \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands \<zero>)
 2. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1{name2}.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1{name2}.pi))
 3. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (\<tau>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (\<tau>.pi))
 4. \<And>name1 name2 pi x P'. \<lbrakk>name2 \<sharp> x; name2 \<sharp> P'; name2 \<sharp> name1; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1<name2>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1<name2>.pi))
 5. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 6. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 7. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 8. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 9. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 10. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
case PiNil
[PROOF STATE]
proof (state)
this:
hnf \<zero>
a \<noteq> x

goal (10 subgoals):
 1. \<And>x P'. \<lbrakk>hnf \<zero>; a \<noteq> x\<rbrakk> \<Longrightarrow> \<zero> \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands \<zero>)
 2. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1{name2}.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1{name2}.pi))
 3. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (\<tau>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (\<tau>.pi))
 4. \<And>name1 name2 pi x P'. \<lbrakk>name2 \<sharp> x; name2 \<sharp> P'; name2 \<sharp> name1; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1<name2>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1<name2>.pi))
 5. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 6. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 7. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 8. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 9. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 10. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<zero> \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands \<zero>)
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<zero> \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands \<zero>)

goal (9 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1{name2}.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (\<tau>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi x P'. \<lbrakk>name2 \<sharp> x; name2 \<sharp> P'; name2 \<sharp> name1; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1<name2>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1{name2}.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (\<tau>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi x P'. \<lbrakk>name2 \<sharp> x; name2 \<sharp> P'; name2 \<sharp> name1; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1<name2>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
case(Output a b P)
[PROOF STATE]
proof (state)
this:
\<lbrakk>hnf P; a \<noteq> ?b\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>?b> \<prec> ?ba = (<\<nu>?b>a{?b}.?ba \<in> summands P)
hnf (a{b}.P)
a \<noteq> x

goal (9 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1{name2}.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1{name2}.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1{name2}.pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (\<tau>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (\<tau>.pi))
 3. \<And>name1 name2 pi x P'. \<lbrakk>name2 \<sharp> x; name2 \<sharp> P'; name2 \<sharp> name1; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1<name2>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1<name2>.pi))
 4. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 5. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 6. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 7. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 8. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 9. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a{b}.P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (a{b}.P))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
a{b}.P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (a{b}.P))

goal (8 subgoals):
 1. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (\<tau>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi x P'. \<lbrakk>name2 \<sharp> x; name2 \<sharp> P'; name2 \<sharp> name1; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1<name2>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (\<tau>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi x P'. \<lbrakk>name2 \<sharp> x; name2 \<sharp> P'; name2 \<sharp> name1; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1<name2>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
case(Tau P)
[PROOF STATE]
proof (state)
this:
\<lbrakk>hnf P; a \<noteq> ?b\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>?b> \<prec> ?ba = (<\<nu>?b>a{?b}.?ba \<in> summands P)
hnf (\<tau>.P)
a \<noteq> x

goal (8 subgoals):
 1. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (\<tau>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> \<tau>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (\<tau>.pi))
 2. \<And>name1 name2 pi x P'. \<lbrakk>name2 \<sharp> x; name2 \<sharp> P'; name2 \<sharp> name1; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1<name2>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1<name2>.pi))
 3. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 4. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 5. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 6. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 7. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 8. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<tau>.P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (\<tau>.P))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
\<tau>.P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (\<tau>.P))

goal (7 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>name2 \<sharp> x; name2 \<sharp> P'; name2 \<sharp> name1; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1<name2>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>name2 \<sharp> x; name2 \<sharp> P'; name2 \<sharp> name1; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1<name2>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
case(Input a x P)
[PROOF STATE]
proof (state)
this:
xa__ \<sharp> x
xa__ \<sharp> P'
xa__ \<sharp> a
\<lbrakk>hnf P; a \<noteq> ?b\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>?b> \<prec> ?ba = (<\<nu>?b>a{?b}.?ba \<in> summands P)
hnf (a<xa__>.P)
a \<noteq> x

goal (7 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>name2 \<sharp> x; name2 \<sharp> P'; name2 \<sharp> name1; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (name1<name2>.pi); a \<noteq> x\<rbrakk> \<Longrightarrow> name1<name2>.pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (name1<name2>.pi))
 2. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 3. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 4. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 5. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 6. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 7. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a<xa__>.P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (a<xa__>.P))
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
a<xa__>.P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (a<xa__>.P))

goal (6 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
case(Match a b P)
[PROOF STATE]
proof (state)
this:
\<lbrakk>hnf P; a \<noteq> ?b\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>?b> \<prec> ?ba = (<\<nu>?b>a{?b}.?ba \<in> summands P)
hnf ([a\<frown>b]P)
a \<noteq> x

goal (6 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf ([a\<frown>b]P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf ([a\<frown>b]P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf ([a\<frown>b]P)

goal (6 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf ([a\<frown>b]P)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (6 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<frown>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<frown>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<frown>name2]pi))
 2. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 3. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 4. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 5. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 6. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. [a\<frown>b]P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([a\<frown>b]P))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
[a\<frown>b]P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([a\<frown>b]P))

goal (5 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
case(Mismatch a b P)
[PROOF STATE]
proof (state)
this:
\<lbrakk>hnf P; a \<noteq> ?b\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>?b> \<prec> ?ba = (<\<nu>?b>a{?b}.?ba \<in> summands P)
hnf ([a\<noteq>b]P)
a \<noteq> x

goal (5 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf ([a\<noteq>b]P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf ([a\<noteq>b]P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf ([a\<noteq>b]P)

goal (5 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf ([a\<noteq>b]P)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (5 subgoals):
 1. \<And>name1 name2 pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf ([name1\<noteq>name2]pi); a \<noteq> x\<rbrakk> \<Longrightarrow> [name1\<noteq>name2]pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([name1\<noteq>name2]pi))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 3. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 4. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 5. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. [a\<noteq>b]P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([a\<noteq>b]P))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
[a\<noteq>b]P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands ([a\<noteq>b]P))

goal (4 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
case(Sum P Q)
[PROOF STATE]
proof (state)
this:
\<lbrakk>hnf P; a \<noteq> ?b\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>?b> \<prec> ?ba = (<\<nu>?b>a{?b}.?ba \<in> summands P)
\<lbrakk>hnf Q; a \<noteq> ?b\<rbrakk> \<Longrightarrow> Q \<longmapsto> a<\<nu>?b> \<prec> ?ba = (<\<nu>?b>a{?b}.?ba \<in> summands Q)
hnf (P \<oplus> Q)
a \<noteq> x

goal (4 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (P \<oplus> Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (P \<oplus> Q)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
hence Phnf: "hnf P" and Qhnf: "hnf Q"
[PROOF STATE]
proof (prove)
using this:
hnf (P \<oplus> Q)

goal (1 subgoal):
 1. hnf P &&& hnf Q
[PROOF STEP]
by simp+
[PROOF STATE]
proof (state)
this:
hnf P
hnf Q

goal (4 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have aineqx: "a \<noteq> x"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a \<noteq> x
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
a \<noteq> x

goal (4 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have IHP: "P \<longmapsto>a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
have "\<And>x P'. \<lbrakk>hnf P; a \<noteq> x\<rbrakk> \<Longrightarrow> P \<longmapsto>a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x P'. \<lbrakk>hnf P; a \<noteq> x\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>hnf P; a \<noteq> ?x\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>?x> \<prec> ?P' = (<\<nu>?x>a{?x}.?P' \<in> summands P)

goal (1 subgoal):
 1. P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
with Phnf aineqx
[PROOF STATE]
proof (chain)
picking this:
hnf P
a \<noteq> x
\<lbrakk>hnf P; a \<noteq> ?x\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>?x> \<prec> ?P' = (<\<nu>?x>a{?x}.?P' \<in> summands P)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
hnf P
a \<noteq> x
\<lbrakk>hnf P; a \<noteq> ?x\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>?x> \<prec> ?P' = (<\<nu>?x>a{?x}.?P' \<in> summands P)

goal (1 subgoal):
 1. P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)

goal (4 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have IHQ: "Q \<longmapsto>a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)
[PROOF STEP]
have "\<And>x Q'. \<lbrakk>hnf Q; a \<noteq> x\<rbrakk> \<Longrightarrow> Q \<longmapsto>a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x Q'. \<lbrakk>hnf Q; a \<noteq> x\<rbrakk> \<Longrightarrow> Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
\<lbrakk>hnf Q; a \<noteq> ?x\<rbrakk> \<Longrightarrow> Q \<longmapsto> a<\<nu>?x> \<prec> P' = (<\<nu>?x>a{?x}.P' \<in> summands Q)

goal (1 subgoal):
 1. Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)
[PROOF STEP]
with Qhnf aineqx
[PROOF STATE]
proof (chain)
picking this:
hnf Q
a \<noteq> x
\<lbrakk>hnf Q; a \<noteq> ?x\<rbrakk> \<Longrightarrow> Q \<longmapsto> a<\<nu>?x> \<prec> P' = (<\<nu>?x>a{?x}.P' \<in> summands Q)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
hnf Q
a \<noteq> x
\<lbrakk>hnf Q; a \<noteq> ?x\<rbrakk> \<Longrightarrow> Q \<longmapsto> a<\<nu>?x> \<prec> P' = (<\<nu>?x>a{?x}.P' \<in> summands Q)

goal (1 subgoal):
 1. Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)

goal (4 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
from IHP IHQ
[PROOF STATE]
proof (chain)
picking this:
P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)
[PROOF STEP]
have "P \<oplus> Q \<longmapsto>a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q)"
[PROOF STATE]
proof (prove)
using this:
P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)

goal (1 subgoal):
 1. P \<oplus> Q \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q)
[PROOF STEP]
by(erule_tac sumCases, auto)
[PROOF STATE]
proof (state)
this:
P \<oplus> Q \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
P \<oplus> Q \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q)

goal (4 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
from IHP IHQ
[PROOF STATE]
proof (chain)
picking this:
P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)
[PROOF STEP]
have "<\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto>a<\<nu>x> \<prec> P'"
[PROOF STATE]
proof (prove)
using this:
P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)
Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands Q)

goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
by(auto dest: Sum1 Sum2)
[PROOF STATE]
proof (state)
this:
<\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> a<\<nu>x> \<prec> P'

goal (4 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<oplus> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<oplus> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<oplus> pi2))
 2. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 3. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 4. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
P \<oplus> Q \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q)
<\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
P \<oplus> Q \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q)
<\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q) \<Longrightarrow> P \<oplus> Q \<longmapsto> a<\<nu>x> \<prec> P'

goal (1 subgoal):
 1. P \<oplus> Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
P \<oplus> Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (P \<oplus> Q))

goal (3 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
case(Par P Q)
[PROOF STATE]
proof (state)
this:
\<lbrakk>hnf P; a \<noteq> ?b\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>?b> \<prec> ?ba = (<\<nu>?b>a{?b}.?ba \<in> summands P)
\<lbrakk>hnf Q; a \<noteq> ?b\<rbrakk> \<Longrightarrow> Q \<longmapsto> a<\<nu>?b> \<prec> ?ba = (<\<nu>?b>a{?b}.?ba \<in> summands Q)
hnf (P \<parallel> Q)
a \<noteq> x

goal (3 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (P \<parallel> Q)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (P \<parallel> Q)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (P \<parallel> Q)

goal (3 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf (P \<parallel> Q)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (3 subgoals):
 1. \<And>pi1 pi2 x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi1; a \<noteq> b\<rbrakk> \<Longrightarrow> pi1 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi1); \<And>b ba. \<lbrakk>hnf pi2; a \<noteq> b\<rbrakk> \<Longrightarrow> pi2 \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi2); hnf (pi1 \<parallel> pi2); a \<noteq> x\<rbrakk> \<Longrightarrow> pi1 \<parallel> pi2 \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (pi1 \<parallel> pi2))
 2. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 3. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. P \<parallel> Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (P \<parallel> Q))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
P \<parallel> Q \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (P \<parallel> Q))

goal (2 subgoals):
 1. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
case(Res y P)
[PROOF STATE]
proof (state)
this:
y \<sharp> x
y \<sharp> P'
\<lbrakk>hnf P; a \<noteq> ?b\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>?b> \<prec> ?ba = (<\<nu>?b>a{?b}.?ba \<in> summands P)
hnf (<\<nu>y>P)
a \<noteq> x

goal (2 subgoals):
 1. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have Phnf: "hnf (<\<nu>y>P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (<\<nu>y>P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (<\<nu>y>P)

goal (2 subgoals):
 1. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
then
[PROOF STATE]
proof (chain)
picking this:
hnf (<\<nu>y>P)
[PROOF STEP]
obtain b P'' where bineqy: "b \<noteq> y" and PeqP'': "P = b{y}.P''"
[PROOF STATE]
proof (prove)
using this:
hnf (<\<nu>y>P)

goal (1 subgoal):
 1. (\<And>b P''. \<lbrakk>b \<noteq> y; P = b{y}.P''\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by auto
[PROOF STATE]
proof (state)
this:
b \<noteq> y
P = b{y}.P''

goal (2 subgoals):
 1. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have "y \<sharp> x"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. y \<sharp> x
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
y \<sharp> x

goal (2 subgoals):
 1. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
hence xineqy:  "x \<noteq> y"
[PROOF STATE]
proof (prove)
using this:
y \<sharp> x

goal (1 subgoal):
 1. x \<noteq> y
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
x \<noteq> y

goal (2 subgoals):
 1. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have yFreshP': "y \<sharp> P'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. y \<sharp> P'
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
y \<sharp> P'

goal (2 subgoals):
 1. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have aineqx: "a\<noteq>x"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. a \<noteq> x
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
a \<noteq> x

goal (2 subgoals):
 1. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have "<\<nu>y>P \<longmapsto>a<\<nu>x> \<prec> P' \<Longrightarrow> (<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
assume Trans: "<\<nu>y>P \<longmapsto>a<\<nu>x> \<prec> P'"
[PROOF STATE]
proof (state)
this:
<\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
hence  aeqb: "a = b"
[PROOF STATE]
proof (prove)
using this:
<\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'

goal (1 subgoal):
 1. a = b
[PROOF STEP]
using xineqy bineqy PeqP''
[PROOF STATE]
proof (prove)
using this:
<\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
x \<noteq> y
b \<noteq> y
P = b{y}.P''

goal (1 subgoal):
 1. a = b
[PROOF STEP]
by(induct rule: resCasesB', auto elim: outputCases simp add: residual.inject alpha' abs_fresh pi.inject)
[PROOF STATE]
proof (state)
this:
a = b

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
have Goal: "\<And>x P'. \<lbrakk><\<nu>y>b{y}.P'' \<longmapsto>b<\<nu>x> \<prec> P'; x \<noteq> y; x \<noteq> b; x \<sharp> P''\<rbrakk> \<Longrightarrow>
                           <\<nu>x>b{x}.P' \<in> summands(<\<nu>y>b{y}.P'')"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>x P'. \<lbrakk><\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; x \<noteq> y; x \<noteq> b; x \<sharp> P''\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x P'. \<lbrakk><\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; x \<noteq> y; x \<noteq> b; x \<sharp> P''\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
fix x P'
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>x P'. \<lbrakk><\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; x \<noteq> y; x \<noteq> b; x \<sharp> P''\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
assume xFreshP'': "(x::name) \<sharp> P''" and xineqb: "x \<noteq> b"
[PROOF STATE]
proof (state)
this:
x \<sharp> P''
x \<noteq> b

goal (1 subgoal):
 1. \<And>x P'. \<lbrakk><\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; x \<noteq> y; x \<noteq> b; x \<sharp> P''\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
assume "<\<nu>y>b{y}.P'' \<longmapsto>b<\<nu>x> \<prec> P'" and xineqy: "x \<noteq> y"
[PROOF STATE]
proof (state)
this:
<\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'
x \<noteq> y

goal (1 subgoal):
 1. \<And>x P'. \<lbrakk><\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; x \<noteq> y; x \<noteq> b; x \<sharp> P''\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
<\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'
x \<noteq> y

goal (1 subgoal):
 1. \<And>x P'. \<lbrakk><\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; x \<noteq> y; x \<noteq> b; x \<sharp> P''\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
from \<open>x \<noteq> b\<close> \<open>x \<sharp> P''\<close> \<open>x \<noteq> y\<close>
[PROOF STATE]
proof (chain)
picking this:
x \<noteq> b
x \<sharp> P''
x \<noteq> y
[PROOF STEP]
have "x \<sharp> b{y}.P''"
[PROOF STATE]
proof (prove)
using this:
x \<noteq> b
x \<sharp> P''
x \<noteq> y

goal (1 subgoal):
 1. x \<sharp> b{y}.P''
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
x \<sharp> b{y}.P''

goal (1 subgoal):
 1. \<And>x P'. \<lbrakk><\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; x \<noteq> y; x \<noteq> b; x \<sharp> P''\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
<\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'
x \<noteq> y
x \<sharp> b{y}.P''
[PROOF STEP]
show "<\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')"
[PROOF STATE]
proof (prove)
using this:
<\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'
x \<noteq> y
x \<sharp> b{y}.P''

goal (1 subgoal):
 1. <\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
proof(induct rule: resCasesB)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>b P'. \<lbrakk>b{y}.P'' \<longmapsto> b[y] \<prec> P'; b \<noteq> y; BoundOutputS b = BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.([(x, y)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
 2. \<And>P'. \<lbrakk>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; y \<sharp> BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.(<\<nu>y>P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
case(cOpen a P''')
[PROOF STATE]
proof (state)
this:
b{y}.P'' \<longmapsto> a[y] \<prec> P'''
a \<noteq> y
BoundOutputS b = BoundOutputS a

goal (2 subgoals):
 1. \<And>b P'. \<lbrakk>b{y}.P'' \<longmapsto> b[y] \<prec> P'; b \<noteq> y; BoundOutputS b = BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.([(x, y)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
 2. \<And>P'. \<lbrakk>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; y \<sharp> BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.(<\<nu>y>P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
have "BoundOutputS b = BoundOutputS a"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. BoundOutputS b = BoundOutputS a
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
BoundOutputS b = BoundOutputS a

goal (2 subgoals):
 1. \<And>b P'. \<lbrakk>b{y}.P'' \<longmapsto> b[y] \<prec> P'; b \<noteq> y; BoundOutputS b = BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.([(x, y)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
 2. \<And>P'. \<lbrakk>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; y \<sharp> BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.(<\<nu>y>P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
hence beqa: "b = a"
[PROOF STATE]
proof (prove)
using this:
BoundOutputS b = BoundOutputS a

goal (1 subgoal):
 1. b = a
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
b = a

goal (2 subgoals):
 1. \<And>b P'. \<lbrakk>b{y}.P'' \<longmapsto> b[y] \<prec> P'; b \<noteq> y; BoundOutputS b = BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.([(x, y)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
 2. \<And>P'. \<lbrakk>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; y \<sharp> BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.(<\<nu>y>P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
have Trans: "b{y}.P'' \<longmapsto>a[y] \<prec> P'''"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. b{y}.P'' \<longmapsto> a[y] \<prec> P'''
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
b{y}.P'' \<longmapsto> a[y] \<prec> P'''

goal (2 subgoals):
 1. \<And>b P'. \<lbrakk>b{y}.P'' \<longmapsto> b[y] \<prec> P'; b \<noteq> y; BoundOutputS b = BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.([(x, y)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
 2. \<And>P'. \<lbrakk>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; y \<sharp> BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.(<\<nu>y>P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
with PeqP''
[PROOF STATE]
proof (chain)
picking this:
P = b{y}.P''
b{y}.P'' \<longmapsto> a[y] \<prec> P'''
[PROOF STEP]
have P''eqP''': "P'' = P'''"
[PROOF STATE]
proof (prove)
using this:
P = b{y}.P''
b{y}.P'' \<longmapsto> a[y] \<prec> P'''

goal (1 subgoal):
 1. P'' = P'''
[PROOF STEP]
by(force elim: outputCases simp add: residual.inject)
[PROOF STATE]
proof (state)
this:
P'' = P'''

goal (2 subgoals):
 1. \<And>b P'. \<lbrakk>b{y}.P'' \<longmapsto> b[y] \<prec> P'; b \<noteq> y; BoundOutputS b = BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.([(x, y)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
 2. \<And>P'. \<lbrakk>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; y \<sharp> BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.(<\<nu>y>P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
with bineqy xineqy xFreshP''
[PROOF STATE]
proof (chain)
picking this:
b \<noteq> y
x \<noteq> y
x \<sharp> P''
P'' = P'''
[PROOF STEP]
have "y \<sharp> b{x}.([(x, y)] \<bullet> P''')"
[PROOF STATE]
proof (prove)
using this:
b \<noteq> y
x \<noteq> y
x \<sharp> P''
P'' = P'''

goal (1 subgoal):
 1. y \<sharp> b{x}.([(x, y)] \<bullet> P''')
[PROOF STEP]
by(simp add: name_fresh_abs name_calc name_fresh_left)
[PROOF STATE]
proof (state)
this:
y \<sharp> b{x}.([(x, y)] \<bullet> P''')

goal (2 subgoals):
 1. \<And>b P'. \<lbrakk>b{y}.P'' \<longmapsto> b[y] \<prec> P'; b \<noteq> y; BoundOutputS b = BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.([(x, y)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
 2. \<And>P'. \<lbrakk>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; y \<sharp> BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.(<\<nu>y>P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
with bineqy Phnf PeqP'' P''eqP''' xineqb
[PROOF STATE]
proof (chain)
picking this:
b \<noteq> y
hnf (<\<nu>y>P)
P = b{y}.P''
P'' = P'''
x \<noteq> b
y \<sharp> b{x}.([(x, y)] \<bullet> P''')
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
b \<noteq> y
hnf (<\<nu>y>P)
P = b{y}.P''
P'' = P'''
x \<noteq> b
y \<sharp> b{x}.([(x, y)] \<bullet> P''')

goal (1 subgoal):
 1. <\<nu>x>b{x}.([(x, y)] \<bullet> P''') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
by(simp only: alphaRes, simp add: name_calc)
[PROOF STATE]
proof (state)
this:
<\<nu>x>b{x}.([(x, y)] \<bullet> P''') \<in> summands (<\<nu>y>b{y}.P'')

goal (1 subgoal):
 1. \<And>P'. \<lbrakk>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; y \<sharp> BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.(<\<nu>y>P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>P'. \<lbrakk>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; y \<sharp> BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.(<\<nu>y>P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
case(cRes P''')
[PROOF STATE]
proof (state)
this:
b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'''
y \<sharp> BoundOutputS b

goal (1 subgoal):
 1. \<And>P'. \<lbrakk>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; y \<sharp> BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.(<\<nu>y>P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
have "b{y}.P'' \<longmapsto>b<\<nu>x> \<prec> P'''"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'''
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'''

goal (1 subgoal):
 1. \<And>P'. \<lbrakk>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; y \<sharp> BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.(<\<nu>y>P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'''

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

goal (1 subgoal):
 1. \<And>P'. \<lbrakk>b{y}.P'' \<longmapsto> b<\<nu>x> \<prec> P'; y \<sharp> BoundOutputS b\<rbrakk> \<Longrightarrow> <\<nu>x>b{x}.(<\<nu>y>P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. <\<nu>x>b{x}.(<\<nu>y>P''') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
<\<nu>x>b{x}.(<\<nu>y>P''') \<in> summands (<\<nu>y>b{y}.P'')

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
<\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<lbrakk><\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>?x> \<prec> ?P'; ?x \<noteq> y; ?x \<noteq> b; ?x \<sharp> P''\<rbrakk> \<Longrightarrow> <\<nu>?x>b{?x}.?P' \<in> summands (<\<nu>y>b{y}.P'')

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
obtain z where zineqx: "z \<noteq> x" and zineqy: "z \<noteq> y" and zFreshP'': "z \<sharp> P''"
                 and zineqb: "z \<noteq> b" and zFreshP': "z \<sharp> P'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<And>z. \<lbrakk>z \<noteq> x; z \<noteq> y; z \<sharp> P''; z \<noteq> b; z \<sharp> P'\<rbrakk> \<Longrightarrow> thesis) \<Longrightarrow> thesis
[PROOF STEP]
by(force intro: name_exists_fresh[of "(x, y, b, P'', P')"] simp add: fresh_prod)
[PROOF STATE]
proof (state)
this:
z \<noteq> x
z \<noteq> y
z \<sharp> P''
z \<noteq> b
z \<sharp> P'

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
from zFreshP' aeqb PeqP'' Trans
[PROOF STATE]
proof (chain)
picking this:
z \<sharp> P'
a = b
P = b{y}.P''
<\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
have Trans': "<\<nu>y>b{y}.P'' \<longmapsto>b<\<nu>z> \<prec> [(z, x)] \<bullet> P'"
[PROOF STATE]
proof (prove)
using this:
z \<sharp> P'
a = b
P = b{y}.P''
<\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'

goal (1 subgoal):
 1. <\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>z> \<prec> [(z, x)] \<bullet> P'
[PROOF STEP]
by(simp add: alphaBoundResidual name_swap)
[PROOF STATE]
proof (state)
this:
<\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>z> \<prec> [(z, x)] \<bullet> P'

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
hence "<\<nu>z>b{z}.([(z, x)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')"
[PROOF STATE]
proof (prove)
using this:
<\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>z> \<prec> [(z, x)] \<bullet> P'

goal (1 subgoal):
 1. <\<nu>z>b{z}.([(z, x)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
using zineqy zineqb zFreshP''
[PROOF STATE]
proof (prove)
using this:
<\<nu>y>b{y}.P'' \<longmapsto> b<\<nu>z> \<prec> [(z, x)] \<bullet> P'
z \<noteq> y
z \<noteq> b
z \<sharp> P''

goal (1 subgoal):
 1. <\<nu>z>b{z}.([(z, x)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
by(rule Goal)
[PROOF STATE]
proof (state)
this:
<\<nu>z>b{z}.([(z, x)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
<\<nu>z>b{z}.([(z, x)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
from bineqy zineqx zFreshP' aineqx aeqb
[PROOF STATE]
proof (chain)
picking this:
b \<noteq> y
z \<noteq> x
z \<sharp> P'
a \<noteq> x
a = b
[PROOF STEP]
have "x \<sharp> b{z}.([(z, x)] \<bullet> P')"
[PROOF STATE]
proof (prove)
using this:
b \<noteq> y
z \<noteq> x
z \<sharp> P'
a \<noteq> x
a = b

goal (1 subgoal):
 1. x \<sharp> b{z}.([(z, x)] \<bullet> P')
[PROOF STEP]
by(simp add: name_fresh_left name_calc)
[PROOF STATE]
proof (state)
this:
x \<sharp> b{z}.([(z, x)] \<bullet> P')

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
<\<nu>z>b{z}.([(z, x)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
x \<sharp> b{z}.([(z, x)] \<bullet> P')
[PROOF STEP]
have "<\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')"
[PROOF STATE]
proof (prove)
using this:
<\<nu>z>b{z}.([(z, x)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
x \<sharp> b{z}.([(z, x)] \<bullet> P')

goal (1 subgoal):
 1. <\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
using zineqb
[PROOF STATE]
proof (prove)
using this:
<\<nu>z>b{z}.([(z, x)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
x \<sharp> b{z}.([(z, x)] \<bullet> P')
z \<noteq> b

goal (1 subgoal):
 1. <\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
by(simp add: alphaRes name_calc)
[PROOF STATE]
proof (state)
this:
<\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
with aeqb PeqP''
[PROOF STATE]
proof (chain)
picking this:
a = b
P = b{y}.P''
<\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
a = b
P = b{y}.P''
<\<nu>x>b{x}.P' \<in> summands (<\<nu>y>b{y}.P'')

goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
<\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)

goal (2 subgoals):
 1. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
<\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)

goal (2 subgoals):
 1. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have "<\<nu>x>a{x}.P' \<in> summands(<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto>a<\<nu>x> \<prec> P'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
assume "<\<nu>x>a{x}.P' \<in> summands(<\<nu>y>P)"
[PROOF STATE]
proof (state)
this:
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)

goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
with PeqP''
[PROOF STATE]
proof (chain)
picking this:
P = b{y}.P''
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
[PROOF STEP]
have Summ: "<\<nu>x>a{x}.P' \<in> summands(<\<nu>y>b{y}.P'')"
[PROOF STATE]
proof (prove)
using this:
P = b{y}.P''
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)

goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>b{y}.P'')

goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>b{y}.P'')

goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
with bineqy xineqy
[PROOF STATE]
proof (chain)
picking this:
b \<noteq> y
x \<noteq> y
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
have aeqb: "a = b"
[PROOF STATE]
proof (prove)
using this:
b \<noteq> y
x \<noteq> y
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>b{y}.P'')

goal (1 subgoal):
 1. a = b
[PROOF STEP]
by(auto simp add: if_split pi.inject name_abs_eq name_fresh_fresh)
[PROOF STATE]
proof (state)
this:
a = b

goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
from bineqy xineqy yFreshP'
[PROOF STATE]
proof (chain)
picking this:
b \<noteq> y
x \<noteq> y
y \<sharp> P'
[PROOF STEP]
have "y \<sharp> b{x}.P'"
[PROOF STATE]
proof (prove)
using this:
b \<noteq> y
x \<noteq> y
y \<sharp> P'

goal (1 subgoal):
 1. y \<sharp> b{x}.P'
[PROOF STEP]
by(simp add: name_calc)
[PROOF STATE]
proof (state)
this:
y \<sharp> b{x}.P'

goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
with Summ aeqb bineqy aineqx
[PROOF STATE]
proof (chain)
picking this:
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
a = b
b \<noteq> y
a \<noteq> x
y \<sharp> b{x}.P'
[PROOF STEP]
have "<\<nu>y>b{y}.([(x, y)] \<bullet> P') \<in> summands(<\<nu>y>b{y}.P'')"
[PROOF STATE]
proof (prove)
using this:
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
a = b
b \<noteq> y
a \<noteq> x
y \<sharp> b{x}.P'

goal (1 subgoal):
 1. <\<nu>y>b{y}.([(x, y)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
by(simp only: alphaRes, simp add: name_calc)
[PROOF STATE]
proof (state)
this:
<\<nu>y>b{y}.([(x, y)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')

goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
with aeqb PeqP''
[PROOF STATE]
proof (chain)
picking this:
a = b
P = b{y}.P''
<\<nu>y>b{y}.([(x, y)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')
[PROOF STEP]
have "<\<nu>y>P \<longmapsto>a<\<nu>y> \<prec> [(x, y)] \<bullet> P'"
[PROOF STATE]
proof (prove)
using this:
a = b
P = b{y}.P''
<\<nu>y>b{y}.([(x, y)] \<bullet> P') \<in> summands (<\<nu>y>b{y}.P'')

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>y> \<prec> [(x, y)] \<bullet> P'
[PROOF STEP]
by(auto intro: Open Output simp add: if_split pi.inject name_abs_eq)
[PROOF STATE]
proof (state)
this:
<\<nu>y>P \<longmapsto> a<\<nu>y> \<prec> [(x, y)] \<bullet> P'

goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
<\<nu>y>P \<longmapsto> a<\<nu>y> \<prec> [(x, y)] \<bullet> P'

goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
from yFreshP'
[PROOF STATE]
proof (chain)
picking this:
y \<sharp> P'
[PROOF STEP]
have "x \<sharp> [(x, y)] \<bullet> P'"
[PROOF STATE]
proof (prove)
using this:
y \<sharp> P'

goal (1 subgoal):
 1. x \<sharp> [(x, y)] \<bullet> P'
[PROOF STEP]
by(simp add: name_fresh_left name_calc)
[PROOF STATE]
proof (state)
this:
x \<sharp> [(x, y)] \<bullet> P'

goal (1 subgoal):
 1. <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
<\<nu>y>P \<longmapsto> a<\<nu>y> \<prec> [(x, y)] \<bullet> P'
x \<sharp> [(x, y)] \<bullet> P'
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>b{y}.P'')
<\<nu>y>P \<longmapsto> a<\<nu>y> \<prec> [(x, y)] \<bullet> P'
x \<sharp> [(x, y)] \<bullet> P'

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
by(simp add: alphaBoundResidual name_swap)
[PROOF STATE]
proof (state)
this:
<\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'

goal (2 subgoals):
 1. \<And>name pi x P'. \<lbrakk>name \<sharp> x; name \<sharp> P'; \<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (<\<nu>name>pi); a \<noteq> x\<rbrakk> \<Longrightarrow> <\<nu>name>pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>name>pi))
 2. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
<\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'
[PROOF STEP]
show ?case
[PROOF STATE]
proof (prove)
using this:
<\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' \<Longrightarrow> <\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P)
<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P) \<Longrightarrow> <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P'

goal (1 subgoal):
 1. <\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
<\<nu>y>P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (<\<nu>y>P))

goal (1 subgoal):
 1. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
case(Bang P)
[PROOF STATE]
proof (state)
this:
\<lbrakk>hnf P; a \<noteq> ?b\<rbrakk> \<Longrightarrow> P \<longmapsto> a<\<nu>?b> \<prec> ?ba = (<\<nu>?b>a{?b}.?ba \<in> summands P)
hnf (!P)
a \<noteq> x

goal (1 subgoal):
 1. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
have "hnf (!P)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. hnf (!P)
[PROOF STEP]
by fact
[PROOF STATE]
proof (state)
this:
hnf (!P)

goal (1 subgoal):
 1. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
hence False
[PROOF STATE]
proof (prove)
using this:
hnf (!P)

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (1 subgoal):
 1. \<And>pi x P'. \<lbrakk>\<And>b ba. \<lbrakk>hnf pi; a \<noteq> b\<rbrakk> \<Longrightarrow> pi \<longmapsto> a<\<nu>b> \<prec> ba = (<\<nu>b>a{b}.ba \<in> summands pi); hnf (!pi); a \<noteq> x\<rbrakk> \<Longrightarrow> !pi \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!pi))
[PROOF STEP]
thus ?case
[PROOF STATE]
proof (prove)
using this:
False

goal (1 subgoal):
 1. !P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!P))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
!P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands (!P))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
P \<longmapsto> a<\<nu>x> \<prec> P' = (<\<nu>x>a{x}.P' \<in> summands P)

goal:
No subgoals!
[PROOF STEP]
qed