checkDcls :: Program -> Result checkDcls l = let t = Map.fromList (map extract (filter is_declaration l)) in foldl combine (True, Nothing) (map (test_declaration t) (filter is_transition l))