diff --git a/theories/program_logic/weakestpre.v b/theories/program_logic/weakestpre.v index f0cdfb88f001b4baac8a7bbe11a02f1d51206152..2bdd9fecfb0cc64ac9d603d631662e26de9365ca 100644 --- a/theories/program_logic/weakestpre.v +++ b/theories/program_logic/weakestpre.v @@ -53,43 +53,43 @@ Notation "'WP' e {{ v , Q } }" := (wp ⊤ e%E (λ v, Q)) format "'WP' e {{ v , Q } }") : uPred_scope. (* Texan triples *) -Notation "'{{{' P } } } e {{{ x .. y , 'RET' pat ; Q } } }" := - (□ ∀ Φ, - P -∗ ▷ (∀ x, .. (∀ y, Q -∗ Φ pat%V) .. ) -∗ WP e {{ Φ }})%I - (at level 20, x closed binder, y closed binder, - format "{{{ P } } } e {{{ x .. y , RET pat ; Q } } }") : uPred_scope. Notation "'{{{' P } } } e @ E {{{ x .. y , 'RET' pat ; Q } } }" := (□ ∀ Φ, P -∗ ▷ (∀ x, .. (∀ y, Q -∗ Φ pat%V) .. ) -∗ WP e @ E {{ Φ }})%I (at level 20, x closed binder, y closed binder, format "{{{ P } } } e @ E {{{ x .. y , RET pat ; Q } } }") : uPred_scope. -Notation "'{{{' P } } } e {{{ 'RET' pat ; Q } } }" := - (□ ∀ Φ, P -∗ ▷ (Q -∗ Φ pat%V) -∗ WP e {{ Φ }})%I - (at level 20, - format "{{{ P } } } e {{{ RET pat ; Q } } }") : uPred_scope. +Notation "'{{{' P } } } e {{{ x .. y , 'RET' pat ; Q } } }" := + (□ ∀ Φ, + P -∗ ▷ (∀ x, .. (∀ y, Q -∗ Φ pat%V) .. ) -∗ WP e {{ Φ }})%I + (at level 20, x closed binder, y closed binder, + format "{{{ P } } } e {{{ x .. y , RET pat ; Q } } }") : uPred_scope. Notation "'{{{' P } } } e @ E {{{ 'RET' pat ; Q } } }" := (□ ∀ Φ, P -∗ ▷ (Q -∗ Φ pat%V) -∗ WP e @ E {{ Φ }})%I (at level 20, format "{{{ P } } } e @ E {{{ RET pat ; Q } } }") : uPred_scope. +Notation "'{{{' P } } } e {{{ 'RET' pat ; Q } } }" := + (□ ∀ Φ, P -∗ ▷ (Q -∗ Φ pat%V) -∗ WP e {{ Φ }})%I + (at level 20, + format "{{{ P } } } e {{{ RET pat ; Q } } }") : uPred_scope. -Notation "'{{{' P } } } e {{{ x .. y , 'RET' pat ; Q } } }" := - (∀ Φ : _ → uPred _, - P -∗ ▷ (∀ x, .. (∀ y, Q -∗ Φ pat%V) .. ) -∗ WP e {{ Φ }}) - (at level 20, x closed binder, y closed binder, - format "{{{ P } } } e {{{ x .. y , RET pat ; Q } } }") : C_scope. Notation "'{{{' P } } } e @ E {{{ x .. y , 'RET' pat ; Q } } }" := (∀ Φ : _ → uPred _, P -∗ ▷ (∀ x, .. (∀ y, Q -∗ Φ pat%V) .. ) -∗ WP e @ E {{ Φ }}) (at level 20, x closed binder, y closed binder, format "{{{ P } } } e @ E {{{ x .. y , RET pat ; Q } } }") : C_scope. -Notation "'{{{' P } } } e {{{ 'RET' pat ; Q } } }" := - (∀ Φ : _ → uPred _, P -∗ ▷ (Q -∗ Φ pat%V) -∗ WP e {{ Φ }}) - (at level 20, - format "{{{ P } } } e {{{ RET pat ; Q } } }") : C_scope. +Notation "'{{{' P } } } e {{{ x .. y , 'RET' pat ; Q } } }" := + (∀ Φ : _ → uPred _, + P -∗ ▷ (∀ x, .. (∀ y, Q -∗ Φ pat%V) .. ) -∗ WP e {{ Φ }}) + (at level 20, x closed binder, y closed binder, + format "{{{ P } } } e {{{ x .. y , RET pat ; Q } } }") : C_scope. Notation "'{{{' P } } } e @ E {{{ 'RET' pat ; Q } } }" := (∀ Φ : _ → uPred _, P -∗ ▷ (Q -∗ Φ pat%V) -∗ WP e @ E {{ Φ }}) (at level 20, format "{{{ P } } } e @ E {{{ RET pat ; Q } } }") : C_scope. +Notation "'{{{' P } } } e {{{ 'RET' pat ; Q } } }" := + (∀ Φ : _ → uPred _, P -∗ ▷ (Q -∗ Φ pat%V) -∗ WP e {{ Φ }}) + (at level 20, + format "{{{ P } } } e {{{ RET pat ; Q } } }") : C_scope. Section wp. Context `{irisG Λ Σ}.