Definition sigma_table (st : Table) :=
  sigma Site LS (fun s : Site => f s (st s)).Definition update_table := change_x0 Site Data eq_site_dec t s0 d0.Definition sigma_but_table (st : Table) :=
  sigma_but Site s0 eq_site_dec LS (fun s : Site => f s (st s)).

(* Specifications: *)
Lemma sigma_table_change : only_once Site eq_site_dec s0 LS -> sigma_table Site LS Data f (update_table Site eq_site_dec Data t s0 d0) = (sigma_table Site LS Data f t - f s0 (t s0) + f s0 d0)%Z.
Lemma sigma_table_change_aux : only_once Site eq_site_dec s0 LS -> (sigma_table Site LS Data f (update_table Site eq_site_dec Data t s0 d0) + f s0 (t s0) - f s0 d0)%Z = sigma_table Site LS Data f t.