#[projections(primitive)]
Record r (n : nat) := { w : Prop -> Prop -> Prop }.
Class C (P : Prop) := {}.
Import Printf. Set Printing Primitive Projection Parameters.
Goalforall (v : r 0) (Q P : Prop), C (v.(w _) P Q). Proof. intros.
(* Succeeds before and after #17788. *)
Succeed lazy_match! goalwith
| [ |- ?g ] => let t := open_constr:(C (v.(w _) _ _)) in
Unification.unify (TransparentState.current ()) g t end.
#[local] Opaque w.
(* Succeeds only after #17788. *)
Succeed lazy_match! goalwith
| [ |- ?g ] => let t := open_constr:(C (v.(w _) _ _)) in
Unification.unify (TransparentState.current ()) g t end.
(* Succeeds only after #17788. *)
Succeed lazy_match! goalwith
| [ |- ?g ] => let t := open_constr:(w _) in let t := open_constr:(C ($t v _ _)) in (*printf "Term: %t" t;*)
Unification.unify (TransparentState.current ()) g t end.
(* Succeeds only after #17788. *)
Succeed lazy_match! goalwith
| [ |- ?g ] => let t := open_constr:(w _) in let t := open_constr:(C ($t v _ _)) in (*printf "Term: %t" t;*)
Unification.unify (TransparentState.current ()) g t end. Abort.
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 ist noch experimentell.