From 6db835db88c4bcf0e00ce1a7a6bc396382b393c3 Mon Sep 17 00:00:00 2001 From: Son Ho Date: Fri, 11 Nov 2022 21:34:29 +0100 Subject: Reorganize the project to prepare for new backends --- tests/fstar/misc/External.Funs.fst | 130 +++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 tests/fstar/misc/External.Funs.fst (limited to 'tests/fstar/misc/External.Funs.fst') diff --git a/tests/fstar/misc/External.Funs.fst b/tests/fstar/misc/External.Funs.fst new file mode 100644 index 00000000..68a0061e --- /dev/null +++ b/tests/fstar/misc/External.Funs.fst @@ -0,0 +1,130 @@ +(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *) +(** [external]: function definitions *) +module External.Funs +open Primitives +include External.Types +include External.Opaque + +#set-options "--z3rlimit 50 --fuel 1 --ifuel 1" + +(** [external::swap] *) +let swap_fwd (t : Type0) (x : t) (y : t) (st : state) : result (state & unit) = + begin match core_mem_swap_fwd t x y st with + | Fail -> Fail + | Return (st0, _) -> + begin match core_mem_swap_back0 t x y st st0 with + | Fail -> Fail + | Return (st1, _) -> + begin match core_mem_swap_back1 t x y st st1 with + | Fail -> Fail + | Return (st2, _) -> Return (st2, ()) + end + end + end + +(** [external::swap] *) +let swap_back + (t : Type0) (x : t) (y : t) (st : state) (st0 : state) : + result (state & (t & t)) + = + begin match core_mem_swap_fwd t x y st with + | Fail -> Fail + | Return (st1, _) -> + begin match core_mem_swap_back0 t x y st st1 with + | Fail -> Fail + | Return (st2, x0) -> + begin match core_mem_swap_back1 t x y st st2 with + | Fail -> Fail + | Return (_, y0) -> Return (st0, (x0, y0)) + end + end + end + +(** [external::test_new_non_zero_u32] *) +let test_new_non_zero_u32_fwd + (x : u32) (st : state) : result (state & core_num_nonzero_non_zero_u32_t) = + begin match core_num_nonzero_non_zero_u32_new_fwd x st with + | Fail -> Fail + | Return (st0, opt) -> + begin match + core_option_option_unwrap_fwd core_num_nonzero_non_zero_u32_t opt st0 + with + | Fail -> Fail + | Return (st1, nzu) -> Return (st1, nzu) + end + end + +(** [external::test_vec] *) +let test_vec_fwd : result unit = + let v = vec_new u32 in + begin match vec_push_back u32 v 0 with + | Fail -> Fail + | Return _ -> Return () + end + +(** Unit test for [external::test_vec] *) +let _ = assert_norm (test_vec_fwd = Return ()) + +(** [external::custom_swap] *) +let custom_swap_fwd + (t : Type0) (x : t) (y : t) (st : state) : result (state & t) = + begin match core_mem_swap_fwd t x y st with + | Fail -> Fail + | Return (st0, _) -> + begin match core_mem_swap_back0 t x y st st0 with + | Fail -> Fail + | Return (st1, x0) -> + begin match core_mem_swap_back1 t x y st st1 with + | Fail -> Fail + | Return (st2, _) -> Return (st2, x0) + end + end + end + +(** [external::custom_swap] *) +let custom_swap_back + (t : Type0) (x : t) (y : t) (st : state) (ret : t) (st0 : state) : + result (state & (t & t)) + = + begin match core_mem_swap_fwd t x y st with + | Fail -> Fail + | Return (st1, _) -> + begin match core_mem_swap_back0 t x y st st1 with + | Fail -> Fail + | Return (st2, _) -> + begin match core_mem_swap_back1 t x y st st2 with + | Fail -> Fail + | Return (_, y0) -> Return (st0, (ret, y0)) + end + end + end + +(** [external::test_custom_swap] *) +let test_custom_swap_fwd + (x : u32) (y : u32) (st : state) : result (state & unit) = + begin match custom_swap_fwd u32 x y st with + | Fail -> Fail + | Return (st0, _) -> Return (st0, ()) + end + +(** [external::test_custom_swap] *) +let test_custom_swap_back + (x : u32) (y : u32) (st : state) (st0 : state) : + result (state & (u32 & u32)) + = + begin match custom_swap_back u32 x y st 1 st0 with + | Fail -> Fail + | Return (st1, (x0, y0)) -> Return (st1, (x0, y0)) + end + +(** [external::test_swap_non_zero] *) +let test_swap_non_zero_fwd (x : u32) (st : state) : result (state & u32) = + begin match swap_fwd u32 x 0 st with + | Fail -> Fail + | Return (st0, _) -> + begin match swap_back u32 x 0 st st0 with + | Fail -> Fail + | Return (st1, (x0, _)) -> if x0 = 0 then Fail else Return (st1, x0) + end + end + -- cgit v1.2.3