Zulip Chat Archive

Stream: lean4

Topic: How to define a contraction map in my example.


liuzi (Feb 26 2025 at 15:51):

import Mathlib
open NNReal Set
/-- IsPicardLindelof in finite dimensional real vector space -/
structure IsPL {E : Type*} [NormedAddCommGroup E] [NormedSpace  E]
[CompleteSpace E] [FiniteDimensional  E]
    (b :   E  E) (t₀ : ) (x₀ : E) (α β K M r : 0) : Prop where
  cont :  x, x - x₀  β  ContinuousOn (fun t :  => b t x) (Icc (t₀ - α) (t₀ + α))
  lipschitz :  t  Icc (t₀ - α) (t₀ + α), LipschitzOnWith K (b t) {x | x - x₀  β}
  norm_le :  t  Icc (t₀ - α) (t₀ + α),  x, x - x₀  β  b t x  M
  K_nezero : K  0
  r_lt : r < α  β / M  1 / K

/-- all parameters -/
structure MyPL (E : Type*) [NormedAddCommGroup E] [NormedSpace  E]
[CompleteSpace E] [FiniteDimensional  E] where
  b :   E  E
  t₀ : 
  x₀ : E
  (α β K M r : 0)
  isPL : IsPL b t₀ x₀ α β K M r

namespace MyPL

variable {E : Type*} [NormedAddCommGroup E] [NormedSpace  E]
[CompleteSpace E] [FiniteDimensional  E]
variable (v : MyPL E)

/-- Defines the closed interval `[t₀ - r, t₀ + r]`. -/
def iccr : Set  := Icc (v.t₀ - v.r) (v.t₀ + v.r)

/-- Clearly, `t₀` belongs to the closed interval `[t₀ - r, t₀ + r]`. -/
lemma t₀_mem_iccr : v.t₀  v.iccr := by unfold iccr; simp

def t₀_iccr : v.iccr := ⟨_, v.t₀_mem_iccr

structure FunSpace where
  toFun : v.iccr  E
  map_t₀' : toFun v.t₀_iccr = v.x₀
  norm_le_β :  t : v.iccr, toFun t - v.x₀  v.β
  continuous: Continuous toFun
/-- Implementing Inhabited because we need FunSpace to be nonempty
in order to guarantee the existence of a fixed point. -/
instance : Inhabited (FunSpace v) :=
  { toFun := λ _ => v.x₀
     map_t₀' := by simp [t₀_iccr]
     norm_le_β := by simp
     continuous := by continuity
  }


namespace FunSpace

variable {v}
variable (f g: FunSpace v)
-- # Prove FunSpace is a Metric Space
noncomputable instance : MetricSpace v.FunSpace where
  dist f g :=  (t : v.iccr), f.toFun t - g.toFun t
  dist_self f := by simp [dist]
  dist_comm f g := by simp [dist, norm_sub_rev]
  dist_triangle f g h := by
    sorry
  eq_of_dist_eq_zero := by sorry

/-- Defines a contraction map. -/
def T (f : FunSpace v) : FunSpace v where
  toFun := λ t => v.b t (f.toFun t)
  map_t₀' := by
    sorry
  norm_le_β := by
    sorry
  continuous := by
    sorry
end FunSpace

end MyPL

Last updated: May 02 2025 at 03:31 UTC