-- Mathlib/Topology/FiberBundle/Trivialization.lean
@[ext]
lemma ext' (e e' : Trivialization F proj) (h₁ : e.toPartialHomeomorph = e'.toPartialHomeomorph)
    (h₂ : e.baseSet = e'.baseSet) : e = e'

Proof state:
B : Type u_1
F : Type u_2
Z : Type u_4
inst✝² : TopologicalSpace B
inst✝¹ : TopologicalSpace F
proj : Z → B
inst✝ : TopologicalSpace Z
e e' : Trivialization F proj
h₁ : e.toPartialHomeomorph = e'.toPartialHomeomorph
h₂ : e.baseSet = e'.baseSet
⊢ e = e'

Tactic:
cases e

Result:
case mk
B : Type u_1
F : Type u_2
Z : Type u_4
inst✝² : TopologicalSpace B
inst✝¹ : TopologicalSpace F
proj : Z → B
inst✝ : TopologicalSpace Z
e' : Trivialization F proj
toPartialHomeomorph✝ : PartialHomeomorph Z (B × F)
baseSet✝ : Set B
open_baseSet✝ : IsOpen baseSet✝
source_eq✝ : toPartialHomeomorph✝.source = proj ⁻¹' baseSet✝
target_eq✝ : toPartialHomeomorph✝.target = baseSet✝ ×ˢ univ
proj_toFun✝ : ∀ p ∈ toPartialHomeomorph✝.source, (↑toPartialHomeomorph✝ p).1 = proj p
h₁ :
  { toPartialHomeomorph := toPartialHomeomorph✝, baseSet := baseSet✝, open_baseSet := open_baseSet✝,
        source_eq := source_eq✝, target_eq := target_eq✝, proj_toFun := proj_toFun✝ }.toPartialHomeomorph =
    e'.toPartialHomeomorph
h₂ :
  { toPartialHomeomorph := toPartialHomeomorph✝, baseSet := baseSet✝, open_baseSet := open_baseSet✝,
        source_eq := source_eq✝, target_eq := target_eq✝, proj_toFun := proj_toFun✝ }.baseSet =
    e'.baseSet
⊢ { toPartialHomeomorph := toPartialHomeomorph✝, baseSet := baseSet✝, open_baseSet := open_baseSet✝,
      source_eq := source_eq✝, target_eq := target_eq✝, proj_toFun := proj_toFun✝ } =
    e'

Proof state:
case mk.mk
B : Type u_1
F : Type u_2
Z : Type u_4
inst✝² : TopologicalSpace B
inst✝¹ : TopologicalSpace F
proj : Z → B
inst✝ : TopologicalSpace Z
toPartialHomeomorph✝¹ : PartialHomeomorph Z (B × F)
baseSet✝¹ : Set B
open_baseSet✝¹ : IsOpen baseSet✝¹
source_eq✝¹ : toPartialHomeomorph✝¹.source = proj ⁻¹' baseSet✝¹
target_eq✝¹ : toPartialHomeomorph✝¹.target = baseSet✝¹ ×ˢ univ
proj_toFun✝¹ : ∀ p ∈ toPartialHomeomorph✝¹.source, (↑toPartialHomeomorph✝¹ p).1 = proj p
toPartialHomeomorph✝ : PartialHomeomorph Z (B × F)
baseSet✝ : Set B
open_baseSet✝ : IsOpen baseSet✝
source_eq✝ : toPartialHomeomorph✝.source = proj ⁻¹' baseSet✝
target_eq✝ : toPartialHomeomorph✝.target = baseSet✝ ×ˢ univ
proj_toFun✝ : ∀ p ∈ toPartialHomeomorph✝.source, (↑toPartialHomeomorph✝ p).1 = proj p
h₁ :
  { toPartialHomeomorph := toPartialHomeomorph✝¹, baseSet := baseSet✝¹, open_baseSet := open_baseSet✝¹,
        source_eq := source_eq✝¹, target_eq := target_eq✝¹, proj_toFun := proj_toFun✝¹ }.toPartialHomeomorph =
    { toPartialHomeomorph := toPartialHomeomorph✝, baseSet := baseSet✝, open_baseSet := open_baseSet✝,
        source_eq := source_eq✝, target_eq := target_eq✝, proj_toFun := proj_toFun✝ }.toPartialHomeomorph
h₂ :
  { toPartialHomeomorph := toPartialHomeomorph✝¹, baseSet := baseSet✝¹, open_baseSet := open_baseSet✝¹,
        source_eq := source_eq✝¹, target_eq := target_eq✝¹, proj_toFun := proj_toFun✝¹ }.baseSet =
    { toPartialHomeomorph := toPartialHomeomorph✝, baseSet := baseSet✝, open_baseSet := open_baseSet✝,
        source_eq := source_eq✝, target_eq := target_eq✝, proj_toFun := proj_toFun✝ }.baseSet
⊢ { toPartialHomeomorph := toPartialHomeomorph✝¹, baseSet := baseSet✝¹, open_baseSet := open_baseSet✝¹,
      source_eq := source_eq✝¹, target_eq := target_eq✝¹, proj_toFun := proj_toFun✝¹ } =
    { toPartialHomeomorph := toPartialHomeomorph✝, baseSet := baseSet✝, open_baseSet := open_baseSet✝,
      source_eq := source_eq✝, target_eq := target_eq✝, proj_toFun := proj_toFun✝ }

Tactic:
congr

Result:
no goals

Proof state:
case mk
B : Type u_1
F : Type u_2
Z : Type u_4
inst✝² : TopologicalSpace B
inst✝¹ : TopologicalSpace F
proj : Z → B
inst✝ : TopologicalSpace Z
e' : Trivialization F proj
toPartialHomeomorph✝ : PartialHomeomorph Z (B × F)
baseSet✝ : Set B
open_baseSet✝ : IsOpen baseSet✝
source_eq✝ : toPartialHomeomorph✝.source = proj ⁻¹' baseSet✝
target_eq✝ : toPartialHomeomorph✝.target = baseSet✝ ×ˢ univ
proj_toFun✝ : ∀ p ∈ toPartialHomeomorph✝.source, (↑toPartialHomeomorph✝ p).1 = proj p
h₁ :
  { toPartialHomeomorph := toPartialHomeomorph✝, baseSet := baseSet✝, open_baseSet := open_baseSet✝,
        source_eq := source_eq✝, target_eq := target_eq✝, proj_toFun := proj_toFun✝ }.toPartialHomeomorph =
    e'.toPartialHomeomorph
h₂ :
  { toPartialHomeomorph := toPartialHomeomorph✝, baseSet := baseSet✝, open_baseSet := open_baseSet✝,
        source_eq := source_eq✝, target_eq := target_eq✝, proj_toFun := proj_toFun✝ }.baseSet =
    e'.baseSet
⊢ { toPartialHomeomorph := toPartialHomeomorph✝, baseSet := baseSet✝, open_baseSet := open_baseSet✝,
      source_eq := source_eq✝, target_eq := target_eq✝, proj_toFun := proj_toFun✝ } =
    e'

Tactic:
cases e'

Result:
case mk.mk
B : Type u_1
F : Type u_2
Z : Type u_4
inst✝² : TopologicalSpace B
inst✝¹ : TopologicalSpace F
proj : Z → B
inst✝ : TopologicalSpace Z
toPartialHomeomorph✝¹ : PartialHomeomorph Z (B × F)
baseSet✝¹ : Set B
open_baseSet✝¹ : IsOpen baseSet✝¹
source_eq✝¹ : toPartialHomeomorph✝¹.source = proj ⁻¹' baseSet✝¹
target_eq✝¹ : toPartialHomeomorph✝¹.target = baseSet✝¹ ×ˢ univ
proj_toFun✝¹ : ∀ p ∈ toPartialHomeomorph✝¹.source, (↑toPartialHomeomorph✝¹ p).1 = proj p
toPartialHomeomorph✝ : PartialHomeomorph Z (B × F)
baseSet✝ : Set B
open_baseSet✝ : IsOpen baseSet✝
source_eq✝ : toPartialHomeomorph✝.source = proj ⁻¹' baseSet✝
target_eq✝ : toPartialHomeomorph✝.target = baseSet✝ ×ˢ univ
proj_toFun✝ : ∀ p ∈ toPartialHomeomorph✝.source, (↑toPartialHomeomorph✝ p).1 = proj p
h₁ :
  { toPartialHomeomorph := toPartialHomeomorph✝¹, baseSet := baseSet✝¹, open_baseSet := open_baseSet✝¹,
        source_eq := source_eq✝¹, target_eq := target_eq✝¹, proj_toFun := proj_toFun✝¹ }.toPartialHomeomorph =
    { toPartialHomeomorph := toPartialHomeomorph✝, baseSet := baseSet✝, open_baseSet := open_baseSet✝,
        source_eq := source_eq✝, target_eq := target_eq✝, proj_toFun := proj_toFun✝ }.toPartialHomeomorph
h₂ :
  { toPartialHomeomorph := toPartialHomeomorph✝¹, baseSet := baseSet✝¹, open_baseSet := open_baseSet✝¹,
        source_eq := source_eq✝¹, target_eq := target_eq✝¹, proj_toFun := proj_toFun✝¹ }.baseSet =
    { toPartialHomeomorph := toPartialHomeomorph✝, baseSet := baseSet✝, open_baseSet := open_baseSet✝,
        source_eq := source_eq✝, target_eq := target_eq✝, proj_toFun := proj_toFun✝ }.baseSet
⊢ { toPartialHomeomorph := toPartialHomeomorph✝¹, baseSet := baseSet✝¹, open_baseSet := open_baseSet✝¹,
      source_eq := source_eq✝¹, target_eq := target_eq✝¹, proj_toFun := proj_toFun✝¹ } =
    { toPartialHomeomorph := toPartialHomeomorph✝, baseSet := baseSet✝, open_baseSet := open_baseSet✝,
      source_eq := source_eq✝, target_eq := target_eq✝, proj_toFun := proj_toFun✝ }