Deque
Types
Functions
def new_deque (_ : Unit) : {d : Deque a | deque_size d = 0}
def push_back (x : a) (1 d : Deque a) : {out : Deque a | deque_size out = deque_size d + 1}
def push_front (x : a) (1 d : Deque a) : {out : Deque a | deque_size out = deque_size d + 1}
def pop_back (1 d : Deque a | deque_size d > 0) : {p : DequePop a | pop_size p = deque_size d - 1}
def pop_front (1 d : Deque a | deque_size d > 0) : {p : DequePop a | pop_size p = deque_size d - 1}
def pop_value (p : DequePop a) : a
def pop_deque (p : DequePop a) : {d : Deque a | deque_size d = pop_size p}
def peek_back (1 d : Deque a | deque_size d > 0) : {p : DequePeek a | peek_size p = deque_size d}
def peek_front (1 d : Deque a | deque_size d > 0) : {p : DequePeek a | peek_size p = deque_size d}
def peek_value (p : DequePeek a) : a
def peek_deque (p : DequePeek a) : {d : Deque a | deque_size d = peek_size p}
def len_of (1 d : Deque a) : {l : DequeLen a | held_size l = deque_size d}
def len_value (l : DequeLen a) : {n : Int | n = held_size l && n ≥ 0}
def len_deque (l : DequeLen a) : {d : Deque a | deque_size d = held_size l}
def discard (1 d : Deque a | deque_size d = 0) : Unit
Uninterpreted
Functions declared as def f ... = uninterpreted: only their signature is known to the verifier; they have no body.
def deque_size : (d : Deque a) → Int
def pop_size : (p : DequePop a) → Int
def peek_size : (p : DequePeek a) → Int
def held_size : (l : DequeLen a) → Int