Lean source · namespace BFPP
Realization.lean
BFPP/Realization.lean · 152 lines
1import BFPP.Families2import BFPP.TwoProfileGeometry34/-! # Realization on the whole closed unit ball from an inseparable pair -/56namespace BFPP78set_option autoImplicit false910open Set11open scoped ZeroAtInfty1213universe u v w14variable {K : Type u} {ι : Type v} {κ : Type w}15 [TopologicalSpace K] [CompactSpace K]16 [LinearOrder ι] [OrderBot ι] [SuccOrder ι] [NoMaxOrder ι]17 [TopologicalSpace ι] [OrderTopology ι] [CompactIccSpace ι]18 [LinearOrder κ] [OrderBot κ] [SuccOrder κ] [NoMaxOrder κ]19 [TopologicalSpace κ] [OrderTopology κ] [CompactIccSpace κ]2021namespace InseparablePair2223noncomputable def positiveInput (z : TwoProfile ι κ) : C₀(ι, ℝ) :=24 z.val.1.positiveTail z.center z.center_bounds.2.2.12526noncomputable def negativeInput (z : TwoProfile ι κ) : C₀(κ, ℝ) :=27 z.val.2.positiveTail (-z.center) (by have h := z.center_bounds.2.2.2; linarith)2829noncomputable def positiveOutput (F : InseparablePair K ι κ) (z : TwoProfile ι κ) : C(K, ℝ) :=30 synthesisOperator F.positive.functions (positiveInput z)3132noncomputable def negativeOutput (F : InseparablePair K ι κ) (z : TwoProfile ι κ) : C(K, ℝ) :=33 synthesisOperator F.negative.functions (negativeInput z)3435theorem positiveOutput_zero (F : InseparablePair K ι κ) (t : K)36 (ht : ∀ i, F.positive.functions i t = 0) (z : TwoProfile ι κ) : F.positiveOutput z t = 0 :=37 synthesisOperator_zero_at _ F.positive.monotone F.positive.bounds38 stepCombination_denseRange t ht _3940theorem negativeOutput_zero (F : InseparablePair K ι κ) (t : K)41 (ht : ∀ j, F.negative.functions j t = 0) (z : TwoProfile ι κ) : F.negativeOutput z t = 0 :=42 synthesisOperator_zero_at _ F.negative.monotone F.negative.bounds43 stepCombination_denseRange t ht _4445theorem positiveOutput_centered_bounds (F : InseparablePair K ι κ) (z : TwoProfile ι κ) (t : K) :46 -1 ≤ z.center + F.positiveOutput z t ∧ z.center + F.positiveOutput z t ≤ 1 :=47 centeredSynthesis_bounds _ F.positive.monotone F.positive.bounds z.val.1 z.center _48 ⟨z.center_bounds.1, z.center_bounds.2.1⟩ t4950theorem negativeOutput_centered_bounds (F : InseparablePair K ι κ) (z : TwoProfile ι κ) (t : K) :51 -1 ≤ -z.center + F.negativeOutput z t ∧ -z.center + F.negativeOutput z t ≤ 1 := by52 apply centeredSynthesis_bounds _ F.negative.monotone F.negative.bounds z.val.2 (-z.center) _ _ t53 have h := z.center_bounds54 exact ⟨by linarith [h.2.1], by linarith [h.1]⟩5556noncomputable def synthesizeMap (F : InseparablePair K ι κ) (z : TwoProfile ι κ) : C(K, ℝ) :=57 ContinuousMap.const K z.center + F.positiveOutput z - F.negativeOutput z5859@[simp] theorem synthesizeMap_apply (F : InseparablePair K ι κ) (z : TwoProfile ι κ) (t : K) :60 F.synthesizeMap z t = z.center + F.positiveOutput z t - F.negativeOutput z t := rfl6162theorem synthesizeMap_bounds (F : InseparablePair K ι κ) (z : TwoProfile ι κ) (t : K) :63 -1 ≤ F.synthesizeMap z t ∧ F.synthesizeMap z t ≤ 1 := by64 rw [synthesizeMap_apply]65 rcases F.disjoint_channels t with hp | hn66 · rw [F.positiveOutput_zero t hp z]67 have h := F.negativeOutput_centered_bounds z t68 exact ⟨by linarith [h.2], by linarith [h.1]⟩69 · rw [F.negativeOutput_zero t hn z, sub_zero]70 exact F.positiveOutput_centered_bounds z t7172noncomputable def synthesize (F : InseparablePair K ι κ) (z : TwoProfile ι κ) :73 UnitBall C(K, ℝ) :=74 ⟨F.synthesizeMap z, (ContinuousMap.norm_le _ (by norm_num)).mpr75 (fun t => abs_le.mpr (F.synthesizeMap_bounds z t))⟩7677theorem positiveOutput_centered_dist (F : InseparablePair K ι κ) (z z' : TwoProfile ι κ) (t : K) :78 |(z.center + F.positiveOutput z t) - (z'.center + F.positiveOutput z' t)| ≤ dist z z' := by79 have hcenter : |z.center - z'.center| ≤ dist z z' := by80 simpa only [NNReal.coe_one, one_mul, Real.dist_eq] using81 TwoProfile.center_nonexpansive.dist_le_mul z z'82 exact centeredSynthesis_dist _ F.positive.monotone F.positive.bounds z.val.1 z'.val.183 z.center z'.center _ _ (dist z z') (le_max_left _ _) hcenter t8485theorem negativeOutput_centered_dist (F : InseparablePair K ι κ) (z z' : TwoProfile ι κ) (t : K) :86 |(-z.center + F.negativeOutput z t) - (-z'.center + F.negativeOutput z' t)| ≤ dist z z' := by87 have hcenter : |z.center - z'.center| ≤ dist z z' := by88 simpa only [NNReal.coe_one, one_mul, Real.dist_eq] using89 TwoProfile.center_nonexpansive.dist_le_mul z z'90 have hneg : |-z.center - (-z'.center)| ≤ dist z z' := by91 simpa only [neg_sub_neg, abs_sub_comm] using hcenter92 exact centeredSynthesis_dist _ F.negative.monotone F.negative.bounds z.val.2 z'.val.293 (-z.center) (-z'.center) _ _ (dist z z') (le_max_right _ _) hneg t9495theorem synthesize_nonexpansive (F : InseparablePair K ι κ) : LipschitzWith 1 F.synthesize := by96 apply LipschitzWith.of_dist_le_mul97 intro z z'98 simp only [NNReal.coe_one, one_mul]99 change dist (F.synthesizeMap z) (F.synthesizeMap z') ≤ dist z z'100 apply (ContinuousMap.dist_le dist_nonneg).mpr101 intro t102 rw [Real.dist_eq, synthesizeMap_apply, synthesizeMap_apply]103 rcases F.disjoint_channels t with hp | hn104 · rw [F.positiveOutput_zero t hp z, F.positiveOutput_zero t hp z']105 have h := abs_le.mp (F.negativeOutput_centered_dist z z' t)106 exact abs_le.mpr ⟨by linarith [h.2], by linarith [h.1]⟩107 · rw [F.negativeOutput_zero t hn z, F.negativeOutput_zero t hn z', sub_zero, sub_zero]108 exact F.positiveOutput_centered_dist z z' t109110theorem synthesize_at_positive_level (F : InseparablePair K ι κ) (z : TwoProfile ι κ)111 (i : ι) (t : K) (ht : t ∈ F.positive.levels i) :112 1 - z.val.1.val i ≤ (F.synthesize z).val t := by113 change 1 - z.val.1.val i ≤ F.synthesizeMap z t114 rw [synthesizeMap_apply, F.negativeOutput_zero t (F.negative_zero_at_positive_level i t ht) z,115 sub_zero]116 exact centeredSynthesis_at_level _ F.positive.monotone F.positive.bounds z.val.1117 z.center _ i t ht118119theorem synthesize_at_negative_level (F : InseparablePair K ι κ) (z : TwoProfile ι κ)120 (j : κ) (t : K) (ht : t ∈ F.negative.levels j) :121 (F.synthesize z).val t ≤ z.val.2.val j - 1 := by122 change F.synthesizeMap z t ≤ z.val.2.val j - 1123 rw [synthesizeMap_apply, F.positiveOutput_zero t (F.positive_zero_at_negative_level j t ht) z]124 have h := centeredSynthesis_at_level F.negative.functions F.negative.monotone F.negative.bounds125 z.val.2 (-z.center) (by have hc := z.center_bounds.2.2.2; linarith) j t ht126 change 1 - z.val.2.val j ≤ -z.center + F.negativeOutput z t at h127 linarith128129theorem analyze_synthesize_le (F : InseparablePair K ι κ) (z : TwoProfile ι κ) :130 F.levels.analyze (F.synthesize z) ≤ z :=131 F.levels.analyze_le_of_bounds (F.synthesize z) z (F.synthesize_at_positive_level z)132 (F.synthesize_at_negative_level z)133134/-- The final map for an already constructed inseparable pair. -/135noncomputable def ballMap (F : InseparablePair K ι κ) : UnitBall C(K, ℝ) → UnitBall C(K, ℝ) :=136 fun f => F.synthesize (F.levels.analyze f).delay137138theorem ballMap_nonexpansive (F : InseparablePair K ι κ) : LipschitzWith 1 F.ballMap :=139 nonexpansive_transfer F.levels.analyze F.synthesize TwoProfile.delay140 F.levels.analyze_nonexpansive F.synthesize_nonexpansive TwoProfile.delay_nonexpansive141142theorem ballMap_fixedPointFree [WellFoundedLT ι] [WellFoundedLT κ]143 (F : InseparablePair K ι κ) (f : UnitBall C(K, ℝ)) : F.ballMap f ≠ f :=144 fixedPointFree_of_order_domination F.levels.analyze F.synthesize TwoProfile.delay145 F.analyze_synthesize_le TwoProfile.no_subsolution f146147theorem not_hasBFPP [WellFoundedLT ι] [WellFoundedLT κ]148 (F : InseparablePair K ι κ) : ¬ HasBFPP C(K, ℝ) :=149 not_hasBFPP_of_fixedPointFree F.ballMap F.ballMap_nonexpansive F.ballMap_fixedPointFree150151end InseparablePair152end BFPPSHA-256
c6e4141107dfc9ce835ae834fa23f3a2d7c38e52a106f2fc3a261b4a58735a4f