@@ -81,8 +81,8 @@ Ltac specialize_Σ wfΣ :=
8181Section fix_sigma.
8282
8383 Context {cf : checker_flags} {nor : normalizing_flags}.
84- Context (X_type : abstract_env_ext_impl ).
85- Context (X : X_type.π1).
84+ Context (X_type : abstract_env_impl ).
85+ Context (X : X_type.π2. π1).
8686
8787 Local Definition heΣ Σ (wfΣ : abstract_env_ext_rel X Σ) :
8888 ∥ wf_ext Σ ∥ := abstract_env_ext_wf _ wfΣ.
356356
357357Section Erase.
358358 Context {nor : normalizing_flags}.
359- Context (X_type : abstract_env_ext_impl (cf := extraction_checker_flags)).
360- Context (X : X_type.π1).
359+ Context (X_type : abstract_env_impl (cf := extraction_checker_flags)).
360+ Context (X : X_type.π2. π1).
361361
362362 (* Ltac sq' :=
363363 repeat match goal with
@@ -718,8 +718,8 @@ Definition erase_mutual_inductive_body (mib : mutual_inductive_body) : E.mutual_
718718 E.ind_npars := mib.(ind_npars);
719719 E.ind_bodies := bodies; |}.
720720
721- Lemma is_arity_irrel {X_type : abstract_env_ext_impl } {X : X_type.π1}
722- {X_type' : abstract_env_ext_impl } {X' : X_type'.π1} {Γ h h' t wt wt'} :
721+ Lemma is_arity_irrel {X_type : abstract_env_impl } {X : X_type.π2 .π1}
722+ {X_type' : abstract_env_impl } {X' : X_type'.π2 .π1} {Γ h h' t wt wt'} :
723723 Hlookup X_type X X_type' X' ->
724724 is_arity X_type X Γ h t wt = is_arity X_type' X' Γ h' t wt'.
725725Proof .
@@ -885,7 +885,7 @@ Program Fixpoint erase_global_decls {X_type : abstract_env_impl} (deps : Kername
885885 let X' := abstract_pop_decls X in
886886 if KernameSet.mem kn deps then
887887 let Xext := abstract_make_wf_env_ext X' (cst_universes cb) _ in
888- let cb' := erase_constant_body X_type.π2.π1 Xext cb _ in
888+ let cb' := erase_constant_body X_type Xext cb _ in
889889 let deps := KernameSet.union deps (snd cb') in
890890 let X'' := erase_global_decls deps X' decls _ in
891891 ((kn, E.ConstantDecl (fst cb')) :: X'')
@@ -1556,7 +1556,7 @@ Lemma erase_correct (wfl := Ee.default_wcbv_flags) X_type (X : X_type.π1)
15561556 univs wfext t v Σ' t' deps decls prf :
15571557 let Xext := abstract_make_wf_env_ext X univs wfext in
15581558 forall wt : forall Σ, Σ ∼_ext Xext -> welltyped Σ [] t,
1559- erase X_type.π2.π1 Xext [] t wt = t' ->
1559+ erase X_type Xext [] t wt = t' ->
15601560 KernameSet.subset (term_global_deps t') deps ->
15611561 erase_global_decls deps X decls prf = Σ' ->
15621562 (forall Σ : global_env, abstract_env_rel X Σ -> Σ |-p t ▷ v) ->
@@ -1630,7 +1630,7 @@ Proof.
16301630 - eapply leq_term_sprop_sorted_l; eauto.
16311631Qed .
16321632
1633- Fixpoint map_erase X_type (X : X_type.π1) Γ
1633+ Fixpoint map_erase ( X_type:abstract_env_impl) (X : X_type.π2 .π1) Γ
16341634 (ts : list term)
16351635 (H2 : forall Σ : global_env_ext, abstract_env_ext_rel X Σ ->
16361636 Forall (welltyped Σ Γ) ts) {struct ts}: list E.term.
@@ -1828,7 +1828,7 @@ Lemma erases_deps_erase (cf := config.extraction_checker_flags)
18281828 (wfΣ : forall Σ, (abstract_env_rel X Σ) -> ∥ wf_ext (Σ, univs) ∥) decls prf
18291829 (X' := abstract_make_wf_env_ext X univs wfΣ) Γ t
18301830 (wt : forall Σ : global_env_ext, abstract_env_ext_rel X' Σ -> welltyped Σ Γ t) :
1831- let et := erase X_type.π2.π1 X' Γ t wt in
1831+ let et := erase X_type X' Γ t wt in
18321832 let deps := EAstUtils.term_global_deps et in
18331833 forall Σ, (abstract_env_rel X Σ) ->
18341834 erases_deps Σ (erase_global_decls X_type deps X decls prf) et.
@@ -1856,7 +1856,7 @@ Lemma erases_deps_erase_weaken (cf := config.extraction_checker_flags)
18561856 (X' := abstract_make_wf_env_ext X univs wfΣ) Γ t
18571857 (wt : forall Σ : global_env_ext, abstract_env_ext_rel X' Σ -> welltyped Σ Γ t)
18581858 deps :
1859- let et := erase X_type.π2.π1 X' Γ t wt in
1859+ let et := erase X_type X' Γ t wt in
18601860 let tdeps := EAstUtils.term_global_deps et in
18611861 forall Σ, (abstract_env_rel X Σ) ->
18621862 erases_deps Σ (erase_global_decls X_type (KernameSet.union deps tdeps) X decls prf) et.
@@ -1990,7 +1990,7 @@ Qed.
19901990
19911991Lemma erase_wf_fixpoints (efl := all_env_flags) {X_type X} univs wfΣ {Γ t} wt
19921992 (X' := abstract_make_wf_env_ext X univs wfΣ) :
1993- let t' := erase X_type.π2.π1 X' Γ t wt in
1993+ let t' := erase X_type X' Γ t wt in
19941994 wf_fixpoints t'.
19951995Proof .
19961996 cbn. pose proof (abstract_env_ext_exists X') as [[Σ' wf']].
@@ -2004,7 +2004,7 @@ Qed.
20042004
20052005Lemma erase_wellformed (efl := all_env_flags) {X_type X} decls prf univs wfΣ {Γ t} wt
20062006(X' := abstract_make_wf_env_ext X univs wfΣ) :
2007- let t' := erase X_type.π2.π1 X' Γ t wt in
2007+ let t' := erase X_type X' Γ t wt in
20082008wellformed (erase_global_decls X_type (term_global_deps t') X decls prf) #|Γ| t'.
20092009Proof .
20102010 set (t' := erase _ _ _ _ _). cbn.
@@ -2024,7 +2024,7 @@ Qed.
20242024
20252025Lemma erase_wellformed_weaken (efl := all_env_flags) {X_type X} decls prf univs wfΣ {Γ t} wt
20262026(X' := abstract_make_wf_env_ext X univs wfΣ) deps:
2027- let t' := erase X_type.π2.π1 X' Γ t wt in
2027+ let t' := erase X_type X' Γ t wt in
20282028 wellformed (erase_global_decls X_type (KernameSet.union deps (term_global_deps t')) X decls prf) #|Γ| t'.
20292029Proof .
20302030 set (t' := erase _ _ _ _ _). cbn.
@@ -2046,22 +2046,22 @@ Qed.
20462046Lemma erase_constant_body_correct'' {X_type X} {cb} {decls prf} {univs wfΣ}
20472047(X' := abstract_make_wf_env_ext X univs wfΣ)
20482048{onc : forall Σ' : global_env_ext, abstract_env_ext_rel X' Σ' -> ∥ on_constant_decl (lift_typing typing) Σ' cb ∥} {body} deps :
2049- EAst.cst_body (fst (erase_constant_body X_type.π2.π1 X' cb onc)) = Some body ->
2049+ EAst.cst_body (fst (erase_constant_body X_type X' cb onc)) = Some body ->
20502050 forall Σ' : global_env_ext, abstract_env_ext_rel X' Σ' ->
20512051 ∥ ∑ t T, (Σ' ;;; [] |- t : T) * (Σ' ;;; [] |- t ⇝ℇ body) *
2052- (term_global_deps body = snd (erase_constant_body X_type.π2.π1 X' cb onc)) *
2052+ (term_global_deps body = snd (erase_constant_body X_type X' cb onc)) *
20532053 wellformed (efl:=all_env_flags) (erase_global_decls X_type (KernameSet.union deps (term_global_deps body)) X decls prf) 0 body ∥.
20542054Proof .
20552055 intros ? Σ' wfΣ'. pose proof (abstract_env_exists X) as [[Σ wf]].
20562056 destruct cb as [name [bod|] udecl]; simpl.
20572057 simpl in H. noconf H.
2058- set (obl :=(erase_constant_body_obligation_1 ( X_type.π2).π1 X'
2058+ set (obl :=(erase_constant_body_obligation_1 X_type X'
20592059 {|
20602060 cst_type := name;
20612061 cst_body := Some bod;
20622062 cst_universes := udecl |} onc bod eq_refl)). clearbody obl.
20632063 destruct (obl _ wfΣ'). sq.
2064- have er : (Σ, univs);;; [] |- bod ⇝ℇ erase X_type.π2.π1 X' [] bod obl.
2064+ have er : (Σ, univs);;; [] |- bod ⇝ℇ erase X_type X' [] bod obl.
20652065 { eapply (erases_erase (X:=X')).
20662066 now rewrite <- (abstract_make_wf_env_ext_correct X univs wfΣ _ _ wf wfΣ').
20672067 }
@@ -2074,7 +2074,7 @@ Qed.
20742074Lemma erase_global_cst_decl_wf_glob X_type X deps decls heq :
20752075 forall cb wfΣ hcb,
20762076 let X' := abstract_make_wf_env_ext X (cst_universes cb) wfΣ in
2077- let ecb := erase_constant_body X_type.π2.π1 X' cb hcb in
2077+ let ecb := erase_constant_body X_type X' cb hcb in
20782078 let Σ' := erase_global_decls X_type (KernameSet.union deps ecb.2) X decls heq in
20792079 (@wf_global_decl all_env_flags Σ' (EAst.ConstantDecl ecb.1) : Prop).
20802080Proof .
@@ -2218,7 +2218,7 @@ Lemma expanded_erase (cf := config.extraction_checker_flags)
22182218 {X_type X decls prf} univs wfΣ t wtp :
22192219 forall Σ : global_env, abstract_env_rel X Σ -> PCUICEtaExpand.expanded Σ [] t ->
22202220 let X' := abstract_make_wf_env_ext X univs wfΣ in
2221- let et := (erase X_type.π2.π1 X' [] t wtp) in
2221+ let et := (erase X_type X' [] t wtp) in
22222222 let deps := EAstUtils.term_global_deps et in
22232223 expanded (erase_global_decls X_type deps X decls prf) [] et.
22242224Proof .
@@ -2282,7 +2282,7 @@ Lemma erase_eval_to_box (wfl := Ee.default_wcbv_flags)
22822282 {X_type X} {univs wfext t v Σ' t' deps decls prf} :
22832283 let Xext := abstract_make_wf_env_ext X univs wfext in
22842284 forall wt : forall Σ : global_env_ext, abstract_env_ext_rel Xext Σ -> welltyped Σ [] t,
2285- erase X_type.π2.π1 Xext [] t wt = t' ->
2285+ erase X_type Xext [] t wt = t' ->
22862286 KernameSet.subset (term_global_deps t') deps ->
22872287 erase_global_decls X_type deps X decls prf = Σ' ->
22882288 forall Σext : global_env_ext, abstract_env_ext_rel Xext Σext ->
@@ -2306,7 +2306,7 @@ Lemma erase_eval_to_box_eager (wfl := Ee.default_wcbv_flags)
23062306{X_type X} {univs wfext t v Σ' t' deps decls prf} :
23072307 let Xext := abstract_make_wf_env_ext X univs wfext in
23082308 forall wt : forall Σ : global_env_ext, abstract_env_ext_rel Xext Σ -> welltyped Σ [] t,
2309- erase X_type.π2.π1 Xext [] t wt = t' ->
2309+ erase X_type Xext [] t wt = t' ->
23102310 KernameSet.subset (term_global_deps t') deps ->
23112311 erase_global_decls X_type deps X decls prf = Σ' ->
23122312 forall Σext : global_env_ext, abstract_env_ext_rel Xext Σext ->
@@ -2318,12 +2318,12 @@ Proof.
23182318 intros.
23192319 destruct (erase_eval_to_box wt H H0 H1 _ H2 X0 H3).
23202320 subst t'.
2321- destruct (inspect_bool (is_erasableb X_type.π2.π1 Xext [] t wt)) eqn:heq.
2321+ destruct (inspect_bool (is_erasableb X_type Xext [] t wt)) eqn:heq.
23222322 - simp erase. rewrite heq.
23232323 simp erase => //.
23242324 - elimtype False.
23252325 pose proof (abstract_env_exists X) as [[? wf]].
2326- destruct (@is_erasableP X_type.π2.π1 Xext [] t wt) => //. apply n.
2326+ destruct (@is_erasableP X_type Xext [] t wt) => //. apply n.
23272327 intros. sq. now rewrite (abstract_env_ext_irr _ H H2).
23282328Qed .
23292329
@@ -2348,7 +2348,7 @@ Lemma firstorder_erases_deterministic X_type (X : X_type.π1)
23482348 PCUICEnvironment.lookup_env Σ (i.(inductive_mind)) = Some (InductiveDecl mind) ->
23492349 @firstorder_ind Σ (firstorder_env Σ) i ->
23502350 erases Σ [] t t' ->
2351- t' = erase X_type.π2.π1 Xext [] t wt.
2351+ t' = erase X_type Xext [] t wt.
23522352Proof .
23532353 (* pose proof (referenced_impl_ext_wf (@wf_env_ext_referenced extraction_checker_flags Σ)) as Hext. *)
23542354 (* rename X into Hext. *)
@@ -2371,7 +2371,7 @@ Proof.
23712371 red in H1, Herasable. unfold PCUICAst.lookup_inductive, PCUICAst.lookup_minductive, isPropositionalArity in *.
23722372 edestruct PCUICEnvironment.lookup_env as [ [] | ], nth_error, destArity as [[] | ]; auto; try congruence.
23732373 + inv H2.
2374- * cbn. unfold erase_clause_1. destruct (inspect_bool (is_erasableb ( X_type.π2).π1 Xext [] (tConstruct i n ui) Hyp0)).
2374+ * cbn. unfold erase_clause_1. destruct (inspect_bool (is_erasableb X_type Xext [] (tConstruct i n ui) Hyp0)).
23752375 -- exfalso. sq. destruct (@is_erasableP _ _ [] (tConstruct i n ui) Hyp0) => //.
23762376 specialize_Σ Hrel. sq.
23772377 eapply (isErasable_Propositional (args := [])) in s; eauto.
@@ -2411,12 +2411,12 @@ forall Σ, abstract_env_ext_rel Xext Σ ->
24112411 Σ ;;; [] |- t : mkApps (tInd i u) args ->
24122412 PCUICEnvironment.lookup_env Σ (i.(inductive_mind)) = Some (InductiveDecl mind) ->
24132413 @firstorder_ind Σ (firstorder_env Σ) i ->
2414- erase X_type.π2.π1 Xext [] t wt = t' ->
2414+ erase X_type Xext [] t wt = t' ->
24152415 KernameSet.subset (term_global_deps t') deps ->
24162416 erase_global_decls X_type deps X decls prf = Σ' ->
24172417 red Σ [] t v ->
24182418 (forall v', red1 Σ [] v v' -> False) ->
2419- forall wt', ∥ Σ' ⊢ t' ▷ erase X_type.π2.π1 Xext [] v wt' ∥.
2419+ forall wt', ∥ Σ' ⊢ t' ▷ erase X_type Xext [] v wt' ∥.
24202420Proof .
24212421 intros Xext wt Σ Hrel Hax Hty Hdecl Hfo <- Hsub <- Hred Hirred wt'.
24222422 pose proof (heΣ _ _ _ Hrel) as [Hwf]. eapply wcbv_standardization in Hty as Hty_; eauto. destruct Hty_ as [Heval].
@@ -2438,12 +2438,12 @@ forall Σ, abstract_env_ext_rel Xext Σ ->
24382438 Σ ;;; [] |- t : mkApps (tInd i u) args ->
24392439 PCUICEnvironment.lookup_env Σ (i.(inductive_mind)) = Some (InductiveDecl mind) ->
24402440 @firstorder_ind Σ (firstorder_env Σ) i ->
2441- erase X_type.π2.π1 Xext [] t wt = t' ->
2441+ erase X_type Xext [] t wt = t' ->
24422442 KernameSet.subset (term_global_deps t') deps ->
24432443 erase_global_decls X_type deps X decls prf = Σ' ->
24442444 red Σ [] t v ->
24452445 (forall v', red1 Σ [] v v' -> False) ->
2446- exists wt', ∥ Σ' ⊢ t' ▷ erase X_type.π2.π1 Xext [] v wt' ∥.
2446+ exists wt', ∥ Σ' ⊢ t' ▷ erase X_type Xext [] v wt' ∥.
24472447Proof .
24482448 intros Xext wt Σ Hrel Hax Hty Hdecl Hfo <- Hsub <- Hred Hirred.
24492449 unshelve eexists.
@@ -2508,7 +2508,7 @@ Program Fixpoint erase_global_decls_fast (deps : KernameSet.t)
25082508 | (kn, ConstantDecl cb) :: decls =>
25092509 if KernameSet.mem kn deps then
25102510 let Xext' := abstract_make_wf_env_ext X (cst_universes cb) _ in
2511- let cb' := erase_constant_body X_type.π2.π1 Xext' cb _ in
2511+ let cb' := erase_constant_body X_type Xext' cb _ in
25122512 let deps := KernameSet.union deps (snd cb') in
25132513 let Σ' := erase_global_decls_fast deps X_type X decls _ in
25142514 ((kn, E.ConstantDecl (fst cb')) :: Σ')
@@ -2621,19 +2621,19 @@ Proof.
26212621 now eapply extends_decls_extends.
26222622Qed .
26232623
2624- Definition reduce_stack_eq {cf} {fl} {X_type : abstract_env_ext_impl } {X : X_type.π1} Γ t π wi : reduce_stack fl X_type X Γ t π wi = ` (reduce_stack_full fl X_type X Γ t π wi).
2624+ Definition reduce_stack_eq {cf} {fl} {X_type : abstract_env_impl } {X : X_type.π2 .π1} Γ t π wi : reduce_stack fl X_type X Γ t π wi = ` (reduce_stack_full fl X_type X Γ t π wi).
26252625Proof .
26262626 unfold reduce_stack. destruct reduce_stack_full => //.
26272627Qed .
26282628
26292629Definition same_principal_type {cf}
2630- {X_type : abstract_env_ext_impl } {X : X_type.π1}
2631- {X_type' : abstract_env_ext_impl } {X' : X_type'.π1}
2630+ {X_type : abstract_env_impl } {X : X_type.π2 .π1}
2631+ {X_type' : abstract_env_impl } {X' : X_type'.π2 .π1}
26322632 {Γ : context} {t} (p : PCUICSafeRetyping.principal_type X_type X Γ t) (p' : PCUICSafeRetyping.principal_type X_type' X' Γ t) :=
26332633 p.π1 = p'.π1.
26342634
2635- Definition Hlookup {cf} (X_type : abstract_env_ext_impl ) (X : X_type.π1)
2636- (X_type' : abstract_env_ext_impl ) (X' : X_type'.π1) :=
2635+ Definition Hlookup {cf} (X_type : abstract_env_impl ) (X : X_type.π2 .π1)
2636+ (X_type' : abstract_env_impl ) (X' : X_type'.π2 .π1) :=
26372637 forall Σ : global_env_ext, abstract_env_ext_rel X Σ ->
26382638 forall Σ' : global_env_ext, abstract_env_ext_rel X' Σ' ->
26392639 forall kn decl decl',
@@ -2767,7 +2767,7 @@ Lemma expanded_erase_fast (cf := config.extraction_checker_flags)
27672767 forall Σ : global_env, abstract_env_rel X Σ ->
27682768 PCUICEtaExpand.expanded Σ [] t ->
27692769 let X' := abstract_make_wf_env_ext X univs wfΣ in
2770- let et := (erase X_type.π2.π1 X' [] t wtp) in
2770+ let et := (erase X_type X' [] t wtp) in
27712771 let deps := EAstUtils.term_global_deps et in
27722772 expanded (erase_global_fast X_type deps X decls prf) [] et.
27732773Proof .
@@ -2790,7 +2790,7 @@ Qed.
27902790Lemma erase_wellformed_fast (efl := all_env_flags)
27912791 {X_type X decls prf} univs wfΣ {Γ t} wt
27922792 (X' := abstract_make_wf_env_ext X univs wfΣ) :
2793- let t' := erase X_type.π2.π1 X' Γ t wt in
2793+ let t' := erase X_type X' Γ t wt in
27942794 wellformed (erase_global_fast X_type (term_global_deps t') X decls prf) #|Γ| t'.
27952795Proof .
27962796 intros.
0 commit comments