-
Notifications
You must be signed in to change notification settings - Fork 96
Using tmMkInductive and tmUnquote unpredictably crashes #1114
Copy link
Copy link
Open
Description
Declaring an inductive (tmMkInductive) and unquoting it (tmUnquote) in the same metacoq command unpredictably fails,
depending on which functions are inlined (see MWE).
Here is a MWE to reproduce the bug (I declare a (trivial) inductive and immediately try to unquote it) :
From MetaCoq.Utils Require Import utils.
From MetaCoq.Template Require Import All.
Import MCMonadNotation.
(* Modify this based on the current file. *)
Definition ind : term :=
tInd {| inductive_mind := (MPfile ["Bug2"], "Ind") ; inductive_ind := 0 |} [].
(* The simplest inductive you can make. *)
Definition mind_body := {|
ind_finite := Finite;
ind_npars := 0;
ind_params := [];
ind_bodies := [{|
ind_name := "Ind";
ind_indices := [];
ind_sort := sProp;
ind_type := tSort sProp;
ind_kelim := IntoPropSProp;
ind_ctors :=[];
ind_projs := [];
ind_relevance := Relevant
|}];
ind_universes := Monomorphic_ctx;
ind_variance := None
|}.
Definition define_ind : TemplateMonad unit :=
tmMkInductive' mind_body.
Definition unquote_ind : TemplateMonad unit :=
tmUnquote ind ;; ret tt.
(* Anomaly : "Inductive Bug2.Ind does not appear in the environment." *)
MetaCoq Run (define_ind ;; unquote_ind).
(* Succeeds. *)
MetaCoq Run define_ind.
MetaCoq Run unquote_ind.
(* Succeeds. *)
MetaCoq Run (tmMkInductive' mind_body ;; unquote_ind).Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels