induct: fixes P :: "'b match_expr \<Rightarrow> bool"   and a0 :: "'b match_expr" assumes "P MatchAny"   and "\<And>a. P (Match a)"   and "\<And>m. P m \<Longrightarrow> P (MatchNot (MatchNot m))"   and "\<And>v. P (Match v) \<Longrightarrow> P (MatchNot (Match v))"   and "\<And>v va. P (MatchAnd v va) \<Longrightarrow> P (MatchNot (MatchAnd v va))"   and "P MatchAny \<Longrightarrow> P (MatchNot MatchAny)"   and "P (MatchAnd MatchAny MatchAny)"   and "\<And>v. P (Match v) \<Longrightarrow> P (MatchAnd MatchAny (Match v))"   and "\<And>v. P (MatchNot v) \<Longrightarrow> P (MatchAnd MatchAny (MatchNot v))"   and "\<And>v va. P (MatchAnd v va) \<Longrightarrow> P (MatchAnd MatchAny (MatchAnd v va))"   and "\<And>v. P (Match v) \<Longrightarrow> P (MatchAnd (Match v) MatchAny)"   and "\<And>v. P (MatchNot v) \<Longrightarrow> P (MatchAnd (MatchNot v) MatchAny)"   and "\<And>v va. P (MatchAnd v va) \<Longrightarrow> P (MatchAnd (MatchAnd v va) MatchAny)"   and "\<And>v. P (MatchAnd (Match v) (MatchNot MatchAny))"   and "\<And>v. P (MatchAnd (MatchNot v) (MatchNot MatchAny))"   and "\<And>v va. P (MatchAnd (MatchAnd v va) (MatchNot MatchAny))"   and "\<And>v. P (MatchAnd (MatchNot MatchAny) (Match v))"   and "\<And>va. P (MatchAnd (MatchNot MatchAny) (MatchNot (Match va)))"   and "\<And>va. P (MatchAnd (MatchNot MatchAny) (MatchNot (MatchNot va)))"   and "\<And>va vb. P (MatchAnd (MatchNot MatchAny) (MatchNot (MatchAnd va vb)))"   and "\<And>v va. P (MatchAnd (MatchNot MatchAny) (MatchAnd v va))"   and "\<And>v va. \<lbrakk>P (Match v); P (Match va)\<rbrakk> \<Longrightarrow> P (MatchAnd (Match v) (Match va))"   and "\<And>v vb. \<lbrakk>P (Match v); P (MatchNot (Match vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (Match v) (MatchNot (Match vb)))"   and "\<And>v vb. \<lbrakk>P (Match v); P (MatchNot (MatchNot vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (Match v) (MatchNot (MatchNot vb)))"   and "\<And>v vb vc. \<lbrakk>P (Match v); P (MatchNot (MatchAnd vb vc))\<rbrakk> \<Longrightarrow> P (MatchAnd (Match v) (MatchNot (MatchAnd vb vc)))"   and "\<And>v va vb. \<lbrakk>P (Match v); P (MatchAnd va vb)\<rbrakk> \<Longrightarrow> P (MatchAnd (Match v) (MatchAnd va vb))"   and "\<And>vb va. \<lbrakk>P (MatchNot (Match vb)); P (Match va)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (Match vb)) (Match va))"   and "\<And>vb va. \<lbrakk>P (MatchNot (MatchNot vb)); P (Match va)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchNot vb)) (Match va))"   and "\<And>vb vc va. \<lbrakk>P (MatchNot (MatchAnd vb vc)); P (Match va)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchAnd vb vc)) (Match va))"   and "\<And>va vb. \<lbrakk>P (MatchNot (Match va)); P (MatchNot (Match vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (Match va)) (MatchNot (Match vb)))"   and "\<And>va vb. \<lbrakk>P (MatchNot (MatchNot va)); P (MatchNot (Match vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchNot va)) (MatchNot (Match vb)))"   and "\<And>va vc vb. \<lbrakk>P (MatchNot (MatchAnd va vc)); P (MatchNot (Match vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchAnd va vc)) (MatchNot (Match vb)))"   and "\<And>va vb. \<lbrakk>P (MatchNot (Match va)); P (MatchNot (MatchNot vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (Match va)) (MatchNot (MatchNot vb)))"   and "\<And>va vb. \<lbrakk>P (MatchNot (MatchNot va)); P (MatchNot (MatchNot vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchNot va)) (MatchNot (MatchNot vb)))"   and "\<And>va vc vb. \<lbrakk>P (MatchNot (MatchAnd va vc)); P (MatchNot (MatchNot vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchAnd va vc)) (MatchNot (MatchNot vb)))"   and "\<And>va vb vc. \<lbrakk>P (MatchNot (Match va)); P (MatchNot (MatchAnd vb vc))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (Match va)) (MatchNot (MatchAnd vb vc)))"   and "\<And>va vb vc. \<lbrakk>P (MatchNot (MatchNot va)); P (MatchNot (MatchAnd vb vc))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchNot va)) (MatchNot (MatchAnd vb vc)))"   and "\<And>va vd vb vc. \<lbrakk>P (MatchNot (MatchAnd va vd)); P (MatchNot (MatchAnd vb vc))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchAnd va vd)) (MatchNot (MatchAnd vb vc)))"   and "\<And>vc va vb. \<lbrakk>P (MatchNot (Match vc)); P (MatchAnd va vb)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (Match vc)) (MatchAnd va vb))"   and "\<And>vc va vb. \<lbrakk>P (MatchNot (MatchNot vc)); P (MatchAnd va vb)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchNot vc)) (MatchAnd va vb))"   and "\<And>vc vd va vb. \<lbrakk>P (MatchNot (MatchAnd vc vd)); P (MatchAnd va vb)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchAnd vc vd)) (MatchAnd va vb))"   and "\<And>v va vb. \<lbrakk>P (MatchAnd v va); P (Match vb)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchAnd v va) (Match vb))"   and "\<And>v va vc. \<lbrakk>P (MatchAnd v va); P (MatchNot (Match vc))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchAnd v va) (MatchNot (Match vc)))"   and "\<And>v va vc. \<lbrakk>P (MatchAnd v va); P (MatchNot (MatchNot vc))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchAnd v va) (MatchNot (MatchNot vc)))"   and "\<And>v va vc vd. \<lbrakk>P (MatchAnd v va); P (MatchNot (MatchAnd vc vd))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchAnd v va) (MatchNot (MatchAnd vc vd)))"   and "\<And>v va vb vc. \<lbrakk>P (MatchAnd v va); P (MatchAnd vb vc)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchAnd v va) (MatchAnd vb vc))"   and "\<And>va v. \<lbrakk>P (Match va); P (Match v)\<rbrakk> \<Longrightarrow> P (MatchAnd (Match va) (Match v))"   and "\<And>vb v. \<lbrakk>P (MatchNot (Match vb)); P (Match v)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (Match vb)) (Match v))"   and "\<And>vb v. \<lbrakk>P (MatchNot (MatchNot vb)); P (Match v)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchNot vb)) (Match v))"   and "\<And>vb vc v. \<lbrakk>P (MatchNot (MatchAnd vb vc)); P (Match v)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchAnd vb vc)) (Match v))"   and "\<And>va vb v. \<lbrakk>P (MatchAnd va vb); P (Match v)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchAnd va vb) (Match v))"   and "\<And>va vb. \<lbrakk>P (Match va); P (MatchNot (Match vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (Match va) (MatchNot (Match vb)))"   and "\<And>va vb. \<lbrakk>P (Match va); P (MatchNot (MatchNot vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (Match va) (MatchNot (MatchNot vb)))"   and "\<And>va vb vc. \<lbrakk>P (Match va); P (MatchNot (MatchAnd vb vc))\<rbrakk> \<Longrightarrow> P (MatchAnd (Match va) (MatchNot (MatchAnd vb vc)))"   and "\<And>v vb. \<lbrakk>P (MatchNot (Match v)); P (MatchNot (Match vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (Match v)) (MatchNot (Match vb)))"   and "\<And>v vb. \<lbrakk>P (MatchNot (MatchNot v)); P (MatchNot (Match vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchNot v)) (MatchNot (Match vb)))"   and "\<And>v vc vb. \<lbrakk>P (MatchNot (MatchAnd v vc)); P (MatchNot (Match vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchAnd v vc)) (MatchNot (Match vb)))"   and "\<And>v vb. \<lbrakk>P (MatchNot (Match v)); P (MatchNot (MatchNot vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (Match v)) (MatchNot (MatchNot vb)))"   and "\<And>v vb. \<lbrakk>P (MatchNot (MatchNot v)); P (MatchNot (MatchNot vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchNot v)) (MatchNot (MatchNot vb)))"   and "\<And>v vc vb. \<lbrakk>P (MatchNot (MatchAnd v vc)); P (MatchNot (MatchNot vb))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchAnd v vc)) (MatchNot (MatchNot vb)))"   and "\<And>v vb vc. \<lbrakk>P (MatchNot (Match v)); P (MatchNot (MatchAnd vb vc))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (Match v)) (MatchNot (MatchAnd vb vc)))"   and "\<And>v vb vc. \<lbrakk>P (MatchNot (MatchNot v)); P (MatchNot (MatchAnd vb vc))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchNot v)) (MatchNot (MatchAnd vb vc)))"   and "\<And>v vd vb vc. \<lbrakk>P (MatchNot (MatchAnd v vd)); P (MatchNot (MatchAnd vb vc))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchAnd v vd)) (MatchNot (MatchAnd vb vc)))"   and "\<And>va vb vc. \<lbrakk>P (MatchAnd va vb); P (MatchNot (Match vc))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchAnd va vb) (MatchNot (Match vc)))"   and "\<And>va vb vc. \<lbrakk>P (MatchAnd va vb); P (MatchNot (MatchNot vc))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchAnd va vb) (MatchNot (MatchNot vc)))"   and "\<And>va vb vc vd. \<lbrakk>P (MatchAnd va vb); P (MatchNot (MatchAnd vc vd))\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchAnd va vb) (MatchNot (MatchAnd vc vd)))"   and "\<And>vb v va. \<lbrakk>P (Match vb); P (MatchAnd v va)\<rbrakk> \<Longrightarrow> P (MatchAnd (Match vb) (MatchAnd v va))"   and "\<And>vc v va. \<lbrakk>P (MatchNot (Match vc)); P (MatchAnd v va)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (Match vc)) (MatchAnd v va))"   and "\<And>vc v va. \<lbrakk>P (MatchNot (MatchNot vc)); P (MatchAnd v va)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchNot vc)) (MatchAnd v va))"   and "\<And>vc vd v va. \<lbrakk>P (MatchNot (MatchAnd vc vd)); P (MatchAnd v va)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchNot (MatchAnd vc vd)) (MatchAnd v va))"   and "\<And>vb vc v va. \<lbrakk>P (MatchAnd vb vc); P (MatchAnd v va)\<rbrakk> \<Longrightarrow> P (MatchAnd (MatchAnd vb vc) (MatchAnd v va))" shows "P a0"