summaryrefslogtreecommitdiff
path: root/tests/fstar
diff options
context:
space:
mode:
authorSon Ho2022-12-17 16:54:57 +0100
committerSon HO2023-02-03 11:21:46 +0100
commit0f0cfff07333a4e7762443e261ae9141ce373e54 (patch)
tree8e7c087674ca82df3f3e8f72cd84741cc37d2c39 /tests/fstar
parent78c869d0255f28e7b225ee3ffde7de7bceb7b688 (diff)
Regenerate the tests
Diffstat (limited to '')
-rw-r--r--tests/fstar/misc/Loops.Clauses.Template.fst17
-rw-r--r--tests/fstar/misc/Loops.Clauses.fst17
-rw-r--r--tests/fstar/misc/Loops.Funs.fst174
3 files changed, 208 insertions, 0 deletions
diff --git a/tests/fstar/misc/Loops.Clauses.Template.fst b/tests/fstar/misc/Loops.Clauses.Template.fst
index 79a9dc4e..3e44ef4f 100644
--- a/tests/fstar/misc/Loops.Clauses.Template.fst
+++ b/tests/fstar/misc/Loops.Clauses.Template.fst
@@ -9,8 +9,25 @@ open Loops.Types
(** [loops::sum]: decreases clause *)
unfold let sum_decreases (max : u32) (i : u32) (s : u32) : nat = admit ()
+(** [loops::sum_with_borrows]: decreases clause *)
+unfold
+let sum_with_borrows_decreases (max : u32) (mi : u32) (ms : u32) : nat =
+ admit ()
+
(** [loops::list_nth_mut_loop]: decreases clause *)
unfold
let list_nth_mut_loop_decreases (t : Type0) (ls : list_t t) (i : u32) : nat =
admit ()
+(** [loops::list_nth_mut_loop_pair]: decreases clause *)
+unfold
+let list_nth_mut_loop_pair_decreases (t : Type0) (l : list_t t) (l0 : list_t t)
+ (i : u32) : nat =
+ admit ()
+
+(** [loops::list_nth_mut_loop_pair_merge]: decreases clause *)
+unfold
+let list_nth_mut_loop_pair_merge_decreases (t : Type0) (l : list_t t)
+ (l0 : list_t t) (i : u32) : nat =
+ admit ()
+
diff --git a/tests/fstar/misc/Loops.Clauses.fst b/tests/fstar/misc/Loops.Clauses.fst
index 2087f2e7..d315a4f0 100644
--- a/tests/fstar/misc/Loops.Clauses.fst
+++ b/tests/fstar/misc/Loops.Clauses.fst
@@ -9,8 +9,25 @@ open Loops.Types
unfold let sum_decreases (max : u32) (i : u32) (s : u32) : nat =
if i <= max then max - i else 0
+
+(** [loops::sum_with_borrows]: decreases clause *)
+unfold
+let sum_with_borrows_decreases (max : u32) (mi : u32) (ms : u32) : nat =
+ if mi <= max then max - mi else 0
+
(** [loops::list_nth_mut_loop]: decreases clause *)
unfold
let list_nth_mut_loop_decreases (t : Type0) (ls : list_t t) (i : u32) : nat =
i
+(** [loops::list_nth_mut_loop_pair]: decreases clause *)
+unfold
+let list_nth_mut_loop_pair_decreases (t : Type0) (l : list_t t) (l0 : list_t t)
+ (i : u32) : nat =
+ i
+
+(** [loops::list_nth_mut_loop_pair_merge]: decreases clause *)
+unfold
+let list_nth_mut_loop_pair_merge_decreases (t : Type0) (l : list_t t)
+ (l0 : list_t t) (i : u32) : nat =
+ i
diff --git a/tests/fstar/misc/Loops.Funs.fst b/tests/fstar/misc/Loops.Funs.fst
index cf05b7f2..05d1f70f 100644
--- a/tests/fstar/misc/Loops.Funs.fst
+++ b/tests/fstar/misc/Loops.Funs.fst
@@ -27,6 +27,27 @@ let rec sum_loop_fwd
(** [loops::sum] *)
let sum_fwd (max : u32) : result u32 = sum_loop_fwd max 0 0
+(** [loops::sum_with_borrows] *)
+let rec sum_with_borrows_loop_fwd
+ (max : u32) (mi : u32) (ms : u32) :
+ Tot (result u32) (decreases (sum_with_borrows_decreases max mi ms))
+ =
+ if mi < max
+ then
+ begin match u32_add ms mi with
+ | Fail e -> Fail e
+ | Return ms0 ->
+ begin match u32_add mi 1 with
+ | Fail e -> Fail e
+ | Return mi0 -> sum_with_borrows_loop_fwd max mi0 ms0
+ end
+ end
+ else u32_mul ms 2
+
+(** [loops::sum_with_borrows] *)
+let sum_with_borrows_fwd (max : u32) : result u32 =
+ sum_with_borrows_loop_fwd max 0 0
+
(** [loops::list_nth_mut_loop] *)
let rec list_nth_mut_loop_loop_fwd
(t : Type0) (ls : list_t t) (i : u32) :
@@ -74,3 +95,156 @@ let list_nth_mut_loop_back
(t : Type0) (ls : list_t t) (i : u32) (ret : t) : result (list_t t) =
list_nth_mut_loop_loop_back t ls i ret
+(** [loops::list_nth_mut_loop_pair] *)
+let rec list_nth_mut_loop_pair_loop_fwd
+ (t : Type0) (l : list_t t) (l0 : list_t t) (i : u32) :
+ Tot (result (t & t)) (decreases (list_nth_mut_loop_pair_decreases t l l0 i))
+ =
+ begin match l with
+ | ListCons x0 tl0 ->
+ begin match l0 with
+ | ListCons x1 tl1 ->
+ if i = 0
+ then Return (x0, x1)
+ else
+ begin match u32_sub i 1 with
+ | Fail e -> Fail e
+ | Return i0 -> list_nth_mut_loop_pair_loop_fwd t tl0 tl1 i0
+ end
+ | ListNil -> Fail Failure
+ end
+ | ListNil -> Fail Failure
+ end
+
+(** [loops::list_nth_mut_loop_pair] *)
+let list_nth_mut_loop_pair_fwd
+ (t : Type0) (ls0 : list_t t) (ls1 : list_t t) (i : u32) : result (t & t) =
+ list_nth_mut_loop_pair_loop_fwd t ls0 ls1 i
+
+(** [loops::list_nth_mut_loop_pair] *)
+let rec list_nth_mut_loop_pair_loop_back'a
+ (t : Type0) (l : list_t t) (l0 : list_t t) (i : u32) (ret : t) :
+ Tot (result (list_t t))
+ (decreases (list_nth_mut_loop_pair_decreases t l l0 i))
+ =
+ begin match l with
+ | ListCons x0 tl0 ->
+ begin match l0 with
+ | ListCons x1 tl1 ->
+ if i = 0
+ then Return (ListCons ret tl0)
+ else
+ begin match u32_sub i 1 with
+ | Fail e -> Fail e
+ | Return i0 ->
+ begin match list_nth_mut_loop_pair_loop_back'a t tl0 tl1 i0 ret with
+ | Fail e -> Fail e
+ | Return l1 -> Return (ListCons x0 l1)
+ end
+ end
+ | ListNil -> Fail Failure
+ end
+ | ListNil -> Fail Failure
+ end
+
+(** [loops::list_nth_mut_loop_pair] *)
+let list_nth_mut_loop_pair_back'a
+ (t : Type0) (ls0 : list_t t) (ls1 : list_t t) (i : u32) (ret : t) :
+ result (list_t t)
+ =
+ list_nth_mut_loop_pair_loop_back'a t ls0 ls1 i ret
+
+(** [loops::list_nth_mut_loop_pair] *)
+let rec list_nth_mut_loop_pair_loop_back'b
+ (t : Type0) (l : list_t t) (l0 : list_t t) (i : u32) (ret : t) :
+ Tot (result (list_t t))
+ (decreases (list_nth_mut_loop_pair_decreases t l l0 i))
+ =
+ begin match l with
+ | ListCons x0 tl0 ->
+ begin match l0 with
+ | ListCons x1 tl1 ->
+ if i = 0
+ then Return (ListCons ret tl1)
+ else
+ begin match u32_sub i 1 with
+ | Fail e -> Fail e
+ | Return i0 ->
+ begin match list_nth_mut_loop_pair_loop_back'b t tl0 tl1 i0 ret with
+ | Fail e -> Fail e
+ | Return l1 -> Return (ListCons x1 l1)
+ end
+ end
+ | ListNil -> Fail Failure
+ end
+ | ListNil -> Fail Failure
+ end
+
+(** [loops::list_nth_mut_loop_pair] *)
+let list_nth_mut_loop_pair_back'b
+ (t : Type0) (ls0 : list_t t) (ls1 : list_t t) (i : u32) (ret : t) :
+ result (list_t t)
+ =
+ list_nth_mut_loop_pair_loop_back'b t ls0 ls1 i ret
+
+(** [loops::list_nth_mut_loop_pair_merge] *)
+let rec list_nth_mut_loop_pair_merge_loop_fwd
+ (t : Type0) (l : list_t t) (l0 : list_t t) (i : u32) :
+ Tot (result (t & t))
+ (decreases (list_nth_mut_loop_pair_merge_decreases t l l0 i))
+ =
+ begin match l with
+ | ListCons x0 tl0 ->
+ begin match l0 with
+ | ListCons x1 tl1 ->
+ if i = 0
+ then Return (x0, x1)
+ else
+ begin match u32_sub i 1 with
+ | Fail e -> Fail e
+ | Return i0 -> list_nth_mut_loop_pair_merge_loop_fwd t tl0 tl1 i0
+ end
+ | ListNil -> Fail Failure
+ end
+ | ListNil -> Fail Failure
+ end
+
+(** [loops::list_nth_mut_loop_pair_merge] *)
+let list_nth_mut_loop_pair_merge_fwd
+ (t : Type0) (ls0 : list_t t) (ls1 : list_t t) (i : u32) : result (t & t) =
+ list_nth_mut_loop_pair_merge_loop_fwd t ls0 ls1 i
+
+(** [loops::list_nth_mut_loop_pair_merge] *)
+let rec list_nth_mut_loop_pair_merge_loop_back
+ (t : Type0) (l : list_t t) (l0 : list_t t) (i : u32) (ret : (t & t)) :
+ Tot (result ((list_t t) & (list_t t)))
+ (decreases (list_nth_mut_loop_pair_merge_decreases t l l0 i))
+ =
+ begin match l with
+ | ListCons x0 tl0 ->
+ begin match l0 with
+ | ListCons x1 tl1 ->
+ if i = 0
+ then let (x, x2) = ret in Return (ListCons x tl0, ListCons x2 tl1)
+ else
+ begin match u32_sub i 1 with
+ | Fail e -> Fail e
+ | Return i0 ->
+ begin match list_nth_mut_loop_pair_merge_loop_back t tl0 tl1 i0 ret
+ with
+ | Fail e -> Fail e
+ | Return (l1, l2) -> Return (ListCons x0 l1, ListCons x1 l2)
+ end
+ end
+ | ListNil -> Fail Failure
+ end
+ | ListNil -> Fail Failure
+ end
+
+(** [loops::list_nth_mut_loop_pair_merge] *)
+let list_nth_mut_loop_pair_merge_back
+ (t : Type0) (ls0 : list_t t) (ls1 : list_t t) (i : u32) (ret : (t & t)) :
+ result ((list_t t) & (list_t t))
+ =
+ list_nth_mut_loop_pair_merge_loop_back t ls0 ls1 i ret
+