Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
F
FloVer
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
5
Issues
5
List
Boards
Labels
Service Desk
Milestones
Operations
Operations
Incidents
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
AVA
FloVer
Commits
6ef96566
Commit
6ef96566
authored
Sep 17, 2018
by
Nikita Zyuzin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Start changing expression semantics
parent
5e52c7b6
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
44 additions
and
26 deletions
+44
-26
coq/ExpressionSemantics.v
coq/ExpressionSemantics.v
+44
-26
No files found.
coq/ExpressionSemantics.v
View file @
6ef96566
...
...
@@ -32,50 +32,66 @@ using a perturbation of the real valued computation by (1 + delta), where
**
)
Open
Scope
R_scope
.
Definition
nonDestrUpd
(
T
:
Type
)
M
k
(
v
:
T
)
:=
match
(
M
k
)
with
|
Some
v1
=>
M
|
None
=>
(
fun
x
=>
if
R_orderedExps
.
eq_dec
x
k
then
Some
v
else
M
x
)
end
.
Inductive
eval_expr
(
E
:
env
)
(
Gamma
:
expr
R
->
option
mType
)
:
(
expr
R
)
->
R
->
mType
->
Prop
:=
|
Var_load
m
x
v
:
:
(
expr
R
->
option
R
)
->
(
expr
R
)
->
R
->
mType
->
Prop
:=
|
Var_load
DeltaMap
m
x
v
:
Gamma
(
Var
R
x
)
=
Some
m
->
E
x
=
Some
v
->
eval_expr
E
Gamma
(
Var
R
x
)
v
m
|
Const_dist
m
n
delta
:
eval_expr
E
Gamma
DeltaMap
(
Var
R
x
)
v
m
|
Const_dist
DeltaMap
m
n
delta
:
(
forall
delta
'
,
DeltaMap
(
Const
m
n
)
=
Some
delta
'
->
delta
=
delta
'
)
->
Rabs
delta
<=
mTypeToR
m
->
eval_expr
E
Gamma
(
Const
m
n
)
(
perturb
n
m
delta
)
m
|
Unop_neg
m
mN
f1
v1
:
eval_expr
E
Gamma
(
nonDestrUpd
DeltaMap
(
Const
m
n
)
delta
)
(
Const
m
n
)
(
perturb
n
m
delta
)
m
(
*
eval_expr
E
Gamma
DeltaMap
(
Const
m
n
)
(
perturb
n
m
delta
)
m
*
)
|
Unop_neg
DeltaMap
m
mN
f1
v1
:
Gamma
(
Unop
Neg
f1
)
=
Some
mN
->
isCompat
m
mN
=
true
->
eval_expr
E
Gamma
f1
v1
m
->
eval_expr
E
Gamma
(
Unop
Neg
f1
)
(
evalUnop
Neg
v1
)
mN
|
Unop_inv
m
mN
f1
v1
delta
:
eval_expr
E
Gamma
DeltaMap
f1
v1
m
->
eval_expr
E
Gamma
DeltaMap
(
Unop
Neg
f1
)
(
evalUnop
Neg
v1
)
mN
|
Unop_inv
DeltaMap
m
mN
f1
v1
delta
:
(
forall
delta
'
,
DeltaMap
(
Unop
Inv
f1
)
=
Some
delta
'
->
delta
=
delta
'
)
->
Gamma
(
Unop
Inv
f1
)
=
Some
mN
->
isCompat
m
mN
=
true
->
Rabs
delta
<=
mTypeToR
mN
->
eval_expr
E
Gamma
f1
v1
m
->
eval_expr
E
Gamma
DeltaMap
f1
v1
m
->
(
~
v1
=
0
)
%
R
->
eval_expr
E
Gamma
(
Unop
Inv
f1
)
(
perturb
(
evalUnop
Inv
v1
)
mN
delta
)
mN
|
Downcast_dist
m
m1
f1
v1
delta
:
eval_expr
E
Gamma
(
nonDestrUpd
DeltaMap
(
Unop
Inv
f1
)
delta
)
(
Unop
Inv
f1
)
(
perturb
(
evalUnop
Inv
v1
)
mN
delta
)
mN
|
Downcast_dist
DeltaMap
m
m1
f1
v1
delta
:
(
forall
delta
'
,
DeltaMap
(
Downcast
m
f1
)
=
Some
delta
'
->
delta
=
delta
'
)
->
Gamma
(
Downcast
m
f1
)
=
Some
m
->
isMorePrecise
m1
m
=
true
->
Rabs
delta
<=
mTypeToR
m
->
eval_expr
E
Gamma
f1
v1
m1
->
eval_expr
E
Gamma
(
Downcast
m
f1
)
(
perturb
v1
m
delta
)
m
|
Binop_dist
m1
m2
op
f1
f2
v1
v2
delta
m
:
eval_expr
E
Gamma
DeltaMap
f1
v1
m1
->
eval_expr
E
Gamma
(
nonDestrUpd
DeltaMap
(
Downcast
m
f1
)
delta
)
(
Downcast
m
f1
)
(
perturb
v1
m
delta
)
m
|
Binop_dist
DeltaMap
m1
m2
op
f1
f2
v1
v2
delta
m
:
(
forall
delta
'
,
DeltaMap
(
Binop
op
f1
f2
)
=
Some
delta
'
->
delta
=
delta
'
)
->
Gamma
(
Binop
op
f1
f2
)
=
Some
m
->
isJoin
m1
m2
m
=
true
->
Rabs
delta
<=
mTypeToR
m
->
eval_expr
E
Gamma
f1
v1
m1
->
eval_expr
E
Gamma
f2
v2
m2
->
eval_expr
E
Gamma
DeltaMap
f1
v1
m1
->
eval_expr
E
Gamma
DeltaMap
f2
v2
m2
->
((
op
=
Div
)
->
(
~
v2
=
0
)
%
R
)
->
eval_expr
E
Gamma
(
Binop
op
f1
f2
)
(
perturb
(
evalBinop
op
v1
v2
)
m
delta
)
m
|
Fma_dist
m1
m2
m3
m
f1
f2
f3
v1
v2
v3
delta
:
eval_expr
E
Gamma
(
nonDestrUpd
DeltaMap
(
Binop
op
f1
f2
)
delta
)
(
Binop
op
f1
f2
)
(
perturb
(
evalBinop
op
v1
v2
)
m
delta
)
m
|
Fma_dist
DeltaMap
m1
m2
m3
m
f1
f2
f3
v1
v2
v3
delta
:
(
forall
delta
'
,
DeltaMap
(
Fma
f1
f2
f3
)
=
Some
delta
'
->
delta
=
delta
'
)
->
Gamma
(
Fma
f1
f2
f3
)
=
Some
m
->
isJoin3
m1
m2
m3
m
=
true
->
Rabs
delta
<=
mTypeToR
m
->
eval_expr
E
Gamma
f1
v1
m1
->
eval_expr
E
Gamma
f2
v2
m2
->
eval_expr
E
Gamma
f3
v3
m3
->
eval_expr
E
Gamma
(
Fma
f1
f2
f3
)
(
perturb
(
evalFma
v1
v2
v3
)
m
delta
)
m
.
eval_expr
E
Gamma
DeltaMap
f1
v1
m1
->
eval_expr
E
Gamma
DeltaMap
f2
v2
m2
->
eval_expr
E
Gamma
DeltaMap
f3
v3
m3
->
eval_expr
E
Gamma
(
nonDestrUpd
DeltaMap
(
Fma
f1
f2
f3
)
delta
)
(
Fma
f1
f2
f3
)
(
perturb
(
evalFma
v1
v2
v3
)
m
delta
)
m
.
Close
Scope
R_scope
.
...
...
@@ -84,11 +100,13 @@ Hint Constructors eval_expr.
(
**
*
)
(
*
Show
some
simpler
(
more
general
)
rule
lemmata
*
)
(
*
**
)
Lemma
Const_dist
'
m
n
delta
v
m
'
E
Gamma
:
Lemma
Const_dist
'
DeltaMap
DeltaMap
'
m
n
delta
v
m
'
E
Gamma
:
(
forall
delta
'
,
DeltaMap
'
(
Const
m
n
)
=
Some
delta
'
->
delta
=
delta
'
)
->
Rle
(
Rabs
delta
)
(
mTypeToR
m
'
)
->
DeltaMap
=
nonDestrUpd
DeltaMap
'
(
Const
m
n
)
delta
->
v
=
perturb
n
m
delta
->
m
'
=
m
->
eval_expr
E
Gamma
(
Const
m
n
)
v
m
'
.
eval_expr
E
Gamma
DeltaMap
(
Const
m
n
)
v
m
'
.
Proof
.
intros
;
subst
;
auto
.
Qed
.
...
...
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