-- | Determines whether a size-change graph G is equal to G composed with G (i.e. G;G)
isSelfComposition :: Eq a => SizeChangeGraph a (Sym, Size) -> Bool
isSelfComposition g = case g `compose` g of
                        Just g' -> g == g'
                        Nothing -> False


-- Implementation-specific functions

-- All control points have a set of initial data positions
-- All data positions have a size
-- All calls map arguments to data positions
isSelfComposition :: Eq a => SizeChangeGraph a (Sym, Size) -> Bool
isSelfComposition g = case g `compose` g of
                        Just g' -> g == g'
                        Nothing -> False


-- Implementation-specific functions

-- All control points have a set of initial data positions
-- All data positions have a size
-- All calls map arguments to data positions
isSelfComposition g = case g `compose` g of
                        Just g' -> g == g'
                        Nothing -> False


-- Implementation-specific functions

-- All control points have a set of initial data positions
-- All data positions have a size
-- All calls map arguments to data positions