author nipkow Tue, 30 Sep 2014 22:43:20 +0200 changeset 58504 5f88c142676d parent 58503 ea22f2380871 child 58505 d1fe47fe5401
tuned
 src/Doc/Prog_Prove/Bool_nat_list.thy file | annotate | diff | comparison | revisions src/Doc/Prog_Prove/Isar.thy file | annotate | diff | comparison | revisions src/Doc/Prog_Prove/Logic.thy file | annotate | diff | comparison | revisions src/Doc/Prog_Prove/Types_and_funs.thy file | annotate | diff | comparison | revisions src/Doc/Prog_Prove/document/intro-isabelle.tex file | annotate | diff | comparison | revisions
--- a/src/Doc/Prog_Prove/Bool_nat_list.thy	Tue Sep 30 19:37:34 2014 +0200
+++ b/src/Doc/Prog_Prove/Bool_nat_list.thy	Tue Sep 30 22:43:20 2014 +0200
@@ -169,7 +169,7 @@
\item \isacom{datatype} requires no quotation marks on the
left-hand side, but on the right-hand side each of the argument
types of a constructor needs to be enclosed in quotation marks, unless
-it is just an identifier (e.g.\ @{typ nat} or @{typ 'a}).
+it is just an identifier (e.g., @{typ nat} or @{typ 'a}).
\end{itemize}
We also define two standard functions, append and reverse: *}

@@ -221,7 +221,7 @@
Just as for natural numbers, there is a proof principle of induction for
lists. Induction over a list is essentially induction over the length of
the list, although the length remains implicit. To prove that some property
-@{text P} holds for all lists @{text xs}, i.e.\ \mbox{@{prop"P(xs)"}},
+@{text P} holds for all lists @{text xs}, i.e., \mbox{@{prop"P(xs)"}},
you need to prove
\begin{enumerate}
\item the base case @{prop"P(Nil)"} and
--- a/src/Doc/Prog_Prove/Isar.thy	Tue Sep 30 19:37:34 2014 +0200
+++ b/src/Doc/Prog_Prove/Isar.thy	Tue Sep 30 22:43:20 2014 +0200
@@ -59,7 +59,7 @@
method which must finish off the statement being proved, for example @{text
auto},  or it can be a \isacom{proof}--\isacom{qed} block of multiple
steps. Such a block can optionally begin with a proof method that indicates
-how to start off the proof, e.g.\ \mbox{@{text"(induction xs)"}}.
+how to start off the proof, e.g., \mbox{@{text"(induction xs)"}}.

A step either assumes a proposition or states a proposition
together with its proof. The optional \isacom{from} clause
@@ -721,7 +721,7 @@

text{*
The unknown @{text"?case"}\index{case?@@{text"?case"}|(} is set in each case to the required
-claim, i.e.\ @{text"?P 0"} and \mbox{@{text"?P(Suc n)"}} in the above proof,
+claim, i.e., @{text"?P 0"} and \mbox{@{text"?P(Suc n)"}} in the above proof,
without requiring the user to define a @{text "?P"}. The general
pattern for induction over @{typ nat} is shown on the left-hand side:
*}text_raw{*
@@ -935,7 +935,7 @@
induction rule. For rule inductions these are the hypotheses of rule
@{text name}, for structural inductions these are empty.
\item[@{text name.prems}]\index{prems@@{text".prems"}} contains the (suitably instantiated) premises
-of the statement being proved, i.e. the @{text A\<^sub>i} when
+of the statement being proved, i.e., the @{text A\<^sub>i} when
proving @{text"\<lbrakk> A\<^sub>1; \<dots>; A\<^sub>n \<rbrakk> \<Longrightarrow> A"}.
\end{description}
\begin{warn}
@@ -947,7 +947,7 @@
More complicated inductive proofs than the ones we have seen so far
often need to refer to specific assumptions---just @{text name} or even
@{text name.prems} and @{text name.IH} can be too unspecific.
-This is where the indexing of fact lists comes in handy, e.g.\
+This is where the indexing of fact lists comes in handy, e.g.,
@{text"name.IH(2)"} or @{text"name.prems(1-2)"}.

\subsection{Rule Inversion}
--- a/src/Doc/Prog_Prove/Logic.thy	Tue Sep 30 19:37:34 2014 +0200
+++ b/src/Doc/Prog_Prove/Logic.thy	Tue Sep 30 22:43:20 2014 +0200
@@ -197,7 +197,7 @@

A proof method that is still incomplete but tries harder than @{text auto} is
\indexed{@{text fastforce}}{fastforce}.  It either succeeds or fails, it acts on the first
-subgoal only, and it can be modified just like @{text auto}, e.g.\
+subgoal only, and it can be modified just like @{text auto}, e.g.,
with @{text "simp add"}. Here is a typical example of what @{text fastforce}
can do:
*}
@@ -284,7 +284,7 @@
connectives @{text"\<not>"}, @{text"\<and>"}, @{text"\<or>"}, @{text"\<longrightarrow>"},
@{text"\<longleftrightarrow>"}. Strictly speaking, this is known as \concept{linear arithmetic}
because it does not involve multiplication, although multiplication with
-numbers, e.g.\ @{text"2*n"}, is allowed. Such formulas can be proved by
+numbers, e.g., @{text"2*n"}, is allowed. Such formulas can be proved by
\indexed{@{text arith}}{arith}:
*}

@@ -399,7 +399,7 @@
{\mbox{@{text"?P = ?Q"}}}
\]
These rules are part of the logical system of \concept{natural deduction}
-(e.g.\ \cite{HuthRyan}). Although we intentionally de-emphasize the basic rules
+(e.g., \cite{HuthRyan}). Although we intentionally de-emphasize the basic rules
of logic in favour of automatic proof methods that allow you to take bigger
steps, these rules are helpful in locating where and why automation fails.
When applied backwards, these rules decompose the goal:
@@ -471,7 +471,7 @@
@{text dest} which instructs the proof method to use certain rules in a
forward fashion. If @{text r} is of the form \mbox{@{text "A \<Longrightarrow> B"}}, the modifier
\mbox{@{text"dest: r"}}\index{dest@@{text"dest:"}}
-allows proof search to reason forward with @{text r}, i.e.\
+allows proof search to reason forward with @{text r}, i.e.,
to replace an assumption @{text A'}, where @{text A'} unifies with @{text A},
with the correspondingly instantiated @{text B}. For example, @{thm[source,show_question_marks] Suc_leD} is the theorem \mbox{@{thm Suc_leD}}, which works well for forward reasoning:
*}
@@ -526,7 +526,7 @@
text{* To get used to inductive definitions, we will first prove a few
properties of @{const ev} informally before we descend to the Isabelle level.

-How do we prove that some number is even, e.g.\ @{prop "ev 4"}? Simply by combining the defining rules for @{const ev}:
+How do we prove that some number is even, e.g., @{prop "ev 4"}? Simply by combining the defining rules for @{const ev}:
\begin{quote}
@{text "ev 0 \<Longrightarrow> ev (0 + 2) \<Longrightarrow> ev((0 + 2) + 2) = ev 4"}
\end{quote}
--- a/src/Doc/Prog_Prove/Types_and_funs.thy	Tue Sep 30 19:37:34 2014 +0200
+++ b/src/Doc/Prog_Prove/Types_and_funs.thy	Tue Sep 30 22:43:20 2014 +0200
@@ -145,7 +145,7 @@
recursive calls on the right-hand side must be strictly smaller than the
arguments on the left-hand side. In the simplest case, this means that one
fixed argument position decreases in size with each recursive call. The size
-is measured as the number of constructors (excluding 0-ary ones, e.g.\ @{text
+is measured as the number of constructors (excluding 0-ary ones, e.g., @{text
Nil}). Lexicographic combinations are also recognized. In more complicated
situations, the user may have to prove termination by hand. For details
see~\cite{Krauss}.
--- a/src/Doc/Prog_Prove/document/intro-isabelle.tex	Tue Sep 30 19:37:34 2014 +0200
+++ b/src/Doc/Prog_Prove/document/intro-isabelle.tex	Tue Sep 30 22:43:20 2014 +0200
@@ -64,7 +64,7 @@
\begin{center}
\includegraphics[width=\textwidth]{jedit.png}
\end{center}
-The upper part of the window shows the input typed by the user, i.e.\ the
+The upper part of the window shows the input typed by the user, i.e., the
gradually growing Isabelle text of definitions, theorems, proofs, etc.  The
interface processes the user input automatically while it is typed, just like
modern Java IDEs.  Isabelle's response to the user input is shown in the