Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
C
cpdt
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
research
cpdt
Commits
545d7fb8
Commit
545d7fb8
authored
Jan 18, 2013
by
Adam Chlipala
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix one reported grammatical error and make my own final pass over Chapter 1
parent
1363c8de
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
5 additions
and
5 deletions
+5
-5
cpdt.tex
latex/cpdt.tex
+1
-1
Intro.v
src/Intro.v
+3
-3
Large.v
src/Large.v
+1
-1
No files found.
latex/cpdt.tex
View file @
545d7fb8
...
...
@@ -23,7 +23,7 @@
\mbox
{}
\vfill
\begin{center}
Copyright Adam Chlipala 2008-201
2
.
Copyright Adam Chlipala 2008-201
3
.
This work is licensed under a
...
...
src/Intro.v
View file @
545d7fb8
...
...
@@ -75,7 +75,7 @@ This book is going to be about certified programming using Coq, and I am convinc
(
**
**
Dependent
Types
*
)
(
**
A
language
with
_
dependent
types_
may
include
references
to
programs
inside
of
types
.
For
instance
,
the
type
of
an
array
might
include
a
program
expression
giving
the
size
of
the
array
,
making
it
possible
to
verify
absence
of
out
-
of
-
bounds
accesses
statically
.
Dependent
types
can
go
even
further
than
this
,
effectively
capturing
any
correctness
property
in
a
type
.
For
instance
,
later
in
this
book
,
we
will
see
how
to
give
a
Mini
-
ML
compiler
a
type
that
guarantees
that
it
maps
well
-
typed
source
programs
to
well
-
typed
target
programs
.
A
language
with
_
dependent
types_
may
include
references
to
programs
inside
of
types
.
For
instance
,
the
type
of
an
array
might
include
a
program
expression
giving
the
size
of
the
array
,
making
it
possible
to
verify
absence
of
out
-
of
-
bounds
accesses
statically
.
Dependent
types
can
go
even
further
than
this
,
effectively
capturing
any
correctness
property
in
a
type
.
For
instance
,
later
in
this
book
,
we
will
see
how
to
give
a
compiler
a
type
that
guarantees
that
it
maps
well
-
typed
source
programs
to
well
-
typed
target
programs
.
%
\
index
{
ACL2
}%
ACL2
and
%
\
index
{
HOL
}%
HOL
lack
dependent
types
outright
.
Each
of
%
\
index
{
PVS
}%
PVS
and
%
\
index
{
Twelf
}%
Twelf
supports
a
different
strict
subset
of
Coq
'
s
dependent
type
language
.
Twelf
'
s
type
language
is
restricted
to
a
bare
-
bones
,
monomorphic
lambda
calculus
,
which
places
serious
restrictions
on
how
complicated
_
computations
inside
types_
can
be
.
This
restriction
is
important
for
the
soundness
argument
behind
Twelf
'
s
approach
to
representing
and
checking
proofs
.
...
...
@@ -188,7 +188,7 @@ Some readers have asked about the pragmatics of using this tactic library in the
(
**
At
the
start
of
the
next
chapter
,
I
assume
that
you
have
installed
Coq
and
Proof
General
.
The
code
in
this
book
is
tested
with
Coq
versions
8.4
and
8.4
pl1
.
Though
parts
may
work
with
other
versions
,
it
is
expected
that
the
book
source
will
fail
to
build
with
_
earlier_
versions
.
%
\
index
{
Proof
General
|
(
}%
To
set
up
your
Proof
General
environment
to
process
the
source
to
th
is
chapter
,
a
few
simple
steps
are
required
.
%
\
index
{
Proof
General
|
(
}%
To
set
up
your
Proof
General
environment
to
process
the
source
to
th
e
next
chapter
,
a
few
simple
steps
are
required
.
%
\
begin
{
enumerate
}%
#
<
ol
>
#
...
...
@@ -197,7 +197,7 @@ At the start of the next chapter, I assume that you have installed Coq and Proof
%
\
item
%
#
<
li
>
#
Unpack
the
tarball
to
some
directory
<<
DIR
>>.
#
</
li
>
#
%
\
item
%
#
<
li
>
#
Run
<<
make
>>
in
<<
DIR
>>.
#
</
li
>
#
%
\
item
%
#
<
li
>
#
Run
<<
make
>>
in
<<
DIR
>>
(
ideally
with
a
<<-
j
>>
flag
to
use
multiple
processor
cores
,
if
you
have
them
)
.
#
</
li
>
#
%
\
item
%
#
<
li
>
#
There
are
some
minor
headaches
associated
with
getting
Proof
General
to
pass
the
proper
command
line
arguments
to
the
<<
coqtop
>>
program
,
which
provides
the
interactive
Coq
toplevel
.
One
way
to
add
settings
that
will
be
shared
by
many
source
files
is
to
add
a
custom
variable
setting
to
your
%
\
index
{.
emacs
file
@
\
texttt
{.
emacs
}
file
}%<<.
emacs
>>
file
,
like
this
:
<<
...
...
src/Large.v
View file @
545d7fb8
...
...
@@ -217,7 +217,7 @@ Theorem eval_times : forall k e,
Qed
.
(
*
end
thide
*
)
(
**
This
style
is
motivated
by
a
hard
truth
:
one
person
'
s
manual
proof
script
is
almost
always
mostly
inscrutable
to
most
everyone
else
.
I
claim
that
step
-
by
-
step
formal
proofs
are
a
poor
way
of
conveying
information
.
Thus
,
we
had
might
as
well
cut
out
the
steps
and
automate
as
much
as
possible
.
(
**
This
style
is
motivated
by
a
hard
truth
:
one
person
'
s
manual
proof
script
is
almost
always
mostly
inscrutable
to
most
everyone
else
.
I
claim
that
step
-
by
-
step
formal
proofs
are
a
poor
way
of
conveying
information
.
Thus
,
we
might
as
well
cut
out
the
steps
and
automate
as
much
as
possible
.
What
about
the
illustrative
value
of
proofs
?
Most
informal
proofs
are
read
to
convey
the
big
ideas
of
proofs
.
How
can
reading
[
induction
e
;
crush
]
convey
any
big
ideas
?
My
position
is
that
any
ideas
that
standard
automation
can
find
are
not
very
big
after
all
,
and
the
_
real_
big
ideas
should
be
expressed
through
lemmas
that
are
added
as
hints
.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment