Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
V
VFPG
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
POLLIEN Baptiste
VFPG
Commits
1f8cd804
Commit
1f8cd804
authored
1 year ago
by
POLLIEN Baptiste
Browse files
Options
Downloads
Patches
Plain Diff
Update step for FPC
parent
cab24423
Branches
master
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
src/semantics/FPBigStepClight.v
+14
-13
14 additions, 13 deletions
src/semantics/FPBigStepClight.v
src/verification/VerifFPSToFPC.v
+8
-5
8 additions, 5 deletions
src/verification/VerifFPSToFPC.v
with
22 additions
and
18 deletions
src/semantics/FPBigStepClight.v
+
14
−
13
View file @
1f8cd804
...
...
@@ -31,16 +31,17 @@ Module C_BIGSTEP.
(
**
Statement
to
call
the
auto_nav
function
*
)
Definition
autoNav
:=
gen_call_void_fun
_
auto_nav
.
Variant
step
:
c_genv
->
fp_cenv
->
fp_cenv
->
Prop
:=
Variant
step
:
program
->
fp_cenv
->
fp_cenv
->
Prop
:=
|
FP_step
:
forall
cge
e
e
'
,
(
forall
f
(
env
:
auto_nav_env
)
le
,
forall
p
cge
e
e
'
,
cge
=
Clight
.
globalenv
p
->
(
forall
f
(
env
:
auto_nav_env
)
le
,
star
step2
cge
(
State
f
autoNav
Kstop
(
`
env
)
le
(
get_m_env
e
))
(
extract_trace
e
e
'
)
(
State
f
Sskip
Kstop
(
`
env
)
le
(
get_m_env
e
'
)))
->
trace_appended
e
e
'
->
step
cge
e
e
'
.
->
step
p
e
e
'
.
(
**
Definition
of
the
init
Clight
state
*
)
Record
initial_state
(
prog
:
program
)
(
e_init
:
fp_cenv
)
:=
...
...
@@ -51,8 +52,7 @@ Module C_BIGSTEP.
}
.
Definition
semantics_fpc
(
prog
:
program
)
:
fp_semantics
:=
let
ge
:
genv
:=
Clight
.
globalenv
prog
in
FP_Semantics_gen
(
step
ge
)
(
initial_state
prog
).
FP_Semantics_gen
(
step
prog
)
(
initial_state
prog
).
(
**
*
Proof
that
step
is
deterministic
*
)
...
...
@@ -944,19 +944,20 @@ Qed.
auto_nav
is
in
the
global_env
and
it
is
not
a
External
function
*
)
(
**
And
the
global_env
have
no
External
call
*
)
Lemma
step_deterministic_gen
:
forall
(
cge
:
c_genv
)
e
e1
e2
,
No_external_call_environement
cge
->
forall
p
cge
e
e1
e2
,
cge
=
Clight
.
globalenv
p
->
No_external_call_environement
cge
->
(
exists
b
f
,
Globalenvs
.
Genv
.
find_symbol
cge
_
auto_nav
=
Some
b
/
\
Globalenvs
.
Genv
.
find_def
cge
b
=
Some
(
Gfun
(
Internal
f
))
/
\
No_external_call_statement
(
fn_body
f
))
->
step
cge
e
e1
->
step
cge
e
e2
->
step
p
e
e1
->
step
p
e
e2
->
e1
=
e2
.
Proof
.
move
=>
cge
e
e1
e2
NECge
[
b
[
f
[
Hfs
[
Hfd
NECf
]]]]
H
H
'
.
inversion
H
as
[
cge0
e0
e
'
Hs
Ht
];
subst
cge0
e0
e
'
.
inversion
H
'
as
[
cge0
e0
e
'
Hs
'
Ht
'
];
subst
cge0
e0
e
'
.
move
=>
p
cge
e
e1
e2
Hcge
NECge
[
b
[
f
[
Hfs
[
Hfd
NECf
]]]]
H
H
'
.
inversion
H
as
[
p
'
cge0
e0
e
'
Hp
Hs
Ht
];
subst
p
'
cge0
e0
e
'
.
inversion
H
'
as
[
p
'
cge0
e0
e
'
Hp
Hs
'
Ht
'
];
subst
p
'
cge0
e0
e
'
cge
.
set
env
:=
empty_auto_nav
.
set
le
:=
create_undef_temps
[
::
].
have
Hstep
:=
Hs
f
env
le
;
clear
Hs
.
...
...
This diff is collapsed.
Click to expand it.
src/verification/VerifFPSToFPC.v
+
8
−
5
View file @
1f8cd804
...
...
@@ -2455,7 +2455,7 @@ Section FLIGHT_PLAN.
forall
e1
e1
'
,
FPS_BS
.
step
fps
e1
=
e1
'
->
forall
e2
,
e1
~
cenv
~
(
ge
,
e2
)
->
exists
e2
'
,
C_BS
.
step
g
e
e2
e2
'
->
exists
e2
'
,
C_BS
.
step
pro
g
e2
e2
'
/
\
e1
'
~
cenv
~
(
ge
,
e2
'
).
Proof
.
move
=>
e1
e1
'
Hs
e2
He
.
...
...
@@ -2478,7 +2478,7 @@ Section FLIGHT_PLAN.
exists
ce2
'
;
split
=>
//.
(
*
Enter
in
the
step
*
)
apply
FP_step
=>
//.
apply
FP_step
with
(
cge
:=
ge
)
=>
//.
move
=>
f_call
[
env
Henv
]
le
.
econstructor
.
(
*
Execute
the
function
auto_nav
*
)
...
...
@@ -2627,7 +2627,7 @@ Section FLIGHT_PLAN.
Theorem
semantics_preservation_inv
:
forall
e2
e2
'
,
C_BS
.
step
g
e
e2
e2
'
C_BS
.
step
pro
g
e2
e2
'
->
forall
e1
,
e1
~
cenv
~
(
ge
,
e2
)
->
exists
e1
'
,
FPS_BS
.
step
fps
e1
=
e1
'
/
\
e1
'
~
cenv
~
(
ge
,
e2
'
).
...
...
@@ -2636,8 +2636,11 @@ Section FLIGHT_PLAN.
remember
(
FPS_BS
.
step
fps
e1
)
as
e1
'
eqn
:
Hstep
'
.
symmetry
in
Hstep
'
.
destruct
(
semantics_preservation
Hstep
'
Heq
)
as
[
e2
''
[
Hstep2
Heq2
]].
have
H
:=
step_deterministic_gen
_
_
Hstep
Hstep2
.
rewrite
H
.
have
Hp
:
ge
=
globalenv
prog
by
rewrite
/
ge
.
have
H
:=
step_deterministic_gen
_
_
_
Hstep
Hstep2
.
rewrite
(
H
_
Hp
).
-
by
exists
e1
'
.
-
apply
NECge
.
-
destruct
(
get_symb_auto_nav
fpe
gvars
)
as
[
b
[
Hfs
Hfd
]].
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment