Skip to content

Commit 267f0a5

Browse files
authored
Merge pull request #756 from MetaCoq/merge-abstract-env-structures
merge abstract env structures and prop into a single Class
2 parents 9bf9f6a + 9cbe179 commit 267f0a5

13 files changed

+164
-200
lines changed

erasure/theories/ETransform.v

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Program Definition erase_pcuic_program {guard : abstract_guard_impl} (p : pcuic_
2525
(wt : ∥ ∑ T, PCUICTyping.typing (H := config.extraction_checker_flags) p.1 [] p.2 T ∥) : eprogram_env :=
2626
let wfe := build_wf_env_from_env p.1.1 (map_squash (PCUICTyping.wf_ext_wf _) wfΣ) in
2727
let wfext := optim_make_wf_env_ext (guard:=guard) wfe p.1.2 _ in
28-
let t := ErasureFunction.erase (nor:=PCUICSN.extraction_normalizing) optimized_abstract_env_ext_impl wfext nil p.2
28+
let t := ErasureFunction.erase (nor:=PCUICSN.extraction_normalizing) optimized_abstract_env_impl wfext nil p.2
2929
(fun Σ wfΣ => let '(sq (T; ty)) := wt in PCUICTyping.iswelltyped ty) in
3030
let Σ' := ErasureFunction.erase_global_fast optimized_abstract_env_impl
3131
(EAstUtils.term_global_deps t) wfe (p.1.(PCUICAst.PCUICEnvironment.declarations)) _ in
@@ -39,7 +39,7 @@ Qed.
3939
Obligation Tactic := idtac.
4040

4141
Import Extract.
42-
42+
4343
Definition erase_program {guard : abstract_guard_impl} (p : pcuic_program)
4444
(wtp : ∥ wt_pcuic_program (cf:=config.extraction_checker_flags) p ∥) : eprogram_env :=
4545
erase_pcuic_program (guard := guard) p (map_squash fst wtp) (map_squash snd wtp).
@@ -52,8 +52,8 @@ Proof.
5252
intros [etaenv etat]. split;
5353
unfold erase_program, erase_pcuic_program; cbn.
5454
eapply ErasureFunction.expanded_erase_global_fast, etaenv; reflexivity.
55-
eapply (ErasureFunction.expanded_erase_fast (X_type:=optimized_abstract_env_impl)).
56-
reflexivity. eapply etat.
55+
apply: (ErasureFunction.expanded_erase_fast (X_type:=optimized_abstract_env_impl)).
56+
reflexivity. exact etat.
5757
Qed.
5858

5959
Lemma expanded_eprogram_env_expanded_eprogram_cstrs p :
@@ -83,7 +83,7 @@ Next Obligation.
8383
- unfold erase_program, erase_pcuic_program in e. simpl. cbn in e. injection e. intros <- <-.
8484
split.
8585
eapply ErasureFunction.erase_global_fast_wf_glob.
86-
eapply (ErasureFunction.erase_wellformed_fast (X_type:=optimized_abstract_env_impl)).
86+
apply: (ErasureFunction.erase_wellformed_fast (X_type:=optimized_abstract_env_impl)).
8787
- rewrite -e. cbn.
8888
now eapply expanded_erase_program.
8989
Qed.

erasure/theories/ErasureFunction.v

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,8 @@ Ltac specialize_Σ wfΣ :=
8181
Section 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Σ.
@@ -356,8 +356,8 @@ Qed.
356356

357357
Section 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'.
725725
Proof.
@@ -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.
16311631
Qed.
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

19911991
Lemma 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'.
19951995
Proof.
19961996
cbn. pose proof (abstract_env_ext_exists X') as [[Σ' wf']].
@@ -2004,7 +2004,7 @@ Qed.
20042004

20052005
Lemma 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
20082008
wellformed (erase_global_decls X_type (term_global_deps t') X decls prf) #|Γ| t'.
20092009
Proof.
20102010
set (t' := erase _ _ _ _ _). cbn.
@@ -2024,7 +2024,7 @@ Qed.
20242024

20252025
Lemma 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'.
20292029
Proof.
20302030
set (t' := erase _ _ _ _ _). cbn.
@@ -2046,22 +2046,22 @@ Qed.
20462046
Lemma 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 ∥.
20542054
Proof.
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.
20742074
Lemma 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).
20802080
Proof.
@@ -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.
22242224
Proof.
@@ -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).
23282328
Qed.
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.
23522352
Proof.
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' ∥.
24202420
Proof.
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' ∥.
24472447
Proof.
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.
26222622
Qed.
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).
26252625
Proof.
26262626
unfold reduce_stack. destruct reduce_stack_full => //.
26272627
Qed.
26282628

26292629
Definition 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.
27732773
Proof.
@@ -2790,7 +2790,7 @@ Qed.
27902790
Lemma 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'.
27952795
Proof.
27962796
intros.

safechecker/theories/PCUICConsistency.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -185,9 +185,9 @@ Proof.
185185
auto. }
186186
pose proof (iswelltyped typ_false) as wt.
187187
set (_Σ' := Build_referenced_impl_ext cf _ Σext (sq wf')). cbn in *.
188-
unshelve epose proof (hnf_sound (X_type := canonical_abstract_env_ext_impl) (X := _Σ') (Γ := []) (t := tApp t False_ty) Σext eq_refl) as [r].
188+
unshelve epose proof (hnf_sound (X_type := canonical_abstract_env_impl) (X := _Σ') (Γ := []) (t := tApp t False_ty) Σext eq_refl) as [r].
189189
1: cbn; intros; subst; exact wt.
190-
unshelve epose proof (hnf_complete (X_type := canonical_abstract_env_ext_impl) (X := _Σ') (Γ := []) (t := tApp t False_ty) Σext eq_refl) as [w].
190+
unshelve epose proof (hnf_complete (X_type := canonical_abstract_env_impl) (X := _Σ') (Γ := []) (t := tApp t False_ty) Σext eq_refl) as [w].
191191
1 : cbn; intros; subst; exact wt.
192192
eapply subject_reduction_closed in typ_false; eauto.
193193
eapply whnf_ind_finite with (indargs := []) in typ_false as ctor; auto.

0 commit comments

Comments
 (0)