Notation W2 := (inj_ext w).Notation l := (plab pr).Notation V := (mkWorld pr).Notation W := (mkWorld (ProtocolWithIndInv ii)).(*

[Inferences rule for invariant strengthening]

This rule essentially means that we can always verify the program in
stronger assumptions (i.e., in a protocol, enriched with the inductive
invariant), if we can provide this protocol in the first place. We can
then also make use of the invariant.

 *)

Notation getS i := (getStatelet i l).

(* Specifications: *)
Lemma with_inv_rule' i (r : cont A) : verify i e (fun x m => I (getS m) (nodes pr (getS m)) -> r x m) -> verify i (with_inv ii e) r.
Lemma with_inv_rule i (r : cont A) : verify i e (fun x m => r x m) -> verify i (with_inv ii e) r.