no goals
n : ℕ
⊢ ¬(n + 2, 0) ∈
      map
        (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
          { toFun := Nat.succ, inj' := Nat.succ_injective })
        (antidiagonal n)
simp
no goals
n : ℕ
⊢ ¬(0, n + 2) ∈
      cons (n + 2, 0)
        (map
          (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
            { toFun := Nat.succ, inj' := Nat.succ_injective })
          (antidiagonal n))
        (_ :
          ¬(n + 2, 0) ∈
              map
                (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                  { toFun := Nat.succ, inj' := Nat.succ_injective })
                (antidiagonal n))
simp
n : ℕ
⊢ cons (0, n + 1 + 1)
      (cons
        (↑(Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective } (Function.Embedding.refl ℕ))
          (n + 1, 0))
        (map
          (Function.Embedding.trans
            (Function.Embedding.prodMap (Function.Embedding.refl ℕ) { toFun := Nat.succ, inj' := Nat.succ_injective })
            (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective } (Function.Embedding.refl ℕ)))
          (antidiagonal n))
        (_ :
          ¬↑(Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective } (Function.Embedding.refl ℕ))
                (n + 1, 0) ∈
              map
                (Function.Embedding.trans
                  (Function.Embedding.prodMap (Function.Embedding.refl ℕ)
                    { toFun := Nat.succ, inj' := Nat.succ_injective })
                  (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                    (Function.Embedding.refl ℕ)))
                (antidiagonal n)))
      (_ :
        ¬(0, n + 1 + 1) ∈
            cons
              (↑(Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                    (Function.Embedding.refl ℕ))
                (n + 1, 0))
              (map
                (Function.Embedding.trans
                  (Function.Embedding.prodMap (Function.Embedding.refl ℕ)
                    { toFun := Nat.succ, inj' := Nat.succ_injective })
                  (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                    (Function.Embedding.refl ℕ)))
                (antidiagonal n))
              (_ :
                ¬↑(Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                          (Function.Embedding.refl ℕ))
                      (n + 1, 0) ∈
                    map
                      (Function.Embedding.trans
                        (Function.Embedding.prodMap (Function.Embedding.refl ℕ)
                          { toFun := Nat.succ, inj' := Nat.succ_injective })
                        (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                          (Function.Embedding.refl ℕ)))
                      (antidiagonal n))) =
    cons (0, n + 2)
      (cons (n + 2, 0)
        (map
          (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
            { toFun := Nat.succ, inj' := Nat.succ_injective })
          (antidiagonal n))
        (_ :
          ¬(n + 2, 0) ∈
              map
                (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                  { toFun := Nat.succ, inj' := Nat.succ_injective })
                (antidiagonal n)))
      (_ :
        ¬(0, n + 2) ∈
            cons (n + 2, 0)
              (map
                (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                  { toFun := Nat.succ, inj' := Nat.succ_injective })
                (antidiagonal n))
              (_ :
                ¬(n + 2, 0) ∈
                    map
                      (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                        { toFun := Nat.succ, inj' := Nat.succ_injective })
                      (antidiagonal n)))
n : ℕ
⊢ antidiagonal (n + 2) =
    cons (0, n + 2)
      (cons (n + 2, 0)
        (map
          (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
            { toFun := Nat.succ, inj' := Nat.succ_injective })
          (antidiagonal n))
        (_ :
          ¬(n + 2, 0) ∈
              map
                (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                  { toFun := Nat.succ, inj' := Nat.succ_injective })
                (antidiagonal n)))
      (_ :
        ¬(0, n + 2) ∈
            cons (n + 2, 0)
              (map
                (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                  { toFun := Nat.succ, inj' := Nat.succ_injective })
                (antidiagonal n))
              (_ :
                ¬(n + 2, 0) ∈
                    map
                      (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                        { toFun := Nat.succ, inj' := Nat.succ_injective })
                      (antidiagonal n)))
simp_rw [antidiagonal_succ (n + 1), antidiagonal_succ', Finset.map_cons, map_map]
no goals
n : ℕ
⊢ cons (0, n + 1 + 1)
      (cons
        (↑(Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective } (Function.Embedding.refl ℕ))
          (n + 1, 0))
        (map
          (Function.Embedding.trans
            (Function.Embedding.prodMap (Function.Embedding.refl ℕ) { toFun := Nat.succ, inj' := Nat.succ_injective })
            (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective } (Function.Embedding.refl ℕ)))
          (antidiagonal n))
        (_ :
          ¬↑(Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective } (Function.Embedding.refl ℕ))
                (n + 1, 0) ∈
              map
                (Function.Embedding.trans
                  (Function.Embedding.prodMap (Function.Embedding.refl ℕ)
                    { toFun := Nat.succ, inj' := Nat.succ_injective })
                  (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                    (Function.Embedding.refl ℕ)))
                (antidiagonal n)))
      (_ :
        ¬(0, n + 1 + 1) ∈
            cons
              (↑(Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                    (Function.Embedding.refl ℕ))
                (n + 1, 0))
              (map
                (Function.Embedding.trans
                  (Function.Embedding.prodMap (Function.Embedding.refl ℕ)
                    { toFun := Nat.succ, inj' := Nat.succ_injective })
                  (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                    (Function.Embedding.refl ℕ)))
                (antidiagonal n))
              (_ :
                ¬↑(Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                          (Function.Embedding.refl ℕ))
                      (n + 1, 0) ∈
                    map
                      (Function.Embedding.trans
                        (Function.Embedding.prodMap (Function.Embedding.refl ℕ)
                          { toFun := Nat.succ, inj' := Nat.succ_injective })
                        (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                          (Function.Embedding.refl ℕ)))
                      (antidiagonal n))) =
    cons (0, n + 2)
      (cons (n + 2, 0)
        (map
          (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
            { toFun := Nat.succ, inj' := Nat.succ_injective })
          (antidiagonal n))
        (_ :
          ¬(n + 2, 0) ∈
              map
                (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                  { toFun := Nat.succ, inj' := Nat.succ_injective })
                (antidiagonal n)))
      (_ :
        ¬(0, n + 2) ∈
            cons (n + 2, 0)
              (map
                (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                  { toFun := Nat.succ, inj' := Nat.succ_injective })
                (antidiagonal n))
              (_ :
                ¬(n + 2, 0) ∈
                    map
                      (Function.Embedding.prodMap { toFun := Nat.succ, inj' := Nat.succ_injective }
                        { toFun := Nat.succ, inj' := Nat.succ_injective })
                      (antidiagonal n)))
rfl