summaryrefslogtreecommitdiff
path: root/tests/fstar/misc/PoloniusList.fst
blob: 94c1b44553ad0987f878c2273f13821c327c0f8e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *)
(** [polonius_list] *)
module PoloniusList
open Primitives

#set-options "--z3rlimit 50 --fuel 1 --ifuel 1"

(** [polonius_list::List]
    Source: 'tests/src/polonius_list.rs', lines 5:0-5:16 *)
type list_t (t : Type0) =
| List_Cons : t -> list_t t -> list_t t
| List_Nil : list_t t

(** [polonius_list::get_list_at_x]:
    Source: 'tests/src/polonius_list.rs', lines 15:0-15:76 *)
let rec get_list_at_x
  (ls : list_t u32) (x : u32) :
  result ((list_t u32) & (list_t u32 -> result (list_t u32)))
  =
  begin match ls with
  | List_Cons hd tl ->
    if hd = x
    then Ok (List_Cons hd tl, Ok)
    else
      let* (l, get_list_at_x_back) = get_list_at_x tl x in
      let back =
        fun ret -> let* tl1 = get_list_at_x_back ret in Ok (List_Cons hd tl1)
        in
      Ok (l, back)
  | List_Nil -> Ok (List_Nil, Ok)
  end