summaryrefslogtreecommitdiff
path: root/tests/coq/misc/Loops.v
diff options
context:
space:
mode:
Diffstat (limited to 'tests/coq/misc/Loops.v')
-rw-r--r--tests/coq/misc/Loops.v446
1 files changed, 430 insertions, 16 deletions
diff --git a/tests/coq/misc/Loops.v b/tests/coq/misc/Loops.v
index bd2b287b..bf0a8bc1 100644
--- a/tests/coq/misc/Loops.v
+++ b/tests/coq/misc/Loops.v
@@ -93,11 +93,32 @@ Definition sum_array (N : usize) (n : nat) (a : array u32 N) : result u32 :=
sum_array_loop N n a 0%usize 0%u32
.
+(** [loops::clear]: loop 0:
+ Source: 'tests/src/loops.rs', lines 62:0-68:1 *)
+Fixpoint clear_loop
+ (n : nat) (v : alloc_vec_Vec u32) (i : usize) : result (alloc_vec_Vec u32) :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ let i1 := alloc_vec_Vec_len u32 v in
+ if i s< i1
+ then (
+ p <-
+ alloc_vec_Vec_index_mut u32 usize
+ (core_slice_index_SliceIndexUsizeSliceTInst u32) v i;
+ let (_, index_mut_back) := p in
+ i2 <- usize_add i 1%usize;
+ v1 <- index_mut_back 0%u32;
+ clear_loop n1 v1 i2)
+ else Ok v
+ end
+.
+
(** [loops::clear]:
Source: 'tests/src/loops.rs', lines 62:0-62:30 *)
Definition clear
(n : nat) (v : alloc_vec_Vec u32) : result (alloc_vec_Vec u32) :=
- admit
+ clear_loop n v 0%usize
.
(** [loops::List]
@@ -110,10 +131,47 @@ Inductive List_t (T : Type) :=
Arguments List_Cons { _ }.
Arguments List_Nil { _ }.
+(** [loops::list_mem]: loop 0:
+ Source: 'tests/src/loops.rs', lines 76:0-85:1 *)
+Fixpoint list_mem_loop (n : nat) (x : u32) (ls : List_t u32) : result bool :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls with
+ | List_Cons y tl => if y s= x then Ok true else list_mem_loop n1 x tl
+ | List_Nil => Ok false
+ end
+ end
+.
+
(** [loops::list_mem]:
Source: 'tests/src/loops.rs', lines 76:0-76:52 *)
Definition list_mem (n : nat) (x : u32) (ls : List_t u32) : result bool :=
- admit
+ list_mem_loop n x ls
+.
+
+(** [loops::list_nth_mut_loop]: loop 0:
+ Source: 'tests/src/loops.rs', lines 88:0-98:1 *)
+Fixpoint list_nth_mut_loop_loop
+ (T : Type) (n : nat) (ls : List_t T) (i : u32) :
+ result (T * (T -> result (List_t T)))
+ :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls with
+ | List_Cons x tl =>
+ if i s= 0%u32
+ then let back := fun (ret : T) => Ok (List_Cons ret tl) in Ok (x, back)
+ else (
+ i1 <- u32_sub i 1%u32;
+ p <- list_nth_mut_loop_loop T n1 tl i1;
+ let (t, back) := p in
+ let back1 := fun (ret : T) => tl1 <- back ret; Ok (List_Cons x tl1) in
+ Ok (t, back1))
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::list_nth_mut_loop]:
@@ -122,14 +180,56 @@ Definition list_nth_mut_loop
(T : Type) (n : nat) (ls : List_t T) (i : u32) :
result (T * (T -> result (List_t T)))
:=
- admit
+ list_nth_mut_loop_loop T n ls i
+.
+
+(** [loops::list_nth_shared_loop]: loop 0:
+ Source: 'tests/src/loops.rs', lines 101:0-111:1 *)
+Fixpoint list_nth_shared_loop_loop
+ (T : Type) (n : nat) (ls : List_t T) (i : u32) : result T :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls with
+ | List_Cons x tl =>
+ if i s= 0%u32
+ then Ok x
+ else (i1 <- u32_sub i 1%u32; list_nth_shared_loop_loop T n1 tl i1)
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::list_nth_shared_loop]:
Source: 'tests/src/loops.rs', lines 101:0-101:66 *)
Definition list_nth_shared_loop
(T : Type) (n : nat) (ls : List_t T) (i : u32) : result T :=
- admit
+ list_nth_shared_loop_loop T n ls i
+.
+
+(** [loops::get_elem_mut]: loop 0:
+ Source: 'tests/src/loops.rs', lines 113:0-127:1 *)
+Fixpoint get_elem_mut_loop
+ (n : nat) (x : usize) (ls : List_t usize) :
+ result (usize * (usize -> result (List_t usize)))
+ :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls with
+ | List_Cons y tl =>
+ if y s= x
+ then
+ let back := fun (ret : usize) => Ok (List_Cons ret tl) in Ok (y, back)
+ else (
+ p <- get_elem_mut_loop n1 x tl;
+ let (i, back) := p in
+ let back1 := fun (ret : usize) => tl1 <- back ret; Ok (List_Cons y tl1)
+ in
+ Ok (i, back1))
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::get_elem_mut]:
@@ -138,7 +238,28 @@ Definition get_elem_mut
(n : nat) (slots : alloc_vec_Vec (List_t usize)) (x : usize) :
result (usize * (usize -> result (alloc_vec_Vec (List_t usize))))
:=
- admit
+ p <-
+ alloc_vec_Vec_index_mut (List_t usize) usize
+ (core_slice_index_SliceIndexUsizeSliceTInst (List_t usize)) slots 0%usize;
+ let (ls, index_mut_back) := p in
+ p1 <- get_elem_mut_loop n x ls;
+ let (i, back) := p1 in
+ let back1 := fun (ret : usize) => l <- back ret; index_mut_back l in
+ Ok (i, back1)
+.
+
+(** [loops::get_elem_shared]: loop 0:
+ Source: 'tests/src/loops.rs', lines 129:0-143:1 *)
+Fixpoint get_elem_shared_loop
+ (n : nat) (x : usize) (ls : List_t usize) : result usize :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls with
+ | List_Cons y tl => if y s= x then Ok y else get_elem_shared_loop n1 x tl
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::get_elem_shared]:
@@ -147,7 +268,10 @@ Definition get_elem_shared
(n : nat) (slots : alloc_vec_Vec (List_t usize)) (x : usize) :
result usize
:=
- admit
+ ls <-
+ alloc_vec_Vec_index (List_t usize) usize
+ (core_slice_index_SliceIndexUsizeSliceTInst (List_t usize)) slots 0%usize;
+ get_elem_shared_loop n x ls
.
(** [loops::id_mut]:
@@ -164,20 +288,101 @@ Definition id_mut
Definition id_shared (T : Type) (ls : List_t T) : result (List_t T) :=
Ok ls.
+(** [loops::list_nth_mut_loop_with_id]: loop 0:
+ Source: 'tests/src/loops.rs', lines 154:0-165:1 *)
+Fixpoint list_nth_mut_loop_with_id_loop
+ (T : Type) (n : nat) (i : u32) (ls : List_t T) :
+ result (T * (T -> result (List_t T)))
+ :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls with
+ | List_Cons x tl =>
+ if i s= 0%u32
+ then let back := fun (ret : T) => Ok (List_Cons ret tl) in Ok (x, back)
+ else (
+ i1 <- u32_sub i 1%u32;
+ p <- list_nth_mut_loop_with_id_loop T n1 i1 tl;
+ let (t, back) := p in
+ let back1 := fun (ret : T) => tl1 <- back ret; Ok (List_Cons x tl1) in
+ Ok (t, back1))
+ | List_Nil => Fail_ Failure
+ end
+ end
+.
+
(** [loops::list_nth_mut_loop_with_id]:
Source: 'tests/src/loops.rs', lines 154:0-154:75 *)
Definition list_nth_mut_loop_with_id
(T : Type) (n : nat) (ls : List_t T) (i : u32) :
result (T * (T -> result (List_t T)))
:=
- admit
+ p <- id_mut T ls;
+ let (ls1, id_mut_back) := p in
+ p1 <- list_nth_mut_loop_with_id_loop T n i ls1;
+ let (t, back) := p1 in
+ let back1 := fun (ret : T) => l <- back ret; id_mut_back l in
+ Ok (t, back1)
+.
+
+(** [loops::list_nth_shared_loop_with_id]: loop 0:
+ Source: 'tests/src/loops.rs', lines 168:0-179:1 *)
+Fixpoint list_nth_shared_loop_with_id_loop
+ (T : Type) (n : nat) (i : u32) (ls : List_t T) : result T :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls with
+ | List_Cons x tl =>
+ if i s= 0%u32
+ then Ok x
+ else (
+ i1 <- u32_sub i 1%u32; list_nth_shared_loop_with_id_loop T n1 i1 tl)
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::list_nth_shared_loop_with_id]:
Source: 'tests/src/loops.rs', lines 168:0-168:70 *)
Definition list_nth_shared_loop_with_id
(T : Type) (n : nat) (ls : List_t T) (i : u32) : result T :=
- admit
+ ls1 <- id_shared T ls; list_nth_shared_loop_with_id_loop T n i ls1
+.
+
+(** [loops::list_nth_mut_loop_pair]: loop 0:
+ Source: 'tests/src/loops.rs', lines 184:0-205:1 *)
+Fixpoint list_nth_mut_loop_pair_loop
+ (T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
+ result ((T * T) * (T -> result (List_t T)) * (T -> result (List_t T)))
+ :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls0 with
+ | List_Cons x0 tl0 =>
+ match ls1 with
+ | List_Cons x1 tl1 =>
+ if i s= 0%u32
+ then
+ let back'a := fun (ret : T) => Ok (List_Cons ret tl0) in
+ let back'b := fun (ret : T) => Ok (List_Cons ret tl1) in
+ Ok ((x0, x1), back'a, back'b)
+ else (
+ i1 <- u32_sub i 1%u32;
+ t <- list_nth_mut_loop_pair_loop T n1 tl0 tl1 i1;
+ let '(p, back'a, back'b) := t in
+ let back'a1 :=
+ fun (ret : T) => tl01 <- back'a ret; Ok (List_Cons x0 tl01) in
+ let back'b1 :=
+ fun (ret : T) => tl11 <- back'b ret; Ok (List_Cons x1 tl11) in
+ Ok (p, back'a1, back'b1))
+ | List_Nil => Fail_ Failure
+ end
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::list_nth_mut_loop_pair]:
@@ -186,7 +391,31 @@ Definition list_nth_mut_loop_pair
(T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
result ((T * T) * (T -> result (List_t T)) * (T -> result (List_t T)))
:=
- admit
+ list_nth_mut_loop_pair_loop T n ls0 ls1 i
+.
+
+(** [loops::list_nth_shared_loop_pair]: loop 0:
+ Source: 'tests/src/loops.rs', lines 208:0-229:1 *)
+Fixpoint list_nth_shared_loop_pair_loop
+ (T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
+ result (T * T)
+ :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls0 with
+ | List_Cons x0 tl0 =>
+ match ls1 with
+ | List_Cons x1 tl1 =>
+ if i s= 0%u32
+ then Ok (x0, x1)
+ else (
+ i1 <- u32_sub i 1%u32; list_nth_shared_loop_pair_loop T n1 tl0 tl1 i1)
+ | List_Nil => Fail_ Failure
+ end
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::list_nth_shared_loop_pair]:
@@ -195,7 +424,43 @@ Definition list_nth_shared_loop_pair
(T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
result (T * T)
:=
- admit
+ list_nth_shared_loop_pair_loop T n ls0 ls1 i
+.
+
+(** [loops::list_nth_mut_loop_pair_merge]: loop 0:
+ Source: 'tests/src/loops.rs', lines 233:0-248:1 *)
+Fixpoint list_nth_mut_loop_pair_merge_loop
+ (T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
+ result ((T * T) * ((T * T) -> result ((List_t T) * (List_t T))))
+ :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls0 with
+ | List_Cons x0 tl0 =>
+ match ls1 with
+ | List_Cons x1 tl1 =>
+ if i s= 0%u32
+ then
+ let back :=
+ fun (ret : (T * T)) =>
+ let (t, t1) := ret in Ok (List_Cons t tl0, List_Cons t1 tl1) in
+ Ok ((x0, x1), back)
+ else (
+ i1 <- u32_sub i 1%u32;
+ p <- list_nth_mut_loop_pair_merge_loop T n1 tl0 tl1 i1;
+ let (p1, back) := p in
+ let back1 :=
+ fun (ret : (T * T)) =>
+ p2 <- back ret;
+ let (tl01, tl11) := p2 in
+ Ok (List_Cons x0 tl01, List_Cons x1 tl11) in
+ Ok (p1, back1))
+ | List_Nil => Fail_ Failure
+ end
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::list_nth_mut_loop_pair_merge]:
@@ -204,7 +469,32 @@ Definition list_nth_mut_loop_pair_merge
(T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
result ((T * T) * ((T * T) -> result ((List_t T) * (List_t T))))
:=
- admit
+ list_nth_mut_loop_pair_merge_loop T n ls0 ls1 i
+.
+
+(** [loops::list_nth_shared_loop_pair_merge]: loop 0:
+ Source: 'tests/src/loops.rs', lines 251:0-266:1 *)
+Fixpoint list_nth_shared_loop_pair_merge_loop
+ (T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
+ result (T * T)
+ :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls0 with
+ | List_Cons x0 tl0 =>
+ match ls1 with
+ | List_Cons x1 tl1 =>
+ if i s= 0%u32
+ then Ok (x0, x1)
+ else (
+ i1 <- u32_sub i 1%u32;
+ list_nth_shared_loop_pair_merge_loop T n1 tl0 tl1 i1)
+ | List_Nil => Fail_ Failure
+ end
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::list_nth_shared_loop_pair_merge]:
@@ -213,7 +503,38 @@ Definition list_nth_shared_loop_pair_merge
(T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
result (T * T)
:=
- admit
+ list_nth_shared_loop_pair_merge_loop T n ls0 ls1 i
+.
+
+(** [loops::list_nth_mut_shared_loop_pair]: loop 0:
+ Source: 'tests/src/loops.rs', lines 269:0-284:1 *)
+Fixpoint list_nth_mut_shared_loop_pair_loop
+ (T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
+ result ((T * T) * (T -> result (List_t T)))
+ :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls0 with
+ | List_Cons x0 tl0 =>
+ match ls1 with
+ | List_Cons x1 tl1 =>
+ if i s= 0%u32
+ then
+ let back := fun (ret : T) => Ok (List_Cons ret tl0) in
+ Ok ((x0, x1), back)
+ else (
+ i1 <- u32_sub i 1%u32;
+ p <- list_nth_mut_shared_loop_pair_loop T n1 tl0 tl1 i1;
+ let (p1, back) := p in
+ let back1 :=
+ fun (ret : T) => tl01 <- back ret; Ok (List_Cons x0 tl01) in
+ Ok (p1, back1))
+ | List_Nil => Fail_ Failure
+ end
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::list_nth_mut_shared_loop_pair]:
@@ -222,7 +543,38 @@ Definition list_nth_mut_shared_loop_pair
(T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
result ((T * T) * (T -> result (List_t T)))
:=
- admit
+ list_nth_mut_shared_loop_pair_loop T n ls0 ls1 i
+.
+
+(** [loops::list_nth_mut_shared_loop_pair_merge]: loop 0:
+ Source: 'tests/src/loops.rs', lines 288:0-303:1 *)
+Fixpoint list_nth_mut_shared_loop_pair_merge_loop
+ (T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
+ result ((T * T) * (T -> result (List_t T)))
+ :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls0 with
+ | List_Cons x0 tl0 =>
+ match ls1 with
+ | List_Cons x1 tl1 =>
+ if i s= 0%u32
+ then
+ let back := fun (ret : T) => Ok (List_Cons ret tl0) in
+ Ok ((x0, x1), back)
+ else (
+ i1 <- u32_sub i 1%u32;
+ p <- list_nth_mut_shared_loop_pair_merge_loop T n1 tl0 tl1 i1;
+ let (p1, back) := p in
+ let back1 :=
+ fun (ret : T) => tl01 <- back ret; Ok (List_Cons x0 tl01) in
+ Ok (p1, back1))
+ | List_Nil => Fail_ Failure
+ end
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::list_nth_mut_shared_loop_pair_merge]:
@@ -231,7 +583,38 @@ Definition list_nth_mut_shared_loop_pair_merge
(T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
result ((T * T) * (T -> result (List_t T)))
:=
- admit
+ list_nth_mut_shared_loop_pair_merge_loop T n ls0 ls1 i
+.
+
+(** [loops::list_nth_shared_mut_loop_pair]: loop 0:
+ Source: 'tests/src/loops.rs', lines 307:0-322:1 *)
+Fixpoint list_nth_shared_mut_loop_pair_loop
+ (T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
+ result ((T * T) * (T -> result (List_t T)))
+ :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls0 with
+ | List_Cons x0 tl0 =>
+ match ls1 with
+ | List_Cons x1 tl1 =>
+ if i s= 0%u32
+ then
+ let back := fun (ret : T) => Ok (List_Cons ret tl1) in
+ Ok ((x0, x1), back)
+ else (
+ i1 <- u32_sub i 1%u32;
+ p <- list_nth_shared_mut_loop_pair_loop T n1 tl0 tl1 i1;
+ let (p1, back) := p in
+ let back1 :=
+ fun (ret : T) => tl11 <- back ret; Ok (List_Cons x1 tl11) in
+ Ok (p1, back1))
+ | List_Nil => Fail_ Failure
+ end
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::list_nth_shared_mut_loop_pair]:
@@ -240,7 +623,38 @@ Definition list_nth_shared_mut_loop_pair
(T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
result ((T * T) * (T -> result (List_t T)))
:=
- admit
+ list_nth_shared_mut_loop_pair_loop T n ls0 ls1 i
+.
+
+(** [loops::list_nth_shared_mut_loop_pair_merge]: loop 0:
+ Source: 'tests/src/loops.rs', lines 326:0-341:1 *)
+Fixpoint list_nth_shared_mut_loop_pair_merge_loop
+ (T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
+ result ((T * T) * (T -> result (List_t T)))
+ :=
+ match n with
+ | O => Fail_ OutOfFuel
+ | S n1 =>
+ match ls0 with
+ | List_Cons x0 tl0 =>
+ match ls1 with
+ | List_Cons x1 tl1 =>
+ if i s= 0%u32
+ then
+ let back := fun (ret : T) => Ok (List_Cons ret tl1) in
+ Ok ((x0, x1), back)
+ else (
+ i1 <- u32_sub i 1%u32;
+ p <- list_nth_shared_mut_loop_pair_merge_loop T n1 tl0 tl1 i1;
+ let (p1, back) := p in
+ let back1 :=
+ fun (ret : T) => tl11 <- back ret; Ok (List_Cons x1 tl11) in
+ Ok (p1, back1))
+ | List_Nil => Fail_ Failure
+ end
+ | List_Nil => Fail_ Failure
+ end
+ end
.
(** [loops::list_nth_shared_mut_loop_pair_merge]:
@@ -249,7 +663,7 @@ Definition list_nth_shared_mut_loop_pair_merge
(T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
result ((T * T) * (T -> result (List_t T)))
:=
- admit
+ list_nth_shared_mut_loop_pair_merge_loop T n ls0 ls1 i
.
(** [loops::ignore_input_mut_borrow]: loop 0: