equal
deleted
inserted
replaced
145 (**Simp_tacs**) |
145 (**Simp_tacs**) |
146 |
146 |
147 val before_set2pred_simp_tac = |
147 val before_set2pred_simp_tac = |
148 (simp_tac (HOL_basic_ss addsimps [Collect_conj_eq RS sym,Compl_Collect])); |
148 (simp_tac (HOL_basic_ss addsimps [Collect_conj_eq RS sym,Compl_Collect])); |
149 |
149 |
150 val split_simp_tac = (simp_tac (HOL_basic_ss addsimps [split])); |
150 val split_simp_tac = (simp_tac (HOL_basic_ss addsimps [split_conv])); |
151 |
151 |
152 (*****************************************************************************) |
152 (*****************************************************************************) |
153 (** set2pred transforms sets inclusion into predicates implication, **) |
153 (** set2pred transforms sets inclusion into predicates implication, **) |
154 (** maintaining the original variable names. **) |
154 (** maintaining the original variable names. **) |
155 (** Ex. "{x. x=0} <= {x. x <= 1}" -set2pred-> "x=0 --> x <= 1" **) |
155 (** Ex. "{x. x=0} <= {x. x <= 1}" -set2pred-> "x=0 --> x <= 1" **) |
169 (EVERY [rtac subsetI i, |
169 (EVERY [rtac subsetI i, |
170 rtac CollectI i, |
170 rtac CollectI i, |
171 dtac CollectD i, |
171 dtac CollectD i, |
172 (TRY(split_all_tac i)) THEN_MAYBE |
172 (TRY(split_all_tac i)) THEN_MAYBE |
173 ((rename_tac var_string i) THEN |
173 ((rename_tac var_string i) THEN |
174 (full_simp_tac (HOL_basic_ss addsimps [split]) i)) ])) thm |
174 (full_simp_tac (HOL_basic_ss addsimps [split_conv]) i)) ])) thm |
175 end; |
175 end; |
176 |
176 |
177 (*****************************************************************************) |
177 (*****************************************************************************) |
178 (** BasicSimpTac is called to simplify all verification conditions. It does **) |
178 (** BasicSimpTac is called to simplify all verification conditions. It does **) |
179 (** a light simplification by applying "mem_Collect_eq", then it calls **) |
179 (** a light simplification by applying "mem_Collect_eq", then it calls **) |
184 |
184 |
185 fun MaxSimpTac tac = FIRST'[rtac subset_refl, set2pred THEN_MAYBE' tac]; |
185 fun MaxSimpTac tac = FIRST'[rtac subset_refl, set2pred THEN_MAYBE' tac]; |
186 |
186 |
187 fun BasicSimpTac tac = |
187 fun BasicSimpTac tac = |
188 simp_tac |
188 simp_tac |
189 (HOL_basic_ss addsimps [mem_Collect_eq,split] addsimprocs [record_simproc]) |
189 (HOL_basic_ss addsimps [mem_Collect_eq,split_conv] addsimprocs [record_simproc]) |
190 THEN_MAYBE' MaxSimpTac tac; |
190 THEN_MAYBE' MaxSimpTac tac; |
191 |
191 |
192 (** HoareRuleTac **) |
192 (** HoareRuleTac **) |
193 |
193 |
194 fun WlpTac Mlem tac i = rtac SeqRule i THEN HoareRuleTac Mlem tac false (i+1) |
194 fun WlpTac Mlem tac i = rtac SeqRule i THEN HoareRuleTac Mlem tac false (i+1) |