summaryrefslogtreecommitdiff
path: root/tests/coq/misc/Loops.v
diff options
context:
space:
mode:
authorAymeric Fromherz2024-05-30 12:33:05 +0200
committerAymeric Fromherz2024-05-30 12:33:05 +0200
commitce8614be6bd96c51756bf5922b5dfd4c59650dd4 (patch)
tree3e9f59719c0f7cd344649ac87af0f04f1ad28147 /tests/coq/misc/Loops.v
parent96d803a7aefe27d4401a336c426161d387987b63 (diff)
Implement two phases of loops join + collapse
Diffstat (limited to 'tests/coq/misc/Loops.v')
-rw-r--r--tests/coq/misc/Loops.v446
1 files changed, 16 insertions, 430 deletions
diff --git a/tests/coq/misc/Loops.v b/tests/coq/misc/Loops.v
index bf0a8bc1..bd2b287b 100644
--- a/tests/coq/misc/Loops.v
+++ b/tests/coq/misc/Loops.v
@@ -93,32 +93,11 @@ 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) :=
- clear_loop n v 0%usize
+ admit
.
(** [loops::List]
@@ -131,47 +110,10 @@ 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 :=
- 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
+ admit
.
(** [loops::list_nth_mut_loop]:
@@ -180,56 +122,14 @@ Definition list_nth_mut_loop
(T : Type) (n : nat) (ls : List_t T) (i : u32) :
result (T * (T -> result (List_t T)))
:=
- 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
+ admit
.
(** [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 :=
- 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
+ admit
.
(** [loops::get_elem_mut]:
@@ -238,28 +138,7 @@ 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))))
:=
- 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
+ admit
.
(** [loops::get_elem_shared]:
@@ -268,10 +147,7 @@ Definition get_elem_shared
(n : nat) (slots : alloc_vec_Vec (List_t usize)) (x : usize) :
result usize
:=
- 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
+ admit
.
(** [loops::id_mut]:
@@ -288,101 +164,20 @@ 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)))
:=
- 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
+ admit
.
(** [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 :=
- 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
+ admit
.
(** [loops::list_nth_mut_loop_pair]:
@@ -391,31 +186,7 @@ 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)))
:=
- 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
+ admit
.
(** [loops::list_nth_shared_loop_pair]:
@@ -424,43 +195,7 @@ Definition list_nth_shared_loop_pair
(T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
result (T * T)
:=
- 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
+ admit
.
(** [loops::list_nth_mut_loop_pair_merge]:
@@ -469,32 +204,7 @@ 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))))
:=
- 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
+ admit
.
(** [loops::list_nth_shared_loop_pair_merge]:
@@ -503,38 +213,7 @@ Definition list_nth_shared_loop_pair_merge
(T : Type) (n : nat) (ls0 : List_t T) (ls1 : List_t T) (i : u32) :
result (T * T)
:=
- 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
+ admit
.
(** [loops::list_nth_mut_shared_loop_pair]:
@@ -543,38 +222,7 @@ 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)))
:=
- 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
+ admit
.
(** [loops::list_nth_mut_shared_loop_pair_merge]:
@@ -583,38 +231,7 @@ 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)))
:=
- 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
+ admit
.
(** [loops::list_nth_shared_mut_loop_pair]:
@@ -623,38 +240,7 @@ 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)))
:=
- 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
+ admit
.
(** [loops::list_nth_shared_mut_loop_pair_merge]:
@@ -663,7 +249,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)))
:=
- list_nth_shared_mut_loop_pair_merge_loop T n ls0 ls1 i
+ admit
.
(** [loops::ignore_input_mut_borrow]: loop 0: