case h
F : Type ?u.4663
ι : Type ?u.4666
α : Type u_1
β : Type ?u.4672
γ : Type ?u.4675
f : α → β → β
op : α → α → α
assoc : IsAssociative α op
inst✝ : IsCommutative α op
a : α
a✝ : List α
⊢ noncommFold op (Quotient.mk (List.isSetoid α) a✝)
      (_ :
        ∀ (x : α),
          x ∈ {x | x ∈ Quotient.mk (List.isSetoid α) a✝} →
            ∀ (y : α), y ∈ {x | x ∈ Quotient.mk (List.isSetoid α) a✝} → x ≠ y → op x y = op y x)
      a =
    fold op a (Quotient.mk (List.isSetoid α) a✝)
F : Type ?u.4663
ι : Type ?u.4666
α : Type u_1
β : Type ?u.4672
γ : Type ?u.4675
f : α → β → β
op : α → α → α
assoc : IsAssociative α op
s : Multiset α
inst✝ : IsCommutative α op
a : α
⊢ noncommFold op s (_ : ∀ (x : α), x ∈ {x | x ∈ s} → ∀ (y : α), y ∈ {x | x ∈ s} → x ≠ y → op x y = op y x) a =
    fold op a s
induction s using Quotient.inductionOn
no goals
case h
F : Type ?u.4663
ι : Type ?u.4666
α : Type u_1
β : Type ?u.4672
γ : Type ?u.4675
f : α → β → β
op : α → α → α
assoc : IsAssociative α op
inst✝ : IsCommutative α op
a : α
a✝ : List α
⊢ noncommFold op (Quotient.mk (List.isSetoid α) a✝)
      (_ :
        ∀ (x : α),
          x ∈ {x | x ∈ Quotient.mk (List.isSetoid α) a✝} →
            ∀ (y : α), y ∈ {x | x ∈ Quotient.mk (List.isSetoid α) a✝} → x ≠ y → op x y = op y x)
      a =
    fold op a (Quotient.mk (List.isSetoid α) a✝)
simp