src/HOL/Calculation.thy
author wenzelm
Sun, 25 Jun 2000 23:58:54 +0200
changeset 9142 d5a841f89e92
parent 9035 371f023d3dbd
child 9228 672b03038110
permissions -rw-r--r--
prefer mp over subst; tuned;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6779
2912aff958bd Calculation.thy: Setup transitivity rules for calculational proofs.
wenzelm
parents:
diff changeset
     1
(*  Title:      HOL/Calculation.thy
2912aff958bd Calculation.thy: Setup transitivity rules for calculational proofs.
wenzelm
parents:
diff changeset
     2
    ID:         $Id$
2912aff958bd Calculation.thy: Setup transitivity rules for calculational proofs.
wenzelm
parents:
diff changeset
     3
    Author:     Markus Wenzel, TU Muenchen
2912aff958bd Calculation.thy: Setup transitivity rules for calculational proofs.
wenzelm
parents:
diff changeset
     4
6873
wenzelm
parents: 6863
diff changeset
     5
Setup transitivity rules for calculational proofs.  Note that in the
wenzelm
parents: 6863
diff changeset
     6
list below later rules have priority.
6779
2912aff958bd Calculation.thy: Setup transitivity rules for calculational proofs.
wenzelm
parents:
diff changeset
     7
*)
2912aff958bd Calculation.thy: Setup transitivity rules for calculational proofs.
wenzelm
parents:
diff changeset
     8
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
     9
theory Calculation = IntArith:
6779
2912aff958bd Calculation.thy: Setup transitivity rules for calculational proofs.
wenzelm
parents:
diff changeset
    10
9142
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    11
theorem [trans]: "[| s = t; P t |] ==> P s"                     (*  =  x  x  *)
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    12
  by (rule ssubst)
6873
wenzelm
parents: 6863
diff changeset
    13
9142
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    14
theorem [trans]: "[| P s; s = t |] ==> P t"                     (*  x  =  x  *)
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    15
  by (rule subst)
7381
wenzelm
parents: 7202
diff changeset
    16
9142
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    17
theorems [trans] = rev_mp mp                                    (*  x --> x  *)
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    18
                                                                (*  --> x x  *)
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    19
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    20
theorems [trans] = dvd_trans                                    (* dvd dvd dvd *)
7202
6fcaf006cc40 added asym rule;
wenzelm
parents: 6945
diff changeset
    21
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    22
theorem [trans]: "[| c:A; A <= B |] ==> c:B"
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    23
  by (rule subsetD)
7657
dbbf7721126e subsetD;
wenzelm
parents: 7561
diff changeset
    24
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    25
theorem [trans]: "[| A <= B; c:A |] ==> c:B"
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    26
  by (rule subsetD)
7657
dbbf7721126e subsetD;
wenzelm
parents: 7561
diff changeset
    27
9142
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    28
theorem [trans]: "[| x ~= y; (x::'a::order) <= y |] ==> x < y"  (*  ~=  <=  < *)
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    29
  by (simp! add: order_less_le)
7561
ff8dbd0589aa added some ~= rules;
wenzelm
parents: 7381
diff changeset
    30
9142
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    31
theorem [trans]: "[| (x::'a::order) <= y; x ~= y |] ==> x < y"  (*  <=  ~=  < *)
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    32
  by (simp! add: order_less_le)
7561
ff8dbd0589aa added some ~= rules;
wenzelm
parents: 7381
diff changeset
    33
9142
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    34
theorem [trans]: "[| (x::'a::order) < y; y < x |] ==> P"        (*  <  >  P  *)
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    35
  by (rule order_less_asym)
6873
wenzelm
parents: 6863
diff changeset
    36
9142
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    37
theorems [trans] = order_less_trans                             (*  <  <  <  *)
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    38
theorems [trans] = order_le_less_trans                          (*  <= <  <  *)
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    39
theorems [trans] = order_less_le_trans                          (*  <  <= <  *)
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    40
theorems [trans] = order_trans                                  (*  <= <= <= *)
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    41
theorems [trans] = order_antisym                                (*  <= >= =  *)
6862
f80091bdc992 more robust trans rules;
wenzelm
parents: 6791
diff changeset
    42
9142
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    43
theorem [trans]: "[| x <= y; y = z |] ==> x <= z"               (*  <= =  <= *)
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    44
  by (rule subst)
6779
2912aff958bd Calculation.thy: Setup transitivity rules for calculational proofs.
wenzelm
parents:
diff changeset
    45
9142
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    46
theorem [trans]: "[| x = y; y <= z |] ==> x <= z"               (*  =  <= <= *)
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    47
  by (rule ssubst)
6862
f80091bdc992 more robust trans rules;
wenzelm
parents: 6791
diff changeset
    48
9142
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    49
theorem [trans]: "[| x < y; y = z |] ==> x < z"                 (*  <  =  <  *)
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    50
  by (rule subst)
6779
2912aff958bd Calculation.thy: Setup transitivity rules for calculational proofs.
wenzelm
parents:
diff changeset
    51
9142
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    52
theorem [trans]: "[| x = y; y < z |] ==> x < z"                 (*  =  <  <  *)
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    53
  by (rule ssubst)
6779
2912aff958bd Calculation.thy: Setup transitivity rules for calculational proofs.
wenzelm
parents:
diff changeset
    54
9142
d5a841f89e92 prefer mp over subst;
wenzelm
parents: 9035
diff changeset
    55
theorems [trans] = trans                                        (*  =  =  =  *)
6945
eeeef70c8fe3 added HOL.trans;
wenzelm
parents: 6873
diff changeset
    56
8229
38f453607c61 theorems [elim??] = sym;
wenzelm
parents: 7657
diff changeset
    57
theorems [elim??] = sym
38f453607c61 theorems [elim??] = sym;
wenzelm
parents: 7657
diff changeset
    58
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 8855
diff changeset
    59
end