Commit 3bdeb62f authored by Robbert Krebbers's avatar Robbert Krebbers
Browse files

Shorten a lemma.

parent 7047a278
...@@ -320,25 +320,18 @@ Section list2. ...@@ -320,25 +320,18 @@ Section list2.
(* Some lemmas depend on the generalized versions of the above ones. *) (* Some lemmas depend on the generalized versions of the above ones. *)
Lemma big_sepL_zip_with {B C} Φ f (l1 : list B) (l2 : list C) : Lemma big_sepL_zip_with {B C} Φ f (l1 : list B) (l2 : list C) :
([ list] kx zip_with f l1 l2, Φ k x) ([ list] kx l1, y, l2 !! k = Some y Φ k (f x y)). ([ list] kx zip_with f l1 l2, Φ k x)
([ list] kx l1, y, l2 !! k = Some y Φ k (f x y)).
Proof. Proof.
revert Φ l2; induction l1; intros Φ l2; first by rewrite /= big_sepL_nil. revert Φ l2; induction l1 as [|x l1 IH]=> Φ [|y l2]//=.
destruct l2; simpl. - rewrite big_sepL_nil. apply (anti_symm _), True_intro.
{ rewrite big_sepL_nil. apply (anti_symm _); last exact: True_intro. trans ([ list] __ x :: l1, True : uPred M)%I.
(* TODO: Can this be done simpler? *) + rewrite big_sepL_forall. auto using forall_intro, impl_intro_l, True_intro.
rewrite -(big_sepL_mono (λ _ _, True%I)). + apply big_sepL_mono=> k y _. apply forall_intro=> z.
- rewrite big_sepL_forall. apply forall_intro=>k. apply forall_intro=>b. by apply impl_intro_l, pure_elim_l.
apply impl_intro_r. apply True_intro. - rewrite !big_sepL_cons IH. apply sep_proper=> //. apply (anti_symm _).
- intros k b _. apply forall_intro=>c. apply impl_intro_l. rewrite right_id. + apply forall_intro=>z /=. by apply impl_intro_r, pure_elim_r=>-[->].
apply pure_elim'. done. + rewrite (forall_elim y) /=. by eapply impl_elim, pure_intro.
}
rewrite !big_sepL_cons. apply sep_proper; last exact: IHl1.
apply (anti_symm _).
- apply forall_intro=>c'. simpl. apply impl_intro_r.
eapply pure_elim; first exact: and_elim_r. intros [=->].
apply and_elim_l.
- rewrite (forall_elim c). simpl. eapply impl_elim; first done.
apply pure_intro. done.
Qed. Qed.
End list2. End list2.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment