// Sibling scopes can reuse names (in this case, the name `x1`).
start ::= <<push_scope>><<fresh_local[A]>> <<inner>> <<inner>> -> <<choose_local[A]>>
inner ::= (<<push_scope>><<fresh_local[A]>> -> <<choose_local[A]>><<pop_scope>>)

// output 0: x0 (x1 -> x0) (x1 -> x0) -> x0
// output 1: x0 (x1 -> x0) (x1 -> x1) -> x0
// output 2: x0 (x1 -> x1) (x1 -> x0) -> x0
// output 3: x0 (x1 -> x1) (x1 -> x1) -> x0
