Theorem: Set.MulAntidiagonal.finite_of_isPwo
File: Mathlib/Data/Set/MulAntidiagonal.lean

tactic: refine' not_infinite.1 fun h => _
state_before: α : Type u_1
inst✝ : OrderedCancelCommMonoid α
s t : Set α
a✝ : α
x y : ↑(mulAntidiagonal s t a✝)
hs : IsPwo s
ht : IsPwo t
a : α
⊢ Set.Finite (mulAntidiagonal s t a)

tactic: obtain ⟨g, hg⟩ :=
  h1.exists_monotone_subseq (fun n => h.natEmbedding _ n) fun n => (h.natEmbedding _ n).2
state_before: α : Type u_1
inst✝ : OrderedCancelCommMonoid α
s t : Set α
a✝ : α
x y : ↑(mulAntidiagonal s t a✝)
hs : IsPwo s
ht : IsPwo t
a : α
h : Set.Infinite (mulAntidiagonal s t a)
h1 : PartiallyWellOrderedOn (mulAntidiagonal s t a) (Prod.fst ⁻¹'o fun x x_1 => x ≤ x_1)
h2 : PartiallyWellOrderedOn (mulAntidiagonal s t a) (Prod.snd ⁻¹'o fun x x_1 => x ≤ x_1)
⊢ False

tactic: obtain ⟨m, n, mn, h2'⟩ := h2 (fun x => (h.natEmbedding _) (g x)) fun n => (h.natEmbedding _ _).2
state_before: case intro
α : Type u_1
inst✝ : OrderedCancelCommMonoid α
s t : Set α
a✝ : α
x y : ↑(mulAntidiagonal s t a✝)
hs : IsPwo s
ht : IsPwo t
a : α
h : Set.Infinite (mulAntidiagonal s t a)
h1 : PartiallyWellOrderedOn (mulAntidiagonal s t a) (Prod.fst ⁻¹'o fun x x_1 => x ≤ x_1)
h2 : PartiallyWellOrderedOn (mulAntidiagonal s t a) (Prod.snd ⁻¹'o fun x x_1 => x ≤ x_1)
g : ℕ ↪o ℕ
hg :
  ∀ (m n : ℕ),
    m ≤ n →
      (Prod.fst ⁻¹'o fun x x_1 => x ≤ x_1) ↑(↑(Infinite.natEmbedding (mulAntidiagonal s t a) h) (↑g m))
        ↑(↑(Infinite.natEmbedding (mulAntidiagonal s t a) h) (↑g n))
⊢ False

tactic: refine' mn.ne (g.injective <| (h.natEmbedding _).injective _)
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝ : OrderedCancelCommMonoid α
s t : Set α
a✝ : α
x y : ↑(mulAntidiagonal s t a✝)
hs : IsPwo s
ht : IsPwo t
a : α
h : Set.Infinite (mulAntidiagonal s t a)
h1 : PartiallyWellOrderedOn (mulAntidiagonal s t a) (Prod.fst ⁻¹'o fun x x_1 => x ≤ x_1)
h2 : PartiallyWellOrderedOn (mulAntidiagonal s t a) (Prod.snd ⁻¹'o fun x x_1 => x ≤ x_1)
g : ℕ ↪o ℕ
hg :
  ∀ (m n : ℕ),
    m ≤ n →
      (Prod.fst ⁻¹'o fun x x_1 => x ≤ x_1) ↑(↑(Infinite.natEmbedding (mulAntidiagonal s t a) h) (↑g m))
        ↑(↑(Infinite.natEmbedding (mulAntidiagonal s t a) h) (↑g n))
m n : ℕ
mn : m < n
h2' :
  (Prod.snd ⁻¹'o fun x x_1 => x ≤ x_1) ↑(↑(Infinite.natEmbedding (mulAntidiagonal s t a) h) (↑g m))
    ↑(↑(Infinite.natEmbedding (mulAntidiagonal s t a) h) (↑g n))
⊢ False

tactic: exact eq_of_fst_le_fst_of_snd_le_snd _ _ _ (hg _ _ mn.le) h2'
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝ : OrderedCancelCommMonoid α
s t : Set α
a✝ : α
x y : ↑(mulAntidiagonal s t a✝)
hs : IsPwo s
ht : IsPwo t
a : α
h : Set.Infinite (mulAntidiagonal s t a)
h1 : PartiallyWellOrderedOn (mulAntidiagonal s t a) (Prod.fst ⁻¹'o fun x x_1 => x ≤ x_1)
h2 : PartiallyWellOrderedOn (mulAntidiagonal s t a) (Prod.snd ⁻¹'o fun x x_1 => x ≤ x_1)
g : ℕ ↪o ℕ
hg :
  ∀ (m n : ℕ),
    m ≤ n →
      (Prod.fst ⁻¹'o fun x x_1 => x ≤ x_1) ↑(↑(Infinite.natEmbedding (mulAntidiagonal s t a) h) (↑g m))
        ↑(↑(Infinite.natEmbedding (mulAntidiagonal s t a) h) (↑g n))
m n : ℕ
mn : m < n
h2' :
  (Prod.snd ⁻¹'o fun x x_1 => x ≤ x_1) ↑(↑(Infinite.natEmbedding (mulAntidiagonal s t a) h) (↑g m))
    ↑(↑(Infinite.natEmbedding (mulAntidiagonal s t a) h) (↑g n))
⊢ ↑(Infinite.natEmbedding (mulAntidiagonal s t a) h) (↑g m) = ↑(Infinite.natEmbedding (mulAntidiagonal s t a) h) (↑g n)