Skip to content

Commit 8d56e65

Browse files
committed
Fix typos, some minor wording adjustments
1 parent 2460ef4 commit 8d56e65

15 files changed

+185
-187
lines changed

tex/ch0.tex

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,22 @@ \chapter*{Introduction}
1010
Four Color Theorem~\cite{Gonthier08} and of the
1111
Odd Order Theorem~\cite{gonthier:hal-00816699}.
1212

13-
The reason of existence of this book is to break down the barriers to entry.
13+
The reason for this book's existence is to break down the barriers to entry.
1414
While there are several books around covering the usage of the
1515
\Coq{} system~\cite{BC04,SF,CPDT}
1616
and the theory it is based
1717
on~\cite{Coq:manual}\cite{paulinmohring:hal-01094195,hottbook},
1818
the \mcbMC{} library is built
1919
in an unconventional way. As a consequence, this book provides a
20-
non-standard presentation of \Coq{}, putting upfront the formalization
20+
non-standard presentation of \Coq{}, putting up front the formalization
2121
choices and the proof style that are the pillars of the library.
2222

23-
This book targets two classes of public. On the one hand, newcomers,
23+
This book targets two kinds of audience. On the one hand, newcomers,
2424
even the more mathematically inclined ones, %may
2525
find a soft
2626
introduction to the programming
2727
language of \Coq{}, Gallina, and the SSReflect proof language.
28-
On the other hand accustomed \Coq{} users %will hopefully
29-
find a
28+
On the other hand, accustomed \Coq{} users will, we hope, find a
3029
substantial account of the formalization style that made the \mcbMC{}
3130
library possible.
3231

@@ -39,7 +38,7 @@ \chapter*{Introduction}
3938
given as soon as possible sufficient tools to prove non-trivial
4039
mathematical results by reusing parts of the library. By the end of
4140
the first part, the reader has learned how to prove formally the
42-
infinitude of prime numbers, or the correctness of the Euclidean's
41+
infinitude of prime numbers, or the correctness of the Euclidean
4342
division algorithm, in a few lines of proof text.
4443

4544
\paragraph{Acknowledgments.}
@@ -83,21 +82,21 @@ \subsection*{Part 1: \partonename{}}
8382
% proofs gradually, and takes benefit from frequent interactions with
8483
% the system.
8584
\emph{SSReflect} is a language designed to
86-
ease the activity of writing and maintaining formal proofs.
85+
ease the task of writing and maintaining formal proofs.
8786
In particular the maintenance of large
8887
formal libraries requires a solid writing discipline
8988
and a language that supports it.
9089
% . to be tractable,
9190
% as it is the case for any large corpus of code.
92-
\emph{SSReflect} provides linguistic constructs well adapted to
91+
\emph{SSReflect} provides linguistic constructs that are well-adapted to
9392
writing scripts that can be easily fixed in response to % ancillary
9493
changes to the contents of the formal libraries.
9594
% or changing the formal
9695
% definitions.
9796

98-
Actually, \mcbSSR{} is firstly the name of a
97+
Actually, \mcbSSR{} is first and foremost the name of a
9998
formalization methodology, sometimes also called \emph{Boolean Reflection}.
100-
Initially conceived for the formal proof
99+
Initially conceived for the formal proof
101100
of the Four Colors Theorem, it became a pillar of the \mcbMC{}
102101
library and of the formal proof of the Odd Order
103102
Theorem. The SSReflect proof language was named after this methodology

tex/chFingroup.tex

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,17 @@ \chapter{Finite group theory}
44
the \C{fingroup} and \C{solvable} directories. It covers a substantial
55
part of~\cite{gorenstein2007finite} and~\cite{9781139175319} ranging from
66
basic notions like morphisms, quotients, actions, cyclic and p-groups to more
7-
substantial topics as Sylow and Hall groups, the Abelian
8-
structure theorem and the Jordan Holder theorem.
7+
substantial topics as Sylow and Hall groups, the abelian
8+
structure theorem and the Jordan-H\"older theorem.
99
The paper~\cite{DBLP:conf/mkm/Mahboubi13}
1010
describes the constructions and formalization techniques
11-
needed in order to prove the Jordan Holder theorem.
11+
needed in order to prove the Jordan-Holder theorem.
1212

1313
\paragraph{contents}
1414

1515
\lib{..}
1616

17-
\paragraph{Basic formalization choices} To ease the study of sub-groups,
17+
\paragraph{Basic formalization choices} To ease the study of subgroups,
1818
the type of groups is indexed over a container group called
1919
\C{finGroupType}, fixing the group law and imposing finiteness by
2020
inheriting from \C{finType}.
@@ -25,24 +25,24 @@ \chapter{Finite group theory}
2525
Concepts already existing on sets are kept there and not redefined.
2626
Type inference is programmed to infer the group structure whenever possible.
2727
For example the type of \C{(G :&: H)} is \C{\{set gT\}} but such expression
28-
is automatically promoted to a group when needed, similarly to what
28+
is automatically promoted to a group when needed, similarly to what
2929
was done in section~\ref{sec:tupleinvariant} for tuples.
3030

31-
group concepts usually here defined on sets, but then
32-
possibly using the generated group operation to fulfill
33-
stricter requirements. This generalized the math concept and
34-
ease the integration with set stuff. This is possible because
35-
the container is a group and we can always generate from a set.
31+
Group concepts are usually defined on sets, but then
32+
possibly use the generated group operation to fulfill
33+
stricter requirements. This generalizes the math concept and
34+
eases the integration with set theory. This is possible because
35+
the container is a group and we can always generate one from a set.
3636

37-
morphisms carry domain set in type.
37+
morphisms carry their domain set in their type.
3838

3939
\paragraph{Notations} The same infix \C{*} notation can be used to
4040
multiply both sets (or groups) and their points. For example
4141
\C{(g * h \\in G * H)} is a valid writing, meaning that
4242
$g\cdot h \in \{ x\cdot y | x \in G, y \in H\}$. Given the \C{finGroupType}
4343
container many open notations are also supported, for example the normalizer
4444
of \C{A}, written \C{'N(A)} for \C{A} being a \C{\{set gT\}}, is a sensible
45-
writing. Another bonus from the container.
45+
writing, another bonus from the container.
4646

4747
\begin{coq}{}{}
4848
Definition normaliser A := [set x | A :^ x \subset A].
@@ -76,7 +76,7 @@ \chapter{Finite group theory}
7676
Lemma quotientMl A B : A \subset 'N(H) -> A * B / H = (A / H) * (B / H).
7777
\end{coq}
7878
Remark that the equational form lets you require only one precondition:
79-
if \C{B} exceeds the \C{'N(H)} then the equation still holds, since
79+
if \C{B} exceeds \C{'N(H)}, then the equation still holds, since
8080
the intersection with the normalizer of \C{H} occurs on both sides.
8181

8282
A similar choice is used for the (semi) direct and central product.
@@ -98,15 +98,15 @@ \chapter{Finite group theory}
9898
the trivial group.
9999

100100
\paragraph{Formalization trick: presentations} One cannot decide if a group
101-
presented via generators and relations is finite, hence the integration of such
101+
presented via generators and relations is finite, hence the integration of such a
102102
concept in a library of finite groups is tricky. The notation
103103
\C{(G \\homg Grp (x : (x ^+ n)))} states that the finite group \C{G}
104104
is generated by a single point \C{x} of order \C{n} (as in the standard
105105
mathematical notation, \C{(x ^+ n)} really means \C{(x ^+ n = 1)}).
106106
The shrewdness is that the notation hides an existential quantification
107107
postulating the existence of a finite tuple of generators satisfying
108108
the equations and building \C{G}: the potentially infinite object is never
109-
built as well the \C{\\homg} relation, standing for homomorphic image,
109+
built, and the \C{\\homg} relation (standing for homomorphic image)
110110
suggests the fact that \C{G} is the image of the presented group, not the
111111
group itself. Notation
112112
\C{(G \\homg Grp (x_1 : .. x_n : (s_1 = t_1, .., s_m = t_m))}
@@ -145,6 +145,6 @@ \chapter{Representation and Character theory}
145145

146146
\cite{isaacs1976character}
147147

148-
As an example of application, in particular of the linear algebra
148+
As an example of application of the library, in particular of the linear algebra
149149
theory.
150150

tex/chGraph.tex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ \chapter{Finite graph theory}
1313
\item ordinals: injections, enumeration of/projection from a finite
1414
set. Example of indexing by a finite type (and not In).
1515
\item pick
16-
\item tuples, as indexation domains, that can be enumerated by an
17-
ordinal and avoid dflt element (cf \C{tnth} in
16+
\item tuples, as indexing domains, that can be enumerated by an
17+
ordinal and avoid default element (cf \C{tnth} in
1818
6.4).
1919
\item may be restriction of finite functions by a predicate?
2020
\item images (of finite functions)

tex/chHierarchy.tex

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,12 @@ \chapter{Organizing Theories}{}
4242
dependent types, coercions and canonical instances of structures. It
4343
is only a ``simple matter of programming'', albeit one that involves
4444
some new formalisation idioms. This chapter describes the most
45-
important: telescopes, packed classes, and phantom parameters.
45+
important ones: telescopes, packed classes, and phantom parameters.
4646
% class coercions, and quotation.
4747

4848
While some of these formalisation patterns are quite technical, casual
4949
users do not need to master them all. Indeed the documented interface
50-
of structures suffices to use and declare instances of structures. We
50+
of structures suffices for using and declaring instances of structures. We
5151
describe these interfaces first, so only those who wish to extend old
5252
or create new hierarchies need to read on.
5353

@@ -157,7 +157,7 @@ \section{Structure interface}\label{str:itf}
157157

158158
Line 1 bundles the additive operations (0, $+$, $-$) and their
159159
properties in a \emph{mixin}, which is then used in line 2 to create a
160-
canonical instance. After line 2 all the additive algebra provided in
160+
canonical instance. After line 2 all the additive algebra provided by
161161
\lib{ssralg} becomes applicable to \lstinline/'I_p/; for example \C{0}
162162
denotes the zero element, and \C{i + 1} denotes the successor of \C{i} mod $p$.
163163

@@ -570,7 +570,7 @@ \section{Packed classes}\label{sec:packed}
570570
\begin{coq}{name=packed22}{}
571571
Coercion base : class_of >-> Equality.class_of.
572572
Coercion mixin : class_of >-> mixin_of.
573-
Coercion sort : type >-> Sortclass.
573+
Coercion sort : type >-> SortClass.
574574
Variables (T : Type) (cT : type).
575575
Definition class := let: @Pack _ c as cT' := cT return class_of cT' in c.
576576
Definition eqType := Equality.Pack class.
@@ -705,9 +705,9 @@ \section{Packed classes}\label{sec:packed}
705705
Two structures extend rings independently: \C{comRingType} provides
706706
multiplication commutativity, and \C{unitRingType} provides computable
707707
inverses for all units (i.e., invertible elements) along with a test
708-
of invertibility. These structures are incomparable, and there are reasonable
708+
of invertibility. These structures are incomparable, as there are reasonable
709709
instances of each: $2\times 2$ matrices over $\mathbb{Q}$ have
710-
computable inverses but do not commute, while polynomials over
710+
computable inverses but do not commute, whereas polynomials over
711711
$\mathbb{Z}_p$ commute but do not have easily computable inverses.
712712
The respective definitions of \C{comRingType} and \C{unitRingType} follow exactly
713713
the pattern we have seen,
@@ -875,7 +875,7 @@ \section{Parameters and constructors}\label{sec:phant}
875875

876876
For example, each packed class contains exactly the same definition of
877877
the clone constructor\footnote{More precisely, the situation is slightly different
878-
in the case of structure with a parameter, like modules.}, following the introduction of
878+
in the case of a structure with a parameter, like modules.}, following the introduction of
879879
section variables \C{T} and~\C{cT}, and the definition of \C{class}:
880880

881881
\begin{coq}{name=phant21}{}
@@ -912,7 +912,7 @@ \section{Parameters and constructors}\label{sec:phant}
912912
The code for the instance constructor for \C{choiceType} is almost
913913
identical, because it only extends \C{eqType} with a mixin that does
914914
not depend on \C{eqType}.
915-
Note that this definition allows \Coq{} to infer \C{T} from \C{m}.
915+
Note that this definition lets \Coq{} infer \C{T} from \C{m}.
916916

917917
\begin{coq}{name=phant23}{}
918918
Definition pack T m :=
@@ -981,7 +981,7 @@ \section{Linking a custom data type to the library}
981981
\begin{coq}{}{}
982982
Inductive windrose := N | S | E | W.
983983
\end{coq}
984-
The most naive way to show that \C{windrose} is a \C{finType} is
984+
The most na\"ive way to show that \C{windrose} is a \C{finType} is
985985
to provide a comparison function, then a choice function, \ldots
986986
finally an enumeration. Instead, it is much simpler to show one
987987
can punt \C{windrose} in bijection with a pre-existing finite type,
@@ -1027,12 +1027,12 @@ \section{Linking a custom data type to the library}
10271027
Definition windrose_finMixin := PcanFinMixin pcan_wo4.
10281028
Canonical windrose_finType := FinType windrose windrose_finMixin.
10291029
\end{coq}
1030-
Only one tiny detail has been left on the side so far. To use
1030+
Only one tiny detail has been left aside so far. To use
10311031
\C{windrose} in conjunction with the \C{\\in} infix notation or with
10321032
the notation \C{#|...|} for cardinality, the type declaration has to
10331033
be tagged as an instance of the \C{predArgType} structure, for types
1034-
which model a predicate, as it is the one which supports the latter
1035-
notations. It can be done as follows. \index[coq]{\C{preArgType}}
1034+
which model a predicate, as it is the structure that supports the latter
1035+
notations. It can be done as follows. \index[coq]{\C{predArgType}}
10361036

10371037
\begin{coq}{}{}
10381038
Inductive windrose : predArgType := N | S | E | W.
@@ -1047,7 +1047,7 @@ \section{Linking a custom data type to the library}
10471047
A generic technique is available in order to equip a data type with structures of
10481048
\C{eqType}, \C{choiceType}, and \C{countType}. It consists in
10491049
providing a correspondence with the generic tree data type
1050-
\C{(GenTree.tree T)}: an n-ary tree with nodes labelled with
1050+
\C{(GenTree.tree T)}: an n-ary tree with nodes labeled with
10511051
natural numbers and leaves carrying a value in \C{T}.
10521052
\index[coq]{\C{GenTree.tree}}
10531053

0 commit comments

Comments
 (0)