let <hidden>
  minReads=(Right 0)
  mayRaise=[]
| catch ExceptionFailure
|   minReads=(Right 0)
|   mayRaise=[]
| | <ok>
| | | pushValue (\u1 -> (\u2 -> (\u3 -> u1 (u2 u3))))
| | |   minReads=(Right 4)
| | |   mayRaise=[]
| | | pushValue cons
| | |   minReads=(Right 4)
| | |   mayRaise=[]
| | | call <hidden>
| | |   minReads=(Right 4)
| | |   mayRaise=[]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | call <hidden>
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | commit ExceptionFailure
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | ret
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | <ko>
| | | pushInput
| | |   minReads=(Right 0)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value Term
| | |   minReads=(Right 0)
| | |   mayRaise=[ExceptionFailure]
| | | choicesBranch [(\u1 -> u1)]
| | |   minReads=(Right 0)
| | |   mayRaise=[ExceptionFailure]
| | | | <branch>
| | | | | pushValue (\u1 -> u1)
| | | | |   minReads=(Right 0)
| | | | |   mayRaise=[]
| | | | | ret
| | | | |   minReads=(Right 0)
| | | | |   mayRaise=[]
| | | | <default>
| | | | | fail fromList []
| | | | |   minReads=(Left ExceptionFailure)
| | | | |   mayRaise=[ExceptionFailure]
let <hidden>
  minReads=(Right 4)
  mayRaise=[]
| catch ExceptionFailure
|   minReads=(Right 4)
|   mayRaise=[]
| | <ok>
| | | pushValue cons
| | |   minReads=(Right 4)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue (\u1 -> (\u2 -> u1))
| | |   minReads=(Right 4)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue 'a'
| | |   minReads=(Right 4)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 4)
| | |   mayRaise=[ExceptionFailure]
| | | read ('a' ==)
| | |   minReads=(Right 4)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 3)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 3)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue cons
| | |   minReads=(Right 3)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue (\u1 -> (\u2 -> u1))
| | |   minReads=(Right 3)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue 'b'
| | |   minReads=(Right 3)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 3)
| | |   mayRaise=[ExceptionFailure]
| | | read ('b' ==)
| | |   minReads=(Right 3)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 2)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 2)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue cons
| | |   minReads=(Right 2)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue (\u1 -> (\u2 -> u1))
| | |   minReads=(Right 2)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue 'c'
| | |   minReads=(Right 2)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 2)
| | |   mayRaise=[ExceptionFailure]
| | | read ('c' ==)
| | |   minReads=(Right 2)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue cons
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue (\u1 -> (\u2 -> u1))
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | pushValue 'd'
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | read ('d' ==)
| | |   minReads=(Right 1)
| | |   mayRaise=[ExceptionFailure]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | pushValue Term
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | lift2Value (\u1 -> (\u2 -> u1 u2))
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | commit ExceptionFailure
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | | ret
| | |   minReads=(Right 0)
| | |   mayRaise=[]
| | <ko>
| | | loadInput
| | |   minReads=(Left ExceptionFailure)
| | |   mayRaise=[ExceptionFailure]
| | | fail fromList []
| | |   minReads=(Left ExceptionFailure)
| | |   mayRaise=[ExceptionFailure]
pushValue Term
  minReads=(Right 4)
  mayRaise=[]
pushValue (\u1 -> (\u2 -> u1))
  minReads=(Right 4)
  mayRaise=[]
pushValue cons
  minReads=(Right 4)
  mayRaise=[]
call <hidden>
  minReads=(Right 4)
  mayRaise=[]
lift2Value (\u1 -> (\u2 -> u1 u2))
  minReads=(Right 0)
  mayRaise=[]
call <hidden>
  minReads=(Right 0)
  mayRaise=[]
pushValue Term
  minReads=(Right 0)
  mayRaise=[]
lift2Value (\u1 -> (\u2 -> u1 u2))
  minReads=(Right 0)
  mayRaise=[]
lift2Value (\u1 -> (\u2 -> u1 u2))
  minReads=(Right 0)
  mayRaise=[]
lift2Value (\u1 -> (\u2 -> u1 u2))
  minReads=(Right 0)
  mayRaise=[]
join <hidden>
  minReads=(Right 0)
  mayRaise=[]
| lift2Value (\u1 -> (\u2 -> u1 u2))
|   minReads=(Right 0)
|   mayRaise=[]
| lift2Value (\u1 -> (\u2 -> u1 u2))
|   minReads=(Right 0)
|   mayRaise=[]
| ret
|   minReads=(Right 0)
|   mayRaise=[]
catch ExceptionFailure
  minReads=(Right 0)
  mayRaise=[]
| <ok>
| | catch ExceptionFailure
| |   minReads=(Right 0)
| |   mayRaise=[]
| | | <ok>
| | | | pushInput
| | | |   minReads=(Left ExceptionFailure)
| | | |   mayRaise=[ExceptionFailure]
| | | | read (\u1 -> Term)
| | | |   minReads=(Left ExceptionFailure)
| | | |   mayRaise=[ExceptionFailure]
| | | | popValue
| | | |   minReads=(Left ExceptionFailure)
| | | |   mayRaise=[ExceptionFailure]
| | | | commit ExceptionFailure
| | | |   minReads=(Left ExceptionFailure)
| | | |   mayRaise=[ExceptionFailure]
| | | | loadInput
| | | |   minReads=(Left ExceptionFailure)
| | | |   mayRaise=[ExceptionFailure]
| | | | fail fromList []
| | | |   minReads=(Left ExceptionFailure)
| | | |   mayRaise=[ExceptionFailure]
| | | <ko>
| | | | loadInput
| | | |   minReads=(Right 0)
| | | |   mayRaise=[]
| | | | pushValue Term
| | | |   minReads=(Right 0)
| | | |   mayRaise=[]
| | | | commit ExceptionFailure
| | | |   minReads=(Right 0)
| | | |   mayRaise=[]
| | | | refJoin <hidden>
| | | |   minReads=(Right 0)
| | | |   mayRaise=[]
| <ko>
| | pushInput
| |   minReads=(Left ExceptionFailure)
| |   mayRaise=[ExceptionFailure]
| | lift2Value Term
| |   minReads=(Left ExceptionFailure)
| |   mayRaise=[ExceptionFailure]
| | choicesBranch [(\u1 -> u1)]
| |   minReads=(Left ExceptionFailure)
| |   mayRaise=[ExceptionFailure]
| | | <branch>
| | | | fail fromList [FailureEnd]
| | | |   minReads=(Left ExceptionFailure)
| | | |   mayRaise=[ExceptionFailure]
| | | <default>
| | | | fail fromList []
| | | |   minReads=(Left ExceptionFailure)
| | | |   mayRaise=[ExceptionFailure]