Library zoo_saturn.queue_mpsc_3__code
Require Import zoo.prelude.
Require Import zoo.language.typeclasses.
Require Import zoo.language.notations.
Require Import zoo_std.clist.
Require Import zoo_std.domain.
Require Import zoo.options.
Notation "'queue_mpsc_3ู front'" := (
in_type "zoo_saturn.queue_mpsc_3.t" 0
)(in custom zoo_field
).
Notation "'queue_mpsc_3ู back'" := (
in_type "zoo_saturn.queue_mpsc_3.t" 1
)(in custom zoo_field
).
Definition queue_mpsc_3ู create : val :=
๐ณ๐๐ป โฝ โ
{ ยงclistู Open, ยงclistู Open }.
Definition queue_mpsc_3ู is_empty : val :=
๐ณ๐๐ป "t" โ
๐บ๐ฎ๐๐ฐ๐ต "t".{queue_mpsc_3ู front} ๐๐ถ๐๐ต
| clistู Closed โ
true
| clistู Cons โฝ โฝ โ
false
| clistู Open โ
๐บ๐ฎ๐๐ฐ๐ต "t".{queue_mpsc_3ู back} ๐๐ถ๐๐ต
| clistู Cons โฝ โฝ โ
false
| โฝ โ
true
๐ฒ๐ป๐ฑ
๐ฒ๐ป๐ฑ.
Definition queue_mpsc_3ู push_front : val :=
๐ณ๐๐ป "t" "v" โ
๐บ๐ฎ๐๐ฐ๐ต "t".{queue_mpsc_3ู front} ๐๐ถ๐๐ต
| clistู Closed โ
true
| โฝ ๐ฎ๐ "front" โ
"t" <-{queue_mpsc_3ู front} โclistู Cons[ "v", "front" ] โฎ
false
๐ฒ๐ป๐ฑ.
Definition queue_mpsc_3ู push_back : val :=
๐ฟ๐ฒ๐ฐ "push_back" "t" "v" โ
๐บ๐ฎ๐๐ฐ๐ต "t".{queue_mpsc_3ู back} ๐๐ถ๐๐ต
| clistู Closed โ
true
| โฝ ๐ฎ๐ "back" โ
๐ถ๐ณ
๐ฐ๐ฎ๐
"t".[queue_mpsc_3ู back]
"back"
โclistู Cons[ "v", "back" ]
๐๐ต๐ฒ๐ป (
false
) ๐ฒ๐น๐๐ฒ (
domainู yield () โฎ
"push_back" "t" "v"
)
๐ฒ๐ป๐ฑ.
Definition queue_mpsc_3ู pop : val :=
๐ณ๐๐ป "t" โ
๐บ๐ฎ๐๐ฐ๐ต "t".{queue_mpsc_3ู front} ๐๐ถ๐๐ต
| clistู Closed โ
ยงNone
| clistู Cons "v" "front" โ
"t" <-{queue_mpsc_3ู front} "front" โฎ
โSome( "v" )
| clistู Open โ
๐บ๐ฎ๐๐ฐ๐ต
๐ ๐ฐ๐ต๐ด "t".[queue_mpsc_3ู back] ยงclistู Open
๐๐ถ๐๐ต
| clistู Open โ
ยงNone
| โฝ ๐ฎ๐ "back" โ
๐บ๐ฎ๐๐ฐ๐ต
clistู rev_app "back" ยงclistู Open
๐๐ถ๐๐ต
| clistู Cons "v" "front" โ
"t" <-{queue_mpsc_3ู front} "front" โฎ
โSome( "v" )
| โฝ โ
๐ณ๐ฎ๐ถ๐น
๐ฒ๐ป๐ฑ
๐ฒ๐ป๐ฑ
๐ฒ๐ป๐ฑ.
Definition queue_mpsc_3ู close : val :=
๐ณ๐๐ป "t" โ
๐บ๐ฎ๐๐ฐ๐ต
๐ ๐ฐ๐ต๐ด "t".[queue_mpsc_3ู back] ยงclistู Closed
๐๐ถ๐๐ต
| clistู Closed โ
true
| โฝ ๐ฎ๐ "back" โ
"t" <-{queue_mpsc_3ู front}
clistู app
"t".{queue_mpsc_3ู front}
(clistู rev_app "back" ยงclistู Closed) โฎ
false
๐ฒ๐ป๐ฑ.
Require Import zoo.language.typeclasses.
Require Import zoo.language.notations.
Require Import zoo_std.clist.
Require Import zoo_std.domain.
Require Import zoo.options.
Notation "'queue_mpsc_3ู front'" := (
in_type "zoo_saturn.queue_mpsc_3.t" 0
)(in custom zoo_field
).
Notation "'queue_mpsc_3ู back'" := (
in_type "zoo_saturn.queue_mpsc_3.t" 1
)(in custom zoo_field
).
Definition queue_mpsc_3ู create : val :=
๐ณ๐๐ป โฝ โ
{ ยงclistู Open, ยงclistู Open }.
Definition queue_mpsc_3ู is_empty : val :=
๐ณ๐๐ป "t" โ
๐บ๐ฎ๐๐ฐ๐ต "t".{queue_mpsc_3ู front} ๐๐ถ๐๐ต
| clistู Closed โ
true
| clistู Cons โฝ โฝ โ
false
| clistู Open โ
๐บ๐ฎ๐๐ฐ๐ต "t".{queue_mpsc_3ู back} ๐๐ถ๐๐ต
| clistู Cons โฝ โฝ โ
false
| โฝ โ
true
๐ฒ๐ป๐ฑ
๐ฒ๐ป๐ฑ.
Definition queue_mpsc_3ู push_front : val :=
๐ณ๐๐ป "t" "v" โ
๐บ๐ฎ๐๐ฐ๐ต "t".{queue_mpsc_3ู front} ๐๐ถ๐๐ต
| clistู Closed โ
true
| โฝ ๐ฎ๐ "front" โ
"t" <-{queue_mpsc_3ู front} โclistู Cons[ "v", "front" ] โฎ
false
๐ฒ๐ป๐ฑ.
Definition queue_mpsc_3ู push_back : val :=
๐ฟ๐ฒ๐ฐ "push_back" "t" "v" โ
๐บ๐ฎ๐๐ฐ๐ต "t".{queue_mpsc_3ู back} ๐๐ถ๐๐ต
| clistู Closed โ
true
| โฝ ๐ฎ๐ "back" โ
๐ถ๐ณ
๐ฐ๐ฎ๐
"t".[queue_mpsc_3ู back]
"back"
โclistู Cons[ "v", "back" ]
๐๐ต๐ฒ๐ป (
false
) ๐ฒ๐น๐๐ฒ (
domainู yield () โฎ
"push_back" "t" "v"
)
๐ฒ๐ป๐ฑ.
Definition queue_mpsc_3ู pop : val :=
๐ณ๐๐ป "t" โ
๐บ๐ฎ๐๐ฐ๐ต "t".{queue_mpsc_3ู front} ๐๐ถ๐๐ต
| clistู Closed โ
ยงNone
| clistู Cons "v" "front" โ
"t" <-{queue_mpsc_3ู front} "front" โฎ
โSome( "v" )
| clistู Open โ
๐บ๐ฎ๐๐ฐ๐ต
๐ ๐ฐ๐ต๐ด "t".[queue_mpsc_3ู back] ยงclistู Open
๐๐ถ๐๐ต
| clistู Open โ
ยงNone
| โฝ ๐ฎ๐ "back" โ
๐บ๐ฎ๐๐ฐ๐ต
clistู rev_app "back" ยงclistู Open
๐๐ถ๐๐ต
| clistู Cons "v" "front" โ
"t" <-{queue_mpsc_3ู front} "front" โฎ
โSome( "v" )
| โฝ โ
๐ณ๐ฎ๐ถ๐น
๐ฒ๐ป๐ฑ
๐ฒ๐ป๐ฑ
๐ฒ๐ป๐ฑ.
Definition queue_mpsc_3ู close : val :=
๐ณ๐๐ป "t" โ
๐บ๐ฎ๐๐ฐ๐ต
๐ ๐ฐ๐ต๐ด "t".[queue_mpsc_3ู back] ยงclistู Closed
๐๐ถ๐๐ต
| clistู Closed โ
true
| โฝ ๐ฎ๐ "back" โ
"t" <-{queue_mpsc_3ู front}
clistู app
"t".{queue_mpsc_3ู front}
(clistู rev_app "back" ยงclistู Closed) โฎ
false
๐ฒ๐ป๐ฑ.