ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Submodule.LinearDisjoint.not_linearIndependent_pair_of_flat
theorem not_linearIndependent_pair_of_flat (hf : Module.Flat R M ∨ Module.Flat R N)
    (a b : ↥(M ⊓ N)) : ¬LinearIndependent R ![a, b] 
Arguments: {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {M N : Submodule R S} (H : M.LinearDisjoint N) [Nontrivial R] (hf : Module.Flat R ↥M ∨ Module.Flat R ↥N) (a b : ↥(M ⊓ N))
Goal: ¬LinearIndependent R ![a, b]
-- Submodule.LinearDisjoint.rank_inf_le_one_of_flat
theorem rank_inf_le_one_of_flat (hf : Module.Flat R M ∨ Module.Flat R N) :
    Module.rank R ↥(M ⊓ N) ≤ 1 
Arguments: {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {M N : Submodule R S} (H : M.LinearDisjoint N) (hf : Module.Flat R ↥M ∨ Module.Flat R ↥N)
Goal: Module.rank R ↥(M ⊓ N) ≤ 1
-- Submodule.LinearDisjoint.rank_inf_le_one_of_flat_left
theorem rank_inf_le_one_of_flat_left [Module.Flat R M] : Module.rank R ↥(M ⊓ N) ≤ 1 
Arguments: {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {M N : Submodule R S} (H : M.LinearDisjoint N) [Module.Flat R ↥M]
Goal: Module.rank R ↥(M ⊓ N) ≤ 1
-- Submodule.LinearDisjoint.rank_inf_le_one_of_flat_right
theorem rank_inf_le_one_of_flat_right [Module.Flat R N] : Module.rank R ↥(M ⊓ N) ≤ 1 
Arguments: {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {M N : Submodule R S} (H : M.LinearDisjoint N) [Module.Flat R ↥N]
Goal: Module.rank R ↥(M ⊓ N) ≤ 1
-- Submodule.LinearDisjoint.rank_le_one_of_flat_of_self
theorem rank_le_one_of_flat_of_self (H : M.LinearDisjoint M) [Module.Flat R M] :
    Module.rank R M ≤ 1 
Arguments: {R : Type u} {S : Type v} [CommRing R] [CommRing S] [Algebra R S] {M : Submodule R S} (H : M.LinearDisjoint M) [Module.Flat R ↥M]
Goal: Module.rank R ↥M ≤ 1
-- eq_bot_of_generator_maximal_map_eq_zero
theorem eq_bot_of_generator_maximal_map_eq_zero (b : Basis ι R M) {N : Submodule R M}
    {ϕ : M →ₗ[R] R} (hϕ : ∀ ψ : M →ₗ[R] R, ¬N.map ϕ < N.map ψ) [(N.map ϕ).IsPrincipal]
    (hgen : generator (N.map ϕ) = (0 : R)) : N = ⊥ 
Arguments: {R : Type u} {M : Type v} [Ring R] [AddCommGroup M] [Module R M] {ι : Type u_1} (b : Basis ι R M) {N : Submodule R M} {ϕ : M →ₗ[R] R} (hϕ : ∀ (ψ : M →ₗ[R] R), ¬Submodule.map ϕ N < Submodule.map ψ N) [(Submodule.map ϕ N).IsPrincipal] (hgen : Submodule.IsPrincipal.generator (Submodule.map ϕ N) = 0)
Goal: N = ⊥
-- eq_bot_of_generator_maximal_submoduleImage_eq_zero
theorem eq_bot_of_generator_maximal_submoduleImage_eq_zero {N O : Submodule R M} (b : Basis ι R O)
    (hNO : N ≤ O) {ϕ : O →ₗ[R] R} (hϕ : ∀ ψ : O →ₗ[R] R, ¬ϕ.submoduleImage N < ψ.submoduleImage N)
    [(ϕ.submoduleImage N).IsPrincipal] (hgen : generator (ϕ.submoduleImage N) = 0) : N = ⊥ 
Arguments: {R : Type u} {M : Type v} [Ring R] [AddCommGroup M] [Module R M] {ι : Type u_1} {N O : Submodule R M} (b : Basis ι R ↥O) (hNO : N ≤ O) {ϕ : ↥O →ₗ[R] R} (hϕ : ∀ (ψ : ↥O →ₗ[R] R), ¬ϕ.submoduleImage N < ψ.submoduleImage N) [(ϕ.submoduleImage N).IsPrincipal] (hgen : Submodule.IsPrincipal.generator (ϕ.submoduleImage N) = 0)
Goal: N = ⊥
-- dvd_generator_iff
theorem dvd_generator_iff {I : Ideal R} [I.IsPrincipal] {x : R} (hx : x ∈ I) :
    x ∣ generator I ↔ I = Ideal.span {x} 
Arguments: {R : Type u_2} [CommRing R] [IsDomain R] {I : Ideal R} [Submodule.IsPrincipal I] {x : R} (hx : x ∈ I)
Goal: x ∣ Submodule.IsPrincipal.generator I ↔ I = Ideal.span {x}
-- generator_maximal_submoduleImage_dvd
theorem generator_maximal_submoduleImage_dvd {N O : Submodule R M} (hNO : N ≤ O) {ϕ : O →ₗ[R] R}
    (hϕ : ∀ ψ : O →ₗ[R] R, ¬ϕ.submoduleImage N < ψ.submoduleImage N)
    [(ϕ.submoduleImage N).IsPrincipal] (y : M) (yN : y ∈ N)
    (ϕy_eq : ϕ ⟨y, hNO yN⟩ = generator (ϕ.submoduleImage N)) (ψ : O →ₗ[R] R) :
    generator (ϕ.submoduleImage N) ∣ ψ ⟨y, hNO yN⟩ 
Arguments: {R : Type u_2} [CommRing R] [IsDomain R] [IsPrincipalIdealRing R] {M : Type u_3} [AddCommGroup M] [Module R M] {N O : Submodule R M} (hNO : N ≤ O) {ϕ : ↥O →ₗ[R] R} (hϕ : ∀ (ψ : ↥O →ₗ[R] R), ¬ϕ.submoduleImage N < ψ.submoduleImage N) [(ϕ.submoduleImage N).IsPrincipal] (y : M) (yN : y ∈ N) (ϕy_eq : ϕ ⟨y, ⋯⟩ = Submodule.IsPrincipal.generator (ϕ.submoduleImage N)) (ψ : ↥O →ₗ[R] R)
Goal: Submodule.IsPrincipal.generator (ϕ.submoduleImage N) ∣ ψ ⟨y, ⋯⟩
-- Submodule.basis_of_pid_aux
theorem Submodule.basis_of_pid_aux [Finite ι] {O : Type*} [AddCommGroup O] [Module R O]
    (M N : Submodule R O) (b'M : Basis ι R M) (N_bot : N ≠ ⊥) (N_le_M : N ≤ M) :
    ∃ y ∈ M, ∃ a : R, a • y ∈ N ∧ ∃ M' ≤ M, ∃ N' ≤ N,
      N' ≤ M' ∧ (∀ (c : R) (z : O), z ∈ M' → c • y + z = 0 → c = 0) ∧
      (∀ (c : R) (z : O), z ∈ N' → c • a • y + z = 0 → c = 0) ∧
      ∀ (n') (bN' : Basis (Fin n') R N'),
        ∃ bN : Basis (Fin (n' + 1)) R N,
          ∀ (m') (hn'm' : n' ≤ m') (bM' : Basis (Fin m') R M'),
            ∃ (hnm : n' + 1 ≤ m' + 1) (bM : Basis (Fin (m' + 1)) R M),
              ∀ as : Fin n' → R,
                (∀ i : Fin n', (bN' i : O) = as i • (bM' (Fin.castLE hn'm' i) : O)) →
                  ∃ as' : Fin (n' + 1) → R,
                    ∀ i : Fin (n' + 1), (bN i : O) = as' i • (bM (Fin.castLE hnm i) : O) 
Arguments: {ι : Type u_1} {R : Type u_2} [CommRing R] [IsDomain R] [IsPrincipalIdealRing R] [Finite ι] {O : Type u_4} [AddCommGroup O] [Module R O] (M N : Submodule R O) (b'M : Basis ι R ↥M) (N_bot : N ≠ ⊥) (N_le_M : N ≤ M)
Goal: ∃ y ∈ M,
  ∃ a,
    a • y ∈ N ∧
      ∃ M' ≤ M,
        ∃ N' ≤ N,
          N' ≤ M' ∧
            (∀ (c : R), ∀ z ∈ M', c • y + z = 0 → c = 0) ∧
              (∀ (c : R), ∀ z ∈ N', c • a • y + z = 0 → c = 0) ∧
                ∀ (n' : ℕ) (bN' : Basis (Fin n') R ↥N'),
                  ∃ bN,
                    ∀ (m' : ℕ) (hn'm' : n' ≤ m') (bM' : Basis (Fin m') R ↥M'),
                      ∃ (hnm : n' + 1 ≤ m' + 1),
                        ∃ bM,
                          ∀ (as : Fin n' → R),
                            (∀ (i : Fin n'), ↑(bN' i) = as i • ↑(bM' (Fin.castLE hn'm' i))) →
                              ∃ as', ∀ (i : Fin (n' + 1)), ↑(bN i) = as' i • ↑(bM (Fin.castLE hnm i))
-- Submodule.nonempty_basis_of_pid
theorem Submodule.nonempty_basis_of_pid {ι : Type*} [Finite ι] (b : Basis ι R M)
    (N : Submodule R M) : ∃ n : ℕ, Nonempty (Basis (Fin n) R N) 
Arguments: {R : Type u_2} [CommRing R] [IsDomain R] [IsPrincipalIdealRing R] {M : Type u_3} [AddCommGroup M] [Module R M] {ι : Type u_4} [Finite ι] (b : Basis ι R M) (N : Submodule R M)
Goal: ∃ n, Nonempty (Basis (Fin n) R ↥N)
-- Submodule.basisOfPid_bot
theorem Submodule.basisOfPid_bot {ι : Type*} [Finite ι] (b : Basis ι R M) :
    Submodule.basisOfPid b ⊥ = ⟨0, Basis.empty _⟩ 
Arguments: {R : Type u_2} [CommRing R] [IsDomain R] [IsPrincipalIdealRing R] {M : Type u_3} [AddCommGroup M] [Module R M] {ι : Type u_4} [Finite ι] (b : Basis ι R M)
Goal: Submodule.basisOfPid b ⊥ = ⟨0, Basis.empty ↥⊥⟩
-- Module.free_of_finite_type_torsion_free
theorem Module.free_of_finite_type_torsion_free [_root_.Finite ι] {s : ι → M}
    (hs : span R (range s) = ⊤) [NoZeroSMulDivisors R M] : Module.Free R M 
Arguments: {ι : Type u_1} {R : Type u_2} [CommRing R] [IsDomain R] [IsPrincipalIdealRing R] {M : Type u_3} [AddCommGroup M] [Module R M] [Finite ι] {s : ι → M} (hs : Submodule.span R (Set.range s) = ⊤) [NoZeroSMulDivisors R M]
Goal: Module.Free R M
-- Module.free_iff_noZeroSMulDivisors
theorem Module.free_iff_noZeroSMulDivisors [Module.Finite R M] :
    Module.Free R M ↔ NoZeroSMulDivisors R M 
Arguments: {R : Type u_2} [CommRing R] [IsDomain R] [IsPrincipalIdealRing R] {M : Type u_3} [AddCommGroup M] [Module R M] [Module.Finite R M]
Goal: Module.Free R M ↔ NoZeroSMulDivisors R M
-- Basis.SmithNormalForm.snf
-- Porting note(#5171): @[nolint has_nonempty_instance]
structure Basis.SmithNormalForm (N : Submodule R M) (ι : Type*) (n : ℕ) where
    bM : Basis ι R M
    bN : Basis (Fin n) R N
    f : Fin n ↪ ι
    a : Fin n → R
    snf : ∀ i, (bN i : M) = a i • bM (f i)
Arguments: {R : Type u_2} [CommRing R] {M : Type u_3} [AddCommGroup M] [Module R M] {N : Submodule R M} {ι : Type u_4} {n : ℕ} (self : Basis.SmithNormalForm N ι n) (i : Fin n)
Goal: ↑(self.bN i) = self.a i • self.bM (self.f i)
-- Basis.SmithNormalForm.repr_eq_zero_of_nmem_range
lemma repr_eq_zero_of_nmem_range {i : ι} (hi : i ∉ Set.range snf.f) :
    snf.bM.repr m i = 0 
Arguments: {ι : Type u_1} {R : Type u_2} [CommRing R] {M : Type u_3} [AddCommGroup M] [Module R M] {n : ℕ} {N : Submodule R M} (snf : Basis.SmithNormalForm N ι n) (m : ↥N) {i : ι} (hi : i ∉ Set.range ⇑snf.f)
Goal: (snf.bM.repr ↑m) i = 0
-- Basis.SmithNormalForm.le_ker_coord_of_nmem_range
lemma le_ker_coord_of_nmem_range {i : ι} (hi : i ∉ Set.range snf.f) :
    N ≤ LinearMap.ker (snf.bM.coord i) 
Arguments: {ι : Type u_1} {R : Type u_2} [CommRing R] {M : Type u_3} [AddCommGroup M] [Module R M] {n : ℕ} {N : Submodule R M} (snf : Basis.SmithNormalForm N ι n) {i : ι} (hi : i ∉ Set.range ⇑snf.f)
Goal: N ≤ LinearMap.ker (snf.bM.coord i)
-- Basis.SmithNormalForm.repr_apply_embedding_eq_repr_smul
@[simp] lemma repr_apply_embedding_eq_repr_smul {i : Fin n} :
    snf.bM.repr m (snf.f i) = snf.bN.repr (snf.a i • m) i 
Arguments: {ι : Type u_1} {R : Type u_2} [CommRing R] {M : Type u_3} [AddCommGroup M] [Module R M] {n : ℕ} {N : Submodule R M} (snf : Basis.SmithNormalForm N ι n) (m : ↥N) {i : Fin n}
Goal: (snf.bM.repr ↑m) (snf.f i) = (snf.bN.repr (snf.a i • m)) i
-- Basis.SmithNormalForm.repr_comp_embedding_eq_smul
@[simp] lemma repr_comp_embedding_eq_smul :
    snf.bM.repr m ∘ snf.f = snf.a • (snf.bN.repr m : Fin n → R) 
Arguments: {ι : Type u_1} {R : Type u_2} [CommRing R] {M : Type u_3} [AddCommGroup M] [Module R M] {n : ℕ} {N : Submodule R M} (snf : Basis.SmithNormalForm N ι n) (m : ↥N)
Goal: ⇑(snf.bM.repr ↑m) ∘ ⇑snf.f = snf.a • ⇑(snf.bN.repr m)
-- Basis.SmithNormalForm.coord_apply_embedding_eq_smul_coord
@[simp] lemma coord_apply_embedding_eq_smul_coord {i : Fin n} :
    snf.bM.coord (snf.f i) ∘ₗ N.subtype = snf.a i • snf.bN.coord i 
Arguments: {ι : Type u_1} {R : Type u_2} [CommRing R] {M : Type u_3} [AddCommGroup M] [Module R M] {n : ℕ} {N : Submodule R M} (snf : Basis.SmithNormalForm N ι n) {i : Fin n}
Goal: snf.bM.coord (snf.f i) ∘ₗ N.subtype = snf.a i • snf.bN.coord i
-- Basis.SmithNormalForm.toMatrix_restrict_eq_toMatrix
@[simp]
lemma toMatrix_restrict_eq_toMatrix [Fintype ι] [DecidableEq ι]
    (f : M →ₗ[R] M) (hf : ∀ x, f x ∈ N) (hf' : ∀ x ∈ N, f x ∈ N := fun x _ ↦ hf x) {i : Fin n} :
    LinearMap.toMatrix snf.bN snf.bN (LinearMap.restrict f hf') i i =
    LinearMap.toMatrix snf.bM snf.bM f (snf.f i) (snf.f i) 
Arguments: {ι : Type u_1} {R : Type u_2} [CommRing R] {M : Type u_3} [AddCommGroup M] [Module R M] {n : ℕ} {N : Submodule R M} (snf : Basis.SmithNormalForm N ι n) [Fintype ι] [DecidableEq ι] (f : M →ₗ[R] M) (hf : ∀ (x : M), f x ∈ N) (hf' : ∀ x ∈ N, f x ∈ N := ⋯) {i : Fin n}
Goal: (LinearMap.toMatrix snf.bN snf.bN) (f.restrict hf') i i = (LinearMap.toMatrix snf.bM snf.bM) f (snf.f i) (snf.f i)
-- Submodule.exists_smith_normal_form_of_le
theorem Submodule.exists_smith_normal_form_of_le [Finite ι] (b : Basis ι R M) (N O : Submodule R M)
    (N_le_O : N ≤ O) :
    ∃ (n o : ℕ) (hno : n ≤ o) (bO : Basis (Fin o) R O) (bN : Basis (Fin n) R N) (a : Fin n → R),
      ∀ i, (bN i : M) = a i • bO (Fin.castLE hno i) 
Arguments: {ι : Type u_1} {R : Type u_2} [CommRing R] [IsDomain R] [IsPrincipalIdealRing R] {M : Type u_3} [AddCommGroup M] [Module R M] [Finite ι] (b : Basis ι R M) (N O : Submodule R M) (N_le_O : N ≤ O)
Goal: ∃ n o, ∃ (hno : n ≤ o), ∃ bO bN a, ∀ (i : Fin n), ↑(bN i) = a i • ↑(bO (Fin.castLE hno i))
-- Ideal.exists_smith_normal_form
theorem Ideal.exists_smith_normal_form (b : Basis ι R S) (I : Ideal S) (hI : I ≠ ⊥) :
    ∃ (b' : Basis ι R S) (a : ι → R) (ab' : Basis ι R I), ∀ i, (ab' i : S) = a i • b' i 
Arguments: {ι : Type u_1} {R : Type u_2} [CommRing R] [IsDomain R] [IsPrincipalIdealRing R] {S : Type u_4} [CommRing S] [IsDomain S] [Algebra R S] [Finite ι] (b : Basis ι R S) (I : Ideal S) (hI : I ≠ ⊥)
Goal: ∃ b' a ab', ∀ (i : ι), ↑(ab' i) = a i • b' i
-- Ideal.selfBasis_def
@[simp]
theorem Ideal.selfBasis_def (b : Basis ι R S) (I : Ideal S) (hI : I ≠ ⊥) :
    ∀ i, (Ideal.selfBasis b I hI i : S) = Ideal.smithCoeffs b I hI i • Ideal.ringBasis b I hI i 
Arguments: {ι : Type u_1} {R : Type u_2} [CommRing R] [IsDomain R] [IsPrincipalIdealRing R] {S : Type u_4} [CommRing S] [IsDomain S] [Algebra R S] [Finite ι] (b : Basis ι R S) (I : Ideal S) (hI : I ≠ ⊥) (i : ι)
Goal: ↑((Ideal.selfBasis b I hI) i) = Ideal.smithCoeffs b I hI i • (Ideal.ringBasis b I hI) i
-- Ideal.smithCoeffs_ne_zero
@[simp]
theorem Ideal.smithCoeffs_ne_zero (b : Basis ι R S) (I : Ideal S) (hI : I ≠ ⊥) (i) :
    Ideal.smithCoeffs b I hI i ≠ 0 
Arguments: {ι : Type u_1} {R : Type u_2} [CommRing R] [IsDomain R] [IsPrincipalIdealRing R] {S : Type u_4} [CommRing S] [IsDomain S] [Algebra R S] [Finite ι] (b : Basis ι R S) (I : Ideal S) (hI : I ≠ ⊥) (i : ι)
Goal: Ideal.smithCoeffs b I hI i ≠ 0
-- LinearIndependent.restrict_scalars_algebras
theorem LinearIndependent.restrict_scalars_algebras {R S M ι : Type*} [CommSemiring R] [Semiring S]
    [AddCommMonoid M] [Algebra R S] [Module R M] [Module S M] [IsScalarTower R S M]
    (hinj : Function.Injective (algebraMap R S)) {v : ι → M} (li : LinearIndependent S v) :
    LinearIndependent R v 
Arguments: {R : Type u_1} {S : Type u_2} {M : Type u_3} {ι : Type u_4} [CommSemiring R] [Semiring S] [AddCommMonoid M] [Algebra R S] [Module R M] [Module S M] [IsScalarTower R S M] (hinj : Function.Injective ⇑(algebraMap R S)) {v : ι → M} (li : LinearIndependent S v)
Goal: LinearIndependent R v
-- LinearMap.BilinForm.isOrtho_def
theorem isOrtho_def {B : BilinForm R M} {x y : M} : B.IsOrtho x y ↔ B x y = 0 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {B : LinearMap.BilinForm R M} {x y : M}
Goal: B.IsOrtho x y ↔ (B x) y = 0
-- LinearMap.BilinForm.isOrtho_zero_left
theorem isOrtho_zero_left (x : M) : IsOrtho B (0 : M) x 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {B : LinearMap.BilinForm R M} (x : M)
Goal: B.IsOrtho 0 x
-- LinearMap.BilinForm.isOrtho_zero_right
theorem isOrtho_zero_right (x : M) : IsOrtho B x (0 : M) 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {B : LinearMap.BilinForm R M} (x : M)
Goal: B.IsOrtho x 0
-- LinearMap.BilinForm.ne_zero_of_not_isOrtho_self
theorem ne_zero_of_not_isOrtho_self {B : BilinForm K V} (x : V) (hx₁ : ¬B.IsOrtho x x) : x ≠ 0 
Arguments: {V : Type u_5} {K : Type u_6} [Field K] [AddCommGroup V] [Module K V] {B : LinearMap.BilinForm K V} (x : V) (hx₁ : ¬B.IsOrtho x x)
Goal: x ≠ 0
-- LinearMap.BilinForm.IsRefl.ortho_comm
theorem IsRefl.ortho_comm (H : B.IsRefl) {x y : M} : IsOrtho B x y ↔ IsOrtho B y x 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {B : LinearMap.BilinForm R M} (H : B.IsRefl) {x y : M}
Goal: B.IsOrtho x y ↔ B.IsOrtho y x
-- LinearMap.BilinForm.IsAlt.ortho_comm
theorem IsAlt.ortho_comm (H : B₁.IsAlt) {x y : M₁} : IsOrtho B₁ x y ↔ IsOrtho B₁ y x 
Arguments: {R₁ : Type u_3} {M₁ : Type u_4} [CommRing R₁] [AddCommGroup M₁] [Module R₁ M₁] {B₁ : LinearMap.BilinForm R₁ M₁} (H : B₁.IsAlt) {x y : M₁}
Goal: B₁.IsOrtho x y ↔ B₁.IsOrtho y x
-- LinearMap.BilinForm.IsSymm.ortho_comm
theorem IsSymm.ortho_comm (H : B.IsSymm) {x y : M} : IsOrtho B x y ↔ IsOrtho B y x 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {B : LinearMap.BilinForm R M} (H : B.IsSymm) {x y : M}
Goal: B.IsOrtho x y ↔ B.IsOrtho y x
-- LinearMap.BilinForm.iIsOrtho_def
theorem iIsOrtho_def {n : Type w} {B : BilinForm R M} {v : n → M} :
    B.iIsOrtho v ↔ ∀ i j : n, i ≠ j → B (v i) (v j) = 0 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {n : Type w} {B : LinearMap.BilinForm R M} {v : n → M}
Goal: B.iIsOrtho v ↔ ∀ (i j : n), i ≠ j → (B (v i)) (v j) = 0
-- LinearMap.BilinForm.isOrtho_smul_left
@[simp]
theorem isOrtho_smul_left {x y : M₄} {a : R₄} (ha : a ≠ 0) :
    IsOrtho G (a • x) y ↔ IsOrtho G x y 
Arguments: {R₄ : Type u_7} {M₄ : Type u_8} [CommRing R₄] [IsDomain R₄] [AddCommGroup M₄] [Module R₄ M₄] {G : LinearMap.BilinForm R₄ M₄} {x y : M₄} {a : R₄} (ha : a ≠ 0)
Goal: G.IsOrtho (a • x) y ↔ G.IsOrtho x y
-- LinearMap.BilinForm.isOrtho_smul_right
@[simp]
theorem isOrtho_smul_right {x y : M₄} {a : R₄} (ha : a ≠ 0) :
    IsOrtho G x (a • y) ↔ IsOrtho G x y 
Arguments: {R₄ : Type u_7} {M₄ : Type u_8} [CommRing R₄] [IsDomain R₄] [AddCommGroup M₄] [Module R₄ M₄] {G : LinearMap.BilinForm R₄ M₄} {x y : M₄} {a : R₄} (ha : a ≠ 0)
Goal: G.IsOrtho x (a • y) ↔ G.IsOrtho x y
-- LinearMap.BilinForm.linearIndependent_of_iIsOrtho
theorem linearIndependent_of_iIsOrtho {n : Type w} {B : BilinForm K V} {v : n → V}
    (hv₁ : B.iIsOrtho v) (hv₂ : ∀ i, ¬B.IsOrtho (v i) (v i)) : LinearIndependent K v 
Arguments: {V : Type u_5} {K : Type u_6} [Field K] [AddCommGroup V] [Module K V] {n : Type w} {B : LinearMap.BilinForm K V} {v : n → V} (hv₁ : B.iIsOrtho v) (hv₂ : ∀ (i : n), ¬B.IsOrtho (v i) (v i))
Goal: LinearIndependent K v
-- LinearMap.BilinForm.mem_orthogonal_iff
@[simp]
theorem mem_orthogonal_iff {N : Submodule R M} {m : M} :
    m ∈ B.orthogonal N ↔ ∀ n ∈ N, IsOrtho B n m 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {B : LinearMap.BilinForm R M} {N : Submodule R M} {m : M}
Goal: m ∈ B.orthogonal N ↔ ∀ n ∈ N, B.IsOrtho n m
-- LinearMap.BilinForm.orthogonal_bot
@[simp] lemma orthogonal_bot : B.orthogonal ⊥ = ⊤ 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {B : LinearMap.BilinForm R M}
Goal: B.orthogonal ⊥ = ⊤
-- LinearMap.BilinForm.orthogonal_le
theorem orthogonal_le (h : N ≤ L) : B.orthogonal L ≤ B.orthogonal N 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {B : LinearMap.BilinForm R M} {N L : Submodule R M} (h : N ≤ L)
Goal: B.orthogonal L ≤ B.orthogonal N
-- LinearMap.BilinForm.le_orthogonal_orthogonal
theorem le_orthogonal_orthogonal (b : B.IsRefl) : N ≤ B.orthogonal (B.orthogonal N) 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {B : LinearMap.BilinForm R M} {N : Submodule R M} (b : B.IsRefl)
Goal: N ≤ B.orthogonal (B.orthogonal N)
-- LinearMap.BilinForm.orthogonal_top
lemma orthogonal_top (hB : B.Nondegenerate) (hB₀ : B.IsRefl) :
    B.orthogonal ⊤ = ⊥ 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {B : LinearMap.BilinForm R M} (hB : B.Nondegenerate) (hB₀ : B.IsRefl)
Goal: B.orthogonal ⊤ = ⊥
-- LinearMap.BilinForm.span_singleton_inf_orthogonal_eq_bot
theorem span_singleton_inf_orthogonal_eq_bot {B : BilinForm K V} {x : V} (hx : ¬B.IsOrtho x x) :
    (K ∙ x) ⊓ B.orthogonal (K ∙ x) = ⊥ 
Arguments: {V : Type u_5} {K : Type u_6} [Field K] [AddCommGroup V] [Module K V] {B : LinearMap.BilinForm K V} {x : V} (hx : ¬B.IsOrtho x x)
Goal: Submodule.span K {x} ⊓ B.orthogonal (Submodule.span K {x}) = ⊥
-- LinearMap.BilinForm.orthogonal_span_singleton_eq_toLin_ker
theorem orthogonal_span_singleton_eq_toLin_ker {B : BilinForm K V} (x : V) :
    B.orthogonal (K ∙ x) = LinearMap.ker (LinearMap.BilinForm.toLinHomAux₁ B x) 
Arguments: {V : Type u_5} {K : Type u_6} [Field K] [AddCommGroup V] [Module K V] {B : LinearMap.BilinForm K V} (x : V)
Goal: B.orthogonal (Submodule.span K {x}) = LinearMap.ker (B.toLinHomAux₁ x)
-- LinearMap.BilinForm.span_singleton_sup_orthogonal_eq_top
theorem span_singleton_sup_orthogonal_eq_top {B : BilinForm K V} {x : V} (hx : ¬B.IsOrtho x x) :
    (K ∙ x) ⊔ B.orthogonal (K ∙ x) = ⊤ 
Arguments: {V : Type u_5} {K : Type u_6} [Field K] [AddCommGroup V] [Module K V] {B : LinearMap.BilinForm K V} {x : V} (hx : ¬B.IsOrtho x x)
Goal: Submodule.span K {x} ⊔ B.orthogonal (Submodule.span K {x}) = ⊤
-- LinearMap.BilinForm.isCompl_span_singleton_orthogonal
theorem isCompl_span_singleton_orthogonal {B : BilinForm K V} {x : V} (hx : ¬B.IsOrtho x x) :
    IsCompl (K ∙ x) (B.orthogonal <| K ∙ x) 
Arguments: {V : Type u_5} {K : Type u_6} [Field K] [AddCommGroup V] [Module K V] {B : LinearMap.BilinForm K V} {x : V} (hx : ¬B.IsOrtho x x)
Goal: IsCompl (Submodule.span K {x}) (B.orthogonal (Submodule.span K {x}))
-- LinearMap.BilinForm.nondegenerate_restrict_of_disjoint_orthogonal
theorem nondegenerate_restrict_of_disjoint_orthogonal (B : BilinForm R₁ M₁) (b : B.IsRefl)
    {W : Submodule R₁ M₁} (hW : Disjoint W (B.orthogonal W)) : (B.restrict W).Nondegenerate 
Arguments: {R₁ : Type u_3} {M₁ : Type u_4} [CommRing R₁] [AddCommGroup M₁] [Module R₁ M₁] (B : LinearMap.BilinForm R₁ M₁) (b : B.IsRefl) {W : Submodule R₁ M₁} (hW : Disjoint W (B.orthogonal W))
Goal: (B.restrict W).Nondegenerate
-- LinearMap.BilinForm.iIsOrtho.not_isOrtho_basis_self_of_nondegenerate
theorem iIsOrtho.not_isOrtho_basis_self_of_nondegenerate {n : Type w} [Nontrivial R]
    {B : BilinForm R M} {v : Basis n R M} (h : B.iIsOrtho v) (hB : B.Nondegenerate) (i : n) :
    ¬B.IsOrtho (v i) (v i) 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {n : Type w} [Nontrivial R] {B : LinearMap.BilinForm R M} {v : Basis n R M} (h : B.iIsOrtho ⇑v) (hB : B.Nondegenerate) (i : n)
Goal: ¬B.IsOrtho (v i) (v i)
-- LinearMap.BilinForm.iIsOrtho.nondegenerate_iff_not_isOrtho_basis_self
theorem iIsOrtho.nondegenerate_iff_not_isOrtho_basis_self {n : Type w} [Nontrivial R]
    [NoZeroDivisors R] (B : BilinForm R M) (v : Basis n R M) (hO : B.iIsOrtho v) :
    B.Nondegenerate ↔ ∀ i, ¬B.IsOrtho (v i) (v i) 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {n : Type w} [Nontrivial R] [NoZeroDivisors R] (B : LinearMap.BilinForm R M) (v : Basis n R M) (hO : B.iIsOrtho ⇑v)
Goal: B.Nondegenerate ↔ ∀ (i : n), ¬B.IsOrtho (v i) (v i)
-- LinearMap.BilinForm.toLin_restrict_ker_eq_inf_orthogonal
theorem toLin_restrict_ker_eq_inf_orthogonal (B : BilinForm K V) (W : Subspace K V) (b : B.IsRefl) :
    (B.domRestrict W).ker.map W.subtype = (W ⊓ B.orthogonal ⊤ : Subspace K V) 
Arguments: {V : Type u_5} {K : Type u_6} [Field K] [AddCommGroup V] [Module K V] (B : LinearMap.BilinForm K V) (W : Subspace K V) (b : B.IsRefl)
Goal: Submodule.map (Submodule.subtype W) (LinearMap.ker (LinearMap.domRestrict B W)) = W ⊓ B.orthogonal ⊤
-- LinearMap.BilinForm.toLin_restrict_range_dualCoannihilator_eq_orthogonal
theorem toLin_restrict_range_dualCoannihilator_eq_orthogonal (B : BilinForm K V)
    (W : Subspace K V) : (B.domRestrict W).range.dualCoannihilator = B.orthogonal W 
Arguments: {V : Type u_5} {K : Type u_6} [Field K] [AddCommGroup V] [Module K V] (B : LinearMap.BilinForm K V) (W : Subspace K V)
Goal: (LinearMap.range (LinearMap.domRestrict B W)).dualCoannihilator = B.orthogonal W
-- LinearMap.BilinForm.ker_restrict_eq_of_codisjoint
lemma ker_restrict_eq_of_codisjoint {p q : Submodule R M} (hpq : Codisjoint p q)
    {B : LinearMap.BilinForm R M} (hB : ∀ x ∈ p, ∀ y ∈ q, B x y = 0) :
    LinearMap.ker (B.restrict p) = (LinearMap.ker B).comap p.subtype 
Arguments: {R : Type u_1} {M : Type u_2} [CommSemiring R] [AddCommMonoid M] [Module R M] {p q : Submodule R M} (hpq : Codisjoint p q) {B : LinearMap.BilinForm R M} (hB : ∀ x ∈ p, ∀ y ∈ q, (B x) y = 0)
Goal: LinearMap.ker (B.restrict p) = Submodule.comap p.subtype (LinearMap.ker B)
-- LinearMap.BilinForm.finrank_add_finrank_orthogonal
theorem finrank_add_finrank_orthogonal (b₁ : B.IsRefl) (W : Submodule K V) :
    finrank K W + finrank K (B.orthogonal W) =
      finrank K V + finrank K (W ⊓ B.orthogonal ⊤ : Subspace K V) 
Arguments: {V : Type u_5} {K : Type u_6} [Field K] [AddCommGroup V] [Module K V] [FiniteDimensional K V] {B : LinearMap.BilinForm K V} (b₁ : B.IsRefl) (W : Submodule K V)
Goal: FiniteDimensional.finrank K ↥W + FiniteDimensional.finrank K ↥(B.orthogonal W) =
  FiniteDimensional.finrank K V + FiniteDimensional.finrank K ↥(W ⊓ B.orthogonal ⊤)
-- LinearMap.BilinForm.finrank_orthogonal
lemma finrank_orthogonal (hB : B.Nondegenerate) (hB₀ : B.IsRefl) (W : Submodule K V) :
    finrank K (B.orthogonal W) = finrank K V - finrank K W 
Arguments: {V : Type u_5} {K : Type u_6} [Field K] [AddCommGroup V] [Module K V] [FiniteDimensional K V] {B : LinearMap.BilinForm K V} (hB : B.Nondegenerate) (hB₀ : B.IsRefl) (W : Submodule K V)
Goal: FiniteDimensional.finrank K ↥(B.orthogonal W) = FiniteDimensional.finrank K V - FiniteDimensional.finrank K ↥W