ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Matroid.restrict_restriction
theorem restrict_restriction (M : Matroid α) (R : Set α) (hR : R ⊆ M.E := by aesop_mat) :
    M ↾ R ≤r M 
Arguments: {α : Type u_1} (M : Matroid α) (R : Set α) (hR : R ⊆ M.E := by aesop_mat)
Goal: (M.restrict R).Restriction M
-- Matroid.Restriction.eq_restrict
theorem Restriction.eq_restrict (h : N ≤r M) : M ↾ N.E = N 
Arguments: {α : Type u_1} {M N : Matroid α} (h : N.Restriction M)
Goal: M.restrict N.E = N
-- Matroid.Restriction.subset
theorem Restriction.subset (h : N ≤r M) : N.E ⊆ M.E 
Arguments: {α : Type u_1} {M N : Matroid α} (h : N.Restriction M)
Goal: N.E ⊆ M.E
-- Matroid.Restriction.exists_eq_restrict
theorem Restriction.exists_eq_restrict (h : N ≤r M) : ∃ R ⊆ M.E, N = M ↾ R 
Arguments: {α : Type u_1} {M N : Matroid α} (h : N.Restriction M)
Goal: ∃ R ⊆ M.E, N = M.restrict R
-- Matroid.Restriction.of_subset
theorem Restriction.of_subset {R' : Set α} (M : Matroid α) (h : R ⊆ R') : (M ↾ R) ≤r (M ↾ R') 
Arguments: {α : Type u_1} {R R' : Set α} (M : Matroid α) (h : R ⊆ R')
Goal: (M.restrict R).Restriction (M.restrict R')
-- Matroid.restriction_iff_exists
theorem restriction_iff_exists : (N ≤r M) ↔ ∃ R, R ⊆ M.E ∧ N = M ↾ R 
Arguments: {α : Type u_1} {M N : Matroid α}
Goal: N.Restriction M ↔ ∃ R ⊆ M.E, N = M.restrict R
-- Matroid.StrictRestriction.restriction
theorem StrictRestriction.restriction (h : N <r M) : N ≤r M 
Arguments: {α : Type u_1} {M N : Matroid α} (h : N.StrictRestriction M)
Goal: N.Restriction M
-- Matroid.StrictRestriction.ne
theorem StrictRestriction.ne (h : N <r M) : N ≠ M 
Arguments: {α : Type u_1} {M N : Matroid α} (h : N.StrictRestriction M)
Goal: N ≠ M
-- Matroid.StrictRestriction.irrefl
theorem StrictRestriction.irrefl (M : Matroid α) : ¬ (M <r M) 
Arguments: {α : Type u_1} (M : Matroid α)
Goal: ¬M.StrictRestriction M
-- Matroid.StrictRestriction.ssubset
theorem StrictRestriction.ssubset (h : N <r M) : N.E ⊂ M.E 
Arguments: {α : Type u_1} {M N : Matroid α} (h : N.StrictRestriction M)
Goal: N.E ⊂ M.E
-- Matroid.StrictRestriction.eq_restrict
theorem StrictRestriction.eq_restrict (h : N <r M) : M ↾ N.E = N 
Arguments: {α : Type u_1} {M N : Matroid α} (h : N.StrictRestriction M)
Goal: M.restrict N.E = N
-- Matroid.StrictRestriction.exists_eq_restrict
theorem StrictRestriction.exists_eq_restrict (h : N <r M) : ∃ R, R ⊂ M.E ∧ N = M ↾ R 
Arguments: {α : Type u_1} {M N : Matroid α} (h : N.StrictRestriction M)
Goal: ∃ R ⊂ M.E, N = M.restrict R
-- Matroid.Restriction.strictRestriction_of_ne
theorem Restriction.strictRestriction_of_ne (h : N ≤r M) (hne : N ≠ M) : N <r M 
Arguments: {α : Type u_1} {M N : Matroid α} (h : N.Restriction M) (hne : N ≠ M)
Goal: N.StrictRestriction M
-- Matroid.Restriction.eq_or_strictRestriction
theorem Restriction.eq_or_strictRestriction (h : N ≤r M) : N = M ∨ N <r M 
Arguments: {α : Type u_1} {M N : Matroid α} (h : N.Restriction M)
Goal: N = M ∨ N.StrictRestriction M
-- Matroid.restrict_strictRestriction
theorem restrict_strictRestriction {M : Matroid α} (hR : R ⊂ M.E) : M ↾ R <r M 
Arguments: {α : Type u_1} {R : Set α} {M : Matroid α} (hR : R ⊂ M.E)
Goal: (M.restrict R).StrictRestriction M
-- Matroid.Restriction.strictRestriction_of_ground_ne
theorem Restriction.strictRestriction_of_ground_ne (h : N ≤r M) (hne : N.E ≠ M.E) : N <r M 
Arguments: {α : Type u_1} {M N : Matroid α} (h : N.Restriction M) (hne : N.E ≠ M.E)
Goal: N.StrictRestriction M
-- Matroid.StrictRestriction.of_ssubset
theorem StrictRestriction.of_ssubset {R' : Set α} (M : Matroid α) (h : R ⊂ R') :
    (M ↾ R) <r (M ↾ R') 
Arguments: {α : Type u_1} {R R' : Set α} (M : Matroid α) (h : R ⊂ R')
Goal: (M.restrict R).StrictRestriction (M.restrict R')
-- Matroid.Restriction.finite
theorem Restriction.finite {M : Matroid α} [M.Finite] (h : N ≤r M) : N.Finite 
Arguments: {α : Type u_1} {N M : Matroid α} [M.Finite] (h : N.Restriction M)
Goal: N.Finite
-- Matroid.Restriction.finiteRk
theorem Restriction.finiteRk {M : Matroid α} [FiniteRk M] (h : N ≤r M) : N.FiniteRk 
Arguments: {α : Type u_1} {N M : Matroid α} [M.FiniteRk] (h : N.Restriction M)
Goal: N.FiniteRk
-- Matroid.Restriction.finitary
theorem Restriction.finitary {M : Matroid α} [Finitary M] (h : N ≤r M) : N.Finitary 
Arguments: {α : Type u_1} {N M : Matroid α} [M.Finitary] (h : N.Restriction M)
Goal: N.Finitary
-- Matroid.finite_setOf_restriction
theorem finite_setOf_restriction (M : Matroid α) [M.Finite] : {N | N ≤r M}.Finite 
Arguments: {α : Type u_1} (M : Matroid α) [M.Finite]
Goal: {N | N.Restriction M}.Finite
-- Matroid.Indep.of_restriction
theorem Indep.of_restriction (hI : N.Indep I) (hNM : N ≤r M) : M.Indep I 
Arguments: {α : Type u_1} {M : Matroid α} {I : Set α} {N : Matroid α} (hI : N.Indep I) (hNM : N.Restriction M)
Goal: M.Indep I
-- Matroid.Indep.indep_restriction
theorem Indep.indep_restriction (hI : M.Indep I) (hNM : N ≤r M) (hIN : I ⊆ N.E) : N.Indep I 
Arguments: {α : Type u_1} {M : Matroid α} {I : Set α} {N : Matroid α} (hI : M.Indep I) (hNM : N.Restriction M) (hIN : I ⊆ N.E)
Goal: N.Indep I
-- Matroid.Basis.basis_restriction
theorem Basis.basis_restriction (hI : M.Basis I X) (hNM : N ≤r M) (hX : X ⊆ N.E) : N.Basis I X 
Arguments: {α : Type u_1} {M : Matroid α} {I X : Set α} {N : Matroid α} (hI : M.Basis I X) (hNM : N.Restriction M) (hX : X ⊆ N.E)
Goal: N.Basis I X
-- Matroid.Basis.of_restriction
theorem Basis.of_restriction (hI : N.Basis I X) (hNM : N ≤r M) : M.Basis I X 
Arguments: {α : Type u_1} {M : Matroid α} {I X : Set α} {N : Matroid α} (hI : N.Basis I X) (hNM : N.Restriction M)
Goal: M.Basis I X
-- Matroid.Base.basis_of_restriction
theorem Base.basis_of_restriction (hI : N.Base I) (hNM : N ≤r M) : M.Basis I N.E 
Arguments: {α : Type u_1} {M : Matroid α} {I : Set α} {N : Matroid α} (hI : N.Base I) (hNM : N.Restriction M)
Goal: M.Basis I N.E
-- Matroid.Dep.of_restriction
theorem Dep.of_restriction (hX : N.Dep X) (hNM : N ≤r M) : M.Dep X 
Arguments: {α : Type u_1} {M : Matroid α} {X : Set α} {N : Matroid α} (hX : N.Dep X) (hNM : N.Restriction M)
Goal: M.Dep X
-- Matroid.Dep.dep_restriction
theorem Dep.dep_restriction (hX : M.Dep X) (hNM : N ≤r M) (hXE : X ⊆ N.E := by aesop_mat) :
    N.Dep X 
Arguments: {α : Type u_1} {M : Matroid α} {X : Set α} {N : Matroid α} (hX : M.Dep X) (hNM : N.Restriction M) (hXE : X ⊆ N.E := by aesop_mat)
Goal: N.Dep X
-- Matroid.Basis.transfer
theorem Basis.transfer (hIX : M.Basis I X) (hJX : M.Basis J X) (hXY : X ⊆ Y) (hJY : M.Basis J Y) :
    M.Basis I Y 
Arguments: {α : Type u_1} {M : Matroid α} {I X Y J : Set α} (hIX : M.Basis I X) (hJX : M.Basis J X) (hXY : X ⊆ Y) (hJY : M.Basis J Y)
Goal: M.Basis I Y
-- Matroid.Basis.basis_of_basis_of_subset_of_subset
theorem Basis.basis_of_basis_of_subset_of_subset (hI : M.Basis I X) (hJ : M.Basis J Y) (hJX : J ⊆ X)
    (hIY : I ⊆ Y) : M.Basis I Y 
Arguments: {α : Type u_1} {M : Matroid α} {I X Y J : Set α} (hI : M.Basis I X) (hJ : M.Basis J Y) (hJX : J ⊆ X) (hIY : I ⊆ Y)
Goal: M.Basis I Y
-- Matroid.Indep.exists_basis_subset_union_basis
theorem Indep.exists_basis_subset_union_basis (hI : M.Indep I) (hIX : I ⊆ X) (hJ : M.Basis J X) :
    ∃ I', M.Basis I' X ∧ I ⊆ I' ∧ I' ⊆ I ∪ J 
Arguments: {α : Type u_1} {M : Matroid α} {I X J : Set α} (hI : M.Indep I) (hIX : I ⊆ X) (hJ : M.Basis J X)
Goal: ∃ I', M.Basis I' X ∧ I ⊆ I' ∧ I' ⊆ I ∪ J
-- Matroid.Indep.exists_insert_of_not_basis
theorem Indep.exists_insert_of_not_basis (hI : M.Indep I) (hIX : I ⊆ X) (hI' : ¬M.Basis I X)
    (hJ : M.Basis J X) : ∃ e ∈ J \ I, M.Indep (insert e I) 
Arguments: {α : Type u_1} {M : Matroid α} {I X J : Set α} (hI : M.Indep I) (hIX : I ⊆ X) (hI' : ¬M.Basis I X) (hJ : M.Basis J X)
Goal: ∃ e ∈ J \ I, M.Indep (insert e I)
-- Matroid.Basis.base_of_base_subset
theorem Basis.base_of_base_subset (hIX : M.Basis I X) (hB : M.Base B) (hBX : B ⊆ X) : M.Base I 
Arguments: {α : Type u_1} {M : Matroid α} {I X B : Set α} (hIX : M.Basis I X) (hB : M.Base B) (hBX : B ⊆ X)
Goal: M.Base I
-- Matroid.Basis.exchange
theorem Basis.exchange (hIX : M.Basis I X) (hJX : M.Basis J X) (he : e ∈ I \ J) :
    ∃ f ∈ J \ I, M.Basis (insert f (I \ {e})) X 
Arguments: {α : Type u_1} {M : Matroid α} {I X J : Set α} {e : α} (hIX : M.Basis I X) (hJX : M.Basis J X) (he : e ∈ I \ J)
Goal: ∃ f ∈ J \ I, M.Basis (insert f (I \ {e})) X
-- Matroid.Basis.eq_exchange_of_diff_eq_singleton
theorem Basis.eq_exchange_of_diff_eq_singleton (hI : M.Basis I X) (hJ : M.Basis J X)
    (hIJ : I \ J = {e}) : ∃ f ∈ J \ I, J = insert f I \ {e} 
Arguments: {α : Type u_1} {M : Matroid α} {I X J : Set α} {e : α} (hI : M.Basis I X) (hJ : M.Basis J X) (hIJ : I \ J = {e})
Goal: ∃ f ∈ J \ I, J = insert f I \ {e}
-- Matroid.Basis'.encard_eq_encard
theorem Basis'.encard_eq_encard (hI : M.Basis' I X) (hJ : M.Basis' J X) : I.encard = J.encard 
Arguments: {α : Type u_1} {M : Matroid α} {I X J : Set α} (hI : M.Basis' I X) (hJ : M.Basis' J X)
Goal: I.encard = J.encard
-- Matroid.Basis.encard_eq_encard
theorem Basis.encard_eq_encard (hI : M.Basis I X) (hJ : M.Basis J X) : I.encard = J.encard 
Arguments: {α : Type u_1} {M : Matroid α} {I X J : Set α} (hI : M.Basis I X) (hJ : M.Basis J X)
Goal: I.encard = J.encard
-- Matroid.Indep.augment
theorem Indep.augment (hI : M.Indep I) (hJ : M.Indep J) (hIJ : I.encard < J.encard) :
    ∃ e ∈ J \ I, M.Indep (insert e I) 
Arguments: {α : Type u_1} {M : Matroid α} {I J : Set α} (hI : M.Indep I) (hJ : M.Indep J) (hIJ : I.encard < J.encard)
Goal: ∃ e ∈ J \ I, M.Indep (insert e I)
-- Matrix.fromRows_apply_inl
@[simp]
lemma fromRows_apply_inl (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) (i : m₁) (j : n) :
    (fromRows A₁ A₂) (Sum.inl i) j = A₁ i j 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) (i : m₁) (j : n)
Goal: A₁.fromRows A₂ (Sum.inl i) j = A₁ i j
-- Matrix.fromRows_apply_inr
@[simp]
lemma fromRows_apply_inr (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) (i : m₂) (j : n) :
    (fromRows A₁ A₂) (Sum.inr i) j = A₂ i j 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) (i : m₂) (j : n)
Goal: A₁.fromRows A₂ (Sum.inr i) j = A₂ i j
-- Matrix.fromColumns_apply_inl
@[simp]
lemma fromColumns_apply_inl (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R) (i : m) (j : n₁) :
    (fromColumns A₁ A₂) i (Sum.inl j) = A₁ i j 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7} (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R) (i : m) (j : n₁)
Goal: A₁.fromColumns A₂ i (Sum.inl j) = A₁ i j
-- Matrix.fromColumns_apply_inr
@[simp]
lemma fromColumns_apply_inr (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R) (i : m) (j : n₂) :
    (fromColumns A₁ A₂) i (Sum.inr j) = A₂ i j 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7} (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R) (i : m) (j : n₂)
Goal: A₁.fromColumns A₂ i (Sum.inr j) = A₂ i j
-- Matrix.toRows₁_apply
@[simp]
lemma toRows₁_apply (A : Matrix (m₁ ⊕ m₂) n R) (i : m₁) (j : n) :
    (toRows₁ A) i j = A (Sum.inl i) j 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} (A : Matrix (m₁ ⊕ m₂) n R) (i : m₁) (j : n)
Goal: A.toRows₁ i j = A (Sum.inl i) j
-- Matrix.toRows₂_apply
@[simp]
lemma toRows₂_apply (A : Matrix (m₁ ⊕ m₂) n R) (i : m₂) (j : n) :
    (toRows₂ A) i j = A (Sum.inr i) j 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} (A : Matrix (m₁ ⊕ m₂) n R) (i : m₂) (j : n)
Goal: A.toRows₂ i j = A (Sum.inr i) j
-- Matrix.toRows₁_fromRows
@[simp]
lemma toRows₁_fromRows  (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) :
    toRows₁ (fromRows A₁ A₂) = A₁ 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R)
Goal: (A₁.fromRows A₂).toRows₁ = A₁
-- Matrix.toRows₂_fromRows
@[simp]
lemma toRows₂_fromRows  (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) :
    toRows₂ (fromRows A₁ A₂) = A₂ 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R)
Goal: (A₁.fromRows A₂).toRows₂ = A₂
-- Matrix.toColumns₁_apply
@[simp]
lemma toColumns₁_apply (A : Matrix m (n₁ ⊕ n₂) R) (i : m) (j : n₁) :
    (toColumns₁ A) i j = A i (Sum.inl j) 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7} (A : Matrix m (n₁ ⊕ n₂) R) (i : m) (j : n₁)
Goal: A.toColumns₁ i j = A i (Sum.inl j)
-- Matrix.toColumns₂_apply
@[simp]
lemma toColumns₂_apply (A : Matrix m (n₁ ⊕ n₂) R) (i : m) (j : n₂) :
    (toColumns₂ A) i j = A i (Sum.inr j) 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7} (A : Matrix m (n₁ ⊕ n₂) R) (i : m) (j : n₂)
Goal: A.toColumns₂ i j = A i (Sum.inr j)
-- Matrix.toColumns₁_fromColumns
@[simp]
lemma toColumns₁_fromColumns (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R) :
    toColumns₁ (fromColumns A₁ A₂) = A₁ 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7} (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R)
Goal: (A₁.fromColumns A₂).toColumns₁ = A₁
-- Matrix.toColumns₂_fromColumns
@[simp]
lemma toColumns₂_fromColumns (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R) :
    toColumns₂ (fromColumns A₁ A₂) = A₂ 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7} (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R)
Goal: (A₁.fromColumns A₂).toColumns₂ = A₂
-- Matrix.fromColumns_toColumns
@[simp]
lemma fromColumns_toColumns (A : Matrix m (n₁ ⊕ n₂) R) :
    fromColumns A.toColumns₁ A.toColumns₂ = A 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7} (A : Matrix m (n₁ ⊕ n₂) R)
Goal: A.toColumns₁.fromColumns A.toColumns₂ = A
-- Matrix.fromRows_toRows
@[simp]
lemma fromRows_toRows (A : Matrix (m₁ ⊕ m₂) n R) : fromRows A.toRows₁ A.toRows₂ = A 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} (A : Matrix (m₁ ⊕ m₂) n R)
Goal: A.toRows₁.fromRows A.toRows₂ = A
-- Matrix.fromRows_inj
lemma fromRows_inj : Function.Injective2 (@fromRows R m₁ m₂ n) 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5}
Goal: Function.Injective2 Matrix.fromRows
-- Matrix.fromColumns_inj
lemma fromColumns_inj : Function.Injective2 (@fromColumns R m n₁ n₂) 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7}
Goal: Function.Injective2 Matrix.fromColumns
-- Matrix.fromColumns_ext_iff
lemma fromColumns_ext_iff (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R) (B₁ : Matrix m n₁ R)
    (B₂ : Matrix m n₂ R) :
    fromColumns A₁ A₂ = fromColumns B₁ B₂ ↔ A₁ = B₁ ∧ A₂ = B₂ 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7} (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R) (B₁ : Matrix m n₁ R) (B₂ : Matrix m n₂ R)
Goal: A₁.fromColumns A₂ = B₁.fromColumns B₂ ↔ A₁ = B₁ ∧ A₂ = B₂
-- Matrix.fromRows_ext_iff
lemma fromRows_ext_iff (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) (B₁ : Matrix m₁ n R)
    (B₂ : Matrix m₂ n R) :
    fromRows A₁ A₂ = fromRows B₁ B₂ ↔ A₁ = B₁ ∧ A₂ = B₂ 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) (B₁ : Matrix m₁ n R) (B₂ : Matrix m₂ n R)
Goal: A₁.fromRows A₂ = B₁.fromRows B₂ ↔ A₁ = B₁ ∧ A₂ = B₂
-- Matrix.transpose_fromColumns
lemma transpose_fromColumns (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R) :
    transpose (fromColumns A₁ A₂) = fromRows (transpose A₁) (transpose A₂) 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7} (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R)
Goal: (A₁.fromColumns A₂).transpose = A₁.transpose.fromRows A₂.transpose
-- Matrix.transpose_fromRows
lemma transpose_fromRows (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) :
    transpose (fromRows A₁ A₂) = fromColumns (transpose A₁) (transpose A₂) 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R)
Goal: (A₁.fromRows A₂).transpose = A₁.transpose.fromColumns A₂.transpose
-- Matrix.fromRows_neg
@[simp]
lemma fromRows_neg (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) :
    -fromRows A₁ A₂ = fromRows (-A₁) (-A₂) 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} [Neg R] (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R)
Goal: -A₁.fromRows A₂ = (-A₁).fromRows (-A₂)
-- Matrix.fromColumns_neg
@[simp]
lemma fromColumns_neg (A₁ : Matrix n m₁ R) (A₂ : Matrix n m₂ R) :
    -fromColumns A₁ A₂ = fromColumns (-A₁) (-A₂) 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} [Neg R] (A₁ : Matrix n m₁ R) (A₂ : Matrix n m₂ R)
Goal: -A₁.fromColumns A₂ = (-A₁).fromColumns (-A₂)
-- Matrix.fromRows_mulVec
@[simp]
lemma fromRows_mulVec (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) (v : n → R) :
    fromRows A₁ A₂ *ᵥ v = Sum.elim (A₁ *ᵥ v) (A₂ *ᵥ v) 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} [Fintype n] [Semiring R] (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) (v : n → R)
Goal: (A₁.fromRows A₂).mulVec v = Sum.elim (A₁.mulVec v) (A₂.mulVec v)
-- Matrix.vecMul_fromColumns
@[simp]
lemma vecMul_fromColumns (B₁ : Matrix m n₁ R) (B₂ : Matrix m n₂ R) (v : m → R) :
    v ᵥ* fromColumns B₁ B₂ = Sum.elim (v ᵥ* B₁) (v ᵥ* B₂) 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7} [Fintype m] [Semiring R] (B₁ : Matrix m n₁ R) (B₂ : Matrix m n₂ R) (v : m → R)
Goal: Matrix.vecMul v (B₁.fromColumns B₂) = Sum.elim (Matrix.vecMul v B₁) (Matrix.vecMul v B₂)
-- Matrix.sum_elim_vecMul_fromRows
@[simp]
lemma sum_elim_vecMul_fromRows (B₁ : Matrix m₁ n R) (B₂ : Matrix m₂ n R)
    (v₁ : m₁ → R) (v₂ : m₂ → R) :
    Sum.elim v₁ v₂ ᵥ* fromRows B₁ B₂ = v₁ ᵥ* B₁ + v₂ ᵥ* B₂ 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} [Fintype m₁] [Fintype m₂] [Semiring R] (B₁ : Matrix m₁ n R) (B₂ : Matrix m₂ n R) (v₁ : m₁ → R) (v₂ : m₂ → R)
Goal: Matrix.vecMul (Sum.elim v₁ v₂) (B₁.fromRows B₂) = Matrix.vecMul v₁ B₁ + Matrix.vecMul v₂ B₂
-- Matrix.fromColumns_mulVec_sum_elim
@[simp]
lemma fromColumns_mulVec_sum_elim (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R)
    (v₁ : n₁ → R) (v₂ : n₂ → R) :
    fromColumns A₁ A₂ *ᵥ Sum.elim v₁ v₂ = A₁ *ᵥ v₁ + A₂ *ᵥ v₂ 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7} [Fintype n₁] [Fintype n₂] [Semiring R] (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R) (v₁ : n₁ → R) (v₂ : n₂ → R)
Goal: (A₁.fromColumns A₂).mulVec (Sum.elim v₁ v₂) = A₁.mulVec v₁ + A₂.mulVec v₂
-- Matrix.fromRows_mul
@[simp]
lemma fromRows_mul (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) (B : Matrix n m R) :
    fromRows A₁ A₂ * B = fromRows (A₁ * B) (A₂ * B) 
Arguments: {R : Type u_1} {m : Type u_2} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} [Fintype n] [Semiring R] (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) (B : Matrix n m R)
Goal: A₁.fromRows A₂ * B = (A₁ * B).fromRows (A₂ * B)
-- Matrix.mul_fromColumns
@[simp]
lemma mul_fromColumns (A : Matrix m n R) (B₁ : Matrix n n₁ R) (B₂ : Matrix n n₂ R) :
    A * fromColumns B₁ B₂ = fromColumns (A * B₁) (A * B₂) 
Arguments: {R : Type u_1} {m : Type u_2} {n : Type u_5} {n₁ : Type u_6} {n₂ : Type u_7} [Fintype n] [Semiring R] (A : Matrix m n R) (B₁ : Matrix n n₁ R) (B₂ : Matrix n n₂ R)
Goal: A * B₁.fromColumns B₂ = (A * B₁).fromColumns (A * B₂)
-- Matrix.fromRows_zero
@[simp]
lemma fromRows_zero : fromRows (0 : Matrix m₁ n R) (0 : Matrix m₂ n R) = 0 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} [Semiring R]
Goal: Matrix.fromRows 0 0 = 0
-- Matrix.fromColumns_zero
@[simp]
lemma fromColumns_zero : fromColumns (0 : Matrix m n₁ R) (0 : Matrix m n₂ R) = 0 
Arguments: {R : Type u_1} {m : Type u_2} {n₁ : Type u_6} {n₂ : Type u_7} [Semiring R]
Goal: Matrix.fromColumns 0 0 = 0
-- Matrix.fromColumns_fromRows_eq_fromBlocks
@[simp]
lemma fromColumns_fromRows_eq_fromBlocks (B₁₁ : Matrix m₁ n₁ R) (B₁₂ : Matrix m₁ n₂ R)
    (B₂₁ : Matrix m₂ n₁ R) (B₂₂ : Matrix m₂ n₂ R) :
    fromColumns (fromRows B₁₁ B₂₁) (fromRows B₁₂ B₂₂) = fromBlocks B₁₁ B₁₂ B₂₁ B₂₂ 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n₁ : Type u_6} {n₂ : Type u_7} (B₁₁ : Matrix m₁ n₁ R) (B₁₂ : Matrix m₁ n₂ R) (B₂₁ : Matrix m₂ n₁ R) (B₂₂ : Matrix m₂ n₂ R)
Goal: (B₁₁.fromRows B₂₁).fromColumns (B₁₂.fromRows B₂₂) = Matrix.fromBlocks B₁₁ B₁₂ B₂₁ B₂₂
-- Matrix.fromRows_fromColumn_eq_fromBlocks
@[simp]
lemma fromRows_fromColumn_eq_fromBlocks (B₁₁ : Matrix m₁ n₁ R) (B₁₂ : Matrix m₁ n₂ R)
    (B₂₁ : Matrix m₂ n₁ R) (B₂₂ : Matrix m₂ n₂ R) :
    fromRows (fromColumns B₁₁ B₁₂) (fromColumns B₂₁ B₂₂) = fromBlocks B₁₁ B₁₂ B₂₁ B₂₂ 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n₁ : Type u_6} {n₂ : Type u_7} (B₁₁ : Matrix m₁ n₁ R) (B₁₂ : Matrix m₁ n₂ R) (B₂₁ : Matrix m₂ n₁ R) (B₂₂ : Matrix m₂ n₂ R)
Goal: (B₁₁.fromColumns B₁₂).fromRows (B₂₁.fromColumns B₂₂) = Matrix.fromBlocks B₁₁ B₁₂ B₂₁ B₂₂
-- Matrix.fromRows_mul_fromColumns
lemma fromRows_mul_fromColumns (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R)
    (B₁ : Matrix n n₁ R) (B₂ : Matrix n n₂ R) :
    (fromRows A₁ A₂) * (fromColumns B₁ B₂) =
      fromBlocks (A₁ * B₁) (A₁ * B₂) (A₂ * B₁) (A₂ * B₂) 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} {n₁ : Type u_6} {n₂ : Type u_7} [Fintype n] [Semiring R] (A₁ : Matrix m₁ n R) (A₂ : Matrix m₂ n R) (B₁ : Matrix n n₁ R) (B₂ : Matrix n n₂ R)
Goal: A₁.fromRows A₂ * B₁.fromColumns B₂ = Matrix.fromBlocks (A₁ * B₁) (A₁ * B₂) (A₂ * B₁) (A₂ * B₂)
-- Matrix.fromColumns_mul_fromRows
lemma fromColumns_mul_fromRows (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R)
    (B₁ : Matrix n₁ n R) (B₂ : Matrix n₂ n R) :
    fromColumns A₁ A₂ * fromRows B₁ B₂ = (A₁ * B₁ + A₂ * B₂) 
Arguments: {R : Type u_1} {m : Type u_2} {n : Type u_5} {n₁ : Type u_6} {n₂ : Type u_7} [Fintype n₁] [Fintype n₂] [Semiring R] (A₁ : Matrix m n₁ R) (A₂ : Matrix m n₂ R) (B₁ : Matrix n₁ n R) (B₂ : Matrix n₂ n R)
Goal: A₁.fromColumns A₂ * B₁.fromRows B₂ = A₁ * B₁ + A₂ * B₂
-- Matrix.fromColumns_mul_fromBlocks
lemma fromColumns_mul_fromBlocks (A₁ : Matrix m m₁ R) (A₂ : Matrix m m₂ R)
    (B₁₁ : Matrix m₁ n₁ R) (B₁₂ : Matrix m₁ n₂ R) (B₂₁ : Matrix m₂ n₁ R) (B₂₂ : Matrix m₂ n₂ R) :
    (fromColumns A₁ A₂) * fromBlocks B₁₁ B₁₂ B₂₁ B₂₂ =
      fromColumns (A₁ * B₁₁ + A₂ * B₂₁) (A₁ * B₁₂ + A₂ * B₂₂) 
Arguments: {R : Type u_1} {m : Type u_2} {m₁ : Type u_3} {m₂ : Type u_4} {n₁ : Type u_6} {n₂ : Type u_7} [Fintype m₁] [Fintype m₂] [Semiring R] (A₁ : Matrix m m₁ R) (A₂ : Matrix m m₂ R) (B₁₁ : Matrix m₁ n₁ R) (B₁₂ : Matrix m₁ n₂ R) (B₂₁ : Matrix m₂ n₁ R) (B₂₂ : Matrix m₂ n₂ R)
Goal: A₁.fromColumns A₂ * Matrix.fromBlocks B₁₁ B₁₂ B₂₁ B₂₂ = (A₁ * B₁₁ + A₂ * B₂₁).fromColumns (A₁ * B₁₂ + A₂ * B₂₂)
-- Matrix.fromBlocks_mul_fromRows
lemma fromBlocks_mul_fromRows (A₁ : Matrix n₁ n R) (A₂ : Matrix n₂ n R)
    (B₁₁ : Matrix m₁ n₁ R) (B₁₂ : Matrix m₁ n₂ R) (B₂₁ : Matrix m₂ n₁ R) (B₂₂ : Matrix m₂ n₂ R) :
    fromBlocks B₁₁ B₁₂ B₂₁ B₂₂ * (fromRows A₁ A₂) =
      fromRows (B₁₁ * A₁ + B₁₂ * A₂) (B₂₁ * A₁ + B₂₂ * A₂) 
Arguments: {R : Type u_1} {m₁ : Type u_3} {m₂ : Type u_4} {n : Type u_5} {n₁ : Type u_6} {n₂ : Type u_7} [Fintype n₁] [Fintype n₂] [Semiring R] (A₁ : Matrix n₁ n R) (A₂ : Matrix n₂ n R) (B₁₁ : Matrix m₁ n₁ R) (B₁₂ : Matrix m₁ n₂ R) (B₂₁ : Matrix m₂ n₁ R) (B₂₂ : Matrix m₂ n₂ R)
Goal: Matrix.fromBlocks B₁₁ B₁₂ B₂₁ B₂₂ * A₁.fromRows A₂ = (B₁₁ * A₁ + B₁₂ * A₂).fromRows (B₂₁ * A₁ + B₂₂ * A₂)
-- Matrix.fromColumns_mul_fromRows_eq_one_comm
lemma fromColumns_mul_fromRows_eq_one_comm (e : n ≃ n₁ ⊕ n₂)
    (A₁ : Matrix n n₁ R) (A₂ : Matrix n n₂ R) (B₁ : Matrix n₁ n R) (B₂ : Matrix n₂ n R) :
    fromColumns A₁ A₂ * fromRows B₁ B₂ = 1 ↔ fromRows B₁ B₂ * fromColumns A₁ A₂ = 1 
Arguments: {R : Type u_1} {n : Type u_5} {n₁ : Type u_6} {n₂ : Type u_7} [Fintype n] [Fintype n₁] [Fintype n₂] [DecidableEq n] [DecidableEq n₁] [DecidableEq n₂] [CommRing R] (e : n ≃ n₁ ⊕ n₂) (A₁ : Matrix n n₁ R) (A₂ : Matrix n n₂ R) (B₁ : Matrix n₁ n R) (B₂ : Matrix n₂ n R)
Goal: A₁.fromColumns A₂ * B₁.fromRows B₂ = 1 ↔ B₁.fromRows B₂ * A₁.fromColumns A₂ = 1
-- Matrix.equiv_compl_fromColumns_mul_fromRows_eq_one_comm
lemma equiv_compl_fromColumns_mul_fromRows_eq_one_comm (p : n → Prop)[DecidablePred p]
    (A₁ : Matrix n {i // p i} R) (A₂ : Matrix n {i // ¬p i} R)
    (B₁ : Matrix {i // p i} n R) (B₂ : Matrix {i // ¬p i} n R) :
    fromColumns A₁ A₂ * fromRows B₁ B₂ = 1 ↔ fromRows B₁ B₂ * fromColumns A₁ A₂ = 1 
Arguments: {R : Type u_1} {n : Type u_5} [Fintype n] [DecidableEq n] [CommRing R] (p : n → Prop) [DecidablePred p] (A₁ : Matrix n { i // p i } R) (A₂ : Matrix n { i // ¬p i } R) (B₁ : Matrix { i // p i } n R) (B₂ : Matrix { i // ¬p i } n R)
Goal: A₁.fromColumns A₂ * B₁.fromRows B₂ = 1 ↔ B₁.fromRows B₂ * A₁.fromColumns A₂ = 1