[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j : ConnectedComponents J
⊢ Nonempty (Component j)
[PROOFSTEP]
induction j using Quotient.inductionOn'
[GOAL]
case h
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
a✝ : J
⊢ Nonempty (Component (Quotient.mk'' a✝))
[PROOFSTEP]
exact ⟨⟨_, rfl⟩⟩
[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j : ConnectedComponents J
⊢ IsConnected (Component j)
[PROOFSTEP]
apply isConnected_of_zigzag
[GOAL]
case h
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j : ConnectedComponents J
⊢ ∀ (j₁ j₂ : Component j), ∃ l, List.Chain Zag j₁ l ∧ List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
[PROOFSTEP]
rintro ⟨j₁, hj₁⟩
  ⟨j₂, rfl⟩
      -- We know that the underlying objects j₁ j₂ have some zigzag between them in `J`
[GOAL]
case h.mk.mk
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
⊢ ∃ l,
    List.Chain Zag { obj := j₁, property := hj₁ } l ∧
      List.getLast ({ obj := j₁, property := hj₁ } :: l) (_ : { obj := j₁, property := hj₁ } :: l ≠ []) =
        { obj := j₂, property := (_ : Quotient.mk'' j₂ = Quotient.mk'' j₂) }
[PROOFSTEP]
have h₁₂ : Zigzag j₁ j₂ := Quotient.exact' hj₁
[GOAL]
case h.mk.mk
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
⊢ ∃ l,
    List.Chain Zag { obj := j₁, property := hj₁ } l ∧
      List.getLast ({ obj := j₁, property := hj₁ } :: l) (_ : { obj := j₁, property := hj₁ } :: l ≠ []) =
        { obj := j₂, property := (_ : Quotient.mk'' j₂ = Quotient.mk'' j₂) }
[PROOFSTEP]
rcases List.exists_chain_of_relationReflTransGen h₁₂ with
  ⟨l, hl₁, hl₂⟩
    -- Everything which has a zigzag to j₂ can be lifted to the same component as `j₂`.
[GOAL]
case h.mk.mk.intro.intro
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
⊢ ∃ l,
    List.Chain Zag { obj := j₁, property := hj₁ } l ∧
      List.getLast ({ obj := j₁, property := hj₁ } :: l) (_ : { obj := j₁, property := hj₁ } :: l ≠ []) =
        { obj := j₂, property := (_ : Quotient.mk'' j₂ = Quotient.mk'' j₂) }
[PROOFSTEP]
let f : ∀ x, Zigzag x j₂ → Component (Quotient.mk'' j₂) := fun x h =>
  ⟨x, Quotient.sound' h⟩
    -- Everything in our chosen zigzag from `j₁` to `j₂` has a zigzag to `j₂`.
[GOAL]
case h.mk.mk.intro.intro
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
f : (x : J) → Zigzag x j₂ → Component (Quotient.mk'' j₂) :=
  fun x h => { obj := x, property := (_ : Quotient.mk'' x = Quotient.mk'' j₂) }
⊢ ∃ l,
    List.Chain Zag { obj := j₁, property := hj₁ } l ∧
      List.getLast ({ obj := j₁, property := hj₁ } :: l) (_ : { obj := j₁, property := hj₁ } :: l ≠ []) =
        { obj := j₂, property := (_ : Quotient.mk'' j₂ = Quotient.mk'' j₂) }
[PROOFSTEP]
have hf : ∀ a : J, a ∈ l → Zigzag a j₂ := by
  intro i hi
  apply List.Chain.induction (fun t => Zigzag t j₂) _ hl₁ hl₂ _ _ _ (List.mem_of_mem_tail hi)
  · intro j k
    apply Relation.ReflTransGen.head
  · apply Relation.ReflTransGen.refl
[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
f : (x : J) → Zigzag x j₂ → Component (Quotient.mk'' j₂) :=
  fun x h => { obj := x, property := (_ : Quotient.mk'' x = Quotient.mk'' j₂) }
⊢ ∀ (a : J), a ∈ l → Zigzag a j₂
[PROOFSTEP]
intro i hi
[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
f : (x : J) → Zigzag x j₂ → Component (Quotient.mk'' j₂) :=
  fun x h => { obj := x, property := (_ : Quotient.mk'' x = Quotient.mk'' j₂) }
i : J
hi : i ∈ l
⊢ Zigzag i j₂
[PROOFSTEP]
apply List.Chain.induction (fun t => Zigzag t j₂) _ hl₁ hl₂ _ _ _ (List.mem_of_mem_tail hi)
[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
f : (x : J) → Zigzag x j₂ → Component (Quotient.mk'' j₂) :=
  fun x h => { obj := x, property := (_ : Quotient.mk'' x = Quotient.mk'' j₂) }
i : J
hi : i ∈ l
⊢ ∀ ⦃x y : J⦄, Zag x y → (fun t => Zigzag t j₂) y → (fun t => Zigzag t j₂) x
[PROOFSTEP]
intro j k
[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
f : (x : J) → Zigzag x j₂ → Component (Quotient.mk'' j₂) :=
  fun x h => { obj := x, property := (_ : Quotient.mk'' x = Quotient.mk'' j₂) }
i : J
hi : i ∈ l
j k : J
⊢ Zag j k → (fun t => Zigzag t j₂) k → (fun t => Zigzag t j₂) j
[PROOFSTEP]
apply Relation.ReflTransGen.head
[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
f : (x : J) → Zigzag x j₂ → Component (Quotient.mk'' j₂) :=
  fun x h => { obj := x, property := (_ : Quotient.mk'' x = Quotient.mk'' j₂) }
i : J
hi : i ∈ l
⊢ Zigzag j₂ j₂
[PROOFSTEP]
apply Relation.ReflTransGen.refl
[GOAL]
case h.mk.mk.intro.intro
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
f : (x : J) → Zigzag x j₂ → Component (Quotient.mk'' j₂) :=
  fun x h => { obj := x, property := (_ : Quotient.mk'' x = Quotient.mk'' j₂) }
hf : ∀ (a : J), a ∈ l → Zigzag a j₂
⊢ ∃ l,
    List.Chain Zag { obj := j₁, property := hj₁ } l ∧
      List.getLast ({ obj := j₁, property := hj₁ } :: l) (_ : { obj := j₁, property := hj₁ } :: l ≠ []) =
        { obj := j₂, property := (_ : Quotient.mk'' j₂ = Quotient.mk'' j₂) }
[PROOFSTEP]
refine' ⟨l.pmap f hf, _, _⟩
[GOAL]
case h.mk.mk.intro.intro.refine'_1
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
f : (x : J) → Zigzag x j₂ → Component (Quotient.mk'' j₂) :=
  fun x h => { obj := x, property := (_ : Quotient.mk'' x = Quotient.mk'' j₂) }
hf : ∀ (a : J), a ∈ l → Zigzag a j₂
⊢ List.Chain Zag { obj := j₁, property := hj₁ } (List.pmap f l hf)
[PROOFSTEP]
refine' @List.chain_pmap_of_chain _ _ _ _ _ f (fun x y _ _ h => _) _ _ hl₁ h₁₂ _
[GOAL]
case h.mk.mk.intro.intro.refine'_1
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
f : (x : J) → Zigzag x j₂ → Component (Quotient.mk'' j₂) :=
  fun x h => { obj := x, property := (_ : Quotient.mk'' x = Quotient.mk'' j₂) }
hf : ∀ (a : J), a ∈ l → Zigzag a j₂
x y : J
x✝¹ : Zigzag x j₂
x✝ : Zigzag y j₂
h : Zag x y
⊢ Zag (f x x✝¹) (f y x✝)
[PROOFSTEP]
exact zag_of_zag_obj (Component.ι _) h
[GOAL]
case h.mk.mk.intro.intro.refine'_2
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
f : (x : J) → Zigzag x j₂ → Component (Quotient.mk'' j₂) :=
  fun x h => { obj := x, property := (_ : Quotient.mk'' x = Quotient.mk'' j₂) }
hf : ∀ (a : J), a ∈ l → Zigzag a j₂
⊢ List.getLast ({ obj := j₁, property := hj₁ } :: List.pmap f l hf)
      (_ : { obj := j₁, property := hj₁ } :: List.pmap f l hf ≠ []) =
    { obj := j₂, property := (_ : Quotient.mk'' j₂ = Quotient.mk'' j₂) }
[PROOFSTEP]
erw [List.getLast_pmap _ f (j₁ :: l) (by simpa [h₁₂] using hf) (List.cons_ne_nil _ _)]
[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
f : (x : J) → Zigzag x j₂ → Component (Quotient.mk'' j₂) :=
  fun x h => { obj := x, property := (_ : Quotient.mk'' x = Quotient.mk'' j₂) }
hf : ∀ (a : J), a ∈ l → Zigzag a j₂
⊢ ∀ (a : J), a ∈ j₁ :: l → Zigzag a j₂
[PROOFSTEP]
simpa [h₁₂] using hf
[GOAL]
case h.mk.mk.intro.intro.refine'_2
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j₁ j₂ : J
hj₁ : Quotient.mk'' j₁ = Quotient.mk'' j₂
h₁₂ : Zigzag j₁ j₂
l : List J
hl₁ : List.Chain Zag j₁ l
hl₂ : List.getLast (j₁ :: l) (_ : j₁ :: l ≠ []) = j₂
f : (x : J) → Zigzag x j₂ → Component (Quotient.mk'' j₂) :=
  fun x h => { obj := x, property := (_ : Quotient.mk'' x = Quotient.mk'' j₂) }
hf : ∀ (a : J), a ∈ l → Zigzag a j₂
⊢ f (List.getLast (j₁ :: l) (_ : j₁ :: l ≠ [])) (_ : Zigzag (List.getLast (j₁ :: l) (_ : j₁ :: l ≠ [])) j₂) =
    { obj := j₂, property := (_ : Quotient.mk'' j₂ = Quotient.mk'' j₂) }
[PROOFSTEP]
exact FullSubcategory.ext _ _ hl₂
[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
⊢ {X Y : Decomposed J} → ((decomposedTo J).obj X ⟶ (decomposedTo J).obj Y) → (X ⟶ Y)
[PROOFSTEP]
rintro ⟨j', X, hX⟩ ⟨k', Y, hY⟩ f
[GOAL]
case mk.mk.mk.mk
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j' : ConnectedComponents J
X : J
hX : Quotient.mk'' X = j'
k' : ConnectedComponents J
Y : J
hY : Quotient.mk'' Y = k'
f :
  (decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶
    (decomposedTo J).obj { fst := k', snd := { obj := Y, property := hY } }
⊢ { fst := j', snd := { obj := X, property := hX } } ⟶ { fst := k', snd := { obj := Y, property := hY } }
[PROOFSTEP]
dsimp at f
[GOAL]
case mk.mk.mk.mk
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j' : ConnectedComponents J
X : J
hX : Quotient.mk'' X = j'
k' : ConnectedComponents J
Y : J
hY : Quotient.mk'' Y = k'
f : X ⟶ Y
⊢ { fst := j', snd := { obj := X, property := hX } } ⟶ { fst := k', snd := { obj := Y, property := hY } }
[PROOFSTEP]
have : j' = k'
[GOAL]
case this
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j' : ConnectedComponents J
X : J
hX : Quotient.mk'' X = j'
k' : ConnectedComponents J
Y : J
hY : Quotient.mk'' Y = k'
f : X ⟶ Y
⊢ j' = k'
case mk.mk.mk.mk
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j' : ConnectedComponents J
X : J
hX : Quotient.mk'' X = j'
k' : ConnectedComponents J
Y : J
hY : Quotient.mk'' Y = k'
f : X ⟶ Y
this : j' = k'
⊢ { fst := j', snd := { obj := X, property := hX } } ⟶ { fst := k', snd := { obj := Y, property := hY } }
[PROOFSTEP]
rw [← hX, ← hY, Quotient.eq'']
[GOAL]
case this
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j' : ConnectedComponents J
X : J
hX : Quotient.mk'' X = j'
k' : ConnectedComponents J
Y : J
hY : Quotient.mk'' Y = k'
f : X ⟶ Y
⊢ Setoid.r X Y
case mk.mk.mk.mk
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j' : ConnectedComponents J
X : J
hX : Quotient.mk'' X = j'
k' : ConnectedComponents J
Y : J
hY : Quotient.mk'' Y = k'
f : X ⟶ Y
this : j' = k'
⊢ { fst := j', snd := { obj := X, property := hX } } ⟶ { fst := k', snd := { obj := Y, property := hY } }
[PROOFSTEP]
exact Relation.ReflTransGen.single (Or.inl ⟨f⟩)
[GOAL]
case mk.mk.mk.mk
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j' : ConnectedComponents J
X : J
hX : Quotient.mk'' X = j'
k' : ConnectedComponents J
Y : J
hY : Quotient.mk'' Y = k'
f : X ⟶ Y
this : j' = k'
⊢ { fst := j', snd := { obj := X, property := hX } } ⟶ { fst := k', snd := { obj := Y, property := hY } }
[PROOFSTEP]
subst this
[GOAL]
case mk.mk.mk.mk
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j' : ConnectedComponents J
X : J
hX : Quotient.mk'' X = j'
Y : J
f : X ⟶ Y
hY : Quotient.mk'' Y = j'
⊢ { fst := j', snd := { obj := X, property := hX } } ⟶ { fst := j', snd := { obj := Y, property := hY } }
[PROOFSTEP]
exact Sigma.SigmaHom.mk f
[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
⊢ ∀ {X Y : Decomposed J} (f : (decomposedTo J).obj X ⟶ (decomposedTo J).obj Y),
    (decomposedTo J).map
        (Sigma.casesOn (motive := fun x =>
          {Y : Decomposed J} → ((decomposedTo J).obj x ⟶ (decomposedTo J).obj Y) → (x ⟶ Y)) X
          (fun j' snd =>
            @FullSubcategory.casesOn J (fun k => Quotient.mk'' k = j')
              (fun x =>
                {Y : Decomposed J} →
                  ((decomposedTo J).obj { fst := j', snd := x } ⟶ (decomposedTo J).obj Y) →
                    ({ fst := j', snd := x } ⟶ Y))
              snd fun X hX {Y} =>
              Sigma.casesOn (motive := fun x =>
                ((decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶ (decomposedTo J).obj x) →
                  ({ fst := j', snd := { obj := X, property := hX } } ⟶ x))
                Y fun k' snd =>
                FullSubcategory.casesOn (motive := fun x =>
                  ((decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶
                      (decomposedTo J).obj { fst := k', snd := x }) →
                    ({ fst := j', snd := { obj := X, property := hX } } ⟶ { fst := k', snd := x }))
                  snd fun Y hY f =>
                  Eq.ndrec (motive := fun k' =>
                    (hY : Quotient.mk'' Y = k') →
                      { fst := j', snd := { obj := X, property := hX } } ⟶
                        { fst := k', snd := { obj := Y, property := hY } })
                    (fun hY => Sigma.SigmaHom.mk f) (_ : j' = k') hY)
          f) =
      f
[PROOFSTEP]
rintro ⟨j', X, hX⟩ ⟨_, Y, rfl⟩ f
[GOAL]
case mk.mk.mk.mk
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j' : ConnectedComponents J
X : J
hX : Quotient.mk'' X = j'
Y : J
f :
  (decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶
    (decomposedTo J).obj
      { fst := Quotient.mk'' Y, snd := { obj := Y, property := (_ : Quotient.mk'' Y = Quotient.mk'' Y) } }
⊢ (decomposedTo J).map
      (Sigma.casesOn (motive := fun x =>
        {Y : Decomposed J} → ((decomposedTo J).obj x ⟶ (decomposedTo J).obj Y) → (x ⟶ Y))
        { fst := j', snd := { obj := X, property := hX } }
        (fun j' snd =>
          @FullSubcategory.casesOn J (fun k => Quotient.mk'' k = j')
            (fun x =>
              {Y : Decomposed J} →
                ((decomposedTo J).obj { fst := j', snd := x } ⟶ (decomposedTo J).obj Y) → ({ fst := j', snd := x } ⟶ Y))
            snd fun X hX {Y} =>
            Sigma.casesOn (motive := fun x =>
              ((decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶ (decomposedTo J).obj x) →
                ({ fst := j', snd := { obj := X, property := hX } } ⟶ x))
              Y fun k' snd =>
              FullSubcategory.casesOn (motive := fun x =>
                ((decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶
                    (decomposedTo J).obj { fst := k', snd := x }) →
                  ({ fst := j', snd := { obj := X, property := hX } } ⟶ { fst := k', snd := x }))
                snd fun Y hY f =>
                Eq.ndrec (motive := fun k' =>
                  (hY : Quotient.mk'' Y = k') →
                    { fst := j', snd := { obj := X, property := hX } } ⟶
                      { fst := k', snd := { obj := Y, property := hY } })
                  (fun hY => Sigma.SigmaHom.mk f) (_ : j' = k') hY)
        f) =
    f
[PROOFSTEP]
have : Quotient.mk'' Y = j' := by
  rw [← hX, Quotient.eq'']
  exact Relation.ReflTransGen.single (Or.inr ⟨f⟩)
[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j' : ConnectedComponents J
X : J
hX : Quotient.mk'' X = j'
Y : J
f :
  (decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶
    (decomposedTo J).obj
      { fst := Quotient.mk'' Y, snd := { obj := Y, property := (_ : Quotient.mk'' Y = Quotient.mk'' Y) } }
⊢ Quotient.mk'' Y = j'
[PROOFSTEP]
rw [← hX, Quotient.eq'']
[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j' : ConnectedComponents J
X : J
hX : Quotient.mk'' X = j'
Y : J
f :
  (decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶
    (decomposedTo J).obj
      { fst := Quotient.mk'' Y, snd := { obj := Y, property := (_ : Quotient.mk'' Y = Quotient.mk'' Y) } }
⊢ Setoid.r Y X
[PROOFSTEP]
exact Relation.ReflTransGen.single (Or.inr ⟨f⟩)
[GOAL]
case mk.mk.mk.mk
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j' : ConnectedComponents J
X : J
hX : Quotient.mk'' X = j'
Y : J
f :
  (decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶
    (decomposedTo J).obj
      { fst := Quotient.mk'' Y, snd := { obj := Y, property := (_ : Quotient.mk'' Y = Quotient.mk'' Y) } }
this : Quotient.mk'' Y = j'
⊢ (decomposedTo J).map
      (Sigma.casesOn (motive := fun x =>
        {Y : Decomposed J} → ((decomposedTo J).obj x ⟶ (decomposedTo J).obj Y) → (x ⟶ Y))
        { fst := j', snd := { obj := X, property := hX } }
        (fun j' snd =>
          @FullSubcategory.casesOn J (fun k => Quotient.mk'' k = j')
            (fun x =>
              {Y : Decomposed J} →
                ((decomposedTo J).obj { fst := j', snd := x } ⟶ (decomposedTo J).obj Y) → ({ fst := j', snd := x } ⟶ Y))
            snd fun X hX {Y} =>
            Sigma.casesOn (motive := fun x =>
              ((decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶ (decomposedTo J).obj x) →
                ({ fst := j', snd := { obj := X, property := hX } } ⟶ x))
              Y fun k' snd =>
              FullSubcategory.casesOn (motive := fun x =>
                ((decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶
                    (decomposedTo J).obj { fst := k', snd := x }) →
                  ({ fst := j', snd := { obj := X, property := hX } } ⟶ { fst := k', snd := x }))
                snd fun Y hY f =>
                Eq.ndrec (motive := fun k' =>
                  (hY : Quotient.mk'' Y = k') →
                    { fst := j', snd := { obj := X, property := hX } } ⟶
                      { fst := k', snd := { obj := Y, property := hY } })
                  (fun hY => Sigma.SigmaHom.mk f) (_ : j' = k') hY)
        f) =
    f
[PROOFSTEP]
subst this
[GOAL]
case mk.mk.mk.mk
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
X Y : J
hX : Quotient.mk'' X = Quotient.mk'' Y
f :
  (decomposedTo J).obj { fst := Quotient.mk'' Y, snd := { obj := X, property := hX } } ⟶
    (decomposedTo J).obj
      { fst := Quotient.mk'' Y, snd := { obj := Y, property := (_ : Quotient.mk'' Y = Quotient.mk'' Y) } }
⊢ (decomposedTo J).map
      (Sigma.casesOn (motive := fun x =>
        {Y : Decomposed J} → ((decomposedTo J).obj x ⟶ (decomposedTo J).obj Y) → (x ⟶ Y))
        { fst := Quotient.mk'' Y, snd := { obj := X, property := hX } }
        (fun j' snd =>
          @FullSubcategory.casesOn J (fun k => Quotient.mk'' k = j')
            (fun x =>
              {Y : Decomposed J} →
                ((decomposedTo J).obj { fst := j', snd := x } ⟶ (decomposedTo J).obj Y) → ({ fst := j', snd := x } ⟶ Y))
            snd fun X hX {Y} =>
            Sigma.casesOn (motive := fun x =>
              ((decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶ (decomposedTo J).obj x) →
                ({ fst := j', snd := { obj := X, property := hX } } ⟶ x))
              Y fun k' snd =>
              FullSubcategory.casesOn (motive := fun x =>
                ((decomposedTo J).obj { fst := j', snd := { obj := X, property := hX } } ⟶
                    (decomposedTo J).obj { fst := k', snd := x }) →
                  ({ fst := j', snd := { obj := X, property := hX } } ⟶ { fst := k', snd := x }))
                snd fun Y hY f =>
                Eq.ndrec (motive := fun k' =>
                  (hY : Quotient.mk'' Y = k') →
                    { fst := j', snd := { obj := X, property := hX } } ⟶
                      { fst := k', snd := { obj := Y, property := hY } })
                  (fun hY => Sigma.SigmaHom.mk f) (_ : j' = k') hY)
        f) =
    f
[PROOFSTEP]
rfl
[GOAL]
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
⊢ ∀ {X Y : Decomposed J}, Function.Injective (decomposedTo J).map
[PROOFSTEP]
rintro ⟨_, j, rfl⟩ ⟨_, k, hY⟩ ⟨f⟩ ⟨_⟩ rfl
[GOAL]
case mk.mk.mk.mk.mk.mk
J : Type u₁
inst✝¹ : Category.{v₁, u₁} J
C : Type u₂
inst✝ : Category.{u₁, u₂} C
j k : J
hY : Quotient.mk'' k = Quotient.mk'' j
f : { obj := j, property := (_ : Quotient.mk'' j = Quotient.mk'' j) } ⟶ { obj := k, property := hY }
⊢ Sigma.SigmaHom.mk f = Sigma.SigmaHom.mk ((decomposedTo J).map (Sigma.SigmaHom.mk f))
[PROOFSTEP]
rfl


[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ✝ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f g : ι → Ω → E
ℱ✝ ℱ : Filtration ι m0
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
x : E
i j : ι
x✝ : i ≤ j
⊢ μ[(fun x_1 x_2 => x) j|↑ℱ i] =ᵐ[μ] (fun x_1 x_2 => x) i
[PROOFSTEP]
rw [condexp_const (ℱ.le _)]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ✝ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f✝ g : ι → Ω → E
ℱ✝ : Filtration ι m0
inst✝¹ : OrderBot ι
ℱ : Filtration ι m0
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
f : Ω → E
hf : StronglyMeasurable f
hfint : Integrable f
⊢ Martingale (fun x => f) ℱ μ
[PROOFSTEP]
refine' ⟨fun i => hf.mono <| ℱ.mono bot_le, fun i j _ => _⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ✝ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f✝ g : ι → Ω → E
ℱ✝ : Filtration ι m0
inst✝¹ : OrderBot ι
ℱ : Filtration ι m0
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
f : Ω → E
hf : StronglyMeasurable f
hfint : Integrable f
i j : ι
x✝ : i ≤ j
⊢ μ[(fun x => f) j|↑ℱ i] =ᵐ[μ] (fun x => f) i
[PROOFSTEP]
rw [condexp_of_stronglyMeasurable (ℱ.le _) (hf.mono <| ℱ.mono bot_le) hfint]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ✝ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ι → Ω → E
ℱ✝ ℱ : Filtration ι m0
μ : Measure Ω
i j : ι
x✝ : i ≤ j
⊢ μ[OfNat.ofNat 0 j|↑ℱ i] =ᵐ[μ] OfNat.ofNat 0 i
[PROOFSTEP]
rw [Pi.zero_apply, condexp_zero]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ✝ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ι → Ω → E
ℱ✝ ℱ : Filtration ι m0
μ : Measure Ω
i j : ι
x✝ : i ≤ j
⊢ 0 =ᵐ[μ] OfNat.ofNat 0 i
[PROOFSTEP]
simp
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ✝ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ι → Ω → E
ℱ✝ ℱ : Filtration ι m0
μ : Measure Ω
i j : ι
x✝ : i ≤ j
⊢ 0 =ᵐ[μ] 0
[PROOFSTEP]
rfl
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : SigmaFiniteFiltration μ ℱ
hf : Martingale f ℱ μ
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
⊢ ∫ (ω : Ω) in s, f i ω ∂μ = ∫ (ω : Ω) in s, f j ω ∂μ
[PROOFSTEP]
rw [← @set_integral_condexp _ _ _ _ _ (ℱ i) m0 _ _ _ (ℱ.le i) _ (hf.integrable j) hs]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : SigmaFiniteFiltration μ ℱ
hf : Martingale f ℱ μ
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
⊢ ∫ (ω : Ω) in s, f i ω ∂μ = ∫ (x : Ω) in s, (μ[f j|↑ℱ i]) x ∂μ
[PROOFSTEP]
refine' set_integral_congr_ae (ℱ.le i s hs) _
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : SigmaFiniteFiltration μ ℱ
hf : Martingale f ℱ μ
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
⊢ ∀ᵐ (x : Ω) ∂μ, x ∈ s → f i x = (μ[f j|↑ℱ i]) x
[PROOFSTEP]
filter_upwards [hf.2 i j hij] with _ heq _ using heq.symm
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
hf : Martingale f ℱ μ
hg : Martingale g ℱ μ
⊢ Martingale (f + g) ℱ μ
[PROOFSTEP]
refine' ⟨hf.adapted.add hg.adapted, fun i j hij => _⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
hf : Martingale f ℱ μ
hg : Martingale g ℱ μ
i j : ι
hij : i ≤ j
⊢ μ[(f + g) j|↑ℱ i] =ᵐ[μ] (f + g) i
[PROOFSTEP]
exact (condexp_add (hf.integrable j) (hg.integrable j)).trans ((hf.2 i j hij).add (hg.2 i j hij))
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
hf : Martingale f ℱ μ
hg : Martingale g ℱ μ
⊢ Martingale (f - g) ℱ μ
[PROOFSTEP]
rw [sub_eq_add_neg]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
hf : Martingale f ℱ μ
hg : Martingale g ℱ μ
⊢ Martingale (f + -g) ℱ μ
[PROOFSTEP]
exact hf.add hg.neg
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
c : ℝ
hf : Martingale f ℱ μ
⊢ Martingale (c • f) ℱ μ
[PROOFSTEP]
refine' ⟨hf.adapted.smul c, fun i j hij => _⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
c : ℝ
hf : Martingale f ℱ μ
i j : ι
hij : i ≤ j
⊢ μ[(c • f) j|↑ℱ i] =ᵐ[μ] (c • f) i
[PROOFSTEP]
refine' (condexp_smul c (f j)).trans ((hf.2 i j hij).mono fun x hx => _)
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
c : ℝ
hf : Martingale f ℱ μ
i j : ι
hij : i ≤ j
x : Ω
hx : (μ[f j|↑ℱ i]) x = f i x
⊢ (c • μ[f j|↑ℱ i]) x = (c • f) i x
[PROOFSTEP]
rw [Pi.smul_apply, hx, Pi.smul_apply, Pi.smul_apply]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : SigmaFiniteFiltration μ ℱ
f : ι → Ω → ℝ
hf : Supermartingale f ℱ μ
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
⊢ ∫ (ω : Ω) in s, f j ω ∂μ ≤ ∫ (ω : Ω) in s, f i ω ∂μ
[PROOFSTEP]
rw [← set_integral_condexp (ℱ.le i) (hf.integrable j) hs]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : SigmaFiniteFiltration μ ℱ
f : ι → Ω → ℝ
hf : Supermartingale f ℱ μ
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
⊢ ∫ (x : Ω) in s, (μ[f j|↑ℱ i]) x ∂μ ≤ ∫ (ω : Ω) in s, f i ω ∂μ
[PROOFSTEP]
refine' set_integral_mono_ae integrable_condexp.integrableOn (hf.integrable i).integrableOn _
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : SigmaFiniteFiltration μ ℱ
f : ι → Ω → ℝ
hf : Supermartingale f ℱ μ
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
⊢ (fun x => (μ[f j|↑ℱ i]) x) ≤ᵐ[μ] fun ω => f i ω
[PROOFSTEP]
filter_upwards [hf.2.1 i j hij] with _ heq using heq
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
hg : Supermartingale g ℱ μ
⊢ Supermartingale (f + g) ℱ μ
[PROOFSTEP]
refine' ⟨hf.1.add hg.1, fun i j hij => _, fun i => (hf.2.2 i).add (hg.2.2 i)⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
hg : Supermartingale g ℱ μ
i j : ι
hij : i ≤ j
⊢ μ[(f + g) j|↑ℱ i] ≤ᵐ[μ] (f + g) i
[PROOFSTEP]
refine' (condexp_add (hf.integrable j) (hg.integrable j)).le.trans _
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
hg : Supermartingale g ℱ μ
i j : ι
hij : i ≤ j
⊢ μ[f j|↑ℱ i] + μ[g j|↑ℱ i] ≤ᵐ[μ] (f + g) i
[PROOFSTEP]
filter_upwards [hf.2.1 i j hij, hg.2.1 i j hij]
[GOAL]
case h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
hg : Supermartingale g ℱ μ
i j : ι
hij : i ≤ j
⊢ ∀ (a : Ω), (μ[f j|↑ℱ i]) a ≤ f i a → (μ[g j|↑ℱ i]) a ≤ g i a → (μ[f j|↑ℱ i] + μ[g j|↑ℱ i]) a ≤ (f + g) i a
[PROOFSTEP]
intros
[GOAL]
case h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
hg : Supermartingale g ℱ μ
i j : ι
hij : i ≤ j
a✝² : Ω
a✝¹ : (μ[f j|↑ℱ i]) a✝² ≤ f i a✝²
a✝ : (μ[g j|↑ℱ i]) a✝² ≤ g i a✝²
⊢ (μ[f j|↑ℱ i] + μ[g j|↑ℱ i]) a✝² ≤ (f + g) i a✝²
[PROOFSTEP]
refine' add_le_add _ _
[GOAL]
case h.refine'_1
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
hg : Supermartingale g ℱ μ
i j : ι
hij : i ≤ j
a✝² : Ω
a✝¹ : (μ[f j|↑ℱ i]) a✝² ≤ f i a✝²
a✝ : (μ[g j|↑ℱ i]) a✝² ≤ g i a✝²
⊢ (μ[f j|↑ℱ i]) a✝² ≤ f i a✝²
[PROOFSTEP]
assumption
[GOAL]
case h.refine'_2
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
hg : Supermartingale g ℱ μ
i j : ι
hij : i ≤ j
a✝² : Ω
a✝¹ : (μ[f j|↑ℱ i]) a✝² ≤ f i a✝²
a✝ : (μ[g j|↑ℱ i]) a✝² ≤ g i a✝²
⊢ (μ[g j|↑ℱ i]) a✝² ≤ g i a✝²
[PROOFSTEP]
assumption
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
⊢ Submartingale (-f) ℱ μ
[PROOFSTEP]
refine' ⟨hf.1.neg, fun i j hij => _, fun i => (hf.2.2 i).neg⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
i j : ι
hij : i ≤ j
⊢ (-f) i ≤ᵐ[μ] μ[(-f) j|↑ℱ i]
[PROOFSTEP]
refine' EventuallyLE.trans _ (condexp_neg (f j)).symm.le
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
i j : ι
hij : i ≤ j
⊢ (-f) i ≤ᵐ[μ] -μ[f j|↑ℱ i]
[PROOFSTEP]
filter_upwards [hf.2.1 i j hij] with _ _
[GOAL]
case h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
i j : ι
hij : i ≤ j
a✝¹ : Ω
a✝ : (μ[f j|↑ℱ i]) a✝¹ ≤ f i a✝¹
⊢ (-f) i a✝¹ ≤ (-μ[f j|↑ℱ i]) a✝¹
[PROOFSTEP]
simpa
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Submartingale f ℱ μ
hg : Submartingale g ℱ μ
⊢ Submartingale (f + g) ℱ μ
[PROOFSTEP]
refine' ⟨hf.1.add hg.1, fun i j hij => _, fun i => (hf.2.2 i).add (hg.2.2 i)⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Submartingale f ℱ μ
hg : Submartingale g ℱ μ
i j : ι
hij : i ≤ j
⊢ (f + g) i ≤ᵐ[μ] μ[(f + g) j|↑ℱ i]
[PROOFSTEP]
refine' EventuallyLE.trans _ (condexp_add (hf.integrable j) (hg.integrable j)).symm.le
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Submartingale f ℱ μ
hg : Submartingale g ℱ μ
i j : ι
hij : i ≤ j
⊢ (f + g) i ≤ᵐ[μ] μ[f j|↑ℱ i] + μ[g j|↑ℱ i]
[PROOFSTEP]
filter_upwards [hf.2.1 i j hij, hg.2.1 i j hij]
[GOAL]
case h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Submartingale f ℱ μ
hg : Submartingale g ℱ μ
i j : ι
hij : i ≤ j
⊢ ∀ (a : Ω), f i a ≤ (μ[f j|↑ℱ i]) a → g i a ≤ (μ[g j|↑ℱ i]) a → (f + g) i a ≤ (μ[f j|↑ℱ i] + μ[g j|↑ℱ i]) a
[PROOFSTEP]
intros
[GOAL]
case h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Submartingale f ℱ μ
hg : Submartingale g ℱ μ
i j : ι
hij : i ≤ j
a✝² : Ω
a✝¹ : f i a✝² ≤ (μ[f j|↑ℱ i]) a✝²
a✝ : g i a✝² ≤ (μ[g j|↑ℱ i]) a✝²
⊢ (f + g) i a✝² ≤ (μ[f j|↑ℱ i] + μ[g j|↑ℱ i]) a✝²
[PROOFSTEP]
refine' add_le_add _ _
[GOAL]
case h.refine'_1
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Submartingale f ℱ μ
hg : Submartingale g ℱ μ
i j : ι
hij : i ≤ j
a✝² : Ω
a✝¹ : f i a✝² ≤ (μ[f j|↑ℱ i]) a✝²
a✝ : g i a✝² ≤ (μ[g j|↑ℱ i]) a✝²
⊢ f i a✝² ≤ (μ[f j|↑ℱ i]) a✝²
[PROOFSTEP]
assumption
[GOAL]
case h.refine'_2
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Submartingale f ℱ μ
hg : Submartingale g ℱ μ
i j : ι
hij : i ≤ j
a✝² : Ω
a✝¹ : f i a✝² ≤ (μ[f j|↑ℱ i]) a✝²
a✝ : g i a✝² ≤ (μ[g j|↑ℱ i]) a✝²
⊢ g i a✝² ≤ (μ[g j|↑ℱ i]) a✝²
[PROOFSTEP]
assumption
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Submartingale f ℱ μ
⊢ Supermartingale (-f) ℱ μ
[PROOFSTEP]
refine' ⟨hf.1.neg, fun i j hij => (condexp_neg (f j)).le.trans _, fun i => (hf.2.2 i).neg⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
⊢ -μ[f j|↑ℱ i] ≤ᵐ[μ] (-f) i
[PROOFSTEP]
filter_upwards [hf.2.1 i j hij] with _ _
[GOAL]
case h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
a✝¹ : Ω
a✝ : f i a✝¹ ≤ (μ[f j|↑ℱ i]) a✝¹
⊢ (-μ[f j|↑ℱ i]) a✝¹ ≤ (-f) i a✝¹
[PROOFSTEP]
simpa
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : SigmaFiniteFiltration μ ℱ
f : ι → Ω → ℝ
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
⊢ ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f j ω ∂μ
[PROOFSTEP]
rw [← neg_le_neg_iff, ← integral_neg, ← integral_neg]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : SigmaFiniteFiltration μ ℱ
f : ι → Ω → ℝ
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
⊢ ∫ (a : Ω) in s, -f j a ∂μ ≤ ∫ (a : Ω) in s, -f i a ∂μ
[PROOFSTEP]
exact Supermartingale.set_integral_le hf.neg hij hs
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Submartingale f ℱ μ
hg : Supermartingale g ℱ μ
⊢ Submartingale (f - g) ℱ μ
[PROOFSTEP]
rw [sub_eq_add_neg]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Submartingale f ℱ μ
hg : Supermartingale g ℱ μ
⊢ Submartingale (f + -g) ℱ μ
[PROOFSTEP]
exact hf.add hg.neg
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g✝ : ι → Ω → E
ℱ : Filtration ι m0
f g : ι → Ω → ℝ
hf : Submartingale f ℱ μ
hg : Submartingale g ℱ μ
⊢ Submartingale (f ⊔ g) ℱ μ
[PROOFSTEP]
refine'
  ⟨fun i => @StronglyMeasurable.sup _ _ _ _ (ℱ i) _ _ _ (hf.adapted i) (hg.adapted i), fun i j hij => _, fun i =>
    Integrable.sup (hf.integrable _) (hg.integrable _)⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g✝ : ι → Ω → E
ℱ : Filtration ι m0
f g : ι → Ω → ℝ
hf : Submartingale f ℱ μ
hg : Submartingale g ℱ μ
i j : ι
hij : i ≤ j
⊢ (f ⊔ g) i ≤ᵐ[μ] μ[(f ⊔ g) j|↑ℱ i]
[PROOFSTEP]
refine' EventuallyLE.sup_le _ _
[GOAL]
case refine'_1
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g✝ : ι → Ω → E
ℱ : Filtration ι m0
f g : ι → Ω → ℝ
hf : Submartingale f ℱ μ
hg : Submartingale g ℱ μ
i j : ι
hij : i ≤ j
⊢ (fun i_1 => f i i_1) ≤ᵐ[μ] μ[(f ⊔ g) j|↑ℱ i]
[PROOFSTEP]
exact
  EventuallyLE.trans (hf.2.1 i j hij)
    (condexp_mono (hf.integrable _) (Integrable.sup (hf.integrable j) (hg.integrable j))
      (eventually_of_forall fun x => le_max_left _ _))
[GOAL]
case refine'_2
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g✝ : ι → Ω → E
ℱ : Filtration ι m0
f g : ι → Ω → ℝ
hf : Submartingale f ℱ μ
hg : Submartingale g ℱ μ
i j : ι
hij : i ≤ j
⊢ (fun i_1 => g i i_1) ≤ᵐ[μ] μ[(f ⊔ g) j|↑ℱ i]
[PROOFSTEP]
exact
  EventuallyLE.trans (hg.2.1 i j hij)
    (condexp_mono (hg.integrable _) (Integrable.sup (hf.integrable j) (hg.integrable j))
      (eventually_of_forall fun x => le_max_right _ _))
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : IsFiniteMeasure μ
f : ι → Ω → ℝ
hadp : Adapted ℱ f
hint : ∀ (i : ι), Integrable (f i)
hf : ∀ (i j : ι), i ≤ j → ∀ (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f j ω ∂μ
⊢ Submartingale f ℱ μ
[PROOFSTEP]
refine' ⟨hadp, fun i j hij => _, hint⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : IsFiniteMeasure μ
f : ι → Ω → ℝ
hadp : Adapted ℱ f
hint : ∀ (i : ι), Integrable (f i)
hf : ∀ (i j : ι), i ≤ j → ∀ (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f j ω ∂μ
i j : ι
hij : i ≤ j
⊢ f i ≤ᵐ[μ] μ[f j|↑ℱ i]
[PROOFSTEP]
suffices f i ≤ᵐ[μ.trim (ℱ.le i)] μ[f j|ℱ i] by exact ae_le_of_ae_le_trim this
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : IsFiniteMeasure μ
f : ι → Ω → ℝ
hadp : Adapted ℱ f
hint : ∀ (i : ι), Integrable (f i)
hf : ∀ (i j : ι), i ≤ j → ∀ (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f j ω ∂μ
i j : ι
hij : i ≤ j
this : f i ≤ᵐ[Measure.trim μ (_ : ↑ℱ i ≤ m0)] μ[f j|↑ℱ i]
⊢ f i ≤ᵐ[μ] μ[f j|↑ℱ i]
[PROOFSTEP]
exact ae_le_of_ae_le_trim this
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : IsFiniteMeasure μ
f : ι → Ω → ℝ
hadp : Adapted ℱ f
hint : ∀ (i : ι), Integrable (f i)
hf : ∀ (i j : ι), i ≤ j → ∀ (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f j ω ∂μ
i j : ι
hij : i ≤ j
⊢ f i ≤ᵐ[Measure.trim μ (_ : ↑ℱ i ≤ m0)] μ[f j|↑ℱ i]
[PROOFSTEP]
suffices 0 ≤ᵐ[μ.trim (ℱ.le i)] μ[f j|ℱ i] - f i
  by
  filter_upwards [this] with x hx
  rwa [← sub_nonneg]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : IsFiniteMeasure μ
f : ι → Ω → ℝ
hadp : Adapted ℱ f
hint : ∀ (i : ι), Integrable (f i)
hf : ∀ (i j : ι), i ≤ j → ∀ (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f j ω ∂μ
i j : ι
hij : i ≤ j
this : 0 ≤ᵐ[Measure.trim μ (_ : ↑ℱ i ≤ m0)] μ[f j|↑ℱ i] - f i
⊢ f i ≤ᵐ[Measure.trim μ (_ : ↑ℱ i ≤ m0)] μ[f j|↑ℱ i]
[PROOFSTEP]
filter_upwards [this] with x hx
[GOAL]
case h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : IsFiniteMeasure μ
f : ι → Ω → ℝ
hadp : Adapted ℱ f
hint : ∀ (i : ι), Integrable (f i)
hf : ∀ (i j : ι), i ≤ j → ∀ (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f j ω ∂μ
i j : ι
hij : i ≤ j
this : 0 ≤ᵐ[Measure.trim μ (_ : ↑ℱ i ≤ m0)] μ[f j|↑ℱ i] - f i
x : Ω
hx : OfNat.ofNat 0 x ≤ (μ[f j|↑ℱ i] - f i) x
⊢ f i x ≤ (μ[f j|↑ℱ i]) x
[PROOFSTEP]
rwa [← sub_nonneg]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : IsFiniteMeasure μ
f : ι → Ω → ℝ
hadp : Adapted ℱ f
hint : ∀ (i : ι), Integrable (f i)
hf : ∀ (i j : ι), i ≤ j → ∀ (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f j ω ∂μ
i j : ι
hij : i ≤ j
⊢ 0 ≤ᵐ[Measure.trim μ (_ : ↑ℱ i ≤ m0)] μ[f j|↑ℱ i] - f i
[PROOFSTEP]
refine'
  ae_nonneg_of_forall_set_integral_nonneg
    ((integrable_condexp.sub (hint i)).trim _ (stronglyMeasurable_condexp.sub <| hadp i)) fun s hs _ => _
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : IsFiniteMeasure μ
f : ι → Ω → ℝ
hadp : Adapted ℱ f
hint : ∀ (i : ι), Integrable (f i)
hf : ∀ (i j : ι), i ≤ j → ∀ (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f j ω ∂μ
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
x✝ : ↑↑(Measure.trim μ (_ : ↑ℱ i ≤ m0)) s < ⊤
⊢ 0 ≤ ∫ (x : Ω) in s, (μ[f j|↑ℱ i] - f i) x ∂Measure.trim μ (_ : ↑ℱ i ≤ m0)
[PROOFSTEP]
specialize hf i j hij s hs
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : IsFiniteMeasure μ
f : ι → Ω → ℝ
hadp : Adapted ℱ f
hint : ∀ (i : ι), Integrable (f i)
i j : ι
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
x✝ : ↑↑(Measure.trim μ (_ : ↑ℱ i ≤ m0)) s < ⊤
hf : ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f j ω ∂μ
⊢ 0 ≤ ∫ (x : Ω) in s, (μ[f j|↑ℱ i] - f i) x ∂Measure.trim μ (_ : ↑ℱ i ≤ m0)
[PROOFSTEP]
rwa [← set_integral_trim _ (stronglyMeasurable_condexp.sub <| hadp i) hs,
  integral_sub' integrable_condexp.integrableOn (hint i).integrableOn, sub_nonneg,
  set_integral_condexp (ℱ.le i) (hint j) hs]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : IsFiniteMeasure μ
f : ι → Ω → ℝ
hadp : Adapted ℱ f
hint : ∀ (i : ι), Integrable (f i)
hf : ∀ (i j : ι), i ≤ j → 0 ≤ᵐ[μ] μ[f j - f i|↑ℱ i]
⊢ Submartingale f ℱ μ
[PROOFSTEP]
refine' ⟨hadp, fun i j hij => _, hint⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : IsFiniteMeasure μ
f : ι → Ω → ℝ
hadp : Adapted ℱ f
hint : ∀ (i : ι), Integrable (f i)
hf : ∀ (i j : ι), i ≤ j → 0 ≤ᵐ[μ] μ[f j - f i|↑ℱ i]
i j : ι
hij : i ≤ j
⊢ f i ≤ᵐ[μ] μ[f j|↑ℱ i]
[PROOFSTEP]
rw [← condexp_of_stronglyMeasurable (ℱ.le _) (hadp _) (hint _), ← eventually_sub_nonneg]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
inst✝ : IsFiniteMeasure μ
f : ι → Ω → ℝ
hadp : Adapted ℱ f
hint : ∀ (i : ι), Integrable (f i)
hf : ∀ (i j : ι), i ≤ j → 0 ≤ᵐ[μ] μ[f j - f i|↑ℱ i]
i j : ι
hij : i ≤ j
⊢ 0 ≤ᵐ[μ] μ[f j|↑ℱ i] - μ[f i|↑ℱ i]
[PROOFSTEP]
exact EventuallyLE.trans (hf i j hij) (condexp_sub (hint _) (hint _)).le
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
f : ι → Ω → ℝ
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
⊢ 0 ≤ᵐ[μ] μ[f j - f i|↑ℱ i]
[PROOFSTEP]
by_cases h : SigmaFinite (μ.trim (ℱ.le i))
[GOAL]
case pos
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
f : ι → Ω → ℝ
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
h : SigmaFinite (Measure.trim μ (_ : ↑ℱ i ≤ m0))
⊢ 0 ≤ᵐ[μ] μ[f j - f i|↑ℱ i]
case neg
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
f : ι → Ω → ℝ
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
h : ¬SigmaFinite (Measure.trim μ (_ : ↑ℱ i ≤ m0))
⊢ 0 ≤ᵐ[μ] μ[f j - f i|↑ℱ i]
[PROOFSTEP]
swap
[GOAL]
case neg
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
f : ι → Ω → ℝ
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
h : ¬SigmaFinite (Measure.trim μ (_ : ↑ℱ i ≤ m0))
⊢ 0 ≤ᵐ[μ] μ[f j - f i|↑ℱ i]
[PROOFSTEP]
rw [condexp_of_not_sigmaFinite (ℱ.le i) h]
[GOAL]
case pos
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
f : ι → Ω → ℝ
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
h : SigmaFinite (Measure.trim μ (_ : ↑ℱ i ≤ m0))
⊢ 0 ≤ᵐ[μ] μ[f j - f i|↑ℱ i]
[PROOFSTEP]
refine' EventuallyLE.trans _ (condexp_sub (hf.integrable _) (hf.integrable _)).symm.le
[GOAL]
case pos
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
f : ι → Ω → ℝ
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
h : SigmaFinite (Measure.trim μ (_ : ↑ℱ i ≤ m0))
⊢ 0 ≤ᵐ[μ] μ[f j|↑ℱ i] - μ[f i|↑ℱ i]
[PROOFSTEP]
rw [eventually_sub_nonneg, condexp_of_stronglyMeasurable (ℱ.le _) (hf.adapted _) (hf.integrable _)]
[GOAL]
case pos
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝³ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
f : ι → Ω → ℝ
hf : Submartingale f ℱ μ
i j : ι
hij : i ≤ j
h : SigmaFinite (Measure.trim μ (_ : ↑ℱ i ≤ m0))
⊢ f i ≤ᵐ[μ] μ[f j|↑ℱ i]
[PROOFSTEP]
exact hf.2.1 i j hij
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
hg : Submartingale g ℱ μ
⊢ Supermartingale (f - g) ℱ μ
[PROOFSTEP]
rw [sub_eq_add_neg]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f g : ι → Ω → E
ℱ : Filtration ι m0
inst✝¹ : Preorder E
inst✝ : CovariantClass E E (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
hf : Supermartingale f ℱ μ
hg : Submartingale g ℱ μ
⊢ Supermartingale (f + -g) ℱ μ
[PROOFSTEP]
exact hf.add hg.neg
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : 0 ≤ c
hf : Supermartingale f ℱ μ
⊢ Supermartingale (c • f) ℱ μ
[PROOFSTEP]
refine' ⟨hf.1.smul c, fun i j hij => _, fun i => (hf.2.2 i).smul c⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : 0 ≤ c
hf : Supermartingale f ℱ μ
i j : ι
hij : i ≤ j
⊢ μ[(c • f) j|↑ℱ i] ≤ᵐ[μ] (c • f) i
[PROOFSTEP]
refine' (condexp_smul c (f j)).le.trans _
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : 0 ≤ c
hf : Supermartingale f ℱ μ
i j : ι
hij : i ≤ j
⊢ c • μ[f j|↑ℱ i] ≤ᵐ[μ] (c • f) i
[PROOFSTEP]
filter_upwards [hf.2.1 i j hij] with _ hle
[GOAL]
case h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : 0 ≤ c
hf : Supermartingale f ℱ μ
i j : ι
hij : i ≤ j
a✝ : Ω
hle : (μ[f j|↑ℱ i]) a✝ ≤ f i a✝
⊢ (c • μ[f j|↑ℱ i]) a✝ ≤ (c • f) i a✝
[PROOFSTEP]
simp_rw [Pi.smul_apply]
[GOAL]
case h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : 0 ≤ c
hf : Supermartingale f ℱ μ
i j : ι
hij : i ≤ j
a✝ : Ω
hle : (μ[f j|↑ℱ i]) a✝ ≤ f i a✝
⊢ c • (μ[f j|↑ℱ i]) a✝ ≤ c • f i a✝
[PROOFSTEP]
exact smul_le_smul_of_nonneg hle hc
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : c ≤ 0
hf : Supermartingale f ℱ μ
⊢ Submartingale (c • f) ℱ μ
[PROOFSTEP]
rw [← neg_neg c, (by ext (i x); simp : - -c • f = -(-c • f))]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : c ≤ 0
hf : Supermartingale f ℱ μ
⊢ - -c • f = -(-c • f)
[PROOFSTEP]
ext (i x)
[GOAL]
case h.h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : c ≤ 0
hf : Supermartingale f ℱ μ
i : ι
x : Ω
⊢ (- -c • f) i x = (-(-c • f)) i x
[PROOFSTEP]
simp
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : c ≤ 0
hf : Supermartingale f ℱ μ
⊢ Submartingale (-(-c • f)) ℱ μ
[PROOFSTEP]
exact (hf.smul_nonneg <| neg_nonneg.2 hc).neg
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : 0 ≤ c
hf : Submartingale f ℱ μ
⊢ Submartingale (c • f) ℱ μ
[PROOFSTEP]
rw [← neg_neg c, (by ext (i x); simp : - -c • f = -(c • -f))]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : 0 ≤ c
hf : Submartingale f ℱ μ
⊢ - -c • f = -(c • -f)
[PROOFSTEP]
ext (i x)
[GOAL]
case h.h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : 0 ≤ c
hf : Submartingale f ℱ μ
i : ι
x : Ω
⊢ (- -c • f) i x = (-(c • -f)) i x
[PROOFSTEP]
simp
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : 0 ≤ c
hf : Submartingale f ℱ μ
⊢ Submartingale (-(c • -f)) ℱ μ
[PROOFSTEP]
exact Supermartingale.neg (hf.neg.smul_nonneg hc)
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : c ≤ 0
hf : Submartingale f ℱ μ
⊢ Supermartingale (c • f) ℱ μ
[PROOFSTEP]
rw [← neg_neg c, (by ext (i x); simp : - -c • f = -(-c • f))]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : c ≤ 0
hf : Submartingale f ℱ μ
⊢ - -c • f = -(-c • f)
[PROOFSTEP]
ext (i x)
[GOAL]
case h.h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : c ≤ 0
hf : Submartingale f ℱ μ
i : ι
x : Ω
⊢ (- -c • f) i x = (-(-c • f)) i x
[PROOFSTEP]
simp
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁷ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
F : Type u_4
inst✝³ : NormedLatticeAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
inst✝ : OrderedSMul ℝ F
f : ι → Ω → F
c : ℝ
hc : c ≤ 0
hf : Submartingale f ℱ μ
⊢ Supermartingale (-(-c • f)) ℱ μ
[PROOFSTEP]
exact (hf.smul_nonneg <| neg_nonneg.2 hc).neg
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ) (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f (i + 1) ω ∂μ
⊢ Submartingale f 𝒢 μ
[PROOFSTEP]
refine' submartingale_of_set_integral_le hadp hint fun i j hij s hs => _
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ) (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f (i + 1) ω ∂μ
i j : ℕ
hij : i ≤ j
s : Set Ω
hs : MeasurableSet s
⊢ ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f j ω ∂μ
[PROOFSTEP]
induction' hij with k hk₁ hk₂
[GOAL]
case refl
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ) (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f (i + 1) ω ∂μ
i j : ℕ
s : Set Ω
hs : MeasurableSet s
⊢ ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f i ω ∂μ
[PROOFSTEP]
exact le_rfl
[GOAL]
case step
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ) (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f (i + 1) ω ∂μ
i j : ℕ
s : Set Ω
hs : MeasurableSet s
k : ℕ
hk₁ : Nat.le i k
hk₂ : ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f k ω ∂μ
⊢ ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f (Nat.succ k) ω ∂μ
[PROOFSTEP]
exact le_trans hk₂ (hf k s (𝒢.mono hk₁ _ hs))
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ) (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f (i + 1) ω ∂μ ≤ ∫ (ω : Ω) in s, f i ω ∂μ
⊢ Supermartingale f 𝒢 μ
[PROOFSTEP]
rw [← neg_neg f]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ) (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f (i + 1) ω ∂μ ≤ ∫ (ω : Ω) in s, f i ω ∂μ
⊢ Supermartingale (- -f) 𝒢 μ
[PROOFSTEP]
refine' (submartingale_of_set_integral_le_succ hadp.neg (fun i => (hint i).neg) _).neg
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ) (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, f (i + 1) ω ∂μ ≤ ∫ (ω : Ω) in s, f i ω ∂μ
⊢ ∀ (i : ℕ) (s : Set Ω), MeasurableSet s → ∫ (ω : Ω) in s, (-f) i ω ∂μ ≤ ∫ (ω : Ω) in s, (-f) (i + 1) ω ∂μ
[PROOFSTEP]
simpa only [integral_neg, Pi.neg_apply, neg_le_neg_iff]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), f i ≤ᵐ[μ] μ[f (i + 1)|↑𝒢 i]
⊢ Submartingale f 𝒢 μ
[PROOFSTEP]
refine' submartingale_of_set_integral_le_succ hadp hint fun i s hs => _
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), f i ≤ᵐ[μ] μ[f (i + 1)|↑𝒢 i]
i : ℕ
s : Set Ω
hs : MeasurableSet s
⊢ ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f (i + 1) ω ∂μ
[PROOFSTEP]
have : ∫ ω in s, f (i + 1) ω ∂μ = ∫ ω in s, (μ[f (i + 1)|𝒢 i]) ω ∂μ := (set_integral_condexp (𝒢.le i) (hint _) hs).symm
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), f i ≤ᵐ[μ] μ[f (i + 1)|↑𝒢 i]
i : ℕ
s : Set Ω
hs : MeasurableSet s
this : ∫ (ω : Ω) in s, f (i + 1) ω ∂μ = ∫ (ω : Ω) in s, (μ[f (i + 1)|↑𝒢 i]) ω ∂μ
⊢ ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, f (i + 1) ω ∂μ
[PROOFSTEP]
rw [this]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), f i ≤ᵐ[μ] μ[f (i + 1)|↑𝒢 i]
i : ℕ
s : Set Ω
hs : MeasurableSet s
this : ∫ (ω : Ω) in s, f (i + 1) ω ∂μ = ∫ (ω : Ω) in s, (μ[f (i + 1)|↑𝒢 i]) ω ∂μ
⊢ ∫ (ω : Ω) in s, f i ω ∂μ ≤ ∫ (ω : Ω) in s, (μ[f (i + 1)|↑𝒢 i]) ω ∂μ
[PROOFSTEP]
exact set_integral_mono_ae (hint i).integrableOn integrable_condexp.integrableOn (hf i)
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), μ[f (i + 1)|↑𝒢 i] ≤ᵐ[μ] f i
⊢ Supermartingale f 𝒢 μ
[PROOFSTEP]
rw [← neg_neg f]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), μ[f (i + 1)|↑𝒢 i] ≤ᵐ[μ] f i
⊢ Supermartingale (- -f) 𝒢 μ
[PROOFSTEP]
refine' (submartingale_nat hadp.neg (fun i => (hint i).neg) fun i => EventuallyLE.trans _ (condexp_neg _).symm.le).neg
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), μ[f (i + 1)|↑𝒢 i] ≤ᵐ[μ] f i
i : ℕ
⊢ (-f) i ≤ᵐ[μ] -μ[fun i_1 => f (i + 1) i_1|↑𝒢 i]
[PROOFSTEP]
filter_upwards [hf i] with x hx using neg_le_neg hx
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), 0 ≤ᵐ[μ] μ[f (i + 1) - f i|↑𝒢 i]
⊢ Submartingale f 𝒢 μ
[PROOFSTEP]
refine' submartingale_nat hadp hint fun i => _
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), 0 ≤ᵐ[μ] μ[f (i + 1) - f i|↑𝒢 i]
i : ℕ
⊢ f i ≤ᵐ[μ] μ[f (i + 1)|↑𝒢 i]
[PROOFSTEP]
rw [← condexp_of_stronglyMeasurable (𝒢.le _) (hadp _) (hint _), ← eventually_sub_nonneg]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), 0 ≤ᵐ[μ] μ[f (i + 1) - f i|↑𝒢 i]
i : ℕ
⊢ 0 ≤ᵐ[μ] μ[f (i + 1)|↑𝒢 i] - μ[f i|↑𝒢 i]
[PROOFSTEP]
exact EventuallyLE.trans (hf i) (condexp_sub (hint _) (hint _)).le
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), 0 ≤ᵐ[μ] μ[f i - f (i + 1)|↑𝒢 i]
⊢ Supermartingale f 𝒢 μ
[PROOFSTEP]
rw [← neg_neg f]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), 0 ≤ᵐ[μ] μ[f i - f (i + 1)|↑𝒢 i]
⊢ Supermartingale (- -f) 𝒢 μ
[PROOFSTEP]
refine' (submartingale_of_condexp_sub_nonneg_nat hadp.neg (fun i => (hint i).neg) _).neg
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), 0 ≤ᵐ[μ] μ[f i - f (i + 1)|↑𝒢 i]
⊢ ∀ (i : ℕ), 0 ≤ᵐ[μ] μ[(-f) (i + 1) - (-f) i|↑𝒢 i]
[PROOFSTEP]
simpa only [Pi.zero_apply, Pi.neg_apply, neg_sub_neg]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), μ[f (i + 1) - f i|↑𝒢 i] =ᵐ[μ] 0
⊢ Martingale f 𝒢 μ
[PROOFSTEP]
refine'
  martingale_iff.2
    ⟨supermartingale_of_condexp_sub_nonneg_nat hadp hint fun i => _,
      submartingale_of_condexp_sub_nonneg_nat hadp hint fun i => (hf i).symm.le⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), μ[f (i + 1) - f i|↑𝒢 i] =ᵐ[μ] 0
i : ℕ
⊢ 0 ≤ᵐ[μ] μ[f i - f (i + 1)|↑𝒢 i]
[PROOFSTEP]
rw [← neg_sub]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), μ[f (i + 1) - f i|↑𝒢 i] =ᵐ[μ] 0
i : ℕ
⊢ 0 ≤ᵐ[μ] μ[-(f (i + 1) - f i)|↑𝒢 i]
[PROOFSTEP]
refine' (EventuallyEq.trans _ (condexp_neg _).symm).le
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), μ[f (i + 1) - f i|↑𝒢 i] =ᵐ[μ] 0
i : ℕ
⊢ 0 =ᵐ[μ] -μ[f (i + 1) - f i|↑𝒢 i]
[PROOFSTEP]
filter_upwards [hf i] with x hx
[GOAL]
case h
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
f : ℕ → Ω → ℝ
hadp : Adapted 𝒢 f
hint : ∀ (i : ℕ), Integrable (f i)
hf : ∀ (i : ℕ), μ[f (i + 1) - f i|↑𝒢 i] =ᵐ[μ] 0
i : ℕ
x : Ω
hx : (μ[f (i + 1) - f i|↑𝒢 i]) x = OfNat.ofNat 0 x
⊢ OfNat.ofNat 0 x = (-μ[f (i + 1) - f i|↑𝒢 i]) x
[PROOFSTEP]
simpa only [Pi.zero_apply, Pi.neg_apply, zero_eq_neg]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝¹ : Preorder E
inst✝ : SigmaFiniteFiltration μ 𝒢
f : ℕ → Ω → E
hfmgle : Submartingale f 𝒢 μ
hfadp : Adapted 𝒢 fun n => f (n + 1)
n : ℕ
⊢ f 0 ≤ᵐ[μ] f n
[PROOFSTEP]
induction' n with k ih
[GOAL]
case zero
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝¹ : Preorder E
inst✝ : SigmaFiniteFiltration μ 𝒢
f : ℕ → Ω → E
hfmgle : Submartingale f 𝒢 μ
hfadp : Adapted 𝒢 fun n => f (n + 1)
⊢ f 0 ≤ᵐ[μ] f Nat.zero
[PROOFSTEP]
rfl
[GOAL]
case succ
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝¹ : Preorder E
inst✝ : SigmaFiniteFiltration μ 𝒢
f : ℕ → Ω → E
hfmgle : Submartingale f 𝒢 μ
hfadp : Adapted 𝒢 fun n => f (n + 1)
k : ℕ
ih : f 0 ≤ᵐ[μ] f k
⊢ f 0 ≤ᵐ[μ] f (Nat.succ k)
[PROOFSTEP]
exact
  ih.trans
    ((hfmgle.2.1 k (k + 1) k.le_succ).trans_eq <|
      Germ.coe_eq.mp <| congr_arg Germ.ofFun <| condexp_of_stronglyMeasurable (𝒢.le _) (hfadp _) <| hfmgle.integrable _)
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝¹ : Preorder E
inst✝ : SigmaFiniteFiltration μ 𝒢
f : ℕ → Ω → E
hfmgle : Supermartingale f 𝒢 μ
hfadp : Adapted 𝒢 fun n => f (n + 1)
n : ℕ
⊢ f n ≤ᵐ[μ] f 0
[PROOFSTEP]
induction' n with k ih
[GOAL]
case zero
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝¹ : Preorder E
inst✝ : SigmaFiniteFiltration μ 𝒢
f : ℕ → Ω → E
hfmgle : Supermartingale f 𝒢 μ
hfadp : Adapted 𝒢 fun n => f (n + 1)
⊢ f Nat.zero ≤ᵐ[μ] f 0
[PROOFSTEP]
rfl
[GOAL]
case succ
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁵ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝¹ : Preorder E
inst✝ : SigmaFiniteFiltration μ 𝒢
f : ℕ → Ω → E
hfmgle : Supermartingale f 𝒢 μ
hfadp : Adapted 𝒢 fun n => f (n + 1)
k : ℕ
ih : f k ≤ᵐ[μ] f 0
⊢ f (Nat.succ k) ≤ᵐ[μ] f 0
[PROOFSTEP]
exact
  ((Germ.coe_eq.mp <|
            congr_arg Germ.ofFun <|
              condexp_of_stronglyMeasurable (𝒢.le _) (hfadp _) <| hfmgle.integrable _).symm.trans_le
        (hfmgle.2.1 k (k + 1) k.le_succ)).trans
    ih
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : SigmaFiniteFiltration μ 𝒢
f : ℕ → Ω → E
hfmgle : Martingale f 𝒢 μ
hfadp : Adapted 𝒢 fun n => f (n + 1)
n : ℕ
⊢ f n =ᵐ[μ] f 0
[PROOFSTEP]
induction' n with k ih
[GOAL]
case zero
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : SigmaFiniteFiltration μ 𝒢
f : ℕ → Ω → E
hfmgle : Martingale f 𝒢 μ
hfadp : Adapted 𝒢 fun n => f (n + 1)
⊢ f Nat.zero =ᵐ[μ] f 0
[PROOFSTEP]
rfl
[GOAL]
case succ
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : SigmaFiniteFiltration μ 𝒢
f : ℕ → Ω → E
hfmgle : Martingale f 𝒢 μ
hfadp : Adapted 𝒢 fun n => f (n + 1)
k : ℕ
ih : f k =ᵐ[μ] f 0
⊢ f (Nat.succ k) =ᵐ[μ] f 0
[PROOFSTEP]
exact
  ((Germ.coe_eq.mp
            (congr_arg Germ.ofFun <| condexp_of_stronglyMeasurable (𝒢.le _) (hfadp _) (hfmgle.integrable _))).symm.trans
        (hfmgle.2 k (k + 1) k.le_succ)).trans
    ih
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
R : ℝ
ξ f : ℕ → Ω → ℝ
hf : Submartingale f 𝒢 μ
hξ : Adapted 𝒢 ξ
hbdd : ∀ (n : ℕ) (ω : Ω), ξ n ω ≤ R
hnonneg : ∀ (n : ℕ) (ω : Ω), 0 ≤ ξ n ω
⊢ Submartingale (fun n => ∑ k in Finset.range n, ξ k * (f (k + 1) - f k)) 𝒢 μ
[PROOFSTEP]
have hξbdd : ∀ i, ∃ C, ∀ ω, |ξ i ω| ≤ C := fun i => ⟨R, fun ω => (abs_of_nonneg (hnonneg i ω)).trans_le (hbdd i ω)⟩
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
R : ℝ
ξ f : ℕ → Ω → ℝ
hf : Submartingale f 𝒢 μ
hξ : Adapted 𝒢 ξ
hbdd : ∀ (n : ℕ) (ω : Ω), ξ n ω ≤ R
hnonneg : ∀ (n : ℕ) (ω : Ω), 0 ≤ ξ n ω
hξbdd : ∀ (i : ℕ), ∃ C, ∀ (ω : Ω), |ξ i ω| ≤ C
⊢ Submartingale (fun n => ∑ k in Finset.range n, ξ k * (f (k + 1) - f k)) 𝒢 μ
[PROOFSTEP]
have hint : ∀ m, Integrable (∑ k in Finset.range m, ξ k * (f (k + 1) - f k)) μ := fun m =>
  integrable_finset_sum' _ fun i _ =>
    Integrable.bdd_mul ((hf.integrable _).sub (hf.integrable _)) hξ.stronglyMeasurable.aestronglyMeasurable (hξbdd _)
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
R : ℝ
ξ f : ℕ → Ω → ℝ
hf : Submartingale f 𝒢 μ
hξ : Adapted 𝒢 ξ
hbdd : ∀ (n : ℕ) (ω : Ω), ξ n ω ≤ R
hnonneg : ∀ (n : ℕ) (ω : Ω), 0 ≤ ξ n ω
hξbdd : ∀ (i : ℕ), ∃ C, ∀ (ω : Ω), |ξ i ω| ≤ C
hint : ∀ (m : ℕ), Integrable (∑ k in Finset.range m, ξ k * (f (k + 1) - f k))
⊢ Submartingale (fun n => ∑ k in Finset.range n, ξ k * (f (k + 1) - f k)) 𝒢 μ
[PROOFSTEP]
have hadp : Adapted 𝒢 fun n => ∑ k in Finset.range n, ξ k * (f (k + 1) - f k) :=
  by
  intro m
  refine' Finset.stronglyMeasurable_sum' _ fun i hi => _
  rw [Finset.mem_range] at hi
  exact
    (hξ.stronglyMeasurable_le hi.le).mul
      ((hf.adapted.stronglyMeasurable_le (Nat.succ_le_of_lt hi)).sub (hf.adapted.stronglyMeasurable_le hi.le))
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
R : ℝ
ξ f : ℕ → Ω → ℝ
hf : Submartingale f 𝒢 μ
hξ : Adapted 𝒢 ξ
hbdd : ∀ (n : ℕ) (ω : Ω), ξ n ω ≤ R
hnonneg : ∀ (n : ℕ) (ω : Ω), 0 ≤ ξ n ω
hξbdd : ∀ (i : ℕ), ∃ C, ∀ (ω : Ω), |ξ i ω| ≤ C
hint : ∀ (m : ℕ), Integrable (∑ k in Finset.range m, ξ k * (f (k + 1) - f k))
⊢ Adapted 𝒢 fun n => ∑ k in Finset.range n, ξ k * (f (k + 1) - f k)
[PROOFSTEP]
intro m
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
R : ℝ
ξ f : ℕ → Ω → ℝ
hf : Submartingale f 𝒢 μ
hξ : Adapted 𝒢 ξ
hbdd : ∀ (n : ℕ) (ω : Ω), ξ n ω ≤ R
hnonneg : ∀ (n : ℕ) (ω : Ω), 0 ≤ ξ n ω
hξbdd : ∀ (i : ℕ), ∃ C, ∀ (ω : Ω), |ξ i ω| ≤ C
hint : ∀ (m : ℕ), Integrable (∑ k in Finset.range m, ξ k * (f (k + 1) - f k))
m : ℕ
⊢ StronglyMeasurable ((fun n => ∑ k in Finset.range n, ξ k * (f (k + 1) - f k)) m)
[PROOFSTEP]
refine' Finset.stronglyMeasurable_sum' _ fun i hi => _
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
R : ℝ
ξ f : ℕ → Ω → ℝ
hf : Submartingale f 𝒢 μ
hξ : Adapted 𝒢 ξ
hbdd : ∀ (n : ℕ) (ω : Ω), ξ n ω ≤ R
hnonneg : ∀ (n : ℕ) (ω : Ω), 0 ≤ ξ n ω
hξbdd : ∀ (i : ℕ), ∃ C, ∀ (ω : Ω), |ξ i ω| ≤ C
hint : ∀ (m : ℕ), Integrable (∑ k in Finset.range m, ξ k * (f (k + 1) - f k))
m i : ℕ
hi : i ∈ Finset.range m
⊢ StronglyMeasurable (ξ i * (f (i + 1) - f i))
[PROOFSTEP]
rw [Finset.mem_range] at hi
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
R : ℝ
ξ f : ℕ → Ω → ℝ
hf : Submartingale f 𝒢 μ
hξ : Adapted 𝒢 ξ
hbdd : ∀ (n : ℕ) (ω : Ω), ξ n ω ≤ R
hnonneg : ∀ (n : ℕ) (ω : Ω), 0 ≤ ξ n ω
hξbdd : ∀ (i : ℕ), ∃ C, ∀ (ω : Ω), |ξ i ω| ≤ C
hint : ∀ (m : ℕ), Integrable (∑ k in Finset.range m, ξ k * (f (k + 1) - f k))
m i : ℕ
hi : i < m
⊢ StronglyMeasurable (ξ i * (f (i + 1) - f i))
[PROOFSTEP]
exact
  (hξ.stronglyMeasurable_le hi.le).mul
    ((hf.adapted.stronglyMeasurable_le (Nat.succ_le_of_lt hi)).sub (hf.adapted.stronglyMeasurable_le hi.le))
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
R : ℝ
ξ f : ℕ → Ω → ℝ
hf : Submartingale f 𝒢 μ
hξ : Adapted 𝒢 ξ
hbdd : ∀ (n : ℕ) (ω : Ω), ξ n ω ≤ R
hnonneg : ∀ (n : ℕ) (ω : Ω), 0 ≤ ξ n ω
hξbdd : ∀ (i : ℕ), ∃ C, ∀ (ω : Ω), |ξ i ω| ≤ C
hint : ∀ (m : ℕ), Integrable (∑ k in Finset.range m, ξ k * (f (k + 1) - f k))
hadp : Adapted 𝒢 fun n => ∑ k in Finset.range n, ξ k * (f (k + 1) - f k)
⊢ Submartingale (fun n => ∑ k in Finset.range n, ξ k * (f (k + 1) - f k)) 𝒢 μ
[PROOFSTEP]
refine' submartingale_of_condexp_sub_nonneg_nat hadp hint fun i => _
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
R : ℝ
ξ f : ℕ → Ω → ℝ
hf : Submartingale f 𝒢 μ
hξ : Adapted 𝒢 ξ
hbdd : ∀ (n : ℕ) (ω : Ω), ξ n ω ≤ R
hnonneg : ∀ (n : ℕ) (ω : Ω), 0 ≤ ξ n ω
hξbdd : ∀ (i : ℕ), ∃ C, ∀ (ω : Ω), |ξ i ω| ≤ C
hint : ∀ (m : ℕ), Integrable (∑ k in Finset.range m, ξ k * (f (k + 1) - f k))
hadp : Adapted 𝒢 fun n => ∑ k in Finset.range n, ξ k * (f (k + 1) - f k)
i : ℕ
⊢ 0 ≤ᵐ[μ] μ[∑ k in Finset.range (i + 1), ξ k * (f (k + 1) - f k) - ∑ k in Finset.range i, ξ k * (f (k + 1) - f k)|↑𝒢 i]
[PROOFSTEP]
simp only [← Finset.sum_Ico_eq_sub _ (Nat.le_succ _), Finset.sum_apply, Pi.mul_apply, Pi.sub_apply,
  Nat.Ico_succ_singleton, Finset.sum_singleton]
[GOAL]
Ω : Type u_1
E : Type u_2
ι : Type u_3
inst✝⁴ : Preorder ι
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : CompleteSpace E
f✝ g : ι → Ω → E
ℱ : Filtration ι m0
𝒢 : Filtration ℕ m0
inst✝ : IsFiniteMeasure μ
R : ℝ
ξ f : ℕ → Ω → ℝ
hf : Submartingale f 𝒢 μ
hξ : Adapted 𝒢 ξ
hbdd : ∀ (n : ℕ) (ω : Ω), ξ n ω ≤ R
hnonneg : ∀ (n : ℕ) (ω : Ω), 0 ≤ ξ n ω
hξbdd : ∀ (i : ℕ), ∃ C, ∀ (ω : Ω), |ξ i ω| ≤ C
hint : ∀ (m : ℕ), Integrable (∑ k in Finset.range m, ξ k * (f (k + 1) - f k))
hadp : Adapted 𝒢 fun n => ∑ k in Finset.range n, ξ k * (f (k + 1) - f k)
i : ℕ
⊢ 0 ≤ᵐ[μ] μ[ξ i * (f (i + 1) - f i)|↑𝒢 i]
[PROOFSTEP]
exact
  EventuallyLE.trans
    (EventuallyLE.mul_nonneg (eventually_of_forall (hnonneg _)) (hf.condexp_sub_nonneg (Nat.le_succ _)))
    (condexp_stronglyMeasurable_mul (hξ _)
        (((hf.integrable _).sub (hf.integrable _)).bdd_mul hξ.stronglyMeasurable.aestronglyMeasurable (hξbdd _))
        ((hf.integrable _).sub (hf.integrable _))).symm.le