src/HOL/Tools/Predicate_Compile/predicate_compile_proof.ML
changeset 58956 a816aa3ff391
parent 56491 a8ccf3d6a6e4
child 58963 26bf09b95dda
equal deleted inserted replaced
58955:1694bad18568 58956:a816aa3ff391
   306             val num_of_constrs = length case_thms
   306             val num_of_constrs = length case_thms
   307             val (_, ts) = strip_comb t
   307             val (_, ts) = strip_comb t
   308           in
   308           in
   309             trace_tac ctxt options ("Term " ^ (Syntax.string_of_term ctxt t) ^
   309             trace_tac ctxt options ("Term " ^ (Syntax.string_of_term ctxt t) ^
   310               " splitting with rules \n" ^ Display.string_of_thm ctxt split_asm)
   310               " splitting with rules \n" ^ Display.string_of_thm ctxt split_asm)
   311             THEN TRY (Splitter.split_asm_tac [split_asm] 1
   311             THEN TRY (Splitter.split_asm_tac ctxt [split_asm] 1
   312               THEN (trace_tac ctxt options "after splitting with split_asm rules")
   312               THEN (trace_tac ctxt options "after splitting with split_asm rules")
   313             (* THEN (Simplifier.asm_full_simp_tac (put_simpset HOL_basic_ss ctxt) 1)
   313             (* THEN (Simplifier.asm_full_simp_tac (put_simpset HOL_basic_ss ctxt) 1)
   314               THEN (DETERM (TRY (etac @{thm Pair_inject} 1)))*)
   314               THEN (DETERM (TRY (etac @{thm Pair_inject} 1)))*)
   315               THEN (REPEAT_DETERM_N (num_of_constrs - 1)
   315               THEN (REPEAT_DETERM_N (num_of_constrs - 1)
   316                 (etac @{thm botE} 1 ORELSE etac @{thm botE} 2)))
   316                 (etac @{thm botE} 1 ORELSE etac @{thm botE} 2)))
   318             THEN (EVERY (map split_term_tac ts))
   318             THEN (EVERY (map split_term_tac ts))
   319           end
   319           end
   320       else all_tac
   320       else all_tac
   321   in
   321   in
   322     split_term_tac (HOLogic.mk_tuple out_ts)
   322     split_term_tac (HOLogic.mk_tuple out_ts)
   323     THEN (DETERM (TRY ((Splitter.split_asm_tac [@{thm "split_if_asm"}] 1)
   323     THEN (DETERM (TRY ((Splitter.split_asm_tac ctxt [@{thm "split_if_asm"}] 1)
   324     THEN (etac @{thm botE} 2))))
   324     THEN (etac @{thm botE} 2))))
   325   end
   325   end
   326 
   326 
   327 (* VERY LARGE SIMILIRATIY to function prove_param
   327 (* VERY LARGE SIMILIRATIY to function prove_param
   328 -- join both functions
   328 -- join both functions