id	summary	reporter	owner	description	type	status	priority	milestone	version	resolution	keywords	cc
15	Events don't hold monad laws	camio		"{{{
m :: EventG X String
m = listToEvent [future 1 ""m0""]

f,g :: String -> EventG X String
f = const $ listToEvent [ future 0 ""f0""
                        , future 0 ""f1""
                        ]
g = const $ listToEvent [ future 0 ""g0""
                        , future 1 ""g1""
                        ]

a = (m >>= f) >>= g
-- ((1,m0) >>= f) >>= g
-- [(1,f0), (1,f1)] >>= g
-- [(1,g0), (1,g1), (1,g0), (1,g1)]

b = m >>= (\x -> f x >>= g)
-- m >>= (\x -> f x >>= g)
-- m >>= ([(0,f0), (0,f1)] >>= g)
-- m >>= [(0,g0), (0,g0), (1,g1), (1,g1)]
-- [(1,g0), (1,g0), (1,g1), (1,g1)]
}}}

Beneath a and b is a calculation of the result in the semantic domain. This serves as a counter example of the assertion that joinE as defined in section 2.2.3 of the paper forms a monad with the rest of the things (list equality, fmap, etc.)."	defect	new	major					
