src/Sequents/LK.thy
changeset 55233 3229614ca9c5
parent 55230 cb5ef74b32f9
child 59498 50b60f501b05
equal deleted inserted replaced
55232:7a46672934a3 55233:3229614ca9c5
   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