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
bd87bdbc
Commit
bd87bdbc
authored
Oct 26, 2008
by
Adam Chlipala
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Free variables in unification variables issue
parent
e03d5e75
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
0 deletions
+28
-0
Match.v
src/Match.v
+28
-0
No files found.
src/Match.v
View file @
bd87bdbc
...
...
@@ -412,3 +412,31 @@ Section firstorder'.
Coq
loops
forever
at
this
point
.
What
went
wrong
?
*
)
Abort
.
End
firstorder
'
.
(
**
A
few
examples
should
illustrate
the
issue
.
Here
we
see
a
[
match
]
-
based
proof
that
works
fine
:
*
)
Theorem
t1
:
forall
x
:
nat
,
x
=
x
.
match
goal
with
|
[
|-
forall
x
,
_
]
=>
trivial
end
.
Qed
.
(
**
This
one
fails
.
*
)
Theorem
t1
'
:
forall
x
:
nat
,
x
=
x
.
(
**
[[
match
goal
with
|
[
|-
forall
x
,
?
P
]
=>
trivial
end
.
[[
User
error
:
No
matching
clauses
for
match
goal
]]
*
)
Abort
.
(
**
The
problem
is
that
unification
variables
may
not
contain
locally
-
bound
variables
.
In
this
case
,
[
?
P
]
would
need
to
be
bound
to
[
x
=
x
]
,
which
contains
the
local
quantified
variable
[
x
]
.
By
using
a
wildcard
in
the
earlier
version
,
we
avoided
this
restriction
.
The
Coq
8.2
release
includes
a
special
pattern
form
for
a
unification
variable
with
an
explicit
set
of
free
variables
.
That
unification
variable
is
then
bound
to
a
function
from
the
free
variables
to
the
"real"
value
.
In
Coq
8.1
and
earlier
,
there
is
no
such
workaround
.
No
matter
which
version
you
use
,
it
is
important
to
be
aware
of
this
restriction
.
As
we
have
alluded
to
,
the
restriction
is
the
culprit
behind
the
infinite
-
looping
behavior
of
[
completer
'
]
.
We
unintentionally
match
quantified
facts
with
the
modus
ponens
rule
,
circumventing
the
"already present"
check
and
leading
to
different
behavior
.
*
)
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