induct: fixes P :: "'c rexp \<Rightarrow> 'c rexp \<Rightarrow> bool"   and a0 :: "'c rexp"   and a1 :: "'c rexp" assumes "\<And>r1 r2 s. \<lbrakk>P r2 s; P r1 (ACI_nPlus r2 s)\<rbrakk> \<Longrightarrow> P (Plus r1 r2) s"   and "\<And>s1 s2. (\<lbrakk>Zero \<noteq> s1; \<not> Zero < s1\<rbrakk> \<Longrightarrow> P Zero s2) \<Longrightarrow> P Zero (Plus s1 s2)"   and "\<And>s1 s2. (\<lbrakk>Full \<noteq> s1; \<not> Full < s1\<rbrakk> \<Longrightarrow> P Full s2) \<Longrightarrow> P Full (Plus s1 s2)"   and "\<And>s1 s2. (\<lbrakk>One \<noteq> s1; \<not> One < s1\<rbrakk> \<Longrightarrow> P One s2) \<Longrightarrow> P One (Plus s1 s2)"   and "\<And>v s1 s2. (\<lbrakk>Atom v \<noteq> s1; \<not> Atom v < s1\<rbrakk> \<Longrightarrow> P (Atom v) s2) \<Longrightarrow> P (Atom v) (Plus s1 s2)"   and "\<And>v va s1 s2. (\<lbrakk>Times v va \<noteq> s1; \<not> Times v va < s1\<rbrakk> \<Longrightarrow> P (Times v va) s2) \<Longrightarrow> P (Times v va) (Plus s1 s2)"   and "\<And>v s1 s2. (\<lbrakk>Star v \<noteq> s1; \<not> Star v < s1\<rbrakk> \<Longrightarrow> P (Star v) s2) \<Longrightarrow> P (Star v) (Plus s1 s2)"   and "\<And>v s1 s2. (\<lbrakk>rexp.Not v \<noteq> s1; \<not> rexp.Not v < s1\<rbrakk> \<Longrightarrow> P (rexp.Not v) s2) \<Longrightarrow> P (rexp.Not v) (Plus s1 s2)"   and "\<And>v va s1 s2. (\<lbrakk>rexp.Inter v va \<noteq> s1; \<not> rexp.Inter v va < s1\<rbrakk> \<Longrightarrow> P (rexp.Inter v va) s2) \<Longrightarrow> P (rexp.Inter v va) (Plus s1 s2)"   and "\<And>v s1 s2. (\<lbrakk>Pr v \<noteq> s1; \<not> Pr v < s1\<rbrakk> \<Longrightarrow> P (Pr v) s2) \<Longrightarrow> P (Pr v) (Plus s1 s2)"   and "P Zero Zero"   and "P Zero Full"   and "P Zero One"   and "\<And>v. P Zero (Atom v)"   and "\<And>v va. P Zero (Times v va)"   and "\<And>v. P Zero (Star v)"   and "\<And>v. P Zero (rexp.Not v)"   and "\<And>v va. P Zero (rexp.Inter v va)"   and "\<And>v. P Zero (Pr v)"   and "P Full Zero"   and "P Full Full"   and "P Full One"   and "\<And>v. P Full (Atom v)"   and "\<And>v va. P Full (Times v va)"   and "\<And>v. P Full (Star v)"   and "\<And>v. P Full (rexp.Not v)"   and "\<And>v va. P Full (rexp.Inter v va)"   and "\<And>v. P Full (Pr v)"   and "P One Zero"   and "P One Full"   and "P One One"   and "\<And>v. P One (Atom v)"   and "\<And>v va. P One (Times v va)"   and "\<And>v. P One (Star v)"   and "\<And>v. P One (rexp.Not v)"   and "\<And>v va. P One (rexp.Inter v va)"   and "\<And>v. P One (Pr v)"   and "\<And>v. P (Atom v) Zero"   and "\<And>v. P (Atom v) Full"   and "\<And>v. P (Atom v) One"   and "\<And>v va. P (Atom v) (Atom va)"   and "\<And>v va vb. P (Atom v) (Times va vb)"   and "\<And>v va. P (Atom v) (Star va)"   and "\<And>v va. P (Atom v) (rexp.Not va)"   and "\<And>v va vb. P (Atom v) (rexp.Inter va vb)"   and "\<And>v va. P (Atom v) (Pr va)"   and "\<And>v va. P (Times v va) Zero"   and "\<And>v va. P (Times v va) Full"   and "\<And>v va. P (Times v va) One"   and "\<And>v va vb. P (Times v va) (Atom vb)"   and "\<And>v va vb vc. P (Times v va) (Times vb vc)"   and "\<And>v va vb. P (Times v va) (Star vb)"   and "\<And>v va vb. P (Times v va) (rexp.Not vb)"   and "\<And>v va vb vc. P (Times v va) (rexp.Inter vb vc)"   and "\<And>v va vb. P (Times v va) (Pr vb)"   and "\<And>v. P (Star v) Zero"   and "\<And>v. P (Star v) Full"   and "\<And>v. P (Star v) One"   and "\<And>v va. P (Star v) (Atom va)"   and "\<And>v va vb. P (Star v) (Times va vb)"   and "\<And>v va. P (Star v) (Star va)"   and "\<And>v va. P (Star v) (rexp.Not va)"   and "\<And>v va vb. P (Star v) (rexp.Inter va vb)"   and "\<And>v va. P (Star v) (Pr va)"   and "\<And>v. P (rexp.Not v) Zero"   and "\<And>v. P (rexp.Not v) Full"   and "\<And>v. P (rexp.Not v) One"   and "\<And>v va. P (rexp.Not v) (Atom va)"   and "\<And>v va vb. P (rexp.Not v) (Times va vb)"   and "\<And>v va. P (rexp.Not v) (Star va)"   and "\<And>v va. P (rexp.Not v) (rexp.Not va)"   and "\<And>v va vb. P (rexp.Not v) (rexp.Inter va vb)"   and "\<And>v va. P (rexp.Not v) (Pr va)"   and "\<And>v va. P (rexp.Inter v va) Zero"   and "\<And>v va. P (rexp.Inter v va) Full"   and "\<And>v va. P (rexp.Inter v va) One"   and "\<And>v va vb. P (rexp.Inter v va) (Atom vb)"   and "\<And>v va vb vc. P (rexp.Inter v va) (Times vb vc)"   and "\<And>v va vb. P (rexp.Inter v va) (Star vb)"   and "\<And>v va vb. P (rexp.Inter v va) (rexp.Not vb)"   and "\<And>v va vb vc. P (rexp.Inter v va) (rexp.Inter vb vc)"   and "\<And>v va vb. P (rexp.Inter v va) (Pr vb)"   and "\<And>v. P (Pr v) Zero"   and "\<And>v. P (Pr v) Full"   and "\<And>v. P (Pr v) One"   and "\<And>v va. P (Pr v) (Atom va)"   and "\<And>v va vb. P (Pr v) (Times va vb)"   and "\<And>v va. P (Pr v) (Star va)"   and "\<And>v va. P (Pr v) (rexp.Not va)"   and "\<And>v va vb. P (Pr v) (rexp.Inter va vb)"   and "\<And>v va. P (Pr v) (Pr va)" shows "P a0 a1"