@@ -1340,6 +1340,7 @@ Proof.
13401340 let X0 := match goal with H : All _ _ -> _ -> _ |- _ => H end in
13411341 eapply X0. eapply wf_add_multiple; eauto.
13421342 len. eapply All2_length in f4. lia.
1343+ let H := match goal with H : All (fun x => is_true (_ && _ && _)) _ |- _ => H end in
13431344 eapply All_nth_error in H. 2: eauto. rtoProp.
13441345 solve_all.
13451346 rewrite map_fst_add_multiple. len.
@@ -1349,15 +1350,18 @@ Proof.
13491350 | nNamed na => [na]
13501351 end) br.1) as -> by eauto.
13511352 clear - f4. induction f4; cbn; f_equal; destruct r, x; cbn; congruence.
1352- - do 2 forward X; eauto. invs X.
1353+ - let X := match goal with H : All _ _ -> _ -> wf (vRecClos _ _ _) |- _ => H end in
1354+ do 2 forward X; eauto; invs X.
1355+ let X0 := match goal with H : All _ (add _ _ _) -> _ -> wf _ |- _ => H end in
13531356 eapply X0.
13541357 + econstructor; cbn; eauto.
13551358 eapply wf_add_multiple; eauto.
13561359 now rewrite map_length fix_env_length.
13571360 eapply wf_fix_env; eauto.
1358- + eapply All_nth_error in X2; eauto. cbn in X2. rtoProp.
1359- rewrite map_fst_add_multiple. now rewrite map_length fix_env_length.
1360- eauto.
1361+ + let X2 := multimatch goal with H : All _ _ |- _ => H end in
1362+ eapply All_nth_error in X2; eauto; cbn in X2; rtoProp;
1363+ rewrite map_fst_add_multiple; first [ now rewrite map_length fix_env_length
1364+ | eauto ].
13611365 - assert (map fst (MCList.map2 (λ (n : ident) (d0 : def term), (n, EAst.dbody d0)) nms mfix) = nms) as EE. {
13621366 clear - f6. induction f6; cbn; f_equal; eauto. }
13631367 econstructor.
@@ -1404,9 +1408,10 @@ Proof.
14041408 destruct r as [[? []]].
14051409 destruct x; cbn in *; subst; eauto.
14061410 + eauto.
1407- - eapply X; eauto. eapply declared_constant_Forall in isdecl.
1411+ - let X := match goal with H : All _ _ -> _ -> wf _ |- _ => H end in
1412+ eapply X; eauto. eapply declared_constant_Forall in isdecl.
14081413 2: eapply Forall_impl. 2: eauto.
1409- 2: { cbn. intros [] ?. cbn in *. exact H. }
1414+ 2: { cbn. intros [] ?. cbn in *. let H := match goal with H : match _ with ConstantDecl _ => _ | _ => _ end |- _ => H end in exact H. }
14101415 cbn in *. destruct decl; cbn in *.
14111416 subst. eauto.
14121417 - solve_all. econstructor.
0 commit comments