385 |
385 |
386 (* z<z ==> R *) |
386 (* z<z ==> R *) |
387 bind_thm ("zless_irrefl", zless_not_refl RS notE); |
387 bind_thm ("zless_irrefl", zless_not_refl RS notE); |
388 AddSEs [zless_irrefl]; |
388 AddSEs [zless_irrefl]; |
389 |
389 |
390 Goal "z<w ==> w ~= (z::int)"; |
|
391 by (Blast_tac 1); |
|
392 qed "zless_not_refl2"; |
|
393 |
|
394 (* s < t ==> s ~= t *) |
|
395 bind_thm ("zless_not_refl3", zless_not_refl2 RS not_sym); |
|
396 |
|
397 |
390 |
398 (*"Less than" is a linear ordering*) |
391 (*"Less than" is a linear ordering*) |
399 Goalw [zless_def, neg_def, zdiff_def] |
392 Goalw [zless_def, neg_def, zdiff_def] |
400 "z<w | z=w | w<(z::int)"; |
393 "z<w | z=w | w<(z::int)"; |
401 by (res_inst_tac [("z","z")] eq_Abs_Integ 1); |
394 by (res_inst_tac [("z","z")] eq_Abs_Integ 1); |
450 |
443 |
451 Goal "w <= (w::int)"; |
444 Goal "w <= (w::int)"; |
452 by (simp_tac (simpset() addsimps [int_le_less]) 1); |
445 by (simp_tac (simpset() addsimps [int_le_less]) 1); |
453 qed "zle_refl"; |
446 qed "zle_refl"; |
454 |
447 |
455 Goalw [zle_def] "z < w ==> z <= (w::int)"; |
|
456 by (blast_tac (claset() addEs [zless_asym]) 1); |
|
457 qed "zless_imp_zle"; |
|
458 |
|
459 (* Axiom 'linorder_linear' of class 'linorder': *) |
448 (* Axiom 'linorder_linear' of class 'linorder': *) |
460 Goal "(z::int) <= w | w <= z"; |
449 Goal "(z::int) <= w | w <= z"; |
461 by (simp_tac (simpset() addsimps [int_le_less]) 1); |
450 by (simp_tac (simpset() addsimps [int_le_less]) 1); |
462 by (cut_facts_tac [zless_linear] 1); |
451 by (cut_facts_tac [zless_linear] 1); |
463 by (Blast_tac 1); |
452 by (Blast_tac 1); |
464 qed "zle_linear"; |
453 qed "zle_linear"; |
465 |
454 |
466 Goal "[| i <= j; j < k |] ==> i < (k::int)"; |
455 (* Axiom 'order_trans of class 'order': *) |
467 by (dtac zle_imp_zless_or_eq 1); |
|
468 by (blast_tac (claset() addIs [zless_trans]) 1); |
|
469 qed "zle_zless_trans"; |
|
470 |
|
471 Goal "[| i < j; j <= k |] ==> i < (k::int)"; |
|
472 by (dtac zle_imp_zless_or_eq 1); |
|
473 by (blast_tac (claset() addIs [zless_trans]) 1); |
|
474 qed "zless_zle_trans"; |
|
475 |
|
476 Goal "[| i <= j; j <= k |] ==> i <= (k::int)"; |
456 Goal "[| i <= j; j <= k |] ==> i <= (k::int)"; |
477 by (EVERY1 [dtac zle_imp_zless_or_eq, dtac zle_imp_zless_or_eq, |
457 by (EVERY1 [dtac zle_imp_zless_or_eq, dtac zle_imp_zless_or_eq, |
478 rtac zless_or_eq_imp_zle, |
458 rtac zless_or_eq_imp_zle, |
479 blast_tac (claset() addIs [zless_trans])]); |
459 blast_tac (claset() addIs [zless_trans])]); |
480 qed "zle_trans"; |
460 qed "zle_trans"; |
487 (* Axiom 'order_less_le' of class 'order': *) |
467 (* Axiom 'order_less_le' of class 'order': *) |
488 Goal "(w::int) < z = (w <= z & w ~= z)"; |
468 Goal "(w::int) < z = (w <= z & w ~= z)"; |
489 by (simp_tac (simpset() addsimps [zle_def, int_neq_iff]) 1); |
469 by (simp_tac (simpset() addsimps [zle_def, int_neq_iff]) 1); |
490 by (blast_tac (claset() addSEs [zless_asym]) 1); |
470 by (blast_tac (claset() addSEs [zless_asym]) 1); |
491 qed "int_less_le"; |
471 qed "int_less_le"; |
492 |
|
493 (* [| w <= z; w ~= z |] ==> w < z *) |
|
494 bind_thm ("zle_neq_implies_zless", [int_less_le, conjI] MRS iffD2); |
|
495 |
|
496 |
472 |
497 |
473 |
498 (*** Subtraction laws ***) |
474 (*** Subtraction laws ***) |
499 |
475 |
500 Goal "x + (y - z) = (x + y) - (z::int)"; |
476 Goal "x + (y - z) = (x + y) - (z::int)"; |