aboutsummaryrefslogtreecommitdiffstats
path: root/src/hls/GiblePargenproofEquiv.v
diff options
context:
space:
mode:
authorYann Herklotz <git@yannherklotz.com>2023-05-30 16:16:24 +0100
committerYann Herklotz <git@yannherklotz.com>2023-05-30 16:16:24 +0100
commit4da92e9d5d9896645909656705f4ab78cdcb029d (patch)
treea81493e735d4e63b8c8e01a938ce15f25fcc2b70 /src/hls/GiblePargenproofEquiv.v
parentc10635f9e6890a6171c5c1cc8eb6e3298d2006b1 (diff)
downloadvericert-4da92e9d5d9896645909656705f4ab78cdcb029d.tar.gz
vericert-4da92e9d5d9896645909656705f4ab78cdcb029d.zip
Finished painful product proof
Diffstat (limited to 'src/hls/GiblePargenproofEquiv.v')
-rw-r--r--src/hls/GiblePargenproofEquiv.v7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/hls/GiblePargenproofEquiv.v b/src/hls/GiblePargenproofEquiv.v
index d3cc280..a1bfa0c 100644
--- a/src/hls/GiblePargenproofEquiv.v
+++ b/src/hls/GiblePargenproofEquiv.v
@@ -1433,12 +1433,15 @@ Module EHN := HashExprNorm(EHashExpr).
Definition check_mutexcl {A} (pe: predicated A) :=
let preds := map fst (NE.to_list pe) in
- let pairs := map (fun x => x → or_list (remove (Predicate.eq_dec peq) x preds)) preds in
+ let pairs := map (fun x => x → negate (or_list (remove (Predicate.eq_dec peq) x preds))) preds in
match sat_pred_simple (simplify (negate (and_list pairs))) with
| None => true
| _ => false
end.
+(* Import ListNotations. *)
+(* Compute deep_simplify peq (and_list (map (fun x => x → negate (or_list (remove (Predicate.eq_dec peq) x [Plit (true, 2)]))) [Plit (true, 2)])). *)
+
Lemma check_mutexcl_correct:
forall A (pe: predicated A),
check_mutexcl pe = true ->
@@ -1447,7 +1450,7 @@ Proof. Admitted.
Lemma check_mutexcl_singleton :
check_mutexcl (NE.singleton (T, EEbase)) = true.
-Proof. Admitted.
+Proof. crush. Qed.
Definition check_mutexcl_tree {A} (f: PTree.t (predicated A)) :=
forall_ptree (fun _ => check_mutexcl) f.