Theorem: DenseInducing.extend_Z_bilin_key
File: Mathlib/Topology/Algebra/UniformGroup.lean

tactic: let ee := fun u : β × β => (e u.1, e u.2)
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: let ff := fun u : δ × δ => (f u.1, f u.2)
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: have lim_φ : Filter.Tendsto (fun p : β × δ => φ p.1 p.2) (𝓝 (0, 0)) (𝓝 0) := by
  simpa using hφ.tendsto (0, 0)
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: have lim_φ_sub_sub :
  Tendsto (fun p : (β × β) × δ × δ => (fun p : β × δ => φ p.1 p.2) (p.1.2 - p.1.1, p.2.2 - p.2.1))
    ((comap ee <| 𝓝 (x₀, x₀)) ×ˢ (comap ff <| 𝓝 (y₀, y₀))) (𝓝 0) := by
  have lim_sub_sub :
    Tendsto (fun p : (β × β) × δ × δ => (p.1.2 - p.1.1, p.2.2 - p.2.1))
      (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0 ×ˢ 𝓝 0) := by
    have := Filter.prod_mono (tendsto_sub_comap_self de x₀) (tendsto_sub_comap_self df y₀)
    rwa [prod_map_map_eq] at this
  rw [← nhds_prod_eq] at lim_sub_sub
  exact Tendsto.comp lim_φ lim_sub_sub
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: rcases exists_nhds_zero_quarter W'_nhd with ⟨W, W_nhd, W4⟩
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: have :
  ∃ U₁ ∈ comap e (𝓝 x₀), ∃ V₁ ∈ comap f (𝓝 y₀), ∀ (x) (_ : x ∈ U₁) (x') (_ : x' ∈ U₁),
    ∀ (y) (_ : y ∈ V₁) (y') (_ : y' ∈ V₁), (fun p : β × δ => φ p.1 p.2) (x' - x, y' - y) ∈ W := by
  rcases tendsto_prod_iff.1 lim_φ_sub_sub W W_nhd with ⟨U, U_in, V, V_in, H⟩
  rw [nhds_prod_eq, ← prod_comap_comap_eq, mem_prod_same_iff] at U_in V_in
  rcases U_in with ⟨U₁, U₁_in, HU₁⟩
  rcases V_in with ⟨V₁, V₁_in, HV₁⟩
  exists U₁, U₁_in, V₁, V₁_in
  intro x x_in x' x'_in y y_in y' y'_in
  exact H _ _ (HU₁ (mk_mem_prod x_in x'_in)) (HV₁ (mk_mem_prod y_in y'_in))
state_before: case intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: rcases this with ⟨U₁, U₁_nhd, V₁, V₁_nhd, H⟩
state_before: case intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
this :
  ∃ U₁,
    U₁ ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V₁,
        V₁ ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U₁ →
              ∀ (x' : β),
                x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: obtain ⟨x₁, x₁_in⟩ : U₁.Nonempty := (de.comap_nhds_neBot _).nonempty_of_mem U₁_nhd
state_before: case intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: obtain ⟨y₁, y₁_in⟩ : V₁.Nonempty := (df.comap_nhds_neBot _).nonempty_of_mem V₁_nhd
state_before: case intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: have cont_flip : Continuous fun p : δ × β => φ.flip p.1 p.2 := by
  show Continuous ((fun p : β × δ => φ p.1 p.2) ∘ Prod.swap)
  exact hφ.comp continuous_swap
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: rcases extend_Z_bilin_aux de hφ W_nhd x₀ y₁ with ⟨U₂, U₂_nhd, HU⟩
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: rcases extend_Z_bilin_aux df cont_flip W_nhd y₀ x₁ with ⟨V₂, V₂_nhd, HV⟩
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
U₂ : Set β
U₂_nhd : U₂ ∈ comap (↑e) (𝓝 x₀)
HU : ∀ (x : β), x ∈ U₂ → ∀ (x' : β), x' ∈ U₂ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: exists U₁ ∩ U₂, inter_mem U₁_nhd U₂_nhd, V₁ ∩ V₂, inter_mem V₁_nhd V₂_nhd
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
U₂ : Set β
U₂_nhd : U₂ ∈ comap (↑e) (𝓝 x₀)
HU : ∀ (x : β), x ∈ U₂ → ∀ (x' : β), x' ∈ U₂ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
V₂ : Set δ
V₂_nhd : V₂ ∈ comap (↑f) (𝓝 y₀)
HV : ∀ (x : δ), x ∈ V₂ → ∀ (x' : δ), x' ∈ V₂ → (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (x' - x, x₁) ∈ W
⊢ ∃ U,
    U ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V,
        V ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U →
              ∀ (x' : β),
                x' ∈ U →
                  ∀ (y : δ),
                    y ∈ V →
                      ∀ (y' : δ),
                        y' ∈ V → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: rintro x ⟨xU₁, xU₂⟩ x' ⟨x'U₁, x'U₂⟩ y ⟨yV₁, yV₂⟩ y' ⟨y'V₁, y'V₂⟩
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
U₂ : Set β
U₂_nhd : U₂ ∈ comap (↑e) (𝓝 x₀)
HU : ∀ (x : β), x ∈ U₂ → ∀ (x' : β), x' ∈ U₂ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
V₂ : Set δ
V₂_nhd : V₂ ∈ comap (↑f) (𝓝 y₀)
HV : ∀ (x : δ), x ∈ V₂ → ∀ (x' : δ), x' ∈ V₂ → (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (x' - x, x₁) ∈ W
⊢ ∀ (x : β),
    x ∈ U₁ ∩ U₂ →
      ∀ (x' : β),
        x' ∈ U₁ ∩ U₂ →
          ∀ (y : δ),
            y ∈ V₁ ∩ V₂ →
              ∀ (y' : δ),
                y' ∈ V₁ ∩ V₂ → (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: have key_formula :
  φ x' y' - φ x y = φ (x' - x) y₁ + φ (x' - x) (y' - y₁) + φ x₁ (y' - y) + φ (x - x₁) (y' - y) :=
  by simp; abel
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
U₂ : Set β
U₂_nhd : U₂ ∈ comap (↑e) (𝓝 x₀)
HU : ∀ (x : β), x ∈ U₂ → ∀ (x' : β), x' ∈ U₂ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
V₂ : Set δ
V₂_nhd : V₂ ∈ comap (↑f) (𝓝 y₀)
HV : ∀ (x : δ), x ∈ V₂ → ∀ (x' : δ), x' ∈ V₂ → (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (x' - x, x₁) ∈ W
x : β
xU₁ : x ∈ U₁
xU₂ : x ∈ U₂
x' : β
x'U₁ : x' ∈ U₁
x'U₂ : x' ∈ U₂
y : δ
yV₁ : y ∈ V₁
yV₂ : y ∈ V₂
y' : δ
y'V₁ : y' ∈ V₁
y'V₂ : y' ∈ V₂
⊢ (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: rw [key_formula]
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
U₂ : Set β
U₂_nhd : U₂ ∈ comap (↑e) (𝓝 x₀)
HU : ∀ (x : β), x ∈ U₂ → ∀ (x' : β), x' ∈ U₂ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
V₂ : Set δ
V₂_nhd : V₂ ∈ comap (↑f) (𝓝 y₀)
HV : ∀ (x : δ), x ∈ V₂ → ∀ (x' : δ), x' ∈ V₂ → (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (x' - x, x₁) ∈ W
x : β
xU₁ : x ∈ U₁
xU₂ : x ∈ U₂
x' : β
x'U₁ : x' ∈ U₁
x'U₂ : x' ∈ U₂
y : δ
yV₁ : y ∈ V₁
yV₂ : y ∈ V₂
y' : δ
y'V₁ : y' ∈ V₁
y'V₂ : y' ∈ V₂
key_formula :
  ↑(↑φ x') y' - ↑(↑φ x) y = ↑(↑φ (x' - x)) y₁ + ↑(↑φ (x' - x)) (y' - y₁) + ↑(↑φ x₁) (y' - y) + ↑(↑φ (x - x₁)) (y' - y)
⊢ (fun p => ↑(↑φ p.fst) p.snd) (x', y') - (fun p => ↑(↑φ p.fst) p.snd) (x, y) ∈ W'

tactic: have h₁ := HU x xU₂ x' x'U₂
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
U₂ : Set β
U₂_nhd : U₂ ∈ comap (↑e) (𝓝 x₀)
HU : ∀ (x : β), x ∈ U₂ → ∀ (x' : β), x' ∈ U₂ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
V₂ : Set δ
V₂_nhd : V₂ ∈ comap (↑f) (𝓝 y₀)
HV : ∀ (x : δ), x ∈ V₂ → ∀ (x' : δ), x' ∈ V₂ → (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (x' - x, x₁) ∈ W
x : β
xU₁ : x ∈ U₁
xU₂ : x ∈ U₂
x' : β
x'U₁ : x' ∈ U₁
x'U₂ : x' ∈ U₂
y : δ
yV₁ : y ∈ V₁
yV₂ : y ∈ V₂
y' : δ
y'V₁ : y' ∈ V₁
y'V₂ : y' ∈ V₂
key_formula :
  ↑(↑φ x') y' - ↑(↑φ x) y = ↑(↑φ (x' - x)) y₁ + ↑(↑φ (x' - x)) (y' - y₁) + ↑(↑φ x₁) (y' - y) + ↑(↑φ (x - x₁)) (y' - y)
⊢ ↑(↑φ (x' - x)) y₁ + ↑(↑φ (x' - x)) (y' - y₁) + ↑(↑φ x₁) (y' - y) + ↑(↑φ (x - x₁)) (y' - y) ∈ W'

tactic: have h₂ := H x xU₁ x' x'U₁ y₁ y₁_in y' y'V₁
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
U₂ : Set β
U₂_nhd : U₂ ∈ comap (↑e) (𝓝 x₀)
HU : ∀ (x : β), x ∈ U₂ → ∀ (x' : β), x' ∈ U₂ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
V₂ : Set δ
V₂_nhd : V₂ ∈ comap (↑f) (𝓝 y₀)
HV : ∀ (x : δ), x ∈ V₂ → ∀ (x' : δ), x' ∈ V₂ → (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (x' - x, x₁) ∈ W
x : β
xU₁ : x ∈ U₁
xU₂ : x ∈ U₂
x' : β
x'U₁ : x' ∈ U₁
x'U₂ : x' ∈ U₂
y : δ
yV₁ : y ∈ V₁
yV₂ : y ∈ V₂
y' : δ
y'V₁ : y' ∈ V₁
y'V₂ : y' ∈ V₂
key_formula :
  ↑(↑φ x') y' - ↑(↑φ x) y = ↑(↑φ (x' - x)) y₁ + ↑(↑φ (x' - x)) (y' - y₁) + ↑(↑φ x₁) (y' - y) + ↑(↑φ (x - x₁)) (y' - y)
h₁ : (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
⊢ ↑(↑φ (x' - x)) y₁ + ↑(↑φ (x' - x)) (y' - y₁) + ↑(↑φ x₁) (y' - y) + ↑(↑φ (x - x₁)) (y' - y) ∈ W'

tactic: have h₃ := HV y yV₂ y' y'V₂
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
U₂ : Set β
U₂_nhd : U₂ ∈ comap (↑e) (𝓝 x₀)
HU : ∀ (x : β), x ∈ U₂ → ∀ (x' : β), x' ∈ U₂ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
V₂ : Set δ
V₂_nhd : V₂ ∈ comap (↑f) (𝓝 y₀)
HV : ∀ (x : δ), x ∈ V₂ → ∀ (x' : δ), x' ∈ V₂ → (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (x' - x, x₁) ∈ W
x : β
xU₁ : x ∈ U₁
xU₂ : x ∈ U₂
x' : β
x'U₁ : x' ∈ U₁
x'U₂ : x' ∈ U₂
y : δ
yV₁ : y ∈ V₁
yV₂ : y ∈ V₂
y' : δ
y'V₁ : y' ∈ V₁
y'V₂ : y' ∈ V₂
key_formula :
  ↑(↑φ x') y' - ↑(↑φ x) y = ↑(↑φ (x' - x)) y₁ + ↑(↑φ (x' - x)) (y' - y₁) + ↑(↑φ x₁) (y' - y) + ↑(↑φ (x - x₁)) (y' - y)
h₁ : (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
h₂ : (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y₁) ∈ W
⊢ ↑(↑φ (x' - x)) y₁ + ↑(↑φ (x' - x)) (y' - y₁) + ↑(↑φ x₁) (y' - y) + ↑(↑φ (x - x₁)) (y' - y) ∈ W'

tactic: have h₄ := H x₁ x₁_in x xU₁ y yV₁ y' y'V₁
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
U₂ : Set β
U₂_nhd : U₂ ∈ comap (↑e) (𝓝 x₀)
HU : ∀ (x : β), x ∈ U₂ → ∀ (x' : β), x' ∈ U₂ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
V₂ : Set δ
V₂_nhd : V₂ ∈ comap (↑f) (𝓝 y₀)
HV : ∀ (x : δ), x ∈ V₂ → ∀ (x' : δ), x' ∈ V₂ → (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (x' - x, x₁) ∈ W
x : β
xU₁ : x ∈ U₁
xU₂ : x ∈ U₂
x' : β
x'U₁ : x' ∈ U₁
x'U₂ : x' ∈ U₂
y : δ
yV₁ : y ∈ V₁
yV₂ : y ∈ V₂
y' : δ
y'V₁ : y' ∈ V₁
y'V₂ : y' ∈ V₂
key_formula :
  ↑(↑φ x') y' - ↑(↑φ x) y = ↑(↑φ (x' - x)) y₁ + ↑(↑φ (x' - x)) (y' - y₁) + ↑(↑φ x₁) (y' - y) + ↑(↑φ (x - x₁)) (y' - y)
h₁ : (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
h₂ : (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y₁) ∈ W
h₃ : (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (y' - y, x₁) ∈ W
⊢ ↑(↑φ (x' - x)) y₁ + ↑(↑φ (x' - x)) (y' - y₁) + ↑(↑φ x₁) (y' - y) + ↑(↑φ (x - x₁)) (y' - y) ∈ W'

tactic: exact W4 h₁ h₂ h₃ h₄
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
U₂ : Set β
U₂_nhd : U₂ ∈ comap (↑e) (𝓝 x₀)
HU : ∀ (x : β), x ∈ U₂ → ∀ (x' : β), x' ∈ U₂ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
V₂ : Set δ
V₂_nhd : V₂ ∈ comap (↑f) (𝓝 y₀)
HV : ∀ (x : δ), x ∈ V₂ → ∀ (x' : δ), x' ∈ V₂ → (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (x' - x, x₁) ∈ W
x : β
xU₁ : x ∈ U₁
xU₂ : x ∈ U₂
x' : β
x'U₁ : x' ∈ U₁
x'U₂ : x' ∈ U₂
y : δ
yV₁ : y ∈ V₁
yV₂ : y ∈ V₂
y' : δ
y'V₁ : y' ∈ V₁
y'V₂ : y' ∈ V₂
key_formula :
  ↑(↑φ x') y' - ↑(↑φ x) y = ↑(↑φ (x' - x)) y₁ + ↑(↑φ (x' - x)) (y' - y₁) + ↑(↑φ x₁) (y' - y) + ↑(↑φ (x - x₁)) (y' - y)
h₁ : (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
h₂ : (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y₁) ∈ W
h₃ : (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (y' - y, x₁) ∈ W
h₄ : (fun p => ↑(↑φ p.fst) p.snd) (x - x₁, y' - y) ∈ W
⊢ ↑(↑φ (x' - x)) y₁ + ↑(↑φ (x' - x)) (y' - y₁) + ↑(↑φ x₁) (y' - y) + ↑(↑φ (x - x₁)) (y' - y) ∈ W'

tactic: simpa using hφ.tendsto (0, 0)
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
⊢ Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)

tactic: have lim_sub_sub :
  Tendsto (fun p : (β × β) × δ × δ => (p.1.2 - p.1.1, p.2.2 - p.2.1))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0 ×ˢ 𝓝 0) := by
  have := Filter.prod_mono (tendsto_sub_comap_self de x₀) (tendsto_sub_comap_self df y₀)
  rwa [prod_map_map_eq] at this
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
⊢ Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)

tactic: rw [← nhds_prod_eq] at lim_sub_sub
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_sub_sub :
  Tendsto (fun p => (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst)) (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀)))
    (𝓝 0 ×ˢ 𝓝 0)
⊢ Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)

tactic: exact Tendsto.comp lim_φ lim_sub_sub
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_sub_sub :
  Tendsto (fun p => (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst)) (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀)))
    (𝓝 (0, 0))
⊢ Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)

tactic: have := Filter.prod_mono (tendsto_sub_comap_self de x₀) (tendsto_sub_comap_self df y₀)
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
⊢ Tendsto (fun p => (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst)) (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀)))
    (𝓝 0 ×ˢ 𝓝 0)

tactic: rwa [prod_map_map_eq] at this
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
this :
  map (fun t => t.snd - t.fst) (comap (fun p => (↑e p.fst, ↑e p.snd)) (𝓝 (x₀, x₀))) ×ˢ
      map (fun t => t.snd - t.fst) (comap (fun p => (↑f p.fst, ↑f p.snd)) (𝓝 (y₀, y₀))) ≤
    𝓝 0 ×ˢ 𝓝 0
⊢ Tendsto (fun p => (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst)) (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀)))
    (𝓝 0 ×ˢ 𝓝 0)

tactic: rcases tendsto_prod_iff.1 lim_φ_sub_sub W W_nhd with ⟨U, U_in, V, V_in, H⟩
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
⊢ ∃ U₁,
    U₁ ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V₁,
        V₁ ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U₁ →
              ∀ (x' : β),
                x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W

tactic: rw [nhds_prod_eq, ← prod_comap_comap_eq, mem_prod_same_iff] at U_in V_in
state_before: case intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U : Set (β × β)
U_in : U ∈ comap ee (𝓝 (x₀, x₀))
V : Set (δ × δ)
V_in : V ∈ comap ff (𝓝 (y₀, y₀))
H :
  ∀ (x : β × β) (y : δ × δ),
    x ∈ U → y ∈ V → (fun p => ↑(↑φ p.fst) p.snd) ((x, y).fst.snd - (x, y).fst.fst, (x, y).snd.snd - (x, y).snd.fst) ∈ W
⊢ ∃ U₁,
    U₁ ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V₁,
        V₁ ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U₁ →
              ∀ (x' : β),
                x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W

tactic: rcases U_in with ⟨U₁, U₁_in, HU₁⟩
state_before: case intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U : Set (β × β)
U_in : ∃ t, t ∈ comap (↑e) (𝓝 x₀) ∧ t ×ˢ t ⊆ U
V : Set (δ × δ)
V_in : ∃ t, t ∈ comap (↑f) (𝓝 y₀) ∧ t ×ˢ t ⊆ V
H :
  ∀ (x : β × β) (y : δ × δ),
    x ∈ U → y ∈ V → (fun p => ↑(↑φ p.fst) p.snd) ((x, y).fst.snd - (x, y).fst.fst, (x, y).snd.snd - (x, y).snd.fst) ∈ W
⊢ ∃ U₁,
    U₁ ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V₁,
        V₁ ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U₁ →
              ∀ (x' : β),
                x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W

tactic: rcases V_in with ⟨V₁, V₁_in, HV₁⟩
state_before: case intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U : Set (β × β)
V : Set (δ × δ)
V_in : ∃ t, t ∈ comap (↑f) (𝓝 y₀) ∧ t ×ˢ t ⊆ V
H :
  ∀ (x : β × β) (y : δ × δ),
    x ∈ U → y ∈ V → (fun p => ↑(↑φ p.fst) p.snd) ((x, y).fst.snd - (x, y).fst.fst, (x, y).snd.snd - (x, y).snd.fst) ∈ W
U₁ : Set β
U₁_in : U₁ ∈ comap (↑e) (𝓝 x₀)
HU₁ : U₁ ×ˢ U₁ ⊆ U
⊢ ∃ U₁,
    U₁ ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V₁,
        V₁ ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U₁ →
              ∀ (x' : β),
                x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W

tactic: exists U₁, U₁_in, V₁, V₁_in
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U : Set (β × β)
V : Set (δ × δ)
H :
  ∀ (x : β × β) (y : δ × δ),
    x ∈ U → y ∈ V → (fun p => ↑(↑φ p.fst) p.snd) ((x, y).fst.snd - (x, y).fst.fst, (x, y).snd.snd - (x, y).snd.fst) ∈ W
U₁ : Set β
U₁_in : U₁ ∈ comap (↑e) (𝓝 x₀)
HU₁ : U₁ ×ˢ U₁ ⊆ U
V₁ : Set δ
V₁_in : V₁ ∈ comap (↑f) (𝓝 y₀)
HV₁ : V₁ ×ˢ V₁ ⊆ V
⊢ ∃ U₁,
    U₁ ∈ comap (↑e) (𝓝 x₀) ∧
      ∃ V₁,
        V₁ ∈ comap (↑f) (𝓝 y₀) ∧
          ∀ (x : β),
            x ∈ U₁ →
              ∀ (x' : β),
                x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W

tactic: intro x x_in x' x'_in y y_in y' y'_in
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U : Set (β × β)
V : Set (δ × δ)
H :
  ∀ (x : β × β) (y : δ × δ),
    x ∈ U → y ∈ V → (fun p => ↑(↑φ p.fst) p.snd) ((x, y).fst.snd - (x, y).fst.fst, (x, y).snd.snd - (x, y).snd.fst) ∈ W
U₁ : Set β
U₁_in : U₁ ∈ comap (↑e) (𝓝 x₀)
HU₁ : U₁ ×ˢ U₁ ⊆ U
V₁ : Set δ
V₁_in : V₁ ∈ comap (↑f) (𝓝 y₀)
HV₁ : V₁ ×ˢ V₁ ⊆ V
⊢ ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W

tactic: exact H _ _ (HU₁ (mk_mem_prod x_in x'_in)) (HV₁ (mk_mem_prod y_in y'_in))
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U : Set (β × β)
V : Set (δ × δ)
H :
  ∀ (x : β × β) (y : δ × δ),
    x ∈ U → y ∈ V → (fun p => ↑(↑φ p.fst) p.snd) ((x, y).fst.snd - (x, y).fst.fst, (x, y).snd.snd - (x, y).snd.fst) ∈ W
U₁ : Set β
U₁_in : U₁ ∈ comap (↑e) (𝓝 x₀)
HU₁ : U₁ ×ˢ U₁ ⊆ U
V₁ : Set δ
V₁_in : V₁ ∈ comap (↑f) (𝓝 y₀)
HV₁ : V₁ ×ˢ V₁ ⊆ V
x : β
x_in : x ∈ U₁
x' : β
x'_in : x' ∈ U₁
y : δ
y_in : y ∈ V₁
y' : δ
y'_in : y' ∈ V₁
⊢ (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W

tactic: show Continuous ((fun p : β × δ => φ p.1 p.2) ∘ Prod.swap)
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
⊢ Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd

tactic: exact hφ.comp continuous_swap
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
⊢ Continuous ((fun p => ↑(↑φ p.fst) p.snd) ∘ Prod.swap)

tactic: simp
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
U₂ : Set β
U₂_nhd : U₂ ∈ comap (↑e) (𝓝 x₀)
HU : ∀ (x : β), x ∈ U₂ → ∀ (x' : β), x' ∈ U₂ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
V₂ : Set δ
V₂_nhd : V₂ ∈ comap (↑f) (𝓝 y₀)
HV : ∀ (x : δ), x ∈ V₂ → ∀ (x' : δ), x' ∈ V₂ → (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (x' - x, x₁) ∈ W
x : β
xU₁ : x ∈ U₁
xU₂ : x ∈ U₂
x' : β
x'U₁ : x' ∈ U₁
x'U₂ : x' ∈ U₂
y : δ
yV₁ : y ∈ V₁
yV₂ : y ∈ V₂
y' : δ
y'V₁ : y' ∈ V₁
y'V₂ : y' ∈ V₂
⊢ ↑(↑φ x') y' - ↑(↑φ x) y = ↑(↑φ (x' - x)) y₁ + ↑(↑φ (x' - x)) (y' - y₁) + ↑(↑φ x₁) (y' - y) + ↑(↑φ (x - x₁)) (y' - y)

tactic: abel
state_before: α : Type u_2
β : Type u_1
γ : Type u_4
δ : Type u_3
G : Type u_5
inst✝¹⁶ : TopologicalSpace α
inst✝¹⁵ : AddCommGroup α
inst✝¹⁴ : TopologicalAddGroup α
inst✝¹³ : TopologicalSpace β
inst✝¹² : AddCommGroup β
inst✝¹¹ : TopologicalAddGroup β
inst✝¹⁰ : TopologicalSpace γ
inst✝⁹ : AddCommGroup γ
inst✝⁸ : TopologicalAddGroup γ
inst✝⁷ : TopologicalSpace δ
inst✝⁶ : AddCommGroup δ
inst✝⁵ : TopologicalAddGroup δ
inst✝⁴ : UniformSpace G
inst✝³ : AddCommGroup G
inst✝² : UniformAddGroup G
inst✝¹ : SeparatedSpace G
inst✝ : CompleteSpace G
e : β →+ α
de : DenseInducing ↑e
f : δ →+ γ
df : DenseInducing ↑f
φ : β →+ δ →+ G
hφ : Continuous fun p => ↑(↑φ p.fst) p.snd
W' : Set G
W'_nhd : W' ∈ 𝓝 0
x₀ : α
y₀ : γ
ee : (u : β × β) → (fun x => α) u.fst × (fun x => α) u.snd := fun u => (↑e u.fst, ↑e u.snd)
ff : (u : δ × δ) → (fun x => γ) u.fst × (fun x => γ) u.snd := fun u => (↑f u.fst, ↑f u.snd)
lim_φ : Tendsto (fun p => ↑(↑φ p.fst) p.snd) (𝓝 (0, 0)) (𝓝 0)
lim_φ_sub_sub :
  Tendsto (fun p => (fun p => ↑(↑φ p.fst) p.snd) (p.fst.snd - p.fst.fst, p.snd.snd - p.snd.fst))
    (comap ee (𝓝 (x₀, x₀)) ×ˢ comap ff (𝓝 (y₀, y₀))) (𝓝 0)
W : Set G
W_nhd : W ∈ 𝓝 0
W4 : ∀ {v w s t : G}, v ∈ W → w ∈ W → s ∈ W → t ∈ W → v + w + s + t ∈ W'
U₁ : Set β
U₁_nhd : U₁ ∈ comap (↑e) (𝓝 x₀)
V₁ : Set δ
V₁_nhd : V₁ ∈ comap (↑f) (𝓝 y₀)
H :
  ∀ (x : β),
    x ∈ U₁ →
      ∀ (x' : β), x' ∈ U₁ → ∀ (y : δ), y ∈ V₁ → ∀ (y' : δ), y' ∈ V₁ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y' - y) ∈ W
x₁ : β
x₁_in : x₁ ∈ U₁
y₁ : δ
y₁_in : y₁ ∈ V₁
cont_flip : Continuous fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd
U₂ : Set β
U₂_nhd : U₂ ∈ comap (↑e) (𝓝 x₀)
HU : ∀ (x : β), x ∈ U₂ → ∀ (x' : β), x' ∈ U₂ → (fun p => ↑(↑φ p.fst) p.snd) (x' - x, y₁) ∈ W
V₂ : Set δ
V₂_nhd : V₂ ∈ comap (↑f) (𝓝 y₀)
HV : ∀ (x : δ), x ∈ V₂ → ∀ (x' : δ), x' ∈ V₂ → (fun p => ↑(↑(AddMonoidHom.flip φ) p.fst) p.snd) (x' - x, x₁) ∈ W
x : β
xU₁ : x ∈ U₁
xU₂ : x ∈ U₂
x' : β
x'U₁ : x' ∈ U₁
x'U₂ : x' ∈ U₂
y : δ
yV₁ : y ∈ V₁
yV₂ : y ∈ V₂
y' : δ
y'V₁ : y' ∈ V₁
y'V₂ : y' ∈ V₂
⊢ ↑(↑φ x') y' - ↑(↑φ x) y =
    ↑(↑φ x') y' - ↑(↑φ x) y' + (↑(↑φ x₁) y' - ↑(↑φ x₁) y) + (↑(↑φ x) y' - ↑(↑φ x₁) y' - (↑(↑φ x) y - ↑(↑φ x₁) y))