diff options
author | Yann Herklotz <git@yannherklotz.com> | 2023-06-25 17:53:22 +0100 |
---|---|---|
committer | Yann Herklotz <git@yannherklotz.com> | 2023-06-25 17:53:22 +0100 |
commit | e9f748f8e302f4d9977661e9c51ddaf5410bdec6 (patch) | |
tree | 01c04d7e5770d4e927da40052f17eff48e7d8079 /src/hls/GiblePargen.v | |
parent | 9134c30e5c9a46299aacc94dd5664308bd554303 (diff) | |
download | vericert-e9f748f8e302f4d9977661e9c51ddaf5410bdec6.tar.gz vericert-e9f748f8e302f4d9977661e9c51ddaf5410bdec6.zip |
Finish mutual exclusivity check
Diffstat (limited to 'src/hls/GiblePargen.v')
-rw-r--r-- | src/hls/GiblePargen.v | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/hls/GiblePargen.v b/src/hls/GiblePargen.v index 25531a8..3cf2401 100644 --- a/src/hls/GiblePargen.v +++ b/src/hls/GiblePargen.v @@ -238,6 +238,12 @@ Definition predicated_not_in_forest (p: Gible.predicate) (f: forest) := predicated_not_in_pred_expr p f.(forest_regs) && predicated_not_in p f.(forest_exit). +Definition pred_expr_dec: forall a b: pred_op * pred_expression, {a = b} + {a <> b}. +Proof. + intros. destruct a, b. + apply pred_pexpression_dec. +Defined. + Definition update (fop : pred_op * forest) (i : instr): option (pred_op * forest) := let (pred, f) := fop in match i with @@ -279,7 +285,7 @@ Definition update (fop : pred_op * forest) (i : instr): option (pred_op * forest → from_predicated true f.(forest_preds) predicated) ∧ (from_pred_op f.(forest_preds) (¬ (dfltp p') ∨ ¬ pred) → (f #p p)) in - do _ <- assert_ (check_mutexcl predicated); + do _ <- assert_ (check_mutexcl pred_expr_dec predicated); do _ <- assert_ (predicated_not_in_forest p f); do _ <- assert_ (is_initial_pred_and_notin f p pred); do _ <- assert_ (match sat_pred_simple (¬ from_predicated_inv predicated) with None => true | Some _ => false end); @@ -417,15 +423,15 @@ Definition check_evaluability1 a b := existsb (fun ae => resource_eq (fst ae) (fst be) && HN.beq_pred_expr (snd ae) (snd be) - && check_mutexcl (snd ae) - && check_mutexcl (snd be) + && check_mutexcl HN.pred_Ht_dec (snd ae) + && check_mutexcl HN.pred_Ht_dec (snd be) ) a ) b. Definition check_evaluability2 a b := forallb (fun be => existsb (fun ae => HN.beq_pred_expr ae be - && check_mutexcl ae - && check_mutexcl be) a) b. + && check_mutexcl HN.pred_Ht_dec ae + && check_mutexcl HN.pred_Ht_dec be) a) b. Definition schedule_oracle (bb: SeqBB.t) (bbt: ParBB.t) : bool := match abstract_sequence_top bb, abstract_sequence_top (concat (concat bbt)) with |