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
c9ac2de3
Commit
c9ac2de3
authored
Jan 19, 2013
by
Adam Chlipala
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Pass through Chapter 4
parent
529da1b1
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
1 addition
and
1 deletion
+1
-1
Predicates.v
src/Predicates.v
+1
-1
No files found.
src/Predicates.v
View file @
c9ac2de3
...
@@ -460,7 +460,7 @@ Qed.
...
@@ -460,7 +460,7 @@ Qed.
(
**
We
can
call
[
isZero
]
a
%
\
index
{
judgment
}%
_
judgment_
,
in
the
sense
often
used
in
the
semantics
of
programming
languages
.
Judgments
are
typically
defined
in
the
style
of
%
\
index
{
natural
deduction
}%
_
natural
deduction_
,
where
we
write
a
number
of
%
\
index
{
inference
rules
}%
_
inference
rules_
with
premises
appearing
above
a
solid
line
and
a
conclusion
appearing
below
the
line
.
In
this
example
,
the
sole
constructor
[
IsZero
]
of
[
isZero
]
can
be
thought
of
as
the
single
inference
rule
for
deducing
[
isZero
]
,
with
nothing
above
the
line
and
[
isZero
0
]
below
it
.
The
proof
of
[
isZero_zero
]
demonstrates
how
we
can
apply
an
inference
rule
.
(
Readers
not
familiar
with
formal
semantics
should
not
worry
about
not
following
this
paragraph
!
)
(
**
We
can
call
[
isZero
]
a
%
\
index
{
judgment
}%
_
judgment_
,
in
the
sense
often
used
in
the
semantics
of
programming
languages
.
Judgments
are
typically
defined
in
the
style
of
%
\
index
{
natural
deduction
}%
_
natural
deduction_
,
where
we
write
a
number
of
%
\
index
{
inference
rules
}%
_
inference
rules_
with
premises
appearing
above
a
solid
line
and
a
conclusion
appearing
below
the
line
.
In
this
example
,
the
sole
constructor
[
IsZero
]
of
[
isZero
]
can
be
thought
of
as
the
single
inference
rule
for
deducing
[
isZero
]
,
with
nothing
above
the
line
and
[
isZero
0
]
below
it
.
The
proof
of
[
isZero_zero
]
demonstrates
how
we
can
apply
an
inference
rule
.
(
Readers
not
familiar
with
formal
semantics
should
not
worry
about
not
following
this
paragraph
!
)
The
definition
of
[
isZero
]
differs
in
an
important
way
from
all
of
the
other
inductive
definitions
that
we
have
seen
in
this
and
the
previous
chapter
.
Instead
of
writing
just
[
Set
]
or
[
Prop
]
after
the
colon
,
here
we
write
[
nat
->
Prop
]
.
We
saw
examples
of
parameterized
types
like
[
list
]
,
but
there
the
parameters
appeared
with
names
_
before_
the
colon
.
Every
constructor
of
a
parameterized
inductive
type
must
have
a
range
type
that
uses
the
same
parameter
,
whereas
the
form
we
use
here
enables
us
to
u
se
different
arguments
to
the
type
for
different
constructors
.
The
definition
of
[
isZero
]
differs
in
an
important
way
from
all
of
the
other
inductive
definitions
that
we
have
seen
in
this
and
the
previous
chapter
.
Instead
of
writing
just
[
Set
]
or
[
Prop
]
after
the
colon
,
here
we
write
[
nat
->
Prop
]
.
We
saw
examples
of
parameterized
types
like
[
list
]
,
but
there
the
parameters
appeared
with
names
_
before_
the
colon
.
Every
constructor
of
a
parameterized
inductive
type
must
have
a
range
type
that
uses
the
same
parameter
,
whereas
the
form
we
use
here
enables
us
to
choo
se
different
arguments
to
the
type
for
different
constructors
.
For
instance
,
our
definition
[
isZero
]
makes
the
predicate
provable
only
when
the
argument
is
[
0
]
.
We
can
see
that
the
concept
of
equality
is
somehow
implicit
in
the
inductive
definition
mechanism
.
The
way
this
is
accomplished
is
similar
to
the
way
that
logic
variables
are
used
in
%
\
index
{
Prolog
}%
Prolog
(
but
worry
not
if
not
familiar
with
Prolog
)
,
and
it
is
a
very
powerful
mechanism
that
forms
a
foundation
for
formalizing
all
of
mathematics
.
In
fact
,
though
it
is
natural
to
think
of
inductive
types
as
folding
in
the
functionality
of
equality
,
in
Coq
,
the
true
situation
is
reversed
,
with
equality
defined
as
just
another
inductive
type
!%
\
index
{
Gallina
terms
!
eq
}
\
index
{
Gallina
terms
!
refl
\
_
equal
}%
*
)
For
instance
,
our
definition
[
isZero
]
makes
the
predicate
provable
only
when
the
argument
is
[
0
]
.
We
can
see
that
the
concept
of
equality
is
somehow
implicit
in
the
inductive
definition
mechanism
.
The
way
this
is
accomplished
is
similar
to
the
way
that
logic
variables
are
used
in
%
\
index
{
Prolog
}%
Prolog
(
but
worry
not
if
not
familiar
with
Prolog
)
,
and
it
is
a
very
powerful
mechanism
that
forms
a
foundation
for
formalizing
all
of
mathematics
.
In
fact
,
though
it
is
natural
to
think
of
inductive
types
as
folding
in
the
functionality
of
equality
,
in
Coq
,
the
true
situation
is
reversed
,
with
equality
defined
as
just
another
inductive
type
!%
\
index
{
Gallina
terms
!
eq
}
\
index
{
Gallina
terms
!
refl
\
_
equal
}%
*
)
...
...
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