Section NaryDirect.
Context {I : finType} {P : pred I}.

(* Specifications: *)
Lemma directv_sumP {Us : I -> {vspace vT}} :
reflect (forall i, P i -> Us i :&: (\sum_(j | P j && (j != i)) Us j) = 0)%VS
(directv (\sum_(i | P i) Us i)).
Lemma directv_sumE {Ss : I -> addv_expr} (xunwrap := unwrap) :
reflect [/\ forall i, P i -> directv (unwrap (Ss i))
& directv (\sum_(i | P i) xunwrap (Ss i))]
(directv (\sum_(i | P i) unwrap (Ss i))).
Lemma directv_sum_independent {Us : I -> {vspace vT}} :
reflect (forall us,
(forall i, P i -> us i \in Us i) -> \sum_(i | P i) us i = 0 ->
(forall i, P i -> us i = 0))
(directv (\sum_(i | P i) Us i)).
Lemma directv_sum_unique {Us : I -> {vspace vT}} :
reflect (forall us vs,
(forall i, P i -> us i \in Us i) ->
(forall i, P i -> vs i \in Us i) ->
(\sum_(i | P i) us i == \sum_(i | P i) vs i)
= [forall (i | P i), us i == vs i])
(directv (\sum_(i | P i) Us i)).