equal
deleted
inserted
replaced
84 |
84 |
85 (** --------- proves about iterations of p and q ---------- **) |
85 (** --------- proves about iterations of p and q ---------- **) |
86 |
86 |
87 Goal "(ALL m. m< Suc k --> b1$(iterate m g x)=TT) -->\ |
87 Goal "(ALL m. m< Suc k --> b1$(iterate m g x)=TT) -->\ |
88 \ p$(iterate k g x)=p$x"; |
88 \ p$(iterate k g x)=p$x"; |
89 by (nat_ind_tac "k" 1); |
89 by (induct_tac "k" 1); |
90 by (Simp_tac 1); |
90 by (Simp_tac 1); |
91 by (Simp_tac 1); |
91 by (Simp_tac 1); |
92 by (strip_tac 1); |
92 by (strip_tac 1); |
93 by (res_inst_tac [("s","p$(iterate k g x)")] trans 1); |
93 by (res_inst_tac [("s","p$(iterate n g x)")] trans 1); |
94 by (rtac trans 1); |
94 by (rtac trans 1); |
95 by (rtac (p_def3 RS sym) 2); |
95 by (rtac (p_def3 RS sym) 2); |
96 by (res_inst_tac [("s","TT"),("t","b1$(iterate k g x)")] ssubst 1); |
96 by (res_inst_tac [("s","TT"),("t","b1$(iterate n g x)")] ssubst 1); |
97 by (rtac mp 1); |
97 by (rtac mp 1); |
98 by (etac spec 1); |
98 by (etac spec 1); |
99 by (simp_tac (simpset() addsimps [less_Suc_eq]) 1); |
99 by (simp_tac (simpset() addsimps [less_Suc_eq]) 1); |
100 by (simp_tac HOLCF_ss 1); |
100 by (simp_tac HOLCF_ss 1); |
101 by (etac mp 1); |
101 by (etac mp 1); |
106 by (Simp_tac 1); |
106 by (Simp_tac 1); |
107 qed "hoare_lemma9"; |
107 qed "hoare_lemma9"; |
108 |
108 |
109 Goal "(ALL m. m< Suc k --> b1$(iterate m g x)=TT) --> \ |
109 Goal "(ALL m. m< Suc k --> b1$(iterate m g x)=TT) --> \ |
110 \ q$(iterate k g x)=q$x"; |
110 \ q$(iterate k g x)=q$x"; |
111 by (nat_ind_tac "k" 1); |
111 by (induct_tac "k" 1); |
112 by (Simp_tac 1); |
112 by (Simp_tac 1); |
113 by (simp_tac (simpset() addsimps [less_Suc_eq]) 1); |
113 by (simp_tac (simpset() addsimps [less_Suc_eq]) 1); |
114 by (strip_tac 1); |
114 by (strip_tac 1); |
115 by (res_inst_tac [("s","q$(iterate k g x)")] trans 1); |
115 by (res_inst_tac [("s","q$(iterate n g x)")] trans 1); |
116 by (rtac trans 1); |
116 by (rtac trans 1); |
117 by (rtac (q_def3 RS sym) 2); |
117 by (rtac (q_def3 RS sym) 2); |
118 by (res_inst_tac [("s","TT"),("t","b1$(iterate k g x)")] ssubst 1); |
118 by (res_inst_tac [("s","TT"),("t","b1$(iterate n g x)")] ssubst 1); |
119 by (fast_tac HOL_cs 1); |
119 by (fast_tac HOL_cs 1); |
120 by (simp_tac HOLCF_ss 1); |
120 by (simp_tac HOLCF_ss 1); |
121 by (etac mp 1); |
121 by (etac mp 1); |
122 by (strip_tac 1); |
122 by (strip_tac 1); |
123 by (fast_tac (HOL_cs addSDs [less_Suc_eq RS iffD1]) 1); |
123 by (fast_tac (HOL_cs addSDs [less_Suc_eq RS iffD1]) 1); |