From mathcomp.ssreflect
From mathcomp
From fcsl
From DiSeL
From DiSeL
From DiSeL
From DiSeL
Section CalculatorInductiveInv.
Variable l : Label.
Variable f : input -> option nat.
Variable prec : input -> bool.
Hypothesis prec_valid :
forall i, prec i -> exists v, f i = Some v.
Variable cs: seq nid.
Variable cls : seq nid.
(* All nodes *)
Notation nodes := (cs ++ cls).
(* All nodes are unique *)
Hypothesis Huniq : uniq nodes.
(* Protocol and its transitions *)
Notation cal := (CalculatorProtocol f prec cs cls l).
Notation sts := (snd_trans cal).
Notation rts := (rcv_trans cal).
Definition reqs := cstate.
Notation coh := (coh cal).
Notation loc n d := (getLocal n d).

(* Specifications: *)
Lemma nodes_falso z : z \in cs -> z \in cls -> False.
Definition CalcInv d :=
forall (C: coh d) n to v args i s',
n \in cls -> to \in cs ->
dsoup d = i \\-> (Msg (TMsg resp (v::args)) to n true) \+ s' ->
f args = Some v.