@@ -830,20 +830,21 @@ variable {N : Type*} [AddCommGroup M] [Module R M] [AddCommGroup N] [Module R N]
830
830
831
831
open Function
832
832
833
- set_option linter.deprecated false
834
-
833
+ set_option linter.deprecated false in
835
834
/-- An auxiliary construction for `tunnel`.
836
835
The composition of `f`, followed by the isomorphism back to `K`,
837
836
followed by the inclusion of this submodule back into `M`. -/
838
837
@[deprecated "No deprecation message was provided." (since := "2024-06-05")]
839
838
def tunnelAux (f : M × N →ₗ[R] M) (Kφ : ΣK : Submodule R M, K ≃ₗ[R] M) : M × N →ₗ[R] M :=
840
839
(Kφ.1 .subtype.comp Kφ.2 .symm.toLinearMap).comp f
841
840
841
+ set_option linter.deprecated false in
842
842
@[deprecated "No deprecation message was provided." (since := "2024-06-05")]
843
843
theorem tunnelAux_injective (f : M × N →ₗ[R] M) (i : Injective f)
844
844
(Kφ : ΣK : Submodule R M, K ≃ₗ[R] M) : Injective (tunnelAux f Kφ) :=
845
845
(Subtype.val_injective.comp Kφ.2 .symm.injective).comp i
846
846
847
+ set_option linter.deprecated false in
847
848
/-- Auxiliary definition for `tunnel`. -/
848
849
@[deprecated "No deprecation message was provided." (since := "2024-06-05")]
849
850
def tunnel' (f : M × N →ₗ[R] M) (i : Injective f) : ℕ → ΣK : Submodule R M, K ≃ₗ[R] M
@@ -853,6 +854,7 @@ def tunnel' (f : M × N →ₗ[R] M) (i : Injective f) : ℕ → ΣK : Submodule
853
854
((Submodule.fst R M N).equivMapOfInjective _
854
855
(tunnelAux_injective f i (tunnel' f i n))).symm.trans (Submodule.fstEquiv R M N)⟩
855
856
857
+ set_option linter.deprecated false in
856
858
/-- Give an injective map `f : M × N →ₗ[R] M` we can find a nested sequence of submodules
857
859
all isomorphic to `M`.
858
860
-/
@@ -865,26 +867,30 @@ def tunnel (f : M × N →ₗ[R] M) (i : Injective f) : ℕ →o (Submodule R M)
865
867
rw [Submodule.map_comp, Submodule.map_comp]
866
868
apply Submodule.map_subtype_le⟩
867
869
870
+ set_option linter.deprecated false in
868
871
/-- Give an injective map `f : M × N →ₗ[R] M` we can find a sequence of submodules
869
872
all isomorphic to `N`.
870
873
-/
871
874
@[deprecated "No deprecation message was provided." (since := "2024-06-05")]
872
875
def tailing (f : M × N →ₗ[R] M) (i : Injective f) (n : ℕ) : Submodule R M :=
873
876
(Submodule.snd R M N).map (tunnelAux f (tunnel' f i n))
874
877
878
+ set_option linter.deprecated false in
875
879
/-- Each `tailing f i n` is a copy of `N`. -/
876
880
@[deprecated "No deprecation message was provided." (since := "2024-06-05")]
877
881
def tailingLinearEquiv (f : M × N →ₗ[R] M) (i : Injective f) (n : ℕ) : tailing f i n ≃ₗ[R] N :=
878
882
((Submodule.snd R M N).equivMapOfInjective _ (tunnelAux_injective f i (tunnel' f i n))).symm.trans
879
883
(Submodule.sndEquiv R M N)
880
884
885
+ set_option linter.deprecated false in
881
886
@[deprecated "No deprecation message was provided." (since := "2024-06-05")]
882
887
theorem tailing_le_tunnel (f : M × N →ₗ[R] M) (i : Injective f) (n : ℕ) :
883
888
tailing f i n ≤ OrderDual.ofDual (α := Submodule R M) (tunnel f i n) := by
884
889
dsimp [tailing, tunnelAux]
885
890
rw [Submodule.map_comp, Submodule.map_comp]
886
891
apply Submodule.map_subtype_le
887
892
893
+ set_option linter.deprecated false in
888
894
@[deprecated "No deprecation message was provided." (since := "2024-06-05")]
889
895
theorem tailing_disjoint_tunnel_succ (f : M × N →ₗ[R] M) (i : Injective f) (n : ℕ) :
890
896
Disjoint (tailing f i n) (OrderDual.ofDual (α := Submodule R M) <| tunnel f i (n + 1 )) := by
@@ -894,6 +900,7 @@ theorem tailing_disjoint_tunnel_succ (f : M × N →ₗ[R] M) (i : Injective f)
894
900
Submodule.comap_map_eq_of_injective (tunnelAux_injective _ i _), inf_comm,
895
901
Submodule.fst_inf_snd, Submodule.map_bot]
896
902
903
+ set_option linter.deprecated false in
897
904
@[deprecated "No deprecation message was provided." (since := "2024-06-05")]
898
905
theorem tailing_sup_tunnel_succ_le_tunnel (f : M × N →ₗ[R] M) (i : Injective f) (n : ℕ) :
899
906
tailing f i n ⊔ (OrderDual.ofDual (α := Submodule R M) <| tunnel f i (n + 1 )) ≤
@@ -902,19 +909,23 @@ theorem tailing_sup_tunnel_succ_le_tunnel (f : M × N →ₗ[R] M) (i : Injectiv
902
909
rw [← Submodule.map_sup, sup_comm, Submodule.fst_sup_snd, Submodule.map_comp, Submodule.map_comp]
903
910
apply Submodule.map_subtype_le
904
911
912
+ set_option linter.deprecated false in
905
913
/-- The supremum of all the copies of `N` found inside the tunnel. -/
906
914
@[deprecated "No deprecation message was provided." (since := "2024-06-05")]
907
915
def tailings (f : M × N →ₗ[R] M) (i : Injective f) : ℕ → Submodule R M :=
908
916
partialSups (tailing f i)
909
917
918
+ set_option linter.deprecated false in
910
919
@[simp, deprecated "No deprecation message was provided." (since := "2024-06-05")]
911
920
theorem tailings_zero (f : M × N →ₗ[R] M) (i : Injective f) : tailings f i 0 = tailing f i 0 := by
912
921
simp [tailings]
913
922
923
+ set_option linter.deprecated false in
914
924
@[simp, deprecated "No deprecation message was provided." (since := "2024-06-05")]
915
925
theorem tailings_succ (f : M × N →ₗ[R] M) (i : Injective f) (n : ℕ) :
916
926
tailings f i (n + 1 ) = tailings f i n ⊔ tailing f i (n + 1 ) := by simp [tailings]
917
927
928
+ set_option linter.deprecated false in
918
929
@[deprecated "No deprecation message was provided." (since := "2024-06-05")]
919
930
theorem tailings_disjoint_tunnel (f : M × N →ₗ[R] M) (i : Injective f) (n : ℕ) :
920
931
Disjoint (tailings f i n) (OrderDual.ofDual (α := Submodule R M) <| tunnel f i (n + 1 )) := by
@@ -927,6 +938,7 @@ theorem tailings_disjoint_tunnel (f : M × N →ₗ[R] M) (i : Injective f) (n :
927
938
· apply Disjoint.mono_right _ ih
928
939
apply tailing_sup_tunnel_succ_le_tunnel
929
940
941
+ set_option linter.deprecated false in
930
942
@[deprecated "No deprecation message was provided." (since := "2024-06-05")]
931
943
theorem tailings_disjoint_tailing (f : M × N →ₗ[R] M) (i : Injective f) (n : ℕ) :
932
944
Disjoint (tailings f i n) (tailing f i (n + 1 )) :=
0 commit comments