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
f1b31c1e
Commit
f1b31c1e
authored
Aug 18, 2017
by
Heiko Becker
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix final soundness proofs to also have correct conclusion
parent
46952ce5
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
8 deletions
+16
-8
coq/CertificateChecker.v
coq/CertificateChecker.v
+16
-8
No files found.
coq/CertificateChecker.v
View file @
f1b31c1e
...
...
@@ -37,7 +37,9 @@ Theorem Certificate_checking_is_sound (e:exp Q) (absenv:analysisResult) P defVar
exists
vR
vF
m
,
eval_exp
E1
(
toRMap
defVars
)
(
toREval
(
toRExp
e
))
vR
M0
/
\
eval_exp
E2
defVars
(
toRExp
e
)
vF
m
/
\
(
Rabs
(
vR
-
vF
)
<=
Q2R
(
snd
(
absenv
e
)))
%
R
.
(
forall
vF
m
,
eval_exp
E2
defVars
(
toRExp
e
)
vF
m
->
(
Rabs
(
vR
-
vF
)
<=
Q2R
(
snd
(
absenv
e
))))
%
R
.
(
**
The
proofs
is
a
simple
composition
of
the
soundness
proofs
for
the
range
validator
and
the
error
bound
validator
.
...
...
@@ -66,15 +68,16 @@ Proof.
rewrite
NatSet
.
mem_spec
in
v_in_empty
.
inversion
v_in_empty
.
}
edestruct
validIntervalbounds_sound
as
[
vR
[
eval_real
real_bounds_e
]];
eauto
.
destruct
(
validErrorbound_sound
e
P
(
typeMap
defVars
e
)
L
approxE1E2
H0
eval_real
R0
L0
H1
P_valid
H
absenv_eq
)
as
[
vF
[
mF
[
eval_float
err_bounded
]]
];
auto
.
destruct
(
validErrorbound_sound
e
P
(
typeMap
defVars
e
)
L
approxE1E2
H0
eval_real
R0
L0
H1
P_valid
H
absenv_eq
)
as
[
[
vF
[
mF
eval_float
]]
err_bounded
];
auto
.
exists
vR
;
exists
vF
;
exists
mF
;
split
;
auto
.
Qed
.
Definition
CertificateCheckerCmd
(
f
:
cmd
Q
)
(
absenv
:
analysisResult
)
(
P
:
precond
)
defVars
:=
if
(
typeCheckCmd
f
defVars
(
typeMapCmd
defVars
f
)
&&
validSSA
f
(
freeVars
f
))
then
if
(
validIntervalboundsCmd
f
absenv
P
NatSet
.
empty
)
then
(
validErrorboundCmd
f
(
typeMapCmd
defVars
f
)
absenv
NatSet
.
empty
)
else
false
then
if
(
validIntervalboundsCmd
f
absenv
P
NatSet
.
empty
)
then
(
validErrorboundCmd
f
(
typeMapCmd
defVars
f
)
absenv
NatSet
.
empty
)
else
false
else
false
.
Theorem
Certificate_checking_cmds_is_sound
(
f
:
cmd
Q
)
(
absenv
:
analysisResult
)
P
defVars
:
...
...
@@ -90,7 +93,9 @@ Theorem Certificate_checking_cmds_is_sound (f:cmd Q) (absenv:analysisResult) P d
exists
vR
vF
m
,
bstep
(
toREvalCmd
(
toRCmd
f
))
E1
(
toRMap
defVars
)
vR
M0
/
\
bstep
(
toRCmd
f
)
E2
defVars
vF
m
/
\
(
Rabs
(
vR
-
vF
)
<=
Q2R
(
snd
(
absenv
(
getRetExp
f
))))
%
R
.
(
forall
vF
m
,
bstep
(
toRCmd
f
)
E2
defVars
vF
m
->
(
Rabs
(
vR
-
vF
)
<=
Q2R
(
snd
(
absenv
(
getRetExp
f
))))
%
R
).
(
**
The
proofs
is
a
simple
composition
of
the
soundness
proofs
for
the
range
validator
and
the
error
bound
validator
.
...
...
@@ -124,6 +129,9 @@ Proof.
as
freeVars_contained
by
set_tac
.
edestruct
(
validIntervalboundsCmd_sound
)
as
[
vR
[
eval_real
bounded_real_f
]]
;
eauto
.
rewrite
absenv_eq
;
simpl
.
edestruct
(
validErrorboundCmd_sound
)
as
[
vF
[
mF
[
eval_float
bounded_float
]]];
eauto
.
exists
vR
;
exists
vF
;
exists
mF
;
split
;
auto
.
edestruct
validErrorboundCmd_gives_eval
as
[
vF
[
mF
eval_float
]];
eauto
.
exists
vR
;
exists
vF
;
exists
mF
;
split
;
try
auto
.
split
;
try
auto
.
intros
.
eapply
validErrorboundCmd_sound
;
eauto
.
Qed
.
\ No newline at end of file
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