pushValue (\u1 -> (\u2 -> u1 Term)) : | lift2Value (\u1 -> (\u2 -> u1 u2)) | : | | lift2Value (\u1 -> (\u2 -> u1 u2)) | | ret | catchException "fail" | | | catchException "fail" | | | | | pushInput | | | read (\u1 -> Term) | | | popValue | | | popException "fail" | | | loadInput | | | raiseException "fail" | | | | loadInput | | pushValue Term | | popException "fail" | | refJoin | | pushInput | lift2Value Term | choicesBranch [(\u1 -> u1)] | | | raiseException "fail" | | raiseException "fail" catchException "fail" | pushValue (\u1 -> (\u2 -> (\u3 -> u1 : u2 u3))) | read Term | lift2Value (\u1 -> (\u2 -> u1 u2)) | call | lift2Value (\u1 -> (\u2 -> u1 u2)) | popException "fail" | refJoin pushInput lift2Value Term choicesBranch [(\u1 -> u1)] | pushValue (\u1 -> u1) | refJoin raiseException "fail"