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
36799da7
Commit
36799da7
authored
May 12, 2013
by
Adam Chlipala
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Addressing some inaccuracies of comparison with PVS
parent
6548e7da
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
3 additions
and
3 deletions
+3
-3
Intro.v
src/Intro.v
+3
-3
No files found.
src/Intro.v
View file @
36799da7
(
*
Copyright
(
c
)
2008
-
201
2
,
Adam
Chlipala
(
*
Copyright
(
c
)
2008
-
201
3
,
Adam
Chlipala
*
*
This
work
is
licensed
under
a
*
Creative
Commons
Attribution
-
Noncommercial
-
No
Derivative
Works
3.0
...
...
@@ -90,7 +90,7 @@ Dependent types are useful not only because they help you express correctness pr
(
**
%
\
index
{
de
Bruijn
criterion
}%
Scores
of
automated
decision
procedures
are
useful
in
practical
theorem
proving
,
but
it
is
unfortunate
to
have
to
trust
in
the
correct
implementation
of
each
procedure
.
Proof
assistants
satisfy
the
"de Bruijn criterion"
when
they
produce
_
proof
terms_
in
small
kernel
languages
,
even
when
they
use
complicated
and
extensible
procedures
to
seek
out
proofs
in
the
first
place
.
These
core
languages
have
feature
complexity
on
par
with
what
you
find
in
proposals
for
formal
foundations
for
mathematics
(
e
.
g
.,
ZF
set
theory
)
.
To
believe
a
proof
,
we
can
ignore
the
possibility
of
bugs
during
_
search_
and
just
rely
on
a
(
relatively
small
)
proof
-
checking
kernel
that
we
apply
to
the
_
result_
of
the
search
.
Coq
meets
the
de
Bruijn
criterion
,
while
%
\
index
{
ACL2
}%
ACL2
and
%
\
index
{
PVS
}%
PVS
do
not
,
as
they
employ
fancy
decision
procedures
that
produce
no
"evidence trails"
justifying
their
results
.
The
HOL
implementations
also
meet
the
de
Bruijn
criterion
;
for
Twelf
,
the
situation
is
murkier
.
Coq
meets
the
de
Bruijn
criterion
,
while
%
\
index
{
ACL2
}%
ACL2
does
not
,
as
it
employs
fancy
decision
procedures
that
produce
no
"evidence trails"
justifying
their
results
.
%
\
index
{
PVS
}%
PVS
supports
_
strategies_
that
implement
fancier
proof
procedures
in
terms
of
a
set
of
primitive
proof
steps
,
where
the
primitive
steps
are
less
primitive
than
in
Coq
.
For
instance
,
a
propositional
tautology
solver
is
included
as
a
primitive
,
so
it
is
a
question
of
taste
whether
such
a
system
meets
the
de
Bruijn
criterion
.
The
HOL
implementations
meet
the
de
Bruijn
criterion
more
manifestly
;
for
Twelf
,
the
situation
is
murkier
.
*
)
(
**
**
Convenient
Programmable
Proof
Automation
*
)
...
...
@@ -110,7 +110,7 @@ Of the remaining tools, all can support user extension with new decision procedu
(
**
%
\
index
{
reflection
}
\
index
{
proof
by
reflection
}%
A
surprising
wealth
of
benefits
follows
from
choosing
a
proof
language
that
integrates
a
rich
notion
of
computation
.
Coq
includes
programs
and
proof
terms
in
the
same
syntactic
class
.
This
makes
it
easy
to
write
programs
that
compute
proofs
.
With
rich
enough
dependent
types
,
such
programs
are
_
certified
decision
procedures_
.
In
such
cases
,
these
certified
procedures
can
be
put
to
good
use
_
without
ever
running
them_
!
Their
types
guarantee
that
,
if
we
did
bother
to
run
them
,
we
would
receive
proper
"ground"
proofs
.
The
critical
ingredient
for
this
technique
,
many
of
whose
instances
are
referred
to
as
_
proof
by
reflection_
,
is
a
way
of
inducing
non
-
trivial
computation
inside
of
logical
propositions
during
proof
checking
.
Further
,
most
of
these
instances
require
dependent
types
to
make
it
possible
to
state
the
appropriate
theorems
.
Of
the
proof
assistants
I
listed
,
only
Coq
really
provides
this
support
.
The
critical
ingredient
for
this
technique
,
many
of
whose
instances
are
referred
to
as
_
proof
by
reflection_
,
is
a
way
of
inducing
non
-
trivial
computation
inside
of
logical
propositions
during
proof
checking
.
Further
,
most
of
these
instances
require
dependent
types
to
make
it
possible
to
state
the
appropriate
theorems
.
Of
the
proof
assistants
I
listed
,
only
Coq
really
provides
support
for
the
type
-
level
computation
style
of
reflection
,
though
PVS
supports
very
similar
functionality
via
refinement
types
.
*
)
...
...
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