@@ -771,40 +771,41 @@ Proof.
771771 + rewrite semax_prog.make_tycontext_g_G_None in Heqq by trivial.
772772 rewrite semax_prog.make_tycontext_g_G_None; trivial.
773773 apply find_id_None_iff. apply find_id_None_iff in Heqw. intros N; apply Heqw.
774- rewrite map_app in *. rewrite HI1 in N. trivial. }
775- eapply Build_Component; subst; try solve [apply c].
774+ rewrite map_app in *. rewrite HI1 in N. trivial. }
775+ (* after Rocq 9.2, "apply c" automatically tries "apply (Comp_MkInitPred c)"
776+ (before 9.2 it is supposed to try it but is bugged, cf rocq-prover/rocq#21036) *)
777+ eapply Build_Component; subst; try solve [apply c | apply (Comp_MkInitPred c)].
776778+ rewrite HI1; apply c.
777779+ rewrite map_app, HI1, <- map_app; apply c.
778780+ intros. specialize (Comp_G_justified c i _ _ H H0); intros. destruct fd.
779781 - eapply InternalInfo_subsumption. apply AUX2. apply AUX1. apply Comp_ctx_LNR. apply H1.
780782 - auto.
781- + apply (Comp_MkInitPred c).
782783Qed .
783784
784785(*Together with Lemma Comp_Exports_suboption, this lemma means we can abstract or hide exports *)
785786Lemma Comp_Exports_sub1 Exports' (HE1: map fst Exports' = map fst Exports)
786787 (HE2: Forall2 funspec_sub (map snd Exports) (map snd Exports')):
787788 @Component Espec V E Imports p Exports' GP G.
788789Proof .
789- eapply Build_Component; try apply c.
790+ (* after Rocq 9.2 the second apply is subsumed by the first, cf rocq-prover/rocq#21036 *)
791+ eapply Build_Component; try apply c; try apply (Comp_MkInitPred c).
790792+ rewrite HE1; apply c.
791793+ intros i phi Hi. rename phi into phi'.
792794 assert (X: exists phi, find_id i Exports = Some phi /\ funspec_sub phi phi').
793795 { clear - HE1 HE2 Hi. eapply find_funspec_sub; eassumption. }
794796 destruct X as [phi [Phi PHI]].
795797 destruct (Comp_G_Exports c _ _ Phi) as [psi [Psi PSI]].
796798 exists psi; split; [ trivial | eapply funspec_sub_trans; eassumption ].
797- + apply (Comp_MkInitPred c).
798799Qed .
799800
800801Lemma Comp_Exports_sub2 Exports' (LNR: list_norepet (map fst Exports'))
801802 (HE2: forall i, sub_option (find_id i Exports') (find_id i Exports)):
802803 @Component Espec V E Imports p Exports' GP G.
803804Proof .
804- eapply Build_Component; try apply c; trivial.
805+ (* after Rocq 9.2 the second apply is subsumed by the first, cf rocq-prover/rocq#21036 *)
806+ eapply Build_Component; try apply c; try apply (Comp_MkInitPred c); trivial.
805807+ intros i phi' Hi. specialize (HE2 i). rewrite Hi in HE2; simpl in HE2.
806808 apply c; trivial.
807- +apply (Comp_MkInitPred c).
808809Qed .
809810
810811Definition funspecs_sqsub Exp Exp' :=
@@ -874,11 +875,11 @@ Lemma Comp_Exports_sub Exports' (LNR: list_norepet (map fst Exports'))
874875 (HE2: funspecs_sqsub Exports Exports'):
875876 @Component Espec V E Imports p Exports' GP G.
876877Proof .
877- eapply Build_Component; try apply c; trivial.
878+ (* after Rocq 9.2 the second apply is subsumed by the first, cf rocq-prover/rocq#21036 *)
879+ eapply Build_Component; try apply c; try apply (Comp_MkInitPred c); trivial.
878880 intros i phi' Hi. destruct (HE2 _ _ Hi) as [phi [H1 H2]].
879881 apply (Comp_G_Exports c) in H1; destruct H1 as [psi [H3 H4]].
880882 exists psi; split; trivial. eapply funspec_sub_trans; eassumption.
881- apply (Comp_MkInitPred c).
882883Qed .
883884
884885End Component.
0 commit comments