-
Notifications
You must be signed in to change notification settings - Fork 631
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
error at qed: no such assumption #9936
Comments
You're not using Or perhaps it is #9937? (I found that when trying to figure out ways you could get this error message just now.) You can also get this via Goal True -> True /\ True.
intro x; split; let x' := constr:(x) in clear x; exact_no_check x'. |
I am not using |
The same also happens if I remove all uses of |
It looks like the definition of |
So it looks like I was using |
Looking more and more similar to #9937... https://github.com/mit-plv/bedrock2/blob/dcd21693397064996d69ff9fb44bbe995812b2a4/bedrock2/src/Examples/bsearch.v |
Goal exists (x4 : list word) (x5 : mem -> Prop), forall M : mem,
sep (array scalar (word.of_Z 0) (word.of_Z 0) x4) x5 M ->
sep (array scalar (word.of_Z 0) (word.of_Z 0) nil) (fun _ => False) M
.
Proof.
pose proof I as X.
unshelve (refine (ex_intro _ ?[e1] _); refine (ex_intro _ ?[e2] _); intros M H); cycle -1.
1: unshelve epose proof ((admit : forall n, n = n -> Lift1Prop.iff1
(sep (array scalar (word.of_Z 0) (word.of_Z 0) ?[Goal]) (sep ?[P] ?[Q]))
(array ?[element] ?[a] ?[aa] ?[xs]))_) as Hrw; cycle -1.
1: unshelve (let Hrw := open_constr:((Hrw _)) in clear H;
epose proof (proj1 (SeparationLogic.Proper_sep_iff1 _ _ Hrw _ _ (RelationClasses.reflexivity _) _) admit) as _).
1: destruct X.
all: apply admit.
Show Proof.
(* (let X : True := I in *)
(* ex_intro *)
(* (fun x4 : list word => *)
(* exists x5 : mem -> Prop, *)
(* forall M : mem, *)
(* sep (array scalar (word.of_Z 0) (word.of_Z 0) x4) x5 M -> *)
(* sep (array scalar (word.of_Z 0) (word.of_Z 0) nil) *)
(* (fun _ : mem => False) M) admit *)
(* (ex_intro *)
(* (fun x5 : mem -> Prop => *)
(* forall M : mem, *)
(* sep (array scalar (word.of_Z 0) (word.of_Z 0) admit) x5 M -> *)
(* sep (array scalar (word.of_Z 0) (word.of_Z 0) nil) *)
(* (fun _ : mem => False) M) admit *)
(* (fun (M : mem) *)
(* (_ : sep (array scalar (word.of_Z 0) (word.of_Z 0) admit) admit M) *)
(* => *)
(* let Hrw : *)
(* admit = admit -> *)
(* Lift1Prop.iff1 *)
(* (sep (array scalar (word.of_Z 0) (word.of_Z 0) admit) *)
(* (sep admit admit)) (array admit admit admit admit) := *)
(* admit admit in *)
(* let H : sep (array admit admit admit admit) admit admit := *)
(* proj1 *)
(* (SeparationLogic.Proper_sep_iff1 *)
(* (sep (array scalar (word.of_Z 0) (word.of_Z 0) admit) *)
(* (sep admit admit)) (array admit admit admit admit) *)
(* (Hrw *)
(* (match X with *)
(* | I => *)
(* fun *)
(* (_ : sep *)
(* (array scalar (word.of_Z 0) *)
(* (word.of_Z 0) admit) admit M) *)
(* (_ : admit = admit -> *)
(* Lift1Prop.iff1 *)
(* (sep *)
(* (array scalar (word.of_Z 0) *)
(* (word.of_Z 0) admit) *)
(* (sep admit admit)) *)
(* (array admit admit admit admit)) => admit *)
(* end H Hrw)) admit admit (RelationClasses.reflexivity admit) *)
(* admit) admit in *)
(* admit))) *)
Qed. (* Error: No such section variable or assumption: H. *) |
Yes, I think this is the same as #9937. Since that one is smaller, perhaps we should close this as a duplicate of that? Also, I've posted a workaround at #9937 (comment). |
Description of the problem
mit-plv/bedrock2@b717b6b#diff-5c7e120c9281033af09d97fd489aa26aR166 errors at qed with
No such section variable or assumption: H6
. I may try to minimize it more, but I have already sunk a couple of hours into this with minimal progress. @JasonGross ideas?Potentially related #4086
Also wishing for #9911
Coq Version
8.9.0
The text was updated successfully, but these errors were encountered: