+data GlobalRdrElt
+ = GRE { gre_name :: Name,
+ gre_par :: Parent,
+ gre_prov :: Provenance -- Why it's in scope
+ }
+
+data Parent = NoParent | ParentIs Name
+
+instance Outputable Parent where
+ ppr NoParent = empty
+ ppr (ParentIs n) = ptext SLIT("parent:") <> ppr n
+
+
+plusParent :: Parent -> Parent -> Parent
+plusParent NoParent rel = ASSERT( case rel of { NoParent -> True; other -> False } ) NoParent
+plusParent (ParentIs n) rel = ASSERT( case rel of { ParentIs m -> n==m; other -> False } ) ParentIs n
+