aboutsummaryrefslogtreecommitdiffstats
path: root/scheduling/BTL_Livecheck.v
diff options
context:
space:
mode:
authorLéo Gourdin <leo.gourdin@univ-grenoble-alpes.fr>2021-06-01 12:18:51 +0200
committerLéo Gourdin <leo.gourdin@univ-grenoble-alpes.fr>2021-06-01 12:18:51 +0200
commit9b74954477b9b1e5b75fbdd15215fc09941f72e4 (patch)
tree5b6a338a681452bf5746535bbab81ec6de83db2e /scheduling/BTL_Livecheck.v
parent84ddcd68504461bb2dee30ac38f0bb495b8aec38 (diff)
downloadcompcert-kvx-9b74954477b9b1e5b75fbdd15215fc09941f72e4.tar.gz
compcert-kvx-9b74954477b9b1e5b75fbdd15215fc09941f72e4.zip
Lemma liveness_checker_correct
Diffstat (limited to 'scheduling/BTL_Livecheck.v')
-rw-r--r--scheduling/BTL_Livecheck.v12
1 files changed, 12 insertions, 0 deletions
diff --git a/scheduling/BTL_Livecheck.v b/scheduling/BTL_Livecheck.v
index 62833dc3..6015d91f 100644
--- a/scheduling/BTL_Livecheck.v
+++ b/scheduling/BTL_Livecheck.v
@@ -126,6 +126,18 @@ Definition liveness_checker (f: BTL.function): res unit :=
| false => Error (msg "BTL_Livecheck: liveness_checker failed")
end.
+Lemma liveness_checker_correct f n ibf:
+ liveness_checker f = OK tt ->
+ f.(fn_code)!n = Some ibf ->
+ iblock_checker f.(fn_code) ibf.(entry) ibf.(input_regs) = Some tt.
+Proof.
+ unfold liveness_checker.
+ destruct list_iblock_checker eqn:EQL; try congruence.
+ intros _ P. exploit list_iblock_checker_correct; eauto.
+ - eapply PTree.elements_correct; eauto.
+ - simpl; auto.
+Qed.
+
Definition liveness_ok_function (f: BTL.function): Prop := liveness_checker f = OK tt.
(** TODO: adapt stuff RTLpathLivegenproof *)