ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Matrix.submatrix_mul_equiv
@[simp]
theorem submatrix_mul_equiv [Fintype n] [Fintype o] [AddCommMonoid α] [Mul α] {p q : Type*}
    (M : Matrix m n α) (N : Matrix n p α) (e₁ : l → m) (e₂ : o ≃ n) (e₃ : q → p) :
    M.submatrix e₁ e₂ * N.submatrix e₂ e₃ = (M * N).submatrix e₁ e₃ 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type v} [Fintype n] [Fintype o] [AddCommMonoid α] [Mul α] {p : Type u_10} {q : Type u_11} (M : Matrix m n α) (N : Matrix n p α) (e₁ : l → m) (e₂ : o ≃ n) (e₃ : q → p)
Goal: M.submatrix e₁ ⇑e₂ * N.submatrix (⇑e₂) e₃ = (M * N).submatrix e₁ e₃
-- Matrix.submatrix_mulVec_equiv
theorem submatrix_mulVec_equiv [Fintype n] [Fintype o] [NonUnitalNonAssocSemiring α]
    (M : Matrix m n α) (v : o → α) (e₁ : l → m) (e₂ : o ≃ n) :
    M.submatrix e₁ e₂ *ᵥ v = (M *ᵥ (v ∘ e₂.symm)) ∘ e₁ 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type v} [Fintype n] [Fintype o] [NonUnitalNonAssocSemiring α] (M : Matrix m n α) (v : o → α) (e₁ : l → m) (e₂ : o ≃ n)
Goal: M.submatrix e₁ ⇑e₂ *ᵥ v = (M *ᵥ v ∘ ⇑e₂.symm) ∘ e₁
-- Matrix.submatrix_vecMul_equiv
theorem submatrix_vecMul_equiv [Fintype l] [Fintype m] [NonUnitalNonAssocSemiring α]
    (M : Matrix m n α) (v : l → α) (e₁ : l ≃ m) (e₂ : o → n) :
    v ᵥ* M.submatrix e₁ e₂ = ((v ∘ e₁.symm) ᵥ* M) ∘ e₂ 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type v} [Fintype l] [Fintype m] [NonUnitalNonAssocSemiring α] (M : Matrix m n α) (v : l → α) (e₁ : l ≃ m) (e₂ : o → n)
Goal: v ᵥ* M.submatrix (⇑e₁) e₂ = (v ∘ ⇑e₁.symm ᵥ* M) ∘ e₂
-- Matrix.mul_submatrix_one
theorem mul_submatrix_one [Fintype n] [Finite o] [NonAssocSemiring α] [DecidableEq o] (e₁ : n ≃ o)
    (e₂ : l → o) (M : Matrix m n α) :
    M * (1 : Matrix o o α).submatrix e₁ e₂ = submatrix M id (e₁.symm ∘ e₂) 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type v} [Fintype n] [Finite o] [NonAssocSemiring α] [DecidableEq o] (e₁ : n ≃ o) (e₂ : l → o) (M : Matrix m n α)
Goal: M * Matrix.submatrix 1 (⇑e₁) e₂ = M.submatrix id (⇑e₁.symm ∘ e₂)
-- Matrix.one_submatrix_mul
theorem one_submatrix_mul [Fintype m] [Finite o] [NonAssocSemiring α] [DecidableEq o] (e₁ : l → o)
    (e₂ : m ≃ o) (M : Matrix m n α) :
    ((1 : Matrix o o α).submatrix e₁ e₂) * M = submatrix M (e₂.symm ∘ e₁) id 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type v} [Fintype m] [Finite o] [NonAssocSemiring α] [DecidableEq o] (e₁ : l → o) (e₂ : m ≃ o) (M : Matrix m n α)
Goal: Matrix.submatrix 1 e₁ ⇑e₂ * M = M.submatrix (⇑e₂.symm ∘ e₁) id
-- Matrix.reindex_apply
@[simp]
theorem reindex_apply (eₘ : m ≃ l) (eₙ : n ≃ o) (M : Matrix m n α) :
    reindex eₘ eₙ M = M.submatrix eₘ.symm eₙ.symm 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type v} (eₘ : m ≃ l) (eₙ : n ≃ o) (M : Matrix m n α)
Goal: (Matrix.reindex eₘ eₙ) M = M.submatrix ⇑eₘ.symm ⇑eₙ.symm
-- Matrix.reindex_refl_refl
theorem reindex_refl_refl (A : Matrix m n α) : reindex (Equiv.refl _) (Equiv.refl _) A = A 
Arguments: {m : Type u_2} {n : Type u_3} {α : Type v} (A : Matrix m n α)
Goal: (Matrix.reindex (Equiv.refl m) (Equiv.refl n)) A = A
-- Matrix.reindex_symm
@[simp]
theorem reindex_symm (eₘ : m ≃ l) (eₙ : n ≃ o) :
    (reindex eₘ eₙ).symm = (reindex eₘ.symm eₙ.symm : Matrix l o α ≃ _) 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type v} (eₘ : m ≃ l) (eₙ : n ≃ o)
Goal: (Matrix.reindex eₘ eₙ).symm = Matrix.reindex eₘ.symm eₙ.symm
-- Matrix.reindex_trans
@[simp]
theorem reindex_trans {l₂ o₂ : Type*} (eₘ : m ≃ l) (eₙ : n ≃ o) (eₘ₂ : l ≃ l₂) (eₙ₂ : o ≃ o₂) :
    (reindex eₘ eₙ).trans (reindex eₘ₂ eₙ₂) =
      (reindex (eₘ.trans eₘ₂) (eₙ.trans eₙ₂) : Matrix m n α ≃ _) 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type v} {l₂ : Type u_10} {o₂ : Type u_11} (eₘ : m ≃ l) (eₙ : n ≃ o) (eₘ₂ : l ≃ l₂) (eₙ₂ : o ≃ o₂)
Goal: (Matrix.reindex eₘ eₙ).trans (Matrix.reindex eₘ₂ eₙ₂) = Matrix.reindex (eₘ.trans eₘ₂) (eₙ.trans eₙ₂)
-- Matrix.transpose_reindex
theorem transpose_reindex (eₘ : m ≃ l) (eₙ : n ≃ o) (M : Matrix m n α) :
    (reindex eₘ eₙ M)ᵀ = reindex eₙ eₘ Mᵀ 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type v} (eₘ : m ≃ l) (eₙ : n ≃ o) (M : Matrix m n α)
Goal: ((Matrix.reindex eₘ eₙ) M)ᵀ = (Matrix.reindex eₙ eₘ) Mᵀ
-- Matrix.conjTranspose_reindex
theorem conjTranspose_reindex [Star α] (eₘ : m ≃ l) (eₙ : n ≃ o) (M : Matrix m n α) :
    (reindex eₘ eₙ M)ᴴ = reindex eₙ eₘ Mᴴ 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type v} [Star α] (eₘ : m ≃ l) (eₙ : n ≃ o) (M : Matrix m n α)
Goal: ((Matrix.reindex eₘ eₙ) M)ᴴ = (Matrix.reindex eₙ eₘ) Mᴴ
-- Matrix.submatrix_mul_transpose_submatrix
theorem submatrix_mul_transpose_submatrix [Fintype m] [Fintype n] [AddCommMonoid α] [Mul α]
    (e : m ≃ n) (M : Matrix m n α) : M.submatrix id e * Mᵀ.submatrix e id = M * Mᵀ 
Arguments: {m : Type u_2} {n : Type u_3} {α : Type v} [Fintype m] [Fintype n] [AddCommMonoid α] [Mul α] (e : m ≃ n) (M : Matrix m n α)
Goal: M.submatrix id ⇑e * Mᵀ.submatrix (⇑e) id = M * Mᵀ
-- RingHom.map_matrix_mul
theorem map_matrix_mul (M : Matrix m n α) (N : Matrix n o α) (i : m) (j : o) (f : α →+* β) :
    f ((M * N) i j) = (M.map f * N.map f) i j 
Arguments: {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type v} {β : Type w} [Fintype n] [NonAssocSemiring α] [NonAssocSemiring β] (M : Matrix m n α) (N : Matrix n o α) (i : m) (j : o) (f : α →+* β)
Goal: f ((M * N) i j) = (M.map ⇑f * N.map ⇑f) i j
-- RingHom.map_dotProduct
theorem map_dotProduct [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S) (v w : n → R) :
    f (v ⬝ᵥ w) = f ∘ v ⬝ᵥ f ∘ w 
Arguments: {n : Type u_3} {R : Type u_7} {S : Type u_8} [Fintype n] [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S) (v w : n → R)
Goal: f (v ⬝ᵥ w) = ⇑f ∘ v ⬝ᵥ ⇑f ∘ w
-- RingHom.map_vecMul
theorem map_vecMul [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S) (M : Matrix n m R)
    (v : n → R) (i : m) : f ((v ᵥ* M) i) =  ((f ∘ v) ᵥ* M.map f) i 
Arguments: {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} [Fintype n] [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S) (M : Matrix n m R) (v : n → R) (i : m)
Goal: f ((v ᵥ* M) i) = (⇑f ∘ v ᵥ* M.map ⇑f) i
-- RingHom.map_mulVec
theorem map_mulVec [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S) (M : Matrix m n R)
    (v : n → R) (i : m) : f ((M *ᵥ v) i) = (M.map f *ᵥ (f ∘ v)) i 
Arguments: {m : Type u_2} {n : Type u_3} {R : Type u_7} {S : Type u_8} [Fintype n] [NonAssocSemiring R] [NonAssocSemiring S] (f : R →+* S) (M : Matrix m n R) (v : n → R) (i : m)
Goal: f ((M *ᵥ v) i) = (M.map ⇑f *ᵥ ⇑f ∘ v) i
-- BitVec.toNat_injective
theorem toNat_injective {n : Nat} : Function.Injective (BitVec.toNat : BitVec n → _)
  
Arguments: {n : ℕ}
Goal: Function.Injective BitVec.toNat
-- BitVec.toFin_injective
theorem toFin_injective {n : Nat} : Function.Injective (toFin : BitVec n → _)
  
Arguments: {n : ℕ}
Goal: Function.Injective BitVec.toFin
-- BitVec.toFin_nsmul
lemma toFin_nsmul (n : ℕ) (x : BitVec w)  : toFin (n • x) = n • x.toFin 
Arguments: {w : ℕ} (n : ℕ) (x : BitVec w)
Goal: (n • x).toFin = n • x.toFin
-- BitVec.toFin_zsmul
lemma toFin_zsmul (z : ℤ) (x : BitVec w)  : toFin (z • x) = z • x.toFin 
Arguments: {w : ℕ} (z : ℤ) (x : BitVec w)
Goal: (z • x).toFin = z • x.toFin
-- BitVec.toFin_pow
lemma toFin_pow (x : BitVec w) (n : ℕ)    : toFin (x ^ n) = x.toFin ^ n 
Arguments: {w : ℕ} (x : BitVec w) (n : ℕ)
Goal: (x ^ n).toFin = x.toFin ^ n
-- Tuple.graph.card
@[simp]
theorem graph.card (f : Fin n → α) : (graph f).card = n 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] (f : Fin n → α)
Goal: (Tuple.graph f).card = n
-- Tuple.proj_equiv₁'
@[simp]
theorem proj_equiv₁' (f : Fin n → α) : graph.proj ∘ graphEquiv₁ f = f 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] (f : Fin n → α)
Goal: Tuple.graph.proj ∘ ⇑(Tuple.graphEquiv₁ f) = f
-- Tuple.graphEquiv₂_apply
theorem graphEquiv₂_apply (f : Fin n → α) (i : Fin n) :
    graphEquiv₂ f i = graphEquiv₁ f (sort f i) 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] (f : Fin n → α) (i : Fin n)
Goal: (Tuple.graphEquiv₂ f) i = (Tuple.graphEquiv₁ f) ((Tuple.sort f) i)
-- Tuple.self_comp_sort
theorem self_comp_sort (f : Fin n → α) : f ∘ sort f = graph.proj ∘ graphEquiv₂ f 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] (f : Fin n → α)
Goal: f ∘ ⇑(Tuple.sort f) = Tuple.graph.proj ∘ ⇑(Tuple.graphEquiv₂ f)
-- Tuple.monotone_proj
theorem monotone_proj (f : Fin n → α) : Monotone (graph.proj : graph f → α) 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] (f : Fin n → α)
Goal: Monotone Tuple.graph.proj
-- Tuple.monotone_sort
theorem monotone_sort (f : Fin n → α) : Monotone (f ∘ sort f) 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] (f : Fin n → α)
Goal: Monotone (f ∘ ⇑(Tuple.sort f))
-- Tuple.lt_card_le_iff_apply_le_of_monotone
theorem lt_card_le_iff_apply_le_of_monotone [PartialOrder α] [DecidableRel (α := α) LE.le]
    {m : ℕ} (f : Fin m → α) (a : α) (h_sorted : Monotone f) (j : Fin m) :
    j < Fintype.card {i // f i ≤ a} ↔ f j ≤ a 
Arguments: {α : Type u_1} [PartialOrder α] [DecidableRel LE.le] {m : ℕ} (f : Fin m → α) (a : α) (h_sorted : Monotone f) (j : Fin m)
Goal: ↑j < Fintype.card { i // f i ≤ a } ↔ f j ≤ a
-- Tuple.lt_card_ge_iff_apply_ge_of_antitone
theorem lt_card_ge_iff_apply_ge_of_antitone [PartialOrder α] [DecidableRel (α := α) LE.le]
    {m : ℕ} (f : Fin m → α) (a : α) (h_sorted : Antitone f) (j : Fin m) :
    j < Fintype.card {i // a ≤ f i} ↔ a ≤ f j 
Arguments: {α : Type u_1} [PartialOrder α] [DecidableRel LE.le] {m : ℕ} (f : Fin m → α) (a : α) (h_sorted : Antitone f) (j : Fin m)
Goal: ↑j < Fintype.card { i // a ≤ f i } ↔ a ≤ f j
-- Tuple.unique_monotone
theorem unique_monotone [PartialOrder α] {f : Fin n → α} {σ τ : Equiv.Perm (Fin n)}
    (hfσ : Monotone (f ∘ σ)) (hfτ : Monotone (f ∘ τ)) : f ∘ σ = f ∘ τ 
Arguments: {n : ℕ} {α : Type u_1} [PartialOrder α] {f : Fin n → α} {σ τ : Equiv.Perm (Fin n)} (hfσ : Monotone (f ∘ ⇑σ)) (hfτ : Monotone (f ∘ ⇑τ))
Goal: f ∘ ⇑σ = f ∘ ⇑τ
-- Tuple.eq_sort_iff'
theorem eq_sort_iff' : σ = sort f ↔ StrictMono (σ.trans <| graphEquiv₁ f) 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] {f : Fin n → α} {σ : Equiv.Perm (Fin n)}
Goal: σ = Tuple.sort f ↔ StrictMono ⇑(Equiv.trans σ (Tuple.graphEquiv₁ f))
-- Tuple.eq_sort_iff
theorem eq_sort_iff :
    σ = sort f ↔ Monotone (f ∘ σ) ∧ ∀ i j, i < j → f (σ i) = f (σ j) → σ i < σ j 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] {f : Fin n → α} {σ : Equiv.Perm (Fin n)}
Goal: σ = Tuple.sort f ↔ Monotone (f ∘ ⇑σ) ∧ ∀ (i j : Fin n), i < j → f (σ i) = f (σ j) → σ i < σ j
-- Tuple.sort_eq_refl_iff_monotone
theorem sort_eq_refl_iff_monotone : sort f = Equiv.refl _ ↔ Monotone f 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] {f : Fin n → α}
Goal: Tuple.sort f = Equiv.refl (Fin n) ↔ Monotone f
-- Tuple.comp_sort_eq_comp_iff_monotone
theorem comp_sort_eq_comp_iff_monotone : f ∘ σ = f ∘ sort f ↔ Monotone (f ∘ σ) 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] {f : Fin n → α} {σ : Equiv.Perm (Fin n)}
Goal: f ∘ ⇑σ = f ∘ ⇑(Tuple.sort f) ↔ Monotone (f ∘ ⇑σ)
-- Tuple.comp_perm_comp_sort_eq_comp_sort
theorem comp_perm_comp_sort_eq_comp_sort : (f ∘ σ) ∘ sort (f ∘ σ) = f ∘ sort f 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] {f : Fin n → α} {σ : Equiv.Perm (Fin n)}
Goal: (f ∘ ⇑σ) ∘ ⇑(Tuple.sort (f ∘ ⇑σ)) = f ∘ ⇑(Tuple.sort f)
-- Tuple.antitone_pair_of_not_sorted'
theorem antitone_pair_of_not_sorted' (h : f ∘ σ ≠ f ∘ sort f) :
    ∃ i j, i < j ∧ (f ∘ σ) j < (f ∘ σ) i 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] {f : Fin n → α} {σ : Equiv.Perm (Fin n)} (h : f ∘ ⇑σ ≠ f ∘ ⇑(Tuple.sort f))
Goal: ∃ i j, i < j ∧ (f ∘ ⇑σ) j < (f ∘ ⇑σ) i
-- Tuple.antitone_pair_of_not_sorted
theorem antitone_pair_of_not_sorted (h : f ≠ f ∘ sort f) : ∃ i j, i < j ∧ f j < f i 
Arguments: {n : ℕ} {α : Type u_1} [LinearOrder α] {f : Fin n → α} (h : f ≠ f ∘ ⇑(Tuple.sort f))
Goal: ∃ i j, i < j ∧ f j < f i
-- Nat.card_eq
theorem Nat.card_eq (α : Type*) :
    Nat.card α = if h : Finite α then @Fintype.card α (Fintype.ofFinite α) else 0 
Arguments: (α : Type u_4)
Goal: Nat.card α = if h : Finite α then Fintype.card α else 0
-- Finite.card_pos_iff
theorem Finite.card_pos_iff [Finite α] : 0 < Nat.card α ↔ Nonempty α 
Arguments: {α : Type u_1} [Finite α]
Goal: 0 < Nat.card α ↔ Nonempty α
-- Finite.card_pos
theorem Finite.card_pos [Finite α] [h : Nonempty α] : 0 < Nat.card α 
Arguments: {α : Type u_1} [Finite α] [h : Nonempty α]
Goal: 0 < Nat.card α
-- Finite.cast_card_eq_mk
theorem cast_card_eq_mk {α : Type*} [Finite α] : ↑(Nat.card α) = Cardinal.mk α 
Arguments: {α : Type u_4} [Finite α]
Goal: ↑(Nat.card α) = Cardinal.mk α
-- Finite.card_eq
theorem card_eq [Finite α] [Finite β] : Nat.card α = Nat.card β ↔ Nonempty (α ≃ β) 
Arguments: {α : Type u_1} {β : Type u_2} [Finite α] [Finite β]
Goal: Nat.card α = Nat.card β ↔ Nonempty (α ≃ β)
-- Finite.card_le_one_iff_subsingleton
theorem card_le_one_iff_subsingleton [Finite α] : Nat.card α ≤ 1 ↔ Subsingleton α 
Arguments: {α : Type u_1} [Finite α]
Goal: Nat.card α ≤ 1 ↔ Subsingleton α
-- Finite.one_lt_card_iff_nontrivial
theorem one_lt_card_iff_nontrivial [Finite α] : 1 < Nat.card α ↔ Nontrivial α 
Arguments: {α : Type u_1} [Finite α]
Goal: 1 < Nat.card α ↔ Nontrivial α
-- Finite.one_lt_card
theorem one_lt_card [Finite α] [h : Nontrivial α] : 1 < Nat.card α 
Arguments: {α : Type u_1} [Finite α] [h : Nontrivial α]
Goal: 1 < Nat.card α
-- Finite.card_option
@[simp]
theorem card_option [Finite α] : Nat.card (Option α) = Nat.card α + 1 
Arguments: {α : Type u_1} [Finite α]
Goal: Nat.card (Option α) = Nat.card α + 1
-- Finite.card_le_of_injective
theorem card_le_of_injective [Finite β] (f : α → β) (hf : Function.Injective f) :
    Nat.card α ≤ Nat.card β 
Arguments: {α : Type u_1} {β : Type u_2} [Finite β] (f : α → β) (hf : Function.Injective f)
Goal: Nat.card α ≤ Nat.card β
-- Finite.card_le_of_embedding
theorem card_le_of_embedding [Finite β] (f : α ↪ β) : Nat.card α ≤ Nat.card β 
Arguments: {α : Type u_1} {β : Type u_2} [Finite β] (f : α ↪ β)
Goal: Nat.card α ≤ Nat.card β
-- Finite.card_le_of_surjective
theorem card_le_of_surjective [Finite α] (f : α → β) (hf : Function.Surjective f) :
    Nat.card β ≤ Nat.card α 
Arguments: {α : Type u_1} {β : Type u_2} [Finite α] (f : α → β) (hf : Function.Surjective f)
Goal: Nat.card β ≤ Nat.card α
-- Finite.card_eq_zero_iff
theorem card_eq_zero_iff [Finite α] : Nat.card α = 0 ↔ IsEmpty α 
Arguments: {α : Type u_1} [Finite α]
Goal: Nat.card α = 0 ↔ IsEmpty α
-- Finite.card_le_of_injective'
theorem card_le_of_injective' {f : α → β} (hf : Function.Injective f)
    (h : Nat.card β = 0 → Nat.card α = 0) : Nat.card α ≤ Nat.card β 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} (hf : Function.Injective f) (h : Nat.card β = 0 → Nat.card α = 0)
Goal: Nat.card α ≤ Nat.card β
-- Finite.card_le_of_embedding'
theorem card_le_of_embedding' (f : α ↪ β) (h : Nat.card β = 0 → Nat.card α = 0) :
    Nat.card α ≤ Nat.card β 
Arguments: {α : Type u_1} {β : Type u_2} (f : α ↪ β) (h : Nat.card β = 0 → Nat.card α = 0)
Goal: Nat.card α ≤ Nat.card β
-- Finite.card_le_of_surjective'
theorem card_le_of_surjective' {f : α → β} (hf : Function.Surjective f)
    (h : Nat.card α = 0 → Nat.card β = 0) : Nat.card β ≤ Nat.card α 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} (hf : Function.Surjective f) (h : Nat.card α = 0 → Nat.card β = 0)
Goal: Nat.card β ≤ Nat.card α
-- Finite.card_eq_zero_of_surjective
theorem card_eq_zero_of_surjective {f : α → β} (hf : Function.Surjective f) (h : Nat.card β = 0) :
    Nat.card α = 0 
Arguments: {α : Type u_1} {β : Type u_2} {f : α → β} (hf : Function.Surjective f) (h : Nat.card β = 0)
Goal: Nat.card α = 0
-- Finite.card_eq_zero_of_injective
theorem card_eq_zero_of_injective [Nonempty α] {f : α → β} (hf : Function.Injective f)
    (h : Nat.card α = 0) : Nat.card β = 0 
Arguments: {α : Type u_1} {β : Type u_2} [Nonempty α] {f : α → β} (hf : Function.Injective f) (h : Nat.card α = 0)
Goal: Nat.card β = 0
-- Finite.card_eq_zero_of_embedding
theorem card_eq_zero_of_embedding [Nonempty α] (f : α ↪ β) (h : Nat.card α = 0) : Nat.card β = 0 
Arguments: {α : Type u_1} {β : Type u_2} [Nonempty α] (f : α ↪ β) (h : Nat.card α = 0)
Goal: Nat.card β = 0
-- Finite.card_sum
theorem card_sum [Finite α] [Finite β] : Nat.card (α ⊕ β) = Nat.card α + Nat.card β 
Arguments: {α : Type u_1} {β : Type u_2} [Finite α] [Finite β]
Goal: Nat.card (α ⊕ β) = Nat.card α + Nat.card β
-- Finite.card_image_le
theorem card_image_le {s : Set α} [Finite s] (f : α → β) : Nat.card (f '' s) ≤ Nat.card s 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} [Finite ↑s] (f : α → β)
Goal: Nat.card ↑(f '' s) ≤ Nat.card ↑s
-- Finite.card_range_le
theorem card_range_le [Finite α] (f : α → β) : Nat.card (Set.range f) ≤ Nat.card α 
Arguments: {α : Type u_1} {β : Type u_2} [Finite α] (f : α → β)
Goal: Nat.card ↑(Set.range f) ≤ Nat.card α
-- Finite.card_subtype_le
theorem card_subtype_le [Finite α] (p : α → Prop) : Nat.card { x // p x } ≤ Nat.card α 
Arguments: {α : Type u_1} [Finite α] (p : α → Prop)
Goal: Nat.card { x // p x } ≤ Nat.card α
-- Finite.card_subtype_lt
theorem card_subtype_lt [Finite α] {p : α → Prop} {x : α} (hx : ¬p x) :
    Nat.card { x // p x } < Nat.card α 
Arguments: {α : Type u_1} [Finite α] {p : α → Prop} {x : α} (hx : ¬p x)
Goal: Nat.card { x // p x } < Nat.card α
-- PartENat.card_eq_coe_natCard
theorem card_eq_coe_natCard (α : Type*) [Finite α] : card α = Nat.card α 
Arguments: (α : Type u_4) [Finite α]
Goal: PartENat.card α = ↑(Nat.card α)
-- Set.card_union_le
theorem card_union_le (s t : Set α) : Nat.card (↥(s ∪ t)) ≤ Nat.card s + Nat.card t 
Arguments: {α : Type u_1} (s t : Set α)
Goal: Nat.card ↑(s ∪ t) ≤ Nat.card ↑s + Nat.card ↑t
-- Set.Finite.card_lt_card
theorem card_lt_card (ht : t.Finite) (hsub : s ⊂ t) : Nat.card s < Nat.card t 
Arguments: {α : Type u_1} {s t : Set α} (ht : t.Finite) (hsub : s ⊂ t)
Goal: Nat.card ↑s < Nat.card ↑t
-- Set.Finite.eq_of_subset_of_card_le
theorem eq_of_subset_of_card_le (hsub : s ⊆ t) (hcard : Nat.card t ≤ Nat.card s) : s = t 
Arguments: {α : Type u_1} {s t : Set α} (ht : t.Finite) (hsub : s ⊆ t) (hcard : Nat.card ↑t ≤ Nat.card ↑s)
Goal: s = t
-- Set.Finite.equiv_image_eq_iff_subset
theorem equiv_image_eq_iff_subset (e : α ≃ α) (hs : s.Finite) : e '' s = s ↔ e '' s ⊆ s 
Arguments: {α : Type u_1} {s : Set α} (e : α ≃ α) (hs : s.Finite)
Goal: ⇑e '' s = s ↔ ⇑e '' s ⊆ s
-- List.Nat.antidiagonalTuple_zero_zero
@[simp]
theorem antidiagonalTuple_zero_zero : antidiagonalTuple 0 0 = [![]] 
Goal: List.Nat.antidiagonalTuple 0 0 = [![]]
-- List.Nat.antidiagonalTuple_zero_succ
@[simp]
theorem antidiagonalTuple_zero_succ (n : ℕ) : antidiagonalTuple 0 (n + 1) = [] 
Arguments: (n : ℕ)
Goal: List.Nat.antidiagonalTuple 0 (n + 1) = []
-- List.Nat.mem_antidiagonalTuple
theorem mem_antidiagonalTuple {n : ℕ} {k : ℕ} {x : Fin k → ℕ} :
    x ∈ antidiagonalTuple k n ↔ ∑ i, x i = n 
Arguments: {n k : ℕ} {x : Fin k → ℕ}
Goal: x ∈ List.Nat.antidiagonalTuple k n ↔ ∑ i : Fin k, x i = n
-- List.Nat.nodup_antidiagonalTuple
theorem nodup_antidiagonalTuple (k n : ℕ) : List.Nodup (antidiagonalTuple k n) 
Arguments: (k n : ℕ)
Goal: (List.Nat.antidiagonalTuple k n).Nodup
-- List.Nat.antidiagonalTuple_zero_right
theorem antidiagonalTuple_zero_right : ∀ k, antidiagonalTuple k 0 = [0]
  
Arguments: (k : ℕ)
Goal: List.Nat.antidiagonalTuple k 0 = [0]
-- List.Nat.antidiagonalTuple_one
@[simp]
theorem antidiagonalTuple_one (n : ℕ) : antidiagonalTuple 1 n = [![n]] 
Arguments: (n : ℕ)
Goal: List.Nat.antidiagonalTuple 1 n = [![n]]
-- List.Nat.antidiagonalTuple_two
theorem antidiagonalTuple_two (n : ℕ) :
    antidiagonalTuple 2 n = (antidiagonal n).map fun i => ![i.1, i.2] 
Arguments: (n : ℕ)
Goal: List.Nat.antidiagonalTuple 2 n = List.map (fun i => ![i.1, i.2]) (List.Nat.antidiagonal n)
-- List.Nat.antidiagonalTuple_pairwise_pi_lex
theorem antidiagonalTuple_pairwise_pi_lex :
    ∀ k n, (antidiagonalTuple k n).Pairwise (Pi.Lex (· < ·) @fun _ => (· < ·))
  
Arguments: (k n : ℕ)
Goal: List.Pairwise (Pi.Lex (fun x x_1 => x < x_1) fun x x x_1 => x < x_1) (List.Nat.antidiagonalTuple k n)
-- Multiset.Nat.antidiagonalTuple_zero_zero
@[simp]
theorem antidiagonalTuple_zero_zero : antidiagonalTuple 0 0 = {![]} 
Goal: Multiset.Nat.antidiagonalTuple 0 0 = {![]}
-- Multiset.Nat.antidiagonalTuple_zero_succ
@[simp]
theorem antidiagonalTuple_zero_succ (n : ℕ) : antidiagonalTuple 0 n.succ = 0 
Arguments: (n : ℕ)
Goal: Multiset.Nat.antidiagonalTuple 0 n.succ = 0
-- Multiset.Nat.mem_antidiagonalTuple
theorem mem_antidiagonalTuple {n : ℕ} {k : ℕ} {x : Fin k → ℕ} :
    x ∈ antidiagonalTuple k n ↔ ∑ i, x i = n 
Arguments: {n k : ℕ} {x : Fin k → ℕ}
Goal: x ∈ Multiset.Nat.antidiagonalTuple k n ↔ ∑ i : Fin k, x i = n
-- Multiset.Nat.nodup_antidiagonalTuple
theorem nodup_antidiagonalTuple (k n : ℕ) : (antidiagonalTuple k n).Nodup 
Arguments: (k n : ℕ)
Goal: (Multiset.Nat.antidiagonalTuple k n).Nodup
-- Multiset.Nat.antidiagonalTuple_zero_right
theorem antidiagonalTuple_zero_right (k : ℕ) : antidiagonalTuple k 0 = {0} 
Arguments: (k : ℕ)
Goal: Multiset.Nat.antidiagonalTuple k 0 = {0}
-- Multiset.Nat.antidiagonalTuple_one
@[simp]
theorem antidiagonalTuple_one (n : ℕ) : antidiagonalTuple 1 n = {![n]} 
Arguments: (n : ℕ)
Goal: Multiset.Nat.antidiagonalTuple 1 n = {![n]}
-- Multiset.Nat.antidiagonalTuple_two
theorem antidiagonalTuple_two (n : ℕ) :
    antidiagonalTuple 2 n = (antidiagonal n).map fun i => ![i.1, i.2] 
Arguments: (n : ℕ)
Goal: Multiset.Nat.antidiagonalTuple 2 n = Multiset.map (fun i => ![i.1, i.2]) (Multiset.Nat.antidiagonal n)
-- Finset.Nat.antidiagonalTuple_zero_zero
@[simp]
theorem antidiagonalTuple_zero_zero : antidiagonalTuple 0 0 = {![]} 
Goal: Finset.Nat.antidiagonalTuple 0 0 = {![]}
-- Finset.Nat.antidiagonalTuple_zero_succ
@[simp]
theorem antidiagonalTuple_zero_succ (n : ℕ) : antidiagonalTuple 0 n.succ = ∅ 
Arguments: (n : ℕ)
Goal: Finset.Nat.antidiagonalTuple 0 n.succ = ∅
-- Finset.Nat.mem_antidiagonalTuple
theorem mem_antidiagonalTuple {n : ℕ} {k : ℕ} {x : Fin k → ℕ} :
    x ∈ antidiagonalTuple k n ↔ ∑ i, x i = n 
Arguments: {n k : ℕ} {x : Fin k → ℕ}
Goal: x ∈ Finset.Nat.antidiagonalTuple k n ↔ ∑ i : Fin k, x i = n
-- Finset.Nat.antidiagonalTuple_zero_right
theorem antidiagonalTuple_zero_right (k : ℕ) : antidiagonalTuple k 0 = {0} 
Arguments: (k : ℕ)
Goal: Finset.Nat.antidiagonalTuple k 0 = {0}
-- Finset.Nat.antidiagonalTuple_one
@[simp]
theorem antidiagonalTuple_one (n : ℕ) : antidiagonalTuple 1 n = {![n]} 
Arguments: (n : ℕ)
Goal: Finset.Nat.antidiagonalTuple 1 n = {![n]}
-- Finset.Nat.antidiagonalTuple_two
theorem antidiagonalTuple_two (n : ℕ) :
    antidiagonalTuple 2 n = (antidiagonal n).map (piFinTwoEquiv fun _ => ℕ).symm.toEmbedding 
Arguments: (n : ℕ)
Goal: Finset.Nat.antidiagonalTuple 2 n = Finset.map (piFinTwoEquiv fun x => ℕ).symm.toEmbedding (Finset.antidiagonal n)
-- Finset.Nat.sigmaAntidiagonalTupleEquivTuple_symm_apply_snd_coe
@[simps]
def sigmaAntidiagonalTupleEquivTuple (k : ℕ) : (Σ n, antidiagonalTuple k n) ≃ (Fin k → ℕ) 
Arguments: (k : ℕ) (x : Fin k → ℕ)
Goal: ∀ (a : Fin k), ↑((Finset.Nat.sigmaAntidiagonalTupleEquivTuple k).symm x).snd a = x a
-- Finset.Nat.sigmaAntidiagonalTupleEquivTuple_apply
@[simps]
def sigmaAntidiagonalTupleEquivTuple (k : ℕ) : (Σ n, antidiagonalTuple k n) ≃ (Fin k → ℕ) 
Arguments: (k : ℕ) (x : (n : ℕ) × { x // x ∈ Finset.Nat.antidiagonalTuple k n })
Goal: ∀ (a : Fin k), (Finset.Nat.sigmaAntidiagonalTupleEquivTuple k) x a = ↑x.snd a
-- Finset.Nat.sigmaAntidiagonalTupleEquivTuple_symm_apply_fst
@[simps]
def sigmaAntidiagonalTupleEquivTuple (k : ℕ) : (Σ n, antidiagonalTuple k n) ≃ (Fin k → ℕ) 
Arguments: (k : ℕ) (x : Fin k → ℕ)
Goal: ((Finset.Nat.sigmaAntidiagonalTupleEquivTuple k).symm x).fst = ∑ i : Fin k, x i
-- Nat.pair_unpair
@[simp]
theorem pair_unpair (n : ℕ) : pair (unpair n).1 (unpair n).2 = n 
Arguments: (n : ℕ)
Goal: Nat.pair (Nat.unpair n).1 (Nat.unpair n).2 = n
-- Nat.pair_unpair'
theorem pair_unpair' {n a b} (H : unpair n = (a, b)) : pair a b = n 
Arguments: {n a b : ℕ} (H : Nat.unpair n = (a, b))
Goal: Nat.pair a b = n
-- Nat.unpair_pair
@[simp]
theorem unpair_pair (a b : ℕ) : unpair (pair a b) = (a, b) 
Arguments: (a b : ℕ)
Goal: Nat.unpair (Nat.pair a b) = (a, b)
-- Nat.pairEquiv_symm_apply
@[simps (config := .asFn)]
def pairEquiv : ℕ × ℕ ≃ ℕ 
Goal: ⇑Nat.pairEquiv.symm = Nat.unpair