(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *)
(** [arrays] *)
Require Import Primitives.
Import Primitives.
Require Import Coq.ZArith.ZArith.
Require Import List.
Import ListNotations.
Local Open Scope Primitives_scope.
Module Arrays.

(** [arrays::AB]
    Source: 'tests/src/arrays.rs', lines 8:0-11:1
    Visibility: public *)
Inductive AB_t := | AB_A : AB_t | AB_B : AB_t.

(** [arrays::incr]:
    Source: 'tests/src/arrays.rs', lines 13:0-15:1
    Visibility: public *)
Definition incr (x : u32) : result u32 :=
  u32_add x 1%u32.

(** [arrays::array_to_shared_slice_]:
    Source: 'tests/src/arrays.rs', lines 21:0-23:1
    Visibility: public *)
Definition array_to_shared_slice_
  {T : Type} (s : array T 32%usize) : result (slice T) :=
  Ok (array_to_slice s)
.

(** [arrays::array_to_mut_slice_]:
    Source: 'tests/src/arrays.rs', lines 26:0-28:1
    Visibility: public *)
Definition array_to_mut_slice_
  {T : Type} (s : array T 32%usize) :
  result ((slice T) * (slice T -> array T 32%usize))
  :=
  Ok (array_to_slice_mut s)
.

(** [arrays::array_len]:
    Source: 'tests/src/arrays.rs', lines 30:0-32:1
    Visibility: public *)
Definition array_len {T : Type} (s : array T 32%usize) : result usize :=
  let s1 := array_to_slice s in Ok (slice_len s1)
.

(** [arrays::shared_array_len]:
    Source: 'tests/src/arrays.rs', lines 34:0-36:1
    Visibility: public *)
Definition shared_array_len {T : Type} (s : array T 32%usize) : result usize :=
  let s1 := array_to_slice s in Ok (slice_len s1)
.

(** [arrays::shared_slice_len]:
    Source: 'tests/src/arrays.rs', lines 38:0-40:1
    Visibility: public *)
Definition shared_slice_len {T : Type} (s : slice T) : result usize :=
  Ok (slice_len s)
.

(** [arrays::index_array_shared]:
    Source: 'tests/src/arrays.rs', lines 42:0-44:1
    Visibility: public *)
Definition index_array_shared
  {T : Type} (s : array T 32%usize) (i : usize) : result T :=
  array_index_usize s i
.

(** [arrays::index_array_u32]:
    Source: 'tests/src/arrays.rs', lines 49:0-51:1
    Visibility: public *)
Definition index_array_u32 (s : array u32 32%usize) (i : usize) : result u32 :=
  array_index_usize s i
.

(** [arrays::index_array_copy]:
    Source: 'tests/src/arrays.rs', lines 53:0-55:1
    Visibility: public *)
Definition index_array_copy (x : array u32 32%usize) : result u32 :=
  array_index_usize x 0%usize
.

(** [arrays::index_mut_array]:
    Source: 'tests/src/arrays.rs', lines 57:0-59:1
    Visibility: public *)
Definition index_mut_array
  {T : Type} (s : array T 32%usize) (i : usize) :
  result (T * (T -> array T 32%usize))
  :=
  array_index_mut_usize s i
.

(** [arrays::index_slice]:
    Source: 'tests/src/arrays.rs', lines 61:0-63:1
    Visibility: public *)
Definition index_slice {T : Type} (s : slice T) (i : usize) : result T :=
  slice_index_usize s i
.

(** [arrays::index_mut_slice]:
    Source: 'tests/src/arrays.rs', lines 65:0-67:1
    Visibility: public *)
Definition index_mut_slice
  {T : Type} (s : slice T) (i : usize) : result (T * (T -> slice T)) :=
  slice_index_mut_usize s i
.

(** [arrays::slice_subslice_shared_]:
    Source: 'tests/src/arrays.rs', lines 69:0-71:1
    Visibility: public *)
Definition slice_subslice_shared_
  (x : slice u32) (y : usize) (z : usize) : result (slice u32) :=
  core_slice_index_Slice_index (core_slice_index_SliceIndexRangeUsizeSliceInst
    u32) x
    {| core_ops_range_Range_start := y; core_ops_range_Range_end_ := z |}
.

(** [arrays::slice_subslice_mut_]:
    Source: 'tests/src/arrays.rs', lines 73:0-75:1
    Visibility: public *)
Definition slice_subslice_mut_
  (x : slice u32) (y : usize) (z : usize) :
  result ((slice u32) * (slice u32 -> slice u32))
  :=
  core_slice_index_Slice_index_mut
    (core_slice_index_SliceIndexRangeUsizeSliceInst u32) x
    {| core_ops_range_Range_start := y; core_ops_range_Range_end_ := z |}
.

(** [arrays::array_to_slice_shared_]:
    Source: 'tests/src/arrays.rs', lines 77:0-79:1
    Visibility: public *)
Definition array_to_slice_shared_
  (x : array u32 32%usize) : result (slice u32) :=
  Ok (array_to_slice x)
.

(** [arrays::array_to_slice_mut_]:
    Source: 'tests/src/arrays.rs', lines 81:0-83:1
    Visibility: public *)
Definition array_to_slice_mut_
  (x : array u32 32%usize) :
  result ((slice u32) * (slice u32 -> array u32 32%usize))
  :=
  Ok (array_to_slice_mut x)
.

(** [arrays::array_subslice_shared_]:
    Source: 'tests/src/arrays.rs', lines 85:0-87:1
    Visibility: public *)
Definition array_subslice_shared_
  (x : array u32 32%usize) (y : usize) (z : usize) : result (slice u32) :=
  core_array_Array_index (core_ops_index_IndexSliceInst
    (core_slice_index_SliceIndexRangeUsizeSliceInst u32)) x
    {| core_ops_range_Range_start := y; core_ops_range_Range_end_ := z |}
.

(** [arrays::array_subslice_mut_]:
    Source: 'tests/src/arrays.rs', lines 89:0-91:1
    Visibility: public *)
Definition array_subslice_mut_
  (x : array u32 32%usize) (y : usize) (z : usize) :
  result ((slice u32) * (slice u32 -> array u32 32%usize))
  :=
  core_array_Array_index_mut (core_ops_index_IndexMutSliceInst
    (core_slice_index_SliceIndexRangeUsizeSliceInst u32)) x
    {| core_ops_range_Range_start := y; core_ops_range_Range_end_ := z |}
.

(** [arrays::index_slice_0]:
    Source: 'tests/src/arrays.rs', lines 93:0-95:1
    Visibility: public *)
Definition index_slice_0 {T : Type} (s : slice T) : result T :=
  slice_index_usize s 0%usize
.

(** [arrays::index_array_0]:
    Source: 'tests/src/arrays.rs', lines 97:0-99:1
    Visibility: public *)
Definition index_array_0 {T : Type} (s : array T 32%usize) : result T :=
  array_index_usize s 0%usize
.

(** [arrays::index_index_array]:
    Source: 'tests/src/arrays.rs', lines 108:0-110:1
    Visibility: public *)
Definition index_index_array
  (s : array (array u32 32%usize) 32%usize) (i : usize) (j : usize) :
  result u32
  :=
  a <- array_index_usize s i; array_index_usize a j
.

(** [arrays::update_update_array]:
    Source: 'tests/src/arrays.rs', lines 119:0-121:1
    Visibility: public *)
Definition update_update_array
  (s : array (array u32 32%usize) 32%usize) (i : usize) (j : usize) :
  result (array (array u32 32%usize) 32%usize)
  :=
  p <- array_index_mut_usize s i;
  let (a, index_mut_back) := p in
  a1 <- array_update_usize a j 0%u32;
  Ok (index_mut_back a1)
.

(** [arrays::array_local_deep_copy]:
    Source: 'tests/src/arrays.rs', lines 123:0-125:1
    Visibility: public *)
Definition array_local_deep_copy (x : array u32 32%usize) : result unit :=
  Ok tt
.

(** [arrays::array_update1]:
    Source: 'tests/src/arrays.rs', lines 128:0-130:1
    Visibility: public *)
Definition array_update1
  (a : slice u32) (i : usize) (x : u32) : result (slice u32) :=
  i1 <- u32_add x 1%u32; i2 <- usize_add i 1%usize; slice_update_usize a i2 i1
.

(** [arrays::array_update2]:
    Source: 'tests/src/arrays.rs', lines 133:0-136:1
    Visibility: public *)
Definition array_update2
  (a : slice u32) (i : usize) (x : u32) : result (slice u32) :=
  i1 <- u32_add x 1%u32;
  a1 <- slice_update_usize a i i1;
  i2 <- usize_add i 1%usize;
  slice_update_usize a1 i2 i1
.

(** [arrays::array_update3]:
    Source: 'tests/src/arrays.rs', lines 138:0-142:1
    Visibility: public *)
Definition array_update3
  (a : slice u32) (i : usize) (x : u32) : result (slice u32) :=
  a1 <- slice_update_usize a i x;
  i1 <- usize_add i 1%usize;
  a2 <- slice_update_usize a1 i1 x;
  i2 <- usize_add i 2%usize;
  slice_update_usize a2 i2 x
.

(** [arrays::take_array]:
    Source: 'tests/src/arrays.rs', lines 144:0-144:33
    Visibility: public *)
Definition take_array (a : array u32 2%usize) : result unit :=
  Ok tt.

(** [arrays::take_array_borrow]:
    Source: 'tests/src/arrays.rs', lines 145:0-145:41
    Visibility: public *)
Definition take_array_borrow (a : array u32 2%usize) : result unit :=
  Ok tt.

(** [arrays::take_slice]:
    Source: 'tests/src/arrays.rs', lines 146:0-146:31
    Visibility: public *)
Definition take_slice (s : slice u32) : result unit :=
  Ok tt.

(** [arrays::take_mut_slice]:
    Source: 'tests/src/arrays.rs', lines 147:0-147:39
    Visibility: public *)
Definition take_mut_slice (s : slice u32) : result (slice u32) :=
  Ok s.

(** [arrays::const_array]:
    Source: 'tests/src/arrays.rs', lines 149:0-151:1
    Visibility: public *)
Definition const_array : result (array u32 2%usize) :=
  Ok (array_repeat 2%usize 0%u32)
.

(** [arrays::const_slice]:
    Source: 'tests/src/arrays.rs', lines 153:0-156:1
    Visibility: public *)
Definition const_slice : result u32 :=
  let a := array_repeat 2%usize 0%u32 in
  let s := array_to_slice a in
  slice_index_usize s 0%usize
.

(** [arrays::take_all]:
    Source: 'tests/src/arrays.rs', lines 164:0-176:1
    Visibility: public *)
Definition take_all : result unit :=
  let x := array_repeat 2%usize 0%u32 in
  _ <- take_array x;
  _ <- take_array x;
  _ <- take_array_borrow x;
  let s := array_to_slice x in
  _ <- take_slice s;
  let (s1, _) := array_to_slice_mut x in
  _ <- take_mut_slice s1;
  Ok tt
.

(** [arrays::index_array]:
    Source: 'tests/src/arrays.rs', lines 178:0-180:1
    Visibility: public *)
Definition index_array (x : array u32 2%usize) : result u32 :=
  array_index_usize x 0%usize
.

(** [arrays::index_array_borrow]:
    Source: 'tests/src/arrays.rs', lines 181:0-183:1
    Visibility: public *)
Definition index_array_borrow (x : array u32 2%usize) : result u32 :=
  array_index_usize x 0%usize
.

(** [arrays::index_slice_u32_0]:
    Source: 'tests/src/arrays.rs', lines 185:0-187:1
    Visibility: public *)
Definition index_slice_u32_0 (x : slice u32) : result u32 :=
  slice_index_usize x 0%usize
.

(** [arrays::index_mut_slice_u32_0]:
    Source: 'tests/src/arrays.rs', lines 189:0-191:1
    Visibility: public *)
Definition index_mut_slice_u32_0
  (x : slice u32) : result (u32 * (slice u32)) :=
  i <- slice_index_usize x 0%usize; Ok (i, x)
.

(** [arrays::index_all]:
    Source: 'tests/src/arrays.rs', lines 193:0-205:1
    Visibility: public *)
Definition index_all : result u32 :=
  let x := array_repeat 2%usize 0%u32 in
  i <- index_array x;
  i1 <- u32_add i i;
  i2 <- index_array_borrow x;
  i3 <- u32_add i1 i2;
  let s := array_to_slice x in
  i4 <- index_slice_u32_0 s;
  i5 <- u32_add i3 i4;
  let (s1, _) := array_to_slice_mut x in
  p <- index_mut_slice_u32_0 s1;
  let (i6, _) := p in
  u32_add i5 i6
.

(** [arrays::update_array]:
    Source: 'tests/src/arrays.rs', lines 207:0-209:1
    Visibility: public *)
Definition update_array (x : array u32 2%usize) : result unit :=
  _ <- array_index_mut_usize x 0%usize; Ok tt
.

(** [arrays::update_array_mut_borrow]:
    Source: 'tests/src/arrays.rs', lines 210:0-212:1
    Visibility: public *)
Definition update_array_mut_borrow
  (x : array u32 2%usize) : result (array u32 2%usize) :=
  array_update_usize x 0%usize 1%u32
.

(** [arrays::update_mut_slice]:
    Source: 'tests/src/arrays.rs', lines 213:0-215:1
    Visibility: public *)
Definition update_mut_slice (x : slice u32) : result (slice u32) :=
  slice_update_usize x 0%usize 1%u32
.

(** [arrays::update_all]:
    Source: 'tests/src/arrays.rs', lines 217:0-223:1
    Visibility: public *)
Definition update_all : result unit :=
  let x := array_repeat 2%usize 0%u32 in
  _ <- update_array x;
  _ <- update_array x;
  x1 <- update_array_mut_borrow x;
  let (s, _) := array_to_slice_mut x1 in
  _ <- update_mut_slice s;
  Ok tt
.

(** [arrays::incr_array]:
    Source: 'tests/src/arrays.rs', lines 225:0-227:1
    Visibility: public *)
Definition incr_array (x : array u32 2%usize) : result (array u32 2%usize) :=
  i <- array_index_usize x 0%usize;
  i1 <- u32_add i 1%u32;
  array_update_usize x 0%usize i1
.

(** [arrays::incr_slice]:
    Source: 'tests/src/arrays.rs', lines 229:0-231:1
    Visibility: public *)
Definition incr_slice (x : slice u32) : result (slice u32) :=
  i <- slice_index_usize x 0%usize;
  i1 <- u32_add i 1%u32;
  slice_update_usize x 0%usize i1
.

(** [arrays::range_all]:
    Source: 'tests/src/arrays.rs', lines 236:0-240:1
    Visibility: public *)
Definition range_all : result unit :=
  let x := array_repeat 4%usize 0%u32 in
  p <-
    core_array_Array_index_mut (core_ops_index_IndexMutSliceInst
      (core_slice_index_SliceIndexRangeUsizeSliceInst u32)) x
      {|
        core_ops_range_Range_start := 1%usize;
        core_ops_range_Range_end_ := 3%usize
      |};
  let (s, _) := p in
  _ <- update_mut_slice s;
  Ok tt
.

(** [arrays::deref_array_borrow]:
    Source: 'tests/src/arrays.rs', lines 245:0-248:1
    Visibility: public *)
Definition deref_array_borrow (x : array u32 2%usize) : result u32 :=
  array_index_usize x 0%usize
.

(** [arrays::deref_array_mut_borrow]:
    Source: 'tests/src/arrays.rs', lines 250:0-253:1
    Visibility: public *)
Definition deref_array_mut_borrow
  (x : array u32 2%usize) : result (u32 * (array u32 2%usize)) :=
  i <- array_index_usize x 0%usize; Ok (i, x)
.

(** [arrays::take_array_t]:
    Source: 'tests/src/arrays.rs', lines 258:0-258:34
    Visibility: public *)
Definition take_array_t (a : array AB_t 2%usize) : result unit :=
  Ok tt.

(** [arrays::non_copyable_array]:
    Source: 'tests/src/arrays.rs', lines 260:0-268:1
    Visibility: public *)
Definition non_copyable_array : result unit :=
  take_array_t (mk_array 2%usize [ AB_A; AB_B ])
.

(** [arrays::sum]: loop 0:
    Source: 'tests/src/arrays.rs', lines 276:4-279:5
    Visibility: public *)
Fixpoint sum_loop
  (n : nat) (s : slice u32) (sum1 : u32) (i : usize) : result u32 :=
  match n with
  | O => Fail_ OutOfFuel
  | S n1 =>
    let i1 := slice_len s in
    if i s< i1
    then (
      i2 <- slice_index_usize s i;
      sum3 <- u32_add sum1 i2;
      i3 <- usize_add i 1%usize;
      sum_loop n1 s sum3 i3)
    else Ok sum1
  end
.

(** [arrays::sum]:
    Source: 'tests/src/arrays.rs', lines 273:0-281:1
    Visibility: public *)
Definition sum (n : nat) (s : slice u32) : result u32 :=
  sum_loop n s 0%u32 0%usize
.

(** [arrays::sum2]: loop 0:
    Source: 'tests/src/arrays.rs', lines 287:4-290:5
    Visibility: public *)
Fixpoint sum2_loop
  (n : nat) (s : slice u32) (s2 : slice u32) (sum1 : u32) (i : usize) :
  result u32
  :=
  match n with
  | O => Fail_ OutOfFuel
  | S n1 =>
    let i1 := slice_len s in
    if i s< i1
    then (
      i2 <- slice_index_usize s i;
      i3 <- slice_index_usize s2 i;
      i4 <- u32_add i2 i3;
      sum3 <- u32_add sum1 i4;
      i5 <- usize_add i 1%usize;
      sum2_loop n1 s s2 sum3 i5)
    else Ok sum1
  end
.

(** [arrays::sum2]:
    Source: 'tests/src/arrays.rs', lines 283:0-292:1
    Visibility: public *)
Definition sum2 (n : nat) (s : slice u32) (s2 : slice u32) : result u32 :=
  let i := slice_len s in
  let i1 := slice_len s2 in
  _ <- massert (i s= i1);
  sum2_loop n s s2 0%u32 0%usize
.

(** [arrays::f0]:
    Source: 'tests/src/arrays.rs', lines 294:0-297:1
    Visibility: public *)
Definition f0 : result unit :=
  let (s, _) := array_to_slice_mut (mk_array 2%usize [ 1%u32; 2%u32 ]) in
  _ <- slice_index_mut_usize s 0%usize;
  Ok tt
.

(** [arrays::f1]:
    Source: 'tests/src/arrays.rs', lines 299:0-302:1
    Visibility: public *)
Definition f1 : result unit :=
  _ <- array_index_mut_usize (mk_array 2%usize [ 1%u32; 2%u32 ]) 0%usize; Ok tt
.

(** [arrays::f2]:
    Source: 'tests/src/arrays.rs', lines 304:0-304:20
    Visibility: public *)
Definition f2 (i : u32) : result unit :=
  Ok tt.

(** [arrays::f4]:
    Source: 'tests/src/arrays.rs', lines 313:0-315:1
    Visibility: public *)
Definition f4
  (x : array u32 32%usize) (y : usize) (z : usize) : result (slice u32) :=
  core_array_Array_index (core_ops_index_IndexSliceInst
    (core_slice_index_SliceIndexRangeUsizeSliceInst u32)) x
    {| core_ops_range_Range_start := y; core_ops_range_Range_end_ := z |}
.

(** [arrays::f3]:
    Source: 'tests/src/arrays.rs', lines 306:0-311:1
    Visibility: public *)
Definition f3 (n : nat) : result u32 :=
  i <- array_index_usize (mk_array 2%usize [ 1%u32; 2%u32 ]) 0%usize;
  _ <- f2 i;
  let b := array_repeat 32%usize 0%u32 in
  let s := array_to_slice (mk_array 2%usize [ 1%u32; 2%u32 ]) in
  s1 <- f4 b 16%usize 18%usize;
  sum2 n s s1
.

(** [arrays::SZ]
    Source: 'tests/src/arrays.rs', lines 317:0-317:25
    Visibility: public *)
Definition sZ : usize := 32%usize.

(** [arrays::f5]:
    Source: 'tests/src/arrays.rs', lines 320:0-322:1
    Visibility: public *)
Definition f5 (x : array u32 32%usize) : result u32 :=
  array_index_usize x 0%usize
.

(** [arrays::ite]:
    Source: 'tests/src/arrays.rs', lines 325:0-332:1
    Visibility: public *)
Definition ite : result unit :=
  let x := array_repeat 2%usize 0%u32 in
  let y := array_repeat 2%usize 0%u32 in
  let (s, _) := array_to_slice_mut x in
  _ <- index_mut_slice_u32_0 s;
  let (s1, _) := array_to_slice_mut y in
  _ <- index_mut_slice_u32_0 s1;
  Ok tt
.

(** [arrays::zero_slice]: loop 0:
    Source: 'tests/src/arrays.rs', lines 337:4-340:5
    Visibility: public *)
Fixpoint zero_slice_loop
  (n : nat) (a : slice u8) (i : usize) (len : usize) : result (slice u8) :=
  match n with
  | O => Fail_ OutOfFuel
  | S n1 =>
    if i s< len
    then (
      s <- slice_update_usize a i 0%u8;
      i1 <- usize_add i 1%usize;
      zero_slice_loop n1 s i1 len)
    else Ok a
  end
.

(** [arrays::zero_slice]:
    Source: 'tests/src/arrays.rs', lines 334:0-341:1
    Visibility: public *)
Definition zero_slice (n : nat) (a : slice u8) : result (slice u8) :=
  let len := slice_len a in zero_slice_loop n a 0%usize len
.

(** [arrays::iter_mut_slice]: loop 0:
    Source: 'tests/src/arrays.rs', lines 346:4-348:5
    Visibility: public *)
Fixpoint iter_mut_slice_loop
  (n : nat) (len : usize) (i : usize) : result unit :=
  match n with
  | O => Fail_ OutOfFuel
  | S n1 =>
    if i s< len
    then (i1 <- usize_add i 1%usize; iter_mut_slice_loop n1 len i1)
    else Ok tt
  end
.

(** [arrays::iter_mut_slice]:
    Source: 'tests/src/arrays.rs', lines 343:0-349:1
    Visibility: public *)
Definition iter_mut_slice (n : nat) (a : slice u8) : result (slice u8) :=
  let len := slice_len a in _ <- iter_mut_slice_loop n len 0%usize; Ok a
.

(** [arrays::sum_mut_slice]: loop 0:
    Source: 'tests/src/arrays.rs', lines 354:4-357:5
    Visibility: public *)
Fixpoint sum_mut_slice_loop
  (n : nat) (a : slice u32) (i : usize) (s : u32) : result u32 :=
  match n with
  | O => Fail_ OutOfFuel
  | S n1 =>
    let i1 := slice_len a in
    if i s< i1
    then (
      i2 <- slice_index_usize a i;
      s1 <- u32_add s i2;
      i3 <- usize_add i 1%usize;
      sum_mut_slice_loop n1 a i3 s1)
    else Ok s
  end
.

(** [arrays::sum_mut_slice]:
    Source: 'tests/src/arrays.rs', lines 351:0-359:1
    Visibility: public *)
Definition sum_mut_slice
  (n : nat) (a : slice u32) : result (u32 * (slice u32)) :=
  s <- sum_mut_slice_loop n a 0%usize 0%u32; Ok (s, a)
.

(** [arrays::add_acc]: loop 0:
    Source: 'tests/src/arrays.rs', lines 363:4-372:5 *)
Fixpoint add_acc_loop
  (n : nat) (pa_src : array u32 256%usize) (pe_dst : array u32 256%usize)
  (i : usize) :
  result ((array u32 256%usize) * (array u32 256%usize))
  :=
  match n with
  | O => Fail_ OutOfFuel
  | S n1 =>
    if i s< 256%usize
    then (
      a <- array_index_usize pa_src i;
      a1 <- array_update_usize pa_src i 0%u32;
      c <- array_index_usize pe_dst i;
      c1 <- u32_add c a;
      a2 <- array_update_usize pe_dst i c1;
      i1 <- usize_add i 1%usize;
      add_acc_loop n1 a1 a2 i1)
    else Ok (pa_src, pe_dst)
  end
.

(** [arrays::add_acc]:
    Source: 'tests/src/arrays.rs', lines 361:0-373:1 *)
Definition add_acc
  (n : nat) (pa_src : array u32 256%usize) (pe_dst : array u32 256%usize) :
  result ((array u32 256%usize) * (array u32 256%usize))
  :=
  add_acc_loop n pa_src pe_dst 0%usize
.

(** [arrays::ARRAY1]
    Source: 'tests/src/arrays.rs', lines 375:0-375:32 *)
Definition aRRAY1 : array u32 2%usize := mk_array 2%usize [ 0%u32; 1%u32 ].

(** [arrays::Scalar]
    Source: 'tests/src/arrays.rs', lines 378:0-378:24 *)
Definition Scalar_t : Type := array u32 2%usize.

(** [arrays::L]
    Source: 'tests/src/arrays.rs', lines 379:0-379:33 *)
Definition l : Scalar_t := mk_array 2%usize [ 0%u32; 1%u32 ].

End Arrays.
