mirror of
https://github.com/achlipala/frap.git
synced 2024-11-12 17:17:50 +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);
|
||||
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