From 5e0e4fa8d194ad3153ca6b314b0d79a197772d04 Mon Sep 17 00:00:00 2001 From: leanprover-community-bot Date: Mon, 10 Apr 2023 10:40:19 +0000 Subject: [PATCH] bump to nightly-2023-04-10-10 mathlib commit https://github.com/leanprover-community/mathlib/commit/e05ead7993520a432bec94ac504842d90707ad63 --- Mathbin/FieldTheory/Fixed.lean | 2 +- Mathbin/LinearAlgebra/Dimension.lean | 516 ++++++++++++++++++++++++++- lake-manifest.json | 8 +- lakefile.lean | 4 +- 4 files changed, 508 insertions(+), 22 deletions(-) diff --git a/Mathbin/FieldTheory/Fixed.lean b/Mathbin/FieldTheory/Fixed.lean index 912563b04a..704c7f34ce 100644 --- a/Mathbin/FieldTheory/Fixed.lean +++ b/Mathbin/FieldTheory/Fixed.lean @@ -284,7 +284,7 @@ theorem rank_le_card : Module.rank (FixedPoints.subfield G F) F ≤ Fintype.card rank_le fun s hs => by simpa only [rank_fun', Cardinal.mk_coe_finset, Finset.coe_sort_coe, Cardinal.lift_natCast, Cardinal.natCast_le] using - cardinal_lift_le_rank_of_linear_independent' + cardinal_lift_le_rank_of_linearIndependent' (linear_independent_smul_of_linear_independent G F hs) #align fixed_points.rank_le_card FixedPoints.rank_le_card diff --git a/Mathbin/LinearAlgebra/Dimension.lean b/Mathbin/LinearAlgebra/Dimension.lean index 3384694b96..fbfc03cd29 100644 --- a/Mathbin/LinearAlgebra/Dimension.lean +++ b/Mathbin/LinearAlgebra/Dimension.lean @@ -98,6 +98,7 @@ include K variable (K V) +#print Module.rank /- /-- The rank of a module, defined as a term of type `cardinal`. We define this as the supremum of the cardinalities of linearly independent subsets. @@ -114,6 +115,7 @@ the rank of a linear map. protected irreducible_def Module.rank : Cardinal := ⨆ ι : { s : Set V // LinearIndependent K (coe : s → V) }, #ι.1 #align module.rank Module.rank +-/ end @@ -127,6 +129,12 @@ variable {M' : Type v'} [AddCommGroup M'] [Module R M'] variable {M₁ : Type v} [AddCommGroup M₁] [Module R M₁] +/- warning: linear_map.lift_rank_le_of_injective -> LinearMap.lift_rank_le_of_injective is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M' : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M'] [_inst_5 : Module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4)] (f : LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5), (Function.Injective.{succ u2, succ u3} M M' (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (fun (_x : LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) => M -> M') (LinearMap.hasCoeToFun.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) f)) -> (LE.le.{succ (max u2 u3)} Cardinal.{max u2 u3} Cardinal.hasLe.{max u2 u3} (Cardinal.lift.{u3, u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) (Cardinal.lift.{u2, u3} (Module.rank.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5))) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M' : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M'] [_inst_5 : Module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4)] (f : LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5), (Function.Injective.{succ u2, succ u3} M M' (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => M') _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) f)) -> (LE.le.{max (succ u2) (succ u3)} Cardinal.{max u2 u3} Cardinal.instLECardinal.{max u2 u3} (Cardinal.lift.{u3, u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) (Cardinal.lift.{u2, u3} (Module.rank.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5))) +Case conversion may be inaccurate. Consider using '#align linear_map.lift_rank_le_of_injective LinearMap.lift_rank_le_of_injectiveₓ'. -/ theorem LinearMap.lift_rank_le_of_injective (f : M →ₗ[R] M') (i : Injective f) : Cardinal.lift.{v'} (Module.rank R M) ≤ Cardinal.lift.{v} (Module.rank R M') := by @@ -139,11 +147,23 @@ theorem LinearMap.lift_rank_le_of_injective (f : M →ₗ[R] M') (i : Injective exact (li.map' _ <| linear_map.ker_eq_bot.mpr i).image #align linear_map.lift_rank_le_of_injective LinearMap.lift_rank_le_of_injective +/- warning: linear_map.rank_le_of_injective -> LinearMap.rank_le_of_injective is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M₁ : Type.{u2}} [_inst_6 : AddCommGroup.{u2} M₁] [_inst_7 : Module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7), (Function.Injective.{succ u2, succ u2} M M₁ (coeFn.{succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (fun (_x : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) => M -> M₁) (LinearMap.hasCoeToFun.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) f)) -> (LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Module.rank.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7)) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M₁ : Type.{u2}} [_inst_6 : AddCommGroup.{u2} M₁] [_inst_7 : Module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7), (Function.Injective.{succ u2, succ u2} M M₁ (FunLike.coe.{succ u2, succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => M₁) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) f)) -> (LE.le.{succ u2} Cardinal.{u2} Cardinal.instLECardinal.{u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Module.rank.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7)) +Case conversion may be inaccurate. Consider using '#align linear_map.rank_le_of_injective LinearMap.rank_le_of_injectiveₓ'. -/ theorem LinearMap.rank_le_of_injective (f : M →ₗ[R] M₁) (i : Injective f) : Module.rank R M ≤ Module.rank R M₁ := Cardinal.lift_le.1 (f.lift_rank_le_of_injective i) #align linear_map.rank_le_of_injective LinearMap.rank_le_of_injective +/- warning: rank_le -> rank_le is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {n : Nat}, (forall (s : Finset.{u2} M), (LinearIndependent.{u2, u1, u2} (coeSort.{succ u2, succ (succ u2)} (Finset.{u2} M) Type.{u2} (Finset.hasCoeToSort.{u2} M) s) R M (fun (i : coeSort.{succ u2, succ (succ u2)} (Finset.{u2} M) Type.{u2} (Finset.hasCoeToSort.{u2} M) s) => (fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Finset.{u2} M) Type.{u2} (Finset.hasCoeToSort.{u2} M) s) M (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Finset.{u2} M) Type.{u2} (Finset.hasCoeToSort.{u2} M) s) M (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Finset.{u2} M) Type.{u2} (Finset.hasCoeToSort.{u2} M) s) M (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Finset.{u2} M) Type.{u2} (Finset.hasCoeToSort.{u2} M) s) M (coeSubtype.{succ u2} M (fun (x : M) => Membership.Mem.{u2, u2} M (Finset.{u2} M) (Finset.hasMem.{u2} M) x s))))) i) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) -> (LE.le.{0} Nat Nat.hasLe (Finset.card.{u2} M s) n)) -> (LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) ((fun (a : Type) (b : Type.{succ u2}) [self : HasLiftT.{1, succ (succ u2)} a b] => self.0) Nat Cardinal.{u2} (HasLiftT.mk.{1, succ (succ u2)} Nat Cardinal.{u2} (CoeTCₓ.coe.{1, succ (succ u2)} Nat Cardinal.{u2} (Nat.castCoe.{succ u2} Cardinal.{u2} Cardinal.hasNatCast.{u2}))) n)) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {n : Nat}, (forall (s : Finset.{u2} M), (LinearIndependent.{u2, u1, u2} (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Finset.{u2} M) (Finset.instMembershipFinset.{u2} M) x s)) R M (fun (i : Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Finset.{u2} M) (Finset.instMembershipFinset.{u2} M) x s)) => Subtype.val.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Finset.{u2} M) (Finset.instMembershipFinset.{u2} M) x s) i) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) -> (LE.le.{0} Nat instLENat (Finset.card.{u2} M s) n)) -> (LE.le.{succ u2} Cardinal.{u2} Cardinal.instLECardinal.{u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Nat.cast.{succ u2} Cardinal.{u2} Cardinal.instNatCastCardinal.{u2} n)) +Case conversion may be inaccurate. Consider using '#align rank_le rank_leₓ'. -/ theorem rank_le {n : ℕ} (H : ∀ s : Finset M, (LinearIndependent R fun i : s => (i : M)) → s.card ≤ n) : Module.rank R M ≤ n := by @@ -153,6 +173,12 @@ theorem rank_le {n : ℕ} exact linearIndependent_bounded_of_finset_linearIndependent_bounded H _ li #align rank_le rank_le +/- warning: lift_rank_range_le -> lift_rank_range_le is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M' : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M'] [_inst_5 : Module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4)] (f : LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5), LE.le.{succ (max u3 u2)} Cardinal.{max u3 u2} Cardinal.hasLe.{max u3 u2} (Cardinal.lift.{u2, u3} (Module.rank.{u1, u3} R (coeSort.{succ u3, succ (succ u3)} (Submodule.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (Submodule.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5) M' (Submodule.setLike.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5)) (LinearMap.range.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.semilinearMapClass.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5 (LinearMap.range.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.semilinearMapClass.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)) (Submodule.module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5 (LinearMap.range.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.semilinearMapClass.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)))) (Cardinal.lift.{u3, u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M' : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M'] [_inst_5 : Module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4)] (f : LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5), LE.le.{max (succ u2) (succ u3)} Cardinal.{max u3 u2} Cardinal.instLECardinal.{max u2 u3} (Cardinal.lift.{u2, u3} (Module.rank.{u1, u3} R (Subtype.{succ u3} M' (fun (x : M') => Membership.mem.{u3, u3} M' (Submodule.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5) (SetLike.instMembership.{u3, u3} (Submodule.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5) M' (Submodule.setLike.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5)) x (LinearMap.range.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f))) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5 (LinearMap.range.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)) (Submodule.module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5 (LinearMap.range.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)))) (Cardinal.lift.{u3, u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) +Case conversion may be inaccurate. Consider using '#align lift_rank_range_le lift_rank_range_leₓ'. -/ theorem lift_rank_range_le (f : M →ₗ[R] M') : Cardinal.lift.{v} (Module.rank R f.range) ≤ Cardinal.lift.{v'} (Module.rank R M) := by @@ -169,10 +195,22 @@ theorem lift_rank_range_le (f : M →ₗ[R] M') : · exact (cardinal.lift_mk_eq'.mpr ⟨Equiv.Set.rangeSplittingImageEquiv f s⟩).ge #align lift_rank_range_le lift_rank_range_le +/- warning: rank_range_le -> rank_range_le is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M₁ : Type.{u2}} [_inst_6 : AddCommGroup.{u2} M₁] [_inst_7 : Module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7), LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Module.rank.{u1, u2} R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) M₁ (Submodule.setLike.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7)) (LinearMap.range.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (LinearMap.range.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)) (Submodule.module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (LinearMap.range.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f))) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M₁ : Type.{u2}} [_inst_6 : AddCommGroup.{u2} M₁] [_inst_7 : Module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7), LE.le.{succ u2} Cardinal.{u2} Cardinal.instLECardinal.{u2} (Module.rank.{u1, u2} R (Subtype.{succ u2} M₁ (fun (x : M₁) => Membership.mem.{u2, u2} M₁ (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) M₁ (Submodule.setLike.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7)) x (LinearMap.range.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f))) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (LinearMap.range.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)) (Submodule.module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (LinearMap.range.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f))) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) +Case conversion may be inaccurate. Consider using '#align rank_range_le rank_range_leₓ'. -/ theorem rank_range_le (f : M →ₗ[R] M₁) : Module.rank R f.range ≤ Module.rank R M := by simpa using lift_rank_range_le f #align rank_range_le rank_range_le +/- warning: lift_rank_map_le -> lift_rank_map_le is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M' : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M'] [_inst_5 : Module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4)] (f : LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (p : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3), LE.le.{succ (max u3 u2)} Cardinal.{max u3 u2} Cardinal.hasLe.{max u3 u2} (Cardinal.lift.{u2, u3} (Module.rank.{u1, u3} R (coeSort.{succ u3, succ (succ u3)} (Submodule.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (Submodule.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5) M' (Submodule.setLike.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5)) (Submodule.map.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.semilinearMapClass.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) f p)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5 (Submodule.map.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.semilinearMapClass.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) f p)) (Submodule.module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5 (Submodule.map.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.semilinearMapClass.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) f p)))) (Cardinal.lift.{u3, u2} (Module.rank.{u1, u2} R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) p) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 p) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 p))) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M' : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M'] [_inst_5 : Module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4)] (f : LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (p : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3), LE.le.{max (succ u2) (succ u3)} Cardinal.{max u3 u2} Cardinal.instLECardinal.{max u2 u3} (Cardinal.lift.{u2, u3} (Module.rank.{u1, u3} R (Subtype.{succ u3} M' (fun (x : M') => Membership.mem.{u3, u3} M' (Submodule.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5) (SetLike.instMembership.{u3, u3} (Submodule.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5) M' (Submodule.setLike.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5)) x (Submodule.map.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) f p))) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5 (Submodule.map.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) f p)) (Submodule.module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5 (Submodule.map.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) f p)))) (Cardinal.lift.{u3, u2} (Module.rank.{u1, u2} R (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) x p)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 p) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 p))) +Case conversion may be inaccurate. Consider using '#align lift_rank_map_le lift_rank_map_leₓ'. -/ theorem lift_rank_map_le (f : M →ₗ[R] M') (p : Submodule R M) : Cardinal.lift.{v} (Module.rank R (p.map f)) ≤ Cardinal.lift.{v'} (Module.rank R p) := by @@ -180,16 +218,29 @@ theorem lift_rank_map_le (f : M →ₗ[R] M') (p : Submodule R M) : rwa [LinearMap.range_comp, range_subtype] at h #align lift_rank_map_le lift_rank_map_le +/- warning: rank_map_le -> rank_map_le is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M₁ : Type.{u2}} [_inst_6 : AddCommGroup.{u2} M₁] [_inst_7 : Module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (p : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3), LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Module.rank.{u1, u2} R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) M₁ (Submodule.setLike.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7)) (Submodule.map.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) f p)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (Submodule.map.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) f p)) (Submodule.module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (Submodule.map.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) f p))) (Module.rank.{u1, u2} R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) p) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 p) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 p)) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M₁ : Type.{u2}} [_inst_6 : AddCommGroup.{u2} M₁] [_inst_7 : Module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (p : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3), LE.le.{succ u2} Cardinal.{u2} Cardinal.instLECardinal.{u2} (Module.rank.{u1, u2} R (Subtype.{succ u2} M₁ (fun (x : M₁) => Membership.mem.{u2, u2} M₁ (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) M₁ (Submodule.setLike.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7)) x (Submodule.map.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) f p))) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (Submodule.map.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) f p)) (Submodule.module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (Submodule.map.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) f p))) (Module.rank.{u1, u2} R (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) x p)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 p) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 p)) +Case conversion may be inaccurate. Consider using '#align rank_map_le rank_map_leₓ'. -/ theorem rank_map_le (f : M →ₗ[R] M₁) (p : Submodule R M) : Module.rank R (p.map f) ≤ Module.rank R p := by simpa using lift_rank_map_le f p #align rank_map_le rank_map_le +/- warning: rank_le_of_submodule -> rank_le_of_submodule is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] (s : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (t : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3), (LE.le.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)))) s t) -> (LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Module.rank.{u1, u2} R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) s) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 s) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 s)) (Module.rank.{u1, u2} R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) t) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 t) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 t))) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] (s : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (t : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3), (LE.le.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))) s t) -> (LE.le.{succ u2} Cardinal.{u2} Cardinal.instLECardinal.{u2} (Module.rank.{u1, u2} R (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) x s)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 s) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 s)) (Module.rank.{u1, u2} R (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) x t)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 t) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 t))) +Case conversion may be inaccurate. Consider using '#align rank_le_of_submodule rank_le_of_submoduleₓ'. -/ theorem rank_le_of_submodule (s t : Submodule R M) (h : s ≤ t) : Module.rank R s ≤ Module.rank R t := (ofLe h).rank_le_of_injective fun ⟨x, hx⟩ ⟨y, hy⟩ eq => Subtype.eq <| show x = y from Subtype.ext_iff_val.1 Eq #align rank_le_of_submodule rank_le_of_submodule +#print LinearEquiv.lift_rank_eq /- /-- Two linearly equivalent vector spaces have the same dimension, a version with different universes. -/ theorem LinearEquiv.lift_rank_eq (f : M ≃ₗ[R] M') : @@ -199,17 +250,32 @@ theorem LinearEquiv.lift_rank_eq (f : M ≃ₗ[R] M') : · exact f.to_linear_map.lift_rank_le_of_injective f.injective · exact f.symm.to_linear_map.lift_rank_le_of_injective f.symm.injective #align linear_equiv.lift_rank_eq LinearEquiv.lift_rank_eq +-/ +#print LinearEquiv.rank_eq /- /-- Two linearly equivalent vector spaces have the same dimension. -/ theorem LinearEquiv.rank_eq (f : M ≃ₗ[R] M₁) : Module.rank R M = Module.rank R M₁ := Cardinal.lift_inj.1 f.lift_rank_eq #align linear_equiv.rank_eq LinearEquiv.rank_eq +-/ +/- warning: rank_eq_of_injective -> rank_eq_of_injective is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M₁ : Type.{u2}} [_inst_6 : AddCommGroup.{u2} M₁] [_inst_7 : Module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7), (Function.Injective.{succ u2, succ u2} M M₁ (coeFn.{succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (fun (_x : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) => M -> M₁) (LinearMap.hasCoeToFun.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) f)) -> (Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Module.rank.{u1, u2} R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) M₁ (Submodule.setLike.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7)) (LinearMap.range.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (LinearMap.range.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)) (Submodule.module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (LinearMap.range.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)))) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M₁ : Type.{u2}} [_inst_6 : AddCommGroup.{u2} M₁] [_inst_7 : Module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7), (Function.Injective.{succ u2, succ u2} M M₁ (FunLike.coe.{succ u2, succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => M₁) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) f)) -> (Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Module.rank.{u1, u2} R (Subtype.{succ u2} M₁ (fun (x : M₁) => Membership.mem.{u2, u2} M₁ (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) M₁ (Submodule.setLike.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7)) x (LinearMap.range.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f))) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (LinearMap.range.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)) (Submodule.module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (LinearMap.range.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)))) +Case conversion may be inaccurate. Consider using '#align rank_eq_of_injective rank_eq_of_injectiveₓ'. -/ theorem rank_eq_of_injective (f : M →ₗ[R] M₁) (h : Injective f) : Module.rank R M = Module.rank R f.range := (LinearEquiv.ofInjective f h).rank_eq #align rank_eq_of_injective rank_eq_of_injective +/- warning: linear_equiv.rank_map_eq -> LinearEquiv.rank_map_eq is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M₁ : Type.{u2}} [_inst_6 : AddCommGroup.{u2} M₁] [_inst_7 : Module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6)] (f : LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (p : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3), Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) M₁ (Submodule.setLike.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7)) (Submodule.map.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (HasLiftT.mk.{succ u2, succ u2} (LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (CoeTCₓ.coe.{succ u2, succ u2} (LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (coeBase.{succ u2, succ u2} (LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearEquiv.LinearMap.hasCoe.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) f) p)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (Submodule.map.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (HasLiftT.mk.{succ u2, succ u2} (LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (CoeTCₓ.coe.{succ u2, succ u2} (LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (coeBase.{succ u2, succ u2} (LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearEquiv.LinearMap.hasCoe.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) f) p)) (Submodule.module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (Submodule.map.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (HasLiftT.mk.{succ u2, succ u2} (LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (CoeTCₓ.coe.{succ u2, succ u2} (LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (coeBase.{succ u2, succ u2} (LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearEquiv.LinearMap.hasCoe.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) f) p))) (Module.rank.{u1, u2} R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) p) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 p) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 p)) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M₁ : Type.{u2}} [_inst_6 : AddCommGroup.{u2} M₁] [_inst_7 : Module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6)] (f : LinearEquiv.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (p : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3), Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R (Subtype.{succ u2} M₁ (fun (x : M₁) => Membership.mem.{u2, u2} M₁ (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) M₁ (Submodule.setLike.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7)) x (Submodule.map.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (LinearEquiv.toLinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 f) p))) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (Submodule.map.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (LinearEquiv.toLinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 f) p)) (Submodule.module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7 (Submodule.map.{u1, u1, u2, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (LinearEquiv.toLinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 f) p))) (Module.rank.{u1, u2} R (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) x p)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 p) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 p)) +Case conversion may be inaccurate. Consider using '#align linear_equiv.rank_map_eq LinearEquiv.rank_map_eqₓ'. -/ /-- Pushforwards of submodules along a `linear_equiv` have the same dimension. -/ theorem LinearEquiv.rank_map_eq (f : M ≃ₗ[R] M₁) (p : Submodule R M) : Module.rank R (p.map (f : M →ₗ[R] M₁)) = Module.rank R p := @@ -218,6 +284,12 @@ theorem LinearEquiv.rank_map_eq (f : M ≃ₗ[R] M₁) (p : Submodule R M) : variable (R M) +/- warning: rank_top -> rank_top is a dubious translation: +lean 3 declaration is + forall (R : Type.{u1}) [_inst_1 : Ring.{u1} R] (M : Type.{u2}) [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)], Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.hasTop.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.hasTop.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.hasTop.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)))) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) +but is expected to have type + forall (R : Type.{u1}) [_inst_1 : Ring.{u1} R] (M : Type.{u2}) [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)], Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) x (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.instTopSubmodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)))) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.instTopSubmodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.instTopSubmodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)))) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) +Case conversion may be inaccurate. Consider using '#align rank_top rank_topₓ'. -/ @[simp] theorem rank_top : Module.rank R (⊤ : Submodule R M) = Module.rank R M := by @@ -227,16 +299,30 @@ theorem rank_top : Module.rank R (⊤ : Submodule R M) = Module.rank R M := variable {R M} +/- warning: rank_range_of_surjective -> rank_range_of_surjective is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M' : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M'] [_inst_5 : Module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4)] (f : LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5), (Function.Surjective.{succ u2, succ u3} M M' (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (fun (_x : LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) => M -> M') (LinearMap.hasCoeToFun.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) f)) -> (Eq.{succ (succ u3)} Cardinal.{u3} (Module.rank.{u1, u3} R (coeSort.{succ u3, succ (succ u3)} (Submodule.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5) Type.{u3} (SetLike.hasCoeToSort.{u3, u3} (Submodule.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5) M' (Submodule.setLike.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5)) (LinearMap.range.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.semilinearMapClass.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5 (LinearMap.range.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.semilinearMapClass.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)) (Submodule.module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5 (LinearMap.range.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.semilinearMapClass.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f))) (Module.rank.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5)) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M' : Type.{u3}} [_inst_4 : AddCommGroup.{u3} M'] [_inst_5 : Module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4)] (f : LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5), (Function.Surjective.{succ u2, succ u3} M M' (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => M') _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) f)) -> (Eq.{succ (succ u3)} Cardinal.{u3} (Module.rank.{u1, u3} R (Subtype.{succ u3} M' (fun (x : M') => Membership.mem.{u3, u3} M' (Submodule.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5) (SetLike.instMembership.{u3, u3} (Submodule.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5) M' (Submodule.setLike.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5)) x (LinearMap.range.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f))) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5 (LinearMap.range.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f)) (Submodule.module.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5 (LinearMap.range.{u1, u1, u2, u3, max u2 u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) (LinearMap.{u1, u1, u2, u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M' (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u3} R R M M' (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_3 _inst_5 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) (RingHomSurjective.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) f))) (Module.rank.{u1, u3} R M' (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M' _inst_4) _inst_5)) +Case conversion may be inaccurate. Consider using '#align rank_range_of_surjective rank_range_of_surjectiveₓ'. -/ theorem rank_range_of_surjective (f : M →ₗ[R] M') (h : Surjective f) : Module.rank R f.range = Module.rank R M' := by rw [LinearMap.range_eq_top.2 h, rank_top] #align rank_range_of_surjective rank_range_of_surjective +#print rank_submodule_le /- theorem rank_submodule_le (s : Submodule R M) : Module.rank R s ≤ Module.rank R M := by rw [← rank_top R M] exact rank_le_of_submodule _ _ le_top #align rank_submodule_le rank_submodule_le +-/ +/- warning: linear_map.rank_le_of_surjective -> LinearMap.rank_le_of_surjective is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M₁ : Type.{u2}} [_inst_6 : AddCommGroup.{u2} M₁] [_inst_7 : Module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7), (Function.Surjective.{succ u2, succ u2} M M₁ (coeFn.{succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) (fun (_x : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) => M -> M₁) (LinearMap.hasCoeToFun.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) f)) -> (LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Module.rank.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] {M₁ : Type.{u2}} [_inst_6 : AddCommGroup.{u2} M₁] [_inst_7 : Module.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7), (Function.Surjective.{succ u2, succ u2} M M₁ (FunLike.coe.{succ u2, succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))) M M₁ (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => M₁) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u2} R R M M₁ (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} R (NonAssocRing.toNonAssocSemiring.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))) f)) -> (LE.le.{succ u2} Cardinal.{u2} Cardinal.instLECardinal.{u2} (Module.rank.{u1, u2} R M₁ (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M₁ _inst_6) _inst_7) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) +Case conversion may be inaccurate. Consider using '#align linear_map.rank_le_of_surjective LinearMap.rank_le_of_surjectiveₓ'. -/ theorem LinearMap.rank_le_of_surjective (f : M →ₗ[R] M₁) (h : Surjective f) : Module.rank R M₁ ≤ Module.rank R M := by @@ -244,12 +330,20 @@ theorem LinearMap.rank_le_of_surjective (f : M →ₗ[R] M₁) (h : Surjective f apply rank_range_le #align linear_map.rank_le_of_surjective LinearMap.rank_le_of_surjective +#print rank_quotient_le /- theorem rank_quotient_le (p : Submodule R M) : Module.rank R (M ⧸ p) ≤ Module.rank R M := (mkQ p).rank_le_of_surjective (surjective_quot_mk _) #align rank_quotient_le rank_quotient_le +-/ variable [Nontrivial R] +/- warning: cardinal_lift_le_rank_of_linear_independent -> cardinal_lift_le_rank_of_linearIndependent is a dubious translation: +lean 3 declaration is + forall {R : Type.{u}} [_inst_1 : Ring.{u} R] {M : Type.{v}} [_inst_2 : AddCommGroup.{v} M] [_inst_3 : Module.{u, v} R M (Ring.toSemiring.{u} R _inst_1) (AddCommGroup.toAddCommMonoid.{v} M _inst_2)] [_inst_8 : Nontrivial.{u} R] {ι : Type.{w}} {v : ι -> M}, (LinearIndependent.{w, u, v} ι R M v (Ring.toSemiring.{u} R _inst_1) (AddCommGroup.toAddCommMonoid.{v} M _inst_2) _inst_3) -> (LE.le.{succ (max w v m)} Cardinal.{max w v m} Cardinal.hasLe.{max w v m} (Cardinal.lift.{max v m, w} (Cardinal.mk.{w} ι)) (Cardinal.lift.{max w m, v} (Module.rank.{u, v} R M (Ring.toSemiring.{u} R _inst_1) (AddCommGroup.toAddCommMonoid.{v} M _inst_2) _inst_3))) +but is expected to have type + forall {R : Type.{u}} [_inst_1 : Ring.{u} R] {M : Type.{v}} [_inst_2 : AddCommGroup.{v} M] [_inst_3 : Module.{u, v} R M (Ring.toSemiring.{u} R _inst_1) (AddCommGroup.toAddCommMonoid.{v} M _inst_2)] [_inst_8 : Nontrivial.{u} R] {ι : Type.{w}} {v : ι -> M}, (LinearIndependent.{w, u, v} ι R M v (Ring.toSemiring.{u} R _inst_1) (AddCommGroup.toAddCommMonoid.{v} M _inst_2) _inst_3) -> (LE.le.{max (succ v) (succ w)} Cardinal.{max w v} Cardinal.instLECardinal.{max v w} (Cardinal.lift.{v, w} (Cardinal.mk.{w} ι)) (Cardinal.lift.{w, v} (Module.rank.{u, v} R M (Ring.toSemiring.{u} R _inst_1) (AddCommGroup.toAddCommMonoid.{v} M _inst_2) _inst_3))) +Case conversion may be inaccurate. Consider using '#align cardinal_lift_le_rank_of_linear_independent cardinal_lift_le_rank_of_linearIndependentₓ'. -/ theorem cardinal_lift_le_rank_of_linearIndependent.{m} {ι : Type w} {v : ι → M} (hv : LinearIndependent R v) : Cardinal.lift.{max v m} (#ι) ≤ Cardinal.lift.{max w m} (Module.rank R M) := @@ -263,25 +357,37 @@ theorem cardinal_lift_le_rank_of_linearIndependent.{m} {ι : Type w} {v : ι → exact le_rfl #align cardinal_lift_le_rank_of_linear_independent cardinal_lift_le_rank_of_linearIndependent -theorem cardinal_lift_le_rank_of_linear_independent' {ι : Type w} {v : ι → M} +#print cardinal_lift_le_rank_of_linearIndependent' /- +theorem cardinal_lift_le_rank_of_linearIndependent' {ι : Type w} {v : ι → M} (hv : LinearIndependent R v) : Cardinal.lift.{v} (#ι) ≤ Cardinal.lift.{w} (Module.rank R M) := cardinal_lift_le_rank_of_linearIndependent.{u, v, w, 0} hv -#align cardinal_lift_le_rank_of_linear_independent' cardinal_lift_le_rank_of_linear_independent' +#align cardinal_lift_le_rank_of_linear_independent' cardinal_lift_le_rank_of_linearIndependent' +-/ +#print cardinal_le_rank_of_linearIndependent /- theorem cardinal_le_rank_of_linearIndependent {ι : Type v} {v : ι → M} (hv : LinearIndependent R v) : (#ι) ≤ Module.rank R M := by simpa using cardinal_lift_le_rank_of_linearIndependent hv #align cardinal_le_rank_of_linear_independent cardinal_le_rank_of_linearIndependent +-/ -theorem cardinal_le_rank_of_linear_independent' {s : Set M} +#print cardinal_le_rank_of_linearIndependent' /- +theorem cardinal_le_rank_of_linearIndependent' {s : Set M} (hs : LinearIndependent R (fun x => x : s → M)) : (#s) ≤ Module.rank R M := cardinal_le_rank_of_linearIndependent hs -#align cardinal_le_rank_of_linear_independent' cardinal_le_rank_of_linear_independent' +#align cardinal_le_rank_of_linear_independent' cardinal_le_rank_of_linearIndependent' +-/ variable (R M) +/- warning: rank_punit -> rank_punit is a dubious translation: +lean 3 declaration is + forall (R : Type.{u1}) [_inst_1 : Ring.{u1} R] [_inst_8 : Nontrivial.{u1} R], Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R PUnit.{succ u2} (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} PUnit.{succ u2} PUnit.addCommGroup.{u2}) (PUnit.module.{u1, u2} R (Ring.toSemiring.{u1} R _inst_1))) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (OfNat.mk.{succ u2} Cardinal.{u2} 0 (Zero.zero.{succ u2} Cardinal.{u2} Cardinal.hasZero.{u2}))) +but is expected to have type + forall (R : Type.{u2}) [_inst_1 : Ring.{u2} R] [_inst_8 : Nontrivial.{u2} R], Eq.{succ (succ u1)} Cardinal.{u1} (Module.rank.{u2, u1} R PUnit.{succ u1} (Ring.toSemiring.{u2} R _inst_1) (OrderedCancelAddCommMonoid.toAddCommMonoid.{u1} PUnit.{succ u1} (LinearOrderedCancelAddCommMonoid.toOrderedCancelAddCommMonoid.{u1} PUnit.{succ u1} PUnit.linearOrderedCancelAddCommMonoid.{u1})) (PUnit.module.{u2, u1} R (Ring.toSemiring.{u2} R _inst_1))) (OfNat.ofNat.{succ u1} Cardinal.{u1} 0 (Zero.toOfNat0.{succ u1} Cardinal.{u1} Cardinal.instZeroCardinal.{u1})) +Case conversion may be inaccurate. Consider using '#align rank_punit rank_punitₓ'. -/ @[simp] -theorem rank_pUnit : Module.rank R PUnit = 0 := +theorem rank_punit : Module.rank R PUnit = 0 := by apply le_bot_iff.mp rw [Module.rank] @@ -293,22 +399,35 @@ theorem rank_pUnit : Module.rank R PUnit = 0 := by_contra h obtain ⟨a, ha⟩ := nonempty_iff_ne_empty.2 h simpa using LinearIndependent.ne_zero (⟨a, ha⟩ : s) li -#align rank_punit rank_pUnit - +#align rank_punit rank_punit + +/- warning: rank_bot -> rank_bot is a dubious translation: +lean 3 declaration is + forall (R : Type.{u1}) [_inst_1 : Ring.{u1} R] (M : Type.{u2}) [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_8 : Nontrivial.{u1} R], Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) (Bot.bot.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.hasBot.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 (Bot.bot.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.hasBot.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 (Bot.bot.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.hasBot.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)))) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (OfNat.mk.{succ u2} Cardinal.{u2} 0 (Zero.zero.{succ u2} Cardinal.{u2} Cardinal.hasZero.{u2}))) +but is expected to have type + forall (R : Type.{u1}) [_inst_1 : Ring.{u1} R] (M : Type.{u2}) [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_8 : Nontrivial.{u1} R], Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) x (Bot.bot.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.instBotSubmodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)))) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 (Bot.bot.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.instBotSubmodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 (Bot.bot.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.instBotSubmodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)))) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (Zero.toOfNat0.{succ u2} Cardinal.{u2} Cardinal.instZeroCardinal.{u2})) +Case conversion may be inaccurate. Consider using '#align rank_bot rank_botₓ'. -/ @[simp] theorem rank_bot : Module.rank R (⊥ : Submodule R M) = 0 := by have : (⊥ : Submodule R M) ≃ₗ[R] PUnit := bot_equiv_punit - rw [this.rank_eq, rank_pUnit] + rw [this.rank_eq, rank_punit] #align rank_bot rank_bot variable {R M} +/- warning: exists_mem_ne_zero_of_rank_pos -> exists_mem_ne_zero_of_rank_pos is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_8 : Nontrivial.{u1} R] {s : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3}, (LT.lt.{succ u2} Cardinal.{u2} (Preorder.toLT.{succ u2} Cardinal.{u2} (PartialOrder.toPreorder.{succ u2} Cardinal.{u2} (OrderedAddCommMonoid.toPartialOrder.{succ u2} Cardinal.{u2} (OrderedSemiring.toOrderedAddCommMonoid.{succ u2} Cardinal.{u2} (OrderedCommSemiring.toOrderedSemiring.{succ u2} Cardinal.{u2} (CanonicallyOrderedCommSemiring.toOrderedCommSemiring.{succ u2} Cardinal.{u2} Cardinal.canonicallyOrderedCommSemiring.{u2})))))) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (OfNat.mk.{succ u2} Cardinal.{u2} 0 (Zero.zero.{succ u2} Cardinal.{u2} Cardinal.hasZero.{u2}))) (Module.rank.{u1, u2} R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) s) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 s) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 s))) -> (Exists.{succ u2} M (fun (b : M) => And (Membership.Mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (SetLike.hasMem.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) b s) (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (AddCommGroup.toAddGroup.{u2} M _inst_2))))))))))) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_8 : Nontrivial.{u1} R] {s : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3}, (LT.lt.{succ u2} Cardinal.{u2} (Preorder.toLT.{succ u2} Cardinal.{u2} (PartialOrder.toPreorder.{succ u2} Cardinal.{u2} Cardinal.partialOrder.{u2})) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (Zero.toOfNat0.{succ u2} Cardinal.{u2} Cardinal.instZeroCardinal.{u2})) (Module.rank.{u1, u2} R (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) x s)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 s) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 s))) -> (Exists.{succ u2} M (fun (b : M) => And (Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) b s) (Ne.{succ u2} M b (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2)))))))))) +Case conversion may be inaccurate. Consider using '#align exists_mem_ne_zero_of_rank_pos exists_mem_ne_zero_of_rank_posₓ'. -/ theorem exists_mem_ne_zero_of_rank_pos {s : Submodule R M} (h : 0 < Module.rank R s) : ∃ b : M, b ∈ s ∧ b ≠ 0 := exists_mem_ne_zero_of_ne_bot fun eq => by rw [Eq, rank_bot] at h <;> exact lt_irrefl _ h #align exists_mem_ne_zero_of_rank_pos exists_mem_ne_zero_of_rank_pos +#print LinearIndependent.finite_of_isNoetherian /- /-- A linearly-independent family of vectors in a module over a non-trivial ring must be finite if the module is Noetherian. -/ theorem LinearIndependent.finite_of_isNoetherian [IsNoetherian R M] {v : ι → M} @@ -322,12 +441,21 @@ theorem LinearIndependent.finite_of_isNoetherian [IsNoetherian R M] {v : ι → have : v i ∈ R ∙ v i := Submodule.mem_span_singleton_self (v i) rwa [contra, Submodule.mem_bot] at this #align linear_independent.finite_of_is_noetherian LinearIndependent.finite_of_isNoetherian +-/ +#print LinearIndependent.set_finite_of_isNoetherian /- theorem LinearIndependent.set_finite_of_isNoetherian [IsNoetherian R M] {s : Set M} (hi : LinearIndependent R (coe : s → M)) : s.Finite := @Set.toFinite _ _ hi.finite_of_isNoetherian #align linear_independent.set_finite_of_is_noetherian LinearIndependent.set_finite_of_isNoetherian +-/ +/- warning: basis_fintype_of_finite_spans -> basisFintypeOfFiniteSpans is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_8 : Nontrivial.{u1} R] (w : Set.{u2} M) [_inst_9 : Fintype.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) w)], (Eq.{succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.span.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 w) (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.hasTop.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))) -> (forall {ι : Type.{u3}}, (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) -> (Fintype.{u3} ι)) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_8 : Nontrivial.{u1} R] (w : Set.{u2} M) [_inst_9 : Fintype.{u2} (Set.Elem.{u2} M w)], (Eq.{succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.span.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 w) (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.instTopSubmodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))) -> (forall {ι : Type.{u3}}, (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) -> (Fintype.{u3} ι)) +Case conversion may be inaccurate. Consider using '#align basis_fintype_of_finite_spans basisFintypeOfFiniteSpansₓ'. -/ -- One might hope that a finite spanning set implies that any linearly independent set is finite. -- While this is true over a division ring -- (simply because any linearly independent set can be extended to a basis), @@ -366,6 +494,12 @@ def basisFintypeOfFiniteSpans (w : Set M) [Fintype w] (s : span R w = ⊤) {ι : exact nm #align basis_fintype_of_finite_spans basisFintypeOfFiniteSpans +/- warning: union_support_maximal_linear_independent_eq_range_basis -> union_support_maximal_linearIndependent_eq_range_basis is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_8 : Nontrivial.{u1} R] {ι : Type.{u3}} (b : Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) {κ : Type.{u4}} (v : κ -> M) (i : LinearIndependent.{u4, u1, u2} κ R M v (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3), (LinearIndependent.Maximal.{u1, u2, u4} κ R (Ring.toSemiring.{u1} R _inst_1) M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 v i) -> (Eq.{succ u3} (Set.{u3} ι) (Set.unionᵢ.{u3, succ u4} ι κ (fun (k : κ) => (fun (a : Type.{u3}) (b : Type.{u3}) [self : HasLiftT.{succ u3, succ u3} a b] => self.0) (Finset.{u3} ι) (Set.{u3} ι) (HasLiftT.mk.{succ u3, succ u3} (Finset.{u3} ι) (Set.{u3} ι) (CoeTCₓ.coe.{succ u3, succ u3} (Finset.{u3} ι) (Set.{u3} ι) (Finset.Set.hasCoeT.{u3} ι))) (Finsupp.support.{u3, u1} ι R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (coeFn.{max (succ u2) (succ (max u3 u1)), max (succ u2) (succ (max u3 u1))} (LinearEquiv.{u1, u1, u2, max u3 u1} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M (Finsupp.{u3, u1} ι R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) _inst_3 (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (fun (_x : LinearEquiv.{u1, u1, u2, max u3 u1} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M (Finsupp.{u3, u1} ι R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) _inst_3 (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) => M -> (Finsupp.{u3, u1} ι R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))) (LinearEquiv.hasCoeToFun.{u1, u1, u2, max u3 u1} R R M (Finsupp.{u3, u1} ι R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) _inst_3 (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (Basis.repr.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 b) (v k))))) (Set.univ.{u3} ι)) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_8 : Nontrivial.{u1} R] {ι : Type.{u3}} (b : Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) {κ : Type.{u4}} (v : κ -> M) (i : LinearIndependent.{u4, u1, u2} κ R M v (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3), (LinearIndependent.Maximal.{u1, u2, u4} κ R (Ring.toSemiring.{u1} R _inst_1) M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 v i) -> (Eq.{succ u3} (Set.{u3} ι) (Set.unionᵢ.{u3, succ u4} ι κ (fun (k : κ) => Finset.toSet.{u3} ι (Finsupp.support.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u2, max (succ u1) (succ u3)} (LinearEquiv.{u1, u1, u2, max u1 u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) _inst_3 (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : M) => Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) _x) (SMulHomClass.toFunLike.{max (max u1 u2) u3, u1, u2, max u1 u3} (LinearEquiv.{u1, u1, u2, max u1 u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) _inst_3 (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) R M (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2))) (DistribSMul.toSMulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2))) (DistribMulAction.toDistribSMul.{u1, u2} R M (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)) (Module.toDistribMulAction.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)))) (SMulZeroClass.toSMul.{u1, max u1 u3} R (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (AddMonoid.toZero.{max u1 u3} (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{max u1 u3} (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))) (DistribSMul.toSMulZeroClass.{u1, max u1 u3} R (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (AddMonoid.toAddZeroClass.{max u1 u3} (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (AddCommMonoid.toAddMonoid.{max u1 u3} (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))) (DistribMulAction.toDistribSMul.{u1, max u1 u3} R (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{max u1 u3} (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) (Module.toDistribMulAction.{u1, max u1 u3} R (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Ring.toSemiring.{u1} R _inst_1) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u1 u2) u3, u1, u2, max u1 u3} (LinearEquiv.{u1, u1, u2, max u1 u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) _inst_3 (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) R M (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (MonoidWithZero.toMonoid.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)) (AddCommMonoid.toAddMonoid.{max u1 u3} (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))))) (Module.toDistribMulAction.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Module.toDistribMulAction.{u1, max u1 u3} R (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Ring.toSemiring.{u1} R _inst_1) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (SemilinearMapClass.distribMulActionHomClass.{u1, u2, max u1 u3, max (max u1 u2) u3} R M (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (LinearEquiv.{u1, u1, u2, max u1 u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) _inst_3 (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) _inst_3 (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (SemilinearEquivClass.instSemilinearMapClass.{u1, u1, u2, max u1 u3, max (max u1 u2) u3} R R M (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (LinearEquiv.{u1, u1, u2, max u1 u3} R R (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) M (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) _inst_3 (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) _inst_3 (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (LinearEquiv.instSemilinearEquivClassLinearEquiv.{u1, u1, u2, max u1 u3} R R M (Finsupp.{u3, u1} ι R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Ring.toSemiring.{u1} R _inst_1) (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) (Finsupp.addCommMonoid.{u3, u1} ι R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) _inst_3 (Finsupp.module.{u3, u1, u1} ι R R (Ring.toSemiring.{u1} R _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1)))) (Semiring.toModule.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHom.id.{u1} R (Semiring.toNonAssocSemiring.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (RingHomInvPair.ids.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))) (Basis.repr.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3 b) (v k))))) (Set.univ.{u3} ι)) +Case conversion may be inaccurate. Consider using '#align union_support_maximal_linear_independent_eq_range_basis union_support_maximal_linearIndependent_eq_range_basisₓ'. -/ -- From [Les familles libres maximales d'un module ont-elles le meme cardinal?][lazarus1973] /-- Over any ring `R`, if `b` is a basis for a module `M`, and `s` is a maximal linearly independent set, @@ -440,11 +574,12 @@ theorem union_support_maximal_linearIndependent_eq_range_basis {ι : Type w} (b exact r'' m #align union_support_maximal_linear_independent_eq_range_basis union_support_maximal_linearIndependent_eq_range_basis +#print infinite_basis_le_maximal_linearIndependent' /- /-- Over any ring `R`, if `b` is an infinite basis for a module `M`, and `s` is a maximal linearly independent set, then the cardinality of `b` is bounded by the cardinality of `s`. -/ -theorem infinite_basis_le_maximal_linear_independent' {ι : Type w} (b : Basis ι R M) [Infinite ι] +theorem infinite_basis_le_maximal_linearIndependent' {ι : Type w} (b : Basis ι R M) [Infinite ι] {κ : Type w'} (v : κ → M) (i : LinearIndependent R v) (m : i.Maximal) : Cardinal.lift.{w'} (#ι) ≤ Cardinal.lift.{w} (#κ) := by @@ -455,8 +590,10 @@ theorem infinite_basis_le_maximal_linear_independent' {ι : Type w} (b : Basis exact union_support_maximal_linearIndependent_eq_range_basis b v i m have w₂ : Cardinal.lift.{w'} (#Set.range Φ) ≤ Cardinal.lift.{w} (#κ) := Cardinal.mk_range_le_lift exact (cardinal.lift_le.mpr w₁).trans w₂ -#align infinite_basis_le_maximal_linear_independent' infinite_basis_le_maximal_linear_independent' +#align infinite_basis_le_maximal_linear_independent' infinite_basis_le_maximal_linearIndependent' +-/ +#print infinite_basis_le_maximal_linearIndependent /- -- (See `infinite_basis_le_maximal_linear_independent'` for the more general version -- where the index types can live in different universes.) /-- Over any ring `R`, if `b` is an infinite basis for a module `M`, @@ -465,9 +602,16 @@ then the cardinality of `b` is bounded by the cardinality of `s`. -/ theorem infinite_basis_le_maximal_linearIndependent {ι : Type w} (b : Basis ι R M) [Infinite ι] {κ : Type w} (v : κ → M) (i : LinearIndependent R v) (m : i.Maximal) : (#ι) ≤ (#κ) := - Cardinal.lift_le.mp (infinite_basis_le_maximal_linear_independent' b v i m) + Cardinal.lift_le.mp (infinite_basis_le_maximal_linearIndependent' b v i m) #align infinite_basis_le_maximal_linear_independent infinite_basis_le_maximal_linearIndependent +-/ +/- warning: complete_lattice.independent.subtype_ne_bot_le_rank -> CompleteLattice.Independent.subtype_ne_bot_le_rank is a dubious translation: +lean 3 declaration is + forall {ι : Type.{u3}} {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_8 : Nontrivial.{u1} R] [_inst_9 : NoZeroSMulDivisors.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (AddCommGroup.toAddGroup.{u2} M _inst_2))))) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))] {V : ι -> (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)}, (CompleteLattice.Independent.{succ u3, u2} ι (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) V) -> (LE.le.{succ (max u3 u2)} Cardinal.{max u3 u2} Cardinal.hasLe.{max u3 u2} (Cardinal.lift.{u2, u3} (Cardinal.mk.{u3} (Subtype.{succ u3} ι (fun (i : ι) => Ne.{succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (V i) (Bot.bot.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.hasBot.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)))))) (Cardinal.lift.{u3, u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))) +but is expected to have type + forall {ι : Type.{u3}} {R : Type.{u1}} [_inst_1 : Ring.{u1} R] {M : Type.{u2}} [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_8 : Nontrivial.{u1} R] [_inst_9 : NoZeroSMulDivisors.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (SMulZeroClass.toSMul.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))] {V : ι -> (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)}, (CompleteLattice.Independent.{succ u3, u2} ι (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) V) -> (LE.le.{max (succ u2) (succ u3)} Cardinal.{max u3 u2} Cardinal.instLECardinal.{max u2 u3} (Cardinal.lift.{u2, u3} (Cardinal.mk.{u3} (Subtype.{succ u3} ι (fun (i : ι) => Ne.{succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (V i) (Bot.bot.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (Submodule.instBotSubmodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)))))) (Cardinal.lift.{u3, u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))) +Case conversion may be inaccurate. Consider using '#align complete_lattice.independent.subtype_ne_bot_le_rank CompleteLattice.Independent.subtype_ne_bot_le_rankₓ'. -/ theorem CompleteLattice.Independent.subtype_ne_bot_le_rank [NoZeroSMulDivisors R M] {V : ι → Submodule R M} (hV : CompleteLattice.Independent V) : Cardinal.lift.{v} (#{ i : ι // V i ≠ ⊥ }) ≤ Cardinal.lift.{w} (Module.rank R M) := @@ -479,7 +623,7 @@ theorem CompleteLattice.Independent.subtype_ne_bot_le_rank [NoZeroSMulDivisors R exact i.prop choose v hvV hv using hI have : LinearIndependent R v := (hV.comp Subtype.coe_injective).LinearIndependent _ hvV hv - exact cardinal_lift_le_rank_of_linear_independent' this + exact cardinal_lift_le_rank_of_linearIndependent' this #align complete_lattice.independent.subtype_ne_bot_le_rank CompleteLattice.Independent.subtype_ne_bot_le_rank end @@ -490,6 +634,7 @@ variable {R : Type u} {M : Type v} variable [Ring R] [AddCommGroup M] [Module R M] +#print rank_subsingleton /- @[simp] theorem rank_subsingleton [Subsingleton R] : Module.rank R M = 1 := by @@ -507,9 +652,16 @@ theorem rank_subsingleton [Subsingleton R] : Module.rank R M = 1 := exact Subsingleton.elim _ _ · exact hw.trans_eq (Cardinal.mk_singleton _).symm #align rank_subsingleton rank_subsingleton +-/ variable [NoZeroSMulDivisors R M] +/- warning: rank_pos -> rank_pos is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Ring.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_4 : NoZeroSMulDivisors.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (AddCommGroup.toAddGroup.{u2} M _inst_2))))) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))] [_inst_5 : Nontrivial.{u2} M], LT.lt.{succ u2} Cardinal.{u2} (Preorder.toLT.{succ u2} Cardinal.{u2} (PartialOrder.toPreorder.{succ u2} Cardinal.{u2} (OrderedAddCommMonoid.toPartialOrder.{succ u2} Cardinal.{u2} (OrderedSemiring.toOrderedAddCommMonoid.{succ u2} Cardinal.{u2} (OrderedCommSemiring.toOrderedSemiring.{succ u2} Cardinal.{u2} (CanonicallyOrderedCommSemiring.toOrderedCommSemiring.{succ u2} Cardinal.{u2} Cardinal.canonicallyOrderedCommSemiring.{u2})))))) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (OfNat.mk.{succ u2} Cardinal.{u2} 0 (Zero.zero.{succ u2} Cardinal.{u2} Cardinal.hasZero.{u2}))) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) +but is expected to have type + forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Ring.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_4 : NoZeroSMulDivisors.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (SMulZeroClass.toSMul.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))] [_inst_5 : Nontrivial.{u2} M], LT.lt.{succ u2} Cardinal.{u2} (Preorder.toLT.{succ u2} Cardinal.{u2} (PartialOrder.toPreorder.{succ u2} Cardinal.{u2} Cardinal.partialOrder.{u2})) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (Zero.toOfNat0.{succ u2} Cardinal.{u2} Cardinal.instZeroCardinal.{u2})) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) +Case conversion may be inaccurate. Consider using '#align rank_pos rank_posₓ'. -/ theorem rank_pos [Nontrivial M] : 0 < Module.rank R M := by obtain ⟨x, hx⟩ := exists_ne (0 : M) @@ -522,6 +674,12 @@ theorem rank_pos [Nontrivial M] : 0 < Module.rank R M := variable [Nontrivial R] +/- warning: rank_zero_iff_forall_zero -> rank_zero_iff_forall_zero is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Ring.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_4 : NoZeroSMulDivisors.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (AddCommGroup.toAddGroup.{u2} M _inst_2))))) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))] [_inst_5 : Nontrivial.{u1} R], Iff (Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (OfNat.mk.{succ u2} Cardinal.{u2} 0 (Zero.zero.{succ u2} Cardinal.{u2} Cardinal.hasZero.{u2})))) (forall (x : M), Eq.{succ u2} M x (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (AddCommGroup.toAddGroup.{u2} M _inst_2))))))))) +but is expected to have type + forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Ring.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_4 : NoZeroSMulDivisors.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (SMulZeroClass.toSMul.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))] [_inst_5 : Nontrivial.{u1} R], Iff (Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (Zero.toOfNat0.{succ u2} Cardinal.{u2} Cardinal.instZeroCardinal.{u2}))) (forall (x : M), Eq.{succ u2} M x (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2)))))))) +Case conversion may be inaccurate. Consider using '#align rank_zero_iff_forall_zero rank_zero_iff_forall_zeroₓ'. -/ theorem rank_zero_iff_forall_zero : Module.rank R M = 0 ↔ ∀ x : M, x = 0 := by refine' ⟨fun h => _, fun h => _⟩ @@ -535,17 +693,35 @@ theorem rank_zero_iff_forall_zero : Module.rank R M = 0 ↔ ∀ x : M, x = 0 := rw [← rank_top, this, rank_bot] #align rank_zero_iff_forall_zero rank_zero_iff_forall_zero +/- warning: rank_zero_iff -> rank_zero_iff is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Ring.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_4 : NoZeroSMulDivisors.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (AddCommGroup.toAddGroup.{u2} M _inst_2))))) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))] [_inst_5 : Nontrivial.{u1} R], Iff (Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (OfNat.mk.{succ u2} Cardinal.{u2} 0 (Zero.zero.{succ u2} Cardinal.{u2} Cardinal.hasZero.{u2})))) (Subsingleton.{succ u2} M) +but is expected to have type + forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Ring.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_4 : NoZeroSMulDivisors.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (SMulZeroClass.toSMul.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))] [_inst_5 : Nontrivial.{u1} R], Iff (Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (Zero.toOfNat0.{succ u2} Cardinal.{u2} Cardinal.instZeroCardinal.{u2}))) (Subsingleton.{succ u2} M) +Case conversion may be inaccurate. Consider using '#align rank_zero_iff rank_zero_iffₓ'. -/ /-- See `rank_subsingleton` for the reason that `nontrivial R` is needed. -/ theorem rank_zero_iff : Module.rank R M = 0 ↔ Subsingleton M := rank_zero_iff_forall_zero.trans (subsingleton_iff_forall_eq 0).symm #align rank_zero_iff rank_zero_iff +/- warning: rank_pos_iff_exists_ne_zero -> rank_pos_iff_exists_ne_zero is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Ring.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_4 : NoZeroSMulDivisors.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (AddCommGroup.toAddGroup.{u2} M _inst_2))))) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))] [_inst_5 : Nontrivial.{u1} R], Iff (LT.lt.{succ u2} Cardinal.{u2} (Preorder.toLT.{succ u2} Cardinal.{u2} (PartialOrder.toPreorder.{succ u2} Cardinal.{u2} (OrderedAddCommMonoid.toPartialOrder.{succ u2} Cardinal.{u2} (OrderedSemiring.toOrderedAddCommMonoid.{succ u2} Cardinal.{u2} (OrderedCommSemiring.toOrderedSemiring.{succ u2} Cardinal.{u2} (CanonicallyOrderedCommSemiring.toOrderedCommSemiring.{succ u2} Cardinal.{u2} Cardinal.canonicallyOrderedCommSemiring.{u2})))))) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (OfNat.mk.{succ u2} Cardinal.{u2} 0 (Zero.zero.{succ u2} Cardinal.{u2} Cardinal.hasZero.{u2}))) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) (Exists.{succ u2} M (fun (x : M) => Ne.{succ u2} M x (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (AddCommGroup.toAddGroup.{u2} M _inst_2)))))))))) +but is expected to have type + forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Ring.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_4 : NoZeroSMulDivisors.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (SMulZeroClass.toSMul.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))] [_inst_5 : Nontrivial.{u1} R], Iff (LT.lt.{succ u2} Cardinal.{u2} (Preorder.toLT.{succ u2} Cardinal.{u2} (PartialOrder.toPreorder.{succ u2} Cardinal.{u2} Cardinal.partialOrder.{u2})) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (Zero.toOfNat0.{succ u2} Cardinal.{u2} Cardinal.instZeroCardinal.{u2})) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) (Exists.{succ u2} M (fun (x : M) => Ne.{succ u2} M x (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))))))) +Case conversion may be inaccurate. Consider using '#align rank_pos_iff_exists_ne_zero rank_pos_iff_exists_ne_zeroₓ'. -/ theorem rank_pos_iff_exists_ne_zero : 0 < Module.rank R M ↔ ∃ x : M, x ≠ 0 := by rw [← not_iff_not] simpa using rank_zero_iff_forall_zero #align rank_pos_iff_exists_ne_zero rank_pos_iff_exists_ne_zero +/- warning: rank_pos_iff_nontrivial -> rank_pos_iff_nontrivial is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Ring.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_4 : NoZeroSMulDivisors.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (AddCommGroup.toAddGroup.{u2} M _inst_2))))) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))] [_inst_5 : Nontrivial.{u1} R], Iff (LT.lt.{succ u2} Cardinal.{u2} (Preorder.toLT.{succ u2} Cardinal.{u2} (PartialOrder.toPreorder.{succ u2} Cardinal.{u2} (OrderedAddCommMonoid.toPartialOrder.{succ u2} Cardinal.{u2} (OrderedSemiring.toOrderedAddCommMonoid.{succ u2} Cardinal.{u2} (OrderedCommSemiring.toOrderedSemiring.{succ u2} Cardinal.{u2} (CanonicallyOrderedCommSemiring.toOrderedCommSemiring.{succ u2} Cardinal.{u2} Cardinal.canonicallyOrderedCommSemiring.{u2})))))) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (OfNat.mk.{succ u2} Cardinal.{u2} 0 (Zero.zero.{succ u2} Cardinal.{u2} Cardinal.hasZero.{u2}))) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) (Nontrivial.{u2} M) +but is expected to have type + forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Ring.{u1} R] [_inst_2 : AddCommGroup.{u2} M] [_inst_3 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2)] [_inst_4 : NoZeroSMulDivisors.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (SMulZeroClass.toSMul.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_2))))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3))))] [_inst_5 : Nontrivial.{u1} R], Iff (LT.lt.{succ u2} Cardinal.{u2} (Preorder.toLT.{succ u2} Cardinal.{u2} (PartialOrder.toPreorder.{succ u2} Cardinal.{u2} Cardinal.partialOrder.{u2})) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (Zero.toOfNat0.{succ u2} Cardinal.{u2} Cardinal.instZeroCardinal.{u2})) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_2) _inst_3)) (Nontrivial.{u2} M) +Case conversion may be inaccurate. Consider using '#align rank_pos_iff_nontrivial rank_pos_iff_nontrivialₓ'. -/ theorem rank_pos_iff_nontrivial : 0 < Module.rank R M ↔ Nontrivial M := rank_pos_iff_exists_ne_zero.trans (nontrivial_iff_exists_ne 0).symm #align rank_pos_iff_nontrivial rank_pos_iff_nontrivial @@ -558,6 +734,7 @@ variable {R : Type u} [Ring R] [InvariantBasisNumber R] variable {M : Type v} [AddCommGroup M] [Module R M] +#print mk_eq_mk_of_basis /- /-- The dimension theorem: if `v` and `v'` are two bases, their index types have the same cardinalities. -/ theorem mk_eq_mk_of_basis (v : Basis ι R M) (v' : Basis ι' R M) : @@ -580,22 +757,31 @@ theorem mk_eq_mk_of_basis (v : Basis ι R M) (v' : Basis ι' R M) : -- so by `infinite_basis_le_maximal_linear_independent`, `v'` is at least as big, -- and then applying `infinite_basis_le_maximal_linear_independent` again -- we see they have the same cardinality. - have w₁ := infinite_basis_le_maximal_linear_independent' v _ v'.linear_independent v'.maximal + have w₁ := infinite_basis_le_maximal_linearIndependent' v _ v'.linear_independent v'.maximal rcases cardinal.lift_mk_le'.mp w₁ with ⟨f⟩ haveI : Infinite ι' := Infinite.of_injective f f.2 - have w₂ := infinite_basis_le_maximal_linear_independent' v' _ v.linear_independent v.maximal + have w₂ := infinite_basis_le_maximal_linearIndependent' v' _ v.linear_independent v.maximal exact le_antisymm w₁ w₂ #align mk_eq_mk_of_basis mk_eq_mk_of_basis +-/ +/- warning: basis.index_equiv -> Basis.indexEquiv is a dubious translation: +lean 3 declaration is + forall {ι : Type.{w}} {ι' : Type.{w'}} {R : Type.{u}} [_inst_1 : Ring.{u} R] [_inst_2 : InvariantBasisNumber.{u} R (Ring.toSemiring.{u} R _inst_1)] {M : Type.{v}} [_inst_3 : AddCommGroup.{v} M] [_inst_4 : Module.{u, v} R M (Ring.toSemiring.{u} R _inst_1) (AddCommGroup.toAddCommMonoid.{v} M _inst_3)], (Basis.{w, u, v} ι R M (Ring.toSemiring.{u} R _inst_1) (AddCommGroup.toAddCommMonoid.{v} M _inst_3) _inst_4) -> (Basis.{w', u, v} ι' R M (Ring.toSemiring.{u} R _inst_1) (AddCommGroup.toAddCommMonoid.{v} M _inst_3) _inst_4) -> (Equiv.{succ w, succ w'} ι ι') +but is expected to have type + forall {ι : Type.{w}} {ι' : Type.{w'}} {R : Type.{u}} [_inst_1 : Ring.{u} R] [_inst_2 : InvariantBasisNumber.{u} R (Ring.toSemiring.{u} R _inst_1)] {M : Type.{v}} [_inst_3 : AddCommGroup.{v} M] [_inst_4 : Module.{u, v} R M (Ring.toSemiring.{u} R _inst_1) (AddCommGroup.toAddCommMonoid.{v} M _inst_3)], (Basis.{w, u, v} ι R M (Ring.toSemiring.{u} R _inst_1) (AddCommGroup.toAddCommMonoid.{v} M _inst_3) _inst_4) -> (Basis.{w', u, v} ι' R M (Ring.toSemiring.{u} R _inst_1) (AddCommGroup.toAddCommMonoid.{v} M _inst_3) _inst_4) -> (Equiv.{succ w, succ w'} ι ι') +Case conversion may be inaccurate. Consider using '#align basis.index_equiv Basis.indexEquivₓ'. -/ /-- Given two bases indexed by `ι` and `ι'` of an `R`-module, where `R` satisfies the invariant basis number property, an equiv `ι ≃ ι' `. -/ def Basis.indexEquiv (v : Basis ι R M) (v' : Basis ι' R M) : ι ≃ ι' := Nonempty.some (Cardinal.lift_mk_eq.1 (Cardinal.lift_umax_eq.2 (mk_eq_mk_of_basis v v'))) #align basis.index_equiv Basis.indexEquiv +#print mk_eq_mk_of_basis' /- theorem mk_eq_mk_of_basis' {ι' : Type w} (v : Basis ι R M) (v' : Basis ι' R M) : (#ι) = (#ι') := Cardinal.lift_inj.1 <| mk_eq_mk_of_basis v v' #align mk_eq_mk_of_basis' mk_eq_mk_of_basis' +-/ end InvariantBasisNumber @@ -605,6 +791,12 @@ variable {R : Type u} [Ring R] [RankCondition R] variable {M : Type v} [AddCommGroup M] [Module R M] +/- warning: basis.le_span'' -> Basis.le_span'' is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : RankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}} [_inst_5 : Fintype.{u3} ι], (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (forall {w : Set.{u2} M} [_inst_6 : Fintype.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) w)], (Eq.{succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Submodule.span.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 w) (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Submodule.hasTop.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4))) -> (LE.le.{0} Nat Nat.hasLe (Fintype.card.{u3} ι _inst_5) (Fintype.card.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) w) _inst_6))) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] [_inst_2 : RankCondition.{u2} R (Ring.toSemiring.{u2} R _inst_1)] {M : Type.{u3}} [_inst_3 : AddCommGroup.{u3} M] [_inst_4 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3)] {ι : Type.{u1}} [_inst_5 : Fintype.{u1} ι], (Basis.{u1, u2, u3} ι R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) -> (forall {w : Set.{u3} M} [_inst_6 : Fintype.{u3} (Set.Elem.{u3} M w)], (Eq.{succ u3} (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) (Submodule.span.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4 w) (Top.top.{u3} (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) (Submodule.instTopSubmodule.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4))) -> (LE.le.{0} Nat instLENat (Fintype.card.{u1} ι _inst_5) (Fintype.card.{u3} (Set.Elem.{u3} M w) _inst_6))) +Case conversion may be inaccurate. Consider using '#align basis.le_span'' Basis.le_span''ₓ'. -/ /-- An auxiliary lemma for `basis.le_span`. If `R` satisfies the rank condition, @@ -625,6 +817,12 @@ theorem Basis.le_span'' {ι : Type _} [Fintype ι] (b : Basis ι R M) {w : Set M simpa using s #align basis.le_span'' Basis.le_span'' +/- warning: basis_le_span' -> basis_le_span' is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : RankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}}, (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (forall {w : Set.{u2} M} [_inst_5 : Fintype.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) w)], (Eq.{succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Submodule.span.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 w) (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Submodule.hasTop.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4))) -> (LE.le.{succ u3} Cardinal.{u3} Cardinal.hasLe.{u3} (Cardinal.mk.{u3} ι) ((fun (a : Type) (b : Type.{succ u3}) [self : HasLiftT.{1, succ (succ u3)} a b] => self.0) Nat Cardinal.{u3} (HasLiftT.mk.{1, succ (succ u3)} Nat Cardinal.{u3} (CoeTCₓ.coe.{1, succ (succ u3)} Nat Cardinal.{u3} (Nat.castCoe.{succ u3} Cardinal.{u3} Cardinal.hasNatCast.{u3}))) (Fintype.card.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) w) _inst_5)))) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] [_inst_2 : RankCondition.{u2} R (Ring.toSemiring.{u2} R _inst_1)] {M : Type.{u3}} [_inst_3 : AddCommGroup.{u3} M] [_inst_4 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3)] {ι : Type.{u1}}, (Basis.{u1, u2, u3} ι R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) -> (forall {w : Set.{u3} M} [_inst_5 : Fintype.{u3} (Set.Elem.{u3} M w)], (Eq.{succ u3} (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) (Submodule.span.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4 w) (Top.top.{u3} (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) (Submodule.instTopSubmodule.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4))) -> (LE.le.{succ u1} Cardinal.{u1} Cardinal.instLECardinal.{u1} (Cardinal.mk.{u1} ι) (Nat.cast.{succ u1} Cardinal.{u1} Cardinal.instNatCastCardinal.{u1} (Fintype.card.{u3} (Set.Elem.{u3} M w) _inst_5)))) +Case conversion may be inaccurate. Consider using '#align basis_le_span' basis_le_span'ₓ'. -/ /-- Another auxiliary lemma for `basis.le_span`, which does not require assuming the basis is finite, but still assumes we have a finite spanning set. @@ -639,6 +837,12 @@ theorem basis_le_span' {ι : Type _} (b : Basis ι R M) {w : Set M} [Fintype w] exact Basis.le_span'' b s #align basis_le_span' basis_le_span' +/- warning: basis.le_span -> Basis.le_span is a dubious translation: +lean 3 declaration is + forall {ι : Type.{u3}} {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : RankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {J : Set.{u2} M} (v : Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4), (Eq.{succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Submodule.span.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 J) (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Submodule.hasTop.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4))) -> (LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Cardinal.mk.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) (Set.range.{u2, succ u3} M ι (coeFn.{max (succ u3) (succ u1) (succ u2), max (succ u3) (succ u2)} (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (fun (_x : Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) => ι -> M) (FunLike.hasCoeToFun.{max (succ u3) (succ u1) (succ u2), succ u3, succ u2} (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) ι (fun (_x : ι) => M) (Basis.funLike.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)) v)))) (Cardinal.mk.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) J))) +but is expected to have type + forall {ι : Type.{u3}} {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : RankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {J : Set.{u2} M} (v : Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4), (Eq.{succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Submodule.span.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 J) (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Submodule.instTopSubmodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4))) -> (LE.le.{succ u2} Cardinal.{u2} Cardinal.instLECardinal.{u2} (Cardinal.mk.{u2} (Set.Elem.{u2} M (Set.range.{u2, succ u3} M ι (FunLike.coe.{max (max (succ u1) (succ u2)) (succ u3), succ u3, succ u2} (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) ι (fun (_x : ι) => (fun (x._@.Mathlib.LinearAlgebra.Basis._hyg.548 : ι) => M) _x) (Basis.funLike.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) v)))) (Cardinal.mk.{u2} (Set.Elem.{u2} M J))) +Case conversion may be inaccurate. Consider using '#align basis.le_span Basis.le_spanₓ'. -/ -- Note that if `R` satisfies the strong rank condition, -- this also follows from `linear_independent_le_span` below. /-- If `R` satisfies the rank condition, @@ -685,6 +889,12 @@ variable {M : Type v} [AddCommGroup M] [Module R M] open Submodule +/- warning: linear_independent_le_span_aux' -> linearIndependent_le_span_aux' is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}} [_inst_5 : Fintype.{u3} ι] (v : ι -> M), (LinearIndependent.{u3, u1, u2} ι R M v (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (forall (w : Set.{u2} M) [_inst_6 : Fintype.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) w)], (LE.le.{u2} (Set.{u2} M) (Set.hasLe.{u2} M) (Set.range.{u2, succ u3} M ι v) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)))) (Submodule.span.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 w))) -> (LE.le.{0} Nat Nat.hasLe (Fintype.card.{u3} ι _inst_5) (Fintype.card.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) w) _inst_6))) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] [_inst_2 : StrongRankCondition.{u2} R (Ring.toSemiring.{u2} R _inst_1)] {M : Type.{u3}} [_inst_3 : AddCommGroup.{u3} M] [_inst_4 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3)] {ι : Type.{u1}} [_inst_5 : Fintype.{u1} ι] (v : ι -> M), (LinearIndependent.{u1, u2, u3} ι R M v (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) -> (forall (w : Set.{u3} M) [_inst_6 : Fintype.{u3} (Set.Elem.{u3} M w)], (LE.le.{u3} (Set.{u3} M) (Set.instLESet.{u3} M) (Set.range.{u3, succ u1} M ι v) (SetLike.coe.{u3, u3} (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) M (Submodule.setLike.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) (Submodule.span.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4 w))) -> (LE.le.{0} Nat instLENat (Fintype.card.{u1} ι _inst_5) (Fintype.card.{u3} (Set.Elem.{u3} M w) _inst_6))) +Case conversion may be inaccurate. Consider using '#align linear_independent_le_span_aux' linearIndependent_le_span_aux'ₓ'. -/ -- An auxiliary lemma for `linear_independent_le_span'`, -- with the additional assumption that the linearly independent family is finite. theorem linearIndependent_le_span_aux' {ι : Type _} [Fintype ι] (v : ι → M) @@ -705,6 +915,7 @@ theorem linearIndependent_le_span_aux' {ι : Type _} [Fintype ι] (v : ι → M) exact sub_eq_zero.mp (linear_independent_iff.mp i _ h) #align linear_independent_le_span_aux' linearIndependent_le_span_aux' +#print linearIndependentFintypeOfLeSpanFintype /- /-- If `R` satisfies the strong rank condition, then any linearly independent family `v : ι → M` contained in the span of some finite `w : set M`, @@ -719,7 +930,14 @@ def linearIndependentFintypeOfLeSpanFintype {ι : Type _} (v : ι → M) (i : Li have s' : range v' ≤ span R w := (range_comp_subset_range _ _).trans s simpa using linearIndependent_le_span_aux' v' i' w s' #align linear_independent_fintype_of_le_span_fintype linearIndependentFintypeOfLeSpanFintype +-/ +/- warning: linear_independent_le_span' -> linearIndependent_le_span' is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}} (v : ι -> M), (LinearIndependent.{u3, u1, u2} ι R M v (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (forall (w : Set.{u2} M) [_inst_5 : Fintype.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) w)], (LE.le.{u2} (Set.{u2} M) (Set.hasLe.{u2} M) (Set.range.{u2, succ u3} M ι v) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Set.{u2} M) (HasLiftT.mk.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Set.{u2} M) (CoeTCₓ.coe.{succ u2, succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Set.{u2} M) (SetLike.Set.hasCoeT.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)))) (Submodule.span.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 w))) -> (LE.le.{succ u3} Cardinal.{u3} Cardinal.hasLe.{u3} (Cardinal.mk.{u3} ι) ((fun (a : Type) (b : Type.{succ u3}) [self : HasLiftT.{1, succ (succ u3)} a b] => self.0) Nat Cardinal.{u3} (HasLiftT.mk.{1, succ (succ u3)} Nat Cardinal.{u3} (CoeTCₓ.coe.{1, succ (succ u3)} Nat Cardinal.{u3} (Nat.castCoe.{succ u3} Cardinal.{u3} Cardinal.hasNatCast.{u3}))) (Fintype.card.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) w) _inst_5)))) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] [_inst_2 : StrongRankCondition.{u2} R (Ring.toSemiring.{u2} R _inst_1)] {M : Type.{u3}} [_inst_3 : AddCommGroup.{u3} M] [_inst_4 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3)] {ι : Type.{u1}} (v : ι -> M), (LinearIndependent.{u1, u2, u3} ι R M v (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) -> (forall (w : Set.{u3} M) [_inst_5 : Fintype.{u3} (Set.Elem.{u3} M w)], (LE.le.{u3} (Set.{u3} M) (Set.instLESet.{u3} M) (Set.range.{u3, succ u1} M ι v) (SetLike.coe.{u3, u3} (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) M (Submodule.setLike.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) (Submodule.span.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4 w))) -> (LE.le.{succ u1} Cardinal.{u1} Cardinal.instLECardinal.{u1} (Cardinal.mk.{u1} ι) (Nat.cast.{succ u1} Cardinal.{u1} Cardinal.instNatCastCardinal.{u1} (Fintype.card.{u3} (Set.Elem.{u3} M w) _inst_5)))) +Case conversion may be inaccurate. Consider using '#align linear_independent_le_span' linearIndependent_le_span'ₓ'. -/ /-- If `R` satisfies the strong rank condition, then for any linearly independent family `v : ι → M` contained in the span of some finite `w : set M`, @@ -734,6 +952,12 @@ theorem linearIndependent_le_span' {ι : Type _} (v : ι → M) (i : LinearIndep exact linearIndependent_le_span_aux' v i w s #align linear_independent_le_span' linearIndependent_le_span' +/- warning: linear_independent_le_span -> linearIndependent_le_span is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}} (v : ι -> M), (LinearIndependent.{u3, u1, u2} ι R M v (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (forall (w : Set.{u2} M) [_inst_5 : Fintype.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) w)], (Eq.{succ u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Submodule.span.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 w) (Top.top.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Submodule.hasTop.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4))) -> (LE.le.{succ u3} Cardinal.{u3} Cardinal.hasLe.{u3} (Cardinal.mk.{u3} ι) ((fun (a : Type) (b : Type.{succ u3}) [self : HasLiftT.{1, succ (succ u3)} a b] => self.0) Nat Cardinal.{u3} (HasLiftT.mk.{1, succ (succ u3)} Nat Cardinal.{u3} (CoeTCₓ.coe.{1, succ (succ u3)} Nat Cardinal.{u3} (Nat.castCoe.{succ u3} Cardinal.{u3} Cardinal.hasNatCast.{u3}))) (Fintype.card.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} M) Type.{u2} (Set.hasCoeToSort.{u2} M) w) _inst_5)))) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] [_inst_2 : StrongRankCondition.{u2} R (Ring.toSemiring.{u2} R _inst_1)] {M : Type.{u3}} [_inst_3 : AddCommGroup.{u3} M] [_inst_4 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3)] {ι : Type.{u1}} (v : ι -> M), (LinearIndependent.{u1, u2, u3} ι R M v (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) -> (forall (w : Set.{u3} M) [_inst_5 : Fintype.{u3} (Set.Elem.{u3} M w)], (Eq.{succ u3} (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) (Submodule.span.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4 w) (Top.top.{u3} (Submodule.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) (Submodule.instTopSubmodule.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4))) -> (LE.le.{succ u1} Cardinal.{u1} Cardinal.instLECardinal.{u1} (Cardinal.mk.{u1} ι) (Nat.cast.{succ u1} Cardinal.{u1} Cardinal.instNatCastCardinal.{u1} (Fintype.card.{u3} (Set.Elem.{u3} M w) _inst_5)))) +Case conversion may be inaccurate. Consider using '#align linear_independent_le_span linearIndependent_le_spanₓ'. -/ /-- If `R` satisfies the strong rank condition, then for any linearly independent family `v : ι → M` and any finite spanning set `w : set M`, @@ -747,6 +971,12 @@ theorem linearIndependent_le_span {ι : Type _} (v : ι → M) (i : LinearIndepe exact le_top #align linear_independent_le_span linearIndependent_le_span +/- warning: linear_independent_le_infinite_basis -> linearIndependent_le_infinite_basis is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}}, (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (forall [_inst_5 : Infinite.{succ u3} ι] {κ : Type.{u3}} (v : κ -> M), (LinearIndependent.{u3, u1, u2} κ R M v (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (LE.le.{succ u3} Cardinal.{u3} Cardinal.hasLe.{u3} (Cardinal.mk.{u3} κ) (Cardinal.mk.{u3} ι))) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] [_inst_2 : StrongRankCondition.{u2} R (Ring.toSemiring.{u2} R _inst_1)] {M : Type.{u3}} [_inst_3 : AddCommGroup.{u3} M] [_inst_4 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3)] {ι : Type.{u1}}, (Basis.{u1, u2, u3} ι R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) -> (forall [_inst_5 : Infinite.{succ u1} ι] {κ : Type.{u1}} (v : κ -> M), (LinearIndependent.{u1, u2, u3} κ R M v (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) -> (LE.le.{succ u1} Cardinal.{u1} Cardinal.instLECardinal.{u1} (Cardinal.mk.{u1} κ) (Cardinal.mk.{u1} ι))) +Case conversion may be inaccurate. Consider using '#align linear_independent_le_infinite_basis linearIndependent_le_infinite_basisₓ'. -/ /-- An auxiliary lemma for `linear_independent_le_basis`: we handle the case where the basis `b` is infinite. -/ @@ -768,6 +998,12 @@ theorem linearIndependent_le_infinite_basis {ι : Type _} (b : Basis ι R M) [In exact w.false #align linear_independent_le_infinite_basis linearIndependent_le_infinite_basis +/- warning: linear_independent_le_basis -> linearIndependent_le_basis is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}}, (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (forall {κ : Type.{u3}} (v : κ -> M), (LinearIndependent.{u3, u1, u2} κ R M v (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (LE.le.{succ u3} Cardinal.{u3} Cardinal.hasLe.{u3} (Cardinal.mk.{u3} κ) (Cardinal.mk.{u3} ι))) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] [_inst_2 : StrongRankCondition.{u2} R (Ring.toSemiring.{u2} R _inst_1)] {M : Type.{u3}} [_inst_3 : AddCommGroup.{u3} M] [_inst_4 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3)] {ι : Type.{u1}}, (Basis.{u1, u2, u3} ι R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) -> (forall {κ : Type.{u1}} (v : κ -> M), (LinearIndependent.{u1, u2, u3} κ R M v (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) -> (LE.le.{succ u1} Cardinal.{u1} Cardinal.instLECardinal.{u1} (Cardinal.mk.{u1} κ) (Cardinal.mk.{u1} ι))) +Case conversion may be inaccurate. Consider using '#align linear_independent_le_basis linearIndependent_le_basisₓ'. -/ /-- Over any ring `R` satisfying the strong rank condition, if `b` is a basis for a module `M`, and `s` is a linearly independent set, @@ -788,12 +1024,20 @@ theorem linearIndependent_le_basis {ι : Type _} (b : Basis ι R M) {κ : Type _ exact linearIndependent_le_infinite_basis b v i #align linear_independent_le_basis linearIndependent_le_basis +#print Basis.card_le_card_of_linearIndependent_aux /- /-- In an `n`-dimensional space, the rank is at most `m`. -/ theorem Basis.card_le_card_of_linearIndependent_aux {R : Type _} [Ring R] [StrongRankCondition R] (n : ℕ) {m : ℕ} (v : Fin m → Fin n → R) : LinearIndependent R v → m ≤ n := fun h => by simpa using linearIndependent_le_basis (Pi.basisFun R (Fin n)) v h #align basis.card_le_card_of_linear_independent_aux Basis.card_le_card_of_linearIndependent_aux +-/ +/- warning: maximal_linear_independent_eq_infinite_basis -> maximal_linearIndependent_eq_infinite_basis is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}}, (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (forall [_inst_5 : Infinite.{succ u3} ι] {κ : Type.{u3}} (v : κ -> M) (i : LinearIndependent.{u3, u1, u2} κ R M v (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4), (LinearIndependent.Maximal.{u1, u2, u3} κ R (Ring.toSemiring.{u1} R _inst_1) M (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 v i) -> (Eq.{succ (succ u3)} Cardinal.{u3} (Cardinal.mk.{u3} κ) (Cardinal.mk.{u3} ι))) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] [_inst_2 : StrongRankCondition.{u2} R (Ring.toSemiring.{u2} R _inst_1)] {M : Type.{u3}} [_inst_3 : AddCommGroup.{u3} M] [_inst_4 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3)] {ι : Type.{u1}}, (Basis.{u1, u2, u3} ι R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) -> (forall [_inst_5 : Infinite.{succ u1} ι] {κ : Type.{u1}} (v : κ -> M) (i : LinearIndependent.{u1, u2, u3} κ R M v (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4), (LinearIndependent.Maximal.{u2, u3, u1} κ R (Ring.toSemiring.{u2} R _inst_1) M (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4 v i) -> (Eq.{succ (succ u1)} Cardinal.{u1} (Cardinal.mk.{u1} κ) (Cardinal.mk.{u1} ι))) +Case conversion may be inaccurate. Consider using '#align maximal_linear_independent_eq_infinite_basis maximal_linearIndependent_eq_infinite_basisₓ'. -/ -- When the basis is not infinite this need not be true! /-- Over any ring `R` satisfying the strong rank condition, if `b` is an infinite basis for a module `M`, @@ -811,6 +1055,7 @@ theorem maximal_linearIndependent_eq_infinite_basis {ι : Type _} (b : Basis ι exact infinite_basis_le_maximal_linearIndependent b v i m #align maximal_linear_independent_eq_infinite_basis maximal_linearIndependent_eq_infinite_basis +#print Basis.mk_eq_rank'' /- theorem Basis.mk_eq_rank'' {ι : Type v} (v : Basis ι R M) : (#ι) = Module.rank R M := by haveI := nontrivial_of_invariantBasisNumber R @@ -829,11 +1074,20 @@ theorem Basis.mk_eq_rank'' {ι : Type v} (v : Basis ι R M) : (#ι) = Module.ran rintro ⟨s, li⟩ apply linearIndependent_le_basis v _ li #align basis.mk_eq_rank'' Basis.mk_eq_rank'' +-/ +#print Basis.mk_range_eq_rank /- theorem Basis.mk_range_eq_rank (v : Basis ι R M) : (#range v) = Module.rank R M := v.reindexRange.mk_eq_rank'' #align basis.mk_range_eq_rank Basis.mk_range_eq_rank +-/ +/- warning: rank_eq_card_basis -> rank_eq_card_basis is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}} [_inst_5 : Fintype.{u3} ι], (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) ((fun (a : Type) (b : Type.{succ u2}) [self : HasLiftT.{1, succ (succ u2)} a b] => self.0) Nat Cardinal.{u2} (HasLiftT.mk.{1, succ (succ u2)} Nat Cardinal.{u2} (CoeTCₓ.coe.{1, succ (succ u2)} Nat Cardinal.{u2} (Nat.castCoe.{succ u2} Cardinal.{u2} Cardinal.hasNatCast.{u2}))) (Fintype.card.{u3} ι _inst_5))) +but is expected to have type + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}} [_inst_5 : Fintype.{u3} ι], (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Nat.cast.{succ u2} Cardinal.{u2} Cardinal.instNatCastCardinal.{u2} (Fintype.card.{u3} ι _inst_5))) +Case conversion may be inaccurate. Consider using '#align rank_eq_card_basis rank_eq_card_basisₓ'. -/ /-- If a vector space has a finite basis, then its dimension (seen as a cardinal) is equal to the cardinality of the basis. -/ theorem rank_eq_card_basis {ι : Type w} [Fintype ι] (h : Basis ι R M) : @@ -843,38 +1097,62 @@ theorem rank_eq_card_basis {ι : Type w} [Fintype ι] (h : Basis ι R M) : rw [← h.mk_range_eq_rank, Cardinal.mk_fintype, Set.card_range_of_injective h.injective] #align rank_eq_card_basis rank_eq_card_basis +/- warning: basis.card_le_card_of_linear_independent -> Basis.card_le_card_of_linearIndependent is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}} [_inst_5 : Fintype.{u3} ι], (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (forall {ι' : Type.{u4}} [_inst_6 : Fintype.{u4} ι'] {v : ι' -> M}, (LinearIndependent.{u4, u1, u2} ι' R M v (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (LE.le.{0} Nat Nat.hasLe (Fintype.card.{u4} ι' _inst_6) (Fintype.card.{u3} ι _inst_5))) +but is expected to have type + forall {R : Type.{u3}} [_inst_1 : Ring.{u3} R] [_inst_2 : StrongRankCondition.{u3} R (Ring.toSemiring.{u3} R _inst_1)] {M : Type.{u4}} [_inst_3 : AddCommGroup.{u4} M] [_inst_4 : Module.{u3, u4} R M (Ring.toSemiring.{u3} R _inst_1) (AddCommGroup.toAddCommMonoid.{u4} M _inst_3)] {ι : Type.{u2}} [_inst_5 : Fintype.{u2} ι], (Basis.{u2, u3, u4} ι R M (Ring.toSemiring.{u3} R _inst_1) (AddCommGroup.toAddCommMonoid.{u4} M _inst_3) _inst_4) -> (forall {ι' : Type.{u1}} [_inst_6 : Fintype.{u1} ι'] {v : ι' -> M}, (LinearIndependent.{u1, u3, u4} ι' R M v (Ring.toSemiring.{u3} R _inst_1) (AddCommGroup.toAddCommMonoid.{u4} M _inst_3) _inst_4) -> (LE.le.{0} Nat instLENat (Fintype.card.{u1} ι' _inst_6) (Fintype.card.{u2} ι _inst_5))) +Case conversion may be inaccurate. Consider using '#align basis.card_le_card_of_linear_independent Basis.card_le_card_of_linearIndependentₓ'. -/ theorem Basis.card_le_card_of_linearIndependent {ι : Type _} [Fintype ι] (b : Basis ι R M) {ι' : Type _} [Fintype ι'] {v : ι' → M} (hv : LinearIndependent R v) : Fintype.card ι' ≤ Fintype.card ι := by letI := nontrivial_of_invariantBasisNumber R simpa [rank_eq_card_basis b, Cardinal.mk_fintype] using - cardinal_lift_le_rank_of_linear_independent' hv + cardinal_lift_le_rank_of_linearIndependent' hv #align basis.card_le_card_of_linear_independent Basis.card_le_card_of_linearIndependent +#print Basis.card_le_card_of_submodule /- theorem Basis.card_le_card_of_submodule (N : Submodule R M) [Fintype ι] (b : Basis ι R M) [Fintype ι'] (b' : Basis ι' R N) : Fintype.card ι' ≤ Fintype.card ι := b.card_le_card_of_linearIndependent (b'.LinearIndependent.map' N.Subtype N.ker_subtype) #align basis.card_le_card_of_submodule Basis.card_le_card_of_submodule +-/ +/- warning: basis.card_le_card_of_le -> Basis.card_le_card_of_le is a dubious translation: +lean 3 declaration is + forall {ι : Type.{u3}} {ι' : Type.{u4}} {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {N : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4} {O : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4}, (LE.le.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Preorder.toLE.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)))) N O) -> (forall [_inst_5 : Fintype.{u3} ι], (Basis.{u3, u1, u2} ι R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)) O) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 O) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 O)) -> (forall [_inst_6 : Fintype.{u4} ι'], (Basis.{u4, u1, u2} ι' R (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)) N) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 N) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 N)) -> (LE.le.{0} Nat Nat.hasLe (Fintype.card.{u4} ι' _inst_6) (Fintype.card.{u3} ι _inst_5)))) +but is expected to have type + forall {ι : Type.{u3}} {ι' : Type.{u4}} {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {N : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4} {O : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4}, (LE.le.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Preorder.toLE.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Submodule.completeLattice.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4))))) N O) -> (forall [_inst_5 : Fintype.{u3} ι], (Basis.{u3, u1, u2} ι R (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)) x O)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 O) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 O)) -> (forall [_inst_6 : Fintype.{u4} ι'], (Basis.{u4, u1, u2} ι' R (Subtype.{succ u2} M (fun (x : M) => Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)) x N)) (Ring.toSemiring.{u1} R _inst_1) (Submodule.addCommMonoid.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 N) (Submodule.module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4 N)) -> (LE.le.{0} Nat instLENat (Fintype.card.{u4} ι' _inst_6) (Fintype.card.{u3} ι _inst_5)))) +Case conversion may be inaccurate. Consider using '#align basis.card_le_card_of_le Basis.card_le_card_of_leₓ'. -/ theorem Basis.card_le_card_of_le {N O : Submodule R M} (hNO : N ≤ O) [Fintype ι] (b : Basis ι R O) [Fintype ι'] (b' : Basis ι' R N) : Fintype.card ι' ≤ Fintype.card ι := b.card_le_card_of_linearIndependent (b'.LinearIndependent.map' (Submodule.ofLe hNO) (N.ker_ofLe O _)) #align basis.card_le_card_of_le Basis.card_le_card_of_le +#print Basis.mk_eq_rank /- theorem Basis.mk_eq_rank (v : Basis ι R M) : Cardinal.lift.{v} (#ι) = Cardinal.lift.{w} (Module.rank R M) := by haveI := nontrivial_of_invariantBasisNumber R rw [← v.mk_range_eq_rank, Cardinal.mk_range_eq_of_injective v.injective] #align basis.mk_eq_rank Basis.mk_eq_rank +-/ +#print Basis.mk_eq_rank' /- theorem Basis.mk_eq_rank'.{m} (v : Basis ι R M) : Cardinal.lift.{max v m} (#ι) = Cardinal.lift.{max w m} (Module.rank R M) := by simpa using v.mk_eq_rank #align basis.mk_eq_rank' Basis.mk_eq_rank' +-/ +/- warning: basis.nonempty_fintype_index_of_rank_lt_aleph_0 -> Basis.nonempty_fintype_index_of_rank_lt_aleph0 is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}}, (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (LT.lt.{succ u2} Cardinal.{u2} (Preorder.toLT.{succ u2} Cardinal.{u2} (PartialOrder.toPreorder.{succ u2} Cardinal.{u2} (OrderedAddCommMonoid.toPartialOrder.{succ u2} Cardinal.{u2} (OrderedSemiring.toOrderedAddCommMonoid.{succ u2} Cardinal.{u2} (OrderedCommSemiring.toOrderedSemiring.{succ u2} Cardinal.{u2} (CanonicallyOrderedCommSemiring.toOrderedCommSemiring.{succ u2} Cardinal.{u2} Cardinal.canonicallyOrderedCommSemiring.{u2})))))) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) Cardinal.aleph0.{u2}) -> (Nonempty.{succ u3} (Fintype.{u3} ι)) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] [_inst_2 : StrongRankCondition.{u2} R (Ring.toSemiring.{u2} R _inst_1)] {M : Type.{u3}} [_inst_3 : AddCommGroup.{u3} M] [_inst_4 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3)] {ι : Type.{u1}}, (Basis.{u1, u2, u3} ι R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) -> (LT.lt.{succ u3} Cardinal.{u3} (Preorder.toLT.{succ u3} Cardinal.{u3} (PartialOrder.toPreorder.{succ u3} Cardinal.{u3} Cardinal.partialOrder.{u3})) (Module.rank.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) Cardinal.aleph0.{u3}) -> (Nonempty.{succ u1} (Fintype.{u1} ι)) +Case conversion may be inaccurate. Consider using '#align basis.nonempty_fintype_index_of_rank_lt_aleph_0 Basis.nonempty_fintype_index_of_rank_lt_aleph0ₓ'. -/ /-- If a module has a finite dimension, all bases are indexed by a finite type. -/ theorem Basis.nonempty_fintype_index_of_rank_lt_aleph0 {ι : Type _} (b : Basis ι R M) (h : Module.rank R M < ℵ₀) : Nonempty (Fintype ι) := by @@ -882,18 +1160,27 @@ theorem Basis.nonempty_fintype_index_of_rank_lt_aleph0 {ι : Type _} (b : Basis Cardinal.lt_aleph0_iff_fintype] at h #align basis.nonempty_fintype_index_of_rank_lt_aleph_0 Basis.nonempty_fintype_index_of_rank_lt_aleph0 +#print Basis.fintypeIndexOfRankLtAleph0 /- /-- If a module has a finite dimension, all bases are indexed by a finite type. -/ noncomputable def Basis.fintypeIndexOfRankLtAleph0 {ι : Type _} (b : Basis ι R M) (h : Module.rank R M < ℵ₀) : Fintype ι := Classical.choice (b.nonempty_fintype_index_of_rank_lt_aleph0 h) #align basis.fintype_index_of_rank_lt_aleph_0 Basis.fintypeIndexOfRankLtAleph0 +-/ +/- warning: basis.finite_index_of_rank_lt_aleph_0 -> Basis.finite_index_of_rank_lt_aleph0 is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] {ι : Type.{u3}} {s : Set.{u3} ι}, (Basis.{u3, u1, u2} (coeSort.{succ u3, succ (succ u3)} (Set.{u3} ι) Type.{u3} (Set.hasCoeToSort.{u3} ι) s) R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (LT.lt.{succ u2} Cardinal.{u2} (Preorder.toLT.{succ u2} Cardinal.{u2} (PartialOrder.toPreorder.{succ u2} Cardinal.{u2} (OrderedAddCommMonoid.toPartialOrder.{succ u2} Cardinal.{u2} (OrderedSemiring.toOrderedAddCommMonoid.{succ u2} Cardinal.{u2} (OrderedCommSemiring.toOrderedSemiring.{succ u2} Cardinal.{u2} (CanonicallyOrderedCommSemiring.toOrderedCommSemiring.{succ u2} Cardinal.{u2} Cardinal.canonicallyOrderedCommSemiring.{u2})))))) (Module.rank.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) Cardinal.aleph0.{u2}) -> (Set.Finite.{u3} ι s) +but is expected to have type + forall {R : Type.{u2}} [_inst_1 : Ring.{u2} R] [_inst_2 : StrongRankCondition.{u2} R (Ring.toSemiring.{u2} R _inst_1)] {M : Type.{u3}} [_inst_3 : AddCommGroup.{u3} M] [_inst_4 : Module.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3)] {ι : Type.{u1}} {s : Set.{u1} ι}, (Basis.{u1, u2, u3} (Set.Elem.{u1} ι s) R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) -> (LT.lt.{succ u3} Cardinal.{u3} (Preorder.toLT.{succ u3} Cardinal.{u3} (PartialOrder.toPreorder.{succ u3} Cardinal.{u3} Cardinal.partialOrder.{u3})) (Module.rank.{u2, u3} R M (Ring.toSemiring.{u2} R _inst_1) (AddCommGroup.toAddCommMonoid.{u3} M _inst_3) _inst_4) Cardinal.aleph0.{u3}) -> (Set.Finite.{u1} ι s) +Case conversion may be inaccurate. Consider using '#align basis.finite_index_of_rank_lt_aleph_0 Basis.finite_index_of_rank_lt_aleph0ₓ'. -/ /-- If a module has a finite dimension, all bases are indexed by a finite set. -/ theorem Basis.finite_index_of_rank_lt_aleph0 {ι : Type _} {s : Set ι} (b : Basis s R M) (h : Module.rank R M < ℵ₀) : s.Finite := finite_def.2 (b.nonempty_fintype_index_of_rank_lt_aleph0 h) #align basis.finite_index_of_rank_lt_aleph_0 Basis.finite_index_of_rank_lt_aleph0 +#print rank_span /- theorem rank_span {v : ι → M} (hv : LinearIndependent R v) : Module.rank R ↥(span R (range v)) = (#range v) := by @@ -901,14 +1188,23 @@ theorem rank_span {v : ι → M} (hv : LinearIndependent R v) : rw [← Cardinal.lift_inj, ← (Basis.span hv).mk_eq_rank, Cardinal.mk_range_eq_of_injective (@LinearIndependent.injective ι R M v _ _ _ _ hv)] #align rank_span rank_span +-/ +#print rank_span_set /- theorem rank_span_set {s : Set M} (hs : LinearIndependent R (fun x => x : s → M)) : Module.rank R ↥(span R s) = (#s) := by rw [← @set_of_mem_eq _ s, ← Subtype.range_coe_subtype] exact rank_span hs #align rank_span_set rank_span_set +-/ +/- warning: submodule.induction_on_rank -> Submodule.inductionOnRank is a dubious translation: +lean 3 declaration is + forall {ι : Type.{u3}} {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] [_inst_5 : IsDomain.{u1} R (Ring.toSemiring.{u1} R _inst_1)] [_inst_6 : Fintype.{u3} ι], (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (forall (P : (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> Sort.{u4}), (forall (N : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4), (forall (N' : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4), (LE.le.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Preorder.toLE.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)))) N' N) -> (forall (x : M), (Membership.Mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (SetLike.hasMem.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)) x N) -> (forall (c : R) (y : M), (Membership.Mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (SetLike.hasMem.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)) y N') -> (Eq.{succ u2} M (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (AddCommGroup.toAddGroup.{u2} M _inst_3)))))) (SMul.smul.{u1, u2} R M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)))) c x) y) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (AddCommGroup.toAddGroup.{u2} M _inst_3))))))))) -> (Eq.{succ u1} R c (OfNat.ofNat.{u1} R 0 (OfNat.mk.{u1} R 0 (Zero.zero.{u1} R (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} R (NonAssocRing.toNonUnitalNonAssocRing.{u1} R (Ring.toNonAssocRing.{u1} R _inst_1)))))))))) -> (P N'))) -> (P N)) -> (forall (N : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4), P N)) +but is expected to have type + forall {ι : Type.{u3}} {R : Type.{u1}} [_inst_1 : Ring.{u1} R] [_inst_2 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R _inst_1)] {M : Type.{u2}} [_inst_3 : AddCommGroup.{u2} M] [_inst_4 : Module.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3)] [_inst_5 : IsDomain.{u1} R (Ring.toSemiring.{u1} R _inst_1)] [_inst_6 : Fintype.{u3} ι], (Basis.{u3, u1, u2} ι R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> (forall (P : (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) -> Sort.{u4}), (forall (N : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4), (forall (N' : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4), (LE.le.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Preorder.toLE.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (Submodule.completeLattice.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4))))) N' N) -> (forall (x : M), (Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)) x N) -> (forall (c : R) (y : M), (Membership.mem.{u2, u2} M (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4) M (Submodule.setLike.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4)) y N') -> (Eq.{succ u2} M (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M (AddCommGroup.toAddGroup.{u2} M _inst_3)))))) (HSMul.hSMul.{u1, u2, u2} R M M (instHSMul.{u1, u2} R M (SMulZeroClass.toSMul.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_3))))) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_3))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1)) (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_3))))) (Module.toMulActionWithZero.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4))))) c x) y) (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (SubtractionCommMonoid.toSubtractionMonoid.{u2} M (AddCommGroup.toDivisionAddCommMonoid.{u2} M _inst_3)))))))) -> (Eq.{succ u1} R c (OfNat.ofNat.{u1} R 0 (Zero.toOfNat0.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R (Ring.toSemiring.{u1} R _inst_1))))))) -> (P N'))) -> (P N)) -> (forall (N : Submodule.{u1, u2} R M (Ring.toSemiring.{u1} R _inst_1) (AddCommGroup.toAddCommMonoid.{u2} M _inst_3) _inst_4), P N)) +Case conversion may be inaccurate. Consider using '#align submodule.induction_on_rank Submodule.inductionOnRankₓ'. -/ /-- If `N` is a submodule in a free, finitely generated module, do induction on adjoining a linear independent element to a submodule. -/ def Submodule.inductionOnRank [IsDomain R] [Fintype ι] (b : Basis ι R M) @@ -921,6 +1217,12 @@ def Submodule.inductionOnRank [IsDomain R] [Fintype ι] (b : Basis ι R M) simpa using b.card_le_card_of_linear_independent hli #align submodule.induction_on_rank Submodule.inductionOnRank +/- warning: ideal.rank_eq -> Ideal.rank_eq is a dubious translation: +lean 3 declaration is + forall {R : Type.{u1}} {S : Type.{u2}} [_inst_5 : CommRing.{u1} R] [_inst_6 : StrongRankCondition.{u1} R (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_5))] [_inst_7 : Ring.{u2} S] [_inst_8 : IsDomain.{u2} S (Ring.toSemiring.{u2} S _inst_7)] [_inst_9 : Algebra.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_5) (Ring.toSemiring.{u2} S _inst_7)] {n : Type.{u3}} {m : Type.{u4}} [_inst_10 : Fintype.{u3} n] [_inst_11 : Fintype.{u4} m], (Basis.{u3, u1, u2} n R S (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_5)) (AddCommGroup.toAddCommMonoid.{u2} S (NonUnitalNonAssocRing.toAddCommGroup.{u2} S (NonAssocRing.toNonUnitalNonAssocRing.{u2} S (Ring.toNonAssocRing.{u2} S _inst_7)))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_5) (Ring.toSemiring.{u2} S _inst_7) _inst_9)) -> (forall {I : Ideal.{u2} S (Ring.toSemiring.{u2} S _inst_7)}, (Ne.{succ u2} (Ideal.{u2} S (Ring.toSemiring.{u2} S _inst_7)) I (Bot.bot.{u2} (Ideal.{u2} S (Ring.toSemiring.{u2} S _inst_7)) (Submodule.hasBot.{u2, u2} S S (Ring.toSemiring.{u2} S _inst_7) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S _inst_7)))) (Semiring.toModule.{u2} S (Ring.toSemiring.{u2} S _inst_7))))) -> (Basis.{u4, u1, u2} m R (coeSort.{succ u2, succ (succ u2)} (Ideal.{u2} S (Ring.toSemiring.{u2} S _inst_7)) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Ideal.{u2} S (Ring.toSemiring.{u2} S _inst_7)) S (Submodule.setLike.{u2, u2} S S (Ring.toSemiring.{u2} S _inst_7) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S _inst_7)))) (Semiring.toModule.{u2} S (Ring.toSemiring.{u2} S _inst_7)))) I) (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_5)) (Submodule.addCommMonoid.{u2, u2} S S (Ring.toSemiring.{u2} S _inst_7) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S _inst_7)))) (Semiring.toModule.{u2} S (Ring.toSemiring.{u2} S _inst_7)) I) (Submodule.module'.{u1, u2, u2} R S S (Ring.toSemiring.{u2} S _inst_7) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S _inst_7)))) (Semiring.toModule.{u2} S (Ring.toSemiring.{u2} S _inst_7)) I (Ring.toSemiring.{u1} R (CommRing.toRing.{u1} R _inst_5)) (SMulZeroClass.toHasSmul.{u1, u2} R S (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S _inst_7))))))) (SMulWithZero.toSmulZeroClass.{u1, u2} R S (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_5)))))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S _inst_7))))))) (MulActionWithZero.toSMulWithZero.{u1, u2} R S (Semiring.toMonoidWithZero.{u1} R (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_5))) (AddZeroClass.toHasZero.{u2} S (AddMonoid.toAddZeroClass.{u2} S (AddCommMonoid.toAddMonoid.{u2} S (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S _inst_7))))))) (Module.toMulActionWithZero.{u1, u2} R S (CommSemiring.toSemiring.{u1} R (CommRing.toCommSemiring.{u1} R _inst_5)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} S (Semiring.toNonAssocSemiring.{u2} S (Ring.toSemiring.{u2} S _inst_7)))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_5) (Ring.toSemiring.{u2} S _inst_7) _inst_9))))) (Algebra.toModule.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_5) (Ring.toSemiring.{u2} S _inst_7) _inst_9) (IsScalarTower.right.{u1, u2} R S (CommRing.toCommSemiring.{u1} R _inst_5) (Ring.toSemiring.{u2} S _inst_7) _inst_9))) -> (Eq.{1} Nat (Fintype.card.{u4} m _inst_11) (Fintype.card.{u3} n _inst_10))) +but is expected to have type + forall {R : Type.{u4}} {S : Type.{u3}} [_inst_5 : CommRing.{u4} R] [_inst_6 : StrongRankCondition.{u4} R (Ring.toSemiring.{u4} R (CommRing.toRing.{u4} R _inst_5))] [_inst_7 : Ring.{u3} S] [_inst_8 : IsDomain.{u3} S (Ring.toSemiring.{u3} S _inst_7)] [_inst_9 : Algebra.{u4, u3} R S (CommRing.toCommSemiring.{u4} R _inst_5) (Ring.toSemiring.{u3} S _inst_7)] {n : Type.{u2}} {m : Type.{u1}} [_inst_10 : Fintype.{u2} n] [_inst_11 : Fintype.{u1} m], (Basis.{u2, u4, u3} n R S (Ring.toSemiring.{u4} R (CommRing.toRing.{u4} R _inst_5)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} S (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u3} S (NonAssocRing.toNonUnitalNonAssocRing.{u3} S (Ring.toNonAssocRing.{u3} S _inst_7)))) (Algebra.toModule.{u4, u3} R S (CommRing.toCommSemiring.{u4} R _inst_5) (Ring.toSemiring.{u3} S _inst_7) _inst_9)) -> (forall {I : Ideal.{u3} S (Ring.toSemiring.{u3} S _inst_7)}, (Ne.{succ u3} (Ideal.{u3} S (Ring.toSemiring.{u3} S _inst_7)) I (Bot.bot.{u3} (Ideal.{u3} S (Ring.toSemiring.{u3} S _inst_7)) (Submodule.instBotSubmodule.{u3, u3} S S (Ring.toSemiring.{u3} S _inst_7) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S (Semiring.toNonAssocSemiring.{u3} S (Ring.toSemiring.{u3} S _inst_7)))) (Semiring.toModule.{u3} S (Ring.toSemiring.{u3} S _inst_7))))) -> (Basis.{u1, u4, u3} m R (Subtype.{succ u3} S (fun (x : S) => Membership.mem.{u3, u3} S (Ideal.{u3} S (Ring.toSemiring.{u3} S _inst_7)) (SetLike.instMembership.{u3, u3} (Ideal.{u3} S (Ring.toSemiring.{u3} S _inst_7)) S (Submodule.setLike.{u3, u3} S S (Ring.toSemiring.{u3} S _inst_7) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S (Semiring.toNonAssocSemiring.{u3} S (Ring.toSemiring.{u3} S _inst_7)))) (Semiring.toModule.{u3} S (Ring.toSemiring.{u3} S _inst_7)))) x I)) (Ring.toSemiring.{u4} R (CommRing.toRing.{u4} R _inst_5)) (Submodule.addCommMonoid.{u3, u3} S S (Ring.toSemiring.{u3} S _inst_7) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S (Semiring.toNonAssocSemiring.{u3} S (Ring.toSemiring.{u3} S _inst_7)))) (Semiring.toModule.{u3} S (Ring.toSemiring.{u3} S _inst_7)) I) (Submodule.module'.{u4, u3, u3} R S S (Ring.toSemiring.{u3} S _inst_7) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} S (Semiring.toNonAssocSemiring.{u3} S (Ring.toSemiring.{u3} S _inst_7)))) (Semiring.toModule.{u3} S (Ring.toSemiring.{u3} S _inst_7)) I (Ring.toSemiring.{u4} R (CommRing.toRing.{u4} R _inst_5)) (Algebra.toSMul.{u4, u3} R S (CommRing.toCommSemiring.{u4} R _inst_5) (Ring.toSemiring.{u3} S _inst_7) _inst_9) (Algebra.toModule.{u4, u3} R S (CommRing.toCommSemiring.{u4} R _inst_5) (Ring.toSemiring.{u3} S _inst_7) _inst_9) (IsScalarTower.right.{u4, u3} R S (CommRing.toCommSemiring.{u4} R _inst_5) (Ring.toSemiring.{u3} S _inst_7) _inst_9))) -> (Eq.{1} Nat (Fintype.card.{u1} m _inst_11) (Fintype.card.{u2} n _inst_10))) +Case conversion may be inaccurate. Consider using '#align ideal.rank_eq Ideal.rank_eqₓ'. -/ /-- If `S` a finite-dimensional ring extension of `R` which is free as an `R`-module, then the rank of an ideal `I` of `S` over `R` is the same as the rank of `S`. -/ @@ -947,10 +1249,12 @@ theorem Ideal.rank_eq {R S : Type _} [CommRing R] [StrongRankCondition R] [Ring variable (R) +#print rank_self /- @[simp] theorem rank_self : Module.rank R R = 1 := by rw [← Cardinal.lift_inj, ← (Basis.singleton PUnit R).mk_eq_rank, Cardinal.mk_pUnit] #align rank_self rank_self +-/ end StrongRankCondition @@ -970,10 +1274,12 @@ namespace Module.Free variable (K V) +#print Module.Free.rank_eq_card_chooseBasisIndex /- /-- The rank of a free module `M` over `R` is the cardinality of `choose_basis_index R M`. -/ theorem rank_eq_card_chooseBasisIndex : Module.rank K V = (#ChooseBasisIndex K V) := (chooseBasis K V).mk_eq_rank''.symm #align module.free.rank_eq_card_choose_basis_index Module.Free.rank_eq_card_chooseBasisIndex +-/ end Module.Free @@ -981,6 +1287,7 @@ open Module.Free open Cardinal +#print nonempty_linearEquiv_of_lift_rank_eq /- /-- Two vector spaces are isomorphic if they have the same dimension. -/ theorem nonempty_linearEquiv_of_lift_rank_eq (cond : Cardinal.lift.{v'} (Module.rank K V) = Cardinal.lift.{v} (Module.rank K V')) : @@ -992,44 +1299,61 @@ theorem nonempty_linearEquiv_of_lift_rank_eq rw [B.mk_eq_rank'', cond, B'.mk_eq_rank''] exact (Cardinal.lift_mk_eq.{v, v', 0}.1 this).map (B.equiv B') #align nonempty_linear_equiv_of_lift_rank_eq nonempty_linearEquiv_of_lift_rank_eq +-/ +#print nonempty_linearEquiv_of_rank_eq /- /-- Two vector spaces are isomorphic if they have the same dimension. -/ theorem nonempty_linearEquiv_of_rank_eq (cond : Module.rank K V = Module.rank K V₁) : Nonempty (V ≃ₗ[K] V₁) := nonempty_linearEquiv_of_lift_rank_eq <| congr_arg _ cond #align nonempty_linear_equiv_of_rank_eq nonempty_linearEquiv_of_rank_eq +-/ section variable (V V' V₁) +#print LinearEquiv.ofLiftRankEq /- /-- Two vector spaces are isomorphic if they have the same dimension. -/ def LinearEquiv.ofLiftRankEq (cond : Cardinal.lift.{v'} (Module.rank K V) = Cardinal.lift.{v} (Module.rank K V')) : V ≃ₗ[K] V' := Classical.choice (nonempty_linearEquiv_of_lift_rank_eq cond) #align linear_equiv.of_lift_rank_eq LinearEquiv.ofLiftRankEq +-/ +#print LinearEquiv.ofRankEq /- /-- Two vector spaces are isomorphic if they have the same dimension. -/ def LinearEquiv.ofRankEq (cond : Module.rank K V = Module.rank K V₁) : V ≃ₗ[K] V₁ := Classical.choice (nonempty_linearEquiv_of_rank_eq cond) #align linear_equiv.of_rank_eq LinearEquiv.ofRankEq +-/ end +#print LinearEquiv.nonempty_equiv_iff_lift_rank_eq /- /-- Two vector spaces are isomorphic if and only if they have the same dimension. -/ theorem LinearEquiv.nonempty_equiv_iff_lift_rank_eq : Nonempty (V ≃ₗ[K] V') ↔ Cardinal.lift.{v'} (Module.rank K V) = Cardinal.lift.{v} (Module.rank K V') := ⟨fun ⟨h⟩ => LinearEquiv.lift_rank_eq h, fun h => nonempty_linearEquiv_of_lift_rank_eq h⟩ #align linear_equiv.nonempty_equiv_iff_lift_rank_eq LinearEquiv.nonempty_equiv_iff_lift_rank_eq +-/ +#print LinearEquiv.nonempty_equiv_iff_rank_eq /- /-- Two vector spaces are isomorphic if and only if they have the same dimension. -/ theorem LinearEquiv.nonempty_equiv_iff_rank_eq : Nonempty (V ≃ₗ[K] V₁) ↔ Module.rank K V = Module.rank K V₁ := ⟨fun ⟨h⟩ => LinearEquiv.rank_eq h, fun h => nonempty_linearEquiv_of_rank_eq h⟩ #align linear_equiv.nonempty_equiv_iff_rank_eq LinearEquiv.nonempty_equiv_iff_rank_eq +-/ +/- warning: rank_prod -> rank_prod is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} {V' : Type.{u3}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] [_inst_3 : AddCommGroup.{u2} V] [_inst_4 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3)] [_inst_5 : Module.Free.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4] [_inst_6 : AddCommGroup.{u3} V'] [_inst_7 : Module.{u1, u3} K V' (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)] [_inst_8 : Module.Free.{u1, u3} K V' (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_7], Eq.{succ (succ (max u2 u3))} Cardinal.{max u2 u3} (Module.rank.{u1, max u2 u3} K (Prod.{u2, u3} V V') (Ring.toSemiring.{u1} K _inst_1) (Prod.addCommMonoid.{u2, u3} V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)) (Prod.module.{u1, u2, u3} K V V' (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_4 _inst_7)) (HAdd.hAdd.{succ (max u2 u3), succ (max u2 u3), succ (max u2 u3)} Cardinal.{max u2 u3} Cardinal.{max u2 u3} Cardinal.{max u2 u3} (instHAdd.{succ (max u2 u3)} Cardinal.{max u2 u3} Cardinal.hasAdd.{max u2 u3}) (Cardinal.lift.{u3, u2} (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4)) (Cardinal.lift.{u2, u3} (Module.rank.{u1, u3} K V' (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_7))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} {V' : Type.{u3}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] [_inst_3 : AddCommGroup.{u2} V] [_inst_4 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3)] [_inst_5 : Module.Free.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4] [_inst_6 : AddCommGroup.{u3} V'] [_inst_7 : Module.{u1, u3} K V' (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)] [_inst_8 : Module.Free.{u1, u3} K V' (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_7], Eq.{max (succ (succ u2)) (succ (succ u3))} Cardinal.{max u3 u2} (Module.rank.{u1, max u3 u2} K (Prod.{u2, u3} V V') (Ring.toSemiring.{u1} K _inst_1) (Prod.instAddCommMonoidSum.{u2, u3} V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)) (Prod.module.{u1, u2, u3} K V V' (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_4 _inst_7)) (HAdd.hAdd.{max (succ u2) (succ u3), max (succ u2) (succ u3), max (succ u2) (succ u3)} Cardinal.{max u2 u3} Cardinal.{max u3 u2} Cardinal.{max u2 u3} (instHAdd.{max (succ u2) (succ u3)} Cardinal.{max u2 u3} Cardinal.instAddCardinal.{max u2 u3}) (Cardinal.lift.{u3, u2} (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4)) (Cardinal.lift.{u2, u3} (Module.rank.{u1, u3} K V' (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_7))) +Case conversion may be inaccurate. Consider using '#align rank_prod rank_prodₓ'. -/ /-- The rank of `M × N` is `(module.rank R M).lift + (module.rank R N).lift`. -/ @[simp] theorem rank_prod : @@ -1040,6 +1364,12 @@ theorem rank_prod : lift_umax'] using ((choose_basis K V).Prod (choose_basis K V')).mk_eq_rank.symm #align rank_prod rank_prod +/- warning: rank_prod' -> rank_prod' is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} {V₁ : Type.{u2}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] [_inst_3 : AddCommGroup.{u2} V] [_inst_4 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3)] [_inst_5 : Module.Free.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4] [_inst_9 : AddCommGroup.{u2} V₁] [_inst_10 : Module.{u1, u2} K V₁ (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_9)] [_inst_11 : Module.Free.{u1, u2} K V₁ (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_9) _inst_10], Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} K (Prod.{u2, u2} V V₁) (Ring.toSemiring.{u1} K _inst_1) (Prod.addCommMonoid.{u2, u2} V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_9)) (Prod.module.{u1, u2, u2} K V V₁ (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_9) _inst_4 _inst_10)) (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.hasAdd.{u2}) (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4) (Module.rank.{u1, u2} K V₁ (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_9) _inst_10)) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} {V₁ : Type.{u2}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] [_inst_3 : AddCommGroup.{u2} V] [_inst_4 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3)] [_inst_5 : Module.Free.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4] [_inst_9 : AddCommGroup.{u2} V₁] [_inst_10 : Module.{u1, u2} K V₁ (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_9)] [_inst_11 : Module.Free.{u1, u2} K V₁ (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_9) _inst_10], Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} K (Prod.{u2, u2} V V₁) (Ring.toSemiring.{u1} K _inst_1) (Prod.instAddCommMonoidSum.{u2, u2} V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_9)) (Prod.module.{u1, u2, u2} K V V₁ (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_9) _inst_4 _inst_10)) (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.instAddCardinal.{u2}) (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4) (Module.rank.{u1, u2} K V₁ (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_9) _inst_10)) +Case conversion may be inaccurate. Consider using '#align rank_prod' rank_prod'ₓ'. -/ /-- If `M` and `N` lie in the same universe, the rank of `M × N` is `(module.rank R M) + (module.rank R N)`. -/ theorem rank_prod' : Module.rank K (V × V₁) = Module.rank K V + Module.rank K V₁ := by simp @@ -1051,6 +1381,12 @@ variable [∀ i, AddCommGroup (φ i)] [∀ i, Module K (φ i)] [∀ i, Module.Fr open LinearMap +/- warning: rank_pi -> rank_pi is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {η : Type.{u2}} {φ : η -> Type.{u3}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] [_inst_12 : forall (i : η), AddCommGroup.{u3} (φ i)] [_inst_13 : forall (i : η), Module.{u1, u3} K (φ i) (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u3} (φ i) (_inst_12 i))] [_inst_14 : forall (i : η), Module.Free.{u1, u3} K (φ i) (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u3} (φ i) (_inst_12 i)) (_inst_13 i)] [_inst_15 : Finite.{succ u2} η], Eq.{succ (succ (max u2 u3))} Cardinal.{max u2 u3} (Module.rank.{u1, max u2 u3} K (forall (i : η), φ i) (Ring.toSemiring.{u1} K _inst_1) (Pi.addCommMonoid.{u2, u3} η (fun (i : η) => φ i) (fun (i : η) => AddCommGroup.toAddCommMonoid.{u3} (φ i) (_inst_12 i))) (Pi.module.{u2, u3, u1} η (fun (i : η) => φ i) K (Ring.toSemiring.{u1} K _inst_1) (fun (i : η) => AddCommGroup.toAddCommMonoid.{u3} (φ i) (_inst_12 i)) (fun (i : η) => _inst_13 i))) (Cardinal.sum.{u2, u3} η (fun (i : η) => Module.rank.{u1, u3} K (φ i) (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u3} (φ i) (_inst_12 i)) (_inst_13 i))) +but is expected to have type + forall {K : Type.{u2}} {η : Type.{u3}} {φ : η -> Type.{u1}} [_inst_1 : Ring.{u2} K] [_inst_2 : StrongRankCondition.{u2} K (Ring.toSemiring.{u2} K _inst_1)] [_inst_12 : forall (i : η), AddCommGroup.{u1} (φ i)] [_inst_13 : forall (i : η), Module.{u2, u1} K (φ i) (Ring.toSemiring.{u2} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (φ i) (_inst_12 i))] [_inst_14 : forall (i : η), Module.Free.{u2, u1} K (φ i) (Ring.toSemiring.{u2} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (φ i) (_inst_12 i)) (_inst_13 i)] [_inst_15 : Finite.{succ u3} η], Eq.{max (succ (succ u3)) (succ (succ u1))} Cardinal.{max u3 u1} (Module.rank.{u2, max u3 u1} K (forall (i : η), φ i) (Ring.toSemiring.{u2} K _inst_1) (Pi.addCommMonoid.{u3, u1} η (fun (i : η) => φ i) (fun (i : η) => AddCommGroup.toAddCommMonoid.{u1} (φ i) (_inst_12 i))) (Pi.module.{u3, u1, u2} η (fun (i : η) => φ i) K (Ring.toSemiring.{u2} K _inst_1) (fun (i : η) => AddCommGroup.toAddCommMonoid.{u1} (φ i) (_inst_12 i)) (fun (i : η) => _inst_13 i))) (Cardinal.sum.{u3, u1} η (fun (i : η) => Module.rank.{u2, u1} K (φ i) (Ring.toSemiring.{u2} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} (φ i) (_inst_12 i)) (_inst_13 i))) +Case conversion may be inaccurate. Consider using '#align rank_pi rank_piₓ'. -/ /-- The rank of a finite product is the sum of the ranks. -/ @[simp] theorem rank_pi [Finite η] : Module.rank K (∀ i, φ i) = Cardinal.sum fun i => Module.rank K (φ i) := @@ -1063,26 +1399,56 @@ theorem rank_pi [Finite η] : Module.rank K (∀ i, φ i) = Cardinal.sum fun i = variable [Fintype η] +/- warning: rank_fun -> rank_fun is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] {V : Type.{u1}} {η : Type.{u1}} [_inst_16 : Fintype.{u1} η] [_inst_17 : AddCommGroup.{u1} V] [_inst_18 : Module.{u1, u1} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} V _inst_17)] [_inst_19 : Module.Free.{u1, u1} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} V _inst_17) _inst_18], Eq.{succ (succ u1)} Cardinal.{u1} (Module.rank.{u1, u1} K (η -> V) (Ring.toSemiring.{u1} K _inst_1) (Pi.addCommMonoid.{u1, u1} η (fun (ᾰ : η) => V) (fun (i : η) => AddCommGroup.toAddCommMonoid.{u1} V _inst_17)) (Pi.Function.module.{u1, u1, u1} η K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} V _inst_17) _inst_18)) (HMul.hMul.{succ u1, succ u1, succ u1} Cardinal.{u1} Cardinal.{u1} Cardinal.{u1} (instHMul.{succ u1} Cardinal.{u1} Cardinal.hasMul.{u1}) ((fun (a : Type) (b : Type.{succ u1}) [self : HasLiftT.{1, succ (succ u1)} a b] => self.0) Nat Cardinal.{u1} (HasLiftT.mk.{1, succ (succ u1)} Nat Cardinal.{u1} (CoeTCₓ.coe.{1, succ (succ u1)} Nat Cardinal.{u1} (Nat.castCoe.{succ u1} Cardinal.{u1} Cardinal.hasNatCast.{u1}))) (Fintype.card.{u1} η _inst_16)) (Module.rank.{u1, u1} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} V _inst_17) _inst_18)) +but is expected to have type + forall {K : Type.{u1}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] {V : Type.{u1}} {η : Type.{u1}} [_inst_16 : Fintype.{u1} η] [_inst_17 : AddCommGroup.{u1} V] [_inst_18 : Module.{u1, u1} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} V _inst_17)] [_inst_19 : Module.Free.{u1, u1} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} V _inst_17) _inst_18], Eq.{succ (succ u1)} Cardinal.{u1} (Module.rank.{u1, u1} K (η -> V) (Ring.toSemiring.{u1} K _inst_1) (Pi.addCommMonoid.{u1, u1} η (fun (ᾰ : η) => V) (fun (i : η) => AddCommGroup.toAddCommMonoid.{u1} V _inst_17)) (Pi.module.{u1, u1, u1} η (fun (a._@.Mathlib.LinearAlgebra.Dimension._hyg.12915 : η) => V) K (Ring.toSemiring.{u1} K _inst_1) (fun (i : η) => AddCommGroup.toAddCommMonoid.{u1} V _inst_17) (fun (i : η) => _inst_18))) (HMul.hMul.{succ u1, succ u1, succ u1} Cardinal.{u1} Cardinal.{u1} Cardinal.{u1} (instHMul.{succ u1} Cardinal.{u1} Cardinal.instMulCardinal.{u1}) (Nat.cast.{succ u1} Cardinal.{u1} Cardinal.instNatCastCardinal.{u1} (Fintype.card.{u1} η _inst_16)) (Module.rank.{u1, u1} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} V _inst_17) _inst_18)) +Case conversion may be inaccurate. Consider using '#align rank_fun rank_funₓ'. -/ theorem rank_fun {V η : Type u} [Fintype η] [AddCommGroup V] [Module K V] [Module.Free K V] : Module.rank K (η → V) = Fintype.card η * Module.rank K V := by rw [rank_pi, Cardinal.sum_const', Cardinal.mk_fintype] #align rank_fun rank_fun +/- warning: rank_fun_eq_lift_mul -> rank_fun_eq_lift_mul is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} {η : Type.{u3}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] [_inst_3 : AddCommGroup.{u2} V] [_inst_4 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3)] [_inst_5 : Module.Free.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4] [_inst_15 : Fintype.{u3} η], Eq.{succ (succ (max u3 u2))} Cardinal.{max u3 u2} (Module.rank.{u1, max u3 u2} K (η -> V) (Ring.toSemiring.{u1} K _inst_1) (Pi.addCommMonoid.{u3, u2} η (fun (ᾰ : η) => V) (fun (i : η) => AddCommGroup.toAddCommMonoid.{u2} V _inst_3)) (Pi.Function.module.{u3, u1, u2} η K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4)) (HMul.hMul.{succ (max u3 u2), succ (max u3 u2), succ (max u3 u2)} Cardinal.{max u3 u2} Cardinal.{max u3 u2} Cardinal.{max u3 u2} (instHMul.{succ (max u3 u2)} Cardinal.{max u3 u2} Cardinal.hasMul.{max u3 u2}) ((fun (a : Type) (b : Type.{succ (max u3 u2)}) [self : HasLiftT.{1, succ (succ (max u3 u2))} a b] => self.0) Nat Cardinal.{max u3 u2} (HasLiftT.mk.{1, succ (succ (max u3 u2))} Nat Cardinal.{max u3 u2} (CoeTCₓ.coe.{1, succ (succ (max u3 u2))} Nat Cardinal.{max u3 u2} (Nat.castCoe.{succ (max u3 u2)} Cardinal.{max u3 u2} Cardinal.hasNatCast.{max u3 u2}))) (Fintype.card.{u3} η _inst_15)) (Cardinal.lift.{u3, u2} (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} {η : Type.{u3}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] [_inst_3 : AddCommGroup.{u2} V] [_inst_4 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3)] [_inst_5 : Module.Free.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4] [_inst_15 : Fintype.{u3} η], Eq.{max (succ (succ u3)) (succ (succ u2))} Cardinal.{max u3 u2} (Module.rank.{u1, max u3 u2} K (η -> V) (Ring.toSemiring.{u1} K _inst_1) (Pi.addCommMonoid.{u3, u2} η (fun (ᾰ : η) => V) (fun (i : η) => AddCommGroup.toAddCommMonoid.{u2} V _inst_3)) (Pi.module.{u3, u2, u1} η (fun (a._@.Mathlib.LinearAlgebra.Dimension._hyg.13049 : η) => V) K (Ring.toSemiring.{u1} K _inst_1) (fun (i : η) => AddCommGroup.toAddCommMonoid.{u2} V _inst_3) (fun (i : η) => _inst_4))) (HMul.hMul.{max (succ u3) (succ u2), max (succ u3) (succ u2), max (succ u3) (succ u2)} Cardinal.{max u3 u2} Cardinal.{max u2 u3} Cardinal.{max u3 u2} (instHMul.{max (succ u3) (succ u2)} Cardinal.{max u3 u2} Cardinal.instMulCardinal.{max u3 u2}) (Nat.cast.{max (succ u3) (succ u2)} Cardinal.{max u3 u2} Cardinal.instNatCastCardinal.{max u3 u2} (Fintype.card.{u3} η _inst_15)) (Cardinal.lift.{u3, u2} (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4))) +Case conversion may be inaccurate. Consider using '#align rank_fun_eq_lift_mul rank_fun_eq_lift_mulₓ'. -/ theorem rank_fun_eq_lift_mul : Module.rank K (η → V) = (Fintype.card η : Cardinal.{max u₁' v}) * Cardinal.lift.{u₁'} (Module.rank K V) := by rw [rank_pi, Cardinal.sum_const, Cardinal.mk_fintype, Cardinal.lift_natCast] #align rank_fun_eq_lift_mul rank_fun_eq_lift_mul +/- warning: rank_fun' -> rank_fun' is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {η : Type.{u2}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] [_inst_15 : Fintype.{u2} η], Eq.{succ (succ (max u2 u1))} Cardinal.{max u2 u1} (Module.rank.{u1, max u2 u1} K (η -> K) (Ring.toSemiring.{u1} K _inst_1) (Pi.addCommMonoid.{u2, u1} η (fun (ᾰ : η) => K) (fun (i : η) => AddCommGroup.toAddCommMonoid.{u1} K (NonUnitalNonAssocRing.toAddCommGroup.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1))))) (Pi.Function.module.{u2, u1, u1} η K K (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} K (NonUnitalNonAssocRing.toAddCommGroup.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1)))) (Semiring.toModule.{u1} K (Ring.toSemiring.{u1} K _inst_1)))) ((fun (a : Type) (b : Type.{succ (max u2 u1)}) [self : HasLiftT.{1, succ (succ (max u2 u1))} a b] => self.0) Nat Cardinal.{max u2 u1} (HasLiftT.mk.{1, succ (succ (max u2 u1))} Nat Cardinal.{max u2 u1} (CoeTCₓ.coe.{1, succ (succ (max u2 u1))} Nat Cardinal.{max u2 u1} (Nat.castCoe.{succ (max u2 u1)} Cardinal.{max u2 u1} Cardinal.hasNatCast.{max u2 u1}))) (Fintype.card.{u2} η _inst_15)) +but is expected to have type + forall {K : Type.{u1}} {η : Type.{u2}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] [_inst_15 : Fintype.{u2} η], Eq.{max (succ (succ u1)) (succ (succ u2))} Cardinal.{max u1 u2} (Module.rank.{u1, max u1 u2} K (η -> K) (Ring.toSemiring.{u1} K _inst_1) (Pi.addCommMonoid.{u2, u1} η (fun (ᾰ : η) => K) (fun (i : η) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1))))) (Pi.module.{u2, u1, u1} η (fun (a._@.Mathlib.LinearAlgebra.Dimension._hyg.13196 : η) => K) K (Ring.toSemiring.{u1} K _inst_1) (fun (i : η) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1)))) (fun (i : η) => instModuleToSemiringToAddCommMonoidToNonUnitalNonAssocSemiringToNonUnitalNonAssocRingToNonUnitalRing.{u1} K _inst_1))) (Nat.cast.{max (succ u1) (succ u2)} Cardinal.{max u1 u2} Cardinal.instNatCastCardinal.{max u1 u2} (Fintype.card.{u2} η _inst_15)) +Case conversion may be inaccurate. Consider using '#align rank_fun' rank_fun'ₓ'. -/ theorem rank_fun' : Module.rank K (η → K) = Fintype.card η := by rw [rank_fun_eq_lift_mul, rank_self, Cardinal.lift_one, mul_one, Cardinal.natCast_inj] #align rank_fun' rank_fun' +/- warning: rank_fin_fun -> rank_fin_fun is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] (n : Nat), Eq.{succ (succ u1)} Cardinal.{u1} (Module.rank.{u1, u1} K ((Fin n) -> K) (Ring.toSemiring.{u1} K _inst_1) (Pi.addCommMonoid.{0, u1} (Fin n) (fun (ᾰ : Fin n) => K) (fun (i : Fin n) => AddCommGroup.toAddCommMonoid.{u1} K (NonUnitalNonAssocRing.toAddCommGroup.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1))))) (Pi.Function.module.{0, u1, u1} (Fin n) K K (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} K (NonUnitalNonAssocRing.toAddCommGroup.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1)))) (Semiring.toModule.{u1} K (Ring.toSemiring.{u1} K _inst_1)))) ((fun (a : Type) (b : Type.{succ u1}) [self : HasLiftT.{1, succ (succ u1)} a b] => self.0) Nat Cardinal.{u1} (HasLiftT.mk.{1, succ (succ u1)} Nat Cardinal.{u1} (CoeTCₓ.coe.{1, succ (succ u1)} Nat Cardinal.{u1} (Nat.castCoe.{succ u1} Cardinal.{u1} Cardinal.hasNatCast.{u1}))) n) +but is expected to have type + forall {K : Type.{u1}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] (n : Nat), Eq.{succ (succ u1)} Cardinal.{u1} (Module.rank.{u1, u1} K ((Fin n) -> K) (Ring.toSemiring.{u1} K _inst_1) (Pi.addCommMonoid.{0, u1} (Fin n) (fun (ᾰ : Fin n) => K) (fun (i : Fin n) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1))))) (Pi.module.{0, u1, u1} (Fin n) (fun (a._@.Mathlib.LinearAlgebra.Dimension._hyg.13332 : Fin n) => K) K (Ring.toSemiring.{u1} K _inst_1) (fun (i : Fin n) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1)))) (fun (i : Fin n) => instModuleToSemiringToAddCommMonoidToNonUnitalNonAssocSemiringToNonUnitalNonAssocRingToNonUnitalRing.{u1} K _inst_1))) (Nat.cast.{succ u1} Cardinal.{u1} Cardinal.instNatCastCardinal.{u1} n) +Case conversion may be inaccurate. Consider using '#align rank_fin_fun rank_fin_funₓ'. -/ theorem rank_fin_fun (n : ℕ) : Module.rank K (Fin n → K) = n := by simp [rank_fun'] #align rank_fin_fun rank_fin_fun end Fintype +/- warning: fin_dim_vectorspace_equiv -> finDimVectorspaceEquiv is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] [_inst_3 : AddCommGroup.{u2} V] [_inst_4 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3)] [_inst_5 : Module.Free.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4] (n : Nat), (Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4) ((fun (a : Type) (b : Type.{succ u2}) [self : HasLiftT.{1, succ (succ u2)} a b] => self.0) Nat Cardinal.{u2} (HasLiftT.mk.{1, succ (succ u2)} Nat Cardinal.{u2} (CoeTCₓ.coe.{1, succ (succ u2)} Nat Cardinal.{u2} (Nat.castCoe.{succ u2} Cardinal.{u2} Cardinal.hasNatCast.{u2}))) n)) -> (LinearEquiv.{u1, u1, u2, u1} K K (Ring.toSemiring.{u1} K _inst_1) (Ring.toSemiring.{u1} K _inst_1) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K _inst_1))) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K _inst_1))) (finDimVectorspaceEquiv._proof_1.{u1} K _inst_1) (finDimVectorspaceEquiv._proof_2.{u1} K _inst_1) V ((Fin n) -> K) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) (Pi.addCommMonoid.{0, u1} (Fin n) (fun (ᾰ : Fin n) => K) (fun (i : Fin n) => AddCommGroup.toAddCommMonoid.{u1} K (NonUnitalNonAssocRing.toAddCommGroup.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1))))) _inst_4 (Pi.Function.module.{0, u1, u1} (Fin n) K K (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u1} K (NonUnitalNonAssocRing.toAddCommGroup.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1)))) (Semiring.toModule.{u1} K (Ring.toSemiring.{u1} K _inst_1)))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : Ring.{u1} K] [_inst_2 : StrongRankCondition.{u1} K (Ring.toSemiring.{u1} K _inst_1)] [_inst_3 : AddCommGroup.{u2} V] [_inst_4 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3)] [_inst_5 : Module.Free.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4] (n : Nat), (Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) _inst_4) (Nat.cast.{succ u2} Cardinal.{u2} Cardinal.instNatCastCardinal.{u2} n)) -> (LinearEquiv.{u1, u1, u2, u1} K K (Ring.toSemiring.{u1} K _inst_1) (Ring.toSemiring.{u1} K _inst_1) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1))) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K _inst_1))) (RingHomInvPair.ids.{u1} K (Ring.toSemiring.{u1} K _inst_1)) (RingHomInvPair.ids.{u1} K (Ring.toSemiring.{u1} K _inst_1)) V ((Fin n) -> K) (AddCommGroup.toAddCommMonoid.{u2} V _inst_3) (Pi.addCommMonoid.{0, u1} (Fin n) (fun (ᾰ : Fin n) => K) (fun (i : Fin n) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1))))) _inst_4 (Pi.module.{0, u1, u1} (Fin n) (fun (a._@.Mathlib.LinearAlgebra.Dimension._hyg.13420 : Fin n) => K) K (Ring.toSemiring.{u1} K _inst_1) (fun (i : Fin n) => NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} K (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} K (NonAssocRing.toNonUnitalNonAssocRing.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1)))) (fun (i : Fin n) => instModuleToSemiringToAddCommMonoidToNonUnitalNonAssocSemiringToNonUnitalNonAssocRingToNonUnitalRing.{u1} K _inst_1))) +Case conversion may be inaccurate. Consider using '#align fin_dim_vectorspace_equiv finDimVectorspaceEquivₓ'. -/ -- TODO: merge with the `finrank` content /-- An `n`-dimensional `K`-vector space is equivalent to `fin n → K`. -/ def finDimVectorspaceEquiv (n : ℕ) (hn : Module.rank K V = n) : V ≃ₗ[K] Fin n → K := @@ -1110,12 +1476,15 @@ variable [AddCommGroup V₁] [Module K V₁] variable {K V} +#print Basis.finite_ofVectorSpaceIndex_of_rank_lt_aleph0 /- /-- If a vector space has a finite dimension, the index set of `basis.of_vector_space` is finite. -/ theorem Basis.finite_ofVectorSpaceIndex_of_rank_lt_aleph0 (h : Module.rank K V < ℵ₀) : (Basis.ofVectorSpaceIndex K V).Finite := finite_def.2 <| (Basis.ofVectorSpace K V).nonempty_fintype_index_of_rank_lt_aleph0 h #align basis.finite_of_vector_space_index_of_rank_lt_aleph_0 Basis.finite_ofVectorSpaceIndex_of_rank_lt_aleph0 +-/ +#print rank_span_le /- -- TODO how far can we generalise this? -- When `s` is finite, we could prove this for any ring satisfying the strong rank condition -- using `linear_independent_le_span'` @@ -1125,7 +1494,9 @@ theorem rank_span_le (s : Set V) : Module.rank K (span K s) ≤ (#s) := convert Cardinal.mk_le_mk_of_subset hb rw [← hsab, rank_span_set hlib] #align rank_span_le rank_span_le +-/ +#print rank_span_of_finset /- theorem rank_span_of_finset (s : Finset V) : Module.rank K (span K (↑s : Set V)) < ℵ₀ := calc Module.rank K (span K (↑s : Set V)) ≤ (#(↑s : Set V)) := rank_span_le ↑s @@ -1133,7 +1504,14 @@ theorem rank_span_of_finset (s : Finset V) : Module.rank K (span K (↑s : Set V _ < ℵ₀ := Cardinal.nat_lt_aleph0 _ #align rank_span_of_finset rank_span_of_finset +-/ +/- warning: rank_quotient_add_rank -> rank_quotient_add_rank is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] (p : Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3), Eq.{succ (succ u2)} Cardinal.{u2} (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.hasAdd.{u2}) (Module.rank.{u1, u2} K (HasQuotient.Quotient.{u2, u2} V (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.hasQuotient.{u1, u2} K V (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3) p) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} (HasQuotient.Quotient.{u2, u2} V (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.hasQuotient.{u1, u2} K V (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3) p) (Submodule.Quotient.addCommGroup.{u1, u2} K V (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 p)) (Submodule.Quotient.module.{u1, u2} K V (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 p)) (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) p) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 p) (Submodule.module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 p))) (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] (p : Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3), Eq.{succ (succ u2)} Cardinal.{u2} (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.instAddCardinal.{u2}) (Module.rank.{u1, u2} K (HasQuotient.Quotient.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.hasQuotient.{u1, u2} K V (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3) p) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} (HasQuotient.Quotient.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.hasQuotient.{u1, u2} K V (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3) p) (Submodule.Quotient.addCommGroup.{u1, u2} K V (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 p)) (Submodule.Quotient.module.{u1, u2} K V (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 p)) (Module.rank.{u1, u2} K (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x p)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 p) (Submodule.module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 p))) (Module.rank.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) +Case conversion may be inaccurate. Consider using '#align rank_quotient_add_rank rank_quotient_add_rankₓ'. -/ theorem rank_quotient_add_rank (p : Submodule K V) : Module.rank K (V ⧸ p) + Module.rank K p = Module.rank K V := by classical exact @@ -1141,6 +1519,12 @@ theorem rank_quotient_add_rank (p : Submodule K V) : rank_prod'.symm.trans f.rank_eq #align rank_quotient_add_rank rank_quotient_add_rank +/- warning: rank_range_add_rank_ker -> rank_range_add_rank_ker is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} {V₁ : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u2} V₁] [_inst_7 : Module.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7), Eq.{succ (succ u2)} Cardinal.{u2} (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.hasAdd.{u2}) (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7) V₁ (Submodule.setLike.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7)) (LinearMap.range.{u1, u1, u2, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) (RingHomSurjective.ids.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))) f)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7 (LinearMap.range.{u1, u1, u2, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) (RingHomSurjective.ids.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))) f)) (Submodule.module.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7 (LinearMap.range.{u1, u1, u2, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) (RingHomSurjective.ids.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))) f))) (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (LinearMap.ker.{u1, u1, u2, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (LinearMap.ker.{u1, u1, u2, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f)) (Submodule.module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (LinearMap.ker.{u1, u1, u2, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f)))) (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} {V₁ : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u2} V₁] [_inst_7 : Module.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7), Eq.{succ (succ u2)} Cardinal.{u2} (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.instAddCardinal.{u2}) (Module.rank.{u1, u2} K (Subtype.{succ u2} V₁ (fun (x : V₁) => Membership.mem.{u2, u2} V₁ (Submodule.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7) V₁ (Submodule.setLike.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7)) x (LinearMap.range.{u1, u1, u2, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) (RingHomSurjective.ids.{u1} K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1))) f))) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7 (LinearMap.range.{u1, u1, u2, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) (RingHomSurjective.ids.{u1} K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1))) f)) (Submodule.module.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7 (LinearMap.range.{u1, u1, u2, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) (RingHomSurjective.ids.{u1} K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1))) f))) (Module.rank.{u1, u2} K (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (LinearMap.ker.{u1, u1, u2, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f))) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (LinearMap.ker.{u1, u1, u2, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f)) (Submodule.module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (LinearMap.ker.{u1, u1, u2, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f)))) (Module.rank.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) +Case conversion may be inaccurate. Consider using '#align rank_range_add_rank_ker rank_range_add_rank_kerₓ'. -/ /-- rank-nullity theorem -/ theorem rank_range_add_rank_ker (f : V →ₗ[K] V₁) : Module.rank K f.range + Module.rank K f.ker = Module.rank K V := @@ -1149,6 +1533,12 @@ theorem rank_range_add_rank_ker (f : V →ₗ[K] V₁) : rw [← f.quot_ker_equiv_range.rank_eq, rank_quotient_add_rank] #align rank_range_add_rank_ker rank_range_add_rank_ker +/- warning: rank_eq_of_surjective -> rank_eq_of_surjective is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} {V₁ : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u2} V₁] [_inst_7 : Module.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7), (Function.Surjective.{succ u2, succ u2} V V₁ (coeFn.{succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (fun (_x : LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) => V -> V₁) (LinearMap.hasCoeToFun.{u1, u1, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f)) -> (Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.hasAdd.{u2}) (Module.rank.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7) (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (LinearMap.ker.{u1, u1, u2, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (LinearMap.ker.{u1, u1, u2, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f)) (Submodule.module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (LinearMap.ker.{u1, u1, u2, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} K K V V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f))))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} {V₁ : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u2} V₁] [_inst_7 : Module.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6)] (f : LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7), (Function.Surjective.{succ u2, succ u2} V V₁ (FunLike.coe.{succ u2, succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V) => V₁) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f)) -> (Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.instAddCardinal.{u2}) (Module.rank.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7) (Module.rank.{u1, u2} K (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (LinearMap.ker.{u1, u1, u2, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f))) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (LinearMap.ker.{u1, u1, u2, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f)) (Submodule.module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (LinearMap.ker.{u1, u1, u2, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V₁ (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} K K V V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f))))) +Case conversion may be inaccurate. Consider using '#align rank_eq_of_surjective rank_eq_of_surjectiveₓ'. -/ theorem rank_eq_of_surjective (f : V →ₗ[K] V₁) (h : Surjective f) : Module.rank K V = Module.rank K V₁ + Module.rank K f.ker := by rw [← rank_range_add_rank_ker f, ← rank_range_of_surjective f h] @@ -1162,6 +1552,12 @@ variable [AddCommGroup V₃] [Module K V₃] open LinearMap +/- warning: rank_add_rank_split -> rank_add_rank_split is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} {V₁ : Type.{u2}} {V₂ : Type.{u2}} {V₃ : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u2} V₁] [_inst_7 : Module.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6)] [_inst_8 : AddCommGroup.{u2} V₂] [_inst_9 : Module.{u1, u2} K V₂ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8)] [_inst_10 : AddCommGroup.{u2} V₃] [_inst_11 : Module.{u1, u2} K V₃ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10)] (db : LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₂ V (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3) (eb : LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₃ V (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3) (cd : LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V₂ (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9) (ce : LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V₃ (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) _inst_7 _inst_11), (LE.le.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) (Top.top.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.hasTop.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (Sup.sup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toHasSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) (LinearMap.range.{u1, u1, u2, u2, u2} K K V₂ V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₂ V (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} K K V₂ V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) (RingHomSurjective.ids.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))) db) (LinearMap.range.{u1, u1, u2, u2, u2} K K V₃ V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₃ V (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} K K V₃ V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) (RingHomSurjective.ids.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))) eb))) -> (Eq.{succ u2} (Submodule.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7) (LinearMap.ker.{u1, u1, u2, u2, u2} K K V₁ V₂ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V₂ (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9) (LinearMap.semilinearMapClass.{u1, u1, u2, u2} K K V₁ V₂ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) cd) (Bot.bot.{u2} (Submodule.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7) (Submodule.hasBot.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7))) -> (Eq.{succ u2} (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_7 _inst_3) (LinearMap.comp.{u1, u1, u1, u2, u2, u2} K K K V₁ V₂ V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_7 _inst_9 _inst_3 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (RingHomCompTriple.right_ids.{u1, u1} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) db cd) (LinearMap.comp.{u1, u1, u1, u2, u2, u2} K K K V₁ V₃ V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_7 _inst_11 _inst_3 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (RingHomCompTriple.right_ids.{u1, u1} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) eb ce)) -> (forall (d : V₂) (e : V₃), (Eq.{succ u2} V (coeFn.{succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₂ V (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3) (fun (_x : LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₂ V (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3) => V₂ -> V) (LinearMap.hasCoeToFun.{u1, u1, u2, u2} K K V₂ V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) db d) (coeFn.{succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₃ V (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3) (fun (_x : LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₃ V (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3) => V₃ -> V) (LinearMap.hasCoeToFun.{u1, u1, u2, u2} K K V₃ V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) eb e)) -> (Exists.{succ u2} V₁ (fun (c : V₁) => And (Eq.{succ u2} V₂ (coeFn.{succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V₂ (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9) (fun (_x : LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V₂ (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9) => V₁ -> V₂) (LinearMap.hasCoeToFun.{u1, u1, u2, u2} K K V₁ V₂ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) cd c) d) (Eq.{succ u2} V₃ (coeFn.{succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V₃ (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) _inst_7 _inst_11) (fun (_x : LinearMap.{u1, u1, u2, u2} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V₃ (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) _inst_7 _inst_11) => V₁ -> V₃) (LinearMap.hasCoeToFun.{u1, u1, u2, u2} K K V₁ V₃ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) _inst_7 _inst_11 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) ce c) e)))) -> (Eq.{succ (succ u2)} Cardinal.{u2} (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.hasAdd.{u2}) (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Module.rank.{u1, u2} K V₁ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7)) (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.hasAdd.{u2}) (Module.rank.{u1, u2} K V₂ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_9) (Module.rank.{u1, u2} K V₃ (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) _inst_11))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} {V₁ : Type.{u2}} {V₂ : Type.{u2}} {V₃ : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u2} V₁] [_inst_7 : Module.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6)] [_inst_8 : AddCommGroup.{u2} V₂] [_inst_9 : Module.{u1, u2} K V₂ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8)] [_inst_10 : AddCommGroup.{u2} V₃] [_inst_11 : Module.{u1, u2} K V₃ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10)] (db : LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₂ V (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3) (eb : LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₃ V (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3) (cd : LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V₂ (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9) (ce : LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V₃ (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) _inst_7 _inst_11), (LE.le.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) (Top.top.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.instTopSubmodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (Sup.sup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) (LinearMap.range.{u1, u1, u2, u2, u2} K K V₂ V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₂ V (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} K K V₂ V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) (RingHomSurjective.ids.{u1} K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1))) db) (LinearMap.range.{u1, u1, u2, u2, u2} K K V₃ V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₃ V (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} K K V₃ V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) (RingHomSurjective.ids.{u1} K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1))) eb))) -> (Eq.{succ u2} (Submodule.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7) (LinearMap.ker.{u1, u1, u2, u2, u2} K K V₁ V₂ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V₂ (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9) (LinearMap.instSemilinearMapClassLinearMap.{u1, u1, u2, u2} K K V₁ V₂ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) cd) (Bot.bot.{u2} (Submodule.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7) (Submodule.instBotSubmodule.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7))) -> (Eq.{succ u2} (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_7 _inst_3) (LinearMap.comp.{u1, u1, u1, u2, u2, u2} K K K V₁ V₂ V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_7 _inst_9 _inst_3 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (RingHomCompTriple.ids.{u1, u1} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) db cd) (LinearMap.comp.{u1, u1, u1, u2, u2, u2} K K K V₁ V₃ V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_7 _inst_11 _inst_3 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) (RingHomCompTriple.ids.{u1, u1} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) eb ce)) -> (forall (d : V₂) (e : V₃), (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V₂) => V) d) (FunLike.coe.{succ u2, succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₂ V (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3) V₂ (fun (_x : V₂) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V₂) => V) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u2} K K V₂ V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_9 _inst_3 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) db d) (FunLike.coe.{succ u2, succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₃ V (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3) V₃ (fun (_x : V₃) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V₃) => V) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u2} K K V₃ V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_11 _inst_3 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) eb e)) -> (Exists.{succ u2} V₁ (fun (c : V₁) => And (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V₁) => V₂) c) (FunLike.coe.{succ u2, succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V₂ (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V₁) => V₂) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u2} K K V₁ V₂ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_7 _inst_9 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) cd c) d) (Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V₁) => V₃) c) (FunLike.coe.{succ u2, succ u2, succ u2} (LinearMap.{u1, u1, u2, u2} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V₁ V₃ (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) _inst_7 _inst_11) V₁ (fun (_x : V₁) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V₁) => V₃) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u2} K K V₁ V₃ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) _inst_7 _inst_11 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) ce c) e)))) -> (Eq.{succ (succ u2)} Cardinal.{u2} (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.instAddCardinal.{u2}) (Module.rank.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Module.rank.{u1, u2} K V₁ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₁ _inst_6) _inst_7)) (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.instAddCardinal.{u2}) (Module.rank.{u1, u2} K V₂ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₂ _inst_8) _inst_9) (Module.rank.{u1, u2} K V₃ (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V₃ _inst_10) _inst_11))) +Case conversion may be inaccurate. Consider using '#align rank_add_rank_split rank_add_rank_splitₓ'. -/ /-- This is mostly an auxiliary lemma for `submodule.rank_sup_add_rank_inf_eq`. -/ theorem rank_add_rank_split (db : V₂ →ₗ[K] V) (eb : V₃ →ₗ[K] V) (cd : V₁ →ₗ[K] V₂) (ce : V₁ →ₗ[K] V₃) (hde : ⊤ ≤ db.range ⊔ eb.range) (hgd : ker cd = ⊥) @@ -1193,6 +1589,12 @@ theorem rank_add_rank_split (db : V₂ →ₗ[K] V) (eb : V₃ →ₗ[K] V) (cd rw [h₂, _root_.neg_neg] #align rank_add_rank_split rank_add_rank_split +/- warning: submodule.rank_sup_add_rank_inf_eq -> Submodule.rank_sup_add_rank_inf_eq is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] (s : Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (t : Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3), Eq.{succ (succ u2)} Cardinal.{u2} (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.hasAdd.{u2}) (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (Sup.sup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toHasSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s t)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Sup.sup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toHasSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s t)) (Submodule.module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Sup.sup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toHasSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s t))) (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (Inf.inf.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.hasInf.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) s t)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Inf.inf.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.hasInf.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) s t)) (Submodule.module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Inf.inf.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.hasInf.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) s t)))) (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.hasAdd.{u2}) (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) s) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s) (Submodule.module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s)) (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) t) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 t) (Submodule.module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 t))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] (s : Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (t : Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3), Eq.{succ (succ u2)} Cardinal.{u2} (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.instAddCardinal.{u2}) (Module.rank.{u1, u2} K (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (Sup.sup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s t))) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Sup.sup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s t)) (Submodule.module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Sup.sup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s t))) (Module.rank.{u1, u2} K (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (Inf.inf.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.instInfSubmodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) s t))) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Inf.inf.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.instInfSubmodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) s t)) (Submodule.module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Inf.inf.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.instInfSubmodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) s t)))) (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.instAddCardinal.{u2}) (Module.rank.{u1, u2} K (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x s)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s) (Submodule.module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s)) (Module.rank.{u1, u2} K (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x t)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 t) (Submodule.module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 t))) +Case conversion may be inaccurate. Consider using '#align submodule.rank_sup_add_rank_inf_eq Submodule.rank_sup_add_rank_inf_eqₓ'. -/ theorem Submodule.rank_sup_add_rank_inf_eq (s t : Submodule K V) : Module.rank K (s ⊔ t : Submodule K V) + Module.rank K (s ⊓ t : Submodule K V) = Module.rank K s + Module.rank K t := @@ -1209,6 +1611,12 @@ theorem Submodule.rank_sup_add_rank_inf_eq (s t : Submodule K V) : exact ⟨⟨b₁, hb₁, hb₂⟩, rfl, rfl⟩) #align submodule.rank_sup_add_rank_inf_eq Submodule.rank_sup_add_rank_inf_eq +/- warning: submodule.rank_add_le_rank_add_rank -> Submodule.rank_add_le_rank_add_rank is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] (s : Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (t : Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3), LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (Sup.sup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toHasSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s t)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Sup.sup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toHasSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s t)) (Submodule.module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Sup.sup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toHasSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s t))) (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.hasAdd.{u2}) (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) s) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s) (Submodule.module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s)) (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) t) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 t) (Submodule.module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 t))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] (s : Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (t : Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3), LE.le.{succ u2} Cardinal.{u2} Cardinal.instLECardinal.{u2} (Module.rank.{u1, u2} K (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x (Sup.sup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s t))) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Sup.sup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s t)) (Submodule.module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Sup.sup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SemilatticeSup.toSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Lattice.toSemilatticeSup.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (ConditionallyCompleteLattice.toLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.toConditionallyCompleteLattice.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s t))) (HAdd.hAdd.{succ u2, succ u2, succ u2} Cardinal.{u2} Cardinal.{u2} Cardinal.{u2} (instHAdd.{succ u2} Cardinal.{u2} Cardinal.instAddCardinal.{u2}) (Module.rank.{u1, u2} K (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x s)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s) (Submodule.module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s)) (Module.rank.{u1, u2} K (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x t)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 t) (Submodule.module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 t))) +Case conversion may be inaccurate. Consider using '#align submodule.rank_add_le_rank_add_rank Submodule.rank_add_le_rank_add_rankₓ'. -/ theorem Submodule.rank_add_le_rank_add_rank (s t : Submodule K V) : Module.rank K (s ⊔ t : Submodule K V) ≤ Module.rank K s + Module.rank K t := by @@ -1226,6 +1634,7 @@ variable [DivisionRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₁] [Mod variable [AddCommGroup V'] [Module K V'] +#print Basis.ofRankEqZero /- /-- The `ι` indexed basis on `V`, where `ι` is an empty type and `V` is zero-dimensional. See also `finite_dimensional.fin_basis`. @@ -1234,13 +1643,21 @@ def Basis.ofRankEqZero {ι : Type _} [IsEmpty ι] (hV : Module.rank K V = 0) : B haveI : Subsingleton V := rank_zero_iff.1 hV Basis.empty _ #align basis.of_rank_eq_zero Basis.ofRankEqZero +-/ +/- warning: basis.of_rank_eq_zero_apply -> Basis.ofRankEqZero_apply is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] {ι : Type.{u3}} [_inst_8 : IsEmpty.{succ u3} ι] (hV : Eq.{succ (succ u2)} Cardinal.{u2} (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (OfNat.ofNat.{succ u2} Cardinal.{u2} 0 (OfNat.mk.{succ u2} Cardinal.{u2} 0 (Zero.zero.{succ u2} Cardinal.{u2} Cardinal.hasZero.{u2})))) (i : ι), Eq.{succ u2} V (coeFn.{max (succ u3) (succ u1) (succ u2), max (succ u3) (succ u2)} (Basis.{u3, u1, u2} ι K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (fun (_x : Basis.{u3, u1, u2} ι K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) => ι -> V) (FunLike.hasCoeToFun.{max (succ u3) (succ u1) (succ u2), succ u3, succ u2} (Basis.{u3, u1, u2} ι K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) ι (fun (_x : ι) => V) (Basis.funLike.{u3, u1, u2} ι K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (Basis.ofRankEqZero.{u1, u2, u3} K V _inst_1 _inst_2 _inst_3 ι _inst_8 hV) i) (OfNat.ofNat.{u2} V 0 (OfNat.mk.{u2} V 0 (Zero.zero.{u2} V (AddZeroClass.toHasZero.{u2} V (AddMonoid.toAddZeroClass.{u2} V (SubNegMonoid.toAddMonoid.{u2} V (AddGroup.toSubNegMonoid.{u2} V (AddCommGroup.toAddGroup.{u2} V _inst_2)))))))) +but is expected to have type + forall {K : Type.{u2}} {V : Type.{u3}} [_inst_1 : DivisionRing.{u2} K] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u2, u3} K V (DivisionSemiring.toSemiring.{u2} K (DivisionRing.toDivisionSemiring.{u2} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] {ι : Type.{u1}} [_inst_8 : IsEmpty.{succ u1} ι] (hV : Eq.{succ (succ u3)} Cardinal.{u3} (Module.rank.{u2, u3} K V (DivisionSemiring.toSemiring.{u2} K (DivisionRing.toDivisionSemiring.{u2} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (OfNat.ofNat.{succ u3} Cardinal.{u3} 0 (Zero.toOfNat0.{succ u3} Cardinal.{u3} Cardinal.instZeroCardinal.{u3}))) (i : ι), Eq.{succ u3} ((fun (x._@.Mathlib.LinearAlgebra.Basis._hyg.548 : ι) => V) i) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), succ u1, succ u3} (Basis.{u1, u2, u3} ι K V (DivisionSemiring.toSemiring.{u2} K (DivisionRing.toDivisionSemiring.{u2} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) ι (fun (_x : ι) => (fun (x._@.Mathlib.LinearAlgebra.Basis._hyg.548 : ι) => V) _x) (Basis.funLike.{u1, u2, u3} ι K V (DivisionSemiring.toSemiring.{u2} K (DivisionRing.toDivisionSemiring.{u2} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) _inst_3) (Basis.ofRankEqZero.{u2, u3, u1} K V _inst_1 _inst_2 _inst_3 ι _inst_8 hV) i) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.LinearAlgebra.Basis._hyg.548 : ι) => V) i) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.LinearAlgebra.Basis._hyg.548 : ι) => V) i) (NegZeroClass.toZero.{u3} ((fun (x._@.Mathlib.LinearAlgebra.Basis._hyg.548 : ι) => V) i) (SubNegZeroMonoid.toNegZeroClass.{u3} ((fun (x._@.Mathlib.LinearAlgebra.Basis._hyg.548 : ι) => V) i) (SubtractionMonoid.toSubNegZeroMonoid.{u3} ((fun (x._@.Mathlib.LinearAlgebra.Basis._hyg.548 : ι) => V) i) (SubtractionCommMonoid.toSubtractionMonoid.{u3} ((fun (x._@.Mathlib.LinearAlgebra.Basis._hyg.548 : ι) => V) i) (AddCommGroup.toDivisionAddCommMonoid.{u3} ((fun (x._@.Mathlib.LinearAlgebra.Basis._hyg.548 : ι) => V) i) _inst_2))))))) +Case conversion may be inaccurate. Consider using '#align basis.of_rank_eq_zero_apply Basis.ofRankEqZero_applyₓ'. -/ @[simp] theorem Basis.ofRankEqZero_apply {ι : Type _} [IsEmpty ι] (hV : Module.rank K V = 0) (i : ι) : Basis.ofRankEqZero hV i = 0 := rfl #align basis.of_rank_eq_zero_apply Basis.ofRankEqZero_apply +#print le_rank_iff_exists_linearIndependent /- theorem le_rank_iff_exists_linearIndependent {c : Cardinal} : c ≤ Module.rank K V ↔ ∃ s : Set V, (#s) = c ∧ LinearIndependent K (coe : s → V) := by @@ -1253,7 +1670,14 @@ theorem le_rank_iff_exists_linearIndependent {c : Cardinal} : · rintro ⟨s, rfl, si⟩ exact cardinal_le_rank_of_linearIndependent si #align le_rank_iff_exists_linear_independent le_rank_iff_exists_linearIndependent +-/ +/- warning: le_rank_iff_exists_linear_independent_finset -> le_rank_iff_exists_linearIndependent_finset is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] {n : Nat}, Iff (LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} ((fun (a : Type) (b : Type.{succ u2}) [self : HasLiftT.{1, succ (succ u2)} a b] => self.0) Nat Cardinal.{u2} (HasLiftT.mk.{1, succ (succ u2)} Nat Cardinal.{u2} (CoeTCₓ.coe.{1, succ (succ u2)} Nat Cardinal.{u2} (Nat.castCoe.{succ u2} Cardinal.{u2} Cardinal.hasNatCast.{u2}))) n) (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (Exists.{succ u2} (Finset.{u2} V) (fun (s : Finset.{u2} V) => And (Eq.{1} Nat (Finset.card.{u2} V s) n) (LinearIndependent.{u2, u1, u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s)) K V ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s)) V (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s)) V (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s)) V (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s)) V (coeSubtype.{succ u2} V (fun (x : V) => Membership.Mem.{u2, u2} V (Set.{u2} V) (Set.hasMem.{u2} V) x ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s))))))) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] {n : Nat}, Iff (LE.le.{succ u2} Cardinal.{u2} Cardinal.instLECardinal.{u2} (Nat.cast.{succ u2} Cardinal.{u2} Cardinal.instNatCastCardinal.{u2} n) (Module.rank.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) (Exists.{succ u2} (Finset.{u2} V) (fun (s : Finset.{u2} V) => And (Eq.{1} Nat (Finset.card.{u2} V s) n) (LinearIndependent.{u2, u1, u2} (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Set.{u2} V) (Set.instMembershipSet.{u2} V) x (Finset.toSet.{u2} V s))) K V (Subtype.val.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Set.{u2} V) (Set.instMembershipSet.{u2} V) x (Finset.toSet.{u2} V s))) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))) +Case conversion may be inaccurate. Consider using '#align le_rank_iff_exists_linear_independent_finset le_rank_iff_exists_linearIndependent_finsetₓ'. -/ theorem le_rank_iff_exists_linearIndependent_finset {n : ℕ} : ↑n ≤ Module.rank K V ↔ ∃ s : Finset V, s.card = n ∧ LinearIndependent K (coe : (s : Set V) → V) := @@ -1266,6 +1690,7 @@ theorem le_rank_iff_exists_linearIndependent_finset {n : ℕ} : exact ⟨s, ⟨s, rfl, rfl⟩, si⟩ #align le_rank_iff_exists_linear_independent_finset le_rank_iff_exists_linearIndependent_finset +#print rank_le_one_iff /- /-- A vector space has dimension at most `1` if and only if there is a single vector of which all vectors are multiples. -/ theorem rank_le_one_iff : Module.rank K V ≤ 1 ↔ ∃ v₀ : V, ∀ v, ∃ r : K, r • v₀ = v := @@ -1292,7 +1717,14 @@ theorem rank_le_one_iff : Module.rank K V ≤ 1 ↔ ∃ v₀ : V, ∀ v, ∃ r : refine' (rank_span_le _).trans_eq _ simp #align rank_le_one_iff rank_le_one_iff +-/ +/- warning: rank_submodule_le_one_iff -> rank_submodule_le_one_iff is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] (s : Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3), Iff (LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) s) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s) (Submodule.module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s)) (OfNat.ofNat.{succ u2} Cardinal.{u2} 1 (OfNat.mk.{succ u2} Cardinal.{u2} 1 (One.one.{succ u2} Cardinal.{u2} Cardinal.hasOne.{u2})))) (Exists.{succ u2} V (fun (v₀ : V) => Exists.{0} (Membership.Mem.{u2, u2} V (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.hasMem.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) v₀ s) (fun (H : Membership.Mem.{u2, u2} V (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.hasMem.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) v₀ s) => LE.le.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) s (Submodule.span.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Singleton.singleton.{u2, u2} V (Set.{u2} V) (Set.hasSingleton.{u2} V) v₀))))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] (s : Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3), Iff (LE.le.{succ u2} Cardinal.{u2} Cardinal.instLECardinal.{u2} (Module.rank.{u1, u2} K (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x s)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s) (Submodule.module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s)) (OfNat.ofNat.{succ u2} Cardinal.{u2} 1 (One.toOfNat1.{succ u2} Cardinal.{u2} Cardinal.instOneCardinal.{u2}))) (Exists.{succ u2} V (fun (v₀ : V) => And (Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) v₀ s) (LE.le.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s (Submodule.span.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Singleton.singleton.{u2, u2} V (Set.{u2} V) (Set.instSingletonSet.{u2} V) v₀))))) +Case conversion may be inaccurate. Consider using '#align rank_submodule_le_one_iff rank_submodule_le_one_iffₓ'. -/ /-- A submodule has dimension at most `1` if and only if there is a single vector in the submodule such that the submodule is contained in its span. -/ @@ -1317,6 +1749,12 @@ theorem rank_submodule_le_one_iff (s : Submodule K V) : exact hr #align rank_submodule_le_one_iff rank_submodule_le_one_iff +/- warning: rank_submodule_le_one_iff' -> rank_submodule_le_one_iff' is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] (s : Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3), Iff (LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Module.rank.{u1, u2} K (coeSort.{succ u2, succ (succ u2)} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) Type.{u2} (SetLike.hasCoeToSort.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) s) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s) (Submodule.module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s)) (OfNat.ofNat.{succ u2} Cardinal.{u2} 1 (OfNat.mk.{succ u2} Cardinal.{u2} 1 (One.one.{succ u2} Cardinal.{u2} Cardinal.hasOne.{u2})))) (Exists.{succ u2} V (fun (v₀ : V) => LE.le.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.partialOrder.{u2, u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)))) s (Submodule.span.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Singleton.singleton.{u2, u2} V (Set.{u2} V) (Set.hasSingleton.{u2} V) v₀)))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] (s : Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3), Iff (LE.le.{succ u2} Cardinal.{u2} Cardinal.instLECardinal.{u2} (Module.rank.{u1, u2} K (Subtype.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (SetLike.instMembership.{u2, u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) V (Submodule.setLike.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3)) x s)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (Submodule.addCommMonoid.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s) (Submodule.module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 s)) (OfNat.ofNat.{succ u2} Cardinal.{u2} 1 (One.toOfNat1.{succ u2} Cardinal.{u2} Cardinal.instOneCardinal.{u2}))) (Exists.{succ u2} V (fun (v₀ : V) => LE.le.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Preorder.toLE.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (PartialOrder.toPreorder.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (OmegaCompletePartialOrder.toPartialOrder.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (CompleteLattice.instOmegaCompletePartialOrder.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.completeLattice.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))))) s (Submodule.span.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3 (Singleton.singleton.{u2, u2} V (Set.{u2} V) (Set.instSingletonSet.{u2} V) v₀)))) +Case conversion may be inaccurate. Consider using '#align rank_submodule_le_one_iff' rank_submodule_le_one_iff'ₓ'. -/ /-- A submodule has dimension at most `1` if and only if there is a single vector, not necessarily in the submodule, such that the submodule is contained in its span. -/ @@ -1340,6 +1778,7 @@ theorem rank_submodule_le_one_iff' (s : Submodule K V) : Module.rank K s ≤ 1 simp [hw] #align rank_submodule_le_one_iff' rank_submodule_le_one_iff' +#print Submodule.rank_le_one_iff_isPrincipal /- theorem Submodule.rank_le_one_iff_isPrincipal (W : Submodule K V) : Module.rank K W ≤ 1 ↔ W.IsPrincipal := by @@ -1353,7 +1792,14 @@ theorem Submodule.rank_le_one_iff_isPrincipal (W : Submodule K V) : choose f hf using h exact ⟨⟨a, ha⟩, fun v => ⟨f v.1 v.2, Subtype.ext (hf v.1 v.2)⟩⟩ #align submodule.rank_le_one_iff_is_principal Submodule.rank_le_one_iff_isPrincipal +-/ +/- warning: module.rank_le_one_iff_top_is_principal -> Module.rank_le_one_iff_top_isPrincipal is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)], Iff (LE.le.{succ u2} Cardinal.{u2} Cardinal.hasLe.{u2} (Module.rank.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (OfNat.ofNat.{succ u2} Cardinal.{u2} 1 (OfNat.mk.{succ u2} Cardinal.{u2} 1 (One.one.{succ u2} Cardinal.{u2} Cardinal.hasOne.{u2})))) (Submodule.IsPrincipal.{u1, u2} K V (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 (Top.top.{u2} (Submodule.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.hasTop.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)], Iff (LE.le.{succ u2} Cardinal.{u2} Cardinal.instLECardinal.{u2} (Module.rank.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (OfNat.ofNat.{succ u2} Cardinal.{u2} 1 (One.toOfNat1.{succ u2} Cardinal.{u2} Cardinal.instOneCardinal.{u2}))) (Submodule.IsPrincipal.{u1, u2} K V (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 (Top.top.{u2} (Submodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3) (Submodule.instTopSubmodule.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) _inst_3))) +Case conversion may be inaccurate. Consider using '#align module.rank_le_one_iff_top_is_principal Module.rank_le_one_iff_top_isPrincipalₓ'. -/ theorem Module.rank_le_one_iff_top_isPrincipal : Module.rank K V ≤ 1 ↔ (⊤ : Submodule K V).IsPrincipal := by rw [← Submodule.rank_le_one_iff_isPrincipal, rank_top] @@ -1374,19 +1820,31 @@ variable [Ring K] [AddCommGroup V] [Module K V] [AddCommGroup V₁] [Module K V variable [AddCommGroup V'] [Module K V'] +#print LinearMap.rank /- /-- `rank f` is the rank of a `linear_map` `f`, defined as the dimension of `f.range`. -/ def rank (f : V →ₗ[K] V') : Cardinal := Module.rank K f.range #align linear_map.rank LinearMap.rank +-/ +#print LinearMap.rank_le_range /- theorem rank_le_range (f : V →ₗ[K] V') : rank f ≤ Module.rank K V' := rank_submodule_le _ #align linear_map.rank_le_range LinearMap.rank_le_range +-/ +#print LinearMap.rank_le_domain /- theorem rank_le_domain (f : V →ₗ[K] V₁) : rank f ≤ Module.rank K V := rank_range_le _ #align linear_map.rank_le_domain LinearMap.rank_le_domain +-/ +/- warning: linear_map.rank_zero -> LinearMap.rank_zero is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} {V' : Type.{u3}} [_inst_1 : Ring.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u3} V'] [_inst_7 : Module.{u1, u3} K V' (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)] [_inst_8 : Nontrivial.{u1} K], Eq.{succ (succ u3)} Cardinal.{u3} (LinearMap.rank.{u1, u2, u3} K V V' _inst_1 _inst_2 _inst_3 _inst_6 _inst_7 (OfNat.ofNat.{max u2 u3} (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K _inst_1) (Ring.toSemiring.{u1} K _inst_1) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K _inst_1))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) 0 (OfNat.mk.{max u2 u3} (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K _inst_1) (Ring.toSemiring.{u1} K _inst_1) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K _inst_1))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) 0 (Zero.zero.{max u2 u3} (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K _inst_1) (Ring.toSemiring.{u1} K _inst_1) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K _inst_1))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (LinearMap.hasZero.{u1, u1, u2, u3} K K V V' (Ring.toSemiring.{u1} K _inst_1) (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K _inst_1)))))))) (OfNat.ofNat.{succ u3} Cardinal.{u3} 0 (OfNat.mk.{succ u3} Cardinal.{u3} 0 (Zero.zero.{succ u3} Cardinal.{u3} Cardinal.hasZero.{u3}))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} {V' : Type.{u3}} [_inst_1 : Ring.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u3} V'] [_inst_7 : Module.{u1, u3} K V' (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)] [_inst_8 : Nontrivial.{u1} K], Eq.{succ (succ u3)} Cardinal.{u3} (LinearMap.rank.{u1, u2, u3} K V V' _inst_1 _inst_2 _inst_3 _inst_6 _inst_7 (OfNat.ofNat.{max u2 u3} (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K _inst_1) (Ring.toSemiring.{u1} K _inst_1) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) 0 (Zero.toOfNat0.{max u2 u3} (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K _inst_1) (Ring.toSemiring.{u1} K _inst_1) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (LinearMap.instZeroLinearMap.{u1, u1, u2, u3} K K V V' (Ring.toSemiring.{u1} K _inst_1) (Ring.toSemiring.{u1} K _inst_1) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K _inst_1))))))) (OfNat.ofNat.{succ u3} Cardinal.{u3} 0 (Zero.toOfNat0.{succ u3} Cardinal.{u3} Cardinal.instZeroCardinal.{u3})) +Case conversion may be inaccurate. Consider using '#align linear_map.rank_zero LinearMap.rank_zeroₓ'. -/ @[simp] theorem rank_zero [Nontrivial K] : rank (0 : V →ₗ[K] V') = 0 := by rw [rank, LinearMap.range_zero, rank_bot] @@ -1394,18 +1852,22 @@ theorem rank_zero [Nontrivial K] : rank (0 : V →ₗ[K] V') = 0 := by variable [AddCommGroup V''] [Module K V''] +#print LinearMap.rank_comp_le_left /- theorem rank_comp_le_left (g : V →ₗ[K] V') (f : V' →ₗ[K] V'') : rank (f.comp g) ≤ rank f := by refine' rank_le_of_submodule _ _ _ rw [LinearMap.range_comp] exact LinearMap.map_le_range #align linear_map.rank_comp_le_left LinearMap.rank_comp_le_left +-/ variable [AddCommGroup V'₁] [Module K V'₁] +#print LinearMap.rank_comp_le_right /- theorem rank_comp_le_right (g : V →ₗ[K] V') (f : V' →ₗ[K] V'₁) : rank (f.comp g) ≤ rank g := by rw [rank, rank, LinearMap.range_comp] <;> exact rank_map_le _ _ #align linear_map.rank_comp_le_right LinearMap.rank_comp_le_right +-/ end Ring @@ -1415,6 +1877,12 @@ variable [DivisionRing K] [AddCommGroup V] [Module K V] [AddCommGroup V₁] [Mod variable [AddCommGroup V'] [Module K V'] +/- warning: linear_map.rank_add_le -> LinearMap.rank_add_le is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} {V' : Type.{u3}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u3} V'] [_inst_7 : Module.{u1, u3} K V' (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)] (f : LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (g : LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7), LE.le.{succ u3} Cardinal.{u3} Cardinal.hasLe.{u3} (LinearMap.rank.{u1, u2, u3} K V V' (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 (HAdd.hAdd.{max u2 u3, max u2 u3, max u2 u3} (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (instHAdd.{max u2 u3} (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (LinearMap.hasAdd.{u1, u1, u2, u3} K K V V' (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))))) f g)) (HAdd.hAdd.{succ u3, succ u3, succ u3} Cardinal.{u3} Cardinal.{u3} Cardinal.{u3} (instHAdd.{succ u3} Cardinal.{u3} Cardinal.hasAdd.{u3}) (LinearMap.rank.{u1, u2, u3} K V V' (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 f) (LinearMap.rank.{u1, u2, u3} K V V' (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 g)) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} {V' : Type.{u3}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u3} V'] [_inst_7 : Module.{u1, u3} K V' (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)] (f : LinearMap.{u1, u1, u2, u3} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (g : LinearMap.{u1, u1, u2, u3} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7), LE.le.{succ u3} Cardinal.{u3} Cardinal.instLECardinal.{u3} (LinearMap.rank.{u1, u2, u3} K V V' (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 (HAdd.hAdd.{max u2 u3, max u2 u3, max u2 u3} (LinearMap.{u1, u1, u2, u3} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u3} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (LinearMap.{u1, u1, u2, u3} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (instHAdd.{max u2 u3} (LinearMap.{u1, u1, u2, u3} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (LinearMap.instAddLinearMap.{u1, u1, u2, u3} K K V V' (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))))) f g)) (HAdd.hAdd.{succ u3, succ u3, succ u3} Cardinal.{u3} Cardinal.{u3} Cardinal.{u3} (instHAdd.{succ u3} Cardinal.{u3} Cardinal.instAddCardinal.{u3}) (LinearMap.rank.{u1, u2, u3} K V V' (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 f) (LinearMap.rank.{u1, u2, u3} K V V' (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 g)) +Case conversion may be inaccurate. Consider using '#align linear_map.rank_add_le LinearMap.rank_add_leₓ'. -/ theorem rank_add_le (f g : V →ₗ[K] V') : rank (f + g) ≤ rank f + rank g := calc rank (f + g) ≤ Module.rank K (f.range ⊔ g.range : Submodule K V') := @@ -1429,12 +1897,24 @@ theorem rank_add_le (f g : V →ₗ[K] V') : rank (f + g) ≤ rank f + rank g := #align linear_map.rank_add_le LinearMap.rank_add_le +/- warning: linear_map.rank_finset_sum_le -> LinearMap.rank_finset_sum_le is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} {V' : Type.{u3}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u3} V'] [_inst_7 : Module.{u1, u3} K V' (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)] {η : Type.{u4}} (s : Finset.{u4} η) (f : η -> (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7)), LE.le.{succ u3} Cardinal.{u3} Cardinal.hasLe.{u3} (LinearMap.rank.{u1, u2, u3} K V V' (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 (Finset.sum.{max u2 u3, u4} (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) η (LinearMap.addCommMonoid.{u1, u1, u2, u3} K K V V' (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) s (fun (d : η) => f d))) (Finset.sum.{succ u3, u4} Cardinal.{u3} η (OrderedAddCommMonoid.toAddCommMonoid.{succ u3} Cardinal.{u3} (OrderedSemiring.toOrderedAddCommMonoid.{succ u3} Cardinal.{u3} (OrderedCommSemiring.toOrderedSemiring.{succ u3} Cardinal.{u3} (CanonicallyOrderedCommSemiring.toOrderedCommSemiring.{succ u3} Cardinal.{u3} Cardinal.canonicallyOrderedCommSemiring.{u3})))) s (fun (d : η) => LinearMap.rank.{u1, u2, u3} K V V' (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 (f d))) +but is expected to have type + forall {K : Type.{u2}} {V : Type.{u3}} {V' : Type.{u4}} [_inst_1 : DivisionRing.{u2} K] [_inst_2 : AddCommGroup.{u3} V] [_inst_3 : Module.{u2, u3} K V (DivisionSemiring.toSemiring.{u2} K (DivisionRing.toDivisionSemiring.{u2} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2)] [_inst_6 : AddCommGroup.{u4} V'] [_inst_7 : Module.{u2, u4} K V' (DivisionSemiring.toSemiring.{u2} K (DivisionRing.toDivisionSemiring.{u2} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u4} V' _inst_6)] {η : Type.{u1}} (s : Finset.{u1} η) (f : η -> (LinearMap.{u2, u2, u3, u4} K K (DivisionSemiring.toSemiring.{u2} K (DivisionRing.toDivisionSemiring.{u2} K _inst_1)) (DivisionSemiring.toSemiring.{u2} K (DivisionRing.toDivisionSemiring.{u2} K _inst_1)) (RingHom.id.{u2} K (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) (AddCommGroup.toAddCommMonoid.{u4} V' _inst_6) _inst_3 _inst_7)), LE.le.{succ u4} Cardinal.{u4} Cardinal.instLECardinal.{u4} (LinearMap.rank.{u2, u3, u4} K V V' (DivisionRing.toRing.{u2} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 (Finset.sum.{max u4 u3, u1} (LinearMap.{u2, u2, u3, u4} K K (Ring.toSemiring.{u2} K (DivisionRing.toRing.{u2} K _inst_1)) (Ring.toSemiring.{u2} K (DivisionRing.toRing.{u2} K _inst_1)) (RingHom.id.{u2} K (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) (AddCommGroup.toAddCommMonoid.{u4} V' _inst_6) _inst_3 _inst_7) η (LinearMap.addCommMonoid.{u2, u2, u3, u4} K K V V' (Ring.toSemiring.{u2} K (DivisionRing.toRing.{u2} K _inst_1)) (Ring.toSemiring.{u2} K (DivisionRing.toRing.{u2} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V _inst_2) (AddCommGroup.toAddCommMonoid.{u4} V' _inst_6) _inst_3 _inst_7 (RingHom.id.{u2} K (NonAssocRing.toNonAssocSemiring.{u2} K (Ring.toNonAssocRing.{u2} K (DivisionRing.toRing.{u2} K _inst_1))))) s (fun (d : η) => f d))) (Finset.sum.{succ u4, u1} Cardinal.{u4} η (OrderedAddCommMonoid.toAddCommMonoid.{succ u4} Cardinal.{u4} (OrderedSemiring.toOrderedAddCommMonoid.{succ u4} Cardinal.{u4} (OrderedCommSemiring.toOrderedSemiring.{succ u4} Cardinal.{u4} (CanonicallyOrderedCommSemiring.toOrderedCommSemiring.{succ u4} Cardinal.{u4} Cardinal.canonicallyOrderedCommSemiring.{u4})))) s (fun (d : η) => LinearMap.rank.{u2, u3, u4} K V V' (DivisionRing.toRing.{u2} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 (f d))) +Case conversion may be inaccurate. Consider using '#align linear_map.rank_finset_sum_le LinearMap.rank_finset_sum_leₓ'. -/ theorem rank_finset_sum_le {η} (s : Finset η) (f : η → V →ₗ[K] V') : rank (∑ d in s, f d) ≤ ∑ d in s, rank (f d) := @Finset.sum_hom_rel _ _ _ _ _ (fun a b => rank a ≤ b) f (fun d => rank (f d)) s (le_of_eq rank_zero) fun i g c h => le_trans (rank_add_le _ _) (add_le_add_left h _) #align linear_map.rank_finset_sum_le LinearMap.rank_finset_sum_le +/- warning: linear_map.le_rank_iff_exists_linear_independent -> LinearMap.le_rank_iff_exists_linearIndependent is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} {V' : Type.{u3}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u3} V'] [_inst_7 : Module.{u1, u3} K V' (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)] {c : Cardinal.{u3}} {f : LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7}, Iff (LE.le.{succ u3} Cardinal.{u3} Cardinal.hasLe.{u3} c (LinearMap.rank.{u1, u2, u3} K V V' (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 f)) (Exists.{succ u2} (Set.{u2} V) (fun (s : Set.{u2} V) => And (Eq.{succ (succ (max u2 u3))} Cardinal.{max u2 u3} (Cardinal.lift.{u3, u2} (Cardinal.mk.{u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) s))) (Cardinal.lift.{u2, u3} c)) (LinearIndependent.{u2, u1, u3} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) s) K V' (fun (x : coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) s) => coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (fun (_x : LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) => V -> V') (LinearMap.hasCoeToFun.{u1, u1, u2, u3} K K V V' (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) s) V (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) s) V (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) s) V (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) s) V (coeSubtype.{succ u2} V (fun (x : V) => Membership.Mem.{u2, u2} V (Set.{u2} V) (Set.hasMem.{u2} V) x s))))) x)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_7))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} {V' : Type.{u3}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u3} V'] [_inst_7 : Module.{u1, u3} K V' (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)] {c : Cardinal.{u3}} {f : LinearMap.{u1, u1, u2, u3} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7}, Iff (LE.le.{succ u3} Cardinal.{u3} Cardinal.instLECardinal.{u3} c (LinearMap.rank.{u1, u2, u3} K V V' (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 f)) (Exists.{succ u2} (Set.{u2} V) (fun (s : Set.{u2} V) => And (Eq.{max (succ (succ u2)) (succ (succ u3))} Cardinal.{max u2 u3} (Cardinal.lift.{u3, u2} (Cardinal.mk.{u2} (Set.Elem.{u2} V s))) (Cardinal.lift.{u2, u3} c)) (LinearIndependent.{u2, u1, u3} (Set.Elem.{u2} V s) K V' (fun (x : Set.Elem.{u2} V s) => FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (LinearMap.{u1, u1, u2, u3} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V) => V') _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u3} K K V V' (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f (Subtype.val.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Set.{u2} V) (Set.instMembershipSet.{u2} V) x s) x)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_7))) +Case conversion may be inaccurate. Consider using '#align linear_map.le_rank_iff_exists_linear_independent LinearMap.le_rank_iff_exists_linearIndependentₓ'. -/ theorem le_rank_iff_exists_linearIndependent {c : Cardinal} {f : V →ₗ[K] V'} : c ≤ rank f ↔ ∃ s : Set V, @@ -1459,6 +1939,12 @@ theorem le_rank_iff_exists_linearIndependent {c : Cardinal} {f : V →ₗ[K] V'} exact inj_on_iff_injective.2 this.injective #align linear_map.le_rank_iff_exists_linear_independent LinearMap.le_rank_iff_exists_linearIndependent +/- warning: linear_map.le_rank_iff_exists_linear_independent_finset -> LinearMap.le_rank_iff_exists_linearIndependent_finset is a dubious translation: +lean 3 declaration is + forall {K : Type.{u1}} {V : Type.{u2}} {V' : Type.{u3}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u3} V'] [_inst_7 : Module.{u1, u3} K V' (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)] {n : Nat} {f : LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7}, Iff (LE.le.{succ u3} Cardinal.{u3} Cardinal.hasLe.{u3} ((fun (a : Type) (b : Type.{succ u3}) [self : HasLiftT.{1, succ (succ u3)} a b] => self.0) Nat Cardinal.{u3} (HasLiftT.mk.{1, succ (succ u3)} Nat Cardinal.{u3} (CoeTCₓ.coe.{1, succ (succ u3)} Nat Cardinal.{u3} (Nat.castCoe.{succ u3} Cardinal.{u3} Cardinal.hasNatCast.{u3}))) n) (LinearMap.rank.{u1, u2, u3} K V V' (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 f)) (Exists.{succ u2} (Finset.{u2} V) (fun (s : Finset.{u2} V) => And (Eq.{1} Nat (Finset.card.{u2} V s) n) (LinearIndependent.{u2, u1, u3} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s)) K V' (fun (x : coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s)) => coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) (fun (_x : LinearMap.{u1, u1, u2, u3} K K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) => V -> V') (LinearMap.hasCoeToFun.{u1, u1, u2, u3} K K V V' (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (Semiring.toNonAssocSemiring.{u1} K (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s)) V (HasLiftT.mk.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s)) V (CoeTCₓ.coe.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s)) V (coeBase.{succ u2, succ u2} (coeSort.{succ u2, succ (succ u2)} (Set.{u2} V) Type.{u2} (Set.hasCoeToSort.{u2} V) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s)) V (coeSubtype.{succ u2} V (fun (x : V) => Membership.Mem.{u2, u2} V (Set.{u2} V) (Set.hasMem.{u2} V) x ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} V) (Set.{u2} V) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} V) (Set.{u2} V) (Finset.Set.hasCoeT.{u2} V))) s)))))) x)) (Ring.toSemiring.{u1} K (DivisionRing.toRing.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_7))) +but is expected to have type + forall {K : Type.{u1}} {V : Type.{u2}} {V' : Type.{u3}} [_inst_1 : DivisionRing.{u1} K] [_inst_2 : AddCommGroup.{u2} V] [_inst_3 : Module.{u1, u2} K V (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2)] [_inst_6 : AddCommGroup.{u3} V'] [_inst_7 : Module.{u1, u3} K V' (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6)] {n : Nat} {f : LinearMap.{u1, u1, u2, u3} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7}, Iff (LE.le.{succ u3} Cardinal.{u3} Cardinal.instLECardinal.{u3} (Nat.cast.{succ u3} Cardinal.{u3} Cardinal.instNatCastCardinal.{u3} n) (LinearMap.rank.{u1, u2, u3} K V V' (DivisionRing.toRing.{u1} K _inst_1) _inst_2 _inst_3 _inst_6 _inst_7 f)) (Exists.{succ u2} (Finset.{u2} V) (fun (s : Finset.{u2} V) => And (Eq.{1} Nat (Finset.card.{u2} V s) n) (LinearIndependent.{u2, u1, u3} (Set.Elem.{u2} V (Finset.toSet.{u2} V s)) K V' (fun (x : Set.Elem.{u2} V (Finset.toSet.{u2} V s)) => FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (LinearMap.{u1, u1, u2, u3} K K (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1)))) V V' (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7) V (fun (_x : V) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : V) => V') _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u3} K K V V' (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u2} V _inst_2) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_3 _inst_7 (RingHom.id.{u1} K (NonAssocRing.toNonAssocSemiring.{u1} K (Ring.toNonAssocRing.{u1} K (DivisionRing.toRing.{u1} K _inst_1))))) f (Subtype.val.{succ u2} V (fun (x : V) => Membership.mem.{u2, u2} V (Set.{u2} V) (Set.instMembershipSet.{u2} V) x (Finset.toSet.{u2} V s)) x)) (DivisionSemiring.toSemiring.{u1} K (DivisionRing.toDivisionSemiring.{u1} K _inst_1)) (AddCommGroup.toAddCommMonoid.{u3} V' _inst_6) _inst_7))) +Case conversion may be inaccurate. Consider using '#align linear_map.le_rank_iff_exists_linear_independent_finset LinearMap.le_rank_iff_exists_linearIndependent_finsetₓ'. -/ theorem le_rank_iff_exists_linearIndependent_finset {n : ℕ} {f : V →ₗ[K] V'} : ↑n ≤ rank f ↔ ∃ s : Finset V, s.card = n ∧ LinearIndependent K fun x : (s : Set V) => f x := by diff --git a/lake-manifest.json b/lake-manifest.json index 9af6cbc144..3e3c1bd581 100644 --- a/lake-manifest.json +++ b/lake-manifest.json @@ -4,15 +4,15 @@ [{"git": {"url": "https://github.com/leanprover-community/lean3port.git", "subDir?": null, - "rev": "3cf40aebdd4abbd513758d0eb1f5faae4b92c6c9", + "rev": "8c94cec27571e1ec21055feaf82c7327672d3cca", "name": "lean3port", - "inputRev?": "3cf40aebdd4abbd513758d0eb1f5faae4b92c6c9"}}, + "inputRev?": "8c94cec27571e1ec21055feaf82c7327672d3cca"}}, {"git": {"url": "https://github.com/leanprover-community/mathlib4.git", "subDir?": null, - "rev": "540bae8432e13bfbf0ce531dff6749c22117a942", + "rev": "afb1a7e248cf323f64dc8eae8f0c5ef9f8f3b34e", "name": "mathlib", - "inputRev?": "540bae8432e13bfbf0ce531dff6749c22117a942"}}, + "inputRev?": "afb1a7e248cf323f64dc8eae8f0c5ef9f8f3b34e"}}, {"git": {"url": "https://github.com/gebner/quote4", "subDir?": null, diff --git a/lakefile.lean b/lakefile.lean index af0df32d9a..b5f6fad2ff 100644 --- a/lakefile.lean +++ b/lakefile.lean @@ -4,7 +4,7 @@ open Lake DSL System -- Usually the `tag` will be of the form `nightly-2021-11-22`. -- If you would like to use an artifact from a PR build, -- it will be of the form `pr-branchname-sha`. -def tag : String := "nightly-2023-04-10-08" +def tag : String := "nightly-2023-04-10-10" def releaseRepo : String := "leanprover-community/mathport" def oleanTarName : String := "mathlib3-binport.tar.gz" @@ -38,7 +38,7 @@ target fetchOleans (_pkg : Package) : Unit := do untarReleaseArtifact releaseRepo tag oleanTarName libDir return .nil -require lean3port from git "https://github.com/leanprover-community/lean3port.git"@"3cf40aebdd4abbd513758d0eb1f5faae4b92c6c9" +require lean3port from git "https://github.com/leanprover-community/lean3port.git"@"8c94cec27571e1ec21055feaf82c7327672d3cca" @[default_target] lean_lib Mathbin where