src/HOL/Word/WordArith.thy
changeset 30509 e19d5b459a61
parent 29668 33ba3faeaa0e
child 30549 d2d7874648bd
equal deleted inserted replaced
30508:958cc116d03b 30509:e19d5b459a61
   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