src/HOL/Decision_Procs/mir_tac.ML
changeset 51369 960b0ca9ae5d
parent 47432 e1576d13e933
child 51717 9e7d1c139569
equal deleted inserted replaced
51368:2ea5c7c2d825 51369:960b0ca9ae5d
    52 val mod_add_left_eq = @{thm "mod_add_left_eq"} RS sym;
    52 val mod_add_left_eq = @{thm "mod_add_left_eq"} RS sym;
    53 val mod_add_right_eq = @{thm "mod_add_right_eq"} RS sym;
    53 val mod_add_right_eq = @{thm "mod_add_right_eq"} RS sym;
    54 val nat_div_add_eq = @{thm "div_add1_eq"} RS sym;
    54 val nat_div_add_eq = @{thm "div_add1_eq"} RS sym;
    55 val int_div_add_eq = @{thm "zdiv_zadd1_eq"} RS sym;
    55 val int_div_add_eq = @{thm "zdiv_zadd1_eq"} RS sym;
    56 
    56 
    57 fun prepare_for_mir thy q fm = 
    57 fun prepare_for_mir q fm = 
    58   let
    58   let
    59     val ps = Logic.strip_params fm
    59     val ps = Logic.strip_params fm
    60     val hs = map HOLogic.dest_Trueprop (Logic.strip_assums_hyp fm)
    60     val hs = map HOLogic.dest_Trueprop (Logic.strip_assums_hyp fm)
    61     val c = HOLogic.dest_Trueprop (Logic.strip_assums_concl fm)
    61     val c = HOLogic.dest_Trueprop (Logic.strip_assums_concl fm)
    62     fun mk_all ((s, T), (P,n)) =
    62     fun mk_all ((s, T), (P,n)) =
    87         THEN' (REPEAT_DETERM o split_tac [@{thm "split_min"}, @{thm "split_max"}, @{thm "abs_split"}])
    87         THEN' (REPEAT_DETERM o split_tac [@{thm "split_min"}, @{thm "split_max"}, @{thm "abs_split"}])
    88         THEN' SUBGOAL (fn (g, i) =>
    88         THEN' SUBGOAL (fn (g, i) =>
    89   let
    89   let
    90     val thy = Proof_Context.theory_of ctxt
    90     val thy = Proof_Context.theory_of ctxt
    91     (* Transform the term*)
    91     (* Transform the term*)
    92     val (t,np,nh) = prepare_for_mir thy q g
    92     val (t,np,nh) = prepare_for_mir q g
    93     (* Some simpsets for dealing with mod div abs and nat*)
    93     (* Some simpsets for dealing with mod div abs and nat*)
    94     val mod_div_simpset = HOL_basic_ss 
    94     val mod_div_simpset = HOL_basic_ss 
    95                         addsimps [refl, mod_add_eq, 
    95                         addsimps [refl, mod_add_eq, 
    96                                   @{thm mod_self},
    96                                   @{thm mod_self},
    97                                   @{thm div_0}, @{thm mod_0},
    97                                   @{thm div_0}, @{thm mod_0},