aboutsummaryrefslogtreecommitdiffstats
path: root/backend/CSE3analysisproof.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-03-09 19:08:49 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-03-09 19:08:49 +0100
commitab3f3a52c8737dbad6c599d7afc5720346e00abe (patch)
tree8dd6535da29ead6d8ab9c97357d35b82c01f6554 /backend/CSE3analysisproof.v
parent62d66f9447330ea4f3c31503465c5dee9ed6a0f5 (diff)
downloadcompcert-kvx-ab3f3a52c8737dbad6c599d7afc5720346e00abe.tar.gz
compcert-kvx-ab3f3a52c8737dbad6c599d7afc5720346e00abe.zip
CSE3
Diffstat (limited to 'backend/CSE3analysisproof.v')
-rw-r--r--backend/CSE3analysisproof.v21
1 files changed, 21 insertions, 0 deletions
diff --git a/backend/CSE3analysisproof.v b/backend/CSE3analysisproof.v
index d3681398..fde411cf 100644
--- a/backend/CSE3analysisproof.v
+++ b/backend/CSE3analysisproof.v
@@ -169,6 +169,25 @@ Proof.
- assumption.
Qed.
+Definition xlget_moves (eqs : list (eq_id * equation)) (m : Regmap.t PSet.t) :
+ Regmap.t PSet.t :=
+ List.fold_left(fun already eq_id_no =>
+ match get_move (snd eq_id_no) with
+ | Some rhs => add_i_j (eq_lhs (snd eq_id_no)) rhs already
+ | None => already
+ end) eqs m.
+
+Lemma xlget_moves_monotone:
+ forall eqs m i j,
+ PSet.contains (Regmap.get i m) j = true ->
+ PSet.contains (Regmap.get i (xlget_moves eqs m)) j = true.
+Proof.
+ induction eqs; intros; simpl; trivial.
+ destruct get_move; auto with cse3.
+Qed.
+
+Hint Resolve xlget_moves_monotone : cse3.
+
Definition eq_involves (eq : equation) (i : reg) :=
i = (eq_lhs eq) \/ In i (eq_args eq).
@@ -259,4 +278,6 @@ Section SOUNDNESS.
- rewrite Regmap.gso by congruence.
assumption.
Qed.
+
+
End SOUNDNESS.