Skip to content

Commit

Permalink
feat: a reflexive vector space (in the purely algebraic sense) is fin…
Browse files Browse the repository at this point in the history
…ite dimensional (#17456)
  • Loading branch information
ocfnash committed Oct 7, 2024
1 parent a014dc6 commit 0ae0531
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions Mathlib/LinearAlgebra/Dual.lean
Original file line number Diff line number Diff line change
Expand Up @@ -580,6 +580,7 @@ class IsReflexive : Prop where
lemma bijective_dual_eval [IsReflexive R M] : Bijective (Dual.eval R M) :=
IsReflexive.bijective_dual_eval'

/-- See also `Module.instFiniteDimensionalOfIsReflexive` for the converse over a field. -/
instance IsReflexive.of_finite_of_free [Module.Finite R M] [Free R M] : IsReflexive R M where
bijective_dual_eval' := ⟨LinearMap.ker_eq_bot.mp (Free.chooseBasis R M).eval_ker,
LinearMap.range_eq_top.mp (Free.chooseBasis R M).eval_range⟩
Expand Down Expand Up @@ -650,6 +651,22 @@ instance _root_.MulOpposite.instModuleIsReflexive : IsReflexive R (MulOpposite M
instance _root_.ULift.instModuleIsReflexive.{w} : IsReflexive R (ULift.{w} M) :=
equiv ULift.moduleEquiv.symm

instance instFiniteDimensionalOfIsReflexive (K V : Type*)
[Field K] [AddCommGroup V] [Module K V] [IsReflexive K V] :
FiniteDimensional K V := by
rw [FiniteDimensional, ← rank_lt_aleph0_iff]
by_contra! contra
suffices lift (Module.rank K V) < Module.rank K (Dual K (Dual K V)) by
have heq := lift_rank_eq_of_equiv_equiv (R := K) (R' := K) (M := V) (M' := Dual K (Dual K V))
(ZeroHom.id K) (evalEquiv K V) bijective_id (fun r v ↦ (evalEquiv K V).map_smul _ _)
rw [← lift_umax, heq, lift_id'] at this
exact lt_irrefl _ this
have h₁ : lift (Module.rank K V) < Module.rank K (Dual K V) := lift_rank_lt_rank_dual contra
have h₂ : Module.rank K (Dual K V) < Module.rank K (Dual K (Dual K V)) := by
convert lift_rank_lt_rank_dual <| le_trans (by simpa) h₁.le
rw [lift_id']
exact lt_trans h₁ h₂

end IsReflexive

end Module
Expand Down

0 comments on commit 0ae0531

Please sign in to comment.