equal
deleted
inserted
replaced
173 |
173 |
174 lemma imp_cong: |
174 lemma imp_cong: |
175 assumes p1: "|- P <-> P'" |
175 assumes p1: "|- P <-> P'" |
176 and p2: "|- P' ==> |- Q <-> Q'" |
176 and p2: "|- P' ==> |- Q <-> Q'" |
177 shows "|- (P-->Q) <-> (P'-->Q')" |
177 shows "|- (P-->Q) <-> (P'-->Q')" |
178 apply (tactic {* lemma_tac @{thm p1} 1 *}) |
178 apply (lem p1) |
179 apply safe |
179 apply safe |
180 apply (tactic {* |
180 apply (tactic {* |
181 REPEAT (rtac @{thm cut} 1 THEN |
181 REPEAT (rtac @{thm cut} 1 THEN |
182 DEPTH_SOLVE_1 |
182 DEPTH_SOLVE_1 |
183 (resolve_tac [@{thm thinL}, @{thm thinR}, @{thm p2} COMP @{thm monotonic}] 1) THEN |
183 (resolve_tac [@{thm thinL}, @{thm thinR}, @{thm p2} COMP @{thm monotonic}] 1) THEN |
186 |
186 |
187 lemma conj_cong: |
187 lemma conj_cong: |
188 assumes p1: "|- P <-> P'" |
188 assumes p1: "|- P <-> P'" |
189 and p2: "|- P' ==> |- Q <-> Q'" |
189 and p2: "|- P' ==> |- Q <-> Q'" |
190 shows "|- (P&Q) <-> (P'&Q')" |
190 shows "|- (P&Q) <-> (P'&Q')" |
191 apply (tactic {* lemma_tac @{thm p1} 1 *}) |
191 apply (lem p1) |
192 apply safe |
192 apply safe |
193 apply (tactic {* |
193 apply (tactic {* |
194 REPEAT (rtac @{thm cut} 1 THEN |
194 REPEAT (rtac @{thm cut} 1 THEN |
195 DEPTH_SOLVE_1 |
195 DEPTH_SOLVE_1 |
196 (resolve_tac [@{thm thinL}, @{thm thinR}, @{thm p2} COMP @{thm monotonic}] 1) THEN |
196 (resolve_tac [@{thm thinL}, @{thm thinR}, @{thm p2} COMP @{thm monotonic}] 1) THEN |
219 apply (simp add: if_not_P) |
219 apply (simp add: if_not_P) |
220 apply fast |
220 apply fast |
221 done |
221 done |
222 |
222 |
223 lemma if_cancel: "|- (if P then x else x) = x" |
223 lemma if_cancel: "|- (if P then x else x) = x" |
224 apply (tactic {* lemma_tac @{thm split_if} 1 *}) |
224 apply (lem split_if) |
225 apply fast |
225 apply fast |
226 done |
226 done |
227 |
227 |
228 lemma if_eq_cancel: "|- (if x=y then y else x) = x" |
228 lemma if_eq_cancel: "|- (if x=y then y else x) = x" |
229 apply (tactic {* lemma_tac @{thm split_if} 1 *}) |
229 apply (lem split_if) |
230 apply safe |
230 apply safe |
231 apply (rule symL) |
231 apply (rule symL) |
232 apply (rule basic) |
232 apply (rule basic) |
233 done |
233 done |
234 |
234 |