type storage = int * int

let main (n : int * storage) : operation list * storage =
  let x : int * int =
    let x : int = 7
    in x + n.0, n.1.0 + n.1.1
  in ([] : operation list), x


let f0 (a: string) = true
let f1 (a: string) = true
let f2 (a: string) = true

let letin_nesting (_: unit) =
  begin
    let s = "test" in
    let p0 = f0 s in
    assert p0;
    let p1 = f1 s in
    assert p1;
    let p2 = f2 s in
    assert p2;
    s
  end

let letin_nesting2 (x: int) = 
  let y = 2 in 
  let z = 3 in
  x + y + z