awhecmu/canonical-drafter-extract-mathlib huggingface dataset:
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
⊢ i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)

Tactic:
simp only [i, Ψ, Equiv.apply_symm_apply, Fin.val_cast]

Premises used: Equiv.apply_symm_apply, Fin.val_cast
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
⊢ i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)

Tactic:
have i' : i = (E q) (Ψ x) := by simp only [i, Ψ, Equiv.apply_symm_apply, Fin.val_cast]
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
i' : i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)
j : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) : ℕ)
⊢ j < N p

Tactic:
have hjp : j < N p := ((E p) y).2
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
i' : i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)
j : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) : ℕ)
hjp : j < N p
rwa rwa₁ rwa₂ rwa₃ : ∀ (hjp : j < N q), j < N q
⊢ j < N q

Tactic:
rwa [Npq] at hjp
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
i' : i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)
j : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) : ℕ)
hjp : j < N p
⊢ j < N q

Tactic:
have hjq : j < N q := by rwa [Npq] at hjp
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
i' : i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)
j : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) : ℕ)
hjp : j < N p
hjq : j < N q
⊢ j = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ y)) : ℕ)

Tactic:
simp only [j, Ψ, Equiv.apply_symm_apply, Fin.val_cast]

Premises used: Equiv.apply_symm_apply, Fin.val_cast
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
i' : i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)
j : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) : ℕ)
hjp : j < N p
hjq : j < N q
⊢ j = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ y)) : ℕ)

Tactic:
have j' : j = ((E q) (Ψ y)).1 := by
        simp only [j, Ψ, Equiv.apply_symm_apply, Fin.val_cast]
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
i' : i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)
j : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) : ℕ)
hjp : j < N p
hjq : j < N q
j' : j = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ y)) : ℕ)
⊢ (F p).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x)
      ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) =
    ⌊ε⁻¹ * dist x y⌋

Tactic:
simp only [F, (E p).symm_apply_apply]

Premises used: Equiv.symm_apply_apply
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
i' : i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)
j : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) : ℕ)
hjp : j < N p
hjq : j < N q
j' : j = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ y)) : ℕ)
⊢ (F p).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x)
      ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) =
    ⌊ε⁻¹ * dist x y⌋

Tactic:
have : (F p).2 ((E p) x) ((E p) y) = ⌊ε⁻¹ * dist x y⌋ := by
        simp only [F, (E p).symm_apply_apply]
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
i' : i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)
j : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) : ℕ)
hjp : j < N p
hjq : j < N q
j' : j = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ y)) : ℕ)
this :
  (F p).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x)
      ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) =
    ⌊ε⁻¹ * dist x y⌋
rw rw₁ :
  (F p).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (⟨i, hip⟩ : Fin ((F p).fst (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ)))
      (⟨j, hjp⟩ : Fin ((F p).fst (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ))) =
    (F p).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x)
      ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y)
⊢ (F p).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (⟨i, hip⟩ : Fin ((F p).fst (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ)))
      (⟨j, hjp⟩ : Fin ((F p).fst (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ))) =
    ⌊ε⁻¹ * dist x y⌋

Tactic:
rw [← this]
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
i' : i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)
j : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) : ℕ)
hjp : j < N p
hjq : j < N q
j' : j = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ y)) : ℕ)
this :
  (F p).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x)
      ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) =
    ⌊ε⁻¹ * dist x y⌋
⊢ (F p).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (⟨i, hip⟩ : Fin ((F p).fst (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ)))
      (⟨j, hjp⟩ : Fin ((F p).fst (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ))) =
    ⌊ε⁻¹ * dist x y⌋

Tactic:
have Ap : (F p).2 ⟨i, hip⟩ ⟨j, hjp⟩ = ⌊ε⁻¹ * dist x y⌋ := by rw [← this]
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
i' : i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)
j : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) : ℕ)
hjp : j < N p
hjq : j < N q
j' : j = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ y)) : ℕ)
this :
  (F p).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x)
      ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) =
    ⌊ε⁻¹ * dist x y⌋
Ap :
  (F p).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (⟨i, hip⟩ : Fin ((F p).fst (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ)))
      (⟨j, hjp⟩ : Fin ((F p).fst (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ))) =
    ⌊ε⁻¹ * dist x y⌋
⊢ (F q).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ)
      ((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x))
      ((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ y)) =
    ⌊ε⁻¹ * dist (Ψ x) (Ψ y)⌋

Tactic:
simp only [F, (E q).symm_apply_apply]

Premises used: Equiv.symm_apply_apply
-- Module: Mathlib.Topology.MetricSpace.GromovHausdorff
Goal:
δ : ℝ
δpos : δ > 0
ε : ℝ := 2 / 5 * δ
εpos : 0 < ε
s : (p : GHSpace) → Set p.Rep
hs : ∀ (p : GHSpace), (s p).Finite ∧ Subset (α := Set p.Rep) univ (⋃ x ∈ s p, ball x ε)
N : (p : GHSpace) → ℕ := fun (p : GHSpace) ↦ Nat.card (↑(s p) : Type)
E : (p : GHSpace) → (↑(s p) : Type) ≃ Fin (Nat.card (↑(s p) : Type)) :=
  fun (p : GHSpace) ↦ Finite.equivFin (↑(s p) : Type)
F : GHSpace → (n : ℕ) × (Fin n → Fin n → ℤ) :=
  fun (p : GHSpace) ↦
    Sigma.mk (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (N p) fun (a b : Fin (N p)) ↦
      ⌊ε⁻¹ *
          dist (α := (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) a : (↑(s p) : Type))
            (((E p).symm : (a : Fin (Nat.card (↑(s p) : Type))) → (↑(s p) : Type)) b : (↑(s p) : Type))⌋
p q : GHSpace
hpq : F p = F q
Npq : N p = N q
Ψ : (↑(s p) : Type) → (↑(s q) : Type) :=
  fun (x : (↑(s p) : Type)) ↦
    ((E q).symm : (a : Fin (Nat.card (↑(s q) : Type))) → (↑(s q) : Type))
      (Fin.cast Npq ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x))
Φ : (↑(s p) : Type) → q.Rep := fun (x : (↑(s p) : Type)) ↦ (↑(Ψ x) : q.Rep)
x y : (↑(s p) : Type)
i : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x) : ℕ)
hip : i < N p
hiq : i < N q
i' : i = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x)) : ℕ)
j : ℕ := (↑((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) : ℕ)
hjp : j < N p
hjq : j < N q
j' : j = (↑((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ y)) : ℕ)
this :
  (F p).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) x)
      ((E p : (a : (↑(s p) : Type)) → Fin (Nat.card (↑(s p) : Type))) y) =
    ⌊ε⁻¹ * dist x y⌋
Ap :
  (F p).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ) (⟨i, hip⟩ : Fin ((F p).fst (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ)))
      (⟨j, hjp⟩ : Fin ((F p).fst (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ))) =
    ⌊ε⁻¹ * dist x y⌋
⊢ (F q).snd (β := fun (n : ℕ) ↦ Fin n → Fin n → ℤ)
      ((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ x))
      ((E q : (a : (↑(s q) : Type)) → Fin (Nat.card (↑(s q) : Type))) (Ψ y)) =
    ⌊ε⁻¹ * dist (Ψ x) (Ψ y)⌋

Tactic:
have : (F q).2 ((E q) (Ψ x)) ((E q) (Ψ y)) = ⌊ε⁻¹ * dist (Ψ x) (Ψ y)⌋ := by
        simp only [F, (E q).symm_apply_apply]