@FooAC.mk : {α : Type} → [toFooComm : FooComm α] → [toMul : Mul.{0} α] → (∀ (a b c : α), @Eq.{1} α (@HAdd.hAdd.{0, 0, 0} α α α (@instHAdd.{0} α (@Foo.toAdd α (@FooComm.toFoo α toFooComm))) (@HAdd.hAdd.{0, 0, 0} α α α (@instHAdd.{0} α (@Foo.toAdd α (@FooComm.toFoo α toFooComm))) a b) c) (@HAdd.hAdd.{0, 0, 0} α α α (@instHAdd.{0} α (@Foo.toAdd α (@FooComm.toFoo α toFooComm))) a (@HAdd.hAdd.{0, 0, 0} α α α (@instHAdd.{0} α (@Foo.toAdd α (@FooComm.toFoo α toFooComm))) b c))) → (∀ (a b c : α), @Eq.{1} α (@HMul.hMul.{0, 0, 0} α α α (@instHMul.{0} α toMul) (@HMul.hMul.{0, 0, 0} α α α (@instHMul.{0} α toMul) a b) c) (@HMul.hMul.{0, 0, 0} α α α (@instHMul.{0} α toMul) a (@HMul.hMul.{0, 0, 0} α α α (@instHMul.{0} α toMul) b c))) → (∀ (a b : α), @Eq.{1} α (@HMul.hMul.{0, 0, 0} α α α (@instHMul.{0} α toMul) a b) (@HMul.hMul.{0, 0, 0} α α α (@instHMul.{0} α toMul) b a)) → FooAC α def FooAC.toFooAssoc : {α : Type} → [self : FooAC α] → FooAssoc α := fun (α : Type) [self : FooAC α] => @FooAssoc.mk α (@FooComm.toFoo α (@FooAC.toFooComm α self)) (@FooAC.toMul α self) (@FooAC.add_assoc α self) (@FooAC.mul_assoc α self) @FooAC'.mk : {α : Type} → [toFooComm : FooComm α] → [toMul : Mul.{0} α] → (∀ (a b c : α), @Eq.{1} α (@HAdd.hAdd.{0, 0, 0} α α α (@instHAdd.{0} α (@Foo.toAdd α (@FooComm.toFoo α toFooComm))) (@HAdd.hAdd.{0, 0, 0} α α α (@instHAdd.{0} α (@Foo.toAdd α (@FooComm.toFoo α toFooComm))) a b) c) (@HAdd.hAdd.{0, 0, 0} α α α (@instHAdd.{0} α (@Foo.toAdd α (@FooComm.toFoo α toFooComm))) a (@HAdd.hAdd.{0, 0, 0} α α α (@instHAdd.{0} α (@Foo.toAdd α (@FooComm.toFoo α toFooComm))) b c))) → (∀ (a b c : α), @Eq.{1} α (@HMul.hMul.{0, 0, 0} α α α (@instHMul.{0} α toMul) (@HMul.hMul.{0, 0, 0} α α α (@instHMul.{0} α toMul) a b) c) (@HMul.hMul.{0, 0, 0} α α α (@instHMul.{0} α toMul) a (@HMul.hMul.{0, 0, 0} α α α (@instHMul.{0} α toMul) b c))) → α → (∀ (a b : α), @Eq.{1} α (@HMul.hMul.{0, 0, 0} α α α (@instHMul.{0} α toMul) a b) (@HMul.hMul.{0, 0, 0} α α α (@instHMul.{0} α toMul) b a)) → FooAC' α def FooAC'.toFooAssoc' : {α : Type} → [self : FooAC' α] → FooAssoc' α := fun (α : Type) [self : FooAC' α] => @FooAssoc'.mk α (@FooAssoc.mk α (@FooComm.toFoo α (@FooAC'.toFooComm α self)) (@FooAC'.toMul α self) (@FooAC'.add_assoc α self) (@FooAC'.mul_assoc α self)) (@FooAC'.one α self)