ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Module.DualBases.basis_repr_apply
@[simps]
def basis : Basis ι R M 
Arguments: {R : Type u_1} {M : Type u_2} {ι : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] {e : ι → M} {ε : ι → Module.Dual R M} [DecidableEq ι] (h : Module.DualBases e ε) (m : M)
Goal: h.basis.repr m = h.coeffs m
-- Module.DualBases.basis_repr_symm_apply
@[simps]
def basis : Basis ι R M 
Arguments: {R : Type u_1} {M : Type u_2} {ι : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] {e : ι → M} {ε : ι → Module.Dual R M} [DecidableEq ι] (h : Module.DualBases e ε) (l : ι →₀ R)
Goal: h.basis.repr.symm l = Module.DualBases.lc e l
-- Module.DualBases.coe_basis
@[simp]
theorem coe_basis : ⇑h.basis = e 
Arguments: {R : Type u_1} {M : Type u_2} {ι : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] {e : ι → M} {ε : ι → Module.Dual R M} [DecidableEq ι] (h : Module.DualBases e ε)
Goal: ⇑h.basis = e
-- Module.DualBases.mem_of_mem_span
theorem mem_of_mem_span {H : Set ι} {x : M} (hmem : x ∈ Submodule.span R (e '' H)) :
    ∀ i : ι, ε i x ≠ 0 → i ∈ H 
Arguments: {R : Type u_1} {M : Type u_2} {ι : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] {e : ι → M} {ε : ι → Module.Dual R M} [DecidableEq ι] (h : Module.DualBases e ε) {H : Set ι} {x : M} (hmem : x ∈ Submodule.span R (e '' H)) (i : ι)
Goal: (ε i) x ≠ 0 → i ∈ H
-- Module.DualBases.coe_dualBasis
theorem coe_dualBasis [_root_.Finite ι] : ⇑h.basis.dualBasis = ε 
Arguments: {R : Type u_1} {M : Type u_2} {ι : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] {e : ι → M} {ε : ι → Module.Dual R M} [DecidableEq ι] (h : Module.DualBases e ε) [Finite ι]
Goal: ⇑h.basis.dualBasis = ε
-- Submodule.dualRestrict_def
theorem dualRestrict_def (W : Submodule R M) : W.dualRestrict = W.subtype.dualMap 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (W : Submodule R M)
Goal: W.dualRestrict = W.subtype.dualMap
-- Submodule.dualRestrict_apply
@[simp]
theorem dualRestrict_apply (W : Submodule R M) (φ : Module.Dual R M) (x : W) :
    W.dualRestrict φ x = φ (x : M) 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (W : Submodule R M) (φ : Module.Dual R M) (x : ↥W)
Goal: (W.dualRestrict φ) x = φ ↑x
-- Submodule.mem_dualAnnihilator
@[simp]
theorem mem_dualAnnihilator (φ : Module.Dual R M) : φ ∈ W.dualAnnihilator ↔ ∀ w ∈ W, φ w = 0 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {W : Submodule R M} (φ : Module.Dual R M)
Goal: φ ∈ W.dualAnnihilator ↔ ∀ w ∈ W, φ w = 0
-- Submodule.dualRestrict_ker_eq_dualAnnihilator
theorem dualRestrict_ker_eq_dualAnnihilator (W : Submodule R M) :
    -- Porting note (#11036): broken dot notation lean4#1910 LinearMap.ker
    LinearMap.ker W.dualRestrict = W.dualAnnihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (W : Submodule R M)
Goal: LinearMap.ker W.dualRestrict = W.dualAnnihilator
-- Submodule.mem_dualCoannihilator
@[simp]
theorem mem_dualCoannihilator {Φ : Submodule R (Module.Dual R M)} (x : M) :
    x ∈ Φ.dualCoannihilator ↔ ∀ φ ∈ Φ, (φ x : R) = 0 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {Φ : Submodule R (Module.Dual R M)} (x : M)
Goal: x ∈ Φ.dualCoannihilator ↔ ∀ φ ∈ Φ, φ x = 0
-- Submodule.comap_dualAnnihilator
theorem comap_dualAnnihilator (Φ : Submodule R (Module.Dual R M)) :
    Φ.dualAnnihilator.comap (Module.Dual.eval R M) = Φ.dualCoannihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (Φ : Submodule R (Module.Dual R M))
Goal: Submodule.comap (Module.Dual.eval R M) Φ.dualAnnihilator = Φ.dualCoannihilator
-- Submodule.map_dualCoannihilator_le
theorem map_dualCoannihilator_le (Φ : Submodule R (Module.Dual R M)) :
    Φ.dualCoannihilator.map (Module.Dual.eval R M) ≤ Φ.dualAnnihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (Φ : Submodule R (Module.Dual R M))
Goal: Submodule.map (Module.Dual.eval R M) Φ.dualCoannihilator ≤ Φ.dualAnnihilator
-- Submodule.dualAnnihilator_gc
theorem dualAnnihilator_gc :
    GaloisConnection
      (OrderDual.toDual ∘ (dualAnnihilator : Submodule R M → Submodule R (Module.Dual R M)))
      (dualCoannihilator ∘ OrderDual.ofDual) 
Arguments: (R : Type u) (M : Type v) [CommSemiring R] [AddCommMonoid M] [Module R M]
Goal: GaloisConnection (⇑OrderDual.toDual ∘ Submodule.dualAnnihilator) (Submodule.dualCoannihilator ∘ ⇑OrderDual.ofDual)
-- Submodule.le_dualAnnihilator_iff_le_dualCoannihilator
theorem le_dualAnnihilator_iff_le_dualCoannihilator {U : Submodule R (Module.Dual R M)}
    {V : Submodule R M} : U ≤ V.dualAnnihilator ↔ V ≤ U.dualCoannihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {U : Submodule R (Module.Dual R M)} {V : Submodule R M}
Goal: U ≤ V.dualAnnihilator ↔ V ≤ U.dualCoannihilator
-- Submodule.dualAnnihilator_bot
@[simp]
theorem dualAnnihilator_bot : (⊥ : Submodule R M).dualAnnihilator = ⊤ 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M]
Goal: ⊥.dualAnnihilator = ⊤
-- Submodule.dualAnnihilator_top
@[simp]
theorem dualAnnihilator_top : (⊤ : Submodule R M).dualAnnihilator = ⊥ 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M]
Goal: ⊤.dualAnnihilator = ⊥
-- Submodule.dualCoannihilator_bot
@[simp]
theorem dualCoannihilator_bot : (⊥ : Submodule R (Module.Dual R M)).dualCoannihilator = ⊤ 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M]
Goal: ⊥.dualCoannihilator = ⊤
-- Submodule.dualAnnihilator_anti
@[mono]
theorem dualAnnihilator_anti {U V : Submodule R M} (hUV : U ≤ V) :
    V.dualAnnihilator ≤ U.dualAnnihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {U V : Submodule R M} (hUV : U ≤ V)
Goal: V.dualAnnihilator ≤ U.dualAnnihilator
-- Submodule.dualCoannihilator_anti
@[mono]
theorem dualCoannihilator_anti {U V : Submodule R (Module.Dual R M)} (hUV : U ≤ V) :
    V.dualCoannihilator ≤ U.dualCoannihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {U V : Submodule R (Module.Dual R M)} (hUV : U ≤ V)
Goal: V.dualCoannihilator ≤ U.dualCoannihilator
-- Submodule.le_dualAnnihilator_dualCoannihilator
theorem le_dualAnnihilator_dualCoannihilator (U : Submodule R M) :
    U ≤ U.dualAnnihilator.dualCoannihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (U : Submodule R M)
Goal: U ≤ U.dualAnnihilator.dualCoannihilator
-- Submodule.le_dualCoannihilator_dualAnnihilator
theorem le_dualCoannihilator_dualAnnihilator (U : Submodule R (Module.Dual R M)) :
    U ≤ U.dualCoannihilator.dualAnnihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (U : Submodule R (Module.Dual R M))
Goal: U ≤ U.dualCoannihilator.dualAnnihilator
-- Submodule.dualAnnihilator_dualCoannihilator_dualAnnihilator
theorem dualAnnihilator_dualCoannihilator_dualAnnihilator (U : Submodule R M) :
    U.dualAnnihilator.dualCoannihilator.dualAnnihilator = U.dualAnnihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (U : Submodule R M)
Goal: U.dualAnnihilator.dualCoannihilator.dualAnnihilator = U.dualAnnihilator
-- Submodule.dualCoannihilator_dualAnnihilator_dualCoannihilator
theorem dualCoannihilator_dualAnnihilator_dualCoannihilator (U : Submodule R (Module.Dual R M)) :
    U.dualCoannihilator.dualAnnihilator.dualCoannihilator = U.dualCoannihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (U : Submodule R (Module.Dual R M))
Goal: U.dualCoannihilator.dualAnnihilator.dualCoannihilator = U.dualCoannihilator
-- Submodule.dualAnnihilator_sup_eq
theorem dualAnnihilator_sup_eq (U V : Submodule R M) :
    (U ⊔ V).dualAnnihilator = U.dualAnnihilator ⊓ V.dualAnnihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (U V : Submodule R M)
Goal: (U ⊔ V).dualAnnihilator = U.dualAnnihilator ⊓ V.dualAnnihilator
-- Submodule.dualCoannihilator_sup_eq
theorem dualCoannihilator_sup_eq (U V : Submodule R (Module.Dual R M)) :
    (U ⊔ V).dualCoannihilator = U.dualCoannihilator ⊓ V.dualCoannihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (U V : Submodule R (Module.Dual R M))
Goal: (U ⊔ V).dualCoannihilator = U.dualCoannihilator ⊓ V.dualCoannihilator
-- Submodule.dualAnnihilator_iSup_eq
theorem dualAnnihilator_iSup_eq {ι : Sort*} (U : ι → Submodule R M) :
    (⨆ i : ι, U i).dualAnnihilator = ⨅ i : ι, (U i).dualAnnihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {ι : Sort u_1} (U : ι → Submodule R M)
Goal: (⨆ i, U i).dualAnnihilator = ⨅ i, (U i).dualAnnihilator
-- Submodule.dualCoannihilator_iSup_eq
theorem dualCoannihilator_iSup_eq {ι : Sort*} (U : ι → Submodule R (Module.Dual R M)) :
    (⨆ i : ι, U i).dualCoannihilator = ⨅ i : ι, (U i).dualCoannihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {ι : Sort u_1} (U : ι → Submodule R (Module.Dual R M))
Goal: (⨆ i, U i).dualCoannihilator = ⨅ i, (U i).dualCoannihilator
-- Submodule.sup_dualAnnihilator_le_inf
theorem sup_dualAnnihilator_le_inf (U V : Submodule R M) :
    U.dualAnnihilator ⊔ V.dualAnnihilator ≤ (U ⊓ V).dualAnnihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] (U V : Submodule R M)
Goal: U.dualAnnihilator ⊔ V.dualAnnihilator ≤ (U ⊓ V).dualAnnihilator
-- Submodule.iSup_dualAnnihilator_le_iInf
theorem iSup_dualAnnihilator_le_iInf {ι : Sort*} (U : ι → Submodule R M) :
    ⨆ i : ι, (U i).dualAnnihilator ≤ (⨅ i : ι, U i).dualAnnihilator 
Arguments: {R : Type u} {M : Type v} [CommSemiring R] [AddCommMonoid M] [Module R M] {ι : Sort u_1} (U : ι → Submodule R M)
Goal: ⨆ i, (U i).dualAnnihilator ≤ (⨅ i, U i).dualAnnihilator
-- Subspace.dualCoannihilator_top
@[simp]
theorem dualCoannihilator_top (W : Subspace K V) :
    (⊤ : Subspace K (Module.Dual K W)).dualCoannihilator = ⊥ 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] (W : Subspace K V)
Goal: Submodule.dualCoannihilator ⊤ = ⊥
-- Subspace.dualAnnihilator_dualCoannihilator_eq
@[simp]
theorem dualAnnihilator_dualCoannihilator_eq {W : Subspace K V} :
    W.dualAnnihilator.dualCoannihilator = W 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] {W : Subspace K V}
Goal: (Submodule.dualAnnihilator W).dualCoannihilator = W
-- Subspace.forall_mem_dualAnnihilator_apply_eq_zero_iff
theorem forall_mem_dualAnnihilator_apply_eq_zero_iff (W : Subspace K V) (v : V) :
    (∀ φ : Module.Dual K V, φ ∈ W.dualAnnihilator → φ v = 0) ↔ v ∈ W 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] (W : Subspace K V) (v : V)
Goal: (∀ φ ∈ Submodule.dualAnnihilator W, φ v = 0) ↔ v ∈ W
-- Subspace.comap_dualAnnihilator_dualAnnihilator
theorem comap_dualAnnihilator_dualAnnihilator (W : Subspace K V) :
    W.dualAnnihilator.dualAnnihilator.comap (Module.Dual.eval K V) = W 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] (W : Subspace K V)
Goal: Submodule.comap (Module.Dual.eval K V) (Submodule.dualAnnihilator W).dualAnnihilator = W
-- Subspace.map_le_dualAnnihilator_dualAnnihilator
theorem map_le_dualAnnihilator_dualAnnihilator (W : Subspace K V) :
    W.map (Module.Dual.eval K V) ≤ W.dualAnnihilator.dualAnnihilator 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] (W : Subspace K V)
Goal: Submodule.map (Module.Dual.eval K V) W ≤ (Submodule.dualAnnihilator W).dualAnnihilator
-- Subspace.dualAnnihilator_le_dualAnnihilator_iff
theorem dualAnnihilator_le_dualAnnihilator_iff {W W' : Subspace K V} :
    W.dualAnnihilator ≤ W'.dualAnnihilator ↔ W' ≤ W 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] {W W' : Subspace K V}
Goal: Submodule.dualAnnihilator W ≤ Submodule.dualAnnihilator W' ↔ W' ≤ W
-- Subspace.dualAnnihilator_inj
theorem dualAnnihilator_inj {W W' : Subspace K V} :
    W.dualAnnihilator = W'.dualAnnihilator ↔ W = W' 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] {W W' : Subspace K V}
Goal: Submodule.dualAnnihilator W = Submodule.dualAnnihilator W' ↔ W = W'
-- Subspace.dualLift_of_subtype
@[simp]
theorem dualLift_of_subtype {φ : Module.Dual K W} (w : W) : W.dualLift φ (w : V) = φ w 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] {W : Subspace K V} {φ : Module.Dual K ↥W} (w : ↥W)
Goal: (W.dualLift φ) ↑w = φ w
-- Subspace.dualLift_of_mem
theorem dualLift_of_mem {φ : Module.Dual K W} {w : V} (hw : w ∈ W) : W.dualLift φ w = φ ⟨w, hw⟩ 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] {W : Subspace K V} {φ : Module.Dual K ↥W} {w : V} (hw : w ∈ W)
Goal: (W.dualLift φ) w = φ ⟨w, hw⟩
-- Subspace.dualRestrict_comp_dualLift
@[simp]
theorem dualRestrict_comp_dualLift (W : Subspace K V) : W.dualRestrict.comp W.dualLift = 1 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] (W : Subspace K V)
Goal: Submodule.dualRestrict W ∘ₗ W.dualLift = 1
-- Subspace.dualRestrict_leftInverse
theorem dualRestrict_leftInverse (W : Subspace K V) :
    Function.LeftInverse W.dualRestrict W.dualLift 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] (W : Subspace K V)
Goal: Function.LeftInverse ⇑(Submodule.dualRestrict W) ⇑W.dualLift
-- Subspace.dualLift_rightInverse
theorem dualLift_rightInverse (W : Subspace K V) :
    Function.RightInverse W.dualLift W.dualRestrict 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] (W : Subspace K V)
Goal: Function.RightInverse ⇑W.dualLift ⇑(Submodule.dualRestrict W)
-- Subspace.dualRestrict_surjective
theorem dualRestrict_surjective : Function.Surjective W.dualRestrict 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] {W : Subspace K V}
Goal: Function.Surjective ⇑(Submodule.dualRestrict W)
-- Subspace.dualLift_injective
theorem dualLift_injective : Function.Injective W.dualLift 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] {W : Subspace K V}
Goal: Function.Injective ⇑W.dualLift
-- Subspace.quotAnnihilatorEquiv_apply
@[simp]
theorem quotAnnihilatorEquiv_apply (W : Subspace K V) (φ : Module.Dual K V) :
    W.quotAnnihilatorEquiv (Submodule.Quotient.mk φ) = W.dualRestrict φ 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] (W : Subspace K V) (φ : Module.Dual K V)
Goal: W.quotAnnihilatorEquiv (Submodule.Quotient.mk φ) = (Submodule.dualRestrict W) φ
-- Subspace.dualEquivDual_def
theorem dualEquivDual_def (W : Subspace K V) :
    W.dualEquivDual.toLinearMap = W.dualLift.rangeRestrict 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] (W : Subspace K V)
Goal: ↑W.dualEquivDual = W.dualLift.rangeRestrict
-- Subspace.dualEquivDual_apply
@[simp]
theorem dualEquivDual_apply (φ : Module.Dual K W) :
    W.dualEquivDual φ = ⟨W.dualLift φ, mem_range.2 ⟨φ, rfl⟩⟩ 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] {W : Subspace K V} (φ : Module.Dual K ↥W)
Goal: W.dualEquivDual φ = ⟨W.dualLift φ, ⋯⟩
-- Subspace.dual_finrank_eq
@[simp]
theorem dual_finrank_eq : finrank K (Module.Dual K V) = finrank K V 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V]
Goal: FiniteDimensional.finrank K (Module.Dual K V) = FiniteDimensional.finrank K V
-- Subspace.dualAnnihilator_dualAnnihilator_eq
theorem dualAnnihilator_dualAnnihilator_eq (W : Subspace K V) :
    W.dualAnnihilator.dualAnnihilator = Module.mapEvalEquiv K V W 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] [FiniteDimensional K V] (W : Subspace K V)
Goal: (Submodule.dualAnnihilator W).dualAnnihilator = (Module.mapEvalEquiv K V) W
-- Subspace.finrank_dualCoannihilator_eq
@[simp]
theorem finrank_dualCoannihilator_eq {Φ : Subspace K (Module.Dual K V)} :
    finrank K Φ.dualCoannihilator = finrank K Φ.dualAnnihilator 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] [FiniteDimensional K V] {Φ : Subspace K (Module.Dual K V)}
Goal: FiniteDimensional.finrank K ↥(Submodule.dualCoannihilator Φ) =
  FiniteDimensional.finrank K ↥(Submodule.dualAnnihilator Φ)
-- Subspace.finrank_add_finrank_dualCoannihilator_eq
theorem finrank_add_finrank_dualCoannihilator_eq (W : Subspace K (Module.Dual K V)) :
    finrank K W + finrank K W.dualCoannihilator = finrank K V 
Arguments: {K : Type u} {V : Type v} [Field K] [AddCommGroup V] [Module K V] [FiniteDimensional K V] (W : Subspace K (Module.Dual K V))
Goal: FiniteDimensional.finrank K ↥W + FiniteDimensional.finrank K ↥(Submodule.dualCoannihilator W) =
  FiniteDimensional.finrank K V
-- LinearMap.ker_dualMap_eq_dualAnnihilator_range
theorem ker_dualMap_eq_dualAnnihilator_range :
    LinearMap.ker f.dualMap = f.range.dualAnnihilator 
Arguments: {R : Type uR} [CommSemiring R] {M₁ : Type uM₁} {M₂ : Type uM₂} [AddCommMonoid M₁] [Module R M₁] [AddCommMonoid M₂] [Module R M₂] (f : M₁ →ₗ[R] M₂)
Goal: LinearMap.ker f.dualMap = (LinearMap.range f).dualAnnihilator
-- LinearMap.range_dualMap_le_dualAnnihilator_ker
theorem range_dualMap_le_dualAnnihilator_ker :
    LinearMap.range f.dualMap ≤ f.ker.dualAnnihilator 
Arguments: {R : Type uR} [CommSemiring R] {M₁ : Type uM₁} {M₂ : Type uM₂} [AddCommMonoid M₁] [Module R M₁] [AddCommMonoid M₂] [Module R M₂] (f : M₁ →ₗ[R] M₂)
Goal: LinearMap.range f.dualMap ≤ (LinearMap.ker f).dualAnnihilator
-- Submodule.dualCopairing_apply
@[simp]
theorem dualCopairing_apply {W : Submodule R M} (φ : W.dualAnnihilator) (x : M) :
    W.dualCopairing φ (Quotient.mk x) = φ x 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] {W : Submodule R M} (φ : ↥W.dualAnnihilator) (x : M)
Goal: (W.dualCopairing φ) (Submodule.Quotient.mk x) = φ x
-- Submodule.dualPairing_apply
@[simp]
theorem dualPairing_apply {W : Submodule R M} (φ : Module.Dual R M) (x : W) :
    W.dualPairing (Quotient.mk φ) x = φ x 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] {W : Submodule R M} (φ : Module.Dual R M) (x : ↥W)
Goal: (W.dualPairing (Submodule.Quotient.mk φ)) x = φ ↑x
-- Submodule.range_dualMap_mkQ_eq
theorem range_dualMap_mkQ_eq (W : Submodule R M) :
    LinearMap.range W.mkQ.dualMap = W.dualAnnihilator 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (W : Submodule R M)
Goal: LinearMap.range W.mkQ.dualMap = W.dualAnnihilator
-- Submodule.dualQuotEquivDualAnnihilator_apply
@[simp]
theorem dualQuotEquivDualAnnihilator_apply (W : Submodule R M) (φ : Module.Dual R (M ⧸ W)) (x : M) :
    dualQuotEquivDualAnnihilator W φ x = φ (Quotient.mk x) 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (W : Submodule R M) (φ : Module.Dual R (M ⧸ W)) (x : M)
Goal: (W.dualQuotEquivDualAnnihilator φ) x = φ (Submodule.Quotient.mk x)
-- Submodule.dualCopairing_eq
theorem dualCopairing_eq (W : Submodule R M) :
    W.dualCopairing = (dualQuotEquivDualAnnihilator W).symm.toLinearMap 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (W : Submodule R M)
Goal: W.dualCopairing = ↑W.dualQuotEquivDualAnnihilator.symm
-- Submodule.dualQuotEquivDualAnnihilator_symm_apply_mk
@[simp]
theorem dualQuotEquivDualAnnihilator_symm_apply_mk (W : Submodule R M) (φ : W.dualAnnihilator)
    (x : M) : (dualQuotEquivDualAnnihilator W).symm φ (Quotient.mk x) = φ x 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (W : Submodule R M) (φ : ↥W.dualAnnihilator) (x : M)
Goal: (W.dualQuotEquivDualAnnihilator.symm φ) (Submodule.Quotient.mk x) = φ x
-- Submodule.finite_dualAnnihilator_iff
theorem finite_dualAnnihilator_iff {W : Submodule R M} [Free R (M ⧸ W)] :
    Finite R W.dualAnnihilator ↔ Finite R (M ⧸ W) 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] {W : Submodule R M} [Module.Free R (M ⧸ W)]
Goal: Module.Finite R ↥W.dualAnnihilator ↔ Module.Finite R (M ⧸ W)
-- Submodule.quotDualCoannihilatorToDual_apply
@[simp]
theorem quotDualCoannihilatorToDual_apply (W : Submodule R (Dual R M)) (m : M) (w : W) :
    W.quotDualCoannihilatorToDual (Quotient.mk m) w = w.1 m 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (W : Submodule R (Module.Dual R M)) (m : M) (w : ↥W)
Goal: (W.quotDualCoannihilatorToDual (Submodule.Quotient.mk m)) w = ↑w m
-- Submodule.quotDualCoannihilatorToDual_injective
theorem quotDualCoannihilatorToDual_injective (W : Submodule R (Dual R M)) :
    Function.Injective W.quotDualCoannihilatorToDual 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (W : Submodule R (Module.Dual R M))
Goal: Function.Injective ⇑W.quotDualCoannihilatorToDual
-- Submodule.flip_quotDualCoannihilatorToDual_injective
theorem flip_quotDualCoannihilatorToDual_injective (W : Submodule R (Dual R M)) :
    Function.Injective W.quotDualCoannihilatorToDual.flip 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (W : Submodule R (Module.Dual R M))
Goal: Function.Injective ⇑W.quotDualCoannihilatorToDual.flip
-- Submodule.quotDualCoannihilatorToDual_nondegenerate
theorem quotDualCoannihilatorToDual_nondegenerate (W : Submodule R (Dual R M)) :
    W.quotDualCoannihilatorToDual.Nondegenerate 
Arguments: {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (W : Submodule R (Module.Dual R M))
Goal: W.quotDualCoannihilatorToDual.Nondegenerate
-- LinearMap.range_dualMap_eq_dualAnnihilator_ker_of_surjective
theorem range_dualMap_eq_dualAnnihilator_ker_of_surjective (f : M →ₗ[R] M')
    (hf : Function.Surjective f) : LinearMap.range f.dualMap = f.ker.dualAnnihilator 
Arguments: {R : Type u_1} {M : Type u_2} {M' : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup M'] [Module R M'] (f : M →ₗ[R] M') (hf : Function.Surjective ⇑f)
Goal: LinearMap.range f.dualMap = (LinearMap.ker f).dualAnnihilator
-- LinearMap.range_dualMap_eq_dualAnnihilator_ker_of_subtype_range_surjective
theorem range_dualMap_eq_dualAnnihilator_ker_of_subtype_range_surjective (f : M →ₗ[R] M')
    (hf : Function.Surjective f.range.subtype.dualMap) :
    LinearMap.range f.dualMap = f.ker.dualAnnihilator 
Arguments: {R : Type u_1} {M : Type u_2} {M' : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup M'] [Module R M'] (f : M →ₗ[R] M') (hf : Function.Surjective ⇑(LinearMap.range f).subtype.dualMap)
Goal: LinearMap.range f.dualMap = (LinearMap.ker f).dualAnnihilator
-- LinearMap.ker_dualMap_eq_dualCoannihilator_range
theorem ker_dualMap_eq_dualCoannihilator_range (f : M →ₗ[R] M') :
    LinearMap.ker f.dualMap = (Dual.eval R M' ∘ₗ f).range.dualCoannihilator 
Arguments: {R : Type u_1} {M : Type u_2} {M' : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup M'] [Module R M'] (f : M →ₗ[R] M')
Goal: LinearMap.ker f.dualMap = (LinearMap.range (Module.Dual.eval R M' ∘ₗ f)).dualCoannihilator
-- LinearMap.dualCoannihilator_range_eq_ker_flip
@[simp]
lemma dualCoannihilator_range_eq_ker_flip (B : M →ₗ[R] M' →ₗ[R] R) :
    (range B).dualCoannihilator = LinearMap.ker B.flip 
Arguments: {R : Type u_1} {M : Type u_2} {M' : Type u_3} [CommRing R] [AddCommGroup M] [Module R M] [AddCommGroup M'] [Module R M'] (B : M →ₗ[R] M' →ₗ[R] R)
Goal: (LinearMap.range B).dualCoannihilator = LinearMap.ker B.flip
-- Module.Dual.range_eq_top_of_ne_zero
lemma range_eq_top_of_ne_zero :
    LinearMap.range f = ⊤ 
Arguments: {K : Type uK} [Field K] {V₁ : Type uV₁} [AddCommGroup V₁] [Module K V₁] {f : Module.Dual K V₁} (hf : f ≠ 0)
Goal: LinearMap.range f = ⊤
-- Module.Dual.finrank_ker_add_one_of_ne_zero
lemma finrank_ker_add_one_of_ne_zero :
    finrank K (LinearMap.ker f) + 1 = finrank K V₁ 
Arguments: {K : Type uK} [Field K] {V₁ : Type uV₁} [AddCommGroup V₁] [Module K V₁] [FiniteDimensional K V₁] {f : Module.Dual K V₁} (hf : f ≠ 0)
Goal: FiniteDimensional.finrank K ↥(LinearMap.ker f) + 1 = FiniteDimensional.finrank K V₁