proposition: Lemma permute_sigma_reduce2 : forall q : queue Data, sigma Site LS0 (fun _ : Site => reduce Data (f s s1 s2) q) = reduce Data (fun d : Data => sigma Site LS0 (fun _ : Site => f s s1 s2 d)) q.
proof: Proof. elim LS0. simpl in |- *. intro q. rewrite reduce_null_fun. auto. auto. intros a l H q. simpl in |- *. rewrite H. rewrite <- disjoint_reduce. unfold fun_sum in |- *. auto. Qed.
imports: List fifo table reduce