machine: improve comments
[haskell/symantic-parser.git] / test / Golden / Grammar / OptimizeGrammar / G14.expected.txt
index b4f6e0134ff76606ec395e2f9df25fe11a600c83..8e0a20b6d9f7cfc1a1a51a2631f2a3914ab06925 100644 (file)
-<*>
-+ <*>
-| + <*>
-| | + <*>
-| | | + <*>
-| | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> u4)))))
-| | | | ` def <hidden>
-| | | |   ` <*>
-| | | |     + <*>
-| | | |     | + <*>
-| | | |     | | + pure (\u1 -> (\u2 -> (\u3 -> u3)))
-| | | |     | | ` def <hidden>
-| | | |     | |   ` pure Term
-| | | |     | ` def <hidden>
-| | | |     |   ` <|>
-| | | |     |     + <*>
-| | | |     |     | + <*>
-| | | |     |     | | + pure (\u1 -> (\u2 -> (\u3 -> u2 u3)))
-| | | |     |     | | ` <|>
-| | | |     |     | |   + <*>
-| | | |     |     | |   | + <*>
-| | | |     |     | |   | | + pure (\u1 -> (\u2 -> Term))
-| | | |     |     | |   | | ` def <hidden>
-| | | |     |     | |   | |   ` <*>
-| | | |     |     | |   | |     + <*>
-| | | |     |     | |   | |     | + pure (\u1 -> (\u2 -> u2))
-| | | |     |     | |   | |     | ` satisfy
-| | | |     |     | |   | |     ` ref <hidden>
-| | | |     |     | |   | ` def <hidden>
-| | | |     |     | |   |   ` <|>
-| | | |     |     | |   |     + <*>
-| | | |     |     | |   |     | + <*>
-| | | |     |     | |   |     | | + pure (\u1 -> (\u2 -> (\u3 -> u2 u3)))
-| | | |     |     | |   |     | | ` ref <hidden>
-| | | |     |     | |   |     | ` rec <hidden>
-| | | |     |     | |   |     ` pure (\u1 -> u1)
-| | | |     |     | |   ` <*>
-| | | |     |     | |     + <*>
-| | | |     |     | |     | + <*>
-| | | |     |     | |     | | + <*>
-| | | |     |     | |     | | | + <*>
-| | | |     |     | |     | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> u5)))))
-| | | |     |     | |     | | | | ` try
-| | | |     |     | |     | | | |   ` <*>
-| | | |     |     | |     | | | |     + <*>
-| | | |     |     | |     | | | |     | + pure (\u1 -> (\u2 -> '/' : ('/' : Term)))
-| | | |     |     | |     | | | |     | ` satisfy
-| | | |     |     | |     | | | |     ` satisfy
-| | | |     |     | |     | | | ` ref <hidden>
-| | | |     |     | |     | | ` def <hidden>
-| | | |     |     | |     | |   ` <|>
-| | | |     |     | |     | |     + <*>
-| | | |     |     | |     | |     | + <*>
-| | | |     |     | |     | |     | | + pure (\u1 -> (\u2 -> (\u3 -> u2 u3)))
-| | | |     |     | |     | |     | | ` satisfy
-| | | |     |     | |     | |     | ` rec <hidden>
-| | | |     |     | |     | |     ` pure (\u1 -> u1)
-| | | |     |     | |     | ` ref <hidden>
-| | | |     |     | |     ` ref <hidden>
-| | | |     |     | ` rec <hidden>
-| | | |     |     ` pure (\u1 -> u1)
-| | | |     ` ref <hidden>
-| | | ` ref <hidden>
-| | ` def <hidden>
-| |   ` <|>
-| |     + <*>
-| |     | + <*>
-| |     | | + <*>
-| |     | | | + <*>
-| |     | | | | + <*>
-| |     | | | | | + <*>
-| |     | | | | | | + <*>
-| |     | | | | | | | + <*>
-| |     | | | | | | | | + <*>
-| |     | | | | | | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (\u6 -> (\u7 -> (\u8 -> (\u9 -> (\u10 -> u9 u10))))))))))
-| |     | | | | | | | | | ` try
-| |     | | | | | | | | |   ` <*>
-| |     | | | | | | | | |     + <*>
-| |     | | | | | | | | |     | + pure (\u1 -> (\u2 -> u2))
-| |     | | | | | | | | |     | ` try
-| |     | | | | | | | | |     |   ` <*>
-| |     | | | | | | | | |     |     + <*>
-| |     | | | | | | | | |     |     | + <*>
-| |     | | | | | | | | |     |     | | + <*>
-| |     | | | | | | | | |     |     | | | + <*>
-| |     | | | | | | | | |     |     | | | | + <*>
-| |     | | | | | | | | |     |     | | | | | + <*>
-| |     | | | | | | | | |     |     | | | | | | + <*>
-| |     | | | | | | | | |     |     | | | | | | | + <*>
-| |     | | | | | | | | |     |     | | | | | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (\u6 -> (\u7 -> (\u8 -> (\u9 -> 'f' : ('u' : ('n' : ('c' : ('t' : ('i' : ('o' : ('n' : u9))))))))))))))))
-| |     | | | | | | | | |     |     | | | | | | | | ` satisfy
-| |     | | | | | | | | |     |     | | | | | | | ` satisfy
-| |     | | | | | | | | |     |     | | | | | | ` satisfy
-| |     | | | | | | | | |     |     | | | | | ` satisfy
-| |     | | | | | | | | |     |     | | | | ` satisfy
-| |     | | | | | | | | |     |     | | | ` satisfy
-| |     | | | | | | | | |     |     | | ` satisfy
-| |     | | | | | | | | |     |     | ` satisfy
-| |     | | | | | | | | |     |     ` def <hidden>
-| |     | | | | | | | | |     |       ` pure Term
-| |     | | | | | | | | |     ` def <hidden>
-| |     | | | | | | | | |       ` negLook
-| |     | | | | | | | | |         ` satisfy
-| |     | | | | | | | | ` ref <hidden>
-| |     | | | | | | | ` def <hidden>
-| |     | | | | | | |   ` <*>
-| |     | | | | | | |     + <*>
-| |     | | | | | | |     | + pure (\u1 -> (\u2 -> u2))
-| |     | | | | | | |     | ` try
-| |     | | | | | | |     |   ` <*>
-| |     | | | | | | |     |     + <*>
-| |     | | | | | | |     |     | + <*>
-| |     | | | | | | |     |     | | + <*>
-| |     | | | | | | |     |     | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> u4))))
-| |     | | | | | | |     |     | | | ` satisfy
-| |     | | | | | | |     |     | | ` ref <hidden>
-| |     | | | | | | |     |     | ` def <hidden>
-| |     | | | | | | |     |     |   ` <|>
-| |     | | | | | | |     |     |     + <*>
-| |     | | | | | | |     |     |     | + <*>
-| |     | | | | | | |     |     |     | | + pure (\u1 -> (\u2 -> (\u3 -> u2 u3)))
-| |     | | | | | | |     |     |     | | ` satisfy
-| |     | | | | | | |     |     |     | ` rec <hidden>
-| |     | | | | | | |     |     |     ` pure (\u1 -> u1)
-| |     | | | | | | |     |     ` ref <hidden>
-| |     | | | | | | |     ` ref <hidden>
-| |     | | | | | | ` def <hidden>
-| |     | | | | | |   ` <*>
-| |     | | | | | |     + <*>
-| |     | | | | | |     | + pure (\u1 -> (\u2 -> '('))
-| |     | | | | | |     | ` satisfy
-| |     | | | | | |     ` ref <hidden>
-| |     | | | | | ` def <hidden>
-| |     | | | | |   ` <|>
-| |     | | | | |     + <*>
-| |     | | | | |     | + <*>
-| |     | | | | |     | | + <*>
-| |     | | | | |     | | | + <*>
-| |     | | | | |     | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> Term))))
-| |     | | | | |     | | | | ` def <hidden>
-| |     | | | | |     | | | |   ` <*>
-| |     | | | | |     | | | |     + <*>
-| |     | | | | |     | | | |     | + pure (\u1 -> (\u2 -> u2))
-| |     | | | | |     | | | |     | ` ref <hidden>
-| |     | | | | |     | | | |     ` <|>
-| |     | | | | |     | | | |       + <*>
-| |     | | | | |     | | | |       | + pure (\u1 -> Term)
-| |     | | | | |     | | | |       | ` def <hidden>
-| |     | | | | |     | | | |       |   ` <*>
-| |     | | | | |     | | | |       |     + <*>
-| |     | | | | |     | | | |       |     | + <*>
-| |     | | | | |     | | | |       |     | | + <*>
-| |     | | | | |     | | | |       |     | | | + <*>
-| |     | | | | |     | | | |       |     | | | | + <*>
-| |     | | | | |     | | | |       |     | | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (\u6 -> Term))))))
-| |     | | | | |     | | | |       |     | | | | | ` satisfy
-| |     | | | | |     | | | |       |     | | | | ` ref <hidden>
-| |     | | | | |     | | | |       |     | | | ` def <hidden>
-| |     | | | | |     | | | |       |     | | |   ` satisfy
-| |     | | | | |     | | | |       |     | | ` def <hidden>
-| |     | | | | |     | | | |       |     | |   ` <|>
-| |     | | | | |     | | | |       |     | |     + <*>
-| |     | | | | |     | | | |       |     | |     | + <*>
-| |     | | | | |     | | | |       |     | |     | | + pure (\u1 -> (\u2 -> (\u3 -> u2 u3)))
-| |     | | | | |     | | | |       |     | |     | | ` ref <hidden>
-| |     | | | | |     | | | |       |     | |     | ` rec <hidden>
-| |     | | | | |     | | | |       |     | |     ` pure (\u1 -> u1)
-| |     | | | | |     | | | |       |     | ` satisfy
-| |     | | | | |     | | | |       |     ` ref <hidden>
-| |     | | | | |     | | | |       ` ref <hidden>
-| |     | | | | |     | | | ` ref <hidden>
-| |     | | | | |     | | ` def <hidden>
-| |     | | | | |     | |   ` <|>
-| |     | | | | |     | |     + <*>
-| |     | | | | |     | |     | + <*>
-| |     | | | | |     | |     | | + <*>
-| |     | | | | |     | |     | | | + <*>
-| |     | | | | |     | |     | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (u1 u3) (u4 u5))))))
-| |     | | | | |     | |     | | | | ` def <hidden>
-| |     | | | | |     | |     | | | |   ` pure (\u1 -> (\u2 -> u2))
-| |     | | | | |     | |     | | | ` def <hidden>
-| |     | | | | |     | |     | | |   ` <*>
-| |     | | | | |     | |     | | |     + <*>
-| |     | | | | |     | |     | | |     | + pure (\u1 -> (\u2 -> ','))
-| |     | | | | |     | |     | | |     | ` satisfy
-| |     | | | | |     | |     | | |     ` ref <hidden>
-| |     | | | | |     | |     | | ` ref <hidden>
-| |     | | | | |     | |     | ` rec <hidden>
-| |     | | | | |     | |     ` pure (\u1 -> u1)
-| |     | | | | |     | ` ref <hidden>
-| |     | | | | |     ` ref <hidden>
-| |     | | | | ` <|>
-| |     | | | |   + <*>
-| |     | | | |   | + <*>
-| |     | | | |   | | + <*>
-| |     | | | |   | | | + pure (\u1 -> (\u2 -> (\u3 -> Term)))
-| |     | | | |   | | | ` satisfy
-| |     | | | |   | | ` ref <hidden>
-| |     | | | |   | ` ref <hidden>
-| |     | | | |   ` ref <hidden>
-| |     | | | ` def <hidden>
-| |     | | |   ` <*>
-| |     | | |     + <*>
-| |     | | |     | + pure (\u1 -> (\u2 -> ')'))
-| |     | | |     | ` satisfy
-| |     | | |     ` ref <hidden>
-| |     | | ` def <hidden>
-| |     | |   ` <*>
-| |     | |     + <*>
-| |     | |     | + <*>
-| |     | |     | | + <*>
-| |     | |     | | | + <*>
-| |     | |     | | | | + <*>
-| |     | |     | | | | | + <*>
-| |     | |     | | | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (\u6 -> (\u7 -> u5)))))))
-| |     | |     | | | | | | ` satisfy
-| |     | |     | | | | | ` ref <hidden>
-| |     | |     | | | | ` ref <hidden>
-| |     | |     | | | ` def <hidden>
-| |     | |     | | |   ` <|>
-| |     | |     | | |     + <*>
-| |     | |     | | |     | + <*>
-| |     | |     | | |     | | + pure (\u1 -> (\u2 -> (\u3 -> u2 u3)))
-| |     | |     | | |     | | ` <|>
-| |     | |     | | |     | |   + <*>
-| |     | |     | | |     | |   | + <*>
-| |     | |     | | |     | |   | | + <*>
-| |     | |     | | |     | |   | | | + <*>
-| |     | |     | | |     | |   | | | | + <*>
-| |     | |     | | |     | |   | | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> u5)))))
-| |     | |     | | |     | |   | | | | | ` try
-| |     | |     | | |     | |   | | | | |   ` <*>
-| |     | |     | | |     | |   | | | | |     + <*>
-| |     | |     | | |     | |   | | | | |     | + pure (\u1 -> (\u2 -> u2))
-| |     | |     | | |     | |   | | | | |     | ` try
-| |     | |     | | |     | |   | | | | |     |   ` <*>
-| |     | |     | | |     | |   | | | | |     |     + <*>
-| |     | |     | | |     | |   | | | | |     |     | + <*>
-| |     | |     | | |     | |   | | | | |     |     | | + pure (\u1 -> (\u2 -> (\u3 -> 'i' : ('f' : u3))))
-| |     | |     | | |     | |   | | | | |     |     | | ` satisfy
-| |     | |     | | |     | |   | | | | |     |     | ` satisfy
-| |     | |     | | |     | |   | | | | |     |     ` ref <hidden>
-| |     | |     | | |     | |   | | | | |     ` ref <hidden>
-| |     | |     | | |     | |   | | | | ` ref <hidden>
-| |     | |     | | |     | |   | | | ` def <hidden>
-| |     | |     | | |     | |   | | |   ` <*>
-| |     | |     | | |     | |   | | |     + <*>
-| |     | |     | | |     | |   | | |     | + <*>
-| |     | |     | | |     | |   | | |     | | + <*>
-| |     | |     | | |     | |   | | |     | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> u4))))
-| |     | |     | | |     | |   | | |     | | | ` def <hidden>
-| |     | |     | | |     | |   | | |     | | |   ` <|>
-| |     | |     | | |     | |   | | |     | | |     + <*>
-| |     | |     | | |     | |   | | |     | | |     | + <*>
-| |     | |     | | |     | |   | | |     | | |     | | + pure (\u1 -> (\u2 -> u2))
-| |     | |     | | |     | |   | | |     | | |     | | ` <|>
-| |     | |     | | |     | |   | | |     | | |     | |   + <*>
-| |     | |     | | |     | |   | | |     | | |     | |   | + pure (\u1 -> '0')
-| |     | |     | | |     | |   | | |     | | |     | |   | ` satisfy
-| |     | |     | | |     | |   | | |     | | |     | |   ` <*>
-| |     | |     | | |     | |   | | |     | | |     | |     + pure (\u1 -> '1')
-| |     | |     | | |     | |   | | |     | | |     | |     ` satisfy
-| |     | |     | | |     | |   | | |     | | |     | ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |     ` <|>
-| |     | |     | | |     | |   | | |     | | |       + <*>
-| |     | |     | | |     | |   | | |     | | |       | + <*>
-| |     | |     | | |     | |   | | |     | | |       | | + <*>
-| |     | |     | | |     | |   | | |     | | |       | | | + <*>
-| |     | |     | | |     | |   | | |     | | |       | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> u2))))
-| |     | |     | | |     | |   | | |     | | |       | | | | ` satisfy
-| |     | |     | | |     | |   | | |     | | |       | | | ` <|>
-| |     | |     | | |     | |   | | |     | | |       | | |   + <*>
-| |     | |     | | |     | |   | | |     | | |       | | |   | + <*>
-| |     | |     | | |     | |   | | |     | | |       | | |   | | + pure (\u1 -> (\u2 -> u2))
-| |     | |     | | |     | |   | | |     | | |       | | |   | | ` satisfy
-| |     | |     | | |     | |   | | |     | | |       | | |   | ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |       | | |   ` <*>
-| |     | |     | | |     | |   | | |     | | |       | | |     + <*>
-| |     | |     | | |     | |   | | |     | | |       | | |     | + <*>
-| |     | |     | | |     | |   | | |     | | |       | | |     | | + pure (\u1 -> (\u2 -> (\u3 -> u3)))
-| |     | |     | | |     | |   | | |     | | |       | | |     | | ` satisfy
-| |     | |     | | |     | |   | | |     | | |       | | |     | ` satisfy
-| |     | |     | | |     | |   | | |     | | |       | | |     ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |       | | ` satisfy
-| |     | |     | | |     | |   | | |     | | |       | ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |       ` <*>
-| |     | |     | | |     | |   | | |     | | |         + <*>
-| |     | |     | | |     | |   | | |     | | |         | + pure (\u1 -> (\u2 -> u2))
-| |     | |     | | |     | |   | | |     | | |         | ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |         ` <|>
-| |     | |     | | |     | |   | | |     | | |           + <*>
-| |     | |     | | |     | |   | | |     | | |           | + pure (\u1 -> Term)
-| |     | |     | | |     | |   | | |     | | |           | ` <|>
-| |     | |     | | |     | |   | | |     | | |           |   + <*>
-| |     | |     | | |     | |   | | |     | | |           |   | + <*>
-| |     | |     | | |     | |   | | |     | | |           |   | | + <*>
-| |     | |     | | |     | |   | | |     | | |           |   | | | + pure (\u1 -> (\u2 -> (\u3 -> u2)))
-| |     | |     | | |     | |   | | |     | | |           |   | | | ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |           |   | | ` <|>
-| |     | |     | | |     | |   | | |     | | |           |   | |   + <*>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | + <*>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | | + <*>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | | | + <*>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> Term))))
-| |     | |     | | |     | |   | | |     | | |           |   | |   | | | | ` rec <hidden>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | | | ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | | ` def <hidden>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | |   ` <|>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | |     + <*>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | |     | + <*>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | |     | | + <*>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | |     | | | + <*>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | |     | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (u1 u3) (u4 u5))))))
-| |     | |     | | |     | |   | | |     | | |           |   | |   | |     | | | | ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | |     | | | ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | |     | | ` rec <hidden>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | |     | ` rec <hidden>
-| |     | |     | | |     | |   | | |     | | |           |   | |   | |     ` pure (\u1 -> u1)
-| |     | |     | | |     | |   | | |     | | |           |   | |   | ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |           |   | |   ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |           |   | ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |           |   ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | |           ` ref <hidden>
-| |     | |     | | |     | |   | | |     | | ` ref <hidden>
-| |     | |     | | |     | |   | | |     | ` def <hidden>
-| |     | |     | | |     | |   | | |     |   ` <|>
-| |     | |     | | |     | |   | | |     |     + <*>
-| |     | |     | | |     | |   | | |     |     | + <*>
-| |     | |     | | |     | |   | | |     |     | | + <*>
-| |     | |     | | |     | |   | | |     |     | | | + <*>
-| |     | |     | | |     | |   | | |     |     | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> u4 u5)))))
-| |     | |     | | |     | |   | | |     |     | | | | ` satisfy
-| |     | |     | | |     | |   | | |     |     | | | ` ref <hidden>
-| |     | |     | | |     | |   | | |     |     | | ` ref <hidden>
-| |     | |     | | |     | |   | | |     |     | ` rec <hidden>
-| |     | |     | | |     | |   | | |     |     ` pure (\u1 -> u1)
-| |     | |     | | |     | |   | | |     ` ref <hidden>
-| |     | |     | | |     | |   | | ` rec <hidden>
-| |     | |     | | |     | |   | ` <|>
-| |     | |     | | |     | |   |   + <*>
-| |     | |     | | |     | |   |   | + <*>
-| |     | |     | | |     | |   |   | | + <*>
-| |     | |     | | |     | |   |   | | | + pure (\u1 -> (\u2 -> (\u3 -> Term)))
-| |     | |     | | |     | |   |   | | | ` try
-| |     | |     | | |     | |   |   | | |   ` <*>
-| |     | |     | | |     | |   |   | | |     + <*>
-| |     | |     | | |     | |   |   | | |     | + pure (\u1 -> (\u2 -> u2))
-| |     | |     | | |     | |   |   | | |     | ` try
-| |     | |     | | |     | |   |   | | |     |   ` <*>
-| |     | |     | | |     | |   |   | | |     |     + <*>
-| |     | |     | | |     | |   |   | | |     |     | + <*>
-| |     | |     | | |     | |   |   | | |     |     | | + <*>
-| |     | |     | | |     | |   |   | | |     |     | | | + <*>
-| |     | |     | | |     | |   |   | | |     |     | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> 'e' : ('l' : ('s' : ('e' : u5))))))))
-| |     | |     | | |     | |   |   | | |     |     | | | | ` satisfy
-| |     | |     | | |     | |   |   | | |     |     | | | ` satisfy
-| |     | |     | | |     | |   |   | | |     |     | | ` satisfy
-| |     | |     | | |     | |   |   | | |     |     | ` satisfy
-| |     | |     | | |     | |   |   | | |     |     ` ref <hidden>
-| |     | |     | | |     | |   |   | | |     ` ref <hidden>
-| |     | |     | | |     | |   |   | | ` ref <hidden>
-| |     | |     | | |     | |   |   | ` rec <hidden>
-| |     | |     | | |     | |   |   ` ref <hidden>
-| |     | |     | | |     | |   ` <|>
-| |     | |     | | |     | |     + <*>
-| |     | |     | | |     | |     | + <*>
-| |     | |     | | |     | |     | | + <*>
-| |     | |     | | |     | |     | | | + <*>
-| |     | |     | | |     | |     | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> u4))))
-| |     | |     | | |     | |     | | | | ` try
-| |     | |     | | |     | |     | | | |   ` <*>
-| |     | |     | | |     | |     | | | |     + <*>
-| |     | |     | | |     | |     | | | |     | + pure (\u1 -> (\u2 -> u2))
-| |     | |     | | |     | |     | | | |     | ` try
-| |     | |     | | |     | |     | | | |     |   ` <*>
-| |     | |     | | |     | |     | | | |     |     + <*>
-| |     | |     | | |     | |     | | | |     |     | + <*>
-| |     | |     | | |     | |     | | | |     |     | | + <*>
-| |     | |     | | |     | |     | | | |     |     | | | + <*>
-| |     | |     | | |     | |     | | | |     |     | | | | + <*>
-| |     | |     | | |     | |     | | | |     |     | | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (\u6 -> 'w' : ('h' : ('i' : ('l' : ('e' : u6))))))))))
-| |     | |     | | |     | |     | | | |     |     | | | | | ` satisfy
-| |     | |     | | |     | |     | | | |     |     | | | | ` satisfy
-| |     | |     | | |     | |     | | | |     |     | | | ` satisfy
-| |     | |     | | |     | |     | | | |     |     | | ` satisfy
-| |     | |     | | |     | |     | | | |     |     | ` satisfy
-| |     | |     | | |     | |     | | | |     |     ` ref <hidden>
-| |     | |     | | |     | |     | | | |     ` ref <hidden>
-| |     | |     | | |     | |     | | | ` ref <hidden>
-| |     | |     | | |     | |     | | ` ref <hidden>
-| |     | |     | | |     | |     | ` rec <hidden>
-| |     | |     | | |     | |     ` <|>
-| |     | |     | | |     | |       + try
-| |     | |     | | |     | |       | ` <*>
-| |     | |     | | |     | |       |   + <*>
-| |     | |     | | |     | |       |   | + <*>
-| |     | |     | | |     | |       |   | | + <*>
-| |     | |     | | |     | |       |   | | | + <*>
-| |     | |     | | |     | |       |   | | | | + <*>
-| |     | |     | | |     | |       |   | | | | | + <*>
-| |     | |     | | |     | |       |   | | | | | | + <*>
-| |     | |     | | |     | |       |   | | | | | | | + <*>
-| |     | |     | | |     | |       |   | | | | | | | | + <*>
-| |     | |     | | |     | |       |   | | | | | | | | | + <*>
-| |     | |     | | |     | |       |   | | | | | | | | | | + <*>
-| |     | |     | | |     | |       |   | | | | | | | | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (\u6 -> (\u7 -> (\u8 -> (\u9 -> (\u10 -> (\u11 -> (\u12 -> u11))))))))))))
-| |     | |     | | |     | |       |   | | | | | | | | | | | ` <|>
-| |     | |     | | |     | |       |   | | | | | | | | | | |   + <*>
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | + <*>
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | | + pure (\u1 -> (\u2 -> Term))
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | | ` try
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |   ` <*>
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     + <*>
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     | + pure (\u1 -> (\u2 -> u2))
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     | ` try
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     |   ` <*>
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     |     + <*>
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     |     | + <*>
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     |     | | + <*>
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     |     | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> 'v' : ('a' : ('r' : u4))))))
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     |     | | | ` satisfy
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     |     | | ` satisfy
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     |     | ` satisfy
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     |     ` ref <hidden>
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | |     ` ref <hidden>
-| |     | |     | | |     | |       |   | | | | | | | | | | |   | ` ref <hidden>
-| |     | |     | | |     | |       |   | | | | | | | | | | |   ` ref <hidden>
-| |     | |     | | |     | |       |   | | | | | | | | | | ` ref <hidden>
-| |     | |     | | |     | |       |   | | | | | | | | | ` ref <hidden>
-| |     | |     | | |     | |       |   | | | | | | | | ` def <hidden>
-| |     | |     | | |     | |       |   | | | | | | | |   ` <|>
-| |     | |     | | |     | |       |   | | | | | | | |     + <*>
-| |     | |     | | |     | |       |   | | | | | | | |     | + <*>
-| |     | |     | | |     | |       |   | | | | | | | |     | | + <*>
-| |     | |     | | |     | |       |   | | | | | | | |     | | | + <*>
-| |     | |     | | |     | |       |   | | | | | | | |     | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (u1 u3) (u4 u5))))))
-| |     | |     | | |     | |       |   | | | | | | | |     | | | | ` ref <hidden>
-| |     | |     | | |     | |       |   | | | | | | | |     | | | ` ref <hidden>
-| |     | |     | | |     | |       |   | | | | | | | |     | | ` ref <hidden>
-| |     | |     | | |     | |       |   | | | | | | | |     | ` rec <hidden>
-| |     | |     | | |     | |       |   | | | | | | | |     ` pure (\u1 -> u1)
-| |     | |     | | |     | |       |   | | | | | | | ` ref <hidden>
-| |     | |     | | |     | |       |   | | | | | | ` satisfy
-| |     | |     | | |     | |       |   | | | | | ` ref <hidden>
-| |     | |     | | |     | |       |   | | | | ` ref <hidden>
-| |     | |     | | |     | |       |   | | | ` ref <hidden>
-| |     | |     | | |     | |       |   | | ` def <hidden>
-| |     | |     | | |     | |       |   | |   ` <|>
-| |     | |     | | |     | |       |   | |     + <*>
-| |     | |     | | |     | |       |   | |     | + <*>
-| |     | |     | | |     | |       |   | |     | | + <*>
-| |     | |     | | |     | |       |   | |     | | | + <*>
-| |     | |     | | |     | |       |   | |     | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (u1 u3) (u4 u5))))))
-| |     | |     | | |     | |       |   | |     | | | | ` ref <hidden>
-| |     | |     | | |     | |       |   | |     | | | ` ref <hidden>
-| |     | |     | | |     | |       |   | |     | | ` ref <hidden>
-| |     | |     | | |     | |       |   | |     | ` rec <hidden>
-| |     | |     | | |     | |       |   | |     ` pure (\u1 -> u1)
-| |     | |     | | |     | |       |   | ` ref <hidden>
-| |     | |     | | |     | |       |   ` def <hidden>
-| |     | |     | | |     | |       |     ` <*>
-| |     | |     | | |     | |       |       + <*>
-| |     | |     | | |     | |       |       | + pure (\u1 -> (\u2 -> ';'))
-| |     | |     | | |     | |       |       | ` satisfy
-| |     | |     | | |     | |       |       ` ref <hidden>
-| |     | |     | | |     | |       ` <*>
-| |     | |     | | |     | |         + <*>
-| |     | |     | | |     | |         | + pure (\u1 -> (\u2 -> u1))
-| |     | |     | | |     | |         | ` ref <hidden>
-| |     | |     | | |     | |         ` ref <hidden>
-| |     | |     | | |     | ` rec <hidden>
-| |     | |     | | |     ` pure (\u1 -> u1)
-| |     | |     | | ` ref <hidden>
-| |     | |     | ` satisfy
-| |     | |     ` ref <hidden>
-| |     | ` rec <hidden>
-| |     ` pure (\u1 -> u1)
-| ` ref <hidden>
-` eof
+lets
++ let <hidden>
+| ` <*>
+|   + <*>
+|   | + pure (\u1 -> (\u2 -> u2))
+|   | ` ref <hidden>
+|   ` <|>
+|     + <*>
+|     | + pure (\u1 -> Term)
+|     | ` ref <hidden>
+|     ` ref <hidden>
++ let <hidden>
+| ` <*>
+|   + <*>
+|   | + <*>
+|   | | + <*>
+|   | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> u4))))
+|   | | | ` ref <hidden>
+|   | | ` ref <hidden>
+|   | ` ref <hidden>
+|   ` ref <hidden>
++ let <hidden>
+| ` <*>
+|   + <*>
+|   | + <*>
+|   | | + <*>
+|   | | | + <*>
+|   | | | | + <*>
+|   | | | | | + <*>
+|   | | | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (\u6 -> (\u7 -> u5)))))))
+|   | | | | | | ` satisfy
+|   | | | | | ` ref <hidden>
+|   | | | | ` ref <hidden>
+|   | | | ` ref <hidden>
+|   | | ` ref <hidden>
+|   | ` satisfy
+|   ` ref <hidden>
++ let <hidden>
+| ` <*>
+|   + <*>
+|   | + <*>
+|   | | + <*>
+|   | | | + <*>
+|   | | | | + <*>
+|   | | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (\u6 -> Term))))))
+|   | | | | | ` satisfy
+|   | | | | ` ref <hidden>
+|   | | | ` ref <hidden>
+|   | | ` ref <hidden>
+|   | ` satisfy
+|   ` ref <hidden>
++ let <hidden>
+| ` <*>
+|   + <*>
+|   | + pure (\u1 -> (\u2 -> '('))
+|   | ` satisfy
+|   ` ref <hidden>
++ let <hidden>
+| ` <*>
+|   + <*>
+|   | + pure (\u1 -> (\u2 -> ')'))
+|   | ` satisfy
+|   ` ref <hidden>
++ let <hidden>
+| ` <*>
+|   + <*>
+|   | + pure (\u1 -> (\u2 -> ','))
+|   | ` satisfy
+|   ` ref <hidden>
++ let <hidden>
+| ` <*>
+|   + <*>
+|   | + pure (\u1 -> (\u2 -> ';'))
+|   | ` satisfy
+|   ` ref <hidden>
++ let <hidden>
+| ` <*>
+|   + <*>
+|   | + pure (\u1 -> (\u2 -> Term))
+|   | ` ref <hidden>
+|   ` ref <hidden>
++ let <hidden>
+| ` <*>
+|   + <*>
+|   | + pure (\u1 -> (\u2 -> u2))
+|   | ` satisfy
+|   ` ref <hidden>
++ let <hidden>
+| ` <*>
+|   + <*>
+|   | + pure (\u1 -> (\u2 -> u2))
+|   | ` try
+|   |   ` <*>
+|   |     + <*>
+|   |     | + <*>
+|   |     | | + <*>
+|   |     | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> u4))))
+|   |     | | | ` satisfy
+|   |     | | ` ref <hidden>
+|   |     | ` ref <hidden>
+|   |     ` ref <hidden>
+|   ` ref <hidden>
++ let <hidden>
+| ` <|>
+|   + <*>
+|   | + <*>
+|   | | + pure (\u1 -> (\u2 -> u2))
+|   | | ` <|>
+|   | |   + <*>
+|   | |   | + pure (\u1 -> '0')
+|   | |   | ` satisfy
+|   | |   ` <*>
+|   | |     + pure (\u1 -> '1')
+|   | |     ` satisfy
+|   | ` ref <hidden>
+|   ` <|>
+|     + <*>
+|     | + <*>
+|     | | + <*>
+|     | | | + <*>
+|     | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> u2))))
+|     | | | | ` satisfy
+|     | | | ` <|>
+|     | | |   + <*>
+|     | | |   | + <*>
+|     | | |   | | + pure (\u1 -> (\u2 -> u2))
+|     | | |   | | ` satisfy
+|     | | |   | ` ref <hidden>
+|     | | |   ` <*>
+|     | | |     + <*>
+|     | | |     | + <*>
+|     | | |     | | + pure (\u1 -> (\u2 -> (\u3 -> u3)))
+|     | | |     | | ` satisfy
+|     | | |     | ` satisfy
+|     | | |     ` ref <hidden>
+|     | | ` satisfy
+|     | ` ref <hidden>
+|     ` <*>
+|       + <*>
+|       | + pure (\u1 -> (\u2 -> u2))
+|       | ` ref <hidden>
+|       ` <|>
+|         + <*>
+|         | + pure (\u1 -> Term)
+|         | ` <|>
+|         |   + <*>
+|         |   | + <*>
+|         |   | | + <*>
+|         |   | | | + pure (\u1 -> (\u2 -> (\u3 -> u2)))
+|         |   | | | ` ref <hidden>
+|         |   | | ` <|>
+|         |   | |   + <*>
+|         |   | |   | + <*>
+|         |   | |   | | + <*>
+|         |   | |   | | | + <*>
+|         |   | |   | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> Term))))
+|         |   | |   | | | | ` rec <hidden>
+|         |   | |   | | | ` ref <hidden>
+|         |   | |   | | ` ref <hidden>
+|         |   | |   | ` ref <hidden>
+|         |   | |   ` ref <hidden>
+|         |   | ` ref <hidden>
+|         |   ` ref <hidden>
+|         ` ref <hidden>
++ let <hidden>
+| ` <|>
+|   + <*>
+|   | + <*>
+|   | | + <*>
+|   | | | + <*>
+|   | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (u1 u3) (u4 u5))))))
+|   | | | | ` ref <hidden>
+|   | | | ` ref <hidden>
+|   | | ` rec <hidden>
+|   | ` rec <hidden>
+|   ` pure (\u1 -> u1)
++ let <hidden>
+| ` <|>
+|   + <*>
+|   | + <*>
+|   | | + <*>
+|   | | | + <*>
+|   | | | | + <*>
+|   | | | | | + <*>
+|   | | | | | | + <*>
+|   | | | | | | | + <*>
+|   | | | | | | | | + <*>
+|   | | | | | | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (\u6 -> (\u7 -> (\u8 -> (\u9 -> (\u10 -> u9 u10))))))))))
+|   | | | | | | | | | ` try
+|   | | | | | | | | |   ` <*>
+|   | | | | | | | | |     + <*>
+|   | | | | | | | | |     | + <*>
+|   | | | | | | | | |     | | + <*>
+|   | | | | | | | | |     | | | + <*>
+|   | | | | | | | | |     | | | | + <*>
+|   | | | | | | | | |     | | | | | + <*>
+|   | | | | | | | | |     | | | | | | + <*>
+|   | | | | | | | | |     | | | | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (\u6 -> (\u7 -> (\u8 -> 'f' : ('u' : ('n' : ('c' : ('t' : ('i' : ('o' : ('n' : Term)))))))))))))))
+|   | | | | | | | | |     | | | | | | | ` satisfy
+|   | | | | | | | | |     | | | | | | ` satisfy
+|   | | | | | | | | |     | | | | | ` satisfy
+|   | | | | | | | | |     | | | | ` satisfy
+|   | | | | | | | | |     | | | ` satisfy
+|   | | | | | | | | |     | | ` satisfy
+|   | | | | | | | | |     | ` satisfy
+|   | | | | | | | | |     ` satisfy
+|   | | | | | | | | ` ref <hidden>
+|   | | | | | | | ` ref <hidden>
+|   | | | | | | ` ref <hidden>
+|   | | | | | ` ref <hidden>
+|   | | | | ` <|>
+|   | | | |   + <*>
+|   | | | |   | + <*>
+|   | | | |   | | + <*>
+|   | | | |   | | | + pure (\u1 -> (\u2 -> (\u3 -> Term)))
+|   | | | |   | | | ` satisfy
+|   | | | |   | | ` ref <hidden>
+|   | | | |   | ` ref <hidden>
+|   | | | |   ` ref <hidden>
+|   | | | ` ref <hidden>
+|   | | ` ref <hidden>
+|   | ` rec <hidden>
+|   ` pure (\u1 -> u1)
++ let <hidden>
+| ` <|>
+|   + <*>
+|   | + <*>
+|   | | + <*>
+|   | | | + <*>
+|   | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (u1 u3) (u4 u5))))))
+|   | | | | ` ref <hidden>
+|   | | | ` ref <hidden>
+|   | | ` ref <hidden>
+|   | ` rec <hidden>
+|   ` pure (\u1 -> u1)
++ let <hidden>
+| ` <|>
+|   + <*>
+|   | + <*>
+|   | | + <*>
+|   | | | + <*>
+|   | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (u1 u3) (u4 u5))))))
+|   | | | | ` ref <hidden>
+|   | | | ` ref <hidden>
+|   | | ` ref <hidden>
+|   | ` rec <hidden>
+|   ` pure (\u1 -> u1)
++ let <hidden>
+| ` <|>
+|   + <*>
+|   | + <*>
+|   | | + <*>
+|   | | | + <*>
+|   | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (u1 u3) (u4 u5))))))
+|   | | | | ` ref <hidden>
+|   | | | ` ref <hidden>
+|   | | ` ref <hidden>
+|   | ` rec <hidden>
+|   ` pure (\u1 -> u1)
++ let <hidden>
+| ` <|>
+|   + <*>
+|   | + <*>
+|   | | + <*>
+|   | | | + <*>
+|   | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> u4 u5)))))
+|   | | | | ` satisfy
+|   | | | ` ref <hidden>
+|   | | ` ref <hidden>
+|   | ` rec <hidden>
+|   ` pure (\u1 -> u1)
++ let <hidden>
+| ` <|>
+|   + <*>
+|   | + <*>
+|   | | + pure (\u1 -> (\u2 -> (\u3 -> u2 u3)))
+|   | | ` <|>
+|   | |   + <*>
+|   | |   | + <*>
+|   | |   | | + pure (\u1 -> (\u2 -> u2))
+|   | |   | | ` try
+|   | |   | |   ` <*>
+|   | |   | |     + <*>
+|   | |   | |     | + pure (\u1 -> (\u2 -> 'i' : ('f' : Term)))
+|   | |   | |     | ` satisfy
+|   | |   | |     ` satisfy
+|   | |   | ` ref <hidden>
+|   | |   ` <|>
+|   | |     + <*>
+|   | |     | + <*>
+|   | |     | | + <*>
+|   | |     | | | + <*>
+|   | |     | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> u4))))
+|   | |     | | | | ` try
+|   | |     | | | |   ` <*>
+|   | |     | | | |     + <*>
+|   | |     | | | |     | + <*>
+|   | |     | | | |     | | + <*>
+|   | |     | | | |     | | | + <*>
+|   | |     | | | |     | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> 'w' : ('h' : ('i' : ('l' : ('e' : Term)))))))))
+|   | |     | | | |     | | | | ` satisfy
+|   | |     | | | |     | | | ` satisfy
+|   | |     | | | |     | | ` satisfy
+|   | |     | | | |     | ` satisfy
+|   | |     | | | |     ` satisfy
+|   | |     | | | ` ref <hidden>
+|   | |     | | ` ref <hidden>
+|   | |     | ` rec <hidden>
+|   | |     ` <|>
+|   | |       + try
+|   | |       | ` <*>
+|   | |       |   + <*>
+|   | |       |   | + <*>
+|   | |       |   | | + <*>
+|   | |       |   | | | + <*>
+|   | |       |   | | | | + <*>
+|   | |       |   | | | | | + <*>
+|   | |       |   | | | | | | + <*>
+|   | |       |   | | | | | | | + <*>
+|   | |       |   | | | | | | | | + <*>
+|   | |       |   | | | | | | | | | + <*>
+|   | |       |   | | | | | | | | | | + <*>
+|   | |       |   | | | | | | | | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> (\u6 -> (\u7 -> (\u8 -> (\u9 -> (\u10 -> (\u11 -> (\u12 -> u11))))))))))))
+|   | |       |   | | | | | | | | | | | ` <|>
+|   | |       |   | | | | | | | | | | |   + <*>
+|   | |       |   | | | | | | | | | | |   | + <*>
+|   | |       |   | | | | | | | | | | |   | | + pure (\u1 -> (\u2 -> Term))
+|   | |       |   | | | | | | | | | | |   | | ` try
+|   | |       |   | | | | | | | | | | |   | |   ` <*>
+|   | |       |   | | | | | | | | | | |   | |     + <*>
+|   | |       |   | | | | | | | | | | |   | |     | + <*>
+|   | |       |   | | | | | | | | | | |   | |     | | + pure (\u1 -> (\u2 -> (\u3 -> 'v' : ('a' : ('r' : Term)))))
+|   | |       |   | | | | | | | | | | |   | |     | | ` satisfy
+|   | |       |   | | | | | | | | | | |   | |     | ` satisfy
+|   | |       |   | | | | | | | | | | |   | |     ` satisfy
+|   | |       |   | | | | | | | | | | |   | ` ref <hidden>
+|   | |       |   | | | | | | | | | | |   ` ref <hidden>
+|   | |       |   | | | | | | | | | | ` ref <hidden>
+|   | |       |   | | | | | | | | | ` ref <hidden>
+|   | |       |   | | | | | | | | ` ref <hidden>
+|   | |       |   | | | | | | | ` ref <hidden>
+|   | |       |   | | | | | | ` satisfy
+|   | |       |   | | | | | ` ref <hidden>
+|   | |       |   | | | | ` ref <hidden>
+|   | |       |   | | | ` ref <hidden>
+|   | |       |   | | ` ref <hidden>
+|   | |       |   | ` ref <hidden>
+|   | |       |   ` ref <hidden>
+|   | |       ` <*>
+|   | |         + <*>
+|   | |         | + pure (\u1 -> (\u2 -> u1))
+|   | |         | ` ref <hidden>
+|   | |         ` ref <hidden>
+|   | ` rec <hidden>
+|   ` pure (\u1 -> u1)
++ let <hidden>
+| ` <|>
+|   + <*>
+|   | + <*>
+|   | | + pure (\u1 -> (\u2 -> (\u3 -> u2 u3)))
+|   | | ` ref <hidden>
+|   | ` rec <hidden>
+|   ` pure (\u1 -> u1)
++ let <hidden>
+| ` <|>
+|   + <*>
+|   | + <*>
+|   | | + pure (\u1 -> (\u2 -> (\u3 -> u2 u3)))
+|   | | ` ref <hidden>
+|   | ` rec <hidden>
+|   ` pure (\u1 -> u1)
++ let <hidden>
+| ` <|>
+|   + <*>
+|   | + <*>
+|   | | + pure (\u1 -> (\u2 -> (\u3 -> u2 u3)))
+|   | | ` satisfy
+|   | ` rec <hidden>
+|   ` pure (\u1 -> u1)
++ let <hidden>
+| ` <|>
+|   + <*>
+|   | + <*>
+|   | | + <*>
+|   | | | + <*>
+|   | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> Term))))
+|   | | | | ` ref <hidden>
+|   | | | ` ref <hidden>
+|   | | ` ref <hidden>
+|   | ` ref <hidden>
+|   ` ref <hidden>
++ let <hidden>
+| ` pure (\u1 -> (\u2 -> u2))
++ let <hidden>
+| ` pure Term
++ let <hidden>
+| ` pure Term
++ let <hidden>
+| ` satisfy
+` <*>
+  + <*>
+  | + <*>
+  | | + <*>
+  | | | + <*>
+  | | | | + pure (\u1 -> (\u2 -> (\u3 -> (\u4 -> (\u5 -> Term u4)))))
+  | | | | ` ref <hidden>
+  | | | ` ref <hidden>
+  | | ` ref <hidden>
+  | ` ref <hidden>
+  ` eof