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