#include "prelude/params.hats"
#if VERBOSE_PRELUDE #then
#print "Loading [list0.sats] starts!\n"
#endif
castfn list0_of_list1 {a:t@ype} (xs: List a):<> list0 a
= "atspre_list0_of_list1"
castfn list0_of_list_vt {a:t@ype} (xs: List_vt a):<> list0 a
= "atspre_list0_of_list_vt"
castfn list1_of_list0 {a:t@ype} (xs: list0 a):<> List a
= "atspre_list1_of_list0"
fun{a:t@ype}
list0_make_arrsz
{n:nat} (arrsz: arraysize (a, n)):<> list0 a
fun{a:t@ype} list0_append (xs: list0 a, ys: list0 a):<> list0 a
overload + with list0_append
fun{a:t@ype} list0_concat (xs: list0 (list0 a)):<> list0 a
fun{a:t@ype} list0_exists_fun (xs: list0 a, f: a -<fun1> bool): bool
fun{a:t@ype} list0_exists_cloref (xs: list0 a, f: a -<cloref1> bool): bool
fun{a:t@ype} list0_filter_fun (xs: list0 a, pred: a -<fun1> bool): list0 a
fun{a:t@ype} list0_filter_cloref (xs: list0 a, pred: a -<cloref1> bool): list0 a
fun{init,a:t@ype}
list0_fold_left {f:eff}
(f: (init, a) -<cloref,f> init, ini: init, xs: list0 a):<f> init
fun{a,sink:t@ype}
list0_fold_right {f:eff}
(f: (a, sink) -<cloref,f> sink, xs: list0 a, snk: sink):<f> sink
fun{a:t@ype} list0_forall_fun (xs: list0 a, f: a -<fun1> bool): bool
fun{a:t@ype} list0_forall_cloref (xs: list0 a, f: a -<cloref1> bool): bool
fun{a:t@ype} list0_foreach_fun (xs: list0 a, f: a -<fun1> void): void
fun{a:t@ype} list0_foreach_cloref (xs: list0 a, f: a -<cloref1> void): void
fun{a:t@ype} list0_head_exn (xs: list0 a): a
fun{a:t@ype} list0_length (xs: list0 a):<> int
fun{a,b:t@ype} list0_map_fun (xs: list0 a, f: a -<fun1> b): list0 b
fun{a,b:t@ype} list0_map_cloref (xs: list0 a, f: a -<cloref1> b): list0 b
fun{a1,a2,b:t@ype} list0_map2_fun
(xs1: list0 a1, xs2: list0 a2, f: (a1, a2) -<fun1> b): list0 b
fun{a1,a2,b:t@ype} list0_map2_cloref
(xs1: list0 a1, xs2: list0 a2, f: (a1, a2) -<cloref1> b): list0 b
fun{a:t@ype} list0_nth_exn (xs: list0 a, i: int): a
fun{a:t@ype} list0_nth_opt (xs: list0 a, i: int): Option a
fun{a:t@ype} list0_reverse (xs: list0 a): list0 a
fun{a:t@ype} list0_reverse_append (xs: list0 a, ys: list0 a): list0 a
fun{a:t@ype} list0_tail_exn (xs: list0 a): list0 a
fun{a:t@ype} list0_take_exn (xs: list0 a, n: int): list0 a
fun{a:t@ype} list0_drop_exn (xs: list0 a, n: int): list0 a
#if VERBOSE_PRELUDE #then
#print "Loading [list0.sats] finishes!\n"
#endif