Module device_temp
Require
Import
List
.
Import
ListNotations
.
Require
Import
Relations
.
Require
Import
util
.
Require
Import
device
.
Require
Import
ctypes
.
Module
dev_temp
:
DEV_Sig
.
Device state, and initial state
Definition
t
:=
unit
.
Definition
init
:
t
:=
tt
.
Device operations interface
Inductive
ops_query_
:
Type
:=
temp_sample
:
unit
->
ops_query_
.
Definition
ops_query
:=
ops_query_
.
Definition
ops_response
(
q
:
ops_query
):
Type
:=
match
q
with
|
temp_sample
_
=>
int
end
.
Inductive
op_sem_
:
forall
q
:
ops_query
,
t
->
ops_response
q
->
t
->
Prop
:=
|
sample
:
forall
n
,
op_sem_
(
temp_sample
tt
)
tt
n
tt
.
Definition
op_sem
:=
op_sem_
.
Equivalence relation on device states. In the paper, we simplify the presentation, and we abstract from that equivalence relation, using bare equality.
Definition
equiv
:
relation
t
:=
fun
x
y
=>
x
=
y
.
Lemma
equiv_equiv
:
equivalence
t
equiv
.
Proof.
split
.
-
intros
x
;
eapply
eq_refl
.
-
intros
? ? ?;
eapply
eq_trans
.
-
intros
? ?;
eapply
eq_sym
.
Qed.
Lemma
op_sem_equiv
:
forall
op_query
op_resp
dev1
dev2
dev3
dev4
,
op_sem
op_query
dev1
op_resp
dev2
->
equiv
dev1
dev3
->
op_sem
op_query
dev3
op_resp
dev4
->
equiv
dev2
dev4
.
Proof.
intros
.
destruct
dev2
.
destruct
dev4
.
unfold
equiv
;
auto
.
Qed.
End
dev_temp
.