Files
Thun/docs/Zipper.ipynb
T

96 KiB

Traversing Datastructures with Zippers

This notebook is about using the "zipper" with joy datastructures. See the Zipper wikipedia entry or the original paper: "FUNCTIONAL PEARL The Zipper" by Gérard Huet

Given a datastructure on the stack we can navigate through it, modify it, and rebuild it using the "zipper" technique.

Trees

In Joypy there aren't any complex datastructures, just ints, floats, strings, Symbols (strings that are names of functions) and sequences (aka lists, aka quoted literals, aka aggregates, etc...), but we can build trees out of sequences.

In [1]:
[1 [2 [3 4 25 6] 7] 8]
[1 [2 [3 4 25 6] 7] 8]

Zipper in Joy

Zippers work by keeping track of the current item, the already-seen items, and the yet-to-be seen items as you traverse a datastructure (the datastructure used to keep track of these items is the zipper.)

In Joy we can do this with the following words:

z-down == [] swap uncons swap
z-up == swons swap shunt
z-right == [swons] cons dip uncons swap
z-left == swons [uncons swap] dip swap

Let's use them to change 25 into 625. The first time a word is used I show the trace so you can see how it works. If we were going to use these a lot it would make sense to write Python versions for efficiency, but see below.

In [2]:
[z-down [] swap uncons swap] inscribe
[z-up swons swap shunt] inscribe
[z-right [swons] cons dip uncons swap] inscribe
[z-left swons [uncons swap] dip swap] inscribe
[1 [2 [3 4 25 6] 7] 8]
In [3]:
[z-down] trace
   [1 [2 [3 4 25 6] 7] 8] • z-down
   [1 [2 [3 4 25 6] 7] 8] • [] swap uncons swap
[1 [2 [3 4 25 6] 7] 8] [] • swap uncons swap
[] [1 [2 [3 4 25 6] 7] 8] • uncons swap
[] 1 [[2 [3 4 25 6] 7] 8] • swap
[] [[2 [3 4 25 6] 7] 8] 1 • 

[] [[2 [3 4 25 6] 7] 8] 1
In [4]:
[z-right] trace
        [] [[2 [3 4 25 6] 7] 8] 1 • z-right
        [] [[2 [3 4 25 6] 7] 8] 1 • [swons] cons dip uncons swap
[] [[2 [3 4 25 6] 7] 8] 1 [swons] • cons dip uncons swap
[] [[2 [3 4 25 6] 7] 8] [1 swons] • dip uncons swap
                               [] • 1 swons [[2 [3 4 25 6] 7] 8] uncons swap
                             [] 1 • swons [[2 [3 4 25 6] 7] 8] uncons swap
                              [1] • [[2 [3 4 25 6] 7] 8] uncons swap
         [1] [[2 [3 4 25 6] 7] 8] • uncons swap
         [1] [2 [3 4 25 6] 7] [8] • swap
         [1] [8] [2 [3 4 25 6] 7] • 

[1] [8] [2 [3 4 25 6] 7]
In [5]:
z-down
[1] [8] [] [[3 4 25 6] 7] 2
In [6]:
z-right
[1] [8] [2] [7] [3 4 25 6]
In [7]:
z-down
[1] [8] [2] [7] [] [4 25 6] 3
In [8]:
z-right
[1] [8] [2] [7] [3] [25 6] 4
In [9]:
z-right
[1] [8] [2] [7] [4 3] [6] 25
In [10]:
sqr
[1] [8] [2] [7] [4 3] [6] 625
In [11]:
[z-up] trace
[1] [8] [2] [7] [4 3] [6] 625 • z-up
[1] [8] [2] [7] [4 3] [6] 625 • swons swap shunt
[1] [8] [2] [7] [4 3] [625 6] • swap shunt
[1] [8] [2] [7] [625 6] [4 3] • shunt
  [1] [8] [2] [7] [3 4 625 6] • 

[1] [8] [2] [7] [3 4 625 6]
In [12]:
z-up
[1] [8] [2 [3 4 625 6] 7]
In [13]:
z-up
[1 [2 [3 4 625 6] 7] 8]

dip and infra

In Joy we have the dip and infra combinators which can "target" or "address" any particular item in a Joy tree structure.

In [14]:
[[[[[[sqr] dipd] infra] dip] infra] dip] [infra] trace
[1 [2 [3 4 625 6] 7] 8] [[[[[[sqr] dipd] infra] dip] infra] dip] • infra
                                           8 [2 [3 4 625 6] 7] 1 • [[[[[sqr] dipd] infra] dip] infra] dip [] swaack
        8 [2 [3 4 625 6] 7] 1 [[[[[sqr] dipd] infra] dip] infra] • dip [] swaack
                                             8 [2 [3 4 625 6] 7] • [[[[sqr] dipd] infra] dip] infra 1 [] swaack
                  8 [2 [3 4 625 6] 7] [[[[sqr] dipd] infra] dip] • infra 1 [] swaack
                                                 7 [3 4 625 6] 2 • [[[sqr] dipd] infra] dip [8] swaack 1 [] swaack
                            7 [3 4 625 6] 2 [[[sqr] dipd] infra] • dip [8] swaack 1 [] swaack
                                                   7 [3 4 625 6] • [[sqr] dipd] infra 2 [8] swaack 1 [] swaack
                                      7 [3 4 625 6] [[sqr] dipd] • infra 2 [8] swaack 1 [] swaack
                                                       6 625 4 3 • [sqr] dipd [7] swaack 2 [8] swaack 1 [] swaack
                                                 6 625 4 3 [sqr] • dipd [7] swaack 2 [8] swaack 1 [] swaack
                                                           6 625 • sqr 4 3 [7] swaack 2 [8] swaack 1 [] swaack
                                                           6 625 • dup * 4 3 [7] swaack 2 [8] swaack 1 [] swaack
                                                       6 625 625 • * 4 3 [7] swaack 2 [8] swaack 1 [] swaack
                                                        6 390625 • 4 3 [7] swaack 2 [8] swaack 1 [] swaack
                                                      6 390625 4 • 3 [7] swaack 2 [8] swaack 1 [] swaack
                                                    6 390625 4 3 • [7] swaack 2 [8] swaack 1 [] swaack
                                                6 390625 4 3 [7] • swaack 2 [8] swaack 1 [] swaack
                                                7 [3 4 390625 6] • 2 [8] swaack 1 [] swaack
                                              7 [3 4 390625 6] 2 • [8] swaack 1 [] swaack
                                          7 [3 4 390625 6] 2 [8] • swaack 1 [] swaack
                                          8 [2 [3 4 390625 6] 7] • 1 [] swaack
                                        8 [2 [3 4 390625 6] 7] 1 • [] swaack
                                     8 [2 [3 4 390625 6] 7] 1 [] • swaack
                                      [1 [2 [3 4 390625 6] 7] 8] • 

[1 [2 [3 4 390625 6] 7] 8]

If you read the trace carefully you'll see that about half of it is the dip and infra combinators de-quoting programs and "digging" into the subject datastructure. Instead of maintaining temporary results on the stack they are pushed into the pending expression (continuation). When sqr has run the rest of the pending expression rebuilds the datastructure.

Z

Imagine a function Z that accepts a sequence of dip and infra combinators, a quoted program [Q], and a datastructure to work on. It would effectively execute the quoted program as if it had been embedded in a nested series of quoted programs, e.g.:

   [...] [Q] [dip dip infra dip infra dip infra] Z
-------------------------------------------------------------
   [...] [[[[[[[Q] dip] dip] infra] dip] infra] dip] infra

The Z function isn't hard to make.

In [15]:
clear
In [6]:
[Z [[] ccons] step i] inscribe

Here it is in action in a simplified scenario.

In [7]:
1 [2 3 4] [Z] trace
                                                                                   1 [2 3 4] • Z
                                                                                   1 [2 3 4] • [[] ccons] step i
                                                                        1 [2 3 4] [[] ccons] • step i
                                                                        1 [2 3 4] [[] ccons] • [_step0] x i
                                                               1 [2 3 4] [[] ccons] [_step0] • x i
                                                               1 [2 3 4] [[] ccons] [_step0] • dup i i
                                                      1 [2 3 4] [[] ccons] [_step0] [_step0] • i i
                                                               1 [2 3 4] [[] ccons] [_step0] • _step0 i
                                                               1 [2 3 4] [[] ccons] [_step0] • _step1 [popopop] [_stept] branch i
                                                               1 [2 3 4] [[] ccons] [_step0] • [?] dipd roll< [popopop] [_stept] branch i
                                                           1 [2 3 4] [[] ccons] [_step0] [?] • dipd roll< [popopop] [_stept] branch i
                                                           1 [2 3 4] [[] ccons] [_step0] [?] • [dip] codi roll< [popopop] [_stept] branch i
                                                     1 [2 3 4] [[] ccons] [_step0] [?] [dip] • codi roll< [popopop] [_stept] branch i
                                                     1 [2 3 4] [[] ccons] [_step0] [?] [dip] • cons dip roll< [popopop] [_stept] branch i
                                                     1 [2 3 4] [[] ccons] [_step0] [[?] dip] • dip roll< [popopop] [_stept] branch i
                                                                        1 [2 3 4] [[] ccons] • [?] dip [_step0] roll< [popopop] [_stept] branch i
                                                                    1 [2 3 4] [[] ccons] [?] • dip [_step0] roll< [popopop] [_stept] branch i
                                                                                   1 [2 3 4] • ? [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                                   1 [2 3 4] • dup bool [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                           1 [2 3 4] [2 3 4] • bool [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                              1 [2 3 4] true • [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                   1 [2 3 4] true [[] ccons] • [_step0] roll< [popopop] [_stept] branch i
                                                          1 [2 3 4] true [[] ccons] [_step0] • roll< [popopop] [_stept] branch i
                                                          1 [2 3 4] true [[] ccons] [_step0] • swapd swap [popopop] [_stept] branch i
                                                          1 [2 3 4] true [[] ccons] [_step0] • [swap] dip swap [popopop] [_stept] branch i
                                                   1 [2 3 4] true [[] ccons] [_step0] [swap] • dip swap [popopop] [_stept] branch i
                                                                   1 [2 3 4] true [[] ccons] • swap [_step0] swap [popopop] [_stept] branch i
                                                                   1 [2 3 4] [[] ccons] true • [_step0] swap [popopop] [_stept] branch i
                                                          1 [2 3 4] [[] ccons] true [_step0] • swap [popopop] [_stept] branch i
                                                          1 [2 3 4] [[] ccons] [_step0] true • [popopop] [_stept] branch i
                                                1 [2 3 4] [[] ccons] [_step0] true [popopop] • [_stept] branch i
                                       1 [2 3 4] [[] ccons] [_step0] true [popopop] [_stept] • branch i
                                                               1 [2 3 4] [[] ccons] [_step0] • _stept i
                                                               1 [2 3 4] [[] ccons] [_step0] • [uncons] dipd [dupdipd] dip x i
                                                      1 [2 3 4] [[] ccons] [_step0] [uncons] • dipd [dupdipd] dip x i
                                                      1 [2 3 4] [[] ccons] [_step0] [uncons] • [dip] codi [dupdipd] dip x i
                                                1 [2 3 4] [[] ccons] [_step0] [uncons] [dip] • codi [dupdipd] dip x i
                                                1 [2 3 4] [[] ccons] [_step0] [uncons] [dip] • cons dip [dupdipd] dip x i
                                                1 [2 3 4] [[] ccons] [_step0] [[uncons] dip] • dip [dupdipd] dip x i
                                                                        1 [2 3 4] [[] ccons] • [uncons] dip [_step0] [dupdipd] dip x i
                                                               1 [2 3 4] [[] ccons] [uncons] • dip [_step0] [dupdipd] dip x i
                                                                                   1 [2 3 4] • uncons [[] ccons] [_step0] [dupdipd] dip x i
                                                                                   1 [2 3 4] • [first] [rest] cleave [[] ccons] [_step0] [dupdipd] dip x i
                                                                           1 [2 3 4] [first] • [rest] cleave [[] ccons] [_step0] [dupdipd] dip x i
                                                                    1 [2 3 4] [first] [rest] • cleave [[] ccons] [_step0] [dupdipd] dip x i
                                                                    1 [2 3 4] [first] [rest] • fork popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                    1 [2 3 4] [first] [rest] • [i] app2 popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                1 [2 3 4] [first] [rest] [i] • app2 popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                1 [2 3 4] [first] [rest] [i] • [grba swap grba swap] dip [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                          1 [2 3 4] [first] [rest] [i] [grba swap grba swap] • dip [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                    1 [2 3 4] [first] [rest] • grba swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                    1 [2 3 4] [first] [rest] • [stack popd] dip swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       1 [2 3 4] [first] [rest] [stack popd] • dip swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           1 [2 3 4] [first] • stack popd [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       1 [2 3 4] [first] [[first] [2 3 4] 1] • popd [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       1 [2 3 4] [first] [[first] [2 3 4] 1] • [pop] dip [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                 1 [2 3 4] [first] [[first] [2 3 4] 1] [pop] • dip [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           1 [2 3 4] [first] • pop [[first] [2 3 4] 1] [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                   1 [2 3 4] • [[first] [2 3 4] 1] [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                               1 [2 3 4] [[first] [2 3 4] 1] • [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                        1 [2 3 4] [[first] [2 3 4] 1] [rest] • swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                        1 [2 3 4] [rest] [[first] [2 3 4] 1] • grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                        1 [2 3 4] [rest] [[first] [2 3 4] 1] • [stack popd] dip swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                           1 [2 3 4] [rest] [[first] [2 3 4] 1] [stack popd] • dip swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                            1 [2 3 4] [rest] • stack popd [[first] [2 3 4] 1] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                         1 [2 3 4] [rest] [[rest] [2 3 4] 1] • popd [[first] [2 3 4] 1] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                         1 [2 3 4] [rest] [[rest] [2 3 4] 1] • [pop] dip [[first] [2 3 4] 1] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                   1 [2 3 4] [rest] [[rest] [2 3 4] 1] [pop] • dip [[first] [2 3 4] 1] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                            1 [2 3 4] [rest] • pop [[rest] [2 3 4] 1] [[first] [2 3 4] 1] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                   1 [2 3 4] • [[rest] [2 3 4] 1] [[first] [2 3 4] 1] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                1 [2 3 4] [[rest] [2 3 4] 1] • [[first] [2 3 4] 1] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                            1 [2 3 4] [[rest] [2 3 4] 1] [[first] [2 3 4] 1] • swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                            1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] • [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                        1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] [i] • [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                               1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] [i] [infrst] • cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                               1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] [[i] infrst] • ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                               1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] [[i] infrst] • [dip] dupdip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                         1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] [[i] infrst] [dip] • dupdip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                         1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] [[i] infrst] [dip] • dupd dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                         1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] [[i] infrst] [dip] • [dup] dip dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                   1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] [[i] infrst] [dip] [dup] • dip dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                               1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] [[i] infrst] • dup [dip] dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                  1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] [[i] infrst] [[i] infrst] • [dip] dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
            1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] [[i] infrst] [[i] infrst] [dip] • dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                               1 [2 3 4] [[first] [2 3 4] 1] [[rest] [2 3 4] 1] [[i] infrst] • dip [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                               1 [2 3 4] [[first] [2 3 4] 1] • [i] infrst [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                           1 [2 3 4] [[first] [2 3 4] 1] [i] • infrst [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                           1 [2 3 4] [[first] [2 3 4] 1] [i] • infra first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                           1 [2 3 4] [[first] [2 3 4] 1] [i] • swons swaack [i] dip swaack first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                           1 [2 3 4] [[first] [2 3 4] 1] [i] • swap cons swaack [i] dip swaack first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                           1 [2 3 4] [i] [[first] [2 3 4] 1] • cons swaack [i] dip swaack first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                           1 [2 3 4] [[i] [first] [2 3 4] 1] • swaack [i] dip swaack first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                           1 [2 3 4] [first] [i] [[2 3 4] 1] • [i] dip swaack first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       1 [2 3 4] [first] [i] [[2 3 4] 1] [i] • dip swaack first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                       1 [2 3 4] [first] [i] • i [[2 3 4] 1] swaack first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           1 [2 3 4] [first] • i [[2 3 4] 1] swaack first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                   1 [2 3 4] • first [[2 3 4] 1] swaack first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                         1 2 • [[2 3 4] 1] swaack first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                             1 2 [[2 3 4] 1] • swaack first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                             1 [2 3 4] [2 1] • first [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 1 [2 3 4] 2 • [[rest] [2 3 4] 1] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                              1 [2 3 4] 2 [[rest] [2 3 4] 1] • [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                 1 [2 3 4] 2 [[rest] [2 3 4] 1] [[i] infrst] • i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                              1 [2 3 4] 2 [[rest] [2 3 4] 1] • [i] infrst popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                          1 [2 3 4] 2 [[rest] [2 3 4] 1] [i] • infrst popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                          1 [2 3 4] 2 [[rest] [2 3 4] 1] [i] • infra first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                          1 [2 3 4] 2 [[rest] [2 3 4] 1] [i] • swons swaack [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                          1 [2 3 4] 2 [[rest] [2 3 4] 1] [i] • swap cons swaack [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                          1 [2 3 4] 2 [i] [[rest] [2 3 4] 1] • cons swaack [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                          1 [2 3 4] 2 [[i] [rest] [2 3 4] 1] • swaack [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                          1 [2 3 4] [rest] [i] [2 [2 3 4] 1] • [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                      1 [2 3 4] [rest] [i] [2 [2 3 4] 1] [i] • dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                        1 [2 3 4] [rest] [i] • i [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                            1 [2 3 4] [rest] • i [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                   1 [2 3 4] • rest [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                   1 [2 3 4] • [pop] infra [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                             1 [2 3 4] [pop] • infra [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                             1 [2 3 4] [pop] • swons swaack [i] dip swaack [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                             1 [2 3 4] [pop] • swap cons swaack [i] dip swaack [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                             1 [pop] [2 3 4] • cons swaack [i] dip swaack [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                             1 [[pop] 2 3 4] • swaack [i] dip swaack [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                             4 3 2 [pop] [1] • [i] dip swaack [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                         4 3 2 [pop] [1] [i] • dip swaack [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 4 3 2 [pop] • i [1] swaack [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                       4 3 2 • pop [1] swaack [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                         4 3 • [1] swaack [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                     4 3 [1] • swaack [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                     1 [3 4] • [2 [2 3 4] 1] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                       1 [3 4] [2 [2 3 4] 1] • swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                       1 [2 3 4] 2 [[3 4] 1] • first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           1 [2 3 4] 2 [3 4] • popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           1 [2 3 4] 2 [3 4] • [pop] dipd [[] ccons] [_step0] [dupdipd] dip x i
                                                                     1 [2 3 4] 2 [3 4] [pop] • dipd [[] ccons] [_step0] [dupdipd] dip x i
                                                                     1 [2 3 4] 2 [3 4] [pop] • [dip] codi [[] ccons] [_step0] [dupdipd] dip x i
                                                               1 [2 3 4] 2 [3 4] [pop] [dip] • codi [[] ccons] [_step0] [dupdipd] dip x i
                                                               1 [2 3 4] 2 [3 4] [pop] [dip] • cons dip [[] ccons] [_step0] [dupdipd] dip x i
                                                               1 [2 3 4] 2 [3 4] [[pop] dip] • dip [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 1 [2 3 4] 2 • [pop] dip [3 4] [[] ccons] [_step0] [dupdipd] dip x i
                                                                           1 [2 3 4] 2 [pop] • dip [3 4] [[] ccons] [_step0] [dupdipd] dip x i
                                                                                   1 [2 3 4] • pop 2 [3 4] [[] ccons] [_step0] [dupdipd] dip x i
                                                                                           1 • 2 [3 4] [[] ccons] [_step0] [dupdipd] dip x i
                                                                                         1 2 • [3 4] [[] ccons] [_step0] [dupdipd] dip x i
                                                                                   1 2 [3 4] • [[] ccons] [_step0] [dupdipd] dip x i
                                                                        1 2 [3 4] [[] ccons] • [_step0] [dupdipd] dip x i
                                                               1 2 [3 4] [[] ccons] [_step0] • [dupdipd] dip x i
                                                     1 2 [3 4] [[] ccons] [_step0] [dupdipd] • dip x i
                                                                        1 2 [3 4] [[] ccons] • dupdipd [_step0] x i
                                                                        1 2 [3 4] [[] ccons] • dup dipd [_step0] x i
                                                             1 2 [3 4] [[] ccons] [[] ccons] • dipd [_step0] x i
                                                             1 2 [3 4] [[] ccons] [[] ccons] • [dip] codi [_step0] x i
                                                       1 2 [3 4] [[] ccons] [[] ccons] [dip] • codi [_step0] x i
                                                       1 2 [3 4] [[] ccons] [[] ccons] [dip] • cons dip [_step0] x i
                                                       1 2 [3 4] [[] ccons] [[[] ccons] dip] • dip [_step0] x i
                                                                                   1 2 [3 4] • [[] ccons] dip [[] ccons] [_step0] x i
                                                                        1 2 [3 4] [[] ccons] • dip [[] ccons] [_step0] x i
                                                                                         1 2 • [] ccons [3 4] [[] ccons] [_step0] x i
                                                                                      1 2 [] • ccons [3 4] [[] ccons] [_step0] x i
                                                                                      1 2 [] • cons cons [3 4] [[] ccons] [_step0] x i
                                                                                       1 [2] • cons [3 4] [[] ccons] [_step0] x i
                                                                                       [1 2] • [3 4] [[] ccons] [_step0] x i
                                                                                 [1 2] [3 4] • [[] ccons] [_step0] x i
                                                                      [1 2] [3 4] [[] ccons] • [_step0] x i
                                                             [1 2] [3 4] [[] ccons] [_step0] • x i
                                                             [1 2] [3 4] [[] ccons] [_step0] • dup i i
                                                    [1 2] [3 4] [[] ccons] [_step0] [_step0] • i i
                                                             [1 2] [3 4] [[] ccons] [_step0] • _step0 i
                                                             [1 2] [3 4] [[] ccons] [_step0] • _step1 [popopop] [_stept] branch i
                                                             [1 2] [3 4] [[] ccons] [_step0] • [?] dipd roll< [popopop] [_stept] branch i
                                                         [1 2] [3 4] [[] ccons] [_step0] [?] • dipd roll< [popopop] [_stept] branch i
                                                         [1 2] [3 4] [[] ccons] [_step0] [?] • [dip] codi roll< [popopop] [_stept] branch i
                                                   [1 2] [3 4] [[] ccons] [_step0] [?] [dip] • codi roll< [popopop] [_stept] branch i
                                                   [1 2] [3 4] [[] ccons] [_step0] [?] [dip] • cons dip roll< [popopop] [_stept] branch i
                                                   [1 2] [3 4] [[] ccons] [_step0] [[?] dip] • dip roll< [popopop] [_stept] branch i
                                                                      [1 2] [3 4] [[] ccons] • [?] dip [_step0] roll< [popopop] [_stept] branch i
                                                                  [1 2] [3 4] [[] ccons] [?] • dip [_step0] roll< [popopop] [_stept] branch i
                                                                                 [1 2] [3 4] • ? [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                                 [1 2] [3 4] • dup bool [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                           [1 2] [3 4] [3 4] • bool [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                            [1 2] [3 4] true • [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                 [1 2] [3 4] true [[] ccons] • [_step0] roll< [popopop] [_stept] branch i
                                                        [1 2] [3 4] true [[] ccons] [_step0] • roll< [popopop] [_stept] branch i
                                                        [1 2] [3 4] true [[] ccons] [_step0] • swapd swap [popopop] [_stept] branch i
                                                        [1 2] [3 4] true [[] ccons] [_step0] • [swap] dip swap [popopop] [_stept] branch i
                                                 [1 2] [3 4] true [[] ccons] [_step0] [swap] • dip swap [popopop] [_stept] branch i
                                                                 [1 2] [3 4] true [[] ccons] • swap [_step0] swap [popopop] [_stept] branch i
                                                                 [1 2] [3 4] [[] ccons] true • [_step0] swap [popopop] [_stept] branch i
                                                        [1 2] [3 4] [[] ccons] true [_step0] • swap [popopop] [_stept] branch i
                                                        [1 2] [3 4] [[] ccons] [_step0] true • [popopop] [_stept] branch i
                                              [1 2] [3 4] [[] ccons] [_step0] true [popopop] • [_stept] branch i
                                     [1 2] [3 4] [[] ccons] [_step0] true [popopop] [_stept] • branch i
                                                             [1 2] [3 4] [[] ccons] [_step0] • _stept i
                                                             [1 2] [3 4] [[] ccons] [_step0] • [uncons] dipd [dupdipd] dip x i
                                                    [1 2] [3 4] [[] ccons] [_step0] [uncons] • dipd [dupdipd] dip x i
                                                    [1 2] [3 4] [[] ccons] [_step0] [uncons] • [dip] codi [dupdipd] dip x i
                                              [1 2] [3 4] [[] ccons] [_step0] [uncons] [dip] • codi [dupdipd] dip x i
                                              [1 2] [3 4] [[] ccons] [_step0] [uncons] [dip] • cons dip [dupdipd] dip x i
                                              [1 2] [3 4] [[] ccons] [_step0] [[uncons] dip] • dip [dupdipd] dip x i
                                                                      [1 2] [3 4] [[] ccons] • [uncons] dip [_step0] [dupdipd] dip x i
                                                             [1 2] [3 4] [[] ccons] [uncons] • dip [_step0] [dupdipd] dip x i
                                                                                 [1 2] [3 4] • uncons [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 [1 2] [3 4] • [first] [rest] cleave [[] ccons] [_step0] [dupdipd] dip x i
                                                                         [1 2] [3 4] [first] • [rest] cleave [[] ccons] [_step0] [dupdipd] dip x i
                                                                  [1 2] [3 4] [first] [rest] • cleave [[] ccons] [_step0] [dupdipd] dip x i
                                                                  [1 2] [3 4] [first] [rest] • fork popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                  [1 2] [3 4] [first] [rest] • [i] app2 popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                              [1 2] [3 4] [first] [rest] [i] • app2 popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                              [1 2] [3 4] [first] [rest] [i] • [grba swap grba swap] dip [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                        [1 2] [3 4] [first] [rest] [i] [grba swap grba swap] • dip [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                  [1 2] [3 4] [first] [rest] • grba swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                  [1 2] [3 4] [first] [rest] • [stack popd] dip swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                     [1 2] [3 4] [first] [rest] [stack popd] • dip swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                         [1 2] [3 4] [first] • stack popd [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                   [1 2] [3 4] [first] [[first] [3 4] [1 2]] • popd [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                   [1 2] [3 4] [first] [[first] [3 4] [1 2]] • [pop] dip [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                             [1 2] [3 4] [first] [[first] [3 4] [1 2]] [pop] • dip [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                         [1 2] [3 4] [first] • pop [[first] [3 4] [1 2]] [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 [1 2] [3 4] • [[first] [3 4] [1 2]] [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                           [1 2] [3 4] [[first] [3 4] [1 2]] • [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                    [1 2] [3 4] [[first] [3 4] [1 2]] [rest] • swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                    [1 2] [3 4] [rest] [[first] [3 4] [1 2]] • grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                    [1 2] [3 4] [rest] [[first] [3 4] [1 2]] • [stack popd] dip swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                       [1 2] [3 4] [rest] [[first] [3 4] [1 2]] [stack popd] • dip swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                          [1 2] [3 4] [rest] • stack popd [[first] [3 4] [1 2]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                     [1 2] [3 4] [rest] [[rest] [3 4] [1 2]] • popd [[first] [3 4] [1 2]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                     [1 2] [3 4] [rest] [[rest] [3 4] [1 2]] • [pop] dip [[first] [3 4] [1 2]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                               [1 2] [3 4] [rest] [[rest] [3 4] [1 2]] [pop] • dip [[first] [3 4] [1 2]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                          [1 2] [3 4] [rest] • pop [[rest] [3 4] [1 2]] [[first] [3 4] [1 2]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 [1 2] [3 4] • [[rest] [3 4] [1 2]] [[first] [3 4] [1 2]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                            [1 2] [3 4] [[rest] [3 4] [1 2]] • [[first] [3 4] [1 2]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                      [1 2] [3 4] [[rest] [3 4] [1 2]] [[first] [3 4] [1 2]] • swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                      [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] • [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                  [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] [i] • [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                         [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] [i] [infrst] • cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                         [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] [[i] infrst] • ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                         [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] [[i] infrst] • [dip] dupdip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                   [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] [[i] infrst] [dip] • dupdip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                   [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] [[i] infrst] [dip] • dupd dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                   [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] [[i] infrst] [dip] • [dup] dip dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
             [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] [[i] infrst] [dip] [dup] • dip dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                         [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] [[i] infrst] • dup [dip] dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
            [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] [[i] infrst] [[i] infrst] • [dip] dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
      [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] [[i] infrst] [[i] infrst] [dip] • dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                         [1 2] [3 4] [[first] [3 4] [1 2]] [[rest] [3 4] [1 2]] [[i] infrst] • dip [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                           [1 2] [3 4] [[first] [3 4] [1 2]] • [i] infrst [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       [1 2] [3 4] [[first] [3 4] [1 2]] [i] • infrst [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       [1 2] [3 4] [[first] [3 4] [1 2]] [i] • infra first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       [1 2] [3 4] [[first] [3 4] [1 2]] [i] • swons swaack [i] dip swaack first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       [1 2] [3 4] [[first] [3 4] [1 2]] [i] • swap cons swaack [i] dip swaack first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       [1 2] [3 4] [i] [[first] [3 4] [1 2]] • cons swaack [i] dip swaack first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       [1 2] [3 4] [[i] [first] [3 4] [1 2]] • swaack [i] dip swaack first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       [1 2] [3 4] [first] [i] [[3 4] [1 2]] • [i] dip swaack first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                   [1 2] [3 4] [first] [i] [[3 4] [1 2]] [i] • dip swaack first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                     [1 2] [3 4] [first] [i] • i [[3 4] [1 2]] swaack first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                         [1 2] [3 4] [first] • i [[3 4] [1 2]] swaack first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 [1 2] [3 4] • first [[3 4] [1 2]] swaack first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                     [1 2] 3 • [[3 4] [1 2]] swaack first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                       [1 2] 3 [[3 4] [1 2]] • swaack first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                       [1 2] [3 4] [3 [1 2]] • first [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                               [1 2] [3 4] 3 • [[rest] [3 4] [1 2]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                          [1 2] [3 4] 3 [[rest] [3 4] [1 2]] • [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                             [1 2] [3 4] 3 [[rest] [3 4] [1 2]] [[i] infrst] • i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                          [1 2] [3 4] 3 [[rest] [3 4] [1 2]] • [i] infrst popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                      [1 2] [3 4] 3 [[rest] [3 4] [1 2]] [i] • infrst popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                      [1 2] [3 4] 3 [[rest] [3 4] [1 2]] [i] • infra first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                      [1 2] [3 4] 3 [[rest] [3 4] [1 2]] [i] • swons swaack [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                      [1 2] [3 4] 3 [[rest] [3 4] [1 2]] [i] • swap cons swaack [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                      [1 2] [3 4] 3 [i] [[rest] [3 4] [1 2]] • cons swaack [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                      [1 2] [3 4] 3 [[i] [rest] [3 4] [1 2]] • swaack [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                      [1 2] [3 4] [rest] [i] [3 [3 4] [1 2]] • [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                  [1 2] [3 4] [rest] [i] [3 [3 4] [1 2]] [i] • dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                      [1 2] [3 4] [rest] [i] • i [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                          [1 2] [3 4] [rest] • i [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 [1 2] [3 4] • rest [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 [1 2] [3 4] • [pop] infra [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           [1 2] [3 4] [pop] • infra [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           [1 2] [3 4] [pop] • swons swaack [i] dip swaack [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           [1 2] [3 4] [pop] • swap cons swaack [i] dip swaack [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           [1 2] [pop] [3 4] • cons swaack [i] dip swaack [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           [1 2] [[pop] 3 4] • swaack [i] dip swaack [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           4 3 [pop] [[1 2]] • [i] dip swaack [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                       4 3 [pop] [[1 2]] [i] • dip swaack [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                   4 3 [pop] • i [[1 2]] swaack [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                         4 3 • pop [[1 2]] swaack [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                           4 • [[1 2]] swaack [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                   4 [[1 2]] • swaack [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                   [1 2] [4] • [3 [3 4] [1 2]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                   [1 2] [4] [3 [3 4] [1 2]] • swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                   [1 2] [3 4] 3 [[4] [1 2]] • first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           [1 2] [3 4] 3 [4] • popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                           [1 2] [3 4] 3 [4] • [pop] dipd [[] ccons] [_step0] [dupdipd] dip x i
                                                                     [1 2] [3 4] 3 [4] [pop] • dipd [[] ccons] [_step0] [dupdipd] dip x i
                                                                     [1 2] [3 4] 3 [4] [pop] • [dip] codi [[] ccons] [_step0] [dupdipd] dip x i
                                                               [1 2] [3 4] 3 [4] [pop] [dip] • codi [[] ccons] [_step0] [dupdipd] dip x i
                                                               [1 2] [3 4] 3 [4] [pop] [dip] • cons dip [[] ccons] [_step0] [dupdipd] dip x i
                                                               [1 2] [3 4] 3 [4] [[pop] dip] • dip [[] ccons] [_step0] [dupdipd] dip x i
                                                                               [1 2] [3 4] 3 • [pop] dip [4] [[] ccons] [_step0] [dupdipd] dip x i
                                                                         [1 2] [3 4] 3 [pop] • dip [4] [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 [1 2] [3 4] • pop 3 [4] [[] ccons] [_step0] [dupdipd] dip x i
                                                                                       [1 2] • 3 [4] [[] ccons] [_step0] [dupdipd] dip x i
                                                                                     [1 2] 3 • [4] [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 [1 2] 3 [4] • [[] ccons] [_step0] [dupdipd] dip x i
                                                                      [1 2] 3 [4] [[] ccons] • [_step0] [dupdipd] dip x i
                                                             [1 2] 3 [4] [[] ccons] [_step0] • [dupdipd] dip x i
                                                   [1 2] 3 [4] [[] ccons] [_step0] [dupdipd] • dip x i
                                                                      [1 2] 3 [4] [[] ccons] • dupdipd [_step0] x i
                                                                      [1 2] 3 [4] [[] ccons] • dup dipd [_step0] x i
                                                           [1 2] 3 [4] [[] ccons] [[] ccons] • dipd [_step0] x i
                                                           [1 2] 3 [4] [[] ccons] [[] ccons] • [dip] codi [_step0] x i
                                                     [1 2] 3 [4] [[] ccons] [[] ccons] [dip] • codi [_step0] x i
                                                     [1 2] 3 [4] [[] ccons] [[] ccons] [dip] • cons dip [_step0] x i
                                                     [1 2] 3 [4] [[] ccons] [[[] ccons] dip] • dip [_step0] x i
                                                                                 [1 2] 3 [4] • [[] ccons] dip [[] ccons] [_step0] x i
                                                                      [1 2] 3 [4] [[] ccons] • dip [[] ccons] [_step0] x i
                                                                                     [1 2] 3 • [] ccons [4] [[] ccons] [_step0] x i
                                                                                  [1 2] 3 [] • ccons [4] [[] ccons] [_step0] x i
                                                                                  [1 2] 3 [] • cons cons [4] [[] ccons] [_step0] x i
                                                                                   [1 2] [3] • cons [4] [[] ccons] [_step0] x i
                                                                                   [[1 2] 3] • [4] [[] ccons] [_step0] x i
                                                                               [[1 2] 3] [4] • [[] ccons] [_step0] x i
                                                                    [[1 2] 3] [4] [[] ccons] • [_step0] x i
                                                           [[1 2] 3] [4] [[] ccons] [_step0] • x i
                                                           [[1 2] 3] [4] [[] ccons] [_step0] • dup i i
                                                  [[1 2] 3] [4] [[] ccons] [_step0] [_step0] • i i
                                                           [[1 2] 3] [4] [[] ccons] [_step0] • _step0 i
                                                           [[1 2] 3] [4] [[] ccons] [_step0] • _step1 [popopop] [_stept] branch i
                                                           [[1 2] 3] [4] [[] ccons] [_step0] • [?] dipd roll< [popopop] [_stept] branch i
                                                       [[1 2] 3] [4] [[] ccons] [_step0] [?] • dipd roll< [popopop] [_stept] branch i
                                                       [[1 2] 3] [4] [[] ccons] [_step0] [?] • [dip] codi roll< [popopop] [_stept] branch i
                                                 [[1 2] 3] [4] [[] ccons] [_step0] [?] [dip] • codi roll< [popopop] [_stept] branch i
                                                 [[1 2] 3] [4] [[] ccons] [_step0] [?] [dip] • cons dip roll< [popopop] [_stept] branch i
                                                 [[1 2] 3] [4] [[] ccons] [_step0] [[?] dip] • dip roll< [popopop] [_stept] branch i
                                                                    [[1 2] 3] [4] [[] ccons] • [?] dip [_step0] roll< [popopop] [_stept] branch i
                                                                [[1 2] 3] [4] [[] ccons] [?] • dip [_step0] roll< [popopop] [_stept] branch i
                                                                               [[1 2] 3] [4] • ? [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                               [[1 2] 3] [4] • dup bool [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                           [[1 2] 3] [4] [4] • bool [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                          [[1 2] 3] [4] true • [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                               [[1 2] 3] [4] true [[] ccons] • [_step0] roll< [popopop] [_stept] branch i
                                                      [[1 2] 3] [4] true [[] ccons] [_step0] • roll< [popopop] [_stept] branch i
                                                      [[1 2] 3] [4] true [[] ccons] [_step0] • swapd swap [popopop] [_stept] branch i
                                                      [[1 2] 3] [4] true [[] ccons] [_step0] • [swap] dip swap [popopop] [_stept] branch i
                                               [[1 2] 3] [4] true [[] ccons] [_step0] [swap] • dip swap [popopop] [_stept] branch i
                                                               [[1 2] 3] [4] true [[] ccons] • swap [_step0] swap [popopop] [_stept] branch i
                                                               [[1 2] 3] [4] [[] ccons] true • [_step0] swap [popopop] [_stept] branch i
                                                      [[1 2] 3] [4] [[] ccons] true [_step0] • swap [popopop] [_stept] branch i
                                                      [[1 2] 3] [4] [[] ccons] [_step0] true • [popopop] [_stept] branch i
                                            [[1 2] 3] [4] [[] ccons] [_step0] true [popopop] • [_stept] branch i
                                   [[1 2] 3] [4] [[] ccons] [_step0] true [popopop] [_stept] • branch i
                                                           [[1 2] 3] [4] [[] ccons] [_step0] • _stept i
                                                           [[1 2] 3] [4] [[] ccons] [_step0] • [uncons] dipd [dupdipd] dip x i
                                                  [[1 2] 3] [4] [[] ccons] [_step0] [uncons] • dipd [dupdipd] dip x i
                                                  [[1 2] 3] [4] [[] ccons] [_step0] [uncons] • [dip] codi [dupdipd] dip x i
                                            [[1 2] 3] [4] [[] ccons] [_step0] [uncons] [dip] • codi [dupdipd] dip x i
                                            [[1 2] 3] [4] [[] ccons] [_step0] [uncons] [dip] • cons dip [dupdipd] dip x i
                                            [[1 2] 3] [4] [[] ccons] [_step0] [[uncons] dip] • dip [dupdipd] dip x i
                                                                    [[1 2] 3] [4] [[] ccons] • [uncons] dip [_step0] [dupdipd] dip x i
                                                           [[1 2] 3] [4] [[] ccons] [uncons] • dip [_step0] [dupdipd] dip x i
                                                                               [[1 2] 3] [4] • uncons [[] ccons] [_step0] [dupdipd] dip x i
                                                                               [[1 2] 3] [4] • [first] [rest] cleave [[] ccons] [_step0] [dupdipd] dip x i
                                                                       [[1 2] 3] [4] [first] • [rest] cleave [[] ccons] [_step0] [dupdipd] dip x i
                                                                [[1 2] 3] [4] [first] [rest] • cleave [[] ccons] [_step0] [dupdipd] dip x i
                                                                [[1 2] 3] [4] [first] [rest] • fork popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                [[1 2] 3] [4] [first] [rest] • [i] app2 popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                            [[1 2] 3] [4] [first] [rest] [i] • app2 popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                            [[1 2] 3] [4] [first] [rest] [i] • [grba swap grba swap] dip [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                      [[1 2] 3] [4] [first] [rest] [i] [grba swap grba swap] • dip [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                [[1 2] 3] [4] [first] [rest] • grba swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                [[1 2] 3] [4] [first] [rest] • [stack popd] dip swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                   [[1 2] 3] [4] [first] [rest] [stack popd] • dip swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                       [[1 2] 3] [4] [first] • stack popd [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                               [[1 2] 3] [4] [first] [[first] [4] [[1 2] 3]] • popd [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                               [[1 2] 3] [4] [first] [[first] [4] [[1 2] 3]] • [pop] dip [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                         [[1 2] 3] [4] [first] [[first] [4] [[1 2] 3]] [pop] • dip [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                       [[1 2] 3] [4] [first] • pop [[first] [4] [[1 2] 3]] [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                               [[1 2] 3] [4] • [[first] [4] [[1 2] 3]] [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       [[1 2] 3] [4] [[first] [4] [[1 2] 3]] • [rest] swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [rest] • swap grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                [[1 2] 3] [4] [rest] [[first] [4] [[1 2] 3]] • grba swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                [[1 2] 3] [4] [rest] [[first] [4] [[1 2] 3]] • [stack popd] dip swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                   [[1 2] 3] [4] [rest] [[first] [4] [[1 2] 3]] [stack popd] • dip swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                        [[1 2] 3] [4] [rest] • stack popd [[first] [4] [[1 2] 3]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                 [[1 2] 3] [4] [rest] [[rest] [4] [[1 2] 3]] • popd [[first] [4] [[1 2] 3]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                 [[1 2] 3] [4] [rest] [[rest] [4] [[1 2] 3]] • [pop] dip [[first] [4] [[1 2] 3]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                           [[1 2] 3] [4] [rest] [[rest] [4] [[1 2] 3]] [pop] • dip [[first] [4] [[1 2] 3]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                        [[1 2] 3] [4] [rest] • pop [[rest] [4] [[1 2] 3]] [[first] [4] [[1 2] 3]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                               [[1 2] 3] [4] • [[rest] [4] [[1 2] 3]] [[first] [4] [[1 2] 3]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                        [[1 2] 3] [4] [[rest] [4] [[1 2] 3]] • [[first] [4] [[1 2] 3]] swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                [[1 2] 3] [4] [[rest] [4] [[1 2] 3]] [[first] [4] [[1 2] 3]] • swap [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                                [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] • [i] [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                            [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] [i] • [infrst] cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                   [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] [i] [infrst] • cons ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                   [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] [[i] infrst] • ii popdd [[] ccons] [_step0] [dupdipd] dip x i
                   [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] [[i] infrst] • [dip] dupdip i popdd [[] ccons] [_step0] [dupdipd] dip x i
             [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] [[i] infrst] [dip] • dupdip i popdd [[] ccons] [_step0] [dupdipd] dip x i
             [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] [[i] infrst] [dip] • dupd dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
             [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] [[i] infrst] [dip] • [dup] dip dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
       [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] [[i] infrst] [dip] [dup] • dip dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                   [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] [[i] infrst] • dup [dip] dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
      [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] [[i] infrst] [[i] infrst] • [dip] dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
[[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] [[i] infrst] [[i] infrst] [dip] • dip i popdd [[] ccons] [_step0] [dupdipd] dip x i
                   [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [[rest] [4] [[1 2] 3]] [[i] infrst] • dip [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                       [[1 2] 3] [4] [[first] [4] [[1 2] 3]] • [i] infrst [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                   [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [i] • infrst [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                   [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [i] • infra first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                   [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [i] • swons swaack [i] dip swaack first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                   [[1 2] 3] [4] [[first] [4] [[1 2] 3]] [i] • swap cons swaack [i] dip swaack first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                   [[1 2] 3] [4] [i] [[first] [4] [[1 2] 3]] • cons swaack [i] dip swaack first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                   [[1 2] 3] [4] [[i] [first] [4] [[1 2] 3]] • swaack [i] dip swaack first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                   [[1 2] 3] [4] [first] [i] [[4] [[1 2] 3]] • [i] dip swaack first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                               [[1 2] 3] [4] [first] [i] [[4] [[1 2] 3]] [i] • dip swaack first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                   [[1 2] 3] [4] [first] [i] • i [[4] [[1 2] 3]] swaack first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                       [[1 2] 3] [4] [first] • i [[4] [[1 2] 3]] swaack first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                               [[1 2] 3] [4] • first [[4] [[1 2] 3]] swaack first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 [[1 2] 3] 4 • [[4] [[1 2] 3]] swaack first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                 [[1 2] 3] 4 [[4] [[1 2] 3]] • swaack first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                 [[1 2] 3] [4] [4 [[1 2] 3]] • first [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                             [[1 2] 3] [4] 4 • [[rest] [4] [[1 2] 3]] [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                      [[1 2] 3] [4] 4 [[rest] [4] [[1 2] 3]] • [[i] infrst] i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                         [[1 2] 3] [4] 4 [[rest] [4] [[1 2] 3]] [[i] infrst] • i popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                      [[1 2] 3] [4] 4 [[rest] [4] [[1 2] 3]] • [i] infrst popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                  [[1 2] 3] [4] 4 [[rest] [4] [[1 2] 3]] [i] • infrst popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                  [[1 2] 3] [4] 4 [[rest] [4] [[1 2] 3]] [i] • infra first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                  [[1 2] 3] [4] 4 [[rest] [4] [[1 2] 3]] [i] • swons swaack [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                  [[1 2] 3] [4] 4 [[rest] [4] [[1 2] 3]] [i] • swap cons swaack [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                  [[1 2] 3] [4] 4 [i] [[rest] [4] [[1 2] 3]] • cons swaack [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                  [[1 2] 3] [4] 4 [[i] [rest] [4] [[1 2] 3]] • swaack [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                  [[1 2] 3] [4] [rest] [i] [4 [4] [[1 2] 3]] • [i] dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                              [[1 2] 3] [4] [rest] [i] [4 [4] [[1 2] 3]] [i] • dip swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                    [[1 2] 3] [4] [rest] [i] • i [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                        [[1 2] 3] [4] [rest] • i [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                               [[1 2] 3] [4] • rest [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                               [[1 2] 3] [4] • [pop] infra [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                         [[1 2] 3] [4] [pop] • infra [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                         [[1 2] 3] [4] [pop] • swons swaack [i] dip swaack [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                         [[1 2] 3] [4] [pop] • swap cons swaack [i] dip swaack [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                         [[1 2] 3] [pop] [4] • cons swaack [i] dip swaack [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                         [[1 2] 3] [[pop] 4] • swaack [i] dip swaack [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                         4 [pop] [[[1 2] 3]] • [i] dip swaack [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                     4 [pop] [[[1 2] 3]] [i] • dip swaack [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                     4 [pop] • i [[[1 2] 3]] swaack [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                           4 • pop [[[1 2] 3]] swaack [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                             • [[[1 2] 3]] swaack [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 [[[1 2] 3]] • swaack [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                                [[1 2] 3] [] • [4 [4] [[1 2] 3]] swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                              [[1 2] 3] [] [4 [4] [[1 2] 3]] • swaack first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                              [[1 2] 3] [4] 4 [[] [[1 2] 3]] • first popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                          [[1 2] 3] [4] 4 [] • popdd [[] ccons] [_step0] [dupdipd] dip x i
                                                                          [[1 2] 3] [4] 4 [] • [pop] dipd [[] ccons] [_step0] [dupdipd] dip x i
                                                                    [[1 2] 3] [4] 4 [] [pop] • dipd [[] ccons] [_step0] [dupdipd] dip x i
                                                                    [[1 2] 3] [4] 4 [] [pop] • [dip] codi [[] ccons] [_step0] [dupdipd] dip x i
                                                              [[1 2] 3] [4] 4 [] [pop] [dip] • codi [[] ccons] [_step0] [dupdipd] dip x i
                                                              [[1 2] 3] [4] 4 [] [pop] [dip] • cons dip [[] ccons] [_step0] [dupdipd] dip x i
                                                              [[1 2] 3] [4] 4 [] [[pop] dip] • dip [[] ccons] [_step0] [dupdipd] dip x i
                                                                             [[1 2] 3] [4] 4 • [pop] dip [] [[] ccons] [_step0] [dupdipd] dip x i
                                                                       [[1 2] 3] [4] 4 [pop] • dip [] [[] ccons] [_step0] [dupdipd] dip x i
                                                                               [[1 2] 3] [4] • pop 4 [] [[] ccons] [_step0] [dupdipd] dip x i
                                                                                   [[1 2] 3] • 4 [] [[] ccons] [_step0] [dupdipd] dip x i
                                                                                 [[1 2] 3] 4 • [] [[] ccons] [_step0] [dupdipd] dip x i
                                                                              [[1 2] 3] 4 [] • [[] ccons] [_step0] [dupdipd] dip x i
                                                                   [[1 2] 3] 4 [] [[] ccons] • [_step0] [dupdipd] dip x i
                                                          [[1 2] 3] 4 [] [[] ccons] [_step0] • [dupdipd] dip x i
                                                [[1 2] 3] 4 [] [[] ccons] [_step0] [dupdipd] • dip x i
                                                                   [[1 2] 3] 4 [] [[] ccons] • dupdipd [_step0] x i
                                                                   [[1 2] 3] 4 [] [[] ccons] • dup dipd [_step0] x i
                                                        [[1 2] 3] 4 [] [[] ccons] [[] ccons] • dipd [_step0] x i
                                                        [[1 2] 3] 4 [] [[] ccons] [[] ccons] • [dip] codi [_step0] x i
                                                  [[1 2] 3] 4 [] [[] ccons] [[] ccons] [dip] • codi [_step0] x i
                                                  [[1 2] 3] 4 [] [[] ccons] [[] ccons] [dip] • cons dip [_step0] x i
                                                  [[1 2] 3] 4 [] [[] ccons] [[[] ccons] dip] • dip [_step0] x i
                                                                              [[1 2] 3] 4 [] • [[] ccons] dip [[] ccons] [_step0] x i
                                                                   [[1 2] 3] 4 [] [[] ccons] • dip [[] ccons] [_step0] x i
                                                                                 [[1 2] 3] 4 • [] ccons [] [[] ccons] [_step0] x i
                                                                              [[1 2] 3] 4 [] • ccons [] [[] ccons] [_step0] x i
                                                                              [[1 2] 3] 4 [] • cons cons [] [[] ccons] [_step0] x i
                                                                               [[1 2] 3] [4] • cons [] [[] ccons] [_step0] x i
                                                                               [[[1 2] 3] 4] • [] [[] ccons] [_step0] x i
                                                                            [[[1 2] 3] 4] [] • [[] ccons] [_step0] x i
                                                                 [[[1 2] 3] 4] [] [[] ccons] • [_step0] x i
                                                        [[[1 2] 3] 4] [] [[] ccons] [_step0] • x i
                                                        [[[1 2] 3] 4] [] [[] ccons] [_step0] • dup i i
                                               [[[1 2] 3] 4] [] [[] ccons] [_step0] [_step0] • i i
                                                        [[[1 2] 3] 4] [] [[] ccons] [_step0] • _step0 i
                                                        [[[1 2] 3] 4] [] [[] ccons] [_step0] • _step1 [popopop] [_stept] branch i
                                                        [[[1 2] 3] 4] [] [[] ccons] [_step0] • [?] dipd roll< [popopop] [_stept] branch i
                                                    [[[1 2] 3] 4] [] [[] ccons] [_step0] [?] • dipd roll< [popopop] [_stept] branch i
                                                    [[[1 2] 3] 4] [] [[] ccons] [_step0] [?] • [dip] codi roll< [popopop] [_stept] branch i
                                              [[[1 2] 3] 4] [] [[] ccons] [_step0] [?] [dip] • codi roll< [popopop] [_stept] branch i
                                              [[[1 2] 3] 4] [] [[] ccons] [_step0] [?] [dip] • cons dip roll< [popopop] [_stept] branch i
                                              [[[1 2] 3] 4] [] [[] ccons] [_step0] [[?] dip] • dip roll< [popopop] [_stept] branch i
                                                                 [[[1 2] 3] 4] [] [[] ccons] • [?] dip [_step0] roll< [popopop] [_stept] branch i
                                                             [[[1 2] 3] 4] [] [[] ccons] [?] • dip [_step0] roll< [popopop] [_stept] branch i
                                                                            [[[1 2] 3] 4] [] • ? [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                            [[[1 2] 3] 4] [] • dup bool [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                         [[[1 2] 3] 4] [] [] • bool [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                                      [[[1 2] 3] 4] [] false • [[] ccons] [_step0] roll< [popopop] [_stept] branch i
                                                           [[[1 2] 3] 4] [] false [[] ccons] • [_step0] roll< [popopop] [_stept] branch i
                                                  [[[1 2] 3] 4] [] false [[] ccons] [_step0] • roll< [popopop] [_stept] branch i
                                                  [[[1 2] 3] 4] [] false [[] ccons] [_step0] • swapd swap [popopop] [_stept] branch i
                                                  [[[1 2] 3] 4] [] false [[] ccons] [_step0] • [swap] dip swap [popopop] [_stept] branch i
                                           [[[1 2] 3] 4] [] false [[] ccons] [_step0] [swap] • dip swap [popopop] [_stept] branch i
                                                           [[[1 2] 3] 4] [] false [[] ccons] • swap [_step0] swap [popopop] [_stept] branch i
                                                           [[[1 2] 3] 4] [] [[] ccons] false • [_step0] swap [popopop] [_stept] branch i
                                                  [[[1 2] 3] 4] [] [[] ccons] false [_step0] • swap [popopop] [_stept] branch i
                                                  [[[1 2] 3] 4] [] [[] ccons] [_step0] false • [popopop] [_stept] branch i
                                        [[[1 2] 3] 4] [] [[] ccons] [_step0] false [popopop] • [_stept] branch i
                               [[[1 2] 3] 4] [] [[] ccons] [_step0] false [popopop] [_stept] • branch i
                                                        [[[1 2] 3] 4] [] [[] ccons] [_step0] • popopop i
                                                        [[[1 2] 3] 4] [] [[] ccons] [_step0] • pop popop i
                                                                 [[[1 2] 3] 4] [] [[] ccons] • popop i
                                                                 [[[1 2] 3] 4] [] [[] ccons] • pop pop i
                                                                            [[[1 2] 3] 4] [] • pop i
                                                                               [[[1 2] 3] 4] • i
                                                                                             • [[1 2] 3] 4
                                                                                   [[1 2] 3] • 4
                                                                                 [[1 2] 3] 4 • 

[[1 2] 3] 4
In [19]:
clear

And here it is doing the thing.

In [20]:
[1 [2 [3 4 25 6] 7] 8] [sqr] [dip dip infra dip infra dip infra]
[1 [2 [3 4 25 6] 7] 8] [sqr] [dip dip infra dip infra dip infra]
In [ ]:
 [[[] ccons] step i] trace

Addressing

Because we are only using two combinators we could replace the list with a string made from only two characters.

   [...] [Q] 'ddididi' Zstr
-------------------------------------------------------------
   [...] [[[[[[[Q] dip] dip] infra] dip] infra] dip] infra

The string can be considered a name or address for an item in the subject datastructure.

Determining the right "path" for an item in a tree.

It's easy to read off (in reverse) the right sequence of "d" and "i" from the subject datastructure:

[ n [ n [ n n x ...
i d i d i d d Bingo!