Skip to content

Commit cd3a2eb

Browse files
newellgrunweg
andcommitted
feat: mfderiv of Sum.inl and Sum.inr (leanprover-community#31200)
This will be used for leanprover-community#31351 in the bordism theory project. Co-authored-by: Newell Jensen <newell.jensen@gmail.com> Co-authored-by: Michael Rothgang <rothgang@math.uni-bonn.de>
1 parent 9401055 commit cd3a2eb

1 file changed

Lines changed: 68 additions & 0 deletions

File tree

β€ŽMathlib/Geometry/Manifold/MFDeriv/SpecificFunctions.leanβ€Ž

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -711,6 +711,74 @@ theorem mfderiv_sumSwap :
711711
mfderiv I I (@Sum.swap M M') p = ContinuousLinearMap.id π•œ (TangentSpace I p) := by
712712
simpa [mfderivWithin_univ] using (mfderivWithin_sumSwap (uniqueMDiffWithinAt_univ I))
713713

714+
variable {f : M β†’ N} (g : M' β†’ N') {q : M} {q' : M'}
715+
716+
lemma writtenInExtChartAt_sumInl_eventuallyEq_id :
717+
(writtenInExtChartAt I I q (@Sum.inl M M')) =αΆ [𝓝[Set.range I] (extChartAt I q q)] id := by
718+
have hmem : I.symm ⁻¹'
719+
(chartAt H q).target ∩ Set.range I ∈ 𝓝[Set.range I] (extChartAt I q q) := by
720+
rw [← I.image_eq (chartAt H q).target]
721+
exact (chartAt H q).extend_image_target_mem_nhds (mem_chart_source H q)
722+
filter_upwards [hmem] with y hy
723+
rcases hy with ⟨hyT, ⟨z, rfl⟩⟩
724+
simp [writtenInExtChartAt, extChartAt, ChartedSpace.sum_chartAt_inl,
725+
Sum.inl_injective.extend_apply <| chartAt H q,
726+
(chartAt H q).right_inv (by simpa [Set.mem_preimage, I.left_inv] using hyT)]
727+
728+
lemma writtenInExtChartAt_sumInr_eventuallyEq_id :
729+
(writtenInExtChartAt I I q' (@Sum.inr M M')) =αΆ [𝓝[Set.range I] (extChartAt I q' q')] id := by
730+
have hmem : I.symm ⁻¹'
731+
(chartAt H q').target ∩ Set.range I ∈ 𝓝[Set.range I] (extChartAt I q' q') := by
732+
rw [← I.image_eq (chartAt H q').target]
733+
exact (chartAt H q').extend_image_target_mem_nhds (mem_chart_source H q')
734+
filter_upwards [hmem] with y hy
735+
rcases hy with ⟨hyT, ⟨z, rfl⟩⟩
736+
simp [writtenInExtChartAt, extChartAt, ChartedSpace.sum_chartAt_inr,
737+
Sum.inr_injective.extend_apply <| chartAt H q',
738+
(chartAt H q').right_inv (by simpa [Set.mem_preimage, I.left_inv] using hyT)]
739+
740+
theorem hasMFDerivWithinAt_inl :
741+
HasMFDerivWithinAt I I (@Sum.inl M M') s q (ContinuousLinearMap.id π•œ (TangentSpace I q)) := by
742+
refine ⟨by fun_prop, ?_⟩
743+
have : (writtenInExtChartAt I I q (@Sum.inl M M'))
744+
=αΆ [𝓝[(extChartAt I q).symm ⁻¹' s ∩ Set.range I] (extChartAt I q q)] id :=
745+
writtenInExtChartAt_sumInl_eventuallyEq_id.filter_mono (nhdsWithin_mono _ (fun _y hy ↦ hy.2))
746+
exact (hasFDerivWithinAt_id (extChartAt I q q) _).congr_of_eventuallyEq this
747+
(by simp [writtenInExtChartAt, extChartAt])
748+
749+
theorem hasMFDerivAt_inl :
750+
HasMFDerivAt I I (@Sum.inl M M') q (ContinuousLinearMap.id π•œ (TangentSpace I p)) := by
751+
simpa [HasMFDerivAt, hasMFDerivWithinAt_univ] using hasMFDerivWithinAt_inl (s := Set.univ)
752+
753+
theorem hasMFDerivWithinAt_inr {t : Set M'} :
754+
HasMFDerivWithinAt I I (@Sum.inr M M') t q' (ContinuousLinearMap.id π•œ (TangentSpace I q')) := by
755+
refine ⟨by fun_prop, ?_⟩
756+
have : (writtenInExtChartAt I I q' (@Sum.inr M M'))
757+
=αΆ [𝓝[(extChartAt I q').symm ⁻¹' t ∩ Set.range I] (extChartAt I q' q')] id :=
758+
writtenInExtChartAt_sumInr_eventuallyEq_id.filter_mono (nhdsWithin_mono _ (fun _y hy ↦ hy.2))
759+
exact (hasFDerivWithinAt_id (extChartAt I q' q') _).congr_of_eventuallyEq this
760+
(by simp [writtenInExtChartAt, extChartAt])
761+
762+
theorem hasMFDerivAt_inr :
763+
HasMFDerivAt I I (@Sum.inr M M') q' (ContinuousLinearMap.id π•œ (TangentSpace I p)) := by
764+
simpa [HasMFDerivAt, hasMFDerivWithinAt_univ] using hasMFDerivWithinAt_inr (t := Set.univ)
765+
766+
theorem mfderivWithin_sumInl (hU : UniqueMDiffWithinAt I s q) :
767+
mfderivWithin I I (@Sum.inl M M') s q = ContinuousLinearMap.id π•œ (TangentSpace I p) :=
768+
(hasMFDerivWithinAt_inl).mfderivWithin hU
769+
770+
theorem mfderiv_sumInl :
771+
mfderiv I I (@Sum.inl M M') q = ContinuousLinearMap.id π•œ (TangentSpace I p) := by
772+
simpa [mfderivWithin_univ] using (mfderivWithin_sumInl (uniqueMDiffWithinAt_univ I))
773+
774+
theorem mfderivWithin_sumInr {t : Set M'} (hU : UniqueMDiffWithinAt I t q') :
775+
mfderivWithin I I (@Sum.inr M M') t q' = ContinuousLinearMap.id π•œ (TangentSpace I q') :=
776+
(hasMFDerivWithinAt_inr).mfderivWithin hU
777+
778+
theorem mfderiv_sumInr :
779+
mfderiv I I (@Sum.inr M M') q' = ContinuousLinearMap.id π•œ (TangentSpace I q') := by
780+
simpa [mfderivWithin_univ] using (mfderivWithin_sumInr (uniqueMDiffWithinAt_univ I))
781+
714782
end disjointUnion
715783

716784
section Arithmetic

0 commit comments

Comments
Β (0)