Module Gospelstdlib.Sequence
Gospel declaration:
type 'a t = 'a sequence
An alias for sequence
Gospel declaration:
function length (s: 'a t): integer
length s
is the length of the sequence s
.
Gospel declaration:
function empty : 'a t
empty
is the empty sequence.
Gospel declaration:
function singleton (x: 'a) : 'a t
singleton
is an alias for return
.
Gospel declaration:
function init (n: integer) (f: integer -> 'a) : 'a t
init n f
is the sequence containing f 0
, f 1
, ...
, f n
.
Gospel declaration:
function cons (x: 'a) (s: 'a t): 'a t
cons x s
is the sequence containing x
followed by the elements of s
.
Gospel declaration:
function snoc (s: 'a t) (x: 'a): 'a t
snoc s x
is the sequence containing the elements of s
followed by x
.
Gospel declaration:
function hd (s: 'a t) : 'a
When s
contains one or more elements, hd s
is the first element of s
.
Gospel declaration:
function tl (s: 'a t) : 'a t
When s
contains one or more elements, tl s
is the sequence of the elements of s
, starting at position 2.
Gospel declaration:
function append (s s': 'a t) : 'a t
append s s'
is s ++ s'
.
Gospel declaration:
predicate mem (s: 'a t) (x: 'a)
mem s x
holds iff x
is in s
.
Gospel declaration:
function map (f: 'a -> 'b) (s: 'a t) : 'b t
map f s
is a sequence whose elements are the elements of s
, transformed by f
.
Gospel declaration:
function filter (f: 'a -> bool) (s: 'a t) : 'a t
filter f s
is a sequence whose elements are the elements of s
, that satisfy f
.
Gospel declaration:
function filter_map (f: 'a -> 'b option) (s: 'a t) : 'b t
filter_map f s
is a sequence whose elements are the elements of s
, transformed by f
. An element x
is dropped whenever f x
is None
.
Gospel declaration:
function get (s: 'a t) (i: integer) : 'a
get s i
is s[i]
.
Gospel declaration:
function set (s: 'a t) (i: integer) (x: 'a): 'a t
set s i x
is the sequence s
where the i
th element is x
.
Gospel declaration:
function rev (s: 'a t) : 'a t
rev s
is the sequence containing the same elements as s
, in reverse order.
Gospel declaration:
function rec fold_left (f: 'a -> 'b -> 'a) (acc: 'a) (s: 'b sequence) : 'a
fold_left f acc s
is f (... (f (f acc s[0]) s[1]) ...) s[n-1]
, where n
is the length of s
.
Gospel declaration:
function rec fold_right (f: 'a -> 'b -> 'b) (s: 'a t) (acc: 'b) : 'b
fold_right f s acc
is f s[1] (f s[2] (... (f s[n] acc) ...))
where n
is the length of s
.