/--
trace: [Compiler.IR] [result]
    def f._closed_0 : obj :=
      let x_1 : obj := 1;
      let x_2 : obj := Array.mkEmpty ◾ x_1;
      ret x_2
    def f (x_1 : obj) : obj :=
      let x_2 : obj := f._closed_0;
      let x_3 : obj := Array.push ◾ x_2 x_1;
      ret x_3
-/
#guard_msgs in
set_option trace.compiler.ir.result true in
def f (a : Nat) : Array Nat := #[a]

/--
trace: [Compiler.IR] [result]
    def g (x_1 : obj) : obj :=
      let x_2 : obj := 1;
      let x_3 : obj := Array.mkEmpty ◾ x_2;
      let x_4 : obj := Array.push ◾ x_3 x_1;
      ret x_4
-/
#guard_msgs in
set_option trace.compiler.ir.result true in
set_option compiler.extract_closed false in
def g (a : Nat) : Array Nat := #[a]

