ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: UpperHalfPlane.image_coe_closedBall
File: Mathlib/Analysis/Complex/UpperHalfPlane/Metric.lean

Proof steps:
state_before: z✝ w : ℍ
r✝ R : ℝ
z : ℍ
r : ℝ
⊢ UpperHalfPlane.coe '' closedBall z r = closedBall (↑(z.center r)) (z.im * Real.sinh r)
state_after: case h
z✝ w✝ : ℍ
r✝ R : ℝ
z : ℍ
r : ℝ
w : ℂ
⊢ w ∈ UpperHalfPlane.coe '' closedBall z r ↔ w ∈ closedBall (↑(z.center r)) (z.im * Real.sinh r)
tactic: ext w
state_before: case h
z✝ w✝ : ℍ
r✝ R : ℝ
z : ℍ
r : ℝ
w : ℂ
⊢ w ∈ UpperHalfPlane.coe '' closedBall z r ↔ w ∈ closedBall (↑(z.center r)) (z.im * Real.sinh r)
state_after: case h.mp
z✝ w✝ : ℍ
r✝ R : ℝ
z : ℍ
r : ℝ
w : ℂ
⊢ w ∈ UpperHalfPlane.coe '' closedBall z r → w ∈ closedBall (↑(z.center r)) (z.im * Real.sinh r)

case h.mpr
z✝ w✝ : ℍ
r✝ R : ℝ
z : ℍ
r : ℝ
w : ℂ
⊢ w ∈ closedBall (↑(z.center r)) (z.im * Real.sinh r) → w ∈ UpperHalfPlane.coe '' closedBall z r
tactic: constructor
Theorem: continuous_algebraMap
File: Mathlib/Topology/Algebra/Algebra.lean

Proof steps:
state_before: R : Type u_1
A : Type u
inst✝⁵ : CommSemiring R
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
inst✝² : TopologicalSpace R
inst✝¹ : TopologicalSpace A
inst✝ : ContinuousSMul R A
⊢ Continuous ⇑(algebraMap R A)
state_after: R : Type u_1
A : Type u
inst✝⁵ : CommSemiring R
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
inst✝² : TopologicalSpace R
inst✝¹ : TopologicalSpace A
inst✝ : ContinuousSMul R A
⊢ Continuous fun r => r • 1
tactic: rw [algebraMap_eq_smul_one']
state_before: R : Type u_1
A : Type u
inst✝⁵ : CommSemiring R
inst✝⁴ : Semiring A
inst✝³ : Algebra R A
inst✝² : TopologicalSpace R
inst✝¹ : TopologicalSpace A
inst✝ : ContinuousSMul R A
⊢ Continuous fun r => r • 1
state_after: no goals
tactic: exact continuous_id.smul continuous_const
Theorem: Finsupp.support_update_zero
File: Mathlib/Data/Finsupp/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
f : α →₀ M
a : α
b : M
i : α
inst✝ : DecidableEq α
⊢ (f.update a 0).support = f.support.erase a
state_after: no goals
tactic: classical
  simp only [update, ite_true, mem_support_iff, ne_eq, not_not]
  congr!
Theorem: Complex.IsExpCmpFilter.isLittleO_exp_cpow
File: Mathlib/Analysis/SpecialFunctions/CompareExp.lean

Proof steps:
state_before: l : Filter ℂ
hl : IsExpCmpFilter l
a : ℂ
b : ℝ
hb : b < 0
⊢ (fun z => cexp (↑b * z)) =o[l] fun z => z ^ a
state_after: no goals
tactic: simpa using hl.isLittleO_cpow_mul_exp hb 0 a
Theorem: CochainComplex.mappingCone.triangleRotateShortComplex_X₁
File: Mathlib/Algebra/Homology/HomotopyCategory/DegreewiseSplit.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{?u.282061, u_1} C
inst✝¹ : Preadditive C
S : ShortComplex (CochainComplex C ℤ)
σ : (n : ℤ) → (S.map (eval C (ComplexShape.up ℤ) n)).Splitting
inst✝ : HasBinaryBiproducts C
K L : CochainComplex C ℤ
φ : K ⟶ L
⊢ (triangle φ).rotate.mor₁ ≫ (triangle φ).rotate.mor₂ = 0
state_after: no goals
tactic: simp
Theorem: IsCompl.sup_inf
File: Mathlib/Order/Disjoint.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
a b x y z x' y' : α
h : IsCompl x y
h' : IsCompl x' y'
⊢ (x ⊔ x') ⊓ (y ⊓ y') = ⊥
state_after: no goals
tactic: rw [inf_sup_right, ← inf_assoc, h.inf_eq_bot, bot_inf_eq, bot_sup_eq, inf_left_comm,
      h'.inf_eq_bot, inf_bot_eq]
state_before: α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : BoundedOrder α
a b x y z x' y' : α
h : IsCompl x y
h' : IsCompl x' y'
⊢ x ⊔ x' ⊔ y ⊓ y' = ⊤
state_after: no goals
tactic: rw [sup_inf_left, sup_comm x, sup_assoc, h.sup_eq_top, sup_top_eq, top_inf_eq,
      sup_assoc, sup_left_comm, h'.sup_eq_top, sup_top_eq]
Theorem: Padic.AddValuation.map_mul
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

Proof steps:
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x y : ℚ_[p]
⊢ (x * y).addValuationDef = x.addValuationDef + y.addValuationDef
state_after: p : ℕ
hp : Fact (Nat.Prime p)
x y : ℚ_[p]
⊢ (if x * y = 0 then ⊤ else ↑(x * y).valuation) =
    (if x = 0 then ⊤ else ↑x.valuation) + if y = 0 then ⊤ else ↑y.valuation
tactic: simp only [addValuationDef]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
x y : ℚ_[p]
⊢ (if x * y = 0 then ⊤ else ↑(x * y).valuation) =
    (if x = 0 then ⊤ else ↑x.valuation) + if y = 0 then ⊤ else ↑y.valuation
state_after: case pos
p : ℕ
hp : Fact (Nat.Prime p)
x y : ℚ_[p]
hx : x = 0
⊢ (if x * y = 0 then ⊤ else ↑(x * y).valuation) =
    (if x = 0 then ⊤ else ↑x.valuation) + if y = 0 then ⊤ else ↑y.valuation

case neg
p : ℕ
hp : Fact (Nat.Prime p)
x y : ℚ_[p]
hx : ¬x = 0
⊢ (if x * y = 0 then ⊤ else ↑(x * y).valuation) =
    (if x = 0 then ⊤ else ↑x.valuation) + if y = 0 then ⊤ else ↑y.valuation
tactic: by_cases hx : x = 0
Theorem: MeasureTheory.diff_ae_eq_self
File: Mathlib/MeasureTheory/OuterMeasure/AE.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
F : Type u_3
inst✝¹ : FunLike F (Set α) ℝ≥0∞
inst✝ : OuterMeasureClass F α
μ : F
s t : Set α
⊢ s \ t =ᶠ[ae μ] s ↔ μ (s ∩ t) = 0
state_after: no goals
tactic: simp [eventuallyLE_antisymm_iff, ae_le_set, diff_diff_right, diff_diff,
    diff_eq_empty.2 Set.subset_union_right]
Theorem: Finset.covBy_cons
File: Mathlib/Data/Finset/Grade.lean

Proof steps:
state_before: α : Type u_1
s t : Finset α
a : α
ha : a ∉ s
⊢ s ⋖ cons a s ha
state_after: no goals
tactic: simp [← val_covBy_val]
Theorem: BddAbove.continuous_convolution_left_of_integrable
File: Mathlib/Analysis/Convolution.lean

Proof steps:
state_before: 𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
E'' : Type uE''
F : Type uF
F' : Type uF'
F'' : Type uF''
P : Type uP
inst✝¹⁸ : NormedAddCommGroup E
inst✝¹⁷ : NormedAddCommGroup E'
inst✝¹⁶ : NormedAddCommGroup E''
inst✝¹⁵ : NormedAddCommGroup F
f f' : G → E
g g' : G → E'
x x' : G
y y' : E
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NormedSpace 𝕜 E
inst✝¹² : NormedSpace 𝕜 E'
inst✝¹¹ : NormedSpace 𝕜 E''
inst✝¹⁰ : NormedSpace 𝕜 F
L : E →L[𝕜] E' →L[𝕜] F
inst✝⁹ : MeasurableSpace G
μ ν : Measure G
inst✝⁸ : NormedSpace ℝ F
inst✝⁷ : AddCommGroup G
inst✝⁶ : μ.IsAddLeftInvariant
inst✝⁵ : μ.IsNegInvariant
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup G
inst✝² : BorelSpace G
inst✝¹ : FirstCountableTopology G
inst✝ : SecondCountableTopologyEither G E
hbf : BddAbove (range fun x => ‖f x‖)
hf : Continuous f
hg : Integrable g μ
⊢ Continuous (f ⋆[L, μ] g)
state_after: 𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
E'' : Type uE''
F : Type uF
F' : Type uF'
F'' : Type uF''
P : Type uP
inst✝¹⁸ : NormedAddCommGroup E
inst✝¹⁷ : NormedAddCommGroup E'
inst✝¹⁶ : NormedAddCommGroup E''
inst✝¹⁵ : NormedAddCommGroup F
f f' : G → E
g g' : G → E'
x x' : G
y y' : E
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NormedSpace 𝕜 E
inst✝¹² : NormedSpace 𝕜 E'
inst✝¹¹ : NormedSpace 𝕜 E''
inst✝¹⁰ : NormedSpace 𝕜 F
L : E →L[𝕜] E' →L[𝕜] F
inst✝⁹ : MeasurableSpace G
μ ν : Measure G
inst✝⁸ : NormedSpace ℝ F
inst✝⁷ : AddCommGroup G
inst✝⁶ : μ.IsAddLeftInvariant
inst✝⁵ : μ.IsNegInvariant
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup G
inst✝² : BorelSpace G
inst✝¹ : FirstCountableTopology G
inst✝ : SecondCountableTopologyEither G E
hbf : BddAbove (range fun x => ‖f x‖)
hf : Continuous f
hg : Integrable g μ
⊢ Continuous (g ⋆[L.flip, μ] f)
tactic: rw [← convolution_flip]
state_before: 𝕜 : Type u𝕜
G : Type uG
E : Type uE
E' : Type uE'
E'' : Type uE''
F : Type uF
F' : Type uF'
F'' : Type uF''
P : Type uP
inst✝¹⁸ : NormedAddCommGroup E
inst✝¹⁷ : NormedAddCommGroup E'
inst✝¹⁶ : NormedAddCommGroup E''
inst✝¹⁵ : NormedAddCommGroup F
f f' : G → E
g g' : G → E'
x x' : G
y y' : E
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NormedSpace 𝕜 E
inst✝¹² : NormedSpace 𝕜 E'
inst✝¹¹ : NormedSpace 𝕜 E''
inst✝¹⁰ : NormedSpace 𝕜 F
L : E →L[𝕜] E' →L[𝕜] F
inst✝⁹ : MeasurableSpace G
μ ν : Measure G
inst✝⁸ : NormedSpace ℝ F
inst✝⁷ : AddCommGroup G
inst✝⁶ : μ.IsAddLeftInvariant
inst✝⁵ : μ.IsNegInvariant
inst✝⁴ : TopologicalSpace G
inst✝³ : TopologicalAddGroup G
inst✝² : BorelSpace G
inst✝¹ : FirstCountableTopology G
inst✝ : SecondCountableTopologyEither G E
hbf : BddAbove (range fun x => ‖f x‖)
hf : Continuous f
hg : Integrable g μ
⊢ Continuous (g ⋆[L.flip, μ] f)
state_after: no goals
tactic: exact hbf.continuous_convolution_right_of_integrable L.flip hg hf
Theorem: MeasureTheory.Measure.Regular.map_iff
File: Mathlib/MeasureTheory/Measure/Regular.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
⊢ (map (⇑f) μ).Regular ↔ μ.Regular
state_after: α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
h : (map (⇑f) μ).Regular
⊢ μ.Regular
tactic: refine ⟨fun h ↦ ?_, fun h ↦ h.map f⟩
state_before: α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
h : (map (⇑f) μ).Regular
⊢ μ.Regular
state_after: case h.e'_4
α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
h : (map (⇑f) μ).Regular
⊢ μ = map (⇑f.symm) (map (⇑f) μ)
tactic: convert h.map f.symm
state_before: case h.e'_4
α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
h : (map (⇑f) μ).Regular
⊢ μ = map (⇑f.symm) (map (⇑f) μ)
state_after: case h.e'_4
α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
h : (map (⇑f) μ).Regular
⊢ μ = map (⇑f.symm ∘ ⇑f) μ
tactic: rw [map_map f.symm.continuous.measurable f.continuous.measurable]
state_before: case h.e'_4
α : Type u_1
β : Type u_2
inst✝⁵ : MeasurableSpace α
inst✝⁴ : TopologicalSpace α
μ : Measure α
inst✝³ : BorelSpace α
inst✝² : MeasurableSpace β
inst✝¹ : TopologicalSpace β
inst✝ : BorelSpace β
f : α ≃ₜ β
h : (map (⇑f) μ).Regular
⊢ μ = map (⇑f.symm ∘ ⇑f) μ
state_after: no goals
tactic: simp
Theorem: CategoryTheory.leftDistributor_inv_comp_biproduct_π
File: Mathlib/CategoryTheory/Monoidal/Preadditive.lean

Proof steps:
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : Preadditive C
inst✝³ : MonoidalCategory C
inst✝² : MonoidalPreadditive C
inst✝¹ : HasFiniteBiproducts C
J : Type
inst✝ : Fintype J
X : C
f : J → C
j : J
⊢ (leftDistributor X f).inv ≫ X ◁ biproduct.π f j = biproduct.π (fun j => X ⊗ f j) j
state_after: no goals
tactic: simp [leftDistributor_inv, Preadditive.sum_comp, ← MonoidalCategory.whiskerLeft_comp,
    biproduct.ι_π, whiskerLeft_dite, comp_dite]
Theorem: AddMonoid.exponent_eq_iSup_addOrderOf
File: Mathlib/GroupTheory/Exponent.lean

Proof steps:
state_before: G : Type u
inst✝ : CommMonoid G
h : ∀ (g : G), 0 < orderOf g
⊢ exponent G = ⨆ g, orderOf g
state_after: G : Type u
inst✝ : CommMonoid G
h : ∀ (g : G), 0 < orderOf g
⊢ exponent G = sSup (Set.range fun g => orderOf g)
tactic: rw [iSup]
state_before: G : Type u
inst✝ : CommMonoid G
h : ∀ (g : G), 0 < orderOf g
⊢ exponent G = sSup (Set.range fun g => orderOf g)
state_after: case pos
G : Type u
inst✝ : CommMonoid G
h : ∀ (g : G), 0 < orderOf g
h✝ : ExponentExists G
⊢ exponent G = sSup (Set.range fun g => orderOf g)

case neg
G : Type u
inst✝ : CommMonoid G
h : ∀ (g : G), 0 < orderOf g
h✝ : ¬ExponentExists G
⊢ exponent G = sSup (Set.range fun g => orderOf g)
tactic: by_cases ExponentExists G
state_before: case pos
G : Type u
inst✝ : CommMonoid G
h : ∀ (g : G), 0 < orderOf g
h✝ : ExponentExists G
⊢ exponent G = sSup (Set.range fun g => orderOf g)

case neg
G : Type u
inst✝ : CommMonoid G
h : ∀ (g : G), 0 < orderOf g
h✝ : ¬ExponentExists G
⊢ exponent G = sSup (Set.range fun g => orderOf g)
state_after: case pos
G : Type u
inst✝ : CommMonoid G
h : ∀ (g : G), 0 < orderOf g
h✝ : ExponentExists G
⊢ exponent G = sSup (Set.range fun g => orderOf g)
tactic: case neg he =>
    rw [← exponent_eq_zero_iff] at he
    rw [he, Set.Infinite.Nat.sSup_eq_zero <| (exponent_eq_zero_iff_range_orderOf_infinite h).1 he]
Theorem: Order.pred_le_of_wcovBy
File: Mathlib/Order/SuccPred/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : PredOrder α
a b : α
h : a ⩿ b
⊢ pred b ≤ a
state_after: case inl
α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : PredOrder α
a b : α
h : a ⩿ b
hab : a ⋖ b
⊢ pred b ≤ a

case inr.intro
α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : PredOrder α
a b : α
h : a ⩿ b
hba : b ≤ a
⊢ pred b ≤ a
tactic: obtain hab | ⟨-, hba⟩ := h.covBy_or_le_and_le
Theorem: IsNilpotent.map_iff
File: Mathlib/RingTheory/Nilpotent/Defs.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝³ : MonoidWithZero R
inst✝² : MonoidWithZero S
r : R
F : Type u_3
inst✝¹ : FunLike F R S
inst✝ : MonoidWithZeroHomClass F R S
f : F
hf : Injective ⇑f
x✝ : IsNilpotent (f r)
k : ℕ
hk : f r ^ k = 0
⊢ f (r ^ k) = 0
state_after: no goals
tactic: rwa [map_pow]
Theorem: Set.compl_iInter₂
File: Mathlib/Data/Set/Lattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : (i : ι) → κ i → Set α
⊢ (⋂ i, ⋂ j, s i j)ᶜ = ⋃ i, ⋃ j, (s i j)ᶜ
state_after: no goals
tactic: simp_rw [compl_iInter]
Theorem: CategoryTheory.shiftFunctorAdd'_zero_add
File: Mathlib/CategoryTheory/Shift/Basic.lean

Proof steps:
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
a : A
⊢ shiftFunctorAdd' C 0 a a ⋯ =
    (shiftFunctor C a).leftUnitor.symm ≪≫ isoWhiskerRight (shiftFunctorZero C A).symm (shiftFunctor C a)
state_after: case w.w.h
C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
a : A
X : C
⊢ (shiftFunctorAdd' C 0 a a ⋯).hom.app X =
    ((shiftFunctor C a).leftUnitor.symm ≪≫ isoWhiskerRight (shiftFunctorZero C A).symm (shiftFunctor C a)).hom.app X
tactic: ext X
state_before: case w.w.h
C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
a : A
X : C
⊢ (shiftFunctorAdd' C 0 a a ⋯).hom.app X =
    ((shiftFunctor C a).leftUnitor.symm ≪≫ isoWhiskerRight (shiftFunctorZero C A).symm (shiftFunctor C a)).hom.app X
state_after: case w.w.h
C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
a : A
X : C
⊢ (eqToHom ⋯).app X ≫ (shiftFunctorAdd C 0 a).hom.app X =
    𝟙 (((shiftMonoidalFunctor C A).obj { as := a }).obj X) ≫
      ((shiftMonoidalFunctor C A).obj { as := a }).map ((shiftMonoidalFunctor C A).ε.app X)
tactic: dsimp [shiftFunctorAdd', shiftFunctorZero, shiftFunctor]
state_before: case w.w.h
C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
a : A
X : C
⊢ (eqToHom ⋯).app X ≫ (shiftFunctorAdd C 0 a).hom.app X =
    𝟙 (((shiftMonoidalFunctor C A).obj { as := a }).obj X) ≫
      ((shiftMonoidalFunctor C A).obj { as := a }).map ((shiftMonoidalFunctor C A).ε.app X)
state_after: case w.w.h
C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
a : A
X : C
⊢ eqToHom ⋯ ≫ (shiftFunctorAdd C 0 a).hom.app X =
    eqToHom ⋯ ≫ ((shiftMonoidalFunctor C A).μIso (𝟙_ (Discrete A)) { as := a }).inv.app X
tactic: simp only [eqToHom_app, obj_ε_app, Discrete.addMonoidal_leftUnitor, eqToIso.inv,
    eqToHom_map, Category.id_comp]
state_before: case w.w.h
C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddMonoid A
inst✝ : HasShift C A
a : A
X : C
⊢ eqToHom ⋯ ≫ (shiftFunctorAdd C 0 a).hom.app X =
    eqToHom ⋯ ≫ ((shiftMonoidalFunctor C A).μIso (𝟙_ (Discrete A)) { as := a }).inv.app X
state_after: no goals
tactic: rfl
Theorem: Ordinal.sup_iterate_eq_nfp
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

Proof steps:
state_before: f✝ f : Ordinal.{u} → Ordinal.{u}
⊢ (fun a => sup fun n => f^[n] a) = nfp f
state_after: case refine_1
f✝ f : Ordinal.{u} → Ordinal.{u}
a : Ordinal.{u}
⊢ (sup fun n => f^[n] a) ≤ nfp f a

case refine_2
f✝ f : Ordinal.{u} → Ordinal.{u}
a : Ordinal.{u}
l : List Unit
⊢ List.foldr (fun x => f) a l ≤ sup fun n => f^[n] a
tactic: refine funext fun a => le_antisymm ?_ (sup_le fun l => ?_)
Theorem: WithBot.mul_coe_eq_bind
File: Mathlib/Algebra/Order/Ring/WithTop.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : MulZeroClass α
a b✝ : WithBot α
b : α
hb : b ≠ 0
⊢ ⊥ * ↑b = Option.bind ⊥ fun a => Option.some (a * b)
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : MulZeroClass α
a b✝ : WithBot α
b : α
hb : b ≠ 0
⊢ ⊥ = Option.bind ⊥ fun a => Option.some (a * b)
tactic: simp only [ne_eq, coe_eq_zero, hb, not_false_eq_true, bot_mul]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : MulZeroClass α
a b✝ : WithBot α
b : α
hb : b ≠ 0
⊢ ⊥ = Option.bind ⊥ fun a => Option.some (a * b)
state_after: no goals
tactic: rfl
Theorem: Rat.divInt_mul_divInt_cancel
File: Mathlib/Data/Rat/Defs.lean

Proof steps:
state_before: q a b c : ℚ
x : ℤ
hx : x ≠ 0
n d : ℤ
⊢ n /. x * (x /. d) = n /. d
state_after: case pos
q a b c : ℚ
x : ℤ
hx : x ≠ 0
n d : ℤ
hd : d = 0
⊢ n /. x * (x /. d) = n /. d

case neg
q a b c : ℚ
x : ℤ
hx : x ≠ 0
n d : ℤ
hd : ¬d = 0
⊢ n /. x * (x /. d) = n /. d
tactic: by_cases hd : d = 0
state_before: case neg
q a b c : ℚ
x : ℤ
hx : x ≠ 0
n d : ℤ
hd : ¬d = 0
⊢ n /. x * (x /. d) = n /. d
state_after: no goals
tactic: rw [divInt_mul_divInt _ _ hx hd, x.mul_comm, divInt_mul_right hx]
Theorem: Set.preimage_invFun_of_not_mem
File: Mathlib/Data/Set/Function.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s✝ s₁ s₂ : Set α
t : Set β
f✝ : α → β
n : Nonempty α
f : α → β
hf : Injective f
s : Set α
h : Classical.choice n ∉ s
⊢ invFun f ⁻¹' s = f '' s
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s✝ s₁ s₂ : Set α
t : Set β
f✝ : α → β
n : Nonempty α
f : α → β
hf : Injective f
s : Set α
h : Classical.choice n ∉ s
x : β
⊢ x ∈ invFun f ⁻¹' s ↔ x ∈ f '' s
tactic: ext x
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s✝ s₁ s₂ : Set α
t : Set β
f✝ : α → β
n : Nonempty α
f : α → β
hf : Injective f
s : Set α
h : Classical.choice n ∉ s
x : β
⊢ x ∈ invFun f ⁻¹' s ↔ x ∈ f '' s
state_after: case h.inl.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s✝ s₁ s₂ : Set α
t : Set β
f✝ : α → β
n : Nonempty α
f : α → β
hf : Injective f
s : Set α
h : Classical.choice n ∉ s
a : α
⊢ f a ∈ invFun f ⁻¹' s ↔ f a ∈ f '' s

case h.inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s✝ s₁ s₂ : Set α
t : Set β
f✝ : α → β
n : Nonempty α
f : α → β
hf : Injective f
s : Set α
h : Classical.choice n ∉ s
x : β
hx : x ∉ range f
⊢ x ∈ invFun f ⁻¹' s ↔ x ∈ f '' s
tactic: rcases em (x ∈ range f) with (⟨a, rfl⟩ | hx)
Theorem: BddBelow.bddAbove_image2_of_bddAbove
File: Mathlib/Order/Bounds/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a : α
b : β
h₀ : ∀ (b : β), Antitone (swap f b)
h₁ : ∀ (a : α), Monotone (f a)
⊢ BddBelow s → BddAbove t → BddAbove (image2 f s t)
state_after: case intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a✝ : α
b✝ : β
h₀ : ∀ (b : β), Antitone (swap f b)
h₁ : ∀ (a : α), Monotone (f a)
a : α
ha : a ∈ lowerBounds s
b : β
hb : b ∈ upperBounds t
⊢ BddAbove (image2 f s t)
tactic: rintro ⟨a, ha⟩ ⟨b, hb⟩
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Preorder γ
f : α → β → γ
s : Set α
t : Set β
a✝ : α
b✝ : β
h₀ : ∀ (b : β), Antitone (swap f b)
h₁ : ∀ (a : α), Monotone (f a)
a : α
ha : a ∈ lowerBounds s
b : β
hb : b ∈ upperBounds t
⊢ BddAbove (image2 f s t)
state_after: no goals
tactic: exact ⟨f a b, mem_upperBounds_image2_of_mem_upperBounds_of_mem_upperBounds h₀ h₁ ha hb⟩
Theorem: AlgebraicGeometry.PresheafedSpace.ofRestrict_top_c
File: Mathlib/Geometry/RingedSpace/PresheafedSpace.lean

Proof steps:
state_before: C : Type u_1
inst✝ : Category.{?u.79019, u_1} C
X : PresheafedSpace C
⊢ X.presheaf = (Presheaf.pushforward C (X.ofRestrict ⋯).base).obj (X.restrict ⋯).presheaf
state_after: C : Type u_1
inst✝ : Category.{?u.79019, u_1} C
X : PresheafedSpace C
⊢ X.presheaf = (Presheaf.pushforward C ((Opens.inclusionTopIso ↑X).inv ≫ (X.ofRestrict ⋯).base)).obj X.presheaf
tactic: rw [restrict_top_presheaf, ← Presheaf.Pushforward.comp_eq]
state_before: C : Type u_1
inst✝ : Category.{?u.79019, u_1} C
X : PresheafedSpace C
⊢ X.presheaf = (Presheaf.pushforward C ((Opens.inclusionTopIso ↑X).inv ≫ (X.ofRestrict ⋯).base)).obj X.presheaf
state_after: C : Type u_1
inst✝ : Category.{?u.79019, u_1} C
X : PresheafedSpace C
⊢ X.presheaf = (Presheaf.pushforward C (𝟙 ↑X)).obj X.presheaf
tactic: erw [Iso.inv_hom_id]
state_before: C : Type u_1
inst✝ : Category.{?u.79019, u_1} C
X : PresheafedSpace C
⊢ X.presheaf = (Presheaf.pushforward C (𝟙 ↑X)).obj X.presheaf
state_after: C : Type u_1
inst✝ : Category.{?u.79019, u_1} C
X : PresheafedSpace C
⊢ X.presheaf = (𝟭 (Presheaf C ↑X)).obj X.presheaf
tactic: rw [Presheaf.id_pushforward]
state_before: C : Type u_1
inst✝ : Category.{?u.79019, u_1} C
X : PresheafedSpace C
⊢ X.presheaf = (𝟭 (Presheaf C ↑X)).obj X.presheaf
state_after: no goals
tactic: dsimp
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : PresheafedSpace C
⊢ (X.ofRestrict ⋯).c = eqToHom ⋯
state_after: case w
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : PresheafedSpace C
U✝ : Opens ↑↑X
⊢ (X.ofRestrict ⋯).c.app (op U✝) = (eqToHom ⋯).app (op U✝)
tactic: ext
state_before: case w
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : PresheafedSpace C
U✝ : Opens ↑↑X
⊢ (X.ofRestrict ⋯).c.app (op U✝) = (eqToHom ⋯).app (op U✝)
state_after: case w
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : PresheafedSpace C
U✝ : Opens ↑↑X
⊢ X.presheaf.map (⋯.adjunction.counit.app U✝).op = (eqToHom ⋯).app (op U✝)
tactic: dsimp [ofRestrict]
state_before: case w
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : PresheafedSpace C
U✝ : Opens ↑↑X
⊢ X.presheaf.map (⋯.adjunction.counit.app U✝).op = (eqToHom ⋯).app (op U✝)
state_after: case w.p
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : PresheafedSpace C
U✝ : Opens ↑↑X
⊢ op U✝ = op (⋯.functor.obj ((Opens.map ⊤.inclusion).obj U✝))
tactic: erw [eqToHom_map, eqToHom_app]
state_before: case w.p
C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : PresheafedSpace C
U✝ : Opens ↑↑X
⊢ op U✝ = op (⋯.functor.obj ((Opens.map ⊤.inclusion).obj U✝))
state_after: no goals
tactic: simp
Theorem: LinearMap.dualMap_id
File: Mathlib/LinearAlgebra/Dual.lean

Proof steps:
state_before: R : Type u
inst✝⁴ : CommSemiring R
M₁ : Type v
M₂ : Type v'
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
⊢ id.dualMap = id
state_after: case h.h
R : Type u
inst✝⁴ : CommSemiring R
M₁ : Type v
M₂ : Type v'
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
x✝¹ : Dual R M₁
x✝ : M₁
⊢ (id.dualMap x✝¹) x✝ = (id x✝¹) x✝
tactic: ext
state_before: case h.h
R : Type u
inst✝⁴ : CommSemiring R
M₁ : Type v
M₂ : Type v'
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
x✝¹ : Dual R M₁
x✝ : M₁
⊢ (id.dualMap x✝¹) x✝ = (id x✝¹) x✝
state_after: no goals
tactic: rfl