src/HOL/Int.thy
changeset 61738 c4f6031f1310
parent 61694 6571c78c9667
child 61799 4cf66f21b764
equal deleted inserted replaced
61736:d6b2d638af23 61738:c4f6031f1310
  1261 lemmas mult_le_cancel_right_numeral [simp, no_atp] = mult_le_cancel_right [of _ "numeral v"] for v
  1261 lemmas mult_le_cancel_right_numeral [simp, no_atp] = mult_le_cancel_right [of _ "numeral v"] for v
  1262 
  1262 
  1263 
  1263 
  1264 text \<open>Multiplying out constant divisors in comparisons (@{text "<"}, @{text "\<le>"} and @{text "="})\<close>
  1264 text \<open>Multiplying out constant divisors in comparisons (@{text "<"}, @{text "\<le>"} and @{text "="})\<close>
  1265 
  1265 
  1266 lemmas le_divide_eq_numeral1 [simp] =
  1266 named_theorems divide_const_simps "simplification rules to simplify comparisons involving constant divisors"
       
  1267 
       
  1268 lemmas le_divide_eq_numeral1 [simp,divide_const_simps] =
  1267   pos_le_divide_eq [of "numeral w", OF zero_less_numeral]
  1269   pos_le_divide_eq [of "numeral w", OF zero_less_numeral]
  1268   neg_le_divide_eq [of "- numeral w", OF neg_numeral_less_zero] for w
  1270   neg_le_divide_eq [of "- numeral w", OF neg_numeral_less_zero] for w
  1269 
  1271 
  1270 lemmas divide_le_eq_numeral1 [simp] =
  1272 lemmas divide_le_eq_numeral1 [simp,divide_const_simps] =
  1271   pos_divide_le_eq [of "numeral w", OF zero_less_numeral]
  1273   pos_divide_le_eq [of "numeral w", OF zero_less_numeral]
  1272   neg_divide_le_eq [of "- numeral w", OF neg_numeral_less_zero] for w
  1274   neg_divide_le_eq [of "- numeral w", OF neg_numeral_less_zero] for w
  1273 
  1275 
  1274 lemmas less_divide_eq_numeral1 [simp] =
  1276 lemmas less_divide_eq_numeral1 [simp,divide_const_simps] =
  1275   pos_less_divide_eq [of "numeral w", OF zero_less_numeral]
  1277   pos_less_divide_eq [of "numeral w", OF zero_less_numeral]
  1276   neg_less_divide_eq [of "- numeral w", OF neg_numeral_less_zero] for w
  1278   neg_less_divide_eq [of "- numeral w", OF neg_numeral_less_zero] for w
  1277 
  1279 
  1278 lemmas divide_less_eq_numeral1 [simp] =
  1280 lemmas divide_less_eq_numeral1 [simp,divide_const_simps] =
  1279   pos_divide_less_eq [of "numeral w", OF zero_less_numeral]
  1281   pos_divide_less_eq [of "numeral w", OF zero_less_numeral]
  1280   neg_divide_less_eq [of "- numeral w", OF neg_numeral_less_zero] for w
  1282   neg_divide_less_eq [of "- numeral w", OF neg_numeral_less_zero] for w
  1281 
  1283 
  1282 lemmas eq_divide_eq_numeral1 [simp] =
  1284 lemmas eq_divide_eq_numeral1 [simp,divide_const_simps] =
  1283   eq_divide_eq [of _ _ "numeral w"]
  1285   eq_divide_eq [of _ _ "numeral w"]
  1284   eq_divide_eq [of _ _ "- numeral w"] for w
  1286   eq_divide_eq [of _ _ "- numeral w"] for w
  1285 
  1287 
  1286 lemmas divide_eq_eq_numeral1 [simp] =
  1288 lemmas divide_eq_eq_numeral1 [simp,divide_const_simps] =
  1287   divide_eq_eq [of _ "numeral w"]
  1289   divide_eq_eq [of _ "numeral w"]
  1288   divide_eq_eq [of _ "- numeral w"] for w
  1290   divide_eq_eq [of _ "- numeral w"] for w
  1289 
  1291 
  1290 
  1292 
  1291 subsubsection\<open>Optional Simplification Rules Involving Constants\<close>
  1293 subsubsection\<open>Optional Simplification Rules Involving Constants\<close>
  1292 
  1294 
  1293 text\<open>Simplify quotients that are compared with a literal constant.\<close>
  1295 text\<open>Simplify quotients that are compared with a literal constant.\<close>
  1294 
  1296 
  1295 lemmas le_divide_eq_numeral =
  1297 lemmas le_divide_eq_numeral [divide_const_simps] =
  1296   le_divide_eq [of "numeral w"]
  1298   le_divide_eq [of "numeral w"]
  1297   le_divide_eq [of "- numeral w"] for w
  1299   le_divide_eq [of "- numeral w"] for w
  1298 
  1300 
  1299 lemmas divide_le_eq_numeral =
  1301 lemmas divide_le_eq_numeral [divide_const_simps] =
  1300   divide_le_eq [of _ _ "numeral w"]
  1302   divide_le_eq [of _ _ "numeral w"]
  1301   divide_le_eq [of _ _ "- numeral w"] for w
  1303   divide_le_eq [of _ _ "- numeral w"] for w
  1302 
  1304 
  1303 lemmas less_divide_eq_numeral =
  1305 lemmas less_divide_eq_numeral [divide_const_simps] =
  1304   less_divide_eq [of "numeral w"]
  1306   less_divide_eq [of "numeral w"]
  1305   less_divide_eq [of "- numeral w"] for w
  1307   less_divide_eq [of "- numeral w"] for w
  1306 
  1308 
  1307 lemmas divide_less_eq_numeral =
  1309 lemmas divide_less_eq_numeral [divide_const_simps] =
  1308   divide_less_eq [of _ _ "numeral w"]
  1310   divide_less_eq [of _ _ "numeral w"]
  1309   divide_less_eq [of _ _ "- numeral w"] for w
  1311   divide_less_eq [of _ _ "- numeral w"] for w
  1310 
  1312 
  1311 lemmas eq_divide_eq_numeral =
  1313 lemmas eq_divide_eq_numeral [divide_const_simps] =
  1312   eq_divide_eq [of "numeral w"]
  1314   eq_divide_eq [of "numeral w"]
  1313   eq_divide_eq [of "- numeral w"] for w
  1315   eq_divide_eq [of "- numeral w"] for w
  1314 
  1316 
  1315 lemmas divide_eq_eq_numeral =
  1317 lemmas divide_eq_eq_numeral [divide_const_simps] =
  1316   divide_eq_eq [of _ _ "numeral w"]
  1318   divide_eq_eq [of _ _ "numeral w"]
  1317   divide_eq_eq [of _ _ "- numeral w"] for w
  1319   divide_eq_eq [of _ _ "- numeral w"] for w
  1318 
  1320 
  1319 
  1321 
  1320 text\<open>Not good as automatic simprules because they cause case splits.\<close>
  1322 text\<open>Not good as automatic simprules because they cause case splits.\<close>
  1321 lemmas divide_const_simps =
  1323 lemmas [divide_const_simps] = le_divide_eq_1 divide_le_eq_1 less_divide_eq_1 divide_less_eq_1 
  1322   le_divide_eq_numeral divide_le_eq_numeral less_divide_eq_numeral
       
  1323   divide_less_eq_numeral eq_divide_eq_numeral divide_eq_eq_numeral
       
  1324   le_divide_eq_1 divide_le_eq_1 less_divide_eq_1 divide_less_eq_1
       
  1325 
  1324 
  1326 
  1325 
  1327 subsection \<open>The divides relation\<close>
  1326 subsection \<open>The divides relation\<close>
  1328 
  1327 
  1329 lemma zdvd_antisym_nonneg:
  1328 lemma zdvd_antisym_nonneg: