summaryrefslogtreecommitdiff
path: root/tests/coq/misc/PoloniusList.v
blob: 7e96785579d4a3344084e7937546aaeece4386f9 (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
(** THIS FILE WAS AUTOMATICALLY GENERATED BY AENEAS *)
(** [polonius_list] *)
Require Import Primitives.
Import Primitives.
Require Import Coq.ZArith.ZArith.
Require Import List.
Import ListNotations.
Local Open Scope Primitives_scope.
Module PoloniusList.

(** [polonius_list::List]
    Source: 'src/polonius_list.rs', lines 3:0-3:16 *)
Inductive List_t (T : Type) :=
| List_Cons : T -> List_t T -> List_t T
| List_Nil : List_t T
.

Arguments List_Cons { _ }.
Arguments List_Nil { _ }.

(** [polonius_list::get_list_at_x]:
    Source: 'src/polonius_list.rs', lines 13:0-13:76 *)
Fixpoint get_list_at_x
  (ls : List_t u32) (x : u32) :
  result ((List_t u32) * (List_t u32 -> result (List_t u32)))
  :=
  match ls with
  | List_Cons hd tl =>
    if hd s= x
    then
      let back_'a := fun (ret : List_t u32) => Return ret in
      Return (List_Cons hd tl, back_'a)
    else (
      p <- get_list_at_x tl x;
      let (l, get_list_at_x_back) := p in
      let back_'a :=
        fun (ret : List_t u32) =>
          tl1 <- get_list_at_x_back ret; Return (List_Cons hd tl1) in
      Return (l, back_'a))
  | List_Nil =>
    let back_'a := fun (ret : List_t u32) => Return ret in
    Return (List_Nil, back_'a)
  end
.

End PoloniusList.