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
45b60e05
Commit
45b60e05
authored
Oct 29, 2008
by
Adam Chlipala
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Reflection exercise
parent
77393007
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 @
45b60e05
...
...
@@ -647,7 +647,7 @@ To work with rational numbers, import module [QArith] and use [Open Local Scope
%
\
item
%
#
<
li
>
#
Define
a
function
[
expDenote
]
that
translates
[
exp
]
s
,
along
with
lists
of
rationals
representing
variable
values
,
to
[
Q
]
.
#
</
li
>
#
%
\
item
%
#
<
li
>
#
Define
a
recursive
function
[
eqsDenote
]
over
[
list
(
exp
*
Q
)]
,
characterizing
when
all
of
the
equations
are
true
.
#
</
li
>
#
%
\
item
%
#
<
li
>
#
Fix
a
representation
[
lhs
]
of
flattened
expressions
.
Where
[
len
]
is
the
number
of
variables
,
represent
a
flattened
equation
as
[
ilist
Q
len
]
.
Each
position
of
the
list
gives
the
coefficient
of
the
corresponding
variable
.
#
</
li
>
#
%
\
item
%
#
<
li
>
#
Write
a
recursive
function
[
linearize
]
that
takes
a
constant
[
k
]
and
an
expression
[
e
]
and
optionally
returns
a
[
lhs
]
equivalent
to
[
k
*
e
]
.
This
function
returns
[
None
]
when
it
discovers
that
the
input
expression
is
not
linear
.
The
parameter
[
len
]
of
the
[
lhs
]
should
be
a
parameter
of
[
linearize
]
,
too
.
The
functions
[
singleton
]
,
[
everywhere
]
,
and
[
map2
]
from
[
DepList
]
will
probably
be
helpful
.
It
is
also
helpful
to
know
that
[
Qplus
]
is
the
identifier
for
rational
addition
.
#
</
li
>
#
%
\
item
%
#
<
li
>
#
Write
a
recursive
function
[
linearize
]
that
takes
a
constant
[
k
]
and
an
expression
[
e
]
and
optionally
returns
a
[
lhs
]
equivalent
to
[
k
*
e
]
.
This
function
returns
[
None
]
when
it
discovers
that
the
input
expression
is
not
linear
.
The
parameter
[
len
]
of
[
lhs
]
should
be
a
parameter
of
[
linearize
]
,
too
.
The
functions
[
singleton
]
,
[
everywhere
]
,
and
[
map2
]
from
[
DepList
]
will
probably
be
helpful
.
It
is
also
helpful
to
know
that
[
Qplus
]
is
the
identifier
for
rational
addition
.
#
</
li
>
#
%
\
item
%
#
<
li
>
#
Write
a
recursive
function
[
linearizeEqs
:
list
(
exp
*
Q
)
->
option
(
lhs
*
Q
)]
.
This
function
linearizes
all
of
the
equations
in
the
list
in
turn
,
building
up
the
sum
of
the
equations
.
It
returns
[
None
]
if
the
linearization
of
any
constituent
equation
fails
.
#
</
li
>
#
%
\
item
%
#
<
li
>
#
Define
a
denotation
function
for
[
lhs
]
.
#
</
li
>
#
%
\
item
%
#
<
li
>
#
Prove
that
,
when
[
exp
]
linearization
succeeds
on
constant
[
k
]
and
expression
[
e
]
,
the
linearized
version
has
the
same
meaning
as
[
k
*
e
]
.
#
</
li
>
#
...
...
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