Module IS_local
Require
Import
Setoid
List
.
Require
Import
Coqlib
Errors
Values
AST
Globalenvs
.
Require
Import
Memory
Footprint
InteractionSemantics
.
Record
sem_local
:=
{
F
:
Type
;
V
:
Type
;
G
:
Type
;
comp_unit
:
Type
;
core
:
Type
;
init_genv_local
:
comp_unit
->
Genv.t
F
V
->
G
->
Prop
;
TODO: is init_mem relative to languages, since we already have Genv.t definition
init_mem
:
Genv.t
F
V
->
mem
->
Prop
;
init_core_local
:
G
->
ident
->
list
val
->
option
core
;
Note: here we require halt returns a value with its type
EDIT: this is not viable. CompCert languages won't expose type information at callstate
halt_local
:
core
->
option
val
;
step_local
:
G
->
core
->
mem
->
FP.t
->
core
->
mem
->
Prop
;
EDIT: since external function is defined as a (name: string) with its signature, here we modify at_external interface to adapt string name, by providing global environment
at_external_local
:
G
->
core
->
option
(
ident
*
signature
*
list
val
);
after_external_local
:
core
->
option
val
->
option
core
;
}.