equal
deleted
inserted
replaced
528 |
528 |
529 fun uint_arith_tac ctxt = SELECT_GOAL (EVERY (uint_arith_tacs ctxt)) |
529 fun uint_arith_tac ctxt = SELECT_GOAL (EVERY (uint_arith_tacs ctxt)) |
530 *} |
530 *} |
531 |
531 |
532 method_setup uint_arith = |
532 method_setup uint_arith = |
533 "Method.ctxt_args (fn ctxt => Method.SIMPLE_METHOD (uint_arith_tac ctxt 1))" |
533 "Method.ctxt_args (SIMPLE_METHOD' o uint_arith_tac)" |
534 "solving word arithmetic via integers and arith" |
534 "solving word arithmetic via integers and arith" |
535 |
535 |
536 |
536 |
537 subsection "More on overflows and monotonicity" |
537 subsection "More on overflows and monotonicity" |
538 |
538 |
1084 |
1084 |
1085 fun unat_arith_tac ctxt = SELECT_GOAL (EVERY (unat_arith_tacs ctxt)) |
1085 fun unat_arith_tac ctxt = SELECT_GOAL (EVERY (unat_arith_tacs ctxt)) |
1086 *} |
1086 *} |
1087 |
1087 |
1088 method_setup unat_arith = |
1088 method_setup unat_arith = |
1089 "Method.ctxt_args (fn ctxt => Method.SIMPLE_METHOD (unat_arith_tac ctxt 1))" |
1089 "Method.ctxt_args (SIMPLE_METHOD' o unat_arith_tac)" |
1090 "solving word arithmetic via natural numbers and arith" |
1090 "solving word arithmetic via natural numbers and arith" |
1091 |
1091 |
1092 lemma no_plus_overflow_unat_size: |
1092 lemma no_plus_overflow_unat_size: |
1093 "((x :: 'a :: len word) <= x + y) = (unat x + unat y < 2 ^ size x)" |
1093 "((x :: 'a :: len word) <= x + y) = (unat x + unat y < 2 ^ size x)" |
1094 unfolding word_size by unat_arith |
1094 unfolding word_size by unat_arith |