src/HOL/Isar_examples/Summation.thy
author paulson
Fri, 18 Feb 2000 15:35:29 +0100
changeset 8255 38f96394c099
parent 7982 d534b897ce39
child 8584 016314c2fa0a
permissions -rw-r--r--
new distributive laws
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
     1
(*  Title:      HOL/Isar_examples/Summation.thy
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
     2
    ID:         $Id$
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
     3
    Author:     Markus Wenzel
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
     4
*)
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
     5
7748
5b9c45b21782 improved presentation;
wenzelm
parents: 7480
diff changeset
     6
header {* Summing natural numbers *};
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
     7
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
     8
theory Summation = Main:;
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
     9
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    10
text_raw {*
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    11
 \footnote{This example is somewhat reminiscent of the
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    12
 \url{http://isabelle.in.tum.de/library/HOL/ex/NatSum.html}, which is
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    13
 discussed in \cite{isabelle-ref} in the context of permutative
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    14
 rewrite rules and ordered rewriting.}
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    15
*};
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    16
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    17
text {*
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    18
 Subsequently, we prove some summation laws of natural numbers
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
    19
 (including odds, squares, and cubes).  These examples demonstrate how
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    20
 plain natural deduction (including induction) may be combined with
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    21
 calculational proof.
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    22
*};
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    23
7761
7fab9592384f improved presentation;
wenzelm
parents: 7748
diff changeset
    24
7748
5b9c45b21782 improved presentation;
wenzelm
parents: 7480
diff changeset
    25
subsection {* A summation operator *};
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    26
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    27
text {*
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    28
  The binder operator $\idt{sum} :: (\idt{nat} \To \idt{nat}) \To
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
    29
 \idt{nat} \To \idt{nat}$ formalizes summation of natural numbers
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
    30
 indexed from $0$ up to $k$ (excluding the bound):
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    31
 \[
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    32
 \sum\limits_{i < k} f(i) = \idt{sum} \ap (\lam i f \ap i) \ap k
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    33
 \]
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    34
*};
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    35
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    36
consts
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
    37
  sum :: "[nat => nat, nat] => nat";
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    38
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    39
primrec
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    40
  "sum f 0 = 0"
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    41
  "sum f (Suc n) = f n + sum f n";
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    42
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    43
syntax
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
    44
  "_SUM" :: "[idt, nat, nat] => nat"
7800
8ee919e42174 improved presentation;
wenzelm
parents: 7761
diff changeset
    45
    ("SUM _ < _. _" [0, 0, 10] 10);
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    46
translations
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
    47
  "SUM i < k. b" == "sum (\<lambda>i. b) k";
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    48
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    49
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    50
subsection {* Summation laws *};
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    51
7869
c007f801cd59 improved presentation;
wenzelm
parents: 7800
diff changeset
    52
text_raw {* \begin{comment} *};
7800
8ee919e42174 improved presentation;
wenzelm
parents: 7761
diff changeset
    53
7761
7fab9592384f improved presentation;
wenzelm
parents: 7748
diff changeset
    54
(* FIXME binary arithmetic does not yet work here *)
7fab9592384f improved presentation;
wenzelm
parents: 7748
diff changeset
    55
7fab9592384f improved presentation;
wenzelm
parents: 7748
diff changeset
    56
syntax
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    57
  "3" :: nat  ("3")
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    58
  "4" :: nat  ("4")
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    59
  "6" :: nat  ("6");
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    60
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    61
translations
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    62
  "3" == "Suc 2"
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    63
  "4" == "Suc 3"
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    64
  "6" == "Suc (Suc 4)";
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    65
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    66
theorems [simp] = add_mult_distrib add_mult_distrib2 mult_ac;
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    67
7869
c007f801cd59 improved presentation;
wenzelm
parents: 7800
diff changeset
    68
text_raw {* \end{comment} *};
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    69
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    70
text {*
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    71
 The sum of natural numbers $0 + \cdots + n$ equals $n \times (n +
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
    72
 1)/2$.  Avoiding formal reasoning about division we prove this
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
    73
 equation multiplied by $2$.
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    74
*};
7800
8ee919e42174 improved presentation;
wenzelm
parents: 7761
diff changeset
    75
8ee919e42174 improved presentation;
wenzelm
parents: 7761
diff changeset
    76
theorem sum_of_naturals:
8ee919e42174 improved presentation;
wenzelm
parents: 7761
diff changeset
    77
  "2 * (SUM i < n + 1. i) = n * (n + 1)"
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
    78
  (is "?P n" is "?S n = _");
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    79
proof (induct n);
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
    80
  show "?P 0"; by simp;
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    81
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    82
  fix n;
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
    83
  have "?S (n + 1) = ?S n + 2 * (n + 1)"; by simp;
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
    84
  also; assume "?S n = n * (n + 1)";
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    85
  also; have "... + 2 * (n + 1) = (n + 1) * (n + 2)"; by simp;
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
    86
  finally; show "?P (Suc n)"; by simp;
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    87
qed;
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
    88
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    89
text {*
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    90
 The above proof is a typical instance of mathematical induction.  The
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    91
 main statement is viewed as some $\var{P} \ap n$ that is split by the
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    92
 induction method into base case $\var{P} \ap 0$, and step case
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
    93
 $\var{P} \ap n \Impl \var{P} \ap (\idt{Suc} \ap n)$ for arbitrary $n$.
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    94
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    95
 The step case is established by a short calculation in forward
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
    96
 manner.  Starting from the left-hand side $\var{S} \ap (n + 1)$ of
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
    97
 the thesis, the final result is achieved by transformations involving
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
    98
 basic arithmetic reasoning (using the Simplifier).  The main point is
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
    99
 where the induction hypothesis $\var{S} \ap n = n \times (n + 1)$ is
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   100
 introduced in order to replace a certain subterm.  So the
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   101
 ``transitivity'' rule involved here is actual \emph{substitution}.
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   102
 Also note how the occurrence of ``\dots'' in the subsequent step
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   103
 documents the position where the right-hand side of the hypothesis
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   104
 got filled in.
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   105
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   106
 \medskip A further notable point here is integration of calculations
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   107
 with plain natural deduction.  This works so well in Isar for two
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   108
 reasons.
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   109
 \begin{enumerate}
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   110
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   111
 \item Facts involved in \isakeyword{also}~/ \isakeyword{finally}
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   112
 calculational chains may be just anything.  There is nothing special
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   113
 about \isakeyword{have}, so the natural deduction element
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   114
 \isakeyword{assume} works just as well.
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   115
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   116
 \item There are two \emph{separate} primitives for building natural
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   117
 deduction contexts: \isakeyword{fix}~$x$ and \isakeyword{assume}~$A$.
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   118
 Thus it is possible to start reasoning with some new ``arbitrary, but
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   119
 fixed'' elements before bringing in the actual assumption.  In
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   120
 contrast, natural deduction is occasionally formalized with basic
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   121
 context elements of the form $x:A$ instead.
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   122
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   123
 \end{enumerate}
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   124
*};
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   125
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   126
text {*
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   127
 \medskip We derive further summation laws for odds, squares, and
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   128
 cubes as follows.  The basic technique of induction plus calculation
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   129
 is the same as before.
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   130
*};
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   131
7800
8ee919e42174 improved presentation;
wenzelm
parents: 7761
diff changeset
   132
theorem sum_of_odds:
8ee919e42174 improved presentation;
wenzelm
parents: 7761
diff changeset
   133
  "(SUM i < n. 2 * i + 1) = n^2"
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   134
  (is "?P n" is "?S n = _");
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   135
proof (induct n);
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   136
  show "?P 0"; by simp;
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   137
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   138
  fix n;
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   139
  have "?S (n + 1) = ?S n + 2 * n + 1"; by simp;
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   140
  also; assume "?S n = n^2";
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   141
  also; have "... + 2 * n + 1 = (n + 1)^2"; by simp;
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   142
  finally; show "?P (Suc n)"; by simp;
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   143
qed;
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   144
7761
7fab9592384f improved presentation;
wenzelm
parents: 7748
diff changeset
   145
theorem sum_of_squares:
7fab9592384f improved presentation;
wenzelm
parents: 7748
diff changeset
   146
  "6 * (SUM i < n + 1. i^2) = n * (n + 1) * (2 * n + 1)"
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   147
  (is "?P n" is "?S n = _");
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   148
proof (induct n);
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   149
  show "?P 0"; by simp;
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   150
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   151
  fix n;
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   152
  have "?S (n + 1) = ?S n + 6 * (n + 1)^2"; by simp;
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   153
  also; assume "?S n = n * (n + 1) * (2 * n + 1)";
7800
8ee919e42174 improved presentation;
wenzelm
parents: 7761
diff changeset
   154
  also; have "... + 6 * (n + 1)^2 =
8ee919e42174 improved presentation;
wenzelm
parents: 7761
diff changeset
   155
    (n + 1) * (n + 2) * (2 * (n + 1) + 1)"; by simp;
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   156
  finally; show "?P (Suc n)"; by simp;
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   157
qed;
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   158
7800
8ee919e42174 improved presentation;
wenzelm
parents: 7761
diff changeset
   159
theorem sum_of_cubes:
8ee919e42174 improved presentation;
wenzelm
parents: 7761
diff changeset
   160
  "4 * (SUM i < n + 1. i^3) = (n * (n + 1))^2"
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   161
  (is "?P n" is "?S n = _");
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   162
proof (induct n);
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   163
  show "?P 0"; by simp;
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   164
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   165
  fix n;
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   166
  have "?S (n + 1) = ?S n + 4 * (n + 1)^3"; by simp;
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   167
  also; assume "?S n = (n * (n + 1))^2";
7761
7fab9592384f improved presentation;
wenzelm
parents: 7748
diff changeset
   168
  also; have "... + 4 * (n + 1)^3 = ((n + 1) * ((n + 1) + 1))^2";
7fab9592384f improved presentation;
wenzelm
parents: 7748
diff changeset
   169
    by simp;
7480
0a0e0dbe1269 replaced ?? by ?;
wenzelm
parents: 7443
diff changeset
   170
  finally; show "?P (Suc n)"; by simp;
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   171
qed;
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   172
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   173
text {*
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   174
 Comparing these examples with the tactic script version
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   175
 \url{http://isabelle.in.tum.de/library/HOL/ex/NatSum.html}, we note
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   176
 an important difference of how induction vs.\ simplification is
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   177
 applied.  While \cite[\S10]{isabelle-ref} advises for these examples
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   178
 that ``induction should not be applied until the goal is in the
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   179
 simplest form'' this would be a very bad idea in our setting.
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   180
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   181
 Simplification normalizes all arithmetic expressions involved,
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   182
 producing huge intermediate goals.  With applying induction
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   183
 afterwards, the Isar proof text would have to reflect the emerging
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   184
 configuration by appropriate sub-proofs.  This would result in badly
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   185
 structured, low-level technical reasoning, without any good idea of
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   186
 the actual point.
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   187
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   188
 \medskip As a general rule of good proof style, automatic methods
7982
d534b897ce39 improved presentation;
wenzelm
parents: 7968
diff changeset
   189
 such as $\idt{simp}$ or $\idt{auto}$ should normally be never used as
7968
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   190
 initial proof methods, but only as terminal ones, solving certain
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   191
 goals completely.
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   192
*};
964b65b4e433 improved presentation;
wenzelm
parents: 7869
diff changeset
   193
7443
e5356e73f57a renamed NatSum to Summation;
wenzelm
parents:
diff changeset
   194
end;