Skip to content
Snippets Groups Projects
Commit 859fbccb authored by Ralf Jung's avatar Ralf Jung
Browse files

avoid line-breaking within the mask part of AU/AACC

parent 703718ed
No related branches found
No related tags found
No related merge requests found
...@@ -113,7 +113,7 @@ Notation "'AU' '<<' ∀ x1 .. xn , α '>>' @ Eo , Ei '<<' ∃ y1 .. yn , β , 'C ...@@ -113,7 +113,7 @@ Notation "'AU' '<<' ∀ x1 .. xn , α '>>' @ Eo , Ei '<<' ∃ y1 .. yn , β , 'C
) .. ) ) .. )
) )
(at level 20, Eo, Ei, α, β, Φ at level 200, x1 binder, xn binder, y1 binder, yn binder, (at level 20, Eo, Ei, α, β, Φ at level 200, x1 binder, xn binder, y1 binder, yn binder,
format "'[ ' 'AU' '<<' ∀ x1 .. xn , α '>>' '/' @ Eo , Ei '/' '[ ' '<<' ∃ y1 .. yn , β , '/' COMM Φ '>>' ']' ']'") : bi_scope. format "'[ ' 'AU' '<<' ∀ x1 .. xn , α '>>' '/' '[' @ Eo , Ei ']' '/' '[ ' '<<' ∃ y1 .. yn , β , '/' COMM Φ '>>' ']' ']'") : bi_scope.
Notation "'AU' '<<' ∀ x1 .. xn , α '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" := Notation "'AU' '<<' ∀ x1 .. xn , α '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" :=
(atomic_update (TA:=TeleS (λ x1, .. (TeleS (λ xn, TeleO)) .. )) (atomic_update (TA:=TeleS (λ x1, .. (TeleS (λ xn, TeleO)) .. ))
...@@ -127,7 +127,7 @@ Notation "'AU' '<<' ∀ x1 .. xn , α '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" : ...@@ -127,7 +127,7 @@ Notation "'AU' '<<' ∀ x1 .. xn , α '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" :
λ x1, .. (λ xn, tele_app (TT:=TeleO) Φ%I) .. ) λ x1, .. (λ xn, tele_app (TT:=TeleO) Φ%I) .. )
) )
(at level 20, Eo, Ei, α, β, Φ at level 200, x1 binder, xn binder, (at level 20, Eo, Ei, α, β, Φ at level 200, x1 binder, xn binder,
format "'[ ' 'AU' '<<' ∀ x1 .. xn , α '>>' '/' @ Eo , Ei '/' '[ ' '<<' β , '/' COMM Φ '>>' ']' ']'") : bi_scope. format "'[ ' 'AU' '<<' ∀ x1 .. xn , α '>>' '/' '[' @ Eo , Ei ']' '/' '[ ' '<<' β , '/' COMM Φ '>>' ']' ']'") : bi_scope.
Notation "'AU' '<<' α '>>' @ Eo , Ei '<<' ∃ y1 .. yn , β , 'COMM' Φ '>>'" := Notation "'AU' '<<' α '>>' @ Eo , Ei '<<' ∃ y1 .. yn , β , 'COMM' Φ '>>'" :=
(atomic_update (TA:=TeleO) (atomic_update (TA:=TeleO)
...@@ -142,7 +142,7 @@ Notation "'AU' '<<' α '>>' @ Eo , Ei '<<' ∃ y1 .. yn , β , 'COMM' Φ '>>'" : ...@@ -142,7 +142,7 @@ Notation "'AU' '<<' α '>>' @ Eo , Ei '<<' ∃ y1 .. yn , β , 'COMM' Φ '>>'" :
(λ y1, .. (λ yn, Φ%I) ..)) (λ y1, .. (λ yn, Φ%I) ..))
) )
(at level 20, Eo, Ei, α, β, Φ at level 200, y1 binder, yn binder, (at level 20, Eo, Ei, α, β, Φ at level 200, y1 binder, yn binder,
format "'[ ' 'AU' '<<' α '>>' '/' @ Eo , Ei '/' '[ ' '<<' ∃ y1 .. yn , β , '/' COMM Φ '>>' ']' ']'") : bi_scope. format "'[ ' 'AU' '<<' α '>>' '/' '[' @ Eo , Ei ']' '/' '[ ' '<<' ∃ y1 .. yn , β , '/' COMM Φ '>>' ']' ']'") : bi_scope.
Notation "'AU' '<<' α '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" := Notation "'AU' '<<' α '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" :=
(atomic_update (TA:=TeleO) (TB:=TeleO) Eo Ei (atomic_update (TA:=TeleO) (TB:=TeleO) Eo Ei
...@@ -151,7 +151,7 @@ Notation "'AU' '<<' α '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" := ...@@ -151,7 +151,7 @@ Notation "'AU' '<<' α '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" :=
(tele_app (TT:=TeleO) $ tele_app (TT:=TeleO) Φ%I) (tele_app (TT:=TeleO) $ tele_app (TT:=TeleO) Φ%I)
) )
(at level 20, Eo, Ei, α, β, Φ at level 200, (at level 20, Eo, Ei, α, β, Φ at level 200,
format "'[ ' 'AU' '<<' α '>>' '/' @ Eo , Ei '/' '[ ' '<<' β , '/' COMM Φ '>>' ']' ']'") : bi_scope. format "'[ ' 'AU' '<<' α '>>' '/' '[' @ Eo , Ei ']' '/' '[ ' '<<' β , '/' COMM Φ '>>' ']' ']'") : bi_scope.
(** Notation: Atomic accessors *) (** Notation: Atomic accessors *)
Notation "'AACC' '<<' ∀ x1 .. xn , α 'ABORT' P '>>' @ Eo , Ei '<<' ∃ y1 .. yn , β , 'COMM' Φ '>>'" := Notation "'AACC' '<<' ∀ x1 .. xn , α 'ABORT' P '>>' @ Eo , Ei '<<' ∃ y1 .. yn , β , 'COMM' Φ '>>'" :=
...@@ -173,7 +173,7 @@ Notation "'AACC' '<<' ∀ x1 .. xn , α 'ABORT' P '>>' @ Eo , Ei '<<' ∃ y1 .. ...@@ -173,7 +173,7 @@ Notation "'AACC' '<<' ∀ x1 .. xn , α 'ABORT' P '>>' @ Eo , Ei '<<' ∃ y1 ..
) .. ) ) .. )
) )
(at level 20, Eo, Ei, α, P, β, Φ at level 200, x1 binder, xn binder, y1 binder, yn binder, (at level 20, Eo, Ei, α, P, β, Φ at level 200, x1 binder, xn binder, y1 binder, yn binder,
format "'[ ' 'AACC' '[ ' '<<' ∀ x1 .. xn , α '/' ABORT P '>>' ']' '/' @ Eo , Ei '/' '[ ' '<<' ∃ y1 .. yn , β , '/' COMM Φ '>>' ']' ']'") : bi_scope. format "'[ ' 'AACC' '[ ' '<<' ∀ x1 .. xn , α '/' ABORT P '>>' ']' '/' '[' @ Eo , Ei ']' '/' '[ ' '<<' ∃ y1 .. yn , β , '/' COMM Φ '>>' ']' ']'") : bi_scope.
Notation "'AACC' '<<' ∀ x1 .. xn , α 'ABORT' P '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" := Notation "'AACC' '<<' ∀ x1 .. xn , α 'ABORT' P '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" :=
(atomic_acc (TA:=TeleS (λ x1, .. (TeleS (λ xn, TeleO)) .. )) (atomic_acc (TA:=TeleS (λ x1, .. (TeleS (λ xn, TeleO)) .. ))
...@@ -188,7 +188,7 @@ Notation "'AACC' '<<' ∀ x1 .. xn , α 'ABORT' P '>>' @ Eo , Ei '<<' β , 'COMM ...@@ -188,7 +188,7 @@ Notation "'AACC' '<<' ∀ x1 .. xn , α 'ABORT' P '>>' @ Eo , Ei '<<' β , 'COMM
λ x1, .. (λ xn, tele_app (TT:=TeleO) Φ%I) .. ) λ x1, .. (λ xn, tele_app (TT:=TeleO) Φ%I) .. )
) )
(at level 20, Eo, Ei, α, P, β, Φ at level 200, x1 binder, xn binder, (at level 20, Eo, Ei, α, P, β, Φ at level 200, x1 binder, xn binder,
format "'[ ' 'AACC' '[ ' '<<' ∀ x1 .. xn , α '/' ABORT P '>>' ']' '/' @ Eo , Ei '/' '[ ' '<<' β , '/' COMM Φ '>>' ']' ']'") : bi_scope. format "'[ ' 'AACC' '[ ' '<<' ∀ x1 .. xn , α '/' ABORT P '>>' ']' '/' '[' @ Eo , Ei ']' '/' '[ ' '<<' β , '/' COMM Φ '>>' ']' ']'") : bi_scope.
Notation "'AACC' '<<' α 'ABORT' P '>>' @ Eo , Ei '<<' ∃ y1 .. yn , β , 'COMM' Φ '>>'" := Notation "'AACC' '<<' α 'ABORT' P '>>' @ Eo , Ei '<<' ∃ y1 .. yn , β , 'COMM' Φ '>>'" :=
(atomic_acc (TA:=TeleO) (atomic_acc (TA:=TeleO)
...@@ -204,7 +204,7 @@ Notation "'AACC' '<<' α 'ABORT' P '>>' @ Eo , Ei '<<' ∃ y1 .. yn , β , 'COMM ...@@ -204,7 +204,7 @@ Notation "'AACC' '<<' α 'ABORT' P '>>' @ Eo , Ei '<<' ∃ y1 .. yn , β , 'COMM
(λ y1, .. (λ yn, Φ%I) ..)) (λ y1, .. (λ yn, Φ%I) ..))
) )
(at level 20, Eo, Ei, α, P, β, Φ at level 200, y1 binder, yn binder, (at level 20, Eo, Ei, α, P, β, Φ at level 200, y1 binder, yn binder,
format "'[ ' 'AACC' '[ ' '<<' α '/' ABORT P '>>' ']' '/' @ Eo , Ei '/' '[ ' '<<' ∃ y1 .. yn , β , '/' COMM Φ '>>' ']' ']'") : bi_scope. format "'[ ' 'AACC' '[ ' '<<' α '/' ABORT P '>>' ']' '/' '[' @ Eo , Ei ']' '/' '[ ' '<<' ∃ y1 .. yn , β , '/' COMM Φ '>>' ']' ']'") : bi_scope.
Notation "'AACC' '<<' α 'ABORT' P '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" := Notation "'AACC' '<<' α 'ABORT' P '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" :=
(atomic_acc (TA:=TeleO) (atomic_acc (TA:=TeleO)
...@@ -216,7 +216,7 @@ Notation "'AACC' '<<' α 'ABORT' P '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" := ...@@ -216,7 +216,7 @@ Notation "'AACC' '<<' α 'ABORT' P '>>' @ Eo , Ei '<<' β , 'COMM' Φ '>>'" :=
(tele_app (TT:=TeleO) $ tele_app (TT:=TeleO) Φ%I) (tele_app (TT:=TeleO) $ tele_app (TT:=TeleO) Φ%I)
) )
(at level 20, Eo, Ei, α, P, β, Φ at level 200, (at level 20, Eo, Ei, α, P, β, Φ at level 200,
format "'[ ' 'AACC' '[ ' '<<' α '/' ABORT P '>>' ']' '/' @ Eo , Ei '/' '[ ' '<<' β , '/' COMM Φ '>>' ']' ']'") : bi_scope. format "'[ ' 'AACC' '[ ' '<<' α '/' ABORT P '>>' ']' '/' '[' @ Eo , Ei ']' '/' '[ ' '<<' β , '/' COMM Φ '>>' ']' ']'") : bi_scope.
(** Lemmas about AU *) (** Lemmas about AU *)
Section lemmas. Section lemmas.
......
...@@ -9,8 +9,8 @@ ...@@ -9,8 +9,8 @@
============================ ============================
"Hl" : l ↦ v "Hl" : l ↦ v
--------------------------------------∗ --------------------------------------∗
AACC << ∀ (v0 : val) (q : dfrac), l ↦{q} v0 ABORT l ↦ v >> @ ⊤, ∅ AACC << ∀ (v0 : val) (q : dfrac), l ↦{q} v0 ABORT l ↦ v >>
<< l ↦{q} v0, COMM Q -∗ Q >> @ ⊤ ∖ ∅, ∅ << l ↦{q} v0, COMM Q -∗ Q >>
"non_laterable" "non_laterable"
: string : string
...@@ -24,8 +24,8 @@ ...@@ -24,8 +24,8 @@
============================ ============================
"HP" : ▷ P "HP" : ▷ P
--------------------------------------∗ --------------------------------------∗
AACC << ∀ (v : val) (q : dfrac), l ↦{q} v ABORT ▷ P >> @ ⊤, ∅ AACC << ∀ (v : val) (q : dfrac), l ↦{q} v ABORT ▷ P >>
<< l ↦{q} v, COMM True >> @ ⊤ ∖ ∅, ∅ << l ↦{q} v, COMM True >>
1 goal 1 goal
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
============================ ============================
"HP" : ▷ P "HP" : ▷ P
--------------------------------------∗ --------------------------------------∗
AACC << ∀ (v : val) (q : dfrac), l ↦{q} v ABORT ▷ P >> @ ⊤, ∅ AACC << ∀ (v : val) (q : dfrac), l ↦{q} v ABORT ▷ P >>
<< l ↦{q} v, COMM True >> @ ⊤ ∖ ∅, ∅ << l ↦{q} v, COMM True >>
"printing" "printing"
: string : string
...@@ -48,7 +48,7 @@ ...@@ -48,7 +48,7 @@
heapGS0 : heapGS Σ heapGS0 : heapGS Σ
P : val → iProp Σ P : val → iProp Σ
============================ ============================
⊢ <<< ∀ x : val, P x >>> code @ <<< ∃ y : val, P y, RET #() >>> ⊢ <<< ∀ x : val, P x >>> code @ <<< ∃ y : val, P y, RET #() >>>
1 goal 1 goal
Σ : gFunctors Σ : gFunctors
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
P : val → iProp Σ P : val → iProp Σ
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
"AU" : AU << ∀ x : val, P x >> @ ⊤, ∅ << ∃ y : val, P y, COMM Φ #() >> "AU" : AU << ∀ x : val, P x >> @ ⊤ ∖ ∅, ∅ << ∃ y : val, P y, COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -68,9 +68,9 @@ ...@@ -68,9 +68,9 @@
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
_ : AACC << ∀ x : val, P x _ : AACC << ∀ x : val, P x
ABORT AU << ∀ x : val, P x >> @ ⊤, ∅ ABORT AU << ∀ x : val, P x >> @ ⊤ ∖ ∅, ∅
<< ∃ y : val, P y, COMM Φ #() >> >> @ ⊤, ∅ << ∃ y : val, P y, COMM Φ #() >> >>
<< ∃ y : val, P y, COMM Φ #() >> @ ⊤ ∖ ∅, ∅ << ∃ y : val, P y, COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
heapGS0 : heapGS Σ heapGS0 : heapGS Σ
l : loc l : loc
============================ ============================
⊢ <<< ∀ x : val, l ↦ x >>> code @ <<< l ↦ x, RET #() >>> ⊢ <<< ∀ x : val, l ↦ x >>> code @ <<< l ↦ x, RET #() >>>
1 goal 1 goal
Σ : gFunctors Σ : gFunctors
...@@ -88,7 +88,7 @@ ...@@ -88,7 +88,7 @@
l : loc l : loc
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
"AU" : AU << ∀ x : val, l ↦ x >> @ ⊤, ∅ << l ↦ x, COMM Φ #() >> "AU" : AU << ∀ x : val, l ↦ x >> @ ⊤ ∖ ∅, ∅ << l ↦ x, COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -100,8 +100,9 @@ ...@@ -100,8 +100,9 @@
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
_ : AACC << ∀ x : val, l ↦ x _ : AACC << ∀ x : val, l ↦ x
ABORT AU << ∀ x : val, l ↦ x >> @ ⊤, ∅ << l ↦ x, COMM Φ #() >> >> ABORT AU << ∀ x : val, l ↦ x >> @ ⊤ ∖ ∅, ∅
@ ⊤, ∅ << l ↦ x, COMM Φ #() >> << l ↦ x, COMM Φ #() >> >>
@ ⊤ ∖ ∅, ∅ << l ↦ x, COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -111,7 +112,7 @@ ...@@ -111,7 +112,7 @@
heapGS0 : heapGS Σ heapGS0 : heapGS Σ
l : loc l : loc
============================ ============================
⊢ <<< l ↦ #() >>> code @ <<< ∃ y : val, l ↦ y, RET #() >>> ⊢ <<< l ↦ #() >>> code @ <<< ∃ y : val, l ↦ y, RET #() >>>
1 goal 1 goal
Σ : gFunctors Σ : gFunctors
...@@ -119,7 +120,7 @@ ...@@ -119,7 +120,7 @@
l : loc l : loc
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
"AU" : AU << l ↦ #() >> @ ⊤, ∅ << ∃ y : val, l ↦ y, COMM Φ #() >> "AU" : AU << l ↦ #() >> @ ⊤ ∖ ∅, ∅ << ∃ y : val, l ↦ y, COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -131,9 +132,9 @@ ...@@ -131,9 +132,9 @@
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
_ : AACC << l ↦ #() _ : AACC << l ↦ #()
ABORT AU << l ↦ #() >> @ ⊤, ∅ ABORT AU << l ↦ #() >> @ ⊤ ∖ ∅, ∅
<< ∃ y : val, l ↦ y, COMM Φ #() >> >> @ ⊤, ∅ << ∃ y : val, l ↦ y, COMM Φ #() >> >>
<< ∃ y : val, l ↦ y, COMM Φ #() >> @ ⊤ ∖ ∅, ∅ << ∃ y : val, l ↦ y, COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -143,7 +144,7 @@ ...@@ -143,7 +144,7 @@
heapGS0 : heapGS Σ heapGS0 : heapGS Σ
l : loc l : loc
============================ ============================
⊢ <<< l ↦ #() >>> code @ <<< l ↦ #(), RET #() >>> ⊢ <<< l ↦ #() >>> code @ <<< l ↦ #(), RET #() >>>
1 goal 1 goal
Σ : gFunctors Σ : gFunctors
...@@ -151,7 +152,7 @@ ...@@ -151,7 +152,7 @@
l : loc l : loc
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
"AU" : AU << l ↦ #() >> @ ⊤, ∅ << l ↦ #(), COMM Φ #() >> "AU" : AU << l ↦ #() >> @ ⊤ ∖ ∅, ∅ << l ↦ #(), COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -163,8 +164,8 @@ ...@@ -163,8 +164,8 @@
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
_ : AACC << l ↦ #() _ : AACC << l ↦ #()
ABORT AU << l ↦ #() >> @ ⊤, ∅ << l ↦ #(), COMM Φ #() >> >> ABORT AU << l ↦ #() >> @ ⊤ ∖ ∅, ∅ << l ↦ #(), COMM Φ #() >> >>
@ ⊤, ∅ << l ↦ #(), COMM Φ #() >> @ ⊤ ∖ ∅, ∅ << l ↦ #(), COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -177,7 +178,7 @@ ...@@ -177,7 +178,7 @@
l : loc l : loc
============================ ============================
⊢ <<< ∀ x : val, l ↦ x ∗ l ↦ x >>> ⊢ <<< ∀ x : val, l ↦ x ∗ l ↦ x >>>
code @ code @
<<< ∃ y : val, l ↦ y, RET #() >>> <<< ∃ y : val, l ↦ y, RET #() >>>
1 goal 1 goal
...@@ -186,7 +187,7 @@ ...@@ -186,7 +187,7 @@
l : loc l : loc
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
"AU" : AU << ∀ x : val, l ↦ x ∗ l ↦ x >> @ ⊤, ∅ "AU" : AU << ∀ x : val, l ↦ x ∗ l ↦ x >> @ ⊤ ∖ ∅, ∅
<< ∃ y : val, l ↦ y, COMM Φ #() >> << ∃ y : val, l ↦ y, COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -198,7 +199,7 @@ ...@@ -198,7 +199,7 @@
l : loc l : loc
============================ ============================
⊢ <<< ∀ x : val, l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >>> ⊢ <<< ∀ x : val, l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >>>
code @ code @
<<< ∃ y : val, l ↦ y, RET #() >>> <<< ∃ y : val, l ↦ y, RET #() >>>
1 goal 1 goal
...@@ -208,7 +209,7 @@ ...@@ -208,7 +209,7 @@
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
"AU" : AU << ∀ x : val, l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >> "AU" : AU << ∀ x : val, l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >>
@ ⊤, ∅ << ∃ y : val, l ↦ y, COMM Φ #() >> @ ⊤ ∖ ∅, ∅ << ∃ y : val, l ↦ y, COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -219,7 +220,7 @@ ...@@ -219,7 +220,7 @@
l : loc l : loc
============================ ============================
⊢ <<< ∀ xx : val, l ↦ xx ∗ l ↦ xx ∗ l ↦ xx >>> ⊢ <<< ∀ xx : val, l ↦ xx ∗ l ↦ xx ∗ l ↦ xx >>>
code @ code @
<<< ∃ yyyy : val, l ↦ yyyy ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx, <<< ∃ yyyy : val, l ↦ yyyy ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx,
RET #() >>> RET #() >>>
1 goal 1 goal
...@@ -229,7 +230,8 @@ ...@@ -229,7 +230,8 @@
l : loc l : loc
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
_ : AU << ∀ xx : val, l ↦ xx ∗ l ↦ xx ∗ l ↦ xx >> @ ⊤, ∅ _ : AU << ∀ xx : val, l ↦ xx ∗ l ↦ xx ∗ l ↦ xx >>
@ ⊤ ∖ ∅, ∅
<< ∃ yyyy : val, l ↦ yyyy << ∃ yyyy : val, l ↦ yyyy
∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx, ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx,
COMM Φ #() >> COMM Φ #() >>
...@@ -243,7 +245,7 @@ ...@@ -243,7 +245,7 @@
l : loc l : loc
============================ ============================
⊢ <<< ∀ x : val, l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >>> ⊢ <<< ∀ x : val, l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >>>
code @ code @
<<< l ↦ x, RET #() >>> <<< l ↦ x, RET #() >>>
1 goal 1 goal
...@@ -252,8 +254,8 @@ ...@@ -252,8 +254,8 @@
l : loc l : loc
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
"AU" : AU << ∀ x : val, l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >> @ ⊤, ∅ "AU" : AU << ∀ x : val, l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >>
<< l ↦ x, COMM Φ #() >> @ ⊤ ∖ ∅, ∅ << l ↦ x, COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -265,7 +267,7 @@ ...@@ -265,7 +267,7 @@
x : val x : val
============================ ============================
⊢ <<< l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >>> ⊢ <<< l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >>>
code @ code @
<<< ∃ y : val, l ↦ y, RET #() >>> <<< ∃ y : val, l ↦ y, RET #() >>>
1 goal 1 goal
...@@ -275,8 +277,8 @@ ...@@ -275,8 +277,8 @@
x : val x : val
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
"AU" : AU << l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >> @ ⊤, ∅ "AU" : AU << l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >>
<< ∃ y : val, l ↦ y, COMM Φ #() >> @ ⊤ ∖ ∅, ∅ << ∃ y : val, l ↦ y, COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -288,7 +290,7 @@ ...@@ -288,7 +290,7 @@
x : val x : val
============================ ============================
⊢ <<< l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >>> ⊢ <<< l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >>>
code @ code @
<<< l ↦ #(), RET #() >>> <<< l ↦ #(), RET #() >>>
1 goal 1 goal
...@@ -298,8 +300,8 @@ ...@@ -298,8 +300,8 @@
x : val x : val
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
"AU" : AU << l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >> @ ⊤, ∅ "AU" : AU << l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x ∗ l ↦ x >>
<< l ↦ #(), COMM Φ #() >> @ ⊤ ∖ ∅, ∅ << l ↦ #(), COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -311,7 +313,7 @@ ...@@ -311,7 +313,7 @@
xx, yyyy : val xx, yyyy : val
============================ ============================
⊢ <<< l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx >>> ⊢ <<< l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx >>>
code @ code @
<<< l ↦ yyyy, RET #() >>> <<< l ↦ yyyy, RET #() >>>
1 goal 1 goal
...@@ -322,7 +324,7 @@ ...@@ -322,7 +324,7 @@
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
"AU" : AU << l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx >> "AU" : AU << l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx >>
@ ⊤, ∅ << l ↦ yyyy, COMM Φ #() >> @ ⊤ ∖ ∅, ∅ << l ↦ yyyy, COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
WP code {{ v, Φ v }} WP code {{ v, Φ v }}
...@@ -334,7 +336,7 @@ ...@@ -334,7 +336,7 @@
xx, yyyy : val xx, yyyy : val
============================ ============================
⊢ <<< l ↦ xx ∗ l ↦ xx ∗ l ↦ xx >>> ⊢ <<< l ↦ xx ∗ l ↦ xx ∗ l ↦ xx >>>
code @ code @
<<< l ↦ yyyy ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx, <<< l ↦ yyyy ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx,
RET #() >>> RET #() >>>
1 goal 1 goal
...@@ -345,7 +347,7 @@ ...@@ -345,7 +347,7 @@
xx, yyyy : val xx, yyyy : val
Φ : language.val heap_lang → iProp Σ Φ : language.val heap_lang → iProp Σ
============================ ============================
"AU" : AU << l ↦ xx ∗ l ↦ xx ∗ l ↦ xx >> @ ⊤, ∅ "AU" : AU << l ↦ xx ∗ l ↦ xx ∗ l ↦ xx >> @ ⊤ ∖ ∅, ∅
<< l ↦ yyyy ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx, << l ↦ yyyy ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx ∗ l ↦ xx,
COMM Φ #() >> COMM Φ #() >>
--------------------------------------∗ --------------------------------------∗
...@@ -363,7 +365,7 @@ ...@@ -363,7 +365,7 @@
"AU" : ∃ x : val, "AU" : ∃ x : val,
P x P x
∗ (P x ∗ (P x
={∅,⊤}=∗ AU << ∀ x0 : val, P x0 >> @ ⊤, ∅ ={∅,⊤}=∗ AU << ∀ x0 : val, P x0 >> @ ⊤ ∖ ∅, ∅
<< ∃ y : val, P y, COMM Φ #() >>) << ∃ y : val, P y, COMM Φ #() >>)
∧ (∀ x0 : val, P x0 ={∅,⊤}=∗ Φ #()) ∧ (∀ x0 : val, P x0 ={∅,⊤}=∗ Φ #())
--------------------------------------∗ --------------------------------------∗
......
...@@ -42,28 +42,28 @@ Section printing. ...@@ -42,28 +42,28 @@ Section printing.
Definition code : expr := #(). Definition code : expr := #().
Lemma print_both_quant (P : val iProp Σ) : Lemma print_both_quant (P : val iProp Σ) :
<<< x, P x >>> code @ <<< y, P y, RET #() >>>. <<< x, P x >>> code @ <<< y, P y, RET #() >>>.
Proof. Proof.
Show. iIntros (Φ) "AU". Show. Show. iIntros (Φ) "AU". Show.
iPoseProof (aupd_aacc with "AU") as "?". Show. iPoseProof (aupd_aacc with "AU") as "?". Show.
Abort. Abort.
Lemma print_first_quant l : Lemma print_first_quant l :
<<< x, l x >>> code @ <<< l x, RET #() >>>. <<< x, l x >>> code @ <<< l x, RET #() >>>.
Proof. Proof.
Show. iIntros (Φ) "AU". Show. Show. iIntros (Φ) "AU". Show.
iPoseProof (aupd_aacc with "AU") as "?". Show. iPoseProof (aupd_aacc with "AU") as "?". Show.
Abort. Abort.
Lemma print_second_quant l : Lemma print_second_quant l :
<<< l #() >>> code @ <<< y, l y, RET #() >>>. <<< l #() >>> code @ <<< y, l y, RET #() >>>.
Proof. Proof.
Show. iIntros (Φ) "AU". Show. Show. iIntros (Φ) "AU". Show.
iPoseProof (aupd_aacc with "AU") as "?". Show. iPoseProof (aupd_aacc with "AU") as "?". Show.
Abort. Abort.
Lemma print_no_quant l : Lemma print_no_quant l :
<<< l #() >>> code @ <<< l #(), RET #() >>>. <<< l #() >>> code @ <<< l #(), RET #() >>>.
Proof. Proof.
Show. iIntros (Φ) "AU". Show. Show. iIntros (Φ) "AU". Show.
iPoseProof (aupd_aacc with "AU") as "?". Show. iPoseProof (aupd_aacc with "AU") as "?". Show.
...@@ -72,49 +72,49 @@ Section printing. ...@@ -72,49 +72,49 @@ Section printing.
Check "Now come the long pre/post tests". Check "Now come the long pre/post tests".
Lemma print_both_quant_long l : Lemma print_both_quant_long l :
<<< x, l x l x >>> code @ <<< y, l y, RET #() >>>. <<< x, l x l x >>> code @ <<< y, l y, RET #() >>>.
Proof. Proof.
Show. iIntros (Φ) "AU". Show. Show. iIntros (Φ) "AU". Show.
Abort. Abort.
Lemma print_both_quant_longpre l : Lemma print_both_quant_longpre l :
<<< x, l x l x l x l x l x l x >>> code @ <<< y, l y, RET #() >>>. <<< x, l x l x l x l x l x l x >>> code @ <<< y, l y, RET #() >>>.
Proof. Proof.
Show. iIntros (Φ) "AU". Show. Show. iIntros (Φ) "AU". Show.
Abort. Abort.
Lemma print_both_quant_longpost l : Lemma print_both_quant_longpost l :
<<< xx, l xx l xx l xx >>> code @ <<< yyyy, l yyyy l xx l xx l xx l xx l xx, RET #() >>>. <<< xx, l xx l xx l xx >>> code @ <<< yyyy, l yyyy l xx l xx l xx l xx l xx, RET #() >>>.
Proof. Proof.
Show. iIntros (Φ) "?". Show. Show. iIntros (Φ) "?". Show.
Abort. Abort.
Lemma print_first_quant_long l : Lemma print_first_quant_long l :
<<< x, l x l x l x l x >>> code @ <<< l x, RET #() >>>. <<< x, l x l x l x l x >>> code @ <<< l x, RET #() >>>.
Proof. Proof.
Show. iIntros (Φ) "AU". Show. Show. iIntros (Φ) "AU". Show.
Abort. Abort.
Lemma print_second_quant_long l x : Lemma print_second_quant_long l x :
<<< l x l x l x l x l x l x >>> code @ <<< y, l y, RET #() >>>. <<< l x l x l x l x l x l x >>> code @ <<< y, l y, RET #() >>>.
Proof. Proof.
Show. iIntros (Φ) "AU". Show. Show. iIntros (Φ) "AU". Show.
Abort. Abort.
Lemma print_no_quant_long l x : Lemma print_no_quant_long l x :
<<< l x l x l x l x l x l x >>> code @ <<< l #(), RET #() >>>. <<< l x l x l x l x l x l x >>> code @ <<< l #(), RET #() >>>.
Proof. Proof.
Show. iIntros (Φ) "AU". Show. Show. iIntros (Φ) "AU". Show.
Abort. Abort.
Lemma print_no_quant_longpre l xx yyyy : Lemma print_no_quant_longpre l xx yyyy :
<<< l xx l xx l xx l xx l xx l xx l xx >>> code @ <<< l yyyy, RET #() >>>. <<< l xx l xx l xx l xx l xx l xx l xx >>> code @ <<< l yyyy, RET #() >>>.
Proof. Proof.
Show. iIntros (Φ) "AU". Show. Show. iIntros (Φ) "AU". Show.
Abort. Abort.
Lemma print_no_quant_longpost l xx yyyy : Lemma print_no_quant_longpost l xx yyyy :
<<< l xx l xx l xx >>> code @ <<< l yyyy l xx l xx l xx l xx l xx l xx, RET #() >>>. <<< l xx l xx l xx >>> code @ <<< l yyyy l xx l xx l xx l xx l xx l xx, RET #() >>>.
Proof. Proof.
Show. iIntros (Φ) "AU". Show. Show. iIntros (Φ) "AU". Show.
Abort. Abort.
...@@ -122,7 +122,7 @@ Section printing. ...@@ -122,7 +122,7 @@ Section printing.
Check "Prettification". Check "Prettification".
Lemma iMod_prettify (P : val iProp Σ) : Lemma iMod_prettify (P : val iProp Σ) :
<<< x, P x >>> !#0 @ <<< y, P y, RET #() >>>. <<< x, P x >>> !#0 @ <<< y, P y, RET #() >>>.
Proof. Proof.
iIntros (Φ) "AU". iMod "AU". Show. iIntros (Φ) "AU". iMod "AU". Show.
Abort. Abort.
......
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