(* Use of this source code is governed by the license described	* * in the LICENSE file at the root of the source tree.		*)
(* Some initial work on sigma protocols.  The goal is to prove that any sigma protocol is a proof of knowledge.  There is some interesting theory in here (e.g. the "emergency break" theorem), but it is far form complete.   *)
Set Implicit Arguments.

Lemma sumList_bool : forall (ls : list bool) f,
NoDup ls ->
(forall b, In b ls \/ (f b == 0)) ->
sumList ls f ==
f false + f true.