ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Directed.finite_set_le
theorem Directed.finite_set_le (D : Directed r f) {s : Set γ} (hs : s.Finite) :
    ∃ z, ∀ i ∈ s, r (f i) (f z) 
Arguments: {α : Type u_1} {r : α → α → Prop} [IsTrans α r] {γ : Type u_3} [Nonempty γ] {f : γ → α} (D : Directed r f) {s : Set γ} (hs : s.Finite)
Goal: ∃ z, ∀ i ∈ s, r (f i) (f z)
-- Directed.finite_le
theorem Directed.finite_le (D : Directed r f) (g : β → γ) : ∃ z, ∀ i, r (f (g i)) (f z) 
Arguments: {α : Type u_1} {r : α → α → Prop} [IsTrans α r] {β : Type u_2} {γ : Type u_3} [Nonempty γ] {f : γ → α} [Finite β] (D : Directed r f) (g : β → γ)
Goal: ∃ z, ∀ (i : β), r (f (g i)) (f z)
-- Finite.exists_le
theorem Finite.exists_le [IsDirected α (· ≤ ·)] (f : β → α) : ∃ M, ∀ i, f i ≤ M 
Arguments: {α : Type u_1} {β : Type u_2} [Finite β] [Nonempty α] [Preorder α] [IsDirected α fun x x_1 => x ≤ x_1] (f : β → α)
Goal: ∃ M, ∀ (i : β), f i ≤ M
-- Finite.exists_ge
theorem Finite.exists_ge [IsDirected α (· ≥ ·)] (f : β → α) : ∃ M, ∀ i, M ≤ f i 
Arguments: {α : Type u_1} {β : Type u_2} [Finite β] [Nonempty α] [Preorder α] [IsDirected α fun x x_1 => x ≥ x_1] (f : β → α)
Goal: ∃ M, ∀ (i : β), M ≤ f i
-- Set.Finite.exists_le
theorem Set.Finite.exists_le [IsDirected α (· ≤ ·)] {s : Set α} (hs : s.Finite) :
    ∃ M, ∀ i ∈ s, i ≤ M 
Arguments: {α : Type u_1} [Nonempty α] [Preorder α] [IsDirected α fun x x_1 => x ≤ x_1] {s : Set α} (hs : s.Finite)
Goal: ∃ M, ∀ i ∈ s, i ≤ M
-- Set.Finite.exists_ge
theorem Set.Finite.exists_ge [IsDirected α (· ≥ ·)] {s : Set α} (hs : s.Finite) :
    ∃ M, ∀ i ∈ s, M ≤ i 
Arguments: {α : Type u_1} [Nonempty α] [Preorder α] [IsDirected α fun x x_1 => x ≥ x_1] {s : Set α} (hs : s.Finite)
Goal: ∃ M, ∀ i ∈ s, M ≤ i
-- Finite.bddAbove_range
theorem Finite.bddAbove_range [IsDirected α (· ≤ ·)] (f : β → α) : BddAbove (Set.range f) 
Arguments: {α : Type u_1} {β : Type u_2} [Finite β] [Nonempty α] [Preorder α] [IsDirected α fun x x_1 => x ≤ x_1] (f : β → α)
Goal: BddAbove (Set.range f)
-- Finite.bddBelow_range
theorem Finite.bddBelow_range [IsDirected α (· ≥ ·)] (f : β → α) : BddBelow (Set.range f) 
Arguments: {α : Type u_1} {β : Type u_2} [Finite β] [Nonempty α] [Preorder α] [IsDirected α fun x x_1 => x ≥ x_1] (f : β → α)
Goal: BddBelow (Set.range f)
-- Fintype.card_embedding_eq_of_unique
theorem card_embedding_eq_of_unique {α β : Type*} [Unique α] [Fintype β] [Fintype (α ↪ β)] :
    ‖α ↪ β‖ = ‖β‖ 
Arguments: {α : Type u_1} {β : Type u_2} [Unique α] [Fintype β] [Fintype (α ↪ β)]
Goal: ‖α ↪ β‖ = ‖β‖
-- Fintype.card_embedding_eq
@[simp]
theorem card_embedding_eq {α β : Type*} [Fintype α] [Fintype β] [emb : Fintype (α ↪ β)] :
    ‖α ↪ β‖ = ‖β‖.descFactorial ‖α‖ 
Arguments: {α : Type u_1} {β : Type u_2} [Fintype α] [Fintype β] [emb : Fintype (α ↪ β)]
Goal: ‖α ↪ β‖ = ‖β‖.descFactorial ‖α‖
-- Fintype.card_embedding_eq_of_infinite
theorem card_embedding_eq_of_infinite {α β : Type*} [Infinite α] [Fintype β] [Fintype (α ↪ β)] :
    ‖α ↪ β‖ = 0 
Arguments: {α : Type u_1} {β : Type u_2} [Infinite α] [Fintype β] [Fintype (α ↪ β)]
Goal: ‖α ↪ β‖ = 0
-- Set.toFinset_prod
theorem toFinset_prod (s : Set α) (t : Set β) [Fintype s] [Fintype t] [Fintype (s ×ˢ t)] :
    (s ×ˢ t).toFinset = s.toFinset ×ˢ t.toFinset 
Arguments: {α : Type u_1} {β : Type u_2} (s : Set α) (t : Set β) [Fintype ↑s] [Fintype ↑t] [Fintype ↑(s ×ˢ t)]
Goal: (s ×ˢ t).toFinset = s.toFinset ×ˢ t.toFinset
-- Set.toFinset_off_diag
theorem toFinset_off_diag {s : Set α} [DecidableEq α] [Fintype s] [Fintype s.offDiag] :
    s.offDiag.toFinset = s.toFinset.offDiag 
Arguments: {α : Type u_1} {s : Set α} [DecidableEq α] [Fintype ↑s] [Fintype ↑s.offDiag]
Goal: s.offDiag.toFinset = s.toFinset.offDiag
-- Finset.univ_product_univ
@[simp] lemma univ_product_univ : univ ×ˢ univ = (univ : Finset (α × β)) 
Arguments: {α : Type u_1} {β : Type u_2} [Fintype α] [Fintype β]
Goal: Finset.univ ×ˢ Finset.univ = Finset.univ
-- Finset.product_eq_univ
@[simp] lemma product_eq_univ [Nonempty α] [Nonempty β] : s ×ˢ t = univ ↔ s = univ ∧ t = univ 
Arguments: {α : Type u_1} {β : Type u_2} [Fintype α] [Fintype β] {s : Finset α} {t : Finset β} [Nonempty α] [Nonempty β]
Goal: s ×ˢ t = Finset.univ ↔ s = Finset.univ ∧ t = Finset.univ
-- Fintype.card_prod
@[simp]
theorem Fintype.card_prod (α β : Type*) [Fintype α] [Fintype β] :
    Fintype.card (α × β) = Fintype.card α * Fintype.card β 
Arguments: (α : Type u_4) (β : Type u_5) [Fintype α] [Fintype β]
Goal: Fintype.card (α × β) = Fintype.card α * Fintype.card β
-- infinite_prod
@[simp]
theorem infinite_prod : Infinite (α × β) ↔ Infinite α ∧ Nonempty β ∨ Nonempty α ∧ Infinite β 
Arguments: {α : Type u_1} {β : Type u_2}
Goal: Infinite (α × β) ↔ Infinite α ∧ Nonempty β ∨ Nonempty α ∧ Infinite β
-- Pi.infinite_of_exists_right
theorem Pi.infinite_of_exists_right {ι : Sort*} {π : ι → Sort*} (i : ι) [Infinite <| π i]
    [∀ i, Nonempty <| π i] : Infinite (∀ i : ι, π i) 
Arguments: {ι : Sort u_4} {π : ι → Sort u_5} (i : ι) [Infinite (π i)] [∀ (i : ι), Nonempty (π i)]
Goal: Infinite ((i : ι) → π i)
-- Fintype.mem_piFinset
@[simp]
theorem mem_piFinset {t : ∀ a, Finset (δ a)} {f : ∀ a, δ a} : f ∈ piFinset t ↔ ∀ a, f a ∈ t a 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {δ : α → Type u_3} {t : (a : α) → Finset (δ a)} {f : (a : α) → δ a}
Goal: f ∈ Fintype.piFinset t ↔ ∀ (a : α), f a ∈ t a
-- Fintype.coe_piFinset
@[simp]
theorem coe_piFinset (t : ∀ a, Finset (δ a)) :
    (piFinset t : Set (∀ a, δ a)) = Set.pi Set.univ fun a => t a 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {δ : α → Type u_3} (t : (a : α) → Finset (δ a))
Goal: ↑(Fintype.piFinset t) = Set.univ.pi fun a => ↑(t a)
-- Fintype.piFinset_subset
theorem piFinset_subset (t₁ t₂ : ∀ a, Finset (δ a)) (h : ∀ a, t₁ a ⊆ t₂ a) :
    piFinset t₁ ⊆ piFinset t₂ 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {δ : α → Type u_3} (t₁ t₂ : (a : α) → Finset (δ a)) (h : ∀ (a : α), t₁ a ⊆ t₂ a)
Goal: Fintype.piFinset t₁ ⊆ Fintype.piFinset t₂
-- Fintype.piFinset_empty
@[simp]
theorem piFinset_empty [Nonempty α] : piFinset (fun _ => ∅ : ∀ i, Finset (δ i)) = ∅ 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {δ : α → Type u_3} [Nonempty α]
Goal: (Fintype.piFinset fun x => ∅) = ∅
-- Fintype.piFinset_nonempty
@[simp, aesop safe apply (rule_sets := [finsetNonempty])]
lemma piFinset_nonempty : (piFinset s).Nonempty ↔ ∀ a, (s a).Nonempty 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {γ : α → Type u_2} {s : (a : α) → Finset (γ a)}
Goal: (Fintype.piFinset s).Nonempty ↔ ∀ (a : α), (s a).Nonempty
-- Finset.Nonempty.piFinset_const
lemma _root_.Finset.Nonempty.piFinset_const {ι : Type*} [Fintype ι] [DecidableEq ι] {s : Finset α}
    (hs : s.Nonempty) : (piFinset fun _ : ι ↦ s).Nonempty 
Arguments: {α : Type u_1} {ι : Type u_4} [Fintype ι] [DecidableEq ι] {s : Finset α} (hs : s.Nonempty)
Goal: (Fintype.piFinset fun x => s).Nonempty
-- Fintype.piFinset_of_isEmpty
@[simp]
lemma piFinset_of_isEmpty [IsEmpty α] (s : ∀ a, Finset (γ a)) : piFinset s = univ 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {γ : α → Type u_2} [IsEmpty α] (s : (a : α) → Finset (γ a))
Goal: Fintype.piFinset s = Finset.univ
-- Fintype.piFinset_singleton
@[simp]
theorem piFinset_singleton (f : ∀ i, δ i) : piFinset (fun i => {f i} : ∀ i, Finset (δ i)) = {f} 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {δ : α → Type u_3} (f : (i : α) → δ i)
Goal: (Fintype.piFinset fun i => {f i}) = {f}
-- Fintype.piFinset_subsingleton
theorem piFinset_subsingleton {f : ∀ i, Finset (δ i)} (hf : ∀ i, (f i : Set (δ i)).Subsingleton) :
    (Fintype.piFinset f : Set (∀ i, δ i)).Subsingleton 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {δ : α → Type u_3} {f : (i : α) → Finset (δ i)} (hf : ∀ (i : α), (↑(f i)).Subsingleton)
Goal: (↑(Fintype.piFinset f)).Subsingleton
-- Fintype.piFinset_disjoint_of_disjoint
theorem piFinset_disjoint_of_disjoint (t₁ t₂ : ∀ a, Finset (δ a)) {a : α}
    (h : Disjoint (t₁ a) (t₂ a)) : Disjoint (piFinset t₁) (piFinset t₂) 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {δ : α → Type u_3} (t₁ t₂ : (a : α) → Finset (δ a)) {a : α} (h : Disjoint (t₁ a) (t₂ a))
Goal: Disjoint (Fintype.piFinset t₁) (Fintype.piFinset t₂)
-- Fintype.piFinset_image
lemma piFinset_image [∀ a, DecidableEq (δ a)] (f : ∀ a, γ a → δ a) (s : ∀ a, Finset (γ a)) :
    piFinset (fun a ↦ (s a).image (f a)) = (piFinset s).image fun b a ↦ f _ (b a) 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {γ : α → Type u_2} {δ : α → Type u_3} [(a : α) → DecidableEq (δ a)] (f : (a : α) → γ a → δ a) (s : (a : α) → Finset (γ a))
Goal: (Fintype.piFinset fun a => Finset.image (f a) (s a)) = Finset.image (fun b a => f a (b a)) (Fintype.piFinset s)
-- Fintype.eval_image_piFinset_subset
lemma eval_image_piFinset_subset (t : ∀ a, Finset (δ a)) (a : α) [DecidableEq (δ a)] :
    ((piFinset t).image fun f ↦ f a) ⊆ t a 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {δ : α → Type u_3} (t : (a : α) → Finset (δ a)) (a : α) [DecidableEq (δ a)]
Goal: Finset.image (fun f => f a) (Fintype.piFinset t) ⊆ t a
-- Fintype.eval_image_piFinset
lemma eval_image_piFinset (t : ∀ a, Finset (δ a)) (a : α) [DecidableEq (δ a)]
    (ht : ∀ b, a ≠ b → (t b).Nonempty) : ((piFinset t).image fun f ↦ f a) = t a 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {δ : α → Type u_3} (t : (a : α) → Finset (δ a)) (a : α) [DecidableEq (δ a)] (ht : ∀ (b : α), a ≠ b → (t b).Nonempty)
Goal: Finset.image (fun f => f a) (Fintype.piFinset t) = t a
-- Fintype.eval_image_piFinset_const
lemma eval_image_piFinset_const {β} [DecidableEq β] (t : Finset β) (a : α) :
    ((piFinset fun _i : α ↦ t).image fun f ↦ f a) = t 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {β : Type u_4} [DecidableEq β] (t : Finset β) (a : α)
Goal: Finset.image (fun f => f a) (Fintype.piFinset fun _i => t) = t
-- Fintype.filter_piFinset_of_not_mem
lemma filter_piFinset_of_not_mem (t : ∀ a, Finset (δ a)) (a : α) (x : δ a) (hx : x ∉ t a) :
    (piFinset t).filter (· a = x) = ∅ 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {δ : α → Type u_3} [(a : α) → DecidableEq (δ a)] (t : (a : α) → Finset (δ a)) (a : α) (x : δ a) (hx : x ∉ t a)
Goal: Finset.filter (fun x_1 => x_1 a = x) (Fintype.piFinset t) = ∅
-- Fintype.piFinset_update_eq_filter_piFinset_mem
lemma piFinset_update_eq_filter_piFinset_mem (s : ∀ i, Finset (δ i)) (i : α) {t : Finset (δ i)}
    (hts : t ⊆ s i) : piFinset (Function.update s i t) = (piFinset s).filter (fun f ↦ f i ∈ t) 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {δ : α → Type u_3} [(a : α) → DecidableEq (δ a)] (s : (i : α) → Finset (δ i)) (i : α) {t : Finset (δ i)} (hts : t ⊆ s i)
Goal: Fintype.piFinset (Function.update s i t) = Finset.filter (fun f => f i ∈ t) (Fintype.piFinset s)
-- Fintype.piFinset_update_singleton_eq_filter_piFinset_eq
lemma piFinset_update_singleton_eq_filter_piFinset_eq (s : ∀ i, Finset (δ i)) (i : α) {a : δ i}
    (ha : a ∈ s i) :
    piFinset (Function.update s i {a}) = (piFinset s).filter (fun f ↦ f i = a) 
Arguments: {α : Type u_1} [DecidableEq α] [Fintype α] {δ : α → Type u_3} [(a : α) → DecidableEq (δ a)] (s : (i : α) → Finset (δ i)) (i : α) {a : δ i} (ha : a ∈ s i)
Goal: Fintype.piFinset (Function.update s i {a}) = Finset.filter (fun f => f i = a) (Fintype.piFinset s)
-- Fintype.piFinset_univ
@[simp]
theorem Fintype.piFinset_univ {α : Type*} {β : α → Type*} [DecidableEq α] [Fintype α]
    [∀ a, Fintype (β a)] :
    (Fintype.piFinset fun a : α => (Finset.univ : Finset (β a))) =
      (Finset.univ : Finset (∀ a, β a)) 
Arguments: {α : Type u_2} {β : α → Type u_3} [DecidableEq α] [Fintype α] [(a : α) → Fintype (β a)]
Goal: (Fintype.piFinset fun a => Finset.univ) = Finset.univ
-- Finset.univ_pi_univ
@[simp]
theorem Finset.univ_pi_univ {α : Type*} {β : α → Type*} [DecidableEq α] [Fintype α]
    [∀ a, Fintype (β a)] :
    (Finset.univ.pi fun a : α => (Finset.univ : Finset (β a))) = Finset.univ 
Arguments: {α : Type u_2} {β : α → Type u_3} [DecidableEq α] [Fintype α] [(a : α) → Fintype (β a)]
Goal: (Finset.univ.pi fun a => Finset.univ) = Finset.univ
-- Finset.piFinset_filter_const
lemma piFinset_filter_const [DecidableEq ι] [Fintype ι] :
    (Fintype.piFinset fun _ ↦ s).filter (∃ a ∈ s, const ι a = ·) = s.piDiag ι 
Arguments: {α : Type u_1} {ι : Type u_2} [DecidableEq (ι → α)] {s : Finset α} [DecidableEq ι] [Fintype ι]
Goal: Finset.filter (fun x => ∃ a ∈ s, Function.const ι a = x) (Fintype.piFinset fun x => s) = s.piDiag ι
-- Finset.piDiag_subset_piFinset
lemma piDiag_subset_piFinset [DecidableEq ι] [Fintype ι] :
    s.piDiag ι ⊆ Fintype.piFinset fun _ ↦ s 
Arguments: {α : Type u_1} {ι : Type u_2} [DecidableEq (ι → α)] {s : Finset α} [DecidableEq ι] [Fintype ι]
Goal: s.piDiag ι ⊆ Fintype.piFinset fun x => s
-- Matrix.dotProduct_block
theorem dotProduct_block [Fintype m] [Fintype n] [Mul α] [AddCommMonoid α] (v w : m ⊕ n → α) :
    v ⬝ᵥ w = v ∘ Sum.inl ⬝ᵥ w ∘ Sum.inl + v ∘ Sum.inr ⬝ᵥ w ∘ Sum.inr 
Arguments: {m : Type u_2} {n : Type u_3} {α : Type u_12} [Fintype m] [Fintype n] [Mul α] [AddCommMonoid α] (v w : m ⊕ n → α)
Goal: v ⬝ᵥ w = v ∘ Sum.inl ⬝ᵥ w ∘ Sum.inl + v ∘ Sum.inr ⬝ᵥ w ∘ Sum.inr
-- Matrix.fromBlocks_apply₁₁
@[simp]
theorem fromBlocks_apply₁₁ (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) (i : n) (j : l) : fromBlocks A B C D (Sum.inl i) (Sum.inl j) = A i j 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α) (i : n) (j : l)
Goal: Matrix.fromBlocks A B C D (Sum.inl i) (Sum.inl j) = A i j
-- Matrix.fromBlocks_apply₁₂
@[simp]
theorem fromBlocks_apply₁₂ (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) (i : n) (j : m) : fromBlocks A B C D (Sum.inl i) (Sum.inr j) = B i j 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α) (i : n) (j : m)
Goal: Matrix.fromBlocks A B C D (Sum.inl i) (Sum.inr j) = B i j
-- Matrix.fromBlocks_apply₂₁
@[simp]
theorem fromBlocks_apply₂₁ (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) (i : o) (j : l) : fromBlocks A B C D (Sum.inr i) (Sum.inl j) = C i j 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α) (i : o) (j : l)
Goal: Matrix.fromBlocks A B C D (Sum.inr i) (Sum.inl j) = C i j
-- Matrix.fromBlocks_apply₂₂
@[simp]
theorem fromBlocks_apply₂₂ (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) (i : o) (j : m) : fromBlocks A B C D (Sum.inr i) (Sum.inr j) = D i j 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α) (i : o) (j : m)
Goal: Matrix.fromBlocks A B C D (Sum.inr i) (Sum.inr j) = D i j
-- Matrix.fromBlocks_toBlocks
theorem fromBlocks_toBlocks (M : Matrix (n ⊕ o) (l ⊕ m) α) :
    fromBlocks M.toBlocks₁₁ M.toBlocks₁₂ M.toBlocks₂₁ M.toBlocks₂₂ = M 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} (M : Matrix (n ⊕ o) (l ⊕ m) α)
Goal: Matrix.fromBlocks M.toBlocks₁₁ M.toBlocks₁₂ M.toBlocks₂₁ M.toBlocks₂₂ = M
-- Matrix.toBlocks_fromBlocks₁₁
@[simp]
theorem toBlocks_fromBlocks₁₁ (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) : (fromBlocks A B C D).toBlocks₁₁ = A 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α)
Goal: (Matrix.fromBlocks A B C D).toBlocks₁₁ = A
-- Matrix.toBlocks_fromBlocks₁₂
@[simp]
theorem toBlocks_fromBlocks₁₂ (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) : (fromBlocks A B C D).toBlocks₁₂ = B 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α)
Goal: (Matrix.fromBlocks A B C D).toBlocks₁₂ = B
-- Matrix.toBlocks_fromBlocks₂₁
@[simp]
theorem toBlocks_fromBlocks₂₁ (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) : (fromBlocks A B C D).toBlocks₂₁ = C 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α)
Goal: (Matrix.fromBlocks A B C D).toBlocks₂₁ = C
-- Matrix.toBlocks_fromBlocks₂₂
@[simp]
theorem toBlocks_fromBlocks₂₂ (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) : (fromBlocks A B C D).toBlocks₂₂ = D 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α)
Goal: (Matrix.fromBlocks A B C D).toBlocks₂₂ = D
-- Matrix.ext_iff_blocks
theorem ext_iff_blocks {A B : Matrix (n ⊕ o) (l ⊕ m) α} :
    A = B ↔
      A.toBlocks₁₁ = B.toBlocks₁₁ ∧
        A.toBlocks₁₂ = B.toBlocks₁₂ ∧ A.toBlocks₂₁ = B.toBlocks₂₁ ∧ A.toBlocks₂₂ = B.toBlocks₂₂ 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} {A B : Matrix (n ⊕ o) (l ⊕ m) α}
Goal: A = B ↔
  A.toBlocks₁₁ = B.toBlocks₁₁ ∧ A.toBlocks₁₂ = B.toBlocks₁₂ ∧ A.toBlocks₂₁ = B.toBlocks₂₁ ∧ A.toBlocks₂₂ = B.toBlocks₂₂
-- Matrix.fromBlocks_inj
@[simp]
theorem fromBlocks_inj {A : Matrix n l α} {B : Matrix n m α} {C : Matrix o l α} {D : Matrix o m α}
    {A' : Matrix n l α} {B' : Matrix n m α} {C' : Matrix o l α} {D' : Matrix o m α} :
    fromBlocks A B C D = fromBlocks A' B' C' D' ↔ A = A' ∧ B = B' ∧ C = C' ∧ D = D' 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} {A : Matrix n l α} {B : Matrix n m α} {C : Matrix o l α} {D : Matrix o m α} {A' : Matrix n l α} {B' : Matrix n m α} {C' : Matrix o l α} {D' : Matrix o m α}
Goal: Matrix.fromBlocks A B C D = Matrix.fromBlocks A' B' C' D' ↔ A = A' ∧ B = B' ∧ C = C' ∧ D = D'
-- Matrix.fromBlocks_map
theorem fromBlocks_map (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α)
    (f : α → β) : (fromBlocks A B C D).map f =
      fromBlocks (A.map f) (B.map f) (C.map f) (D.map f) 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} {β : Type u_13} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α) (f : α → β)
Goal: (Matrix.fromBlocks A B C D).map f = Matrix.fromBlocks (A.map f) (B.map f) (C.map f) (D.map f)
-- Matrix.fromBlocks_transpose
theorem fromBlocks_transpose (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) : (fromBlocks A B C D)ᵀ = fromBlocks Aᵀ Cᵀ Bᵀ Dᵀ 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α)
Goal: (Matrix.fromBlocks A B C D)ᵀ = Matrix.fromBlocks Aᵀ Cᵀ Bᵀ Dᵀ
-- Matrix.fromBlocks_conjTranspose
theorem fromBlocks_conjTranspose [Star α] (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) : (fromBlocks A B C D)ᴴ = fromBlocks Aᴴ Cᴴ Bᴴ Dᴴ 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} [Star α] (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α)
Goal: (Matrix.fromBlocks A B C D)ᴴ = Matrix.fromBlocks Aᴴ Cᴴ Bᴴ Dᴴ
-- Matrix.fromBlocks_submatrix_sum_swap_left
@[simp]
theorem fromBlocks_submatrix_sum_swap_left (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) (f : p → l ⊕ m) :
    (fromBlocks A B C D).submatrix Sum.swap f = (fromBlocks C D A B).submatrix id f 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {p : Type u_5} {α : Type u_12} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α) (f : p → l ⊕ m)
Goal: (Matrix.fromBlocks A B C D).submatrix Sum.swap f = (Matrix.fromBlocks C D A B).submatrix id f
-- Matrix.fromBlocks_submatrix_sum_swap_right
@[simp]
theorem fromBlocks_submatrix_sum_swap_right (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) (f : p → n ⊕ o) :
    (fromBlocks A B C D).submatrix f Sum.swap = (fromBlocks B A D C).submatrix f id 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {p : Type u_5} {α : Type u_12} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α) (f : p → n ⊕ o)
Goal: (Matrix.fromBlocks A B C D).submatrix f Sum.swap = (Matrix.fromBlocks B A D C).submatrix f id
-- Matrix.fromBlocks_submatrix_sum_swap_sum_swap
theorem fromBlocks_submatrix_sum_swap_sum_swap {l m n o α : Type*} (A : Matrix n l α)
    (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α) :
    (fromBlocks A B C D).submatrix Sum.swap Sum.swap = fromBlocks D C B A 
Arguments: {l : Type u_14} {m : Type u_15} {n : Type u_16} {o : Type u_17} {α : Type u_18} (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α)
Goal: (Matrix.fromBlocks A B C D).submatrix Sum.swap Sum.swap = Matrix.fromBlocks D C B A
-- Matrix.toBlock_apply
@[simp]
theorem toBlock_apply (M : Matrix m n α) (p : m → Prop) (q : n → Prop) (i : { a // p a })
    (j : { a // q a }) : toBlock M p q i j = M ↑i ↑j 
Arguments: {m : Type u_2} {n : Type u_3} {α : Type u_12} (M : Matrix m n α) (p : m → Prop) (q : n → Prop) (i : { a // p a }) (j : { a // q a })
Goal: M.toBlock p q i j = M ↑i ↑j
-- Matrix.toSquareBlockProp_def
theorem toSquareBlockProp_def (M : Matrix m m α) (p : m → Prop) :
    -- Porting note: added missing `of`
    toSquareBlockProp M p = of (fun i j : { a // p a } => M ↑i ↑j) 
Arguments: {m : Type u_2} {α : Type u_12} (M : Matrix m m α) (p : m → Prop)
Goal: M.toSquareBlockProp p = Matrix.of fun i j => M ↑i ↑j
-- Matrix.toSquareBlock_def
theorem toSquareBlock_def (M : Matrix m m α) (b : m → β) (k : β) :
    -- Porting note: added missing `of`
    toSquareBlock M b k = of (fun i j : { a // b a = k } => M ↑i ↑j) 
Arguments: {m : Type u_2} {α : Type u_12} {β : Type u_13} (M : Matrix m m α) (b : m → β) (k : β)
Goal: M.toSquareBlock b k = Matrix.of fun i j => M ↑i ↑j
-- Matrix.fromBlocks_smul
theorem fromBlocks_smul [SMul R α] (x : R) (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) : x • fromBlocks A B C D = fromBlocks (x • A) (x • B) (x • C) (x • D) 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {R : Type u_10} {α : Type u_12} [SMul R α] (x : R) (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α)
Goal: x • Matrix.fromBlocks A B C D = Matrix.fromBlocks (x • A) (x • B) (x • C) (x • D)
-- Matrix.fromBlocks_neg
theorem fromBlocks_neg [Neg R] (A : Matrix n l R) (B : Matrix n m R) (C : Matrix o l R)
    (D : Matrix o m R) : -fromBlocks A B C D = fromBlocks (-A) (-B) (-C) (-D) 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {R : Type u_10} [Neg R] (A : Matrix n l R) (B : Matrix n m R) (C : Matrix o l R) (D : Matrix o m R)
Goal: -Matrix.fromBlocks A B C D = Matrix.fromBlocks (-A) (-B) (-C) (-D)
-- Matrix.fromBlocks_zero
@[simp]
theorem fromBlocks_zero [Zero α] : fromBlocks (0 : Matrix n l α) 0 0 (0 : Matrix o m α) = 0 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} [Zero α]
Goal: Matrix.fromBlocks 0 0 0 0 = 0
-- Matrix.fromBlocks_add
theorem fromBlocks_add [Add α] (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α)
    (D : Matrix o m α) (A' : Matrix n l α) (B' : Matrix n m α) (C' : Matrix o l α)
    (D' : Matrix o m α) : fromBlocks A B C D + fromBlocks A' B' C' D' =
      fromBlocks (A + A') (B + B') (C + C') (D + D') 
Arguments: {l : Type u_1} {m : Type u_2} {n : Type u_3} {o : Type u_4} {α : Type u_12} [Add α] (A : Matrix n l α) (B : Matrix n m α) (C : Matrix o l α) (D : Matrix o m α) (A' : Matrix n l α) (B' : Matrix n m α) (C' : Matrix o l α) (D' : Matrix o m α)
Goal: Matrix.fromBlocks A B C D + Matrix.fromBlocks A' B' C' D' = Matrix.fromBlocks (A + A') (B + B') (C + C') (D + D')