src/CCL/CCL.thy
changeset 59498 50b60f501b05
parent 58977 9576b510f6a2
child 59499 14095f771781
equal deleted inserted replaced
59497:0c5cd369a643 59498:50b60f501b05
   203     let
   203     let
   204       fun mk_inj_lemmas r = [@{thm arg_cong}] RL [r RS (r RS @{thm eq_lemma})]
   204       fun mk_inj_lemmas r = [@{thm arg_cong}] RL [r RS (r RS @{thm eq_lemma})]
   205       val inj_lemmas = maps mk_inj_lemmas rews
   205       val inj_lemmas = maps mk_inj_lemmas rews
   206     in
   206     in
   207       CHANGED (REPEAT (ares_tac [@{thm iffI}, @{thm allI}, @{thm conjI}] i ORELSE
   207       CHANGED (REPEAT (ares_tac [@{thm iffI}, @{thm allI}, @{thm conjI}] i ORELSE
   208         eresolve_tac inj_lemmas i ORELSE
   208         eresolve_tac ctxt inj_lemmas i ORELSE
   209         asm_simp_tac (ctxt addsimps rews) i))
   209         asm_simp_tac (ctxt addsimps rews) i))
   210     end;
   210     end;
   211 *}
   211 *}
   212 
   212 
   213 method_setup inj_rl = {*
   213 method_setup inj_rl = {*
   265 
   265 
   266 val ccl_dstncts =
   266 val ccl_dstncts =
   267   let
   267   let
   268     fun mk_raw_dstnct_thm rls s =
   268     fun mk_raw_dstnct_thm rls s =
   269       Goal.prove_global @{theory} [] [] (Syntax.read_prop_global @{theory} s)
   269       Goal.prove_global @{theory} [] [] (Syntax.read_prop_global @{theory} s)
   270         (fn _ => rtac @{thm notI} 1 THEN eresolve_tac rls 1)
   270         (fn {context = ctxt, ...} => rtac @{thm notI} 1 THEN eresolve_tac ctxt rls 1)
   271   in map (mk_raw_dstnct_thm caseB_lemmas)
   271   in map (mk_raw_dstnct_thm caseB_lemmas)
   272     (mk_dstnct_rls @{theory} ["bot","true","false","pair","lambda"]) end
   272     (mk_dstnct_rls @{theory} ["bot","true","false","pair","lambda"]) end
   273 
   273 
   274 fun mk_dstnct_thms ctxt defs inj_rls xs =
   274 fun mk_dstnct_thms ctxt defs inj_rls xs =
   275   let
   275   let