Library zoo_std.queue_1__code
Require Import zoo.prelude.
Require Import zoo.language.typeclasses.
Require Import zoo.language.notations.
Require Import zoo_std.chain.
Require Import zoo.options.
Notation "'queue_1ู front'" := (
in_type "zoo_std.queue_1.t" 0
)(in custom zoo_field
).
Notation "'queue_1ู back'" := (
in_type "zoo_std.queue_1.t" 1
)(in custom zoo_field
).
Definition queue_1ู create : val :=
๐ณ๐๐ป โฝ โ
๐น๐ฒ๐ "front" = { (), () } ๐ถ๐ป
{ "front", "front" }.
Definition queue_1ู is_empty : val :=
๐ณ๐๐ป "t" โ
"t".{queue_1ู front} == "t".{queue_1ู back}.
Definition queue_1ู push : val :=
๐ณ๐๐ป "t" "v" โ
๐น๐ฒ๐ "back" = "t".{queue_1ู back} ๐ถ๐ป
๐น๐ฒ๐ "new_back" = { (), () } ๐ถ๐ป
"back" <-{chainู next} "new_back" โฎ
"back" <-{chainู data} "v" โฎ
"t" <-{queue_1ู back} "new_back".
Definition queue_1ู pop : val :=
๐ณ๐๐ป "t" โ
๐ถ๐ณ queue_1ู is_empty "t" ๐๐ต๐ฒ๐ป (
ยงNone
) ๐ฒ๐น๐๐ฒ (
๐น๐ฒ๐ "front" = "t".{queue_1ู front} ๐ถ๐ป
"t" <-{queue_1ู front} "front".{chainู next} โฎ
๐น๐ฒ๐ "v" = "front".{chainู data} ๐ถ๐ป
โSome( "v" )
).
Require Import zoo.language.typeclasses.
Require Import zoo.language.notations.
Require Import zoo_std.chain.
Require Import zoo.options.
Notation "'queue_1ู front'" := (
in_type "zoo_std.queue_1.t" 0
)(in custom zoo_field
).
Notation "'queue_1ู back'" := (
in_type "zoo_std.queue_1.t" 1
)(in custom zoo_field
).
Definition queue_1ู create : val :=
๐ณ๐๐ป โฝ โ
๐น๐ฒ๐ "front" = { (), () } ๐ถ๐ป
{ "front", "front" }.
Definition queue_1ู is_empty : val :=
๐ณ๐๐ป "t" โ
"t".{queue_1ู front} == "t".{queue_1ู back}.
Definition queue_1ู push : val :=
๐ณ๐๐ป "t" "v" โ
๐น๐ฒ๐ "back" = "t".{queue_1ู back} ๐ถ๐ป
๐น๐ฒ๐ "new_back" = { (), () } ๐ถ๐ป
"back" <-{chainู next} "new_back" โฎ
"back" <-{chainู data} "v" โฎ
"t" <-{queue_1ู back} "new_back".
Definition queue_1ู pop : val :=
๐ณ๐๐ป "t" โ
๐ถ๐ณ queue_1ู is_empty "t" ๐๐ต๐ฒ๐ป (
ยงNone
) ๐ฒ๐น๐๐ฒ (
๐น๐ฒ๐ "front" = "t".{queue_1ู front} ๐ถ๐ป
"t" <-{queue_1ู front} "front".{chainู next} โฎ
๐น๐ฒ๐ "v" = "front".{chainู data} ๐ถ๐ป
โSome( "v" )
).