(* This code extends 'mini_prelude'. *) Dtype [([],"color",[("Black",[]); ("Red",[])])] Dtype [(["a"],"tree", [("Tree", [Tapp [] "color"; Tapp [Tvar "a"] "tree"; Tvar "a"; Tapp [Tvar "a"] "tree"]); ("Empty",[])])] Dlet (Pvar "empty") (Con "Empty" []) Dletrec [("member","v5", Fun "v6" (Fun "v7" (Mat (Var "v7") [(Pcon "Empty" [],Val (Lit (Bool F))); (Pcon "Tree" [Pvar "v4"; Pvar "v3"; Pvar "v2"; Pvar "v1"], If (App Opapp (App Opapp (Var "v5") (Var "v6")) (Var "v2")) (App Opapp (App Opapp (App Opapp (Var "member") (Var "v5")) (Var "v6")) (Var "v3")) (If (App Opapp (App Opapp (Var "v5") (Var "v2")) (Var "v6")) (App Opapp (App Opapp (App Opapp (Var "member") (Var "v5")) (Var "v6")) (Var "v1")) (Val (Lit (Bool T)))))])))] Dtype [(["a"],"option",[("Some",[Tvar "a"]); ("None",[])])] Dlet (Pvar "balance_left_left") (Fun "v11" (Fun "v9" (Fun "v10" (Mat (Var "v11") [(Pcon "Empty" [],Con "None" []); (Pcon "Tree" [Pvar "v8"; Pvar "v7"; Pvar "v6"; Pvar "v5"], Mat (Var "v8") [(Pcon "Red" [], Mat (Var "v7") [(Pcon "Empty" [],Con "None" []); (Pcon "Tree" [Pvar "v4"; Pvar "v3"; Pvar "v2"; Pvar "v1"], Mat (Var "v4") [(Pcon "Red" [], Con "Some" [Con "Tree" [Con "Red" []; Con "Tree" [Con "Black" []; Var "v3"; Var "v2"; Var "v1"]; Var "v6"; Con "Tree" [Con "Black" []; Var "v5"; Var "v9"; Var "v10"]]]); (Pcon "Black" [],Con "None" [])])]); (Pcon "Black" [],Con "None" [])])])))) Dlet (Pvar "balance_left_right") (Fun "v11" (Fun "v9" (Fun "v10" (Mat (Var "v11") [(Pcon "Empty" [],Con "None" []); (Pcon "Tree" [Pvar "v8"; Pvar "v7"; Pvar "v6"; Pvar "v5"], Mat (Var "v8") [(Pcon "Red" [], Mat (Var "v5") [(Pcon "Empty" [],Con "None" []); (Pcon "Tree" [Pvar "v4"; Pvar "v3"; Pvar "v2"; Pvar "v1"], Mat (Var "v4") [(Pcon "Red" [], Con "Some" [Con "Tree" [Con "Red" []; Con "Tree" [Con "Black" []; Var "v7"; Var "v6"; Var "v3"]; Var "v2"; Con "Tree" [Con "Black" []; Var "v1"; Var "v9"; Var "v10"]]]); (Pcon "Black" [],Con "None" [])])]); (Pcon "Black" [],Con "None" [])])])))) Dlet (Pvar "balance_right_left") (Fun "v11" (Fun "v9" (Fun "v10" (Mat (Var "v10") [(Pcon "Empty" [],Con "None" []); (Pcon "Tree" [Pvar "v8"; Pvar "v7"; Pvar "v6"; Pvar "v5"], Mat (Var "v8") [(Pcon "Red" [], Mat (Var "v7") [(Pcon "Empty" [],Con "None" []); (Pcon "Tree" [Pvar "v4"; Pvar "v3"; Pvar "v2"; Pvar "v1"], Mat (Var "v4") [(Pcon "Red" [], Con "Some" [Con "Tree" [Con "Red" []; Con "Tree" [Con "Black" []; Var "v11"; Var "v9"; Var "v3"]; Var "v2"; Con "Tree" [Con "Black" []; Var "v1"; Var "v6"; Var "v5"]]]); (Pcon "Black" [],Con "None" [])])]); (Pcon "Black" [],Con "None" [])])])))) Dlet (Pvar "balance_right_right") (Fun "v11" (Fun "v9" (Fun "v10" (Mat (Var "v10") [(Pcon "Empty" [],Con "None" []); (Pcon "Tree" [Pvar "v8"; Pvar "v7"; Pvar "v6"; Pvar "v5"], Mat (Var "v8") [(Pcon "Red" [], Mat (Var "v5") [(Pcon "Empty" [],Con "None" []); (Pcon "Tree" [Pvar "v4"; Pvar "v3"; Pvar "v2"; Pvar "v1"], Mat (Var "v4") [(Pcon "Red" [], Con "Some" [Con "Tree" [Con "Red" []; Con "Tree" [Con "Black" []; Var "v11"; Var "v9"; Var "v7"]; Var "v6"; Con "Tree" [Con "Black" []; Var "v3"; Var "v2"; Var "v1"]]]); (Pcon "Black" [],Con "None" [])])]); (Pcon "Black" [],Con "None" [])])])))) Dlet (Pvar "balance'") (Fun "v7" (Fun "v5" (Fun "v8" (Fun "v6" (If (App Equality (Var "v7") (Con "Black" [])) (Mat (App Opapp (App Opapp (App Opapp (Var "balance_left_left") (Var "v5")) (Var "v8")) (Var "v6")) [(Pcon "None" [], Mat (App Opapp (App Opapp (App Opapp (Var "balance_left_right") (Var "v5")) (Var "v8")) (Var "v6")) [(Pcon "None" [], Mat (App Opapp (App Opapp (App Opapp (Var "balance_right_left") (Var "v5")) (Var "v8")) (Var "v6")) [(Pcon "None" [], Mat (App Opapp (App Opapp (App Opapp (Var "balance_right_right") (Var "v5")) (Var "v8")) (Var "v6")) [(Pcon "None" [], Con "Tree" [Con "Black" []; Var "v5"; Var "v8"; Var "v6"]); (Pcon "Some" [Pvar "v1"],Var "v1")]); (Pcon "Some" [Pvar "v2"],Var "v2")]); (Pcon "Some" [Pvar "v3"],Var "v3")]); (Pcon "Some" [Pvar "v4"],Var "v4")]) (Con "Tree" [Var "v7"; Var "v5"; Var "v8"; Var "v6"])))))) Dletrec [("ins","v5", Fun "v6" (Fun "v7" (Mat (Var "v7") [(Pcon "Empty" [], Con "Tree" [Con "Red" []; Con "Empty" []; Var "v6"; Con "Empty" []]); (Pcon "Tree" [Pvar "v4"; Pvar "v3"; Pvar "v2"; Pvar "v1"], If (App Opapp (App Opapp (Var "v5") (Var "v6")) (Var "v2")) (App Opapp (App Opapp (App Opapp (App Opapp (Var "balance'") (Var "v4")) (App Opapp (App Opapp (App Opapp (Var "ins") (Var "v5")) (Var "v6")) (Var "v3"))) (Var "v2")) (Var "v1")) (If (App Opapp (App Opapp (Var "v5") (Var "v2")) (Var "v6")) (App Opapp (App Opapp (App Opapp (App Opapp (Var "balance'") (Var "v4")) (Var "v3")) (Var "v2")) (App Opapp (App Opapp (App Opapp (Var "ins") (Var "v5")) (Var "v6")) (Var "v1"))) (Con "Tree" [Var "v4"; Var "v3"; Var "v2"; Var "v1"])))])))] Dlet (Pvar "insert") (Fun "v5" (Fun "v7" (Fun "v6" (Mat (App Opapp (App Opapp (App Opapp (Var "ins") (Var "v5")) (Var "v7")) (Var "v6")) [(Pcon "Empty" [],Raise Bind_error); (Pcon "Tree" [Pvar "v4"; Pvar "v3"; Pvar "v2"; Pvar "v1"], Con "Tree" [Con "Black" []; Var "v3"; Var "v2"; Var "v1"])]))))