linearPlusHomo : {auto mon : Monoid a} -> (x <+> y) <+> z = x <+> (y <+> z) -> neutral<+> x = x -> (v : a) -> linear v m <+>linear v n = linear v (m + n)
modularRecCorrect : {auto mon : Monoid a} -> (x <+> y) <+> z = x <+> (y <+> z) -> neutral<+> x = x -> (v : a) -> (p : HalfRec n) -> modularRec v p = linear v n