coq-community / run-coq-bug-minimizer

Repository for triggering runs of the Coq bug minimizer using GitHub Actions [maintainer=@JasonGross]
MIT License
2 stars 0 forks source link

Bug minimizer should not error with OS errors #5

Closed JasonGross closed 3 years ago

JasonGross commented 3 years ago

Sort-of a dummy issue to test the bug minimizer here, hopefully @coqbot is watching

Spun off from https://github.com/coq/coq/issues/13942

coqbot commented 3 years ago

@JasonGross, Minimized File (full log on GitHub Actions)

Minimized Coq File (truncated to 32KiB; full file on [GitHub Actions Artifacts](https://github.com/coq-community/run-coq-bug-minimizer/actions/runs/768986986) under `bug.v`) ```coq (* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "-notation-overridden" "-w" "-redundant-canonical-projection" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/iris/iris/prelude" "iris.prelude" "-Q" "/github/workspace/iris/iris/algebra" "iris.algebra" "-Q" "/github/workspace/iris/iris/si_logic" "iris.si_logic" "-Q" "/github/workspace/iris/iris/bi" "iris.bi" "-Q" "/github/workspace/iris/iris/proofmode" "iris.proofmode" "-Q" "/github/workspace/iris/iris/base_logic" "iris.base_logic" "-Q" "/github/workspace/iris/iris/program_logic" "iris.program_logic" "-Q" "/github/workspace/iris/iris_heap_lang" "iris.heap_lang" "-Q" "/github/workspace/iris/iris_staging" "iris.staging" "-Q" "/github/workspace/iris/iris_deprecated" "iris.deprecated" "-Q" "/home/coq/.opam/4.05.0/lib/coq/user-contrib/Bignums" "Bignums" "-Q" "/home/coq/.opam/4.05.0/lib/coq/user-contrib/Ltac2" "Ltac2" "-Q" "/home/coq/.opam/4.05.0/lib/coq/user-contrib/stdpp" "stdpp" "-top" "one_shot" "-test-mode") -*- *) (* File reduced by coq-bug-finder from original input, then from 313 lines to 37 lines, then from 206 lines to 243 lines, then from 247 lines to 42 lines, then from 210 lines to 1000 lines, then from 1004 lines to 43 lines, then from 207 lines to 585 lines, then from 589 lines to 43 lines, then from 206 lines to 673 lines, then from 677 lines to 66 lines, then from 219 lines to 393 lines, then from 397 lines to 73 lines, then from 224 lines to 390 lines, then from 394 lines to 131 lines, then from 281 lines to 1089 lines, then from 1093 lines to 504 lines, then from 651 lines to 704 lines, then from 708 lines to 537 lines, then from 684 lines to 857 lines, then from 861 lines to 613 lines, then from 759 lines to 1092 lines, then from 1096 lines to 697 lines, then from 843 lines to 952 lines, then from 956 lines to 704 lines, then from 850 lines to 1278 lines, then from 1282 lines to 716 lines, then from 861 lines to 1200 lines, then from 1204 lines to 763 lines, then from 907 lines to 1162 lines, then from 1166 lines to 785 lines, then from 929 lines to 1225 lines, then from 1229 lines to 817 lines, then from 958 lines to 1285 lines, then from 1289 lines to 856 lines, then from 996 lines to 1305 lines, then from 1309 lines to 925 lines, then from 1065 lines to 1171 lines, then from 1175 lines to 1130 lines *) (* coqc version 8.13.2 (April 2021) compiled on Apr 3 2021 23:10:57 with OCaml 4.05.0 coqtop version 8.13.2 (April 2021) *) Module Export AdmitTactic. Module Import LocalFalse. Inductive False := . End LocalFalse. Axiom proof_admitted : False. Declare ML Module "ltac_plugin". Tactic Notation "admit" := abstract case proof_admitted. End AdmitTactic. Require Coq.QArith.QArith_base. Require Coq.QArith.Qcanon. Require Coq.Sorting.Permutation. Require Coq.Logic.EqdepFacts. Require Coq.PArith.PArith. Require Coq.NArith.NArith. Require Coq.ZArith.ZArith. Require Coq.Numbers.Natural.Peano.NPeano. Require Coq.QArith.QArith. Require Coq.Classes.Morphisms. Require Coq.Classes.RelationClasses. Require Coq.Lists.List. Require Coq.Bool.Bool. Require Coq.Setoids.Setoid. Require Coq.Init.Peano. Require Coq.Unicode.Utf8. Require Coq.Program.Basics. Require Coq.Program.Syntax. Require stdpp.options. Require stdpp.base. Require stdpp.proof_irrel. Require stdpp.decidable. Require Coq.micromega.Lia. Require stdpp.tactics. Require stdpp.option. Require stdpp.numbers. Require stdpp.list. Require stdpp.list_numbers. Require stdpp.fin. Require stdpp.countable. Require stdpp.orders. Require stdpp.vector. Require stdpp.finite. Require stdpp.sets. Require Coq.Arith.Wf_nat. Require stdpp.relations. Require stdpp.fin_sets. Require stdpp.fin_maps. Require stdpp.fin_map_dom. Require stdpp.mapset. Require stdpp.pmap. Require Coq.Strings.Ascii. Require Coq.Strings.String. Require stdpp.strings. Require stdpp.pretty. Require stdpp.infinite. Require stdpp.propset. Require stdpp.gmap. Require stdpp.coPset. Require stdpp.namespaces. Require stdpp.hlist. Require Coq.ssr.ssreflect. Require stdpp.listset. Require stdpp.lexico. Require stdpp.prelude. Require iris.prelude.options. Require iris.prelude.prelude. Require iris.algebra.ofe. Require iris.algebra.monoid. Require iris.bi.notation. Require iris.bi.interface. Require iris.bi.derived_connectives. Require iris.bi.derived_laws. Require iris.bi.derived_laws_later. Require stdpp.functions. Require stdpp.gmultiset. Require iris.algebra.big_op. Require iris.algebra.cmra. Require iris.algebra.updates. Require iris.algebra.local_updates. Require iris.algebra.list. Require iris.algebra.proofmode_classes. Require iris.algebra.gmap. Require iris.bi.big_op. Require iris.bi.internal_eq. Require iris.bi.plainly. Require iris.bi.updates. Require iris.bi.embedding. Require iris.bi.bi. Require stdpp.telescopes. Require iris.bi.telescopes. Require iris.proofmode.base. Require iris.proofmode.tokens. Require iris.proofmode.sel_patterns. Require iris.proofmode.intro_patterns. Require iris.proofmode.spec_patterns. Require iris.proofmode.environments. Require iris.proofmode.ident_name. Require iris.proofmode.modalities. Require iris.proofmode.classes. Require iris.proofmode.modality_instances. Require iris.proofmode.coq_tactics. Require iris.proofmode.reduction. Require iris.proofmode.notation. Require iris.proofmode.ltac_tactics. Require stdpp.nat_cancel. Require iris.proofmode.class_instances. Require iris.proofmode.class_instances_later. Require iris.proofmode.class_instances_updates. Require iris.proofmode.class_instances_embedding. Require iris.proofmode.class_instances_plainly. Require iris.proofmode.class_instances_internal_eq. Require iris.proofmode.frame_instances. Require iris.proofmode.tactics. Require iris.algebra.functions. Require iris.algebra.cofe_solver. Require iris.algebra.frac. Require iris.base_logic.upred. Require iris.base_logic.bi. Require iris.base_logic.derived. Require iris.base_logic.proofmode. Require iris.algebra.dfrac. Require iris.algebra.agree. Require iris.algebra.view. Require iris.algebra.auth. Require iris.algebra.csum. Require iris.algebra.excl. Require iris.algebra.lib.excl_auth. Require iris.algebra.lib.gmap_view. Require iris.base_logic.algebra. Require iris.base_logic.base_logic. Require iris.base_logic.lib.iprop. Require iris.base_logic.lib.own. Require iris.bi.lib.fractional. Require iris.base_logic.lib.ghost_map. Require iris.base_logic.lib.proph_map. Require iris.algebra.gset. Require iris.algebra.coPset. Require iris.base_logic.lib.wsat. Module Export iris_DOT_base_logic_DOT_lib_DOT_fancy_updates. Module Export iris. Module Export base_logic. Module Export lib. Module Export fancy_updates. Export stdpp.coPset. Import iris.algebra.gmap. Import iris.algebra.auth. Import iris.algebra.agree. Import iris.algebra.gset. Import iris.algebra.coPset. Import iris.proofmode.tactics. Export iris.base_logic.lib.own. Import iris.base_logic.lib.wsat. Import iris.prelude.options. Export invG. Import uPred. Definition uPred_fupd_def `{!invG Σ} (E1 E2 : coPset) (P : iProp Σ) : iProp Σ := wsat ∗ ownE E1 ==∗ ◇ (wsat ∗ ownE E2 ∗ P). Definition uPred_fupd_aux : seal (@uPred_fupd_def). admit. Defined. Definition uPred_fupd := uPred_fupd_aux.(unseal). Global Arguments uPred_fupd {Σ _}. Lemma uPred_fupd_eq `{!invG Σ} : @fupd _ uPred_fupd = uPred_fupd_def. admit. Defined. Lemma uPred_fupd_mixin `{!invG Σ} : BiFUpdMixin (uPredI (iResUR Σ)) uPred_fupd. admit. Defined. Global Instance uPred_bi_fupd `{!invG Σ} : BiFUpd (uPredI (iResUR Σ)) := {| bi_fupd_mixin := uPred_fupd_mixin |}. Global Instance uPred_bi_bupd_fupd `{!invG Σ} : BiBUpdFUpd (uPredI (iResUR Σ)). admit. Defined. Global Instance uPred_bi_fupd_plainly `{!invG Σ} : BiFUpdPlainly (uPredI (iResUR Σ)). admit. Defined. Lemma fupd_plain_soundness `{!invPreG Σ} E1 E2 (P: iProp Σ) `{!Plain P} : (∀ `{Hinv: !invG Σ}, ⊢ |={E1,E2}=> P) → ⊢ P. admit. Defined. Lemma step_fupdN_soundness `{!invPreG Σ} φ n : (∀ `{Hinv: !invG Σ}, ⊢@{iPropI Σ} |={⊤,∅}=> |={∅}▷=>^n ⌜ φ ⌝) → φ. admit. Defined. Lemma step_fupdN_soundness' `{!invPreG Σ} φ n : (∀ `{Hinv: !invG Σ}, ⊢@{iPropI Σ} |={⊤}[∅]▷=>^n ⌜ φ ⌝) → φ. admit. Defined. End fancy_updates. End lib. End base_logic. End iris. End iris_DOT_base_logic_DOT_lib_DOT_fancy_updates. Axiom proof_admitted : False. Tactic Notation "admit" := abstract case proof_admitted. Module Export iris_DOT_algebra_DOT_reservation_map. Module Export iris. Module Export algebra. Module Export reservation_map. Export iris.algebra.gmap. Export iris.algebra.coPset. Record reservation_map (A : Type) := ReservationMap { reservation_map_data_proj : gmap positive A; reservation_map_token_proj : coPset_disj }. Global Arguments ReservationMap {_} _ _. Global Arguments reservation_map_data_proj {_} _. Global Arguments reservation_map_token_proj {_} _. Section ofe. Context {A : ofe}. Local Instance reservation_map_equiv : Equiv (reservation_map A) := λ x y, reservation_map_data_proj x ≡ reservation_map_data_proj y ∧ reservation_map_token_proj x = reservation_map_token_proj y. Local Instance reservation_map_dist : Dist (reservation_map A) := λ n x y, reservation_map_data_proj x ≡{n}≡ reservation_map_data_proj y ∧ reservation_map_token_proj x = reservation_map_token_proj y. Definition reservation_map_ofe_mixin : OfeMixin (reservation_map A). admit. Defined. Canonical Structure reservation_mapO := Ofe (reservation_map A) reservation_map_ofe_mixin. End ofe. Section cmra. Context {A : cmra}. Local Instance reservation_map_valid_instance : Valid (reservation_map A) := λ x, match reservation_map_token_proj x with | CoPset E => ✓ (reservation_map_data_proj x) ∧ ∀ i, reservation_map_data_proj x !! i = None ∨ i ∉ E | CoPsetBot => False end. Local Instance reservation_map_validN_instance : ValidN (reservation_map A) := λ n x, match reservation_map_token_proj x with | CoPset E => ✓{n} (reservation_map_data_proj x) ∧ ∀ i, reservation_map_data_proj x !! i = None ∨ i ∉ E | CoPsetBot => False end. Local Instance reservation_map_pcore_instance : PCore (reservation_map A) := λ x, Some (ReservationMap (core (reservation_map_data_proj x)) ε). Local Instance reservation_map_op_instance : Op (reservation_map A) := λ x y, ReservationMap (reservation_map_data_proj x ⋅ reservation_map_data_proj y) (reservation_map_token_proj x ⋅ reservation_map_token_proj y). Lemma reservation_map_cmra_mixin : CmraMixin (reservation_map A). admit. Defined. Canonical Structure reservation_mapR := Cmra (reservation_map A) reservation_map_cmra_mixin. End cmra. Global Arguments reservation_mapR : clear implicits. End reservation_map. End algebra. End iris. End iris_DOT_algebra_DOT_reservation_map. Module Export iris_DOT_base_logic_DOT_lib_DOT_gen_heap. Module Export iris. Module Export base_logic. Module Export lib. Module Export gen_heap. Import iris.algebra.agree. Export iris.base_logic.lib.own. Import iris.base_logic.lib.ghost_map. Class gen_heapPreG (L V : Type) (Σ : gFunctors) `{Countable L} := { gen_heap_preG_inG :> ghost_mapG Σ L V; gen_meta_preG_inG :> ghost_mapG Σ L gname; gen_meta_data_preG_inG :> inG Σ (reservation_mapR (agreeR positiveO)); }. Class gen_heapG (L V : Type) (Σ : gFunctors) `{Countable L} := GenHeapG { gen_heap_inG :> gen_heapPreG L V Σ; gen_heap_name : gname; gen_meta_name : gname }. Global Arguments gen_heap_name {L V Σ _ _} _ : assert. Global Arguments gen_meta_name {L V Σ _ _} _ : assert. Section definitions. Context `{Countable L, hG : !gen_heapG L V Σ}. Definition gen_heap_interp (σ : gmap L V) : iProp Σ := ∃ m : gmap L gname, ⌜ dom _ m ⊆ dom (gset L) σ ⌝ ∗ ghost_map_auth (gen_heap_name hG) 1 σ ∗ ghost_map_auth (gen_meta_name hG) 1 m. End definitions. End gen_heap. End lib. End base_logic. End iris. End iris_DOT_base_logic_DOT_lib_DOT_gen_heap. Module Export iris_DOT_base_logic_DOT_lib_DOT_gen_inv_heap. Module Export iris. Module Export base_logic. Module Export lib. Module Export gen_inv_heap. Import iris.algebra.auth. Import iris.algebra.excl. Definition inv_heap_mapUR (L V : Type) `{Countable L} : ucmra := gmapUR L $ prodR (optionR $ exclR $ leibnizO V) (agreeR (V -d> PropO)). Class inv_heapPreG (L V : Type) (Σ : gFunctors) `{Countable L} := { inv_heap_preG_inG :> inG Σ (authR (inv_heap_mapUR L V)) }. Class inv_heapG (L V : Type) (Σ : gFunctors) `{Countable L} := Inv_HeapG { inv_heap_inG :> inv_heapPreG L V Σ; inv_heap_name : gname }. End gen_inv_heap. End lib. End base_logic. End iris. End iris_DOT_base_logic_DOT_lib_DOT_gen_inv_heap. Module Export iris_DOT_bi_DOT_weakestpre. Module Export iris. Module Export bi. Module Export weakestpre. Delimit Scope expr_scope with E. Delimit Scope val_scope with V. Inductive stuckness := NotStuck | MaybeStuck. Class Wp (PROP EXPR VAL A : Type) := wp : A → coPset → EXPR → (VAL → PROP) → PROP. Notation "'WP' e {{ Φ } }" := (wp NotStuck ⊤ e%E Φ) (at level 20, e, Φ at level 200, only parsing) : bi_scope. Notation "'WP' e {{ v , Q } }" := (wp NotStuck ⊤ e%E (λ v, Q)) (at level 20, e, Q at level 200, format "'[' 'WP' e '/' '[ ' {{ v , Q } } ']' ']'") : bi_scope. End weakestpre. End bi. End iris. End iris_DOT_bi_DOT_weakestpre. Module Export iris_DOT_program_logic_DOT_language. Module Export iris. Module Export program_logic. Module Export language. Section language_mixin. Context {expr val state observation : Type}. Context (of_val : val → expr). Context (to_val : expr → option val). Context (prim_step : expr → state → list observation → expr → state → list expr → Prop). Record LanguageMixin := { mixin_to_of_val v : to_val (of_val v) = Some v; mixin_of_to_val e v : to_val e = Some v → of_val v = e; mixin_val_stuck e σ κ e' σ' efs : prim_step e σ κ e' σ' efs → to_val e = None }. End language_mixin. Structure language := Language { expr : Type; val : Type; state : Type; observation : Type; of_val : val → expr; to_val : expr → option val; prim_step : expr → state → list observation → expr → state → list expr → Prop; language_mixin : LanguageMixin of_val to_val prim_step }. Global Arguments to_val {_} _. Global Arguments prim_step {_} _ _ _ _ _ _. Section language. Context {Λ : language}. Definition reducible (e : expr Λ) (σ : state Λ) := ∃ κ e' σ' efs, prim_step e σ κ e' σ' efs. End language. End language. End program_logic. End iris. End iris_DOT_program_logic_DOT_language. Module Export iris_DOT_program_logic_DOT_weakestpre. Module Export iris. Module Export program_logic. Module Export weakestpre. Export iris.base_logic.lib.fancy_updates. Class irisG (Λ : language) (Σ : gFunctors) := IrisG { iris_invG :> invG Σ; state_interp : state Λ → nat → list (observation Λ) → nat → iProp Σ; fork_post : val Λ → iProp Σ; num_laters_per_step : nat → nat; state_interp_mono σ ns κs nt: state_interp σ ns κs nt ={∅}=∗ state_interp σ (S ns) κs nt }. Definition wp_pre `{!irisG Λ Σ} (s : stuckness) (wp : coPset -d> expr Λ -d> (val Λ -d> iPropO Σ) -d> iPropO Σ) : coPset -d> expr Λ -d> (val Λ -d> iPropO Σ) -d> iPropO Σ := λ E e1 Φ, match to_val e1 with | Some v => |={E}=> Φ v | None => ∀ σ1 ns κ κs nt, state_interp σ1 ns (κ ++ κs) nt ={E,∅}=∗ ⌜if s is NotStuck then reducible e1 σ1 else True⌝ ∗ ∀ e2 σ2 efs, ⌜prim_step e1 σ1 κ e2 σ2 efs⌝ ={∅}▷=∗^(S $ num_laters_per_step ns) |={∅,E}=> state_interp σ2 (S ns) κs (length efs + nt) ∗ wp E e2 Φ ∗ [∗ list] i ↦ ef ∈ efs, wp ⊤ ef fork_post end%I. Local Instance wp_pre_contractive `{!irisG Λ Σ} s : Contractive (wp_pre s). admit. Defined. Definition wp_def `{!irisG Λ Σ} : Wp (iProp Σ) (expr Λ) (val Λ) stuckness := λ s : stuckness, fixpoint (wp_pre s). Definition wp_aux : seal (@wp_def). admit. Defined. Definition wp' := wp_aux.(unseal). Existing Instance wp'. End weakestpre. End program_logic. End iris. End iris_DOT_program_logic_DOT_weakestpre. Export stdpp.strings. Delimit Scope binder_scope with binder. Inductive binder := BAnon | BNamed :> string → binder. Notation "<>" := BAnon : binder_scope. Global Instance binder_dec_eq : EqDecision binder. admit. Defined. Module Export iris_DOT_program_logic_DOT_ectx_language. Module Export iris. Module Export program_logic. Module Export ectx_language. Section ectx_language_mixin. Context {expr val ectx state observation : Type}. Context (of_val : val → expr). Context (to_val : expr → option val). Context (empty_ectx : ectx). Context (comp_ectx : ectx → ectx → ectx). Context (fill : ectx → expr → expr). Context (head_step : expr → state → list observation → expr → state → list expr → Prop). Record EctxLanguageMixin := { mixin_to_of_val v : to_val (of_val v) = Some v; mixin_of_to_val e v : to_val e = Some v → of_val v = e; mixin_val_head_stuck e1 σ1 κ e2 σ2 efs : head_step e1 σ1 κ e2 σ2 efs → to_val e1 = None; mixin_fill_empty e : fill empty_ectx e = e; mixin_fill_comp K1 K2 e : fill K1 (fill K2 e) = fill (comp_ectx K1 K2) e; mixin_fill_inj K : Inj (=) (=) (fill K); mixin_fill_val K e : is_Some (to_val (fill K e)) → is_Some (to_val e); mixin_step_by_val K' K_redex e1' e1_redex σ1 κ e2 σ2 efs : fill K' e1' = fill K_redex e1_redex → to_val e1' = None → head_step e1_redex σ1 κ e2 σ2 efs → ∃ K'', K_redex = comp_ectx K' K''; mixin_head_ctx_step_val K e σ1 κ e2 σ2 efs : head_step (fill K e) σ1 κ e2 σ2 efs → is_Some (to_val e) ∨ K = empty_ectx; }. End ectx_language_mixin. Structure ectxLanguage := EctxLanguage { expr : Type; val : Type; ectx : Type; state : Type; observation : Type; of_val : val → expr; to_val : expr → option val; empty_ectx : ectx; comp_ectx : ectx → ectx → ectx; fill : ectx → expr → expr; head_step : expr → state → list observation → expr → state → list expr → Prop; ectx_language_mixin : EctxLanguageMixin of_val to_val empty_ectx comp_ectx fill head_step }. Global Arguments of_val {_} _. Global Arguments to_val {_} _. Global Arguments fill {_} _ _. Global Arguments head_step {_} _ _ _ _ _ _. Section ectx_language. Context {Λ : ectxLanguage}. Inductive prim_step (e1 : expr Λ) (σ1 : state Λ) (κ : list (observation Λ)) (e2 : expr Λ) (σ2 : state Λ) (efs : list (expr Λ)) : Prop := Ectx_step K e1' e2' : e1 = fill K e1' → e2 = fill K e2' → head_step e1' σ1 κ e2' σ2 efs → prim_step e1 σ1 κ e2 σ2 efs. Definition ectx_lang_mixin : LanguageMixin of_val to_val prim_step. admit. Defined. End ectx_language. Definition LanguageOfEctx (Λ : ectxLanguage) : language := let '@EctxLanguage E V C St K of_val to_val empty comp fill head mix := Λ in @Language E V St K of_val to_val _ (@ectx_lang_mixin (@EctxLanguage E V C St K of_val to_val empty comp fill head mix)). End ectx_language. End program_logic. End iris. End iris_DOT_program_logic_DOT_ectx_language. Module Export iris_DOT_program_logic_DOT_ectxi_language. Module Export iris. Module Export program_logic. Module Export ectxi_language. Section ectxi_language_mixin. Context {expr val ectx_item state observation : Type}. Context (of_val : val → expr). Context (to_val : expr → option val). Context (fill_item : ectx_item → expr → expr). Context (head_step : expr → state → list observation → expr → state → list expr → Prop). Record EctxiLanguageMixin := { mixin_to_of_val v : to_val (of_val v) = Some v; mixin_of_to_val e v : to_val e = Some v → of_val v = e; mixin_val_stuck e1 σ1 κ e2 σ2 efs : head_step e1 σ1 κ e2 σ2 efs → to_val e1 = None; mixin_fill_item_val Ki e : is_Some (to_val (fill_item Ki e)) → is_Some (to_val e); mixin_fill_item_inj Ki : Inj (=) (=) (fill_item Ki); mixin_fill_item_no_val_inj Ki1 Ki2 e1 e2 : to_val e1 = None → to_val e2 = None → fill_item Ki1 e1 = fill_item Ki2 e2 → Ki1 = Ki2; mixin_head_ctx_step_val Ki e σ1 κ e2 σ2 efs : head_step (fill_item Ki e) σ1 κ e2 σ2 efs → is_Some (to_val e); }. End ectxi_language_mixin. Structure ectxiLanguage := EctxiLanguage { expr : Type; val : Type; ectx_item : Type; state : Type; observation : Type; of_val : val → expr; to_val : expr → option val; fill_item : ectx_item → expr → expr; head_step : expr → state → list observation → expr → state → list expr → Prop; ectxi_language_mixin : EctxiLanguageMixin of_val to_val fill_item head_step }. Global Arguments EctxiLanguage {_ _ _ _ _ _ _ _ _} _. Global Arguments of_val {_} _. Global Arguments to_val {_} _. Global Arguments fill_item {_} _ _. Global Arguments head_step {_} _ _ _ _ _ _. Section ectxi_language. Context {Λ : ectxiLanguage}. Notation ectx := (list (ectx_item Λ)). Definition fill (K : ectx) (e : expr Λ) : expr Λ := foldl (flip fill_item) e K. Definition ectxi_lang_ectx_mixin : EctxLanguageMixin of_val to_val [] (flip (++)) fill head_step. admit. Defined. End ectxi_language. Definition EctxLanguageOfEctxi (Λ : ectxiLanguage) : ectxLanguage := let '@EctxiLanguage E V C St K of_val to_val fill head mix := Λ in @EctxLanguage E V (list C) St K of_val to_val _ _ _ _ (@ectxi_lang_ectx_mixin (@EctxiLanguage E V C St K of_val to_val fill head mix)). End ectxi_language. End program_logic. End iris. End iris_DOT_program_logic_DOT_ectxi_language. Module Export iris. Module Export heap_lang. Module Export locations. Record loc := { loc_car : Z }. Global Instance loc_eq_decision : EqDecision loc. admit. Defined. Global Instance loc_countable : Countable loc. admit. Defined. Program Instance loc_infinite : Infinite loc := inj_infinite (λ p, {| loc_car := p |}) (λ l, Some (loc_car l)) _. Next Obligation. admit. Defined. Definition loc_add (l : loc) (off : Z) : loc := {| loc_car := loc_car l + off|}. Notation "l +ₗ off" := (loc_add l off) (at level 50, left associativity) : stdpp_scope. End locations. End heap_lang. End iris. Module Export heap_lang. Definition proph_id := positive. Inductive base_lit : Set := | LitInt (n : Z) | LitBool (b : bool) | LitUnit | LitPoison | LitLoc (l : loc) | LitProphecy (p: proph_id). Inductive un_op : Set := | NegOp | MinusUnOp. Inductive bin_op : Set := | PlusOp | MinusOp | MultOp | QuotOp | RemOp | AndOp | OrOp | XorOp | ShiftLOp | ShiftROp | LeOp | LtOp | EqOp | OffsetOp. Inductive expr := | Val (v : val) | Var (x : string) | Rec (f x : binder) (e : expr) | App (e1 e2 : expr) | UnOp (op : un_op) (e : expr) | BinOp (op : bin_op) (e1 e2 : expr) | If (e0 e1 e2 : expr) | Pair (e1 e2 : expr) | Fst (e : expr) | Snd (e : expr) | InjL (e : expr) | InjR (e : expr) | Case (e0 : expr) (e1 : expr) (e2 : expr) | Fork (e : expr) | AllocN (e1 e2 : expr) | Free (e : expr) | Load (e : expr) | Store (e1 : expr) (e2 : expr) | CmpXchg (e0 : expr) (e1 : expr) (e2 : expr) | FAA (e1 : expr) (e2 : expr) | NewProph | Resolve (e0 : expr) (e1 : expr) (e2 : expr) with val := | LitV (l : base_lit) | RecV (f x : binder) (e : expr) | PairV (v1 v2 : val) | InjLV (v : val) | InjRV (v : val). Bind Scope val_scope with val. Definition observation : Set := proph_id * (val * val). Notation of_val := Val (only parsing). Definition to_val (e : expr) : option val := match e with | Val v => Some v | _ => None end. Definition lit_is_unboxed (l: base_lit) : Prop := match l with | LitProphecy _ | LitPoison => False | LitInt _ | LitBool _ | LitLoc _ | LitUnit => True end. Definition val_is_unboxed (v : val) : Prop := match v with | LitV l => lit_is_unboxed l | InjLV (LitV l) => lit_is_unboxed l | InjRV (LitV l) => lit_is_unboxed l | _ => False end. Global Instance val_is_unboxed_dec v : Decision (val_is_unboxed v). admit. Defined. Definition vals_compare_safe (vl v1 : val) : Prop := val_is_unboxed vl ∨ val_is_unboxed v1. Record state : Type := { heap: gmap loc (option val); used_proph_id: gset proph_id; }. Global Instance bin_op_eq_dec : EqDecision bin_op. admit. Defined. Global Instance val_eq_dec : EqDecision val. admit. Defined. Inductive ectx_item := | AppLCtx (v2 : val) | AppRCtx (e1 : expr) | UnOpCtx (op : un_op) | BinOpLCtx (op : bin_op) (v2 : val) | BinOpRCtx (op : bin_op) (e1 : expr) | IfCtx (e1 e2 : expr) | PairLCtx (v2 : val) | PairRCtx (e1 : expr) | FstCtx | SndCtx | InjLCtx | InjRCtx | CaseCtx (e1 : expr) (e2 : expr) | AllocNLCtx (v2 : val) | AllocNRCtx (e1 : expr) | FreeCtx | LoadCtx | StoreLCtx (v2 : val) | StoreRCtx (e1 : expr) | CmpXchgLCtx (v1 : val) (v2 : val) | CmpXchgMCtx (e0 : expr) (v2 : val) | CmpXchgRCtx (e0 : expr) (e1 : expr) | FaaLCtx (v2 : val) | FaaRCtx (e1 : expr) | ResolveLCtx (ctx : ectx_item) (v1 : val) (v2 : val) | ResolveMCtx (e0 : expr) (v2 : val) | ResolveRCtx (e0 : expr) (e1 : expr). Fixpoint fill_item (Ki : ectx_item) (e : expr) : expr := match Ki with | AppLCtx v2 => App e (of_val v2) | AppRCtx e1 => App e1 e | UnOpCtx op => UnOp op e | BinOpLCtx op v2 => BinOp op e (Val v2) | BinOpRCtx op e1 => BinOp op e1 e | IfCtx e1 e2 => If e e1 e2 | PairLCtx v2 => Pair e (Val v2) | PairRCtx e1 => Pair e1 e | FstCtx => Fst e | SndCtx => Snd e | InjLCtx => InjL e | InjRCtx => InjR e | CaseCtx e1 e2 => Case e e1 e2 | AllocNLCtx v2 => AllocN e (Val v2) | AllocNRCtx e1 => AllocN e1 e | FreeCtx => Free e | LoadCtx => Load e | StoreLCtx v2 => Store e (Val v2) | StoreRCtx e1 => Store e1 e | CmpXchgLCtx v1 v2 => CmpXchg e (Val v1) (Val v2) | CmpXchgMCtx e0 v2 => CmpXchg e0 e (Val v2) | CmpXchgRCtx e0 e1 => CmpXchg e0 e1 e | FaaLCtx v2 => FAA e (Val v2) | FaaRCtx e1 => FAA e1 e | ResolveLCtx K v1 v2 => Resolve (fill_item K e) (Val v1) (Val v2) | ResolveMCtx ex v2 => Resolve ex e (Val v2) | ResolveRCtx ex e1 => Resolve ex e1 e end. Fixpoint subst (x : string) (v : val) (e : expr) : expr := match e with | Val _ => e | Var y => if decide (x = y) then Val v else Var y | Rec f y e => Rec f y $ if decide (BNamed x ≠ f ∧ BNamed x ≠ y) then subst x v e else e | App e1 e2 => App (subst x v e1) (subst x v e2) | UnOp op e => UnOp op (subst x v e) | BinOp op e1 e2 => BinOp op (subst x v e1) (subst x v e2) | If e0 e1 e2 => If (subst x v e0) (subst x v e1) (subst x v e2) | Pair e1 e2 => Pair (subst x v e1) (subst x v e2) | Fst e => Fst (subst x v e) | Snd e => Snd (subst x v e) | InjL e => InjL (subst x v e) | InjR e => InjR (subst x v e) | Case e0 e1 e2 => Case (subst x v e0) (subst x v e1) (subst x v e2) | Fork e => Fork (subst x v e) | AllocN e1 e2 => AllocN (subst x v e1) (subst x v e2) | Free e => Free (subst x v e) | Load e => Load (subst x v e) | Store e1 e2 => Store (subst x v e1) (subst x v e2) | CmpXchg e0 e1 e2 => CmpXchg (subst x v e0) (subst x v e1) (subst x v e2) | FAA e1 e2 => FAA (subst x v e1) (subst x v e2) | NewProph => NewProph | Resolve ex e1 e2 => Resolve (subst x v ex) (subst x v e1) (subst x v e2) end. Definition subst' (mx : binder) (v : val) : expr → expr := match mx with BNamed x => subst x v | BAnon => id end. Definition un_op_eval (op : un_op) (v : val) : option val := match op, v with | NegOp, LitV (LitBool b) => Some $ LitV $ LitBool (negb b) | NegOp, LitV (LitInt n) => Some $ LitV $ LitInt (Z.lnot n) | MinusUnOp, LitV (LitInt n) => Some $ LitV $ LitInt (- n) | _, _ => None end. Definition bin_op_eval_int (op : bin_op) (n1 n2 : Z) : option base_lit := match op with | PlusOp => Some $ LitInt (n1 + n2) | MinusOp => Some $ LitInt (n1 - n2) | MultOp => Some $ LitInt (n1 * n2) | QuotOp => Some $ LitInt (n1 `quot` n2) | RemOp => Some $ LitInt (n1 `rem` n2) | AndOp => Some $ LitInt (Z.land n1 n2) | OrOp => Some $ LitInt (Z.lor n1 n2) | XorOp => Some $ LitInt (Z.lxor n1 n2) | ShiftLOp => Some $ LitInt (n1 ≪ n2) | ShiftROp => Some $ LitInt (n1 ≫ n2) | LeOp => Some $ LitBool (bool_decide (n1 ≤ n2)) | LtOp => Some $ LitBool (bool_decide (n1 < n2)) | EqOp => Some $ LitBool (bool_decide (n1 = n2)) | OffsetOp => None end%Z. Definition bin_op_eval_bool (op : bin_op) (b1 b2 : bool) : option base_lit := match op with | PlusOp | MinusOp | MultOp | QuotOp | RemOp => None | AndOp => Some (LitBool (b1 && b2)) | OrOp => Some (LitBool (b1 || b2)) | XorOp => Some (LitBool (xorb b1 b2)) | ShiftLOp | ShiftROp => None | LeOp | LtOp => None | EqOp => Some (LitBool (bool_decide (b1 = b2))) | OffsetOp => None end. Definition bin_op_eval_loc (op : bin_op) (l1 : loc) (v2 : base_lit) : option base_lit := match op, v2 with | OffsetOp, LitInt off => Some $ LitLoc (l1 +ₗ off) | _, _ => None end. Definition bin_op_eval (op : bin_op) (v1 v2 : val) : option val := if decide (op = EqOp) then if decide (vals_compare_safe v1 v2) then Some $ LitV $ LitBool $ bool_decide (v1 = v2) else None else match v1, v2 with | LitV (LitInt n1), LitV (LitInt n2) => LitV <$> bin_op_eval_int op n1 n2 | LitV (LitBool b1), LitV (LitBool b2) => LitV <$> bin_op_eval_bool op b1 b2 | LitV (LitLoc l1), LitV v2 => LitV <$> bin_op_eval_loc op l1 v2 | _, _ => None end. Definition state_upd_heap (f: gmap loc (option val) → gmap loc (option val)) (σ: state) : state := {| heap := f σ.(heap); used_proph_id := σ.(used_proph_id) |}. Definition state_upd_used_proph_id (f: gset proph_id → gset proph_id) (σ: state) : state := {| heap := σ.(heap); used_proph_id := f σ.(used_proph_id) |}. Fixpoint heap_array (l : loc) (vs : list val) : gmap loc (option val) := match vs with | [] => ∅ | v :: vs' => {[l := Some v]} ∪ heap_array (l +ₗ 1) vs' end. Definition state_init_heap (l : loc) (n : Z) (v : val) (σ : state) : state := state_upd_heap (λ h, heap_array l (replicate (Z.to_nat n) v) ∪ h) σ. Inductive head_step : expr → state → list observation → expr → state → list expr → Prop := | RecS f x e σ : head_step (Rec f x e) σ [] (Val $ RecV f x e) σ [] | PairS v1 v2 σ : head_step (Pair (Val v1) (Val v2)) σ [] (Val $ PairV v1 v2) σ [] | InjLS v σ : head_step (InjL $ Val v) σ [] (Val $ InjLV v) σ [] | InjRS v σ : head_step (InjR $ Val v) σ [] (Val $ InjRV v) σ [] | BetaS f x e1 v2 e' σ : e' = subst' x v2 (subst' f (RecV f x e1) e1) → head_step (App (Val $ RecV f x e1) (Val v2)) σ [] e' σ [] | UnOpS op v v' σ : un_op_eval op v = Some v' → head_step (UnOp op (Val v)) σ [] (Val v') σ [] | BinOpS op v1 v2 v' σ : bin_op_eval op v1 v2 = Some v' → head_step (BinOp op (Val v1) (Val v2)) σ [] (Val v') σ [] | IfTrueS e1 e2 σ : head_step (If (Val $ LitV $ LitBool true) e1 e2) σ [] e1 σ [] | IfFalseS e1 e2 σ : head_step (If (Val $ LitV $ LitBool false) e1 e2) σ [] e2 σ [] | FstS v1 v2 σ : head_step (Fst (Val $ PairV v1 v2)) σ [] (Val v1) σ [] | SndS v1 v2 σ : head_step (Snd (Val $ PairV v1 v2)) σ [] (Val v2) σ [] | CaseLS v e1 e2 σ : head_step (Case (Val $ InjLV v) e1 e2) σ [] (App e1 (Val v)) σ [] | CaseRS v e1 e2 σ : head_step (Case (Val $ InjRV v) e1 e2) σ [] (App e2 (Val v)) σ [] | ForkS e σ: head_step (Fork e) σ [] (Val $ LitV LitUnit) σ [e] | AllocNS n v σ l : (0 < n)%Z → (∀ i, (0 ≤ i)%Z → (i < n)%Z → σ.(heap) !! (l +ₗ i) = None) → head_step (AllocN (Val $ LitV $ LitInt n) (Val v)) σ [] (Val $ LitV $ LitLoc l) (state_init_heap l n v σ) [] | FreeS l v σ : σ.(heap) !! l = Some $ Some v → head_step (Free (Val $ LitV $ LitLoc l)) σ [] (Val $ LitV LitUnit) (state_upd_heap <[l:=None]> σ) [] | LoadS l v σ : σ.(heap) !! l = Some $ Some v → head_step (Load (Val $ LitV $ LitLoc l)) σ [] (of_val v) σ [] | StoreS l v w σ : σ.(heap) !! l = Some $ Some v → head_step (Store (Val $ LitV $ LitLoc l) (Val w)) σ [] (Val $ LitV LitUnit) (state_upd_heap <[l:=Some w]> σ) [] | CmpXchgS l v1 v2 vl σ ```
Intermediate Coq File (useful for debugging if minimization did not go as far as you wanted) (truncated to 8.0KiB; full file on [GitHub Actions Artifacts](https://github.com/coq-community/run-coq-bug-minimizer/actions/runs/768986986) under `cwd/tmp.v`) ```coq (* -*- mode: coq; coq-prog-args: ("-emacs" "-q" "-w" "-notation-overridden" "-w" "-redundant-canonical-projection" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/iris/iris/prelude" "iris.prelude" "-Q" "/github/workspace/iris/iris/algebra" "iris.algebra" "-Q" "/github/workspace/iris/iris/si_logic" "iris.si_logic" "-Q" "/github/workspace/iris/iris/bi" "iris.bi" "-Q" "/github/workspace/iris/iris/proofmode" "iris.proofmode" "-Q" "/github/workspace/iris/iris/base_logic" "iris.base_logic" "-Q" "/github/workspace/iris/iris/program_logic" "iris.program_logic" "-Q" "/github/workspace/iris/iris_heap_lang" "iris.heap_lang" "-Q" "/github/workspace/iris/iris_staging" "iris.staging" "-Q" "/github/workspace/iris/iris_deprecated" "iris.deprecated" "-Q" "/home/coq/.opam/4.05.0/lib/coq/user-contrib/Bignums" "Bignums" "-Q" "/home/coq/.opam/4.05.0/lib/coq/user-contrib/Ltac2" "Ltac2" "-Q" "/home/coq/.opam/4.05.0/lib/coq/user-contrib/stdpp" "stdpp" "-top" "one_shot" "-test-mode") -*- *) (* File reduced by coq-bug-finder from original input, then from 313 lines to 37 lines, then from 206 lines to 243 lines, then from 247 lines to 42 lines, then from 210 lines to 1000 lines, then from 1004 lines to 43 lines, then from 207 lines to 585 lines, then from 589 lines to 43 lines, then from 206 lines to 673 lines, then from 677 lines to 66 lines, then from 219 lines to 393 lines, then from 397 lines to 73 lines, then from 224 lines to 390 lines, then from 394 lines to 131 lines, then from 281 lines to 1089 lines, then from 1093 lines to 504 lines, then from 651 lines to 704 lines, then from 708 lines to 537 lines, then from 684 lines to 857 lines, then from 861 lines to 613 lines, then from 759 lines to 1092 lines, then from 1096 lines to 697 lines, then from 843 lines to 952 lines, then from 956 lines to 704 lines, then from 850 lines to 1278 lines, then from 1282 lines to 716 lines, then from 861 lines to 1200 lines, then from 1204 lines to 763 lines, then from 907 lines to 1162 lines, then from 1166 lines to 785 lines, then from 929 lines to 1225 lines, then from 1229 lines to 817 lines, then from 958 lines to 1285 lines, then from 1289 lines to 856 lines, then from 996 lines to 1305 lines, then from 1309 lines to 925 lines, then from 1065 lines to 1171 lines, then from 1175 lines to 1128 lines *) (* coqc version 8.13.2 (April 2021) compiled on Apr 3 2021 23:10:57 with OCaml 4.05.0 coqtop version 8.13.2 (April 2021) *) Module Export AdmitTactic. Module Import LocalFalse. Inductive False := . End LocalFalse. Axiom proof_admitted : False. Declare ML Module "ltac_plugin". Tactic Notation "admit" := abstract case proof_admitted. End AdmitTactic. Require Coq.QArith.QArith_base. Require Coq.QArith.Qcanon. Require Coq.Sorting.Permutation. Require Coq.Logic.EqdepFacts. Require Coq.PArith.PArith. Require Coq.NArith.NArith. Require Coq.ZArith.ZArith. Require Coq.Numbers.Natural.Peano.NPeano. Require Coq.QArith.QArith. Require Coq.Classes.Morphisms. Require Coq.Classes.RelationClasses. Require Coq.Lists.List. Require Coq.Bool.Bool. Require Coq.Setoids.Setoid. Require Coq.Init.Peano. Require Coq.Unicode.Utf8. Require Coq.Program.Basics. Require Coq.Program.Syntax. Require stdpp.options. Require stdpp.base. Require stdpp.proof_irrel. Require stdpp.decidable. Require Coq.micromega.Lia. Require stdpp.tactics. Require stdpp.option. Require stdpp.numbers. Require stdpp.list. Require stdpp.list_numbers. Require stdpp.fin. Require stdpp.countable. Require stdpp.orders. Require stdpp.vector. Require stdpp.finite. Require stdpp.sets. Require Coq.Arith.Wf_nat. Require stdpp.relations. Require stdpp.fin_sets. Require stdpp.fin_maps. Require stdpp.fin_map_dom. Require stdpp.mapset. Require stdpp.pmap. Require Coq.Strings.Ascii. Require Coq.Strings.String. Require stdpp.strings. Require stdpp.pretty. Require stdpp.infinite. Require stdpp.propset. Require stdpp.gmap. Require stdpp.coPset. Require stdpp.namespaces. Require stdpp.hlist. Require Coq.ssr.ssreflect. Require stdpp.listset. Require stdpp.lexico. Require stdpp.prelude. Require iris.prelude.options. Require iris.prelude.prelude. Require iris.algebra.ofe. Require iris.algebra.monoid. Require iris.bi.notation. Require iris.bi.interface. Require iris.bi.derived_connectives. Require iris.bi.derived_laws. Require iris.bi.derived_laws_later. Require stdpp.functions. Require stdpp.gmultiset. Require iris.algebra.big_op. Require iris.algebra.cmra. Require iris.algebra.updates. Require iris.algebra.local_updates. Require iris.algebra.list. Require iris.algebra.proofmode_classes. Require iris.algebra.gmap. Require iris.bi.big_op. Require iris.bi.internal_eq. Require iris.bi.plainly. Require iris.bi.updates. Require iris.bi.embedding. Require iris.bi.bi. Require stdpp.telescopes. Require iris.bi.telescopes. Require iris.proofmode.base. Require iris.proofmode.tokens. Require iris.proofmode.sel_patterns. Require iris.proofmode.intro_patterns. Require iris.proofmode.spec_patterns. Require iris.proofmode.environments. Require iris.proofmode.ident_name. Require iris.proofmode.modalities. Require iris.proofmode.classes. Require iris.proofmode.modality_instances. Require iris.proofmode.coq_tactics. Require iris.proofmode.reduction. Require iris.proofmode.notation. Require iris.proofmode.ltac_tactics. Require stdpp.nat_cancel. Require iris.proofmode.class_instances. Require iris.proofmode.class_instances_later. Require iris.proofmode.class_instances_updates. Require iris.proofmode.class_instances_embedding. Require iris.proofmode.class_instances_plainly. Require iris.proofmode.class_instances_internal_eq. Require iris.proofmode.frame_instances. Require iris.proofmode.tactics. Require iris.algebra.functions. Require iris.algebra.cofe_solver. Require iris.algebra.frac. Require iris.base_logic.upred. Require iris.base_logic.bi. Require iris.base_logic.derived. Require iris.base_logic.proofmode. Require iris.algebra.dfrac. Require iris.algebra.agree. Require iris.algebra.view. Require iris.algebra.auth. Require iris.algebra.csum. Require iris.algebra.excl. Require iris.algebra.lib.excl_auth. Require iris.algebra.lib.gmap_view. Require iris.base_logic.algebra. Require iris.base_logic.base_logic. Require iris.base_logic.lib.iprop. Require iris.base_logic.lib.own. Require iris.bi.lib.fractional. Require iris.base_logic.lib.ghost_map. Require iris.base_logic.lib.proph_map. Require iris.algebra.gset. Require iris.algebra.coPset. Require iris.base_logic.lib.wsat. Module Export iris_DOT_base_logic_DOT_lib_DOT_fancy_updates. Module Export iris. Module Export base_logic. Module Export lib. Module Export fancy_updates. Export stdpp.coPset. Import iris.algebra.gmap. Import iris.algebra.auth. Import iris.algebra.agree. Import iris.algebra.gset. Import iris.algebra.coPset. Import iris.proofmode.tactics. Export iris.base_logic.lib.own. Import iris.base_logic.lib.wsat. Import iris.prelude.options. Export invG. Import uPred. Definition uPred_fupd_def `{!invG Σ} (E1 E2 : coPset) (P : iProp Σ) : iProp Σ := wsat ∗ ownE E1 ==∗ ◇ (wsat ∗ ownE E2 ∗ P). Definition uPred_fupd_aux : seal (@uPred_fupd_def). admit. Defined. Definition uPred_fupd := uPred_fupd_aux.(unseal). Global Arguments uPred_fupd {Σ _}. Lemma uPred_fupd_eq `{!invG Σ} : @fupd _ uPred_fupd = uPred_fupd_def. admit. Defined. Lemma uPred_fupd_mixin `{!invG Σ} : BiFUpdMixin (uPredI (iResUR Σ)) uPred_fupd. admit. Defined. Global Instance uPred_bi_fupd `{!invG Σ} : BiFUpd (uPredI (iResUR Σ)) := {| bi_fupd_mixin := uPred_fupd_mixin |}. Global Instance uPred_bi_bupd_fupd `{!invG Σ} : BiBUpdFUpd (uPredI (iResUR Σ)). admit. Defined. Global Instance uPred_bi_fupd_plainly `{!invG Σ} : BiFUpdPlainly (uPredI (iResUR Σ)). admit. Defined. Lemma fupd_plain_soundness `{!invPreG Σ} E1 E2 (P: iProp Σ) `{!Plain P} : (∀ `{Hinv: !invG Σ}, ⊢ |={E1,E2}=> P) → ⊢ P. admit. Defined. Lemma step_fupdN_soundness `{!invPreG Σ} φ n : (∀ `{Hinv: !invG Σ}, ⊢@{iPropI Σ} |={⊤,∅}=> |={∅}▷=>^n ⌜ φ ⌝) → φ. admit. Defined. Lemma step_fupdN_soundness' `{!invPreG Σ} φ n : (∀ `{Hinv: !invG Σ}, ⊢@{iPropI Σ} |={⊤}[∅]▷=>^n ⌜ φ ⌝) → φ. admit. De ```
Build Log (truncated to 8.0KiB; full file on [GitHub Actions Artifacts](https://github.com/coq-community/run-coq-bug-minimizer/actions/runs/768986986) under `build.log`) ``` ++ (/github/workspace/run-script.sh @ line 2) $ git clone https://gitlab.mpi-sws.org/iris/iris.git Cloning into 'iris'... ++ (/github/workspace/run-script.sh @ line 2) $ cd iris ++ (/github/workspace/run-script.sh @ line 2) $ git checkout 59d18188f9db844a75f5e37dc7cbc6c39ecbb24f Note: checking out '59d18188f9db844a75f5e37dc7cbc6c39ecbb24f'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -b with the checkout command again. Example: git checkout -b HEAD is now at 59d18188 break dependency of bi.weakestpre on program_logic.language ++ (/github/workspace/run-script.sh @ line 3) $ opam repo add iris-dev https://gitlab.mpi-sws.org/iris/opam.git [iris-dev] Initialised [NOTE] Repository iris-dev has been added to the selections of switch 4.05.0 only. Run `opam repository add iris-dev --all-switches|--set-default' to use it in all existing switches, or in newly created switches, respectively. ++ (/github/workspace/run-script.sh @ line 4) $ make builddep OPAMFLAGS=-y # Creating builddep package for coq-iris-deprecated.opam. # Creating builddep package for coq-iris-staging.opam. # Creating builddep package for coq-iris-heap-lang.opam. # Creating builddep package for coq-iris.opam. # Installing builddep packages. coq-iris-deprecated-builddep is now pinned to file:///github/workspace/iris/builddep (version ~dev) coq-iris-staging-builddep is now pinned to file:///github/workspace/iris/builddep (version ~dev) coq-iris-heap-lang-builddep is now pinned to file:///github/workspace/iris/builddep (version ~dev) coq-iris-builddep is now pinned to file:///github/workspace/iris/builddep (version ~dev) The following actions will be performed: - install coq-stdpp dev.2021-03-14.1.78c857b9 [required by coq-iris-builddep] - install coq-iris-builddep ~dev* - install coq-iris-staging-builddep ~dev* - install coq-iris-heap-lang-builddep ~dev* - install coq-iris-deprecated-builddep ~dev* ===== 5 to install ===== <><> Gathering sources ><><><><><><><><><><><><><><><><><><><><><><><><><><><><> [coq-iris-builddep.~dev] synchronised from file:///github/workspace/iris/builddep [coq-iris-deprecated-builddep.~dev] synchronised from file:///github/workspace/iris/builddep [coq-iris-heap-lang-builddep.~dev] synchronised from file:///github/workspace/iris/builddep [coq-iris-staging-builddep.~dev] synchronised from file:///github/workspace/iris/builddep [coq-stdpp.dev.2021-03-14.1.78c857b9] synchronised from git+https://gitlab.mpi-sws.org/iris/stdpp.git#78c857b9556b76972db0bf53c84d5f3a3a5f7828 <><> Processing actions <><><><><><><><><><><><><><><><><><><><><><><><><><><><> -> installed coq-stdpp.dev.2021-03-14.1.78c857b9 -> installed coq-iris-builddep.~dev -> installed coq-iris-deprecated-builddep.~dev -> installed coq-iris-heap-lang-builddep.~dev -> installed coq-iris-staging-builddep.~dev Done. ++ (/github/workspace/run-script.sh @ line 5) $ make -j2 tests/one_shot.vo "coq_makefile" -f _CoqProject -o Makefile.coq make[1]: Entering directory '/github/workspace/iris' MINIMIZER_DEBUG: /home/coq/.opam/4.05.0/bin/coqc: COQPATH= MINIMIZER_DEBUG: exec: /home/coq/.opam/4.05.0/bin/coqc.orig --print-version COQDEP VFILES COQDEP TESTFILES MINIMIZER_DEBUG: /home/coq/.opam/4.05.0/bin/coqc: COQPATH= MINIMIZER_DEBUG: exec: /home/coq/.opam/4.05.0/bin/coqc.orig --print-version COQC iris/prelude/options.v MINIMIZER_DEBUG: /home/coq/.opam/4.05.0/bin/coqc: COQPATH= MINIMIZER_DEBUG: exec: /home/coq/.opam/4.05.0/bin/coqc.orig -q -w -notation-overridden -w -redundant-canonical-projection -Q /github/workspace/iris/iris/prelude iris.prelude -Q /github/workspace/iris/iris/algebra iris.algebra -Q /github/workspace/iris/iris/si_logic iris.si_logic -Q /github/workspace/iris/iris/bi iris.bi -Q /github/workspace/iris/iris/proofmode iris.proofmode -Q /github/workspace/iris/iris/base_logic iris.base_logic -Q /github/workspace/iris/iris/program_logic iris.program_logic -Q /github/workspace/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/iris/iris_staging iris.staging -Q /github/workspace/iris/iris_deprecated iris.deprecated /github/workspace/iris/iris/prelude/options.v COQC iris/bi/notation.v COQC iris/prelude/prelude.v MINIMIZER_DEBUG: /home/coq/.opam/4.05.0/bin/coqc: COQPATH= MINIMIZER_DEBUG: exec: /home/coq/.opam/4.05.0/bin/coqc.orig -q -w -notation-overridden -w -redundant-canonical-projection -Q /github/workspace/iris/iris/prelude iris.prelude -Q /github/workspace/iris/iris/algebra iris.algebra -Q /github/workspace/iris/iris/si_logic iris.si_logic -Q /github/workspace/iris/iris/bi iris.bi -Q /github/workspace/iris/iris/proofmode iris.proofmode -Q /github/workspace/iris/iris/base_logic iris.base_logic -Q /github/workspace/iris/iris/program_logic iris.program_logic -Q /github/workspace/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/iris/iris_staging iris.staging -Q /github/workspace/iris/iris_deprecated iris.deprecated /github/workspace/iris/iris/bi/notation.v MINIMIZER_DEBUG: /home/coq/.opam/4.05.0/bin/coqc: COQPATH= MINIMIZER_DEBUG: exec: /home/coq/.opam/4.05.0/bin/coqc.orig -q -w -notation-overridden -w -redundant-canonical-projection -Q /github/workspace/iris/iris/prelude iris.prelude -Q /github/workspace/iris/iris/algebra iris.algebra -Q /github/workspace/iris/iris/si_logic iris.si_logic -Q /github/workspace/iris/iris/bi iris.bi -Q /github/workspace/iris/iris/proofmode iris.proofmode -Q /github/workspace/iris/iris/base_logic iris.base_logic -Q /github/workspace/iris/iris/program_logic iris.program_logic -Q /github/workspace/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/iris/iris_staging iris.staging -Q /github/workspace/iris/iris_deprecated iris.deprecated /github/workspace/iris/iris/prelude/prelude.v COQC iris/proofmode/ident_name.v MINIMIZER_DEBUG: /home/coq/.opam/4.05.0/bin/coqc: COQPATH= MINIMIZER_DEBUG: exec: /home/coq/.opam/4.05.0/bin/coqc.orig -q -w -notation-overridden -w -redundant-canonical-projection -Q /github/workspace/iris/iris/prelude iris.prelude -Q /github/workspace/iris/iris/algebra iris.algebra -Q /github/workspace/iris/iris/si_logic iris.si_logic -Q /github/workspace/iris/iris/bi iris.bi -Q /github/workspace/iris/iris/proofmode iris.proofmode -Q /github/workspace/iris/iris/base_logic iris.base_logic -Q /github/workspace/iris/iris/program_logic iris.program_logic -Q /github/workspace/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/iris/iris_staging iris.staging -Q /github/workspace/iris/iris_deprecated iris.deprecated /github/workspace/iris/iris/proofmode/ident_name.v COQC iris/algebra/ofe.v COQC iris/proofmode/base.v MINIMIZER_DEBUG: /home/coq/.opam/4.05.0/bin/coqc: COQPATH= MINIMIZER_DEBUG: exec: /home/coq/.opam/4.05.0/bin/coqc.orig -q -w -notation-overridden -w -redundant-canonical-projection -Q /github/workspace/iris/iris/prelude iris.prelude -Q /github/workspace/iris/iris/algebra iris.algebra -Q /github/workspace/iris/iris/si_logic iris.si_logic -Q /github/workspace/iris/iris/bi iris.bi -Q /github/workspace/iris/iris/proofmode iris.proofmode -Q /github/workspace/iris/iris/base_logic iris.base_logic -Q /github/workspace/iris/iris/program_logic iris.program_logic -Q /github/workspace/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/iris/iris_staging iris.staging -Q /github/workspace/iris/iris_deprecated iris.deprecated /github/workspace/iris/iris/algebra/ofe.v MINIMIZER_DEBUG: /home/coq/.opam/4.05.0/bin/coqc: COQPATH= MINIMIZER_DEBUG: exec: /home/coq/.opam/4.05.0/bin/coqc.orig -q -w -notation-overridden -w -redundant-canonical-projection -Q /github/workspace/iris/iris/prelude iris.prelude -Q /github/workspace/iris/iris/algebra iris.algebra -Q /github/workspace/iris/iris/si_logic iris.si_logic -Q /github/workspace/iris/iris/bi iris.bi -Q /github/workspace/iris/iris/proofmode iris.proofmode -Q /github/workspace/iris/iris/base ```
Minimization Log (truncated to 8.0KiB; full file on [GitHub Actions Artifacts](https://github.com/coq-community/run-coq-bug-minimizer/actions/runs/768986986) under `bug.log`) ``` Coq version: 8.13.2 (April 2021) compiled on Apr 3 2021 23:10:57 with OCaml 4.05.0 getting /github/workspace/iris/tests/one_shot.v First, I will attempt to factor out all of the [Require]s /github/workspace/iris/tests/one_shot.v, and store the result in /github/workspace/cwd/bug_01.v... /home/coq/.opam/4.05.0/bin/coq_makefile COQC = /home/coq/.opam/4.05.0/bin/coqc.orig -o Makefilekfykzehd.coq -Q /github/workspace/cwd Top -Q /github/workspace/iris/iris/prelude iris.prelude -Q /github/workspace/iris/iris/algebra iris.algebra -Q /github/workspace/iris/iris/si_logic iris.si_logic -Q /github/workspace/iris/iris/bi iris.bi -Q /github/workspace/iris/iris/proofmode iris.proofmode -Q /github/workspace/iris/iris/base_logic iris.base_logic -Q /github/workspace/iris/iris/program_logic iris.program_logic -Q /github/workspace/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/iris/iris_staging iris.staging -Q /github/workspace/iris/iris_deprecated iris.deprecated -Q /home/coq/.opam/4.05.0/lib/coq/user-contrib/Bignums Bignums -Q /home/coq/.opam/4.05.0/lib/coq/user-contrib/Ltac2 Ltac2 -Q /home/coq/.opam/4.05.0/lib/coq/user-contrib/stdpp stdpp -Q /github/workspace/cwd Top -Q /github/workspace/iris/iris/prelude iris.prelude -Q /github/workspace/iris/iris/algebra iris.algebra -Q /github/workspace/iris/iris/si_logic iris.si_logic -Q /github/workspace/iris/iris/bi iris.bi -Q /github/workspace/iris/iris/proofmode iris.proofmode -Q /github/workspace/iris/iris/base_logic iris.base_logic -Q /github/workspace/iris/iris/program_logic iris.program_logic -Q /github/workspace/iris/iris_heap_lang iris.heap_lang -Q /github/workspace/iris/iris_staging iris.staging -Q /github/workspace/iris/iris_deprecated iris.deprecated -Q /home/coq/.opam/4.05.0/lib/coq/user-contrib/Bignums Bignums -Q /home/coq/.opam/4.05.0/lib/coq/user-contrib/Ltac2 Ltac2 -Q /home/coq/.opam/4.05.0/lib/coq/user-contrib/stdpp stdpp -arg -q -arg -w -arg -notation-overridden -arg -w -arg -redundant-canonical-projection -arg -top -arg one_shot -arg -test-mode ../iris/tests/one_shot.v make -k -f Makefilekfykzehd.coq ../iris/tests/one_shot.glob getting ../iris/tests/one_shot.v getting ../iris/tests/one_shot.glob Now, I will attempt to coq the file, and find the error... Coqing the file (/github/workspace/cwd/bug_01.v)... Running command: "/home/coq/.opam/4.05.0/bin/coqc.orig" "-q" "-w" "-notation-overridden" "-w" "-redundant-canonical-projection" "-Q" "/github/workspace/cwd" "Top" "-Q" "/github/workspace/iris/iris/prelude" "iris.prelude" "-Q" "/github/workspace/iris/iris/algebra" "iris.algebra" "-Q" "/github/workspace/iris/iris/si_logic" "iris.si_logic" "-Q" "/github/workspace/iris/iris/bi" "iris.bi" "-Q" "/github/workspace/iris/iris/proofmode" "iris.proofmode" "-Q" "/github/workspace/iris/iris/base_logic" "iris.base_logic" "-Q" "/github/workspace/iris/iris/program_logic" "iris.program_logic" "-Q" "/github/workspace/iris/iris_heap_lang" "iris.heap_lang" "-Q" "/github/workspace/iris/iris_staging" "iris.staging" "-Q" "/github/workspace/iris/iris_deprecated" "iris.deprecated" "-Q" "/home/coq/.opam/4.05.0/lib/coq/user-contrib/Bignums" "Bignums" "-Q" "/home/coq/.opam/4.05.0/lib/coq/user-contrib/Ltac2" "Ltac2" "-Q" "/home/coq/.opam/4.05.0/lib/coq/user-contrib/stdpp" "stdpp" "-top" "one_shot" "-test-mode" "/tmp/tmpyib37h3b.v" "-q" The timeout has been set to: 9 This file produces the following output when Coq'ed: File "/tmp/tmpyib37h3b.v", line 219, characters 0-256: Error: Unable to satisfy the following constraints: UNDEFINED EVARS: ?X99==[Σ heapG0 one_shotG0 Φ f1 f2 |- Wp (iPropI Σ) expr (∀ x : val, ?T@{Φ:=Φ}) stuckness] (parameter Wp of @wp) {?Wp} ?X108==[Σ heapG0 one_shotG0 Φ f1 f2 g |- Wp (iPropI Σ) ?T@{Φ:=Φ; x:=#()} ?VAL@{Φ:=Φ} stuckness] (parameter Wp of @wp) {?Wp0} ?X110==[Σ heapG0 one_shotG0 Φ f1 f2 g |- Top coPset] (parameter Top of @top) {?Top} TYPECLASSES:?X99 ?X108 ?X110 SHELF: FUTURE GOALS STACK:?X125 ?X124 ?X123 ?X122 ?X121 ?X120 ?X119 ?X118 ?X114 ?X112 ?X111 ?X110 ?X109 ?X108 ?X107 ?X106 ?X104 ?X102 ?X101 ?X100 ?X99 ?X98 ?X97 ?X96 ?X95 ?X92 ?X90 ?X86 ?X85 ?X84 ?X83 ?X82 ?X81 ?X80 ?X79 ?X77 ?X74 ?X73 ?X72 ?X71 ?X70 ?X69 I think the error is 'Error: Unable to satisfy the following constraints: UNDEFINED EVARS: ?X99==[Σ heapG0 one_shotG0 Φ f1 f2 |- Wp (iPropI Σ) expr (∀ x : val, ?T@{Φ:=Φ}) stuckness] (parameter Wp of @wp) {?Wp} ?X108==[Σ heapG0 one_shotG0 Φ f1 f2 g |- Wp (iPropI Σ) ?T@{Φ:=Φ; x:=#()} ?VAL@{Φ:=Φ} stuckness] (parameter Wp of @wp) {?Wp0} ?X110==[Σ heapG0 one_shotG0 Φ f1 f2 g |- Top coPset] (parameter Top of @top) {?Top} TYPECLASSES:?X99 ?X108 ?X110 SHELF: FUTURE GOALS STACK:?X125 ?X124 ?X123 ?X122 ?X121 ?X120 ?X119 ?X118 ?X114 ?X112 ?X111 ?X110 ?X109 ?X108 ?X107 ?X106 ?X104 ?X102 ?X101 ?X100 ?X99 ?X98 ?X97 ?X96 ?X95 ?X92 ?X90 ?X86 ?X85 ?X84 ?X83 ?X82 ?X81 ?X80 ?X79 ?X77 ?X74 ?X73 ?X72 ?X71 ?X70 ?X69 '. The corresponding regular expression is 'File "[^"]+", line ([0-9]+), characters [0-9-]+:\n(Error:\s+Unable\s+to\s+satisfy\s+the\s+following\s+constraints:\sUNDEFINED\s+EVARS:\s+\?X[\d]+==\[Σ\s+heapG[\d]+\s+one_shotG[\d]+\s+Φ\s+f[\d]+\s+f[\d]+\s+\|\-\s+Wp\s+\(iPropI\s+Σ\)\s+expr\s+\(∀\s+x\s+:\s+val,\s+\?T@\{Φ:=Φ\}\)\s+stuckness\]\s+\(parameter\s+Wp\s+of\s+@wp\)\s+\{\?Wp\}\s+\?X[\d]+==\[Σ\s+heapG[\d]+\s+one_shotG[\d]+\s+Φ\s+f[\d]+\s+f[\d]+\s+g\s+\|\-\s+Wp\s+\(iPropI\s+Σ\)\s+\?T@\{Φ:=Φ;\s+x:=\#\(\)\}\s+\?VAL@\{Φ:=Φ\}\s+stuckness\]\s+\(parameter\s+Wp\s+of\s+@wp\)\s+\{\?Wp[\d]+\}\s+\?X[\d]+==\[Σ\s+heapG[\d]+\s+one_shotG[\d]+\s+Φ\s+f[\d]+\s+f[\d]+\s+g\s+\|\-\s+Top\s+coPset\]\s+\(parameter\s+Top\s+of\s+@top\)\s+\{\?Top\}\sTYPECLASSES:\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\sSHELF:\sFUTURE\s+GOALS\s+STACK:\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+\s+\?X[\d]+)'. Sanity check passed. Now, I will attempt to strip repeated newlines and trailing spaces from this file... No strippable newlines or spaces. Now, I will attempt to strip the comments from this file... Succeeded in stripping comments. In order to efficiently manipulate the file, I have to break it into statements. I will attempt to do this by matching on periods. Splitting successful. I will now attempt to remove any lines after the line which generates the error. Trimming successful. We removed all lines after 224; the error was on line 220. In order to efficiently manipulate the file, I have to break it into definitions. I will now attempt to do this. Sending statements to coqtop... Done. Splitting to definitions... Splitting to definitions successful. I will now attempt to remove goals ending in [Abort.] Aborted removal successful. I will now attempt to remove unused Ltacs Ltac removal successful. I will now attempt to remove unused definitions Definition removal successful. I will now attempt to remove unused non-instance, non-canonical structure definitions Non-instance definition removal successful. I will now attempt to remove unused variables Variable removal successful. I will now attempt to remove unused contexts Context removal successful. I will now attempt to replace Qeds with Admitteds Admitting Qeds successful. Success! I will now attempt to remove goals ending in [Abort.] Aborted removal successful. I will now attempt to remove unused Ltacs Ltac removal successful. I will now attempt to remove unused definitions Definition removal successful. I will now attempt to remove unused non-instance, non-canonical structure definitions Non-instance definition removal successful. I will now attempt to remove unused variables Variable removal successful. I will now attempt to remove unused contexts Context removal successful. I will now attempt to admit [abstract ```

If you have any comments on your experience of the minimizer, please share them in a reply (possibly tagging @JasonGross). If you believe there's a bug in the bug minimizer, please report it on the bug minimizer issue tracker.