import algebra.ring
open algebra

set_option simplify.max_steps 1000
universe l
constants (T : Type.{l}) (s : algebra.comm_ring T)
constants (x1 x2 x3 x4 : T) (f g : T → T)
attribute s [instance]

attribute add.comm [simp]
attribute add.assoc [simp]
attribute left_distrib [simp]
attribute right_distrib [simp]

attribute mul.comm [simp]
attribute mul.assoc [simp]

theorem add.o2 [simp] {A : Type} [s : add_comm_semigroup A] (a b c : A) :
  a + (b + c) = b + (a + c) := sorry

#simplify eq 0 x2 + (g x1 + (f x3 * 3 * (x2 + g x1 * 7) * x2)) + 5 * (x4 + f x1)


