ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = n + 1
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = n + 1
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
haveI := Classical.decEq ι
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = n + 1
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
rw [Nat.add_one] at hn
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
have card_ι'_le : Fintype.card s ≤ n := by
  apply Nat.le_of_lt_succ
  calc
    Fintype.card s = s.card := Fintype.card_coe _
    _ < Fintype.card ι := (card_lt_iff_ne_univ _).mpr hns
    _ = n.succ := hn
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
let t' : s → Finset α := fun x' => t x'
case intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
rcases ih t' card_ι'_le (hall_cond_of_restrict ht) with ⟨f', hf', hsf'⟩
case intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
case intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
set ι'' := (s : Set ι)ᶜ
case intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
case intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
let t'' : ι'' → Finset α := fun a'' => t a'' \ s.biUnion t
case intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
case intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
have card_ι''_le : Fintype.card ι'' ≤ n := by
  simp_rw [← Nat.lt_succ_iff, ← hn, ← Finset.coe_compl, coe_sort_coe]
  rwa [Fintype.card_coe, card_compl_lt_iff_nonempty]
case intro.intro.intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
case intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
rcases ih t'' card_ι''_le (hall_cond_of_compl hus ht) with ⟨f'', hf'', hsf''⟩
case intro.intro.intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
case intro.intro.intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
have f'_mem_biUnion : ∀ (x') (hx' : x' ∈ s), f' ⟨x', hx'⟩ ∈ s.biUnion t := by
  intro x' hx'
  rw [mem_biUnion]
  exact ⟨x', hx', hsf' _⟩
case intro.intro.intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
case intro.intro.intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
have f''_not_mem_biUnion : ∀ (x'') (hx'' : ¬x'' ∈ s), ¬f'' ⟨x'', hx''⟩ ∈ s.biUnion t := by
  intro x'' hx''
  have h := hsf'' ⟨x'', hx''⟩
  rw [mem_sdiff] at h
  exact h.2
case intro.intro.intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
case intro.intro.intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
have im_disj :
    ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s), f' ⟨x', hx'⟩ ≠ f'' ⟨x'', hx''⟩ := by
  intro x x' hx' hx'' h
  apply f''_not_mem_biUnion x' hx''
  rw [← h]
  apply f'_mem_biUnion x
case intro.intro.intro.intro.refine'_1
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
⊢ Function.Injective fun x => if h : x ∈ s then f' { val := x, property := h } else f'' { val := x, property := h }

case intro.intro.intro.intro.refine'_2
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
⊢ ∀ (x : ι), (fun x => if h : x ∈ s then f' { val := x, property := h } else f'' { val := x, property := h }) x ∈ t x
case intro.intro.intro.intro
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
⊢ ∃ f, Function.Injective f ∧ ∀ (x : ι), f x ∈ t x
refine' ⟨fun x => if h : x ∈ s then f' ⟨x, h⟩ else f'' ⟨x, h⟩, _, _⟩
case a
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
⊢ Fintype.card { x // x ∈ s } < Nat.succ n
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
⊢ Fintype.card { x // x ∈ s } ≤ n
apply Nat.le_of_lt_succ
no goals
case a
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
⊢ Fintype.card { x // x ∈ s } < Nat.succ n
calc
  Fintype.card s = s.card := Fintype.card_coe _
  _ < Fintype.card ι := (card_lt_iff_ne_univ _).mpr hns
  _ = n.succ := hn
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
⊢ Fintype.card { x // x ∈ sᶜ } < Fintype.card ι
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
⊢ Fintype.card ↑ι'' ≤ n
simp_rw [← Nat.lt_succ_iff, ← hn, ← Finset.coe_compl, coe_sort_coe]
no goals
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
⊢ Fintype.card { x // x ∈ sᶜ } < Fintype.card ι
rwa [Fintype.card_coe, card_compl_lt_iff_nonempty]
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
x' : ι
hx' : x' ∈ s
⊢ f' { val := x', property := hx' } ∈ Finset.biUnion s t
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
⊢ ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
intro x' hx'
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
x' : ι
hx' : x' ∈ s
⊢ ∃ a, a ∈ s ∧ f' { val := x', property := hx' } ∈ t a
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
x' : ι
hx' : x' ∈ s
⊢ f' { val := x', property := hx' } ∈ Finset.biUnion s t
rw [mem_biUnion]
no goals
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
x' : ι
hx' : x' ∈ s
⊢ ∃ a, a ∈ s ∧ f' { val := x', property := hx' } ∈ t a
exact ⟨x', hx', hsf' _⟩
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
x'' : ι
hx'' : ¬x'' ∈ s
⊢ ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
⊢ ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
intro x'' hx''
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
x'' : ι
hx'' : ¬x'' ∈ s
h : f'' { val := x'', property := hx'' } ∈ t'' { val := x'', property := hx'' }
⊢ ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
x'' : ι
hx'' : ¬x'' ∈ s
⊢ ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
have h := hsf'' ⟨x'', hx''⟩
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
x'' : ι
hx'' : ¬x'' ∈ s
h :
  f'' { val := x'', property := hx'' } ∈ t ↑{ val := x'', property := hx'' } ∧
    ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
⊢ ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
x'' : ι
hx'' : ¬x'' ∈ s
h : f'' { val := x'', property := hx'' } ∈ t'' { val := x'', property := hx'' }
⊢ ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
rw [mem_sdiff] at h
no goals
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
x'' : ι
hx'' : ¬x'' ∈ s
h :
  f'' { val := x'', property := hx'' } ∈ t ↑{ val := x'', property := hx'' } ∧
    ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
⊢ ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
exact h.2
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
x x' : ι
hx' : x ∈ s
hx'' : ¬x' ∈ s
h : f' { val := x, property := hx' } = f'' { val := x', property := hx'' }
⊢ False
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
⊢ ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
intro x x' hx' hx'' h
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
x x' : ι
hx' : x ∈ s
hx'' : ¬x' ∈ s
h : f' { val := x, property := hx' } = f'' { val := x', property := hx'' }
⊢ f'' { val := x', property := hx'' } ∈ Finset.biUnion s t
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
x x' : ι
hx' : x ∈ s
hx'' : ¬x' ∈ s
h : f' { val := x, property := hx' } = f'' { val := x', property := hx'' }
⊢ False
apply f''_not_mem_biUnion x' hx''
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
x x' : ι
hx' : x ∈ s
hx'' : ¬x' ∈ s
h : f' { val := x, property := hx' } = f'' { val := x', property := hx'' }
⊢ f' { val := x, property := hx' } ∈ Finset.biUnion s t
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
x x' : ι
hx' : x ∈ s
hx'' : ¬x' ∈ s
h : f' { val := x, property := hx' } = f'' { val := x', property := hx'' }
⊢ f'' { val := x', property := hx'' } ∈ Finset.biUnion s t
rw [← h]
no goals
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
x x' : ι
hx' : x ∈ s
hx'' : ¬x' ∈ s
h : f' { val := x, property := hx' } = f'' { val := x', property := hx'' }
⊢ f' { val := x, property := hx' } ∈ Finset.biUnion s t
apply f'_mem_biUnion x
no goals
case intro.intro.intro.intro.refine'_1
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
⊢ Function.Injective fun x => if h : x ∈ s then f' { val := x, property := h } else f'' { val := x, property := h }
refine' hf'.dite _ hf'' (@fun x x' => im_disj x x' _ _)
case intro.intro.intro.intro.refine'_2
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
x : ι
⊢ (fun x => if h : x ∈ s then f' { val := x, property := h } else f'' { val := x, property := h }) x ∈ t x
case intro.intro.intro.intro.refine'_2
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
⊢ ∀ (x : ι), (fun x => if h : x ∈ s then f' { val := x, property := h } else f'' { val := x, property := h }) x ∈ t x
intro x
case intro.intro.intro.intro.refine'_2
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
x : ι
⊢ (if h : x ∈ s then f' { val := x, property := h } else f'' { val := x, property := h }) ∈ t x
case intro.intro.intro.intro.refine'_2
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
x : ι
⊢ (fun x => if h : x ∈ s then f' { val := x, property := h } else f'' { val := x, property := h }) x ∈ t x
simp only [of_eq_true]
case intro.intro.intro.intro.refine'_2.inl
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
x : ι
h : x ∈ s
⊢ f' { val := x, property := h } ∈ t x

case intro.intro.intro.intro.refine'_2.inr
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
x : ι
h : ¬x ∈ s
⊢ f'' { val := x, property := h } ∈ t x
case intro.intro.intro.intro.refine'_2
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
x : ι
⊢ (if h : x ∈ s then f' { val := x, property := h } else f'' { val := x, property := h }) ∈ t x
split_ifs with h <;> simp
no goals
case intro.intro.intro.intro.refine'_2.inl
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
x : ι
h : x ∈ s
⊢ f' { val := x, property := h } ∈ t x
exact hsf' ⟨x, h⟩
no goals
case intro.intro.intro.intro.refine'_2.inr
ι : Type u
α : Type v
inst✝¹ : DecidableEq α
t : ι → Finset α
inst✝ : Fintype ι
n : ℕ
hn : Fintype.card ι = Nat.succ n
ht : ∀ (s : Finset ι), card s ≤ card (Finset.biUnion s t)
ih :
  ∀ {ι' : Type u} [inst : Fintype ι'] (t' : ι' → Finset α),
    Fintype.card ι' ≤ n →
      (∀ (s' : Finset ι'), card s' ≤ card (Finset.biUnion s' t')) → ∃ f, Function.Injective f ∧ ∀ (x : ι'), f x ∈ t' x
s : Finset ι
hs : Finset.Nonempty s
hns : s ≠ univ
hus : card s = card (Finset.biUnion s t)
this : DecidableEq ι
card_ι'_le : Fintype.card { x // x ∈ s } ≤ n
t' : { x // x ∈ s } → Finset α := fun x' => t ↑x'
f' : { x // x ∈ s } → α
hf' : Function.Injective f'
hsf' : ∀ (x : { x // x ∈ s }), f' x ∈ t' x
ι'' : Set ι := ↑sᶜ
t'' : ↑ι'' → Finset α := fun a'' => t ↑a'' \ Finset.biUnion s t
card_ι''_le : Fintype.card ↑ι'' ≤ n
f'' : ↑ι'' → α
hf'' : Function.Injective f''
hsf'' : ∀ (x : ↑ι''), f'' x ∈ t'' x
f'_mem_biUnion : ∀ (x' : ι) (hx' : x' ∈ s), f' { val := x', property := hx' } ∈ Finset.biUnion s t
f''_not_mem_biUnion : ∀ (x'' : ι) (hx'' : ¬x'' ∈ s), ¬f'' { val := x'', property := hx'' } ∈ Finset.biUnion s t
im_disj :
  ∀ (x' x'' : ι) (hx' : x' ∈ s) (hx'' : ¬x'' ∈ s),
    f' { val := x', property := hx' } ≠ f'' { val := x'', property := hx'' }
x : ι
h : ¬x ∈ s
⊢ f'' { val := x, property := h } ∈ t x
exact sdiff_subset _ _ (hsf'' ⟨x, h⟩)