Local Ltac plus_grab e :=
repeat rewrite (plus_assoc _ e) -(plus_comm e) -(plus_assoc e).

(* Specifications: *)
Lemma filterdiff_scal :
forall {F : (K * V -> Prop) -> Prop} {FF : ProperFilter F} (x : K * V),
is_filter_lim F x ->
(forall (n m : K), mult n m = mult m n) ->
filterdiff (fun t : K * V => scal (fst t) (snd t)) F
(fun t => plus (scal (fst t) (snd x)) (scal (fst x) (snd t))).
Lemma ex_filterdiff_scal : forall {F} {FF : ProperFilter F} (x : K * V),
is_filter_lim F x ->
(forall (n m : K), mult n m = mult m n) ->
ex_filterdiff (fun t : K * V => scal (fst t) (snd t)) F.
Lemma filterdiff_scal_l : forall {F} {FF : Filter F} (x : V),
filterdiff (fun k : K => scal k x) F (fun k => scal k x).
Lemma ex_filterdiff_scal_l : forall {F} {FF : Filter F} (x : V),
ex_filterdiff (fun k : K => scal k x) F.
Lemma filterdiff_scal_r : forall {F} {FF : Filter F} (k : K),
(forall (n m : K), mult n m = mult m n) ->
filterdiff (fun x : V => scal k x) F (fun x => scal k x).
Lemma ex_filterdiff_scal_r : forall {F} {FF : Filter F} (k : K),
(forall (n m : K), mult n m = mult m n) ->
ex_filterdiff (fun x : V => scal k x) F.