@[to_additive] instance {ι} (G : ι → Type*) [∀ i, Mul (G i)] [∀ i, TwoUniqueProds (G i)] :
    TwoUniqueProds (∀ i, G i) where
  uniqueMul_of_one_lt_card {A} := by
    classical
    let _ := isWellFounded_ssubset (α := ∀ i, G i) -- why need this?
    apply IsWellFounded.induction (· ⊂ ·) A; intro A ihA B
    apply IsWellFounded.induction (· ⊂ ·) B; intro B ihB hc
    obtain ⟨hA, hB, hc⟩ := Nat.one_lt_mul_iff.mp hc
    rw [card_pos] at hA hB
    obtain ⟨i, hc⟩ := exists_or.mpr (hc.imp exists_of_one_lt_card_pi exists_of_one_lt_card_pi)
    obtain ⟨p1, h1, p2, h2, hne, hi1, hi2⟩ := uniqueMul_of_one_lt_card (Nat.one_lt_mul_iff.mpr
      ⟨card_pos.2 (hA.image _), card_pos.2 (hB.image _), hc.imp And.left And.left⟩)
    simp_rw [mem_product, mem_image, ← filter_nonempty_iff] at h1 h2
    replace h1 := uniqueMul_of_twoUniqueMul ?_ h1.1 h1.2
    replace h2 := uniqueMul_of_twoUniqueMul ?_ h2.1 h2.2
    · obtain ⟨a1, ha1, b1, hb1, hu1⟩ := h1
      obtain ⟨a2, ha2, b2, hb2, hu2⟩ := h2
      rw [mem_filter] at ha1 hb1 ha2 hb2
      simp_rw [mem_product]
      refine ⟨(a1, b1), ⟨ha1.1, hb1.1⟩, (a2, b2), ⟨ha2.1, hb2.1⟩, ?_,
        UniqueMul.of_image_filter (Pi.evalMulHom G i) ha1.2 hb1.2 hi1 hu1,
        UniqueMul.of_image_filter (Pi.evalMulHom G i) ha2.2 hb2.2 hi2 hu2⟩
      contrapose! hne; rw [Prod.mk.inj_iff] at hne ⊢
      rw [← ha1.2, ← hb1.2, ← ha2.2, ← hb2.2, hne.1, hne.2]; exact ⟨rfl, rfl⟩
    all_goals
      rcases hc with hc | hc; · exact ihA _ (hc.2 _)
      

Proof state:
case intro.intro.intro.intro.intro.intro.intro.intro.intro.refine_2.refine_1.inr
G✝ : Type u
H : Type v
inst✝³ : Mul G✝
inst✝² : Mul H
ι : Type ?u.450063
G : ι → Type u_1
inst✝¹ : (i : ι) → Mul (G i)
inst✝ : ∀ (i : ι), TwoUniqueProds (G i)
A✝ : Finset ((i : ι) → G i)
x✝ : IsWellFounded (Finset ((i : ι) → G i)) fun x x_1 => x ⊂ x_1 := isWellFounded_ssubset
A : Finset ((i : ι) → G i)
ihA :
  ∀ y ⊂ A,
    ∀ {B : Finset ((i : ι) → G i)},
      1 < card y * card B → ∃ p1 ∈ y ×ˢ B, ∃ p2 ∈ y ×ˢ B, p1 ≠ p2 ∧ UniqueMul y B p1.1 p1.2 ∧ UniqueMul y B p2.1 p2.2
B✝ B : Finset ((i : ι) → G i)
ihB :
  ∀ y ⊂ B,
    1 < card A * card y → ∃ p1 ∈ A ×ˢ y, ∃ p2 ∈ A ×ˢ y, p1 ≠ p2 ∧ UniqueMul A y p1.1 p1.2 ∧ UniqueMul A y p2.1 p2.2
hc✝¹ : 1 < card A * card B
hA : Finset.Nonempty A
hB : Finset.Nonempty B
hc✝ : 1 < card A ∨ 1 < card B
i : ι
p1 p2 : G i × G i
hne : p1 ≠ p2
hi1 : UniqueMul (image (fun x => x i) A) (image (fun x => x i) B) p1.1 p1.2
hi2 : UniqueMul (image (fun x => x i) A) (image (fun x => x i) B) p2.1 p2.2
h2 : Finset.Nonempty (filter (fun a => a i = p2.1) A) ∧ Finset.Nonempty (filter (fun a => a i = p2.2) B)
h1 :
  ∃ a ∈ filter (fun a => a i = p1.1) A,
    ∃ b ∈ filter (fun a => a i = p1.2) B,
      UniqueMul (filter (fun a => a i = p1.1) A) (filter (fun a => a i = p1.2) B) a b
hc : 1 < card (image (fun x => x i) B) ∧ ∀ (ai : G i), filter (fun x => x i = ai) B ⊂ B
⊢ 1 < card (filter (fun a => a i = p2.1) A) * card (filter (fun a => a i = p2.2) B) →
    ∃ p1 ∈ filter (fun a => a i = p2.1) A ×ˢ filter (fun a => a i = p2.2) B,
      ∃ p2_1 ∈ filter (fun a => a i = p2.1) A ×ˢ filter (fun a => a i = p2.2) B,
        p1 ≠ p2_1 ∧
          UniqueMul (filter (fun a => a i = p2.1) A) (filter (fun a => a i = p2.2) B) p1.1 p1.2 ∧
            UniqueMul (filter (fun a => a i = p2.1) A) (filter (fun a => a i = p2.2) B) p2_1.1 p2_1.2

Next tactic:
by_cases hA : A.filter (· i = _) = A