(* Check that resolved status of evars follows "restrict" *)
Axiom H : forall (v : nat), Some 0 = Some v -> True. Lemma L : True.
eapply H with _; matchgoalwith
| |- Some 0 = Some ?v => change (Some (0+0) = Some v) end. Abort.
(* The original example *)
Set Default Proof Using "Type".
Module heap_lang.
Inductive expr :=
| InjR (e : expr).
Inductive val :=
| InjRV (v : val).
Bind Scope val_scope with val.
Fixpoint of_val (v : val) : expr := match v with
| InjRV v => InjR (of_val v) end.
Fixpoint to_val (e : expr) : option val := None.
End heap_lang. Export heap_lang.
Module W. Inductive expr :=
| Val (v : val) (* Sums *)
| InjR (e : expr).
Fixpoint to_expr (e : expr) : heap_lang.expr := match e with
| Val v => of_val v
| InjR e => heap_lang.InjR (to_expr e) end.
Context (tac_wp_alloc : forall (e : expr) (v : val),
to_val e = Some v -> WPre e).
Lemma push_atomic_spec (x: val) :
WPre (InjR (of_val x)). Proof. (* This works. *)
eapply tac_wp_alloc with _. matchgoalwith
| |- to_val ?e = Some ?v => change (to_val (W.to_expr (W.InjR (W.Val x))) = Some v) end.
Undo. Undo. (* This is fixed *)
eapply tac_wp_alloc with _; matchgoalwith
| |- to_val ?e = Some ?v => change (to_val (W.to_expr (W.InjR (W.Val x))) = Some v) end. Abort. End Tests.
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.11Bemerkung:
(vorverarbeitet am 2026-09-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.