ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: SimpleGraph.Subgraph.IsMatching.coeSubgraph
File: Mathlib/Combinatorics/SimpleGraph/Matching.lean

Proof steps:
state_before: V : Type u_1
G G'✝ : SimpleGraph V
M✝ M' : G.Subgraph
v w : V
G' : G.Subgraph
M : G'.coe.Subgraph
hM : M.IsMatching
⊢ (Subgraph.coeSubgraph M).IsMatching
state_after: V : Type u_1
G G'✝ : SimpleGraph V
M✝ M' : G.Subgraph
v w : V
G' : G.Subgraph
M : G'.coe.Subgraph
hM : M.IsMatching
v✝ : V
hv : v✝ ∈ (Subgraph.coeSubgraph M).verts
⊢ ∃! w, (Subgraph.coeSubgraph M).Adj v✝ w
tactic: intro _ hv
state_before: V : Type u_1
G G'✝ : SimpleGraph V
M✝ M' : G.Subgraph
v w : V
G' : G.Subgraph
M : G'.coe.Subgraph
hM : M.IsMatching
v✝ : V
hv : v✝ ∈ (Subgraph.coeSubgraph M).verts
⊢ ∃! w, (Subgraph.coeSubgraph M).Adj v✝ w
state_after: case intro
V : Type u_1
G G'✝ : SimpleGraph V
M✝ M' : G.Subgraph
v w✝ : V
G' : G.Subgraph
M : G'.coe.Subgraph
hM : M.IsMatching
v✝ : V
hv : v✝ ∈ (Subgraph.coeSubgraph M).verts
w : ↑G'.verts
hw : (fun w => M.Adj ⟨v✝, ⋯⟩ w) w ∧ ∀ (y : ↑G'.verts), (fun w => M.Adj ⟨v✝, ⋯⟩ w) y → y = w
⊢ ∃! w, (Subgraph.coeSubgraph M).Adj v✝ w
tactic: obtain ⟨w, hw⟩ := hM <| Set.mem_of_mem_image_val <| M.verts_coeSubgraph.symm ▸ hv
state_before: case intro
V : Type u_1
G G'✝ : SimpleGraph V
M✝ M' : G.Subgraph
v w✝ : V
G' : G.Subgraph
M : G'.coe.Subgraph
hM : M.IsMatching
v✝ : V
hv : v✝ ∈ (Subgraph.coeSubgraph M).verts
w : ↑G'.verts
hw : (fun w => M.Adj ⟨v✝, ⋯⟩ w) w ∧ ∀ (y : ↑G'.verts), (fun w => M.Adj ⟨v✝, ⋯⟩ w) y → y = w
⊢ ∃! w, (Subgraph.coeSubgraph M).Adj v✝ w
state_after: case h
V : Type u_1
G G'✝ : SimpleGraph V
M✝ M' : G.Subgraph
v w✝ : V
G' : G.Subgraph
M : G'.coe.Subgraph
hM : M.IsMatching
v✝ : V
hv : v✝ ∈ (Subgraph.coeSubgraph M).verts
w : ↑G'.verts
hw : (fun w => M.Adj ⟨v✝, ⋯⟩ w) w ∧ ∀ (y : ↑G'.verts), (fun w => M.Adj ⟨v✝, ⋯⟩ w) y → y = w
⊢ (fun w => (Subgraph.coeSubgraph M).Adj v✝ w) ↑w ∧ ∀ (y : V), (fun w => (Subgraph.coeSubgraph M).Adj v✝ w) y → y = ↑w
tactic: use w
state_before: case h
V : Type u_1
G G'✝ : SimpleGraph V
M✝ M' : G.Subgraph
v w✝ : V
G' : G.Subgraph
M : G'.coe.Subgraph
hM : M.IsMatching
v✝ : V
hv : v✝ ∈ (Subgraph.coeSubgraph M).verts
w : ↑G'.verts
hw : (fun w => M.Adj ⟨v✝, ⋯⟩ w) w ∧ ∀ (y : ↑G'.verts), (fun w => M.Adj ⟨v✝, ⋯⟩ w) y → y = w
⊢ (fun w => (Subgraph.coeSubgraph M).Adj v✝ w) ↑w ∧ ∀ (y : V), (fun w => (Subgraph.coeSubgraph M).Adj v✝ w) y → y = ↑w
state_after: case h.refine_1
V : Type u_1
G G'✝ : SimpleGraph V
M✝ M' : G.Subgraph
v w✝ : V
G' : G.Subgraph
M : G'.coe.Subgraph
hM : M.IsMatching
v✝ : V
hv : v✝ ∈ (Subgraph.coeSubgraph M).verts
w : ↑G'.verts
hw : (fun w => M.Adj ⟨v✝, ⋯⟩ w) w ∧ ∀ (y : ↑G'.verts), (fun w => M.Adj ⟨v✝, ⋯⟩ w) y → y = w
⊢ (fun w => (Subgraph.coeSubgraph M).Adj v✝ w) ↑w

case h.refine_2
V : Type u_1
G G'✝ : SimpleGraph V
M✝ M' : G.Subgraph
v w✝ : V
G' : G.Subgraph
M : G'.coe.Subgraph
hM : M.IsMatching
v✝ : V
hv : v✝ ∈ (Subgraph.coeSubgraph M).verts
w : ↑G'.verts
hw : (fun w => M.Adj ⟨v✝, ⋯⟩ w) w ∧ ∀ (y : ↑G'.verts), (fun w => M.Adj ⟨v✝, ⋯⟩ w) y → y = w
y : V
hy : (fun w => (Subgraph.coeSubgraph M).Adj v✝ w) y
⊢ y = ↑w
tactic: refine ⟨?_, fun y hy => ?_⟩
Theorem: TopCat.Presheaf.toTypes_isSheaf
File: Mathlib/Topology/Sheaves/SheafOfFunctions.lean

Proof steps:
state_before: X : TopCat
T : ↑X → Type u
ι : Type u
U : ι → Opens ↑X
sf : (i : ι) → (forget (Type u)).obj ((X.presheafToTypes T).obj (Opposite.op (U i)))
hsf : (X.presheafToTypes T).IsCompatible U sf
⊢ ∃! s, (X.presheafToTypes T).IsGluing U sf s
state_after: X : TopCat
T : ↑X → Type u
ι : Type u
U : ι → Opens ↑X
sf : (i : ι) → (forget (Type u)).obj ((X.presheafToTypes T).obj (Opposite.op (U i)))
hsf : (X.presheafToTypes T).IsCompatible U sf
index : ↥(iSup U) → ι
index_spec : ∀ (x : ↥(iSup U)), ↑x ∈ U (index x)
⊢ ∃! s, (X.presheafToTypes T).IsGluing U sf s
tactic: choose index index_spec using fun x : ↑(iSup U) => Opens.mem_iSup.mp x.2
state_before: X : TopCat
T : ↑X → Type u
ι : Type u
U : ι → Opens ↑X
sf : (i : ι) → (forget (Type u)).obj ((X.presheafToTypes T).obj (Opposite.op (U i)))
hsf : (X.presheafToTypes T).IsCompatible U sf
index : ↥(iSup U) → ι
index_spec : ∀ (x : ↥(iSup U)), ↑x ∈ U (index x)
⊢ ∃! s, (X.presheafToTypes T).IsGluing U sf s
state_after: X : TopCat
T : ↑X → Type u
ι : Type u
U : ι → Opens ↑X
sf : (i : ι) → (forget (Type u)).obj ((X.presheafToTypes T).obj (Opposite.op (U i)))
hsf : (X.presheafToTypes T).IsCompatible U sf
index : ↥(iSup U) → ι
index_spec : ∀ (x : ↥(iSup U)), ↑x ∈ U (index x)
s : (x : ↥(iSup U)) → T ↑x := fun x => sf (index x) ⟨↑x, ⋯⟩
⊢ ∃! s, (X.presheafToTypes T).IsGluing U sf s
tactic: let s : ∀ x : ↑(iSup U), T x := fun x => sf (index x) ⟨x.1, index_spec x⟩
state_before: X : TopCat
T : ↑X → Type u
ι : Type u
U : ι → Opens ↑X
sf : (i : ι) → (forget (Type u)).obj ((X.presheafToTypes T).obj (Opposite.op (U i)))
hsf : (X.presheafToTypes T).IsCompatible U sf
index : ↥(iSup U) → ι
index_spec : ∀ (x : ↥(iSup U)), ↑x ∈ U (index x)
s : (x : ↥(iSup U)) → T ↑x := fun x => sf (index x) ⟨↑x, ⋯⟩
⊢ ∃! s, (X.presheafToTypes T).IsGluing U sf s
state_after: case refine_1
X : TopCat
T : ↑X → Type u
ι : Type u
U : ι → Opens ↑X
sf : (i : ι) → (forget (Type u)).obj ((X.presheafToTypes T).obj (Opposite.op (U i)))
hsf : (X.presheafToTypes T).IsCompatible U sf
index : ↥(iSup U) → ι
index_spec : ∀ (x : ↥(iSup U)), ↑x ∈ U (index x)
s : (x : ↥(iSup U)) → T ↑x := fun x => sf (index x) ⟨↑x, ⋯⟩
⊢ (fun s => (X.presheafToTypes T).IsGluing U sf s) s

case refine_2
X : TopCat
T : ↑X → Type u
ι : Type u
U : ι → Opens ↑X
sf : (i : ι) → (forget (Type u)).obj ((X.presheafToTypes T).obj (Opposite.op (U i)))
hsf : (X.presheafToTypes T).IsCompatible U sf
index : ↥(iSup U) → ι
index_spec : ∀ (x : ↥(iSup U)), ↑x ∈ U (index x)
s : (x : ↥(iSup U)) → T ↑x := fun x => sf (index x) ⟨↑x, ⋯⟩
⊢ ∀ (y : (forget (Type u)).obj ((X.presheafToTypes T).obj (Opposite.op (iSup U)))),
    (fun s => (X.presheafToTypes T).IsGluing U sf s) y → y = s
tactic: refine ⟨s, ?_, ?_⟩
Theorem: ConvexBody.zero_mem_of_symmetric
File: Mathlib/Analysis/Convex/Body.lean

Proof steps:
state_before: V : Type u_1
inst✝² : TopologicalSpace V
inst✝¹ : AddCommGroup V
inst✝ : Module ℝ V
K : ConvexBody V
h_symm : ∀ x ∈ K, -x ∈ K
⊢ 0 ∈ K
state_after: case intro
V : Type u_1
inst✝² : TopologicalSpace V
inst✝¹ : AddCommGroup V
inst✝ : Module ℝ V
K : ConvexBody V
h_symm : ∀ x ∈ K, -x ∈ K
x : V
hx : x ∈ ↑K
⊢ 0 ∈ K
tactic: obtain ⟨x, hx⟩ := K.nonempty
state_before: case intro
V : Type u_1
inst✝² : TopologicalSpace V
inst✝¹ : AddCommGroup V
inst✝ : Module ℝ V
K : ConvexBody V
h_symm : ∀ x ∈ K, -x ∈ K
x : V
hx : x ∈ ↑K
⊢ 0 ∈ K
state_after: case intro
V : Type u_1
inst✝² : TopologicalSpace V
inst✝¹ : AddCommGroup V
inst✝ : Module ℝ V
K : ConvexBody V
h_symm : ∀ x ∈ K, -x ∈ K
x : V
hx : x ∈ ↑K
⊢ (1 / 2) • x + (1 / 2) • -x ∈ K
tactic: rw [show 0 = (1/2 : ℝ) • x + (1/2 : ℝ) • (- x) by field_simp]
state_before: case intro
V : Type u_1
inst✝² : TopologicalSpace V
inst✝¹ : AddCommGroup V
inst✝ : Module ℝ V
K : ConvexBody V
h_symm : ∀ x ∈ K, -x ∈ K
x : V
hx : x ∈ ↑K
⊢ (1 / 2) • x + (1 / 2) • -x ∈ K
state_after: case intro.a
V : Type u_1
inst✝² : TopologicalSpace V
inst✝¹ : AddCommGroup V
inst✝ : Module ℝ V
K : ConvexBody V
h_symm : ∀ x ∈ K, -x ∈ K
x : V
hx : x ∈ ↑K
⊢ 0 < 1 / 2

case intro.a
V : Type u_1
inst✝² : TopologicalSpace V
inst✝¹ : AddCommGroup V
inst✝ : Module ℝ V
K : ConvexBody V
h_symm : ∀ x ∈ K, -x ∈ K
x : V
hx : x ∈ ↑K
⊢ 0 < 1 / 2

case intro.a
V : Type u_1
inst✝² : TopologicalSpace V
inst✝¹ : AddCommGroup V
inst✝ : Module ℝ V
K : ConvexBody V
h_symm : ∀ x ∈ K, -x ∈ K
x : V
hx : x ∈ ↑K
⊢ 1 / 2 + 1 / 2 = 1
tactic: apply convex_iff_forall_pos.mp K.convex hx (h_symm x hx)
state_before: case intro.a
V : Type u_1
inst✝² : TopologicalSpace V
inst✝¹ : AddCommGroup V
inst✝ : Module ℝ V
K : ConvexBody V
h_symm : ∀ x ∈ K, -x ∈ K
x : V
hx : x ∈ ↑K
⊢ 0 < 1 / 2

case intro.a
V : Type u_1
inst✝² : TopologicalSpace V
inst✝¹ : AddCommGroup V
inst✝ : Module ℝ V
K : ConvexBody V
h_symm : ∀ x ∈ K, -x ∈ K
x : V
hx : x ∈ ↑K
⊢ 0 < 1 / 2

case intro.a
V : Type u_1
inst✝² : TopologicalSpace V
inst✝¹ : AddCommGroup V
inst✝ : Module ℝ V
K : ConvexBody V
h_symm : ∀ x ∈ K, -x ∈ K
x : V
hx : x ∈ ↑K
⊢ 1 / 2 + 1 / 2 = 1
state_after: no goals
tactic: all_goals linarith
Theorem: Set.mem_compl_image
File: Mathlib/Data/Set/Image.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f : α → β
s t✝ : Set α
inst✝ : BooleanAlgebra α
t : α
S : Set α
⊢ t ∈ compl '' S ↔ tᶜ ∈ S
state_after: no goals
tactic: simp [← preimage_compl_eq_image_compl]
Theorem: Module.ext'
File: Mathlib/Algebra/Module/Defs.lean

Proof steps:
state_before: α : Type u_1
R✝ : Type u_2
k : Type u_3
S : Type u_4
M✝ : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
R : Type u_9
inst✝¹ : Semiring R
M : Type u_10
inst✝ : AddCommMonoid M
P Q : Module R M
w : ∀ (r : R) (m : M), r • m = r • m
⊢ P = Q
state_after: case smul.h.h
α : Type u_1
R✝ : Type u_2
k : Type u_3
S : Type u_4
M✝ : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
R : Type u_9
inst✝¹ : Semiring R
M : Type u_10
inst✝ : AddCommMonoid M
P Q : Module R M
w : ∀ (r : R) (m : M), r • m = r • m
x✝¹ : R
x✝ : M
⊢ SMul.smul x✝¹ x✝ = SMul.smul x✝¹ x✝
tactic: ext
state_before: case smul.h.h
α : Type u_1
R✝ : Type u_2
k : Type u_3
S : Type u_4
M✝ : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
R : Type u_9
inst✝¹ : Semiring R
M : Type u_10
inst✝ : AddCommMonoid M
P Q : Module R M
w : ∀ (r : R) (m : M), r • m = r • m
x✝¹ : R
x✝ : M
⊢ SMul.smul x✝¹ x✝ = SMul.smul x✝¹ x✝
state_after: no goals
tactic: exact w _ _
Theorem: BoxIntegral.IntegrationParams.hasBasis_toFilteriUnion_top
File: Mathlib/Analysis/BoxIntegral/Partition/Filter.lean

Proof steps:
state_before: ι : Type u_1
inst✝ : Fintype ι
I✝ J : Box ι
c c₁ c₂ : ℝ≥0
r r₁ r₂ : (ι → ℝ) → ↑(Set.Ioi 0)
π π₁ π₂ : TaggedPrepartition I✝
l✝ l₁ l₂ l : IntegrationParams
I : Box ι
⊢ (l.toFilteriUnion I ⊤).HasBasis (fun r => ∀ (c : ℝ≥0), l.RCond (r c)) fun r =>
    {π | ∃ c, l.MemBaseSet I c (r c) π ∧ π.IsPartition}
state_after: no goals
tactic: simpa only [TaggedPrepartition.isPartition_iff_iUnion_eq, Prepartition.iUnion_top] using
    l.hasBasis_toFilteriUnion I ⊤
Theorem: AddSubgroup.card_dvd_of_injective
File: Mathlib/GroupTheory/Coset.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Group α
s t : Subgroup α
H : Type u_2
inst✝ : Group H
f : α →* H
hf : Injective ⇑f
⊢ Nat.card α ∣ Nat.card H
state_after: no goals
tactic: classical calc
      Nat.card α = Nat.card (f.range : Subgroup H) := Nat.card_congr (Equiv.ofInjective f hf)
      _ ∣ Nat.card H := card_subgroup_dvd_card _
Theorem: List.reverse_prefix
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: α✝ : Type u_1
l₁ l₂ : List α✝
⊢ l₁.reverse <+: l₂.reverse ↔ l₁ <:+ l₂
state_after: α✝ : Type u_1
l₁ l₂ : List α✝
⊢ l₁.reverse.reverse <:+ l₂.reverse.reverse ↔ l₁ <:+ l₂
tactic: rw [← reverse_suffix]
state_before: α✝ : Type u_1
l₁ l₂ : List α✝
⊢ l₁.reverse.reverse <:+ l₂.reverse.reverse ↔ l₁ <:+ l₂
state_after: no goals
tactic: simp only [reverse_reverse]
Theorem: CategoryTheory.MonoidalFunctor.map_whiskerRight
File: Mathlib/CategoryTheory/Monoidal/Functor.lean

Proof steps:
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
inst✝ : MonoidalCategory D
F : MonoidalFunctor C D
X Y : C
f : X ⟶ Y
Z : C
⊢ F.map (f ▷ Z) = inv (F.μ X Z) ≫ F.map f ▷ F.obj Z ≫ F.μ Y Z
state_after: no goals
tactic: simp
Theorem: Ideal.isPrime_ideal_prod_top
File: Mathlib/RingTheory/Ideal/Prod.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
⊢ (I.prod ⊤).IsPrime
state_after: case ne_top'
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
⊢ I.prod ⊤ ≠ ⊤

case mem_or_mem'
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
⊢ ∀ {x y : R × S}, x * y ∈ I.prod ⊤ → x ∈ I.prod ⊤ ∨ y ∈ I.prod ⊤
tactic: constructor
state_before: case mem_or_mem'
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
⊢ ∀ {x y : R × S}, x * y ∈ I.prod ⊤ → x ∈ I.prod ⊤ ∨ y ∈ I.prod ⊤
state_after: case mem_or_mem'.mk.mk.intro
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
r₁ : R
s₁ : S
r₂ : R
s₂ : S
h₁ : ((r₁, s₁) * (r₂, s₂)).1 ∈ I
right✝ : ((r₁, s₁) * (r₂, s₂)).2 ∈ ⊤
⊢ (r₁, s₁) ∈ I.prod ⊤ ∨ (r₂, s₂) ∈ I.prod ⊤
tactic: rintro ⟨r₁, s₁⟩ ⟨r₂, s₂⟩ ⟨h₁, _⟩
state_before: case mem_or_mem'.mk.mk.intro
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h : I.IsPrime
r₁ : R
s₁ : S
r₂ : R
s₂ : S
h₁ : ((r₁, s₁) * (r₂, s₂)).1 ∈ I
right✝ : ((r₁, s₁) * (r₂, s₂)).2 ∈ ⊤
⊢ (r₁, s₁) ∈ I.prod ⊤ ∨ (r₂, s₂) ∈ I.prod ⊤
state_after: case mem_or_mem'.mk.mk.intro.inl
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h✝ : I.IsPrime
r₁ : R
s₁ : S
r₂ : R
s₂ : S
h₁ : ((r₁, s₁) * (r₂, s₂)).1 ∈ I
right✝ : ((r₁, s₁) * (r₂, s₂)).2 ∈ ⊤
h : (r₁, s₁).1 ∈ I
⊢ (r₁, s₁) ∈ I.prod ⊤ ∨ (r₂, s₂) ∈ I.prod ⊤

case mem_or_mem'.mk.mk.intro.inr
R : Type u
S : Type v
inst✝¹ : Semiring R
inst✝ : Semiring S
I✝ I' : Ideal R
J J' : Ideal S
I : Ideal R
h✝ : I.IsPrime
r₁ : R
s₁ : S
r₂ : R
s₂ : S
h₁ : ((r₁, s₁) * (r₂, s₂)).1 ∈ I
right✝ : ((r₁, s₁) * (r₂, s₂)).2 ∈ ⊤
h : (r₂, s₂).1 ∈ I
⊢ (r₁, s₁) ∈ I.prod ⊤ ∨ (r₂, s₂) ∈ I.prod ⊤
tactic: cases' h.mem_or_mem h₁ with h h
Theorem: Metric.continuousAt_iff'
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝¹ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
inst✝ : TopologicalSpace β
f : β → α
b : β
⊢ ContinuousAt f b ↔ ∀ ε > 0, ∀ᶠ (x : β) in 𝓝 b, dist (f x) (f b) < ε
state_after: no goals
tactic: rw [ContinuousAt, tendsto_nhds]
Theorem: PartialHomeomorph.mem_interior_extend_target
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
y : H
hy : y ∈ f.target
hy' : ↑I y ∈ interior (range ↑I)
⊢ ↑I y ∈ interior (f.extend I).target
state_after: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
y : H
hy : y ∈ f.target
hy' : ↑I y ∈ interior (range ↑I)
⊢ ↑I.symm (↑I y) ∈ f.target ∧ ↑I y ∈ interior (range ↑I)
tactic: rw [f.extend_target, interior_inter, (f.open_target.preimage I.continuous_symm).interior_eq,
    mem_inter_iff, mem_preimage]
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
y : H
hy : y ∈ f.target
hy' : ↑I y ∈ interior (range ↑I)
⊢ ↑I.symm (↑I y) ∈ f.target ∧ ↑I y ∈ interior (range ↑I)
state_after: no goals
tactic: exact ⟨mem_of_eq_of_mem (I.left_inv (y)) hy, hy'⟩
Theorem: Fin.removeNth_update
File: Mathlib/Data/Fin/Tuple/Basic.lean

Proof steps:
state_before: m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
p : Fin (n + 1)
x : α p
f : (j : Fin (n + 1)) → α j
⊢ p.removeNth (update f p x) = p.removeNth f
state_after: case h
m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
p : Fin (n + 1)
x : α p
f : (j : Fin (n + 1)) → α j
i : Fin n
⊢ p.removeNth (update f p x) i = p.removeNth f i
tactic: ext i
state_before: case h
m n : ℕ
α : Fin (n + 1) → Type u
β : Type v
p : Fin (n + 1)
x : α p
f : (j : Fin (n + 1)) → α j
i : Fin n
⊢ p.removeNth (update f p x) i = p.removeNth f i
state_after: no goals
tactic: simp [removeNth, succAbove_ne]
Theorem: Real.rpow_le_rpow_of_exponent_nonpos
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

Proof steps:
state_before: x✝ y✝ z : ℝ
n : ℕ
x y : ℝ
hy : 0 < y
hxy : y ≤ x
hz : z ≤ 0
⊢ x ^ z ≤ y ^ z
state_after: case inl
x✝ y✝ z : ℝ
n : ℕ
x y : ℝ
hy : 0 < y
hxy : y ≤ x
hz : z ≤ 0
hz_zero : z ≠ 0
⊢ x ^ z ≤ y ^ z

case inr
x✝ y✝ : ℝ
n : ℕ
x y : ℝ
hy : 0 < y
hxy : y ≤ x
hz : 0 ≤ 0
⊢ x ^ 0 ≤ y ^ 0
tactic: rcases ne_or_eq z 0 with hz_zero | rfl
state_before: case inl
x✝ y✝ z : ℝ
n : ℕ
x y : ℝ
hy : 0 < y
hxy : y ≤ x
hz : z ≤ 0
hz_zero : z ≠ 0
⊢ x ^ z ≤ y ^ z

case inr
x✝ y✝ : ℝ
n : ℕ
x y : ℝ
hy : 0 < y
hxy : y ≤ x
hz : 0 ≤ 0
⊢ x ^ 0 ≤ y ^ 0
state_after: case inr
x✝ y✝ : ℝ
n : ℕ
x y : ℝ
hy : 0 < y
hxy : y ≤ x
hz : 0 ≤ 0
⊢ x ^ 0 ≤ y ^ 0
tactic: case inl =>
    rcases ne_or_eq x y with hxy' | rfl
    case inl =>
      exact le_of_lt <| rpow_lt_rpow_of_exponent_neg hy (Ne.lt_of_le (id (Ne.symm hxy')) hxy)
        (Ne.lt_of_le hz_zero hz)
    case inr => simp
state_before: case inr
x✝ y✝ : ℝ
n : ℕ
x y : ℝ
hy : 0 < y
hxy : y ≤ x
hz : 0 ≤ 0
⊢ x ^ 0 ≤ y ^ 0
state_after: no goals
tactic: case inr => simp
Theorem: CategoryTheory.CosimplicialObject.Augmented.leftOpRightOpIso_hom_left
File: Mathlib/AlgebraicTopology/SimplicialObject.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
X : Augmented Cᵒᵖ
⊢ X.leftOp.rightOp.left = X.left
state_after: no goals
tactic: simp
Theorem: Ordnode.balanceR_eq_balance'
File: Mathlib/Data/Ordmap/Ordset.lean

Proof steps:
state_before: α : Type u_1
l : Ordnode α
x : α
r : Ordnode α
hl : l.Balanced
hr : r.Balanced
sl : l.Sized
sr : r.Sized
H : (∃ l', Raised l.size l' ∧ BalancedSz l' r.size) ∨ ∃ r', Raised r' r.size ∧ BalancedSz l.size r'
⊢ l.balanceR x r = l.balance' x r
state_after: no goals
tactic: rw [← dual_dual (balanceR l x r), dual_balanceR,
    balanceL_eq_balance' hr.dual hl.dual sr.dual sl.dual (balance_sz_dual H), ← dual_balance',
    dual_dual]
Theorem: CategoryTheory.ShortComplex.isIso_opcyclesMap'_of_isIso_of_epi
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₂✝ : IsIso φ.τ₂
h₁✝ : Epi φ.τ₁
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
⊢ IsIso (opcyclesMap' φ h₁ h₂)
state_after: case refine_1
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₂✝ : IsIso φ.τ₂
h₁✝ : Epi φ.τ₁
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
⊢ S₂.f ≫ inv φ.τ₂ ≫ h₁.p = 0

case refine_2
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₂✝ : IsIso φ.τ₂
h₁✝ : Epi φ.τ₁
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
⊢ opcyclesMap' φ h₁ h₂ ≫ h₂.descQ (inv φ.τ₂ ≫ h₁.p) ?refine_1 = 𝟙 h₁.Q

case refine_3
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₂✝ : IsIso φ.τ₂
h₁✝ : Epi φ.τ₁
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
⊢ h₂.descQ (inv φ.τ₂ ≫ h₁.p) ?refine_1 ≫ opcyclesMap' φ h₁ h₂ = 𝟙 h₂.Q
tactic: refine ⟨h₂.descQ (inv φ.τ₂ ≫ h₁.p) ?_, ?_, ?_⟩
Theorem: CliffordAlgebra.star_algebraMap
File: Mathlib/LinearAlgebra/CliffordAlgebra/Star.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
r : R
⊢ star ((algebraMap R (CliffordAlgebra Q)) r) = (algebraMap R (CliffordAlgebra Q)) r
state_after: no goals
tactic: rw [star_def, involute.commutes, reverse.commutes]
Theorem: Set.nsmul_mem_nsmul
File: Mathlib/Data/Set/Pointwise/Basic.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Monoid α
s t : Set α
a : α
m n : ℕ
ha : a ∈ s
⊢ a ^ 0 ∈ s ^ 0
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Monoid α
s t : Set α
a : α
m n : ℕ
ha : a ∈ s
⊢ 1 ∈ s ^ 0
tactic: rw [pow_zero]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Monoid α
s t : Set α
a : α
m n : ℕ
ha : a ∈ s
⊢ 1 ∈ s ^ 0
state_after: no goals
tactic: exact one_mem_one
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Monoid α
s t : Set α
a : α
m n✝ : ℕ
ha : a ∈ s
n : ℕ
⊢ a ^ (n + 1) ∈ s ^ (n + 1)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Monoid α
s t : Set α
a : α
m n✝ : ℕ
ha : a ∈ s
n : ℕ
⊢ a ^ n * a ∈ s ^ (n + 1)
tactic: rw [pow_succ]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Monoid α
s t : Set α
a : α
m n✝ : ℕ
ha : a ∈ s
n : ℕ
⊢ a ^ n * a ∈ s ^ (n + 1)
state_after: no goals
tactic: exact mul_mem_mul (pow_mem_pow ha _) ha
Theorem: CategoryTheory.isSubterminal_of_terminal
File: Mathlib/CategoryTheory/Subterminal.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
A : C
inst✝ : HasTerminal C
x✝² : C
x✝¹ x✝ : x✝² ⟶ ⊤_ C
⊢ x✝¹ = x✝
state_after: no goals
tactic: subsingleton
Theorem: SemidirectProduct.map_comp_inr
File: Mathlib/GroupTheory/SemidirectProduct.lean

Proof steps:
state_before: N : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : Group N
inst✝³ : Group G
inst✝² : Group H
φ : G →* MulAut N
N₁ : Type u_4
G₁ : Type u_5
inst✝¹ : Group N₁
inst✝ : Group G₁
φ₁ : G₁ →* MulAut N₁
f₁ : N →* N₁
f₂ : G →* G₁
h : ∀ (g : G), f₁.comp (MulEquiv.toMonoidHom (φ g)) = (MulEquiv.toMonoidHom (φ₁ (f₂ g))).comp f₁
⊢ (map f₁ f₂ h).comp inr = inr.comp f₂
state_after: no goals
tactic: ext <;> simp [map]
Theorem: AlgebraicGeometry.HasRingHomProperty.iff_of_isAffine
File: Mathlib/AlgebraicGeometry/Morphisms/RingHomProperties.lean

Proof steps:
state_before: P : MorphismProperty Scheme
Q : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
inst✝² : HasRingHomProperty P Q
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
inst✝¹ : IsAffine X
inst✝ : IsAffine Y
⊢ P f ↔ Q (Scheme.Hom.app f ⊤)
state_after: P : MorphismProperty Scheme
Q : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
inst✝² : HasRingHomProperty P Q
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
inst✝¹ : IsAffine X
inst✝ : IsAffine Y
⊢ (∀ (i : (Scheme.openCoverOfIsIso (𝟙 X)).J), Q (Scheme.Hom.app ((Scheme.openCoverOfIsIso (𝟙 X)).map i ≫ f) ⊤)) ↔
    Q (Scheme.Hom.app f ⊤)
tactic: rw [iff_of_source_openCover (P := P) (Scheme.openCoverOfIsIso.{u} (𝟙 _))]
state_before: P : MorphismProperty Scheme
Q : {R S : Type u} → [inst : CommRing R] → [inst_1 : CommRing S] → (R →+* S) → Prop
inst✝² : HasRingHomProperty P Q
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
inst✝¹ : IsAffine X
inst✝ : IsAffine Y
⊢ (∀ (i : (Scheme.openCoverOfIsIso (𝟙 X)).J), Q (Scheme.Hom.app ((Scheme.openCoverOfIsIso (𝟙 X)).map i ≫ f) ⊤)) ↔
    Q (Scheme.Hom.app f ⊤)
state_after: no goals
tactic: simp