Skip to content

Commit 12ae07c

Browse files
committed
Simplify evaluation relation
1 parent 1d30253 commit 12ae07c

File tree

3 files changed

+23
-23
lines changed

3 files changed

+23
-23
lines changed

erasure/theories/EWcbvEval.v

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -113,11 +113,10 @@ Section Wcbv.
113113
eval (tCase (ind, pars) discr brs) res
114114

115115
(** Fix unfolding, with guard *)
116-
| eval_fix f mfix idx argsv a av narg fn res :
116+
| eval_fix f mfix idx argsv a av fn res :
117117
eval f (mkApps (tFix mfix idx) argsv) ->
118118
eval a av ->
119-
cunfold_fix mfix idx = Some (narg, fn) ->
120-
narg <= #|argsv| ->
119+
cunfold_fix mfix idx = Some (#|argsv|, fn) ->
121120
eval (tApp (mkApps fn argsv) av) res ->
122121
eval (tApp f a) res
123122

@@ -540,22 +539,23 @@ Proof.
540539
noconf H1; noconf H2.
541540
subst.
542541
apply IHev2 in ev'2; subst.
543-
rewrite H3 in H.
542+
noconf H0.
543+
rewrite H2 in H.
544544
now noconf H.
545545
+ apply IHev1 in ev'1.
546546
apply mkApps_eq_inj in ev'1; try easy.
547547
depelim ev'1.
548548
noconf H1.
549549
noconf H2.
550550
apply IHev2 in ev'2.
551-
subst.
552-
rewrite H3 in H.
551+
subst. noconf H0.
552+
rewrite H2 in H.
553553
noconf H. lia.
554554
+ apply IHev1 in ev'1.
555555
subst.
556-
rewrite isFixApp_mkApps in H1 by easy.
556+
rewrite isFixApp_mkApps in H0 by easy.
557557
cbn in *.
558-
now rewrite orb_true_r in H1.
558+
now rewrite orb_true_r in H0.
559559
+ easy.
560560
- depelim ev'.
561561
+ apply IHev1 in ev'1; solve_discr.

erasure/theories/ErasureCorrectness.v

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -934,7 +934,7 @@ Proof.
934934
econstructor.
935935
eapply Is_type_eval. 4:eapply X. eauto. eauto.
936936
eapply eval_fix; eauto.
937-
rewrite /cunfold_fix e0 //.
937+
rewrite /cunfold_fix e0 //. congruence.
938938
+ eapply IHeval1 in He1 as IH1; eauto.
939939
destruct IH1 as (er_stuck_v & er_stuck & ev_stuck).
940940
eapply IHeval2 in He2 as IH2; eauto.
@@ -959,7 +959,8 @@ Proof.
959959
rewrite mkApps_nested. eapply value_final.
960960
eapply eval_to_value; eauto.
961961
eapply value_final, eval_to_value; eauto.
962-
rewrite /cunfold_fix e0 //. auto. auto. }
962+
rewrite /cunfold_fix e0 //. auto. auto.
963+
rewrite H3; eauto. auto. }
963964

964965
inv H2.
965966
* assert (Hmfix' := X).
@@ -976,7 +977,7 @@ Proof.
976977
-- cbn in e3. rename x5 into L.
977978
eapply (erases_mkApps _ _ _ _ (argsv ++ [av])) in H2; first last.
978979
{ eapply Forall2_app.
979-
- exact H3.
980+
- exact H4.
980981
- eauto. }
981982
rewrite <- mkApps_nested in H2.
982983
rewrite EAstUtils.mkApps_app in H2.
@@ -996,7 +997,7 @@ Proof.
996997
pose proof (eval_to_value _ _ _ e3) as vfix.
997998
eapply PCUICWcbvEval.stuck_fix_value_args in vfix; eauto.
998999
2:{ rewrite /cunfold_fix e0 //. }
999-
simpl in vfix. assert (rarg = #|argsv|) by lia.
1000+
simpl in vfix.
10001001
subst. unfold is_constructor.
10011002
rewrite nth_error_snoc. lia.
10021003
assert(Σ ;;; [] |- mkApps (tFix mfix idx) (argsv ++ [av]) : PCUICLiftSubst.subst [av] 0 x1).
@@ -1014,7 +1015,8 @@ Proof.
10141015
++ eauto.
10151016
++ eauto.
10161017
++ rewrite <- Ee.closed_unfold_fix_cunfold_eq.
1017-
{ unfold ETyping.unfold_fix. now rewrite e. }
1018+
{ unfold ETyping.unfold_fix. rewrite e -e2.
1019+
now rewrite (Forall2_length H4). }
10181020
eapply eval_closed in e3; eauto.
10191021
clear -e3 Hmfix'.
10201022
pose proof (All2_length _ _ Hmfix').
@@ -1034,8 +1036,7 @@ Proof.
10341036
now rewrite Nat.add_0_r in Hbod.
10351037
eauto with pcuic.
10361038
now eapply PCUICClosed.subject_closed in Ht.
1037-
++ apply Forall2_length in H3. rewrite <- e2. lia.
1038-
++ auto.
1039+
++ auto.
10391040

10401041
-- cbn. destruct p. destruct p.
10411042
eapply (erases_subst Σ [] (PCUICLiftSubst.fix_context mfix) [] dbody (fix_subst mfix)) in e3; cbn; eauto.
@@ -1045,10 +1046,10 @@ Proof.
10451046
++ eapply All2_from_nth_error.
10461047
erewrite fix_subst_length, ETyping.fix_subst_length, All2_length; eauto.
10471048
intros.
1048-
rewrite fix_subst_nth in H4. now rewrite fix_subst_length in H2.
1049+
rewrite fix_subst_nth in H3. now rewrite fix_subst_length in H2.
10491050
rewrite efix_subst_nth in H5. rewrite fix_subst_length in H2.
1050-
erewrite <- All2_length; eauto.
1051-
inv H5; inv H4.
1051+
erewrite <- All2_length; eauto.
1052+
inv H5; inv H3.
10521053
erewrite All2_length; eauto.
10531054
* eapply (Is_type_app _ _ _ (argsv ++ [av])) in X as []; tas.
10541055
-- exists EAst.tBox.
@@ -1058,7 +1059,7 @@ Proof.
10581059
rewrite -mkApps_nested.
10591060
eapply eval_fix; eauto.
10601061
1-2:eapply value_final, eval_to_value; eauto.
1061-
rewrite /cunfold_fix e0 //.
1062+
rewrite /cunfold_fix e0 //. congruence.
10621063
++ eapply Ee.eval_box; [|eauto].
10631064
apply eval_to_mkApps_tBox_inv in ev_stuck as ?; subst.
10641065
eauto.
@@ -1206,7 +1207,7 @@ Proof.
12061207
+ inv He.
12071208
* eexists. split; eauto. now econstructor.
12081209
* eexists. split. 2: now econstructor.
1209-
econstructor; eauto.
1210+
econstructor; eauto.
12101211
Qed.
12111212

12121213
Print Assumptions erases_correct.

pcuic/theories/PCUICWcbvEval.v

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -208,11 +208,10 @@ Section Wcbv.
208208
eval (tProj (i, pars, arg) discr) res
209209

210210
(** Fix unfolding, with guard *)
211-
| eval_fix f mfix idx argsv a av narg fn res :
211+
| eval_fix f mfix idx argsv a av fn res :
212212
eval f (mkApps (tFix mfix idx) argsv) ->
213213
eval a av ->
214-
cunfold_fix mfix idx = Some (narg, fn) ->
215-
narg <= #|argsv| ->
214+
cunfold_fix mfix idx = Some (#|argsv|, fn) ->
216215
eval (tApp (mkApps fn argsv) av) res ->
217216
eval (tApp f a) res
218217

0 commit comments

Comments
 (0)