CurryProg "RedBlackTree" ["Prelude"] [CType ("RedBlackTree","RedBlackTree") Public [(0,"a")] [CCons ("RedBlackTree","RedBlackTree") 4 Public [CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") [])),CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") [])),CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") [])),CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]]], CType ("RedBlackTree","Color") Private [] [CCons ("RedBlackTree","Red") 0 Private [],CCons ("RedBlackTree","Black") 0 Private [],CCons ("RedBlackTree","DoublyBlack") 0 Private []], CType ("RedBlackTree","Tree") Private [(0,"a")] [CCons ("RedBlackTree","Tree") 4 Private [CTCons ("RedBlackTree","Color") [],CTVar (0,"a"),CTCons ("RedBlackTree","Tree") [CTVar (0,"a")],CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]],CCons ("RedBlackTree","Empty") 0 Private []]] [CFunc ("RedBlackTree","balanceL") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")])) (CRules CFlex [CRule [CPVar (0,"tree")] [(CApply (CApply (CSymbol ("Prelude","&&")) (CApply (CSymbol ("RedBlackTree","isRed")) (CVar (1,"leftTree")))) (CApply (CSymbol ("RedBlackTree","isRed")) (CApply (CSymbol ("RedBlackTree","left")) (CVar (1,"leftTree")))),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (2,"_"),CPVar (3,"z"),CPComb ("RedBlackTree","Tree") [CPVar (4,"_"),CPVar (5,"y"),CPComb ("RedBlackTree","Tree") [CPVar (6,"_"),CPVar (7,"x"),CPVar (8,"a"),CPVar (9,"b")],CPVar (10,"c")],CPVar (11,"d")]) (CVar (0,"tree")) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Red"))) (CVar (5,"y"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (7,"x"))) (CVar (8,"a"))) (CVar (9,"b")))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (3,"z"))) (CVar (10,"c"))) (CVar (11,"d"))))),(CApply (CApply (CSymbol ("Prelude","&&")) (CApply (CSymbol ("RedBlackTree","isRed")) (CVar (1,"leftTree")))) (CApply (CSymbol ("RedBlackTree","isRed")) (CApply (CSymbol ("RedBlackTree","right")) (CVar (1,"leftTree")))),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (12,"_"),CPVar (13,"z"),CPComb ("RedBlackTree","Tree") [CPVar (14,"_"),CPVar (15,"x"),CPVar (16,"a"),CPComb ("RedBlackTree","Tree") [CPVar (17,"_"),CPVar (18,"y"),CPVar (19,"b"),CPVar (20,"c")]],CPVar (21,"d")]) (CVar (0,"tree")) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Red"))) (CVar (18,"y"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (15,"x"))) (CVar (16,"a"))) (CVar (19,"b")))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (13,"z"))) (CVar (20,"c"))) (CVar (21,"d"))))),(CSymbol ("Prelude","otherwise"),CVar (0,"tree"))] [CLocalPat (CPVar (1,"leftTree")) (CApply (CSymbol ("RedBlackTree","left")) (CVar (0,"tree"))) []]]), CFunc ("RedBlackTree","balanceR") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")])) (CRules CFlex [CRule [CPVar (0,"tree")] [(CApply (CApply (CSymbol ("Prelude","&&")) (CApply (CSymbol ("RedBlackTree","isRed")) (CVar (1,"rightTree")))) (CApply (CSymbol ("RedBlackTree","isRed")) (CApply (CSymbol ("RedBlackTree","right")) (CVar (1,"rightTree")))),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (2,"_"),CPVar (3,"x"),CPVar (4,"a"),CPComb ("RedBlackTree","Tree") [CPVar (5,"_"),CPVar (6,"y"),CPVar (7,"b"),CPComb ("RedBlackTree","Tree") [CPVar (8,"_"),CPVar (9,"z"),CPVar (10,"c"),CPVar (11,"d")]]]) (CVar (0,"tree")) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Red"))) (CVar (6,"y"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (3,"x"))) (CVar (4,"a"))) (CVar (7,"b")))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (9,"z"))) (CVar (10,"c"))) (CVar (11,"d"))))),(CApply (CApply (CSymbol ("Prelude","&&")) (CApply (CSymbol ("RedBlackTree","isRed")) (CVar (1,"rightTree")))) (CApply (CSymbol ("RedBlackTree","isRed")) (CApply (CSymbol ("RedBlackTree","left")) (CVar (1,"rightTree")))),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (12,"_"),CPVar (13,"x"),CPVar (14,"a"),CPComb ("RedBlackTree","Tree") [CPVar (15,"_"),CPVar (16,"z"),CPComb ("RedBlackTree","Tree") [CPVar (17,"_"),CPVar (18,"y"),CPVar (19,"b"),CPVar (20,"c")],CPVar (21,"d")]]) (CVar (0,"tree")) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Red"))) (CVar (18,"y"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (13,"x"))) (CVar (14,"a"))) (CVar (19,"b")))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (16,"z"))) (CVar (20,"c"))) (CVar (21,"d"))))),(CSymbol ("Prelude","otherwise"),CVar (0,"tree"))] [CLocalPat (CPVar (1,"rightTree")) (CApply (CSymbol ("RedBlackTree","right")) (CVar (0,"tree"))) []]]), CFunc ("RedBlackTree","delBalanceL") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")])) (CRules CFlex [CRule [CPVar (0,"tree")] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CSymbol ("RedBlackTree","isDoublyBlack")) (CApply (CSymbol ("RedBlackTree","left")) (CVar (0,"tree"))))) (CApply (CSymbol ("RedBlackTree","reviseLeft")) (CVar (0,"tree")))) (CVar (0,"tree")))] []]), CFunc ("RedBlackTree","delBalanceR") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")])) (CRules CFlex [CRule [CPVar (0,"tree")] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CSymbol ("RedBlackTree","isDoublyBlack")) (CApply (CSymbol ("RedBlackTree","right")) (CVar (0,"tree"))))) (CApply (CSymbol ("RedBlackTree","reviseRight")) (CVar (0,"tree")))) (CVar (0,"tree")))] []]), CFunc ("RedBlackTree","delete") 2 Public (CFuncType (CTVar (0,"a")) (CFuncType (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")]))) (CRules CFlex [CRule [CPVar (0,"e"),CPComb ("RedBlackTree","RedBlackTree") [CPVar (1,"eqIns"),CPVar (2,"eqLk"),CPVar (3,"lt"),CPVar (4,"t")]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","RedBlackTree")) (CVar (1,"eqIns"))) (CVar (2,"eqLk"))) (CVar (3,"lt"))) (CApply (CSymbol ("RedBlackTree","blackenRoot")) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","deleteTree")) (CVar (2,"eqLk"))) (CVar (3,"lt"))) (CVar (0,"e"))) (CVar (4,"t")))))] [CLocalFunc (CFunc ("RedBlackTree","blackenRoot") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")])) (CRules CFlex [CRule [CPComb ("RedBlackTree","Empty") []] [(CSymbol ("Prelude","success"),CSymbol ("RedBlackTree","Empty"))] [],CRule [CPComb ("RedBlackTree","Tree") [CPVar (5,"_"),CPVar (6,"x"),CPVar (7,"l"),CPVar (8,"r")]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (6,"x"))) (CVar (7,"l"))) (CVar (8,"r")))] []]))]]), CFunc ("RedBlackTree","deleteTree") 4 Private (CFuncType (CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") []))) (CFuncType (CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") []))) (CFuncType (CTVar (0,"a")) (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]))))) (CRules CFlex [CRule [CPVar (0,"_"),CPVar (1,"_"),CPVar (2,"_"),CPComb ("RedBlackTree","Empty") []] [(CSymbol ("Prelude","success"),CSymbol ("RedBlackTree","Empty"))] [],CRule [CPVar (3,"eq"),CPVar (4,"lt"),CPVar (5,"e"),CPComb ("RedBlackTree","Tree") [CPVar (6,"c"),CPVar (7,"e2"),CPVar (8,"l"),CPVar (9,"r")]] [(CApply (CApply (CVar (3,"eq")) (CVar (5,"e"))) (CVar (7,"e2")),CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CApply (CSymbol ("Prelude","==")) (CVar (8,"l"))) (CSymbol ("RedBlackTree","Empty")))) (CApply (CApply (CSymbol ("RedBlackTree","addColor")) (CVar (6,"c"))) (CVar (9,"r")))) (CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CApply (CSymbol ("Prelude","==")) (CVar (9,"r"))) (CSymbol ("RedBlackTree","Empty")))) (CApply (CApply (CSymbol ("RedBlackTree","addColor")) (CVar (6,"c"))) (CVar (8,"l")))) (CLetDecl [CLocalPat (CPVar (10,"el")) (CApply (CSymbol ("RedBlackTree","rightMost")) (CVar (8,"l"))) []] (CApply (CSymbol ("RedBlackTree","delBalanceL")) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CVar (6,"c"))) (CVar (10,"el"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","deleteTree")) (CVar (3,"eq"))) (CVar (4,"lt"))) (CVar (10,"el"))) (CVar (8,"l")))) (CVar (9,"r"))))))),(CApply (CApply (CVar (4,"lt")) (CVar (5,"e"))) (CVar (7,"e2")),CApply (CSymbol ("RedBlackTree","delBalanceL")) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CVar (6,"c"))) (CVar (7,"e2"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","deleteTree")) (CVar (3,"eq"))) (CVar (4,"lt"))) (CVar (5,"e"))) (CVar (8,"l")))) (CVar (9,"r")))),(CSymbol ("Prelude","otherwise"),CApply (CSymbol ("RedBlackTree","delBalanceR")) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CVar (6,"c"))) (CVar (7,"e2"))) (CVar (8,"l"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","deleteTree")) (CVar (3,"eq"))) (CVar (4,"lt"))) (CVar (5,"e"))) (CVar (9,"r")))))] [CLocalFunc (CFunc ("RedBlackTree","addColor") 2 Private (CFuncType (CTCons ("RedBlackTree","Color") []) (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]))) (CRules CFlex [CRule [CPComb ("RedBlackTree","Red") [],CPVar (10,"tree")] [(CSymbol ("Prelude","success"),CVar (10,"tree"))] [],CRule [CPComb ("RedBlackTree","Black") [],CPComb ("RedBlackTree","Empty") []] [(CSymbol ("Prelude","success"),CSymbol ("RedBlackTree","Empty"))] [],CRule [CPComb ("RedBlackTree","Black") [],CPComb ("RedBlackTree","Tree") [CPComb ("RedBlackTree","Red") [],CPVar (11,"x"),CPVar (12,"lx"),CPVar (13,"rx")]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (11,"x"))) (CVar (12,"lx"))) (CVar (13,"rx")))] [],CRule [CPComb ("RedBlackTree","Black") [],CPComb ("RedBlackTree","Tree") [CPComb ("RedBlackTree","Black") [],CPVar (14,"x"),CPVar (15,"lx"),CPVar (16,"rx")]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","DoublyBlack"))) (CVar (14,"x"))) (CVar (15,"lx"))) (CVar (16,"rx")))] []])),CLocalFunc (CFunc ("RedBlackTree","rightMost") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTVar (0,"a"))) (CRules CFlex [CRule [CPComb ("RedBlackTree","Tree") [CPVar (10,"_"),CPVar (11,"x"),CPVar (12,"_"),CPVar (13,"rx")]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CApply (CSymbol ("Prelude","==")) (CVar (13,"rx"))) (CSymbol ("RedBlackTree","Empty")))) (CVar (11,"x"))) (CApply (CSymbol ("RedBlackTree","rightMost")) (CVar (13,"rx"))))] []]))]]), CFunc ("RedBlackTree","element") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTVar (0,"a"))) (CRules CFlex [CRule [CPComb ("RedBlackTree","Tree") [CPVar (0,"_"),CPVar (1,"e"),CPVar (2,"_"),CPVar (3,"_")]] [(CSymbol ("Prelude","success"),CVar (1,"e"))] []]), CFunc ("RedBlackTree","empty") 3 Public (CFuncType (CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") []))) (CFuncType (CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") []))) (CFuncType (CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") []))) (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")])))) (CRules CFlex [CRule [CPVar (0,"eqInsert"),CPVar (1,"eqLookUp"),CPVar (2,"lessThan")] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","RedBlackTree")) (CVar (0,"eqInsert"))) (CVar (1,"eqLookUp"))) (CVar (2,"lessThan"))) (CSymbol ("RedBlackTree","Empty")))] []]), CFunc ("RedBlackTree","isBlack") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("Prelude","Bool") [])) (CRules CFlex [CRule [CPComb ("RedBlackTree","Empty") []] [(CSymbol ("Prelude","success"),CSymbol ("Prelude","True"))] [],CRule [CPComb ("RedBlackTree","Tree") [CPVar (0,"c"),CPVar (1,"_"),CPVar (2,"_"),CPVar (3,"_")]] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude","==")) (CVar (0,"c"))) (CSymbol ("RedBlackTree","Black")))] []]), CFunc ("RedBlackTree","isDoublyBlack") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("Prelude","Bool") [])) (CRules CFlex [CRule [CPComb ("RedBlackTree","Empty") []] [(CSymbol ("Prelude","success"),CSymbol ("Prelude","True"))] [],CRule [CPComb ("RedBlackTree","Tree") [CPVar (0,"c"),CPVar (1,"_"),CPVar (2,"_"),CPVar (3,"_")]] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude","==")) (CVar (0,"c"))) (CSymbol ("RedBlackTree","DoublyBlack")))] []]), CFunc ("RedBlackTree","isEmpty") 1 Public (CFuncType (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")]) (CTCons ("Prelude","Bool") [])) (CRules CFlex [CRule [CPComb ("RedBlackTree","RedBlackTree") [CPVar (0,"_"),CPVar (1,"_"),CPVar (2,"_"),CPComb ("RedBlackTree","Empty") []]] [(CSymbol ("Prelude","success"),CSymbol ("Prelude","True"))] [],CRule [CPComb ("RedBlackTree","RedBlackTree") [CPVar (3,"_"),CPVar (4,"_"),CPVar (5,"_"),CPComb ("RedBlackTree","Tree") [CPVar (6,"_"),CPVar (7,"_"),CPVar (8,"_"),CPVar (9,"_")]]] [(CSymbol ("Prelude","success"),CSymbol ("Prelude","False"))] []]), CFunc ("RedBlackTree","isRed") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("Prelude","Bool") [])) (CRules CFlex [CRule [CPComb ("RedBlackTree","Empty") []] [(CSymbol ("Prelude","success"),CSymbol ("Prelude","False"))] [],CRule [CPComb ("RedBlackTree","Tree") [CPVar (0,"c"),CPVar (1,"_"),CPVar (2,"_"),CPVar (3,"_")]] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("Prelude","==")) (CVar (0,"c"))) (CSymbol ("RedBlackTree","Red")))] []]), CFunc ("RedBlackTree","left") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")])) (CRules CFlex [CRule [CPComb ("RedBlackTree","Tree") [CPVar (0,"_"),CPVar (1,"_"),CPVar (2,"l"),CPVar (3,"_")]] [(CSymbol ("Prelude","success"),CVar (2,"l"))] []]), CFunc ("RedBlackTree","lookup") 2 Public (CFuncType (CTVar (0,"a")) (CFuncType (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")]) (CTCons ("Prelude","Maybe") [CTVar (0,"a")]))) (CRules CFlex [CRule [CPVar (0,"p"),CPComb ("RedBlackTree","RedBlackTree") [CPVar (1,"_"),CPVar (2,"eqLk"),CPVar (3,"lt"),CPVar (4,"t")]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","lookupTree")) (CVar (2,"eqLk"))) (CVar (3,"lt"))) (CVar (0,"p"))) (CVar (4,"t")))] []]), CFunc ("RedBlackTree","lookupTree") 4 Private (CFuncType (CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") []))) (CFuncType (CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") []))) (CFuncType (CTVar (0,"a")) (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("Prelude","Maybe") [CTVar (0,"a")]))))) (CRules CFlex [CRule [CPVar (0,"_"),CPVar (1,"_"),CPVar (2,"_"),CPComb ("RedBlackTree","Empty") []] [(CSymbol ("Prelude","success"),CSymbol ("Prelude","Nothing"))] [],CRule [CPVar (3,"eq"),CPVar (4,"lt"),CPVar (5,"p"),CPComb ("RedBlackTree","Tree") [CPVar (6,"_"),CPVar (7,"e"),CPVar (8,"l"),CPVar (9,"r")]] [(CApply (CApply (CVar (3,"eq")) (CVar (5,"p"))) (CVar (7,"e")),CApply (CSymbol ("Prelude","Just")) (CVar (7,"e"))),(CApply (CApply (CVar (4,"lt")) (CVar (5,"p"))) (CVar (7,"e")),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","lookupTree")) (CVar (3,"eq"))) (CVar (4,"lt"))) (CVar (5,"p"))) (CVar (8,"l"))),(CSymbol ("Prelude","otherwise"),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","lookupTree")) (CVar (3,"eq"))) (CVar (4,"lt"))) (CVar (5,"p"))) (CVar (9,"r")))] []]), CFunc ("RedBlackTree","newTreeLike") 1 Public (CFuncType (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")])) (CRules CFlex [CRule [CPComb ("RedBlackTree","RedBlackTree") [CPVar (0,"eqIns"),CPVar (1,"eqLk"),CPVar (2,"lt"),CPVar (3,"_")]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","RedBlackTree")) (CVar (0,"eqIns"))) (CVar (1,"eqLk"))) (CVar (2,"lt"))) (CSymbol ("RedBlackTree","Empty")))] []]), CFunc ("RedBlackTree","rbt") 1 Private (CFuncType (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")])) (CRules CFlex [CRule [CPComb ("RedBlackTree","RedBlackTree") [CPVar (0,"_"),CPVar (1,"_"),CPVar (2,"_"),CPVar (3,"t")]] [(CSymbol ("Prelude","success"),CVar (3,"t"))] []]), CFunc ("RedBlackTree","reviseLeft") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")])) (CRules CFlex [CRule [CPVar (0,"tree")] [(CApply (CApply (CSymbol ("Prelude","==")) (CVar (1,"r"))) (CSymbol ("RedBlackTree","Empty")),CVar (0,"tree")),(CApply (CApply (CSymbol ("Prelude","&&")) (CVar (2,"blackr"))) (CApply (CSymbol ("RedBlackTree","isRed")) (CApply (CSymbol ("RedBlackTree","left")) (CVar (1,"r")))),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (3,"col"),CPVar (4,"x"),CPVar (5,"a"),CPComb ("RedBlackTree","Tree") [CPVar (6,"_"),CPVar (7,"z"),CPComb ("RedBlackTree","Tree") [CPVar (8,"_"),CPVar (9,"y"),CPVar (10,"b"),CPVar (11,"c")],CPVar (12,"d")]]) (CVar (0,"tree")) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CVar (3,"col"))) (CVar (9,"y"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (4,"x"))) (CApply (CSymbol ("RedBlackTree","singleBlack")) (CVar (5,"a")))) (CVar (10,"b")))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (7,"z"))) (CVar (11,"c"))) (CVar (12,"d"))))),(CApply (CApply (CSymbol ("Prelude","&&")) (CVar (2,"blackr"))) (CApply (CSymbol ("RedBlackTree","isRed")) (CApply (CSymbol ("RedBlackTree","right")) (CVar (1,"r")))),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (13,"col"),CPVar (14,"x"),CPVar (15,"a"),CPComb ("RedBlackTree","Tree") [CPVar (16,"_"),CPVar (17,"y"),CPVar (18,"b"),CPComb ("RedBlackTree","Tree") [CPVar (19,"_"),CPVar (20,"z"),CPVar (21,"c"),CPVar (22,"d")]]]) (CVar (0,"tree")) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CVar (13,"col"))) (CVar (17,"y"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (14,"x"))) (CApply (CSymbol ("RedBlackTree","singleBlack")) (CVar (15,"a")))) (CVar (18,"b")))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (20,"z"))) (CVar (21,"c"))) (CVar (22,"d"))))),(CVar (2,"blackr"),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (23,"col"),CPVar (24,"x"),CPVar (25,"a"),CPComb ("RedBlackTree","Tree") [CPVar (26,"_"),CPVar (27,"y"),CPVar (28,"b"),CPVar (29,"c")]]) (CVar (0,"tree")) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CApply (CSymbol ("Prelude","==")) (CVar (23,"col"))) (CSymbol ("RedBlackTree","Red")))) (CSymbol ("RedBlackTree","Black"))) (CSymbol ("RedBlackTree","DoublyBlack")))) (CVar (24,"x"))) (CApply (CSymbol ("RedBlackTree","singleBlack")) (CVar (25,"a")))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Red"))) (CVar (27,"y"))) (CVar (28,"b"))) (CVar (29,"c"))))),(CSymbol ("Prelude","otherwise"),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (30,"_"),CPVar (31,"x"),CPVar (32,"a"),CPComb ("RedBlackTree","Tree") [CPVar (33,"_"),CPVar (34,"y"),CPVar (35,"b"),CPVar (36,"c")]]) (CVar (0,"tree")) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (34,"y"))) (CApply (CSymbol ("RedBlackTree","reviseLeft")) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Red"))) (CVar (31,"x"))) (CVar (32,"a"))) (CVar (35,"b"))))) (CVar (36,"c"))))] [CLocalPat (CPVar (1,"r")) (CApply (CSymbol ("RedBlackTree","right")) (CVar (0,"tree"))) [],CLocalPat (CPVar (2,"blackr")) (CApply (CSymbol ("RedBlackTree","isBlack")) (CVar (1,"r"))) []]]), CFunc ("RedBlackTree","reviseRight") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")])) (CRules CFlex [CRule [CPVar (0,"tree")] [(CApply (CApply (CSymbol ("Prelude","==")) (CVar (1,"l"))) (CSymbol ("RedBlackTree","Empty")),CVar (0,"tree")),(CApply (CApply (CSymbol ("Prelude","&&")) (CVar (2,"blackl"))) (CApply (CSymbol ("RedBlackTree","isRed")) (CApply (CSymbol ("RedBlackTree","left")) (CVar (1,"l")))),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (3,"col"),CPVar (4,"x"),CPComb ("RedBlackTree","Tree") [CPVar (5,"_"),CPVar (6,"y"),CPComb ("RedBlackTree","Tree") [CPVar (7,"_"),CPVar (8,"z"),CPVar (9,"d"),CPVar (10,"c")],CPVar (11,"b")],CPVar (12,"a")]) (CVar (0,"tree")) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CVar (3,"col"))) (CVar (6,"y"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (8,"z"))) (CVar (9,"d"))) (CVar (10,"c")))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (4,"x"))) (CVar (11,"b"))) (CApply (CSymbol ("RedBlackTree","singleBlack")) (CVar (12,"a")))))),(CApply (CApply (CSymbol ("Prelude","&&")) (CVar (2,"blackl"))) (CApply (CSymbol ("RedBlackTree","isRed")) (CApply (CSymbol ("RedBlackTree","right")) (CVar (1,"l")))),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (13,"col"),CPVar (14,"x"),CPComb ("RedBlackTree","Tree") [CPVar (15,"_"),CPVar (16,"z"),CPVar (17,"d"),CPComb ("RedBlackTree","Tree") [CPVar (18,"_"),CPVar (19,"y"),CPVar (20,"c"),CPVar (21,"b")]],CPVar (22,"a")]) (CVar (0,"tree")) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CVar (13,"col"))) (CVar (19,"y"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (16,"z"))) (CVar (17,"d"))) (CVar (20,"c")))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (14,"x"))) (CVar (21,"b"))) (CApply (CSymbol ("RedBlackTree","singleBlack")) (CVar (22,"a")))))),(CVar (2,"blackl"),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (23,"col"),CPVar (24,"x"),CPComb ("RedBlackTree","Tree") [CPVar (25,"_"),CPVar (26,"y"),CPVar (27,"c"),CPVar (28,"b")],CPVar (29,"a")]) (CVar (0,"tree")) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CApply (CApply (CApply (CSymbol ("Prelude","if_then_else")) (CApply (CApply (CSymbol ("Prelude","==")) (CVar (23,"col"))) (CSymbol ("RedBlackTree","Red")))) (CSymbol ("RedBlackTree","Black"))) (CSymbol ("RedBlackTree","DoublyBlack")))) (CVar (24,"x"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Red"))) (CVar (26,"y"))) (CVar (27,"c"))) (CVar (28,"b")))) (CApply (CSymbol ("RedBlackTree","singleBlack")) (CVar (29,"a"))))),(CSymbol ("Prelude","otherwise"),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (30,"_"),CPVar (31,"x"),CPComb ("RedBlackTree","Tree") [CPVar (32,"_"),CPVar (33,"y"),CPVar (34,"c"),CPVar (35,"b")],CPVar (36,"a")]) (CVar (0,"tree")) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (33,"y"))) (CVar (34,"c"))) (CApply (CSymbol ("RedBlackTree","reviseRight")) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Red"))) (CVar (31,"x"))) (CVar (35,"b"))) (CVar (36,"a"))))))] [CLocalPat (CPVar (1,"l")) (CApply (CSymbol ("RedBlackTree","left")) (CVar (0,"tree"))) [],CLocalPat (CPVar (2,"blackl")) (CApply (CSymbol ("RedBlackTree","isBlack")) (CVar (1,"l"))) []]]), CFunc ("RedBlackTree","right") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")])) (CRules CFlex [CRule [CPComb ("RedBlackTree","Tree") [CPVar (0,"_"),CPVar (1,"_"),CPVar (2,"_"),CPVar (3,"r")]] [(CSymbol ("Prelude","success"),CVar (3,"r"))] []]), CFunc ("RedBlackTree","setInsertEquivalence") 2 Public (CFuncType (CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") []))) (CFuncType (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")]))) (CRules CFlex [CRule [CPVar (0,"eqIns"),CPComb ("RedBlackTree","RedBlackTree") [CPVar (1,"_"),CPVar (2,"eqLk"),CPVar (3,"lt"),CPVar (4,"t")]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","RedBlackTree")) (CVar (0,"eqIns"))) (CVar (2,"eqLk"))) (CVar (3,"lt"))) (CVar (4,"t")))] []]), CFunc ("RedBlackTree","singleBlack") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")])) (CRules CFlex [CRule [CPComb ("RedBlackTree","Empty") []] [(CSymbol ("Prelude","success"),CSymbol ("RedBlackTree","Empty"))] [],CRule [CPComb ("RedBlackTree","Tree") [CPComb ("RedBlackTree","DoublyBlack") [],CPVar (0,"x"),CPVar (1,"l"),CPVar (2,"r")]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (0,"x"))) (CVar (1,"l"))) (CVar (2,"r")))] []]), CFunc ("RedBlackTree","sort") 2 Public (CFuncType (CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") []))) (CFuncType (CTCons ("Prelude","[]") [CTVar (0,"a")]) (CTCons ("Prelude","[]") [CTVar (0,"a")]))) (CRules CFlex [CRule [CPVar (0,"cmp"),CPVar (1,"xs")] [(CSymbol ("Prelude","success"),CApply (CSymbol ("RedBlackTree","tree2list")) (CApply (CApply (CApply (CSymbol ("Prelude","foldr")) (CSymbol ("RedBlackTree","update"))) (CApply (CApply (CApply (CSymbol ("RedBlackTree","empty")) (CLambda [CPVar (2,"_"),CPVar (3,"_")] (CSymbol ("Prelude","False")))) (CSymbol ("Prelude","=="))) (CVar (0,"cmp")))) (CVar (1,"xs"))))] []]), CFunc ("RedBlackTree","tree2list") 1 Public (CFuncType (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")]) (CTCons ("Prelude","[]") [CTVar (0,"a")])) (CRules CFlex [CRule [CPComb ("RedBlackTree","RedBlackTree") [CPVar (0,"_"),CPVar (1,"_"),CPVar (2,"_"),CPVar (3,"t")]] [(CSymbol ("Prelude","success"),CApply (CSymbol ("RedBlackTree","tree2listTree")) (CVar (3,"t")))] []]), CFunc ("RedBlackTree","tree2listTree") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("Prelude","[]") [CTVar (0,"a")])) (CRules CFlex [CRule [CPVar (0,"tree")] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("RedBlackTree","t2l")) (CVar (0,"tree"))) (CSymbol ("Prelude","[]")))] [CLocalFunc (CFunc ("RedBlackTree","t2l") 2 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CFuncType (CTCons ("Prelude","[]") [CTVar (0,"a")]) (CTCons ("Prelude","[]") [CTVar (0,"a")]))) (CRules CFlex [CRule [CPComb ("RedBlackTree","Empty") [],CPVar (1,"es")] [(CSymbol ("Prelude","success"),CVar (1,"es"))] [],CRule [CPComb ("RedBlackTree","Tree") [CPVar (2,"_"),CPVar (3,"e"),CPVar (4,"l"),CPVar (5,"r")],CPVar (6,"es")] [(CSymbol ("Prelude","success"),CApply (CApply (CSymbol ("RedBlackTree","t2l")) (CVar (4,"l"))) (CApply (CApply (CSymbol ("Prelude",":")) (CVar (3,"e"))) (CApply (CApply (CSymbol ("RedBlackTree","t2l")) (CVar (5,"r"))) (CVar (6,"es")))))] []]))]]), CFunc ("RedBlackTree","update") 2 Public (CFuncType (CTVar (0,"a")) (CFuncType (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","RedBlackTree") [CTVar (0,"a")]))) (CRules CFlex [CRule [CPVar (0,"e"),CPComb ("RedBlackTree","RedBlackTree") [CPVar (1,"eqIns"),CPVar (2,"eqLk"),CPVar (3,"lt"),CPVar (4,"t")]] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","RedBlackTree")) (CVar (1,"eqIns"))) (CVar (2,"eqLk"))) (CVar (3,"lt"))) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","updateTree")) (CVar (1,"eqIns"))) (CVar (3,"lt"))) (CVar (0,"e"))) (CVar (4,"t"))))] []]), CFunc ("RedBlackTree","updateTree") 4 Private (CFuncType (CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") []))) (CFuncType (CFuncType (CTVar (0,"a")) (CFuncType (CTVar (0,"a")) (CTCons ("Prelude","Bool") []))) (CFuncType (CTVar (0,"a")) (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]) (CTCons ("RedBlackTree","Tree") [CTVar (0,"a")]))))) (CRules CFlex [CRule [CPVar (0,"eq"),CPVar (1,"lt"),CPVar (2,"e"),CPVar (3,"t")] [(CSymbol ("Prelude","success"),CLetDecl [CLocalPat (CPComb ("RedBlackTree","Tree") [CPVar (4,"_"),CPVar (5,"e2"),CPVar (6,"l"),CPVar (7,"r")]) (CApply (CSymbol ("RedBlackTree","upd")) (CVar (3,"t"))) []] (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Black"))) (CVar (5,"e2"))) (CVar (6,"l"))) (CVar (7,"r"))))] [CLocalFunc (CFunc ("RedBlackTree","upd") 1 Private (CFuncType (CTCons ("RedBlackTree","Tree") [CTVar (1,"_183")]) (CTCons ("RedBlackTree","Tree") [CTVar (1,"_183")])) (CRules CFlex [CRule [CPComb ("RedBlackTree","Empty") []] [(CSymbol ("Prelude","success"),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CSymbol ("RedBlackTree","Red"))) (CVar (2,"e"))) (CSymbol ("RedBlackTree","Empty"))) (CSymbol ("RedBlackTree","Empty")))] [],CRule [CPComb ("RedBlackTree","Tree") [CPVar (4,"c"),CPVar (5,"e2"),CPVar (6,"l"),CPVar (7,"r")]] [(CApply (CApply (CVar (0,"eq")) (CVar (2,"e"))) (CVar (5,"e2")),CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CVar (4,"c"))) (CVar (2,"e"))) (CVar (6,"l"))) (CVar (7,"r"))),(CApply (CApply (CVar (1,"lt")) (CVar (2,"e"))) (CVar (5,"e2")),CApply (CSymbol ("RedBlackTree","balanceL")) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CVar (4,"c"))) (CVar (5,"e2"))) (CApply (CSymbol ("RedBlackTree","upd")) (CVar (6,"l")))) (CVar (7,"r")))),(CSymbol ("Prelude","otherwise"),CApply (CSymbol ("RedBlackTree","balanceR")) (CApply (CApply (CApply (CApply (CSymbol ("RedBlackTree","Tree")) (CVar (4,"c"))) (CVar (5,"e2"))) (CVar (6,"l"))) (CApply (CSymbol ("RedBlackTree","upd")) (CVar (7,"r")))))] []]))]])] []