diff options
author | Yann Herklotz <git@yannherklotz.com> | 2023-05-30 16:16:24 +0100 |
---|---|---|
committer | Yann Herklotz <git@yannherklotz.com> | 2023-05-30 16:16:24 +0100 |
commit | 4da92e9d5d9896645909656705f4ab78cdcb029d (patch) | |
tree | a81493e735d4e63b8c8e01a938ce15f25fcc2b70 /src/hls/GiblePargenproofEquiv.v | |
parent | c10635f9e6890a6171c5c1cc8eb6e3298d2006b1 (diff) | |
download | vericert-4da92e9d5d9896645909656705f4ab78cdcb029d.tar.gz vericert-4da92e9d5d9896645909656705f4ab78cdcb029d.zip |
Finished painful product proof
Diffstat (limited to 'src/hls/GiblePargenproofEquiv.v')
-rw-r--r-- | src/hls/GiblePargenproofEquiv.v | 7 |
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. |