71 | add_term_typed_consts (Abs (_, _, t), cs) = add_term_typed_consts (t, cs) |
71 | add_term_typed_consts (Abs (_, _, t), cs) = add_term_typed_consts (t, cs) |
72 | add_term_typed_consts (_, cs) = cs; |
72 | add_term_typed_consts (_, cs) = cs; |
73 |
73 |
74 fun term_typed_consts t = add_term_typed_consts(t,[]); |
74 fun term_typed_consts t = add_term_typed_consts(t,[]); |
75 |
75 |
76 (* SOME Types*) |
76 (* Some Types*) |
77 val bT = HOLogic.boolT; |
77 val bT = HOLogic.boolT; |
78 val bitT = HOLogic.bitT; |
78 val bitT = HOLogic.bitT; |
79 val iT = HOLogic.intT; |
79 val iT = HOLogic.intT; |
80 val binT = HOLogic.binT; |
80 val binT = HOLogic.binT; |
81 val nT = HOLogic.natT; |
81 val nT = HOLogic.natT; |
247 val sg = sign_of_thm st |
247 val sg = sign_of_thm st |
248 (* The Abstraction step *) |
248 (* The Abstraction step *) |
249 val g' = if a then abstract_pres sg g else g |
249 val g' = if a then abstract_pres sg g else g |
250 (* Transform the term*) |
250 (* Transform the term*) |
251 val (t,np,nh) = prepare_for_presburger sg q g' |
251 val (t,np,nh) = prepare_for_presburger sg q g' |
252 (* SOME simpsets for dealing with mod div abs and nat*) |
252 (* Some simpsets for dealing with mod div abs and nat*) |
253 val simpset0 = HOL_basic_ss |
253 val simpset0 = HOL_basic_ss |
254 addsimps [mod_div_equality', Suc_plus1] |
254 addsimps [mod_div_equality', Suc_plus1] |
255 addsplits [split_zdiv, split_zmod, split_div', split_min, split_max] |
255 addsplits [split_zdiv, split_zmod, split_div', split_min, split_max] |
256 (* Simp rules for changing (n::int) to int n *) |
256 (* Simp rules for changing (n::int) to int n *) |
257 val simpset1 = HOL_basic_ss |
257 val simpset1 = HOL_basic_ss |