@@ -72,6 +72,18 @@ pluginSolve () given derived wanted =
7272 -- For the sake of debugging
7373 tcPluginIO $ putStrLn "Running Set equality plugin"
7474 return $ TcPluginOk solved []
75+
76+-- Possible eqations for the solver
77+-- Union a b ~ a => b ~ '[]
78+-- Union a b ~ b => a ~ '[]
79+
80+-- Union (Union a b) c ~ d => Union a (Union b c) ~ d
81+-- Union '[] a ~ b => a ~ b
82+-- Union a '[] ~ b => a ~ b
83+-- Union a a ~ b => a ~ b (can do in a reduce phases that looks through a tree of union terms..)
84+
85+-- Reqires an `ordering'
86+-- Union a b ~ c => Union b a ~ c [for the purpose of normalisation]
7587
7688-- Pretty print constraints
7789ppCts [] = text "(empty)"
@@ -112,4 +124,4 @@ findSetEquality (ct : xs) = let x = (do (Nominal,t1,t2) <- getEqPredTys_maybe (c
112124 Nothing -> findSetEquality xs
113125
114126pluginStop :: () -> TcPluginM ()
115−pluginStop _ = return ()
127+pluginStop _ = return ()