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
5e9d9eee
Commit
5e9d9eee
authored
Jan 06, 2013
by
Adam Chlipala
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Small wording change suggested by a proofreader
parent
22363ec9
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
1 addition
and
1 deletion
+1
-1
Reflection.v
src/Reflection.v
+1
-1
No files found.
src/Reflection.v
View file @
5e9d9eee
...
@@ -659,7 +659,7 @@ The traditional [tauto] tactic introduces a quadratic blow-up in the size of the
...
@@ -659,7 +659,7 @@ The traditional [tauto] tactic introduces a quadratic blow-up in the size of the
(
*
begin
thide
*
)
(
*
begin
thide
*
)
(
**
The
action
of
the
[
quote
]
tactic
above
may
seem
like
magic
.
Somehow
it
performs
equality
comparison
between
subterms
of
arbitrary
types
,
so
that
these
subterms
may
be
represented
with
the
same
reified
variable
.
While
[
quote
]
is
implemented
in
OCaml
,
we
can
code
the
reification
process
completely
in
Ltac
,
as
well
.
To
make
our
job
simpler
,
we
will
represent
variables
as
[
nat
]
s
,
indexing
into
a
simple
list
of
variable
values
that
may
be
referenced
.
(
**
The
action
of
the
[
quote
]
tactic
above
may
seem
like
magic
.
Somehow
it
performs
equality
comparison
between
subterms
of
arbitrary
types
,
so
that
these
subterms
may
be
represented
with
the
same
reified
variable
.
While
[
quote
]
is
implemented
in
OCaml
,
we
can
code
the
reification
process
completely
in
Ltac
,
as
well
.
To
make
our
job
simpler
,
we
will
represent
variables
as
[
nat
]
s
,
indexing
into
a
simple
list
of
variable
values
that
may
be
referenced
.
Step
one
of
the
process
is
to
crawl
over
a
term
,
building
a
duplicate
-
free
list
of
all
values
that
appear
in
positions
we
will
encode
as
variables
.
A
useful
helper
function
adds
an
element
to
a
list
,
maintaining
lack
of
duplicates
.
Note
how
we
use
Ltac
pattern
matching
to
implement
an
equality
test
on
Gallina
terms
;
this
is
simple
syntactic
equality
,
not
even
the
richer
definitional
equality
.
We
also
represent
lists
as
nested
tuples
,
to
allow
different
list
elements
to
have
different
Gallina
types
.
*
)
Step
one
of
the
process
is
to
crawl
over
a
term
,
building
a
duplicate
-
free
list
of
all
values
that
appear
in
positions
we
will
encode
as
variables
.
A
useful
helper
function
adds
an
element
to
a
list
,
preventing
duplicates
.
Note
how
we
use
Ltac
pattern
matching
to
implement
an
equality
test
on
Gallina
terms
;
this
is
simple
syntactic
equality
,
not
even
the
richer
definitional
equality
.
We
also
represent
lists
as
nested
tuples
,
to
allow
different
list
elements
to
have
different
Gallina
types
.
*
)
Ltac
inList
x
xs
:=
Ltac
inList
x
xs
:=
match
xs
with
match
xs
with
...
...
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