induct: fixes P :: "('d, 'e, 'f) com \<Rightarrow> ('d, 'e, 'f) com \<Rightarrow> bool"   and ua :: "'d"   and u :: "('d, 'e, 'f) com"   and v :: "('d, 'e, 'f) com" assumes "P Skip Skip"   and "\<And>f1 f2. P (Basic f1) (Basic f2)"   and "\<And>r1 r2. P (Spec r1) (Spec r2)"   and "\<And>a1 a2 b1 b2. \<lbrakk>(\<exists>c1. (a1 \<inter>\<^sub>g b1) = Some c1) \<longrightarrow> P a2 b2; P a1 b1\<rbrakk> \<Longrightarrow> P (Seq a1 a2) (Seq b1 b2)"   and "\<And>cnd1 t1 e1 cnd2 t2 e2. \<lbrakk>(\<exists>t. (t1 \<inter>\<^sub>g t2) = Some t) \<and> cnd1 = cnd2 \<longrightarrow> P e1 e2; cnd1 = cnd2 \<longrightarrow> P t1 t2\<rbrakk> \<Longrightarrow> P (Cond cnd1 t1 e1) (Cond cnd2 t2 e2)"   and "\<And>cnd1 c1 cnd2 c2. cnd1 = cnd2 \<longrightarrow> P c1 c2 \<Longrightarrow> P (While cnd1 c1) (While cnd2 c2)"   and "\<And>p1 p2. P (Call p1) (Call p2)"   and "\<And>P1 P2. \<lbrakk>(\<forall>s. \<exists>y. (P1 s \<inter>\<^sub>g P2 s) = Some y) \<longrightarrow> (\<forall>:000. P (P1 :000) (P2 :000)); P (P1 ua) (P2 ua)\<rbrakk> \<Longrightarrow> P (DynCom P1) (DynCom P2)"   and "\<And>m1 g1 c1 m2 g2 c2. m1 = m2 \<longrightarrow> P c1 c2 \<Longrightarrow> P (Guard m1 g1 c1) (Guard m2 g2 c2)"   and "P Throw Throw"   and "\<And>a1 a2 b1 b2. \<lbrakk>(\<exists>c1. (a1 \<inter>\<^sub>g b1) = Some c1) \<longrightarrow> P a2 b2; P a1 b1\<rbrakk> \<Longrightarrow> P (Catch a1 a2) (Catch b1 b2)"   and "\<And>bc. P Skip (Basic bc)"   and "\<And>bd. P Skip (Spec bd)"   and "\<And>be bf. P Skip (Seq be bf)"   and "\<And>bg bh bi. P Skip (Cond bg bh bi)"   and "\<And>bj bk. P Skip (While bj bk)"   and "\<And>bl. P Skip (Call bl)"   and "\<And>bm. P Skip (DynCom bm)"   and "\<And>bn bo bp. P Skip (Guard bn bo bp)"   and "P Skip Throw"   and "\<And>bq br. P Skip (Catch bq br)"   and "\<And>w. P (Basic w) Skip"   and "\<And>w cj. P (Basic w) (Spec cj)"   and "\<And>w ck cl. P (Basic w) (Seq ck cl)"   and "\<And>w cm cn co. P (Basic w) (Cond cm cn co)"   and "\<And>w cp cq. P (Basic w) (While cp cq)"   and "\<And>w cr. P (Basic w) (Call cr)"   and "\<And>w cs. P (Basic w) (DynCom cs)"   and "\<And>w ct cu cv. P (Basic w) (Guard ct cu cv)"   and "\<And>w. P (Basic w) Throw"   and "\<And>w cw cx. P (Basic w) (Catch cw cx)"   and "\<And>x. P (Spec x) Skip"   and "\<And>x do. P (Spec x) (Basic do)"   and "\<And>x dq dr. P (Spec x) (Seq dq dr)"   and "\<And>x ds dt du. P (Spec x) (Cond ds dt du)"   and "\<And>x dv dw. P (Spec x) (While dv dw)"   and "\<And>x dx. P (Spec x) (Call dx)"   and "\<And>x dy. P (Spec x) (DynCom dy)"   and "\<And>x dz ea eb. P (Spec x) (Guard dz ea eb)"   and "\<And>x. P (Spec x) Throw"   and "\<And>x ec ed. P (Spec x) (Catch ec ed)"   and "\<And>y z. P (Seq y z) Skip"   and "\<And>y z ev. P (Seq y z) (Basic ev)"   and "\<And>y z ew. P (Seq y z) (Spec ew)"   and "\<And>y z ez fa fb. P (Seq y z) (Cond ez fa fb)"   and "\<And>y z fc fd. P (Seq y z) (While fc fd)"   and "\<And>y z fe. P (Seq y z) (Call fe)"   and "\<And>y z ff. P (Seq y z) (DynCom ff)"   and "\<And>y z fg fh fi. P (Seq y z) (Guard fg fh fi)"   and "\<And>y z. P (Seq y z) Throw"   and "\<And>y z fj fk. P (Seq y z) (Catch fj fk)"   and "\<And>aa ab ac. P (Cond aa ab ac) Skip"   and "\<And>aa ab ac gb. P (Cond aa ab ac) (Basic gb)"   and "\<And>aa ab ac gc. P (Cond aa ab ac) (Spec gc)"   and "\<And>aa ab ac gd ge. P (Cond aa ab ac) (Seq gd ge)"   and "\<And>aa ab ac gi gj. P (Cond aa ab ac) (While gi gj)"   and "\<And>aa ab ac gk. P (Cond aa ab ac) (Call gk)"   and "\<And>aa ab ac gl. P (Cond aa ab ac) (DynCom gl)"   and "\<And>aa ab ac gm gn go. P (Cond aa ab ac) (Guard gm gn go)"   and "\<And>aa ab ac. P (Cond aa ab ac) Throw"   and "\<And>aa ab ac gp gq. P (Cond aa ab ac) (Catch gp gq)"   and "\<And>ad ae. P (While ad ae) Skip"   and "\<And>ad ae hh. P (While ad ae) (Basic hh)"   and "\<And>ad ae hi. P (While ad ae) (Spec hi)"   and "\<And>ad ae hj hk. P (While ad ae) (Seq hj hk)"   and "\<And>ad ae hl hm hn. P (While ad ae) (Cond hl hm hn)"   and "\<And>ad ae hq. P (While ad ae) (Call hq)"   and "\<And>ad ae hr. P (While ad ae) (DynCom hr)"   and "\<And>ad ae hs ht hu. P (While ad ae) (Guard hs ht hu)"   and "\<And>ad ae. P (While ad ae) Throw"   and "\<And>ad ae hv hw. P (While ad ae) (Catch hv hw)"   and "\<And>af. P (Call af) Skip"   and "\<And>af in. P (Call af) (Basic in)"   and "\<And>af io. P (Call af) (Spec io)"   and "\<And>af ip iq. P (Call af) (Seq ip iq)"   and "\<And>af ir is it. P (Call af) (Cond ir is it)"   and "\<And>af iu iv. P (Call af) (While iu iv)"   and "\<And>af ix. P (Call af) (DynCom ix)"   and "\<And>af iy iz ja. P (Call af) (Guard iy iz ja)"   and "\<And>af. P (Call af) Throw"   and "\<And>af jb jc. P (Call af) (Catch jb jc)"   and "\<And>ag. P (DynCom ag) Skip"   and "\<And>ag jt. P (DynCom ag) (Basic jt)"   and "\<And>ag ju. P (DynCom ag) (Spec ju)"   and "\<And>ag jv jw. P (DynCom ag) (Seq jv jw)"   and "\<And>ag jx jy jz. P (DynCom ag) (Cond jx jy jz)"   and "\<And>ag ka kb. P (DynCom ag) (While ka kb)"   and "\<And>ag kc. P (DynCom ag) (Call kc)"   and "\<And>ag ke kf kg. P (DynCom ag) (Guard ke kf kg)"   and "\<And>ag. P (DynCom ag) Throw"   and "\<And>ag kh ki. P (DynCom ag) (Catch kh ki)"   and "\<And>ah ai aj. P (Guard ah ai aj) Skip"   and "\<And>ah ai aj kz. P (Guard ah ai aj) (Basic kz)"   and "\<And>ah ai aj la. P (Guard ah ai aj) (Spec la)"   and "\<And>ah ai aj lb lc. P (Guard ah ai aj) (Seq lb lc)"   and "\<And>ah ai aj ld le lf. P (Guard ah ai aj) (Cond ld le lf)"   and "\<And>ah ai aj lg lh. P (Guard ah ai aj) (While lg lh)"   and "\<And>ah ai aj li. P (Guard ah ai aj) (Call li)"   and "\<And>ah ai aj lj. P (Guard ah ai aj) (DynCom lj)"   and "\<And>ah ai aj. P (Guard ah ai aj) Throw"   and "\<And>ah ai aj ln lo. P (Guard ah ai aj) (Catch ln lo)"   and "P Throw Skip"   and "\<And>mf. P Throw (Basic mf)"   and "\<And>mg. P Throw (Spec mg)"   and "\<And>mh mi. P Throw (Seq mh mi)"   and "\<And>mj mk ml. P Throw (Cond mj mk ml)"   and "\<And>mm mn. P Throw (While mm mn)"   and "\<And>mo. P Throw (Call mo)"   and "\<And>mp. P Throw (DynCom mp)"   and "\<And>mq mr ms. P Throw (Guard mq mr ms)"   and "\<And>mt mu. P Throw (Catch mt mu)"   and "\<And>ak al. P (Catch ak al) Skip"   and "\<And>ak al nl. P (Catch ak al) (Basic nl)"   and "\<And>ak al nm. P (Catch ak al) (Spec nm)"   and "\<And>ak al nn no. P (Catch ak al) (Seq nn no)"   and "\<And>ak al np nq nr. P (Catch ak al) (Cond np nq nr)"   and "\<And>ak al ns nt. P (Catch ak al) (While ns nt)"   and "\<And>ak al nu. P (Catch ak al) (Call nu)"   and "\<And>ak al nv. P (Catch ak al) (DynCom nv)"   and "\<And>ak al nw nx ny. P (Catch ak al) (Guard nw nx ny)"   and "\<And>ak al. P (Catch ak al) Throw" shows "P u v"