id (?M_1 ++ ?M_2) =?= [1, 2] ++ [3, 4] id ([1, 2] ++ [3, 4]) =?= [1, 2] ++ [3, 4] success ?M_1 ++ ?M_2 =?= id ([1, 2] ++ [3, 4]) [1, 2] ++ [3, 4] =?= id ([1, 2] ++ [3, 4]) success ?M_1 ++ ?M_2 =?= ID ([1, 2] ++ [3, 4]) [1, 2] ++ [3, 4] =?= ID ([1, 2] ++ [3, 4]) success ?M_1 ++ ?M_2 =?= ID (ID ([1, 2] ++ [3, 4])) [1, 2] ++ [3, 4] =?= ID (ID ([1, 2] ++ [3, 4])) success ID (?M_1 ++ ?M_2) =?= ID ([1, 2] ++ [3, 4]) ID ([1, 2] ++ [3, 4]) =?= ID ([1, 2] ++ [3, 4]) success ID (?M_1 ++ ?M_2) =?= [1, 2] ++ [3, 4] ID ([1, 2] ++ [3, 4]) =?= [1, 2] ++ [3, 4] success [1] ++ [2, 3, 4] =?= [1, 2] ++ [3, 4] [1] ++ [2, 3, 4] =?= [1, 2] ++ [3, 4] success y1 :: ?M_1 ++ ?M_2 =?= let l := [y1] in l ++ [y2] [y1] ++ [y2] =?= let l := [y1] in l ++ [y2] success