================================================================================ Simplified: `$d2' :: `{PrelBase.Eval (M a)}' `$d2' = _/\_ `$x0' -> `PrelBase.void' `$d1' :: `{PrelBase.Eval (L a)}' `$d1' = _/\_ `$x0' -> `PrelBase.void' `N' :: `L a' `N' = _/\_ `$x0' -> `N' {_@_ `$x0'} `C' :: `a -> Syn a -> L a' `C' = _/\_ `$x0' -> \ `$x1' :: `$x0' `$x1' `$x2' :: `Syn $x0' `$x2' -> `C' {_@_ `$x0' `$x1' `$x2'} Rec { `idL' :: `L (Syn taBE) -> L (Syn taBE)' `idL' = _/\_ `$x0' -> \ `$x1' :: `L (Syn $x0)' `$x1' -> case `$x1' of { `N' -> `N' {_@_ (`Syn' `$x0')}; `C' `$x2' `$x3' -> let { `$x4' :: `L (Syn $x0)' `$x4' = `idL' _@_ `$x0' `$x3' } in `C' {_@_ (`Syn' `$x0') `$x2' `$x4'}; } end Rec } `A' :: `M a' `A' = _/\_ `$x0' -> `A' {_@_ `$x0'} `B' :: `a -> M a -> M a' `B' = _/\_ `$x0' -> \ `$x1' :: `$x0' `$x1' `$x2' :: `M $x0' `$x2' -> `B' {_@_ `$x0' `$x1' `$x2'} Rec { `idM' :: `M (L (Syn taC4)) -> M (L (Syn taC4))' `idM' = _/\_ `$x0' -> \ `$x1' :: `M (L (Syn $x0))' `$x1' -> case `$x1' of { `A' -> `A' {_@_ (`L' (`Syn' `$x0'))}; `B' `$x2' `$x3' -> let { `$x4' :: `M (L (Syn $x0))' `$x4' = `idM' _@_ `$x0' `$x3' } in let { `$x5' :: `L (Syn $x0)' `$x5' = `idL' _@_ `$x0' `$x2' } in `B' {_@_ (`L' (`Syn' `$x0')) `$x5' `$x4'}; } end Rec }