mirror of
https://github.com/achlipala/frap.git
synced 2024-11-10 00:07:51 +00:00
Connecting: proved an invariant for a compilation result
This commit is contained in:
parent
26abb7b8a0
commit
6b3a93a8b2
2 changed files with 1116 additions and 1056 deletions
2154
Connecting.v
2154
Connecting.v
File diff suppressed because it is too large
Load diff
18
Invariant.v
18
Invariant.v
|
@ -80,3 +80,21 @@ Definition parallel shared private1 private2
|
||||||
Initial := parallel1 sys1.(Initial) sys2.(Initial);
|
Initial := parallel1 sys1.(Initial) sys2.(Initial);
|
||||||
Step := parallel2 sys1.(Step) sys2.(Step)
|
Step := parallel2 sys1.(Step) sys2.(Step)
|
||||||
|}.
|
|}.
|
||||||
|
|
||||||
|
|
||||||
|
(** * Switching to multistep versions of systems *)
|
||||||
|
|
||||||
|
Lemma trc_idem : forall A (R : A -> A -> Prop) x1 x2,
|
||||||
|
R^*^* x1 x2
|
||||||
|
-> R^* x1 x2.
|
||||||
|
Proof.
|
||||||
|
induction 1; eauto using trc_trans.
|
||||||
|
Qed.
|
||||||
|
|
||||||
|
Theorem invariant_multistepify : forall {state} (sys : trsys state)
|
||||||
|
(invariant : state -> Prop),
|
||||||
|
invariantFor sys invariant
|
||||||
|
-> invariantFor {| Initial := Initial sys; Step := (Step sys)^* |} invariant.
|
||||||
|
Proof.
|
||||||
|
unfold invariantFor; simpl; intuition eauto using trc_idem.
|
||||||
|
Qed.
|
||||||
|
|
Loading…
Reference in a new issue