Remark add_reduce2_1 :
 forall x y z a : Z, x = a -> (x + (y + z))%Z = (a + y + z)%Z.Remark add_reduce3 :
 forall x y z a : Z, x = a -> y = z -> (x + y)%Z = (a + z)%Z.

(* Specifications: *)
Lemma sigma2_sigma2_but_x_y : forall (s0 s1 : Site) (t : Table2), only_once Site eq_site_dec s0 LS1 -> only_once Site eq_site_dec s1 LS2 -> sigma2_table Site LS1 LS2 Data f t = (sigma2_but_table Site eq_site_dec LS1 LS2 Data s0 s1 f t + f s0 s1 (t s0 s1))%Z.
Lemma sigma2_but_simpl : forall (s0 s1 : Site) (t : Table2) (f g : Site -> Site -> Data -> Z), (forall x y : Site, ~ (x = s0 /\ y = s1) -> f x y (t x y) = g x y (t x y)) -> only_once Site eq_site_dec s0 LS1 -> only_once Site eq_site_dec s1 LS2 -> sigma2_but_table Site eq_site_dec LS1 LS2 Data s0 s1 f t = sigma2_but_table Site eq_site_dec LS1 LS2 Data s0 s1 g t.
Lemma sigma2_but_simpl2 : forall (s0 s1 : Site) (t1 t2 : Table2) (f : Site -> Site -> Data -> Z), (forall x y : Site, ~ (x = s0 /\ y = s1) -> f x y (t1 x y) = f x y (t2 x y)) -> only_once Site eq_site_dec s0 LS1 -> only_once Site eq_site_dec s1 LS2 -> sigma2_but_table Site eq_site_dec LS1 LS2 Data s0 s1 f t1 = sigma2_but_table Site eq_site_dec LS1 LS2 Data s0 s1 f t2.