constructor
case a
α : Type
A B : Set α
hA : A.Finite
hB : B.Finite
f : { x // A x } → { x // B x }
n : ℕ
hfa : Fintype ↑A
hfb : Fintype ↑B
hbf : (b : { x // B x }) → Fintype { a // f a = b }
h3' : ∀ b ∈ Finset.univ, (Finset.filter {a | f a = b} Finset.univ).card = n
A' : Finset { x // A x } := Finset.univ.biUnion fun b => Finset.filter {a | f a = b} Finset.univ
h4 :
  ∀ b1 ∈ Finset.univ,
    ∀ b2 ∈ Finset.univ,
      b1 ≠ b2 → Disjoint (Finset.filter {a | f a = b1} Finset.univ) (Finset.filter {a | f a = b2} Finset.univ)
h5 : A'.card = B.ncard * n
a : { x // A x }
⊢ a ∈ A' ↔ a ∈ Finset.univ
case a.mp
α : Type
A B : Set α
hA : A.Finite
hB : B.Finite
f : { x // A x } → { x // B x }
n : ℕ
hfa : Fintype ↑A
hfb : Fintype ↑B
hbf : (b : { x // B x }) → Fintype { a // f a = b }
h3' : ∀ b ∈ Finset.univ, (Finset.filter {a | f a = b} Finset.univ).card = n
A' : Finset { x // A x } := Finset.univ.biUnion fun b => Finset.filter {a | f a = b} Finset.univ
h4 :
  ∀ b1 ∈ Finset.univ,
    ∀ b2 ∈ Finset.univ,
      b1 ≠ b2 → Disjoint (Finset.filter {a | f a = b1} Finset.univ) (Finset.filter {a | f a = b2} Finset.univ)
h5 : A'.card = B.ncard * n
a : { x // A x }
⊢ a ∈ A' → a ∈ Finset.univ

case a.mpr
α : Type
A B : Set α
hA : A.Finite
hB : B.Finite
f : { x // A x } → { x // B x }
n : ℕ
hfa : Fintype ↑A
hfb : Fintype ↑B
hbf : (b : { x // B x }) → Fintype { a // f a = b }
h3' : ∀ b ∈ Finset.univ, (Finset.filter {a | f a = b} Finset.univ).card = n
A' : Finset { x // A x } := Finset.univ.biUnion fun b => Finset.filter {a | f a = b} Finset.univ
h4 :
  ∀ b1 ∈ Finset.univ,
    ∀ b2 ∈ Finset.univ,
      b1 ≠ b2 → Disjoint (Finset.filter {a | f a = b1} Finset.univ) (Finset.filter {a | f a = b2} Finset.univ)
h5 : A'.card = B.ncard * n
a : { x // A x }
⊢ a ∈ Finset.univ → a ∈ A'