359
|
1 |
\contentsline {chapter}{\numberline {1}Basic Concepts}{1}
|
|
2 |
\contentsline {section}{\numberline {1.1}Syntax definitions}{2}
|
104
|
3 |
\contentsline {section}{\numberline {1.2}Proof procedures}{3}
|
359
|
4 |
\contentsline {chapter}{\numberline {2}First-Order Logic}{4}
|
104
|
5 |
\contentsline {section}{\numberline {2.1}Syntax and rules of inference}{4}
|
|
6 |
\contentsline {section}{\numberline {2.2}Generic packages}{8}
|
|
7 |
\contentsline {section}{\numberline {2.3}Intuitionistic proof procedures}{8}
|
|
8 |
\contentsline {section}{\numberline {2.4}Classical proof procedures}{10}
|
|
9 |
\contentsline {section}{\numberline {2.5}An intuitionistic example}{11}
|
|
10 |
\contentsline {section}{\numberline {2.6}An example of intuitionistic negation}{12}
|
|
11 |
\contentsline {section}{\numberline {2.7}A classical example}{14}
|
359
|
12 |
\contentsline {section}{\numberline {2.8}Derived rules and the classical tactics}{15}
|
465
|
13 |
\contentsline {subsection}{\numberline {2.8.1}Deriving the introduction rule}{16}
|
|
14 |
\contentsline {subsection}{\numberline {2.8.2}Deriving the elimination rule}{17}
|
|
15 |
\contentsline {subsection}{\numberline {2.8.3}Using the derived rules}{17}
|
|
16 |
\contentsline {subsection}{\numberline {2.8.4}Derived rules versus definitions}{19}
|
359
|
17 |
\contentsline {chapter}{\numberline {3}Zermelo-Fraenkel Set Theory}{22}
|
|
18 |
\contentsline {section}{\numberline {3.1}Which version of axiomatic set theory?}{22}
|
|
19 |
\contentsline {section}{\numberline {3.2}The syntax of set theory}{23}
|
|
20 |
\contentsline {section}{\numberline {3.3}Binding operators}{25}
|
|
21 |
\contentsline {section}{\numberline {3.4}The Zermelo-Fraenkel axioms}{27}
|
|
22 |
\contentsline {section}{\numberline {3.5}From basic lemmas to function spaces}{30}
|
465
|
23 |
\contentsline {subsection}{\numberline {3.5.1}Fundamental lemmas}{30}
|
|
24 |
\contentsline {subsection}{\numberline {3.5.2}Unordered pairs and finite sets}{32}
|
|
25 |
\contentsline {subsection}{\numberline {3.5.3}Subset and lattice properties}{32}
|
|
26 |
\contentsline {subsection}{\numberline {3.5.4}Ordered pairs}{36}
|
|
27 |
\contentsline {subsection}{\numberline {3.5.5}Relations}{36}
|
|
28 |
\contentsline {subsection}{\numberline {3.5.6}Functions}{37}
|
359
|
29 |
\contentsline {section}{\numberline {3.6}Further developments}{38}
|
|
30 |
\contentsline {section}{\numberline {3.7}Simplification rules}{47}
|
|
31 |
\contentsline {section}{\numberline {3.8}The examples directory}{47}
|
|
32 |
\contentsline {section}{\numberline {3.9}A proof about powersets}{48}
|
|
33 |
\contentsline {section}{\numberline {3.10}Monotonicity of the union operator}{51}
|
|
34 |
\contentsline {section}{\numberline {3.11}Low-level reasoning about functions}{52}
|
|
35 |
\contentsline {chapter}{\numberline {4}Higher-Order Logic}{55}
|
|
36 |
\contentsline {section}{\numberline {4.1}Syntax}{55}
|
465
|
37 |
\contentsline {subsection}{\numberline {4.1.1}Types}{57}
|
|
38 |
\contentsline {subsection}{\numberline {4.1.2}Binders}{58}
|
|
39 |
\contentsline {subsection}{\numberline {4.1.3}The {\ptt let} and {\ptt case} constructions}{58}
|
359
|
40 |
\contentsline {section}{\numberline {4.2}Rules of inference}{58}
|
|
41 |
\contentsline {section}{\numberline {4.3}A formulation of set theory}{60}
|
465
|
42 |
\contentsline {subsection}{\numberline {4.3.1}Syntax of set theory}{65}
|
|
43 |
\contentsline {subsection}{\numberline {4.3.2}Axioms and rules of set theory}{69}
|
359
|
44 |
\contentsline {section}{\numberline {4.4}Generic packages and classical reasoning}{71}
|
|
45 |
\contentsline {section}{\numberline {4.5}Types}{73}
|
465
|
46 |
\contentsline {subsection}{\numberline {4.5.1}Product and sum types}{73}
|
|
47 |
\contentsline {subsection}{\numberline {4.5.2}The type of natural numbers, {\ptt nat}}{73}
|
|
48 |
\contentsline {subsection}{\numberline {4.5.3}The type constructor for lists, {\ptt list}}{76}
|
|
49 |
\contentsline {subsection}{\numberline {4.5.4}The type constructor for lazy lists, {\ptt llist}}{76}
|
|
50 |
\contentsline {section}{\numberline {4.6}Datatype declarations}{79}
|
|
51 |
\contentsline {subsection}{\numberline {4.6.1}Foundations}{79}
|
|
52 |
\contentsline {subsection}{\numberline {4.6.2}Defining datatypes}{80}
|
|
53 |
\contentsline {subsection}{\numberline {4.6.3}Examples}{82}
|
|
54 |
\contentsline {subsubsection}{The datatype $\alpha \penalty \@M \ list$}{82}
|
|
55 |
\contentsline {subsubsection}{The datatype $\alpha \penalty \@M \ list$ with mixfix syntax}{83}
|
|
56 |
\contentsline {subsubsection}{Defining functions on datatypes}{83}
|
|
57 |
\contentsline {subsubsection}{A datatype for weekdays}{84}
|
|
58 |
\contentsline {section}{\numberline {4.7}The examples directories}{84}
|
|
59 |
\contentsline {section}{\numberline {4.8}Example: Cantor's Theorem}{85}
|
|
60 |
\contentsline {chapter}{\numberline {5}First-Order Sequent Calculus}{88}
|
|
61 |
\contentsline {section}{\numberline {5.1}Unification for lists}{88}
|
|
62 |
\contentsline {section}{\numberline {5.2}Syntax and rules of inference}{90}
|
|
63 |
\contentsline {section}{\numberline {5.3}Tactics for the cut rule}{92}
|
|
64 |
\contentsline {section}{\numberline {5.4}Tactics for sequents}{93}
|
|
65 |
\contentsline {section}{\numberline {5.5}Packaging sequent rules}{94}
|
|
66 |
\contentsline {section}{\numberline {5.6}Proof procedures}{94}
|
|
67 |
\contentsline {subsection}{\numberline {5.6.1}Method A}{95}
|
|
68 |
\contentsline {subsection}{\numberline {5.6.2}Method B}{95}
|
|
69 |
\contentsline {section}{\numberline {5.7}A simple example of classical reasoning}{96}
|
|
70 |
\contentsline {section}{\numberline {5.8}A more complex proof}{97}
|
|
71 |
\contentsline {chapter}{\numberline {6}Constructive Type Theory}{99}
|
|
72 |
\contentsline {section}{\numberline {6.1}Syntax}{101}
|
|
73 |
\contentsline {section}{\numberline {6.2}Rules of inference}{101}
|
|
74 |
\contentsline {section}{\numberline {6.3}Rule lists}{107}
|
|
75 |
\contentsline {section}{\numberline {6.4}Tactics for subgoal reordering}{107}
|
|
76 |
\contentsline {section}{\numberline {6.5}Rewriting tactics}{108}
|
|
77 |
\contentsline {section}{\numberline {6.6}Tactics for logical reasoning}{109}
|
|
78 |
\contentsline {section}{\numberline {6.7}A theory of arithmetic}{111}
|
|
79 |
\contentsline {section}{\numberline {6.8}The examples directory}{111}
|
|
80 |
\contentsline {section}{\numberline {6.9}Example: type inference}{111}
|
|
81 |
\contentsline {section}{\numberline {6.10}An example of logical reasoning}{113}
|
|
82 |
\contentsline {section}{\numberline {6.11}Example: deriving a currying functional}{116}
|
|
83 |
\contentsline {section}{\numberline {6.12}Example: proving the Axiom of Choice}{117}
|