fact: Fixpoint dot_l n m (x: expr n m): forall p, expr m p -> expr n p := match x in syntax.expr _ _ n m return forall p, expr m p -> expr n p with | e_zer _ _ => fun p y => 0 | e_one _ => fun p y => y | e_pls x1 x2 => fun p y => if distribute then pls' (dot_l x1 y) (dot_l x2 y) else (x1+x2)⋅y | x => fun p y => x ⋅ y end%ast.
imports: kleene syntax powerfix