unfold S4 in |- *.
uniformize_signed_areas.
ring.
Qed.

Lemma half : 1- 1/2 = 1/2.
Ltac uniformize_signed_areas4_goal :=
repeat
match goal with
|  |- context [(- - ?X1)] =>
replace (- - X1) with X1; [ idtac | apply simplring1 ]
|  |- context [(S4 ?X1 ?X2 ?X1 ?X3)] =>
rewrite (S4Simpl_6 X1 X2 X3)
|  |- context [(S4 ?X2 ?X1 ?X3 ?X1)] =>
rewrite (S4Simpl_5 X1 X2 X3)
|  |- context [(S4 ?X1 ?X2 ?X2 ?X3)] =>
rewrite (S4Simpl_1 X1 X2 X3)
|  |- context [(S4 ?X1 ?X2 ?X3 ?X3)] =>
rewrite (S4Simpl_2 X1 X2 X3)
|  |- context [(S4 ?X1 ?X1 ?X2 ?X3)] =>
rewrite (S4Simpl_3 X1 X2 X3)
|  |- context [(S4 ?X1 ?X2 ?X3 ?X1)] =>
rewrite (S4Simpl_4 X1 X2 X3)
|  |- context [(S4 ?X1 ?X2 ?X3 ?X4)] =>
match goal with
|  |- context [(S4 ?X5 ?X6 ?X7 ?X8)] =>
(assert (Truc : S4 X5 X6 X7 X8 = - S4 X1 X2 X3 X4);
[ apply S4_5 || apply S4_6 || apply S4_7 || apply S4_8
| rewrite Truc; clear Truc ]) ||
(assert (Truc : S4 X5 X6 X7 X8 = S4 X1 X2 X3 X4);
[ apply S4_2 || apply S4_3 || apply S4_4
| rewrite Truc; clear Truc ])
end
end.