src/Doc/ProgProve/Isar.thy
changeset 52361 7d5ad23b8245
parent 52059 2f970c7f722b
child 52593 aedf7b01c6e4
--- a/src/Doc/ProgProve/Isar.thy	Mon Jun 10 08:39:48 2013 -0400
+++ b/src/Doc/ProgProve/Isar.thy	Mon Jun 10 16:04:18 2013 +0200
@@ -84,7 +84,7 @@
 writing @{text"f.simps(2)"}, whole sublists by @{text"f.simps(2-4)"}.
 
 
-\section{Isar by example}
+\section{Isar by Example}
 
 We show a number of proofs of Cantor's theorem that a function from a set to
 its powerset cannot be surjective, illustrating various features of Isar. The
@@ -175,7 +175,7 @@
 \noindent The \isacom{using} idiom de-emphasizes the used facts by moving them
 behind the proposition.
 
-\subsection{Structured lemma statements: \isacom{fixes}, \isacom{assumes}, \isacom{shows}}
+\subsection{Structured Lemma Statements: \isacom{fixes}, \isacom{assumes}, \isacom{shows}}
 
 Lemmas can also be stated in a more structured fashion. To demonstrate this
 feature with Cantor's theorem, we rephrase @{prop"\<not> surj f"}
@@ -221,7 +221,7 @@
 to individual assumptions by @{text"assms(1)"}, @{text"assms(2)"} etc,
 thus obviating the need to name them individually.
 
-\section{Proof patterns}
+\section{Proof Patterns}
 
 We show a number of important basic proof patterns. Many of them arise from
 the rules of natural deduction that are applied by \isacom{proof} by
@@ -428,9 +428,9 @@
 \end{minipage}
 \end{tabular}
 \begin{isamarkuptext}%
-\section{Streamlining proofs}
+\section{Streamlining Proofs}
 
-\subsection{Pattern matching and quotations}
+\subsection{Pattern Matching and Quotations}
 
 In the proof patterns shown above, formulas are often duplicated.
 This can make the text harder to read, write and maintain. Pattern matching
@@ -544,7 +544,7 @@
 The \isacom{moreover} version is no shorter but expresses the structure more
 clearly and avoids new names.
 
-\subsection{Raw proof blocks}
+\subsection{Raw Proof Blocks}
 
 Sometimes one would like to prove some lemma locally within a proof.
 A lemma that shares the current context of assumptions but that
@@ -590,9 +590,9 @@
 the fact just proved, in this case the preceding block. In general,
 \isacom{note} introduces a new name for one or more facts.
 
-\section{Case analysis and induction}
+\section{Case Analysis and Induction}
 
-\subsection{Datatype case analysis}
+\subsection{Datatype Case Analysis}
 
 We have seen case analysis on formulas. Now we want to distinguish
 which form some term takes: is it @{text 0} or of the form @{term"Suc n"},
@@ -642,7 +642,7 @@
 are not used because they are directly piped (via \isacom{thus})
 into the proof of the claim.
 
-\subsection{Structural induction}
+\subsection{Structural Induction}
 
 We illustrate structural induction with an example based on natural numbers:
 the sum (@{text"\<Sum>"}) of the first @{text n} natural numbers
@@ -768,7 +768,7 @@
 \item \isacom{let} @{text"?case = \"P(C x\<^isub>1 \<dots> x\<^isub>n)\""}
 \end{enumerate}
 
-\subsection{Rule induction}
+\subsection{Rule Induction}
 
 Recall the inductive and recursive definitions of even numbers in
 \autoref{sec:inductive-defs}:
@@ -893,7 +893,7 @@
 free variables in rule @{text i} to @{text"x\<^isub>1 \<dots> x\<^isub>k"},
 going through rule @{text i} from left to right.
 
-\subsection{Assumption naming}
+\subsection{Assumption Naming}
 \label{sec:assm-naming}
 
 In any induction, \isacom{case}~@{text name} sets up a list of assumptions
@@ -919,7 +919,8 @@
 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}
+\subsection{Rule Inversion}
+\label{sec:rule-inversion}
 
 Rule inversion is case analysis of which rule could have been used to
 derive some fact. The name \concept{rule inversion} emphasizes that we are
@@ -980,7 +981,7 @@
 text{* Normally not all cases will be impossible. As a simple exercise,
 prove that \mbox{@{prop"\<not> ev(Suc(Suc(Suc 0)))"}.}
 
-\subsection{Advanced rule induction}
+\subsection{Advanced Rule Induction}
 \label{sec:advanced-rule-induction}
 
 So far, rule induction was always applied to goals of the form @{text"I x y z \<Longrightarrow> \<dots>"}