From e5db7d1259c32a886182c21201e6db3d567e7f96 Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Sat, 11 Feb 2023 20:43:58 +0000 Subject: Change evaluation of predicates and remove forest_evaluable --- src/hls/GiblePargen.v | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'src/hls/GiblePargen.v') diff --git a/src/hls/GiblePargen.v b/src/hls/GiblePargen.v index 8a2c629..4d36180 100644 --- a/src/hls/GiblePargen.v +++ b/src/hls/GiblePargen.v @@ -174,10 +174,13 @@ Definition dfltp {A} (p: option (@Predicate.pred_op A)) := Option.default T p. Definition assert_ (b: bool): option unit := if b then Some tt else None. -Definition is_initial_pred (f: forest) (p: positive) := +Definition is_initial_pred_and_notin (f: forest) (p: positive) (p_next: pred_op): bool := match f #p p with - | Plit (true, PEbase p') => if peq p p' then Some tt else None - | _ => None + | Plit (true, PEbase p') => + if peq p p' + then negb (predin peq p p_next) + else false + | _ => false end. Definition update (fop : pred_op * forest) (i : instr): option (pred_op * forest) := @@ -218,7 +221,7 @@ Definition update (fop : pred_op * forest) (i : instr): option (pred_op * forest → from_predicated true f.(forest_preds) (seq_app (pred_ret (PEsetpred c)) (merge (list_translation args f)))) in - do _ <- is_initial_pred f p; + do _ <- assert_ (is_initial_pred_and_notin f p pred); Some (pred, f #p p <- new_pred) | RBexit p c => let new_p := simplify (negate (dfltp p) ∧ pred) in -- cgit