diff --git a/theories/logrel/session_types.v b/theories/logrel/session_types.v index 3f1e67d776193a0a4c02ebfc94ae491ccfb7d00a..cec8d95e650881821f541fc89975b56a336a7118 100644 --- a/theories/logrel/session_types.v +++ b/theories/logrel/session_types.v @@ -45,6 +45,9 @@ Section Propers. Global Instance lsty_message_ne a : NonExpansive2 (@lsty_message Σ a). Proof. intros n A A' ? S S' ?. by apply iProto_message_ne; simpl. Qed. + Global Instance lsty_message_proper a : + Proper ((≡) ==> (≡) ==> (≡)) (@lsty_message Σ a). + Proof. apply ne_proper_2, _. Qed. Global Instance lsty_message_contractive n a : Proper (dist_later n ==> dist_later n ==> dist n) (@lsty_message Σ a). Proof. @@ -54,12 +57,16 @@ Section Propers. Global Instance lsty_send_ne : NonExpansive2 (@lsty_send Σ). Proof. solve_proper. Qed. + Global Instance lsty_send_proper : Proper ((≡) ==> (≡) ==> (≡)) (@lsty_send Σ). + Proof. solve_proper. Qed. Global Instance lsty_send_contractive n : Proper (dist_later n ==> dist_later n ==> dist n) (@lsty_send Σ). Proof. solve_contractive. Qed. Global Instance lsty_recv_ne : NonExpansive2 (@lsty_recv Σ). Proof. solve_proper. Qed. + Global Instance lsty_recv_proper : Proper ((≡) ==> (≡) ==> (≡)) (@lsty_recv Σ). + Proof. solve_proper. Qed. Global Instance lsty_recv_contractive n : Proper (dist_later n ==> dist_later n ==> dist n) (@lsty_recv Σ). Proof. solve_contractive. Qed. @@ -68,6 +75,8 @@ Section Propers. Proof. intros n Ss1 Ss2 Pseq. apply iProto_message_ne; simpl; solve_proper. Qed. + Global Instance lsty_choice_proper a : Proper ((≡) ==> (≡)) (@lsty_choice Σ a). + Proof. apply ne_proper. apply _. Qed. Global Instance lsty_choice_contractive a : Contractive (@lsty_choice Σ a). Proof. intros ? Ss1 Ss2 ?. @@ -76,18 +85,26 @@ Section Propers. Global Instance lsty_select_ne : NonExpansive (@lsty_select Σ). Proof. solve_proper. Qed. + Global Instance lsty_select_proper : Proper ((≡) ==> (≡)) (@lsty_select Σ). + Proof. solve_proper. Qed. Global Instance lsty_select_contractive : Contractive (@lsty_select Σ). Proof. solve_contractive. Qed. Global Instance lsty_branch_ne : NonExpansive (@lsty_branch Σ). Proof. solve_proper. Qed. + Global Instance lsty_branch_proper : Proper ((≡) ==> (≡)) (@lsty_branch Σ). + Proof. solve_proper. Qed. Global Instance lsty_branch_contractive : Contractive (@lsty_branch Σ). Proof. solve_contractive. Qed. Global Instance lsty_dual_ne : NonExpansive (@lsty_dual Σ). Proof. solve_proper. Qed. + Global Instance lsty_dual_proper : Proper ((≡) ==> (≡)) (@lsty_dual Σ). + Proof. apply ne_proper, _. Qed. Global Instance lsty_app_ne : NonExpansive2 (@lsty_app Σ). Proof. solve_proper. Qed. + Global Instance lsty_app_proper : Proper ((≡) ==> (≡) ==> (≡)) (@lsty_app Σ). + Proof. apply ne_proper_2, _. Qed. End Propers. Notation "'END'" := lsty_end : lsty_scope.