Skip to content
Snippets Groups Projects
Commit 43048a39 authored by Robbert Krebbers's avatar Robbert Krebbers Committed by Jacques-Henri Jourdan
Browse files

Also add Affine instances for empty/nil big ops.

parent 40b233f2
No related branches found
No related tags found
No related merge requests found
...@@ -168,9 +168,14 @@ Section sep_list. ...@@ -168,9 +168,14 @@ Section sep_list.
TCForall Persistent Ps Persistent ([] Ps). TCForall Persistent Ps Persistent ([] Ps).
Proof. induction 1; simpl; apply _. Qed. Proof. induction 1; simpl; apply _. Qed.
Global Instance big_sepL_nil_affine Φ :
Affine ([ list] kx [], Φ k x).
Proof. simpl; apply _. Qed.
Global Instance big_sepL_affine Φ l : Global Instance big_sepL_affine Φ l :
( k x, Affine (Φ k x)) Affine ([ list] kx l, Φ k x). ( k x, Affine (Φ k x)) Affine ([ list] kx l, Φ k x).
Proof. revert Φ. induction l as [|x l IH]=> Φ ? /=; apply _. Qed. Proof. revert Φ. induction l as [|x l IH]=> Φ ? /=; apply _. Qed.
Global Instance big_sepL_affine_id Ps : TCForall Affine Ps Affine ([] Ps).
Proof. induction 1; simpl; apply _. Qed.
End sep_list. End sep_list.
Section sep_list2. Section sep_list2.
...@@ -434,11 +439,12 @@ Section gmap. ...@@ -434,11 +439,12 @@ Section gmap.
( k x, Persistent (Φ k x)) Persistent ([ map] kx m, Φ k x). ( k x, Persistent (Φ k x)) Persistent ([ map] kx m, Φ k x).
Proof. intros. apply big_sepL_persistent=> _ [??]; apply _. Qed. Proof. intros. apply big_sepL_persistent=> _ [??]; apply _. Qed.
Global Instance big_sepM_empty_affine Φ :
Affine ([ map] kx , Φ k x).
Proof. rewrite /big_opM map_to_list_empty. apply _. Qed.
Global Instance big_sepM_affine Φ m : Global Instance big_sepM_affine Φ m :
( k x, Affine (Φ k x)) Affine ([ map] kx m, Φ k x). ( k x, Affine (Φ k x)) Affine ([ map] kx m, Φ k x).
Proof. Proof. intros. apply big_sepL_affine=> _ [??]; apply _. Qed.
intros. apply big_sepL_affine=> _ [??]; apply _.
Qed.
End gmap. End gmap.
(** ** Big ops over finite sets *) (** ** Big ops over finite sets *)
...@@ -591,6 +597,8 @@ Section gset. ...@@ -591,6 +597,8 @@ Section gset.
( x, Persistent (Φ x)) Persistent ([ set] x X, Φ x). ( x, Persistent (Φ x)) Persistent ([ set] x X, Φ x).
Proof. rewrite /big_opS. apply _. Qed. Proof. rewrite /big_opS. apply _. Qed.
Global Instance big_sepS_empty_affine Φ : Affine ([ set] x , Φ x).
Proof. rewrite /big_opS elements_empty. apply _. Qed.
Global Instance big_sepS_affine Φ X : Global Instance big_sepS_affine Φ X :
( x, Affine (Φ x)) Affine ([ set] x X, Φ x). ( x, Affine (Φ x)) Affine ([ set] x X, Φ x).
Proof. rewrite /big_opS. apply _. Qed. Proof. rewrite /big_opS. apply _. Qed.
...@@ -669,6 +677,8 @@ Section gmultiset. ...@@ -669,6 +677,8 @@ Section gmultiset.
( x, Persistent (Φ x)) Persistent ([ mset] x X, Φ x). ( x, Persistent (Φ x)) Persistent ([ mset] x X, Φ x).
Proof. rewrite /big_opMS. apply _. Qed. Proof. rewrite /big_opMS. apply _. Qed.
Global Instance big_sepMS_empty_affine Φ : Affine ([ mset] x , Φ x).
Proof. rewrite /big_opMS gmultiset_elements_empty. apply _. Qed.
Global Instance big_sepMS_affine Φ X : Global Instance big_sepMS_affine Φ X :
( x, Affine (Φ x)) Affine ([ mset] x X, Φ x). ( x, Affine (Φ x)) Affine ([ mset] x X, Φ x).
Proof. rewrite /big_opMS. apply _. Qed. Proof. rewrite /big_opMS. apply _. Qed.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment