-- Module: Mathlib.Combinatorics.Tiling.Tile
Goal:
G : Type u_1
X : Type u_2
ιₚ : Type u_3
inst : Group G
inst_1 : MulAction G X
ps : Protoset G X ιₚ
i₁ : ιₚ
g₁ :
  G ⧸
    Subgroup.map (Subgroup.subtype (MulAction.stabilizer G (↑((↑ps : ιₚ → Prototile G X) i₁) : Set X)))
      ((↑ps : ιₚ → Prototile G X) i₁).symmetries
i₂ : ιₚ
g₂ :
  G ⧸
    Subgroup.map (Subgroup.subtype (MulAction.stabilizer G (↑((↑ps : ιₚ → Prototile G X) i₂) : Set X)))
      ((↑ps : ιₚ → Prototile G X) i₂).symmetries
h :
  { index := i₁, groupElts := g₁ : PlacedTile ps }.index = { index := i₂, groupElts := g₂ : PlacedTile ps }.index ∧
    Quotient.mk
          (QuotientGroup.leftRel
            (Subgroup.map
              (Subgroup.subtype
                (MulAction.stabilizer G
                  (↑((↑ps : ιₚ → Prototile G X) { index := i₁, groupElts := g₁ : PlacedTile ps }.index) : Set X)))
              ((↑ps : ιₚ → Prototile G X) { index := i₁, groupElts := g₁ : PlacedTile ps }.index).symmetries)) ⁻¹'
        {{ index := i₁, groupElts := g₁ : PlacedTile ps }.groupElts} =
      Quotient.mk
          (QuotientGroup.leftRel
            (Subgroup.map
              (Subgroup.subtype
                (MulAction.stabilizer G
                  (↑((↑ps : ιₚ → Prototile G X) { index := i₂, groupElts := g₂ : PlacedTile ps }.index) : Set X)))
              ((↑ps : ιₚ → Prototile G X) { index := i₂, groupElts := g₂ : PlacedTile ps }.index).symmetries)) ⁻¹'
        {{ index := i₂, groupElts := g₂ : PlacedTile ps }.groupElts}
hi : i₁ = i₂
hq :
  Quotient.mk
        (QuotientGroup.leftRel
          (Subgroup.map
            (Subgroup.subtype
              (MulAction.stabilizer G
                (↑((↑ps : ιₚ → Prototile G X) { index := i₁, groupElts := g₁ : PlacedTile ps }.index) : Set X)))
            ((↑ps : ιₚ → Prototile G X) { index := i₁, groupElts := g₁ : PlacedTile ps }.index).symmetries)) ⁻¹'
      {{ index := i₁, groupElts := g₁ : PlacedTile ps }.groupElts} =
    Quotient.mk
        (QuotientGroup.leftRel
          (Subgroup.map
            (Subgroup.subtype
              (MulAction.stabilizer G
                (↑((↑ps : ιₚ → Prototile G X) { index := i₂, groupElts := g₂ : PlacedTile ps }.index) : Set X)))
            ((↑ps : ιₚ → Prototile G X) { index := i₂, groupElts := g₂ : PlacedTile ps }.index).symmetries)) ⁻¹'
      {{ index := i₂, groupElts := g₂ : PlacedTile ps }.groupElts}
refine_2 :
  ∀
    (g₂ :
      G ⧸
        Subgroup.map (Subgroup.subtype (MulAction.stabilizer G (↑((↑ps : ιₚ → Prototile G X) i₁) : Set X)))
          ((↑ps : ιₚ → Prototile G X) i₁).symmetries),
    { index := i₁, groupElts := g₁ : PlacedTile ps }.index = { index := i₁, groupElts := g₂ : PlacedTile ps }.index ∧
        Quotient.mk
              (QuotientGroup.leftRel
                (Subgroup.map
                  (Subgroup.subtype
                    (MulAction.stabilizer G
                      (↑((↑ps : ιₚ → Prototile G X) { index := i₁, groupElts := g₁ : PlacedTile ps }.index) : Set X)))
                  ((↑ps : ιₚ → Prototile G X) { index := i₁, groupElts := g₁ : PlacedTile ps }.index).symmetries)) ⁻¹'
            {{ index := i₁, groupElts := g₁ : PlacedTile ps }.groupElts} =
          Quotient.mk
              (QuotientGroup.leftRel
                (Subgroup.map
                  (Subgroup.subtype
                    (MulAction.stabilizer G
                      (↑((↑ps : ιₚ → Prototile G X) { index := i₁, groupElts := g₂ : PlacedTile ps }.index) : Set X)))
                  ((↑ps : ιₚ → Prototile G X) { index := i₁, groupElts := g₂ : PlacedTile ps }.index).symmetries)) ⁻¹'
            {{ index := i₁, groupElts := g₂ : PlacedTile ps }.groupElts} →
      ∀
        (hq :
          Quotient.mk
                (QuotientGroup.leftRel
                  (Subgroup.map
                    (Subgroup.subtype
                      (MulAction.stabilizer G
                        (↑((↑ps : ιₚ → Prototile G X) { index := i₁, groupElts := g₁ : PlacedTile ps }.index) : Set X)))
                    ((↑ps : ιₚ → Prototile G X) { index := i₁, groupElts := g₁ : PlacedTile ps }.index).symmetries)) ⁻¹'
              {{ index := i₁, groupElts := g₁ : PlacedTile ps }.groupElts} =
            Quotient.mk
                (QuotientGroup.leftRel
                  (Subgroup.map
                    (Subgroup.subtype
                      (MulAction.stabilizer G
                        (↑((↑ps : ιₚ → Prototile G X) { index := i₁, groupElts := g₂ : PlacedTile ps }.index) : Set X)))
                    ((↑ps : ιₚ → Prototile G X) { index := i₁, groupElts := g₂ : PlacedTile ps }.index).symmetries)) ⁻¹'
              {{ index := i₁, groupElts := g₂ : PlacedTile ps }.groupElts}),
        { index := i₁, groupElts := g₁ : PlacedTile ps } = { index := i₁, groupElts := g₂ }
⊢ { index := i₁, groupElts := g₁ : PlacedTile ps } = { index := i₂, groupElts := g₂ }

Tactic:
subst hi