induct: fixes P :: "(char list \<Rightarrow> com option) \<Rightarrow> com \<times> (char list \<Rightarrow> int \<Rightarrow> int) \<Rightarrow> bool"   and a0 :: "char list \<Rightarrow> com option"   and a1 :: "com \<times> (char list \<Rightarrow> int \<Rightarrow> int)" assumes "\<And>\<pi> x i a s. P \<pi> (x[i] ::= a, s)"   and "\<And>\<pi> x y s. P \<pi> (x[] ::= y, s)"   and "\<And>\<pi> x s. P \<pi> (CLEAR x[], s)"   and "\<And>\<pi> l s. P \<pi> (Assign_Locals l, s)"   and "\<And>\<pi> c s. P \<pi> (SKIP;; c, s)"   and "\<And>\<pi> v va vb c\<^sub>2 s. P \<pi> (v[va] ::= vb, s) \<Longrightarrow> P \<pi> (v[va] ::= vb;; c\<^sub>2, s)"   and "\<And>\<pi> v va c\<^sub>2 s. P \<pi> (v[] ::= va, s) \<Longrightarrow> P \<pi> (v[] ::= va;; c\<^sub>2, s)"   and "\<And>\<pi> v c\<^sub>2 s. P \<pi> (CLEAR v[], s) \<Longrightarrow> P \<pi> (CLEAR v[];; c\<^sub>2, s)"   and "\<And>\<pi> v c\<^sub>2 s. P \<pi> (Assign_Locals v, s) \<Longrightarrow> P \<pi> (Assign_Locals v;; c\<^sub>2, s)"   and "\<And>\<pi> v va c\<^sub>2 s. P \<pi> (v;; va, s) \<Longrightarrow> P \<pi> ((v;; va);; c\<^sub>2, s)"   and "\<And>\<pi> v va vb c\<^sub>2 s. P \<pi> (IF v THEN va ELSE vb, s) \<Longrightarrow> P \<pi> (IF v THEN va ELSE vb;; c\<^sub>2, s)"   and "\<And>\<pi> v va c\<^sub>2 s. P \<pi> (WHILE v DO va, s) \<Longrightarrow> P \<pi> (WHILE v DO va;; c\<^sub>2, s)"   and "\<And>\<pi> v c\<^sub>2 s. P \<pi> (SCOPE v, s) \<Longrightarrow> P \<pi> (SCOPE v;; c\<^sub>2, s)"   and "\<And>\<pi> v c\<^sub>2 s. P \<pi> (PCall v, s) \<Longrightarrow> P \<pi> (PCall v;; c\<^sub>2, s)"   and "\<And>\<pi> v va c\<^sub>2 s. P \<pi> (PScope v va, s) \<Longrightarrow> P \<pi> (PScope v va;; c\<^sub>2, s)"   and "\<And>\<pi> b c\<^sub>1 c\<^sub>2 s. P \<pi> (IF b THEN c\<^sub>1 ELSE c\<^sub>2, s)"   and "\<And>\<pi> c s. P \<pi> (SCOPE c, s)"   and "\<And>\<pi> b c s. P \<pi> (WHILE b DO c, s)"   and "\<And>\<pi> p s. P \<pi> (PCall p, s)"   and "\<And>\<pi> \<pi>' s. P \<pi> (PScope \<pi>' SKIP, s)"   and "\<And>\<pi> \<pi>' v va vb s. P \<pi>' (v[va] ::= vb, s) \<Longrightarrow> P \<pi> (PScope \<pi>' (v[va] ::= vb), s)"   and "\<And>\<pi> \<pi>' v va s. P \<pi>' (v[] ::= va, s) \<Longrightarrow> P \<pi> (PScope \<pi>' (v[] ::= va), s)"   and "\<And>\<pi> \<pi>' v s. P \<pi>' (CLEAR v[], s) \<Longrightarrow> P \<pi> (PScope \<pi>' (CLEAR v[]), s)"   and "\<And>\<pi> \<pi>' v s. P \<pi>' (Assign_Locals v, s) \<Longrightarrow> P \<pi> (PScope \<pi>' (Assign_Locals v), s)"   and "\<And>\<pi> \<pi>' v va s. P \<pi>' (v;; va, s) \<Longrightarrow> P \<pi> (PScope \<pi>' (v;; va), s)"   and "\<And>\<pi> \<pi>' v va vb s. P \<pi>' (IF v THEN va ELSE vb, s) \<Longrightarrow> P \<pi> (PScope \<pi>' (IF v THEN va ELSE vb), s)"   and "\<And>\<pi> \<pi>' v va s. P \<pi>' (WHILE v DO va, s) \<Longrightarrow> P \<pi> (PScope \<pi>' (WHILE v DO va), s)"   and "\<And>\<pi> \<pi>' v s. P \<pi>' (SCOPE v, s) \<Longrightarrow> P \<pi> (PScope \<pi>' (SCOPE v), s)"   and "\<And>\<pi> \<pi>' v s. P \<pi>' (PCall v, s) \<Longrightarrow> P \<pi> (PScope \<pi>' (PCall v), s)"   and "\<And>\<pi> \<pi>' v va s. P \<pi>' (PScope v va, s) \<Longrightarrow> P \<pi> (PScope \<pi>' (PScope v va), s)"   and "\<And>\<pi> s. P \<pi> (SKIP, s)" shows "P a0 a1"