1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Pretrivialization.mk_symm
File: Mathlib/Topology/FiberBundle/Trivialization.lean

tactic: simp only [e.symm_apply hb, TotalSpace.mk_cast (e.proj_symm_apply' hb), TotalSpace.eta]
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝² : TopologicalSpace B
inst✝¹ : TopologicalSpace F
proj : Z → B
e✝ : Pretrivialization F proj
x : Z
e' : Pretrivialization F TotalSpace.proj
x' : TotalSpace F E
b✝ : B
y✝ : E b✝
inst✝ : (x : B) → Zero (E x)
e : Pretrivialization F TotalSpace.proj
b : B
hb : b ∈ e.baseSet
y : F
⊢ { proj := b, snd := e.symm b y } = ↑e.symm (b, y)
state_after: no goals
Theorem: MeasureTheory.integral_image_eq_integral_abs_deriv_smul
File: Mathlib/MeasureTheory/Function/Jacobian.lean

tactic: simpa only [det_one_smulRight] using
  integral_image_eq_integral_abs_det_fderiv_smul volume hs
    (fun x hx => (hf' x hx).hasFDerivWithinAt) hf g
state_before: E : Type u_1
F : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
s✝ : Set E
f✝ : E → E
f'✝ : E → E →L[ℝ] E
inst✝² : MeasurableSpace E
inst✝¹ : BorelSpace E
μ : Measure E
inst✝ : μ.IsAddHaarMeasure
s : Set ℝ
f f' : ℝ → ℝ
hs : MeasurableSet s
hf' : ∀ x ∈ s, HasDerivWithinAt f (f' x) s x
hf : InjOn f s
g : ℝ → F
⊢ ∫ (x : ℝ) in f '' s, g x = ∫ (x : ℝ) in s, |f' x| • g (f x)
state_after: no goals
Theorem: ZFSet.hereditarily_iff
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: rw [← Hereditarily]
state_before: p : ZFSet → Prop
x y : ZFSet
⊢ Hereditarily p x ↔ p x ∧ ∀ y ∈ x, Hereditarily p y
state_after: no goals
Theorem: Matrix.vecMul_diagonal_const
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝³ : NonAssocSemiring α
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : DecidableEq m
x : α
v : m → α
⊢ (v ᵥ* diagonal fun x_1 => x) = MulOpposite.op x • v
state_after: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝³ : NonAssocSemiring α
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : DecidableEq m
x : α
v : m → α
x✝ : m
⊢ (v ᵥ* diagonal fun x_1 => x) x✝ = (MulOpposite.op x • v) x✝

tactic: simp [vecMul_diagonal]
state_before: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝³ : NonAssocSemiring α
inst✝² : Fintype m
inst✝¹ : Fintype n
inst✝ : DecidableEq m
x : α
v : m → α
x✝ : m
⊢ (v ᵥ* diagonal fun x_1 => x) x✝ = (MulOpposite.op x • v) x✝
state_after: no goals
Theorem: Ordinal.toPGame_lt_iff
File: Mathlib/SetTheory/Game/Ordinal.lean

tactic: contrapose
state_before: a b : Ordinal.{u_1}
⊢ a.toPGame < b.toPGame → a < b
state_after: a b : Ordinal.{u_1}
⊢ ¬a < b → ¬a.toPGame < b.toPGame

tactic: rw [not_lt]
state_before: a b : Ordinal.{u_1}
⊢ ¬a < b → ¬a.toPGame < b.toPGame
state_after: a b : Ordinal.{u_1}
⊢ b ≤ a → ¬a.toPGame < b.toPGame

tactic: exact fun h => not_lt_of_le (toPGame_le h)
state_before: a b : Ordinal.{u_1}
⊢ b ≤ a → ¬a.toPGame < b.toPGame
state_after: no goals
Theorem: Set.centralizer_centralizer_centralizer
File: Mathlib/Algebra/Group/Centralizer.lean

tactic: refine Set.Subset.antisymm ?_ Set.subset_centralizer_centralizer
state_before: M : Type u_1
S T : Set M
a b : M
inst✝ : Mul M
s : Set M
⊢ s.centralizer.centralizer.centralizer = s.centralizer
state_after: M : Type u_1
S T : Set M
a b : M
inst✝ : Mul M
s : Set M
⊢ s.centralizer.centralizer.centralizer ⊆ s.centralizer

tactic: intro x hx
state_before: M : Type u_1
S T : Set M
a b : M
inst✝ : Mul M
s : Set M
⊢ s.centralizer.centralizer.centralizer ⊆ s.centralizer
state_after: M : Type u_1
S T : Set M
a b : M
inst✝ : Mul M
s : Set M
x : M
hx : x ∈ s.centralizer.centralizer.centralizer
⊢ x ∈ s.centralizer

tactic: rw [Set.mem_centralizer_iff]
state_before: M : Type u_1
S T : Set M
a b : M
inst✝ : Mul M
s : Set M
x : M
hx : x ∈ s.centralizer.centralizer.centralizer
⊢ x ∈ s.centralizer
state_after: M : Type u_1
S T : Set M
a b : M
inst✝ : Mul M
s : Set M
x : M
hx : x ∈ s.centralizer.centralizer.centralizer
⊢ ∀ m ∈ s, m * x = x * m

tactic: intro y hy
state_before: M : Type u_1
S T : Set M
a b : M
inst✝ : Mul M
s : Set M
x : M
hx : x ∈ s.centralizer.centralizer.centralizer
⊢ ∀ m ∈ s, m * x = x * m
state_after: M : Type u_1
S T : Set M
a b : M
inst✝ : Mul M
s : Set M
x : M
hx : x ∈ s.centralizer.centralizer.centralizer
y : M
hy : y ∈ s
⊢ y * x = x * y

tactic: rw [Set.mem_centralizer_iff] at hx
state_before: M : Type u_1
S T : Set M
a b : M
inst✝ : Mul M
s : Set M
x : M
hx : x ∈ s.centralizer.centralizer.centralizer
y : M
hy : y ∈ s
⊢ y * x = x * y
state_after: M : Type u_1
S T : Set M
a b : M
inst✝ : Mul M
s : Set M
x : M
hx : ∀ m ∈ s.centralizer.centralizer, m * x = x * m
y : M
hy : y ∈ s
⊢ y * x = x * y

tactic: exact hx y <| Set.subset_centralizer_centralizer hy
state_before: M : Type u_1
S T : Set M
a b : M
inst✝ : Mul M
s : Set M
x : M
hx : ∀ m ∈ s.centralizer.centralizer, m * x = x * m
y : M
hy : y ∈ s
⊢ y * x = x * y
state_after: no goals
Theorem: Submodule.map_comap_eq_self
File: Mathlib/Algebra/Module/Submodule/Range.lean

tactic: rwa [Submodule.map_comap_eq, inf_eq_right]
state_before: R : Type u_1
R₂ : Type u_2
R₃ : Type u_3
K : Type u_4
K₂ : Type u_5
M : Type u_6
M₂ : Type u_7
M₃ : Type u_8
V : Type u_9
V₂ : Type u_10
inst✝¹³ : Semiring R
inst✝¹² : Semiring R₂
inst✝¹¹ : Semiring R₃
inst✝¹⁰ : AddCommMonoid M
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : AddCommMonoid M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝⁷ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁶ : Module R M
inst✝⁵ : Module R₂ M₂
inst✝⁴ : Module R₃ M₃
σ₂₁ : R₂ →+* R
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝³ : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
F : Type u_11
inst✝² : FunLike F M M₂
inst✝¹ : SemilinearMapClass F τ₁₂ M M₂
inst✝ : RingHomSurjective τ₁₂
f : F
q : Submodule R₂ M₂
h : q ≤ range f
⊢ map f (comap f q) = q
state_after: no goals
Theorem: zpow_mul'
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [Int.mul_comm, zpow_mul]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionMonoid α
a✝ b c d a : α
m n : ℤ
⊢ a ^ (m * n) = (a ^ n) ^ m
state_after: no goals
Theorem: Set.biUnion_diff_biUnion_subset
File: Mathlib/Data/Set/Lattice.lean

tactic: simp only [diff_subset_iff, ← biUnion_union]
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
t : α → Set β
s₁ s₂ : Set α
⊢ (⋃ x ∈ s₁, t x) \ ⋃ x ∈ s₂, t x ⊆ ⋃ x ∈ s₁ \ s₂, t x
state_after: α : 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
t : α → Set β
s₁ s₂ : Set α
⊢ ⋃ x ∈ s₁, t x ⊆ ⋃ x ∈ s₂ ∪ s₁ \ s₂, t x

tactic: apply biUnion_subset_biUnion_left
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
t : α → Set β
s₁ s₂ : Set α
⊢ ⋃ x ∈ s₁, t x ⊆ ⋃ x ∈ s₂ ∪ s₁ \ s₂, t x
state_after: case h
α : 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
t : α → Set β
s₁ s₂ : Set α
⊢ s₁ ⊆ s₂ ∪ s₁ \ s₂

tactic: rw [union_diff_self]
state_before: case h
α : 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
t : α → Set β
s₁ s₂ : Set α
⊢ s₁ ⊆ s₂ ∪ s₁ \ s₂
state_after: case h
α : 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
t : α → Set β
s₁ s₂ : Set α
⊢ s₁ ⊆ s₂ ∪ s₁

tactic: apply subset_union_right
state_before: case h
α : 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
t : α → Set β
s₁ s₂ : Set α
⊢ s₁ ⊆ s₂ ∪ s₁
state_after: no goals
Theorem: List.rtakeWhile_eq_self_iff
File: Mathlib/Data/List/DropRight.lean

tactic: simp [rtakeWhile, reverse_eq_iff]
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
⊢ rtakeWhile p l = l ↔ ∀ (x : α), x ∈ l → p x = true
state_after: no goals
Theorem: CategoryTheory.GrothendieckTopology.arrow_trans
File: Mathlib/CategoryTheory/Sites/Grothendieck.lean

tactic: intro k
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R✝ : Sieve X
J : GrothendieckTopology C
f : Y ⟶ X
S R : Sieve X
h : J.Covers S f
⊢ (∀ {Z : C} (g : Z ⟶ X), S.arrows g → J.Covers R g) → J.Covers R f
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R✝ : Sieve X
J : GrothendieckTopology C
f : Y ⟶ X
S R : Sieve X
h : J.Covers S f
k : ∀ {Z : C} (g : Z ⟶ X), S.arrows g → J.Covers R g
⊢ J.Covers R f

tactic: apply J.transitive h
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R✝ : Sieve X
J : GrothendieckTopology C
f : Y ⟶ X
S R : Sieve X
h : J.Covers S f
k : ∀ {Z : C} (g : Z ⟶ X), S.arrows g → J.Covers R g
⊢ J.Covers R f
state_after: case h
C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R✝ : Sieve X
J : GrothendieckTopology C
f : Y ⟶ X
S R : Sieve X
h : J.Covers S f
k : ∀ {Z : C} (g : Z ⟶ X), S.arrows g → J.Covers R g
⊢ ∀ ⦃Y_1 : C⦄ ⦃f_1 : Y_1 ⟶ Y⦄, (Sieve.pullback f S).arrows f_1 → Sieve.pullback f_1 (Sieve.pullback f R) ∈ J.sieves Y_1

tactic: intro Z g hg
state_before: case h
C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R✝ : Sieve X
J : GrothendieckTopology C
f : Y ⟶ X
S R : Sieve X
h : J.Covers S f
k : ∀ {Z : C} (g : Z ⟶ X), S.arrows g → J.Covers R g
⊢ ∀ ⦃Y_1 : C⦄ ⦃f_1 : Y_1 ⟶ Y⦄, (Sieve.pullback f S).arrows f_1 → Sieve.pullback f_1 (Sieve.pullback f R) ∈ J.sieves Y_1
state_after: case h
C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R✝ : Sieve X
J : GrothendieckTopology C
f : Y ⟶ X
S R : Sieve X
h : J.Covers S f
k : ∀ {Z : C} (g : Z ⟶ X), S.arrows g → J.Covers R g
Z : C
g : Z ⟶ Y
hg : (Sieve.pullback f S).arrows g
⊢ Sieve.pullback g (Sieve.pullback f R) ∈ J.sieves Z

tactic: rw [← Sieve.pullback_comp]
state_before: case h
C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R✝ : Sieve X
J : GrothendieckTopology C
f : Y ⟶ X
S R : Sieve X
h : J.Covers S f
k : ∀ {Z : C} (g : Z ⟶ X), S.arrows g → J.Covers R g
Z : C
g : Z ⟶ Y
hg : (Sieve.pullback f S).arrows g
⊢ Sieve.pullback g (Sieve.pullback f R) ∈ J.sieves Z
state_after: case h
C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R✝ : Sieve X
J : GrothendieckTopology C
f : Y ⟶ X
S R : Sieve X
h : J.Covers S f
k : ∀ {Z : C} (g : Z ⟶ X), S.arrows g → J.Covers R g
Z : C
g : Z ⟶ Y
hg : (Sieve.pullback f S).arrows g
⊢ Sieve.pullback (g ≫ f) R ∈ J.sieves Z

tactic: apply k (g ≫ f) hg
state_before: case h
C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R✝ : Sieve X
J : GrothendieckTopology C
f : Y ⟶ X
S R : Sieve X
h : J.Covers S f
k : ∀ {Z : C} (g : Z ⟶ X), S.arrows g → J.Covers R g
Z : C
g : Z ⟶ Y
hg : (Sieve.pullback f S).arrows g
⊢ Sieve.pullback (g ≫ f) R ∈ J.sieves Z
state_after: no goals
Theorem: CategoryTheory.Limits.pullback_map_eq_pullbackFstFstIso_inv
File: Mathlib/CategoryTheory/Limits/Shapes/Diagonal.lean

tactic: simp only [pullbackFstFstIso_inv, lift_snd_assoc, lift_fst]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
X✝ Y✝ Z : C
inst✝¹ : HasPullbacks C
X Y S X' Y' S' : C
f : X ⟶ S
g : Y ⟶ S
f' : X' ⟶ S'
g' : Y' ⟶ S'
i₁ : X ⟶ X'
i₂ : Y ⟶ Y'
i₃ : S ⟶ S'
e₁ : f ≫ i₃ = i₁ ≫ f'
e₂ : g ≫ i₃ = i₂ ≫ g'
inst✝ : Mono i₃
⊢ map f g f' g' i₁ i₂ i₃ e₁ e₂ = (pullbackFstFstIso f g f' g' i₁ i₂ i₃ e₁ e₂).inv ≫ snd ≫ fst
state_after: no goals
Theorem: CategoryTheory.ShortComplex.mapCyclesIso_hom_iCycles
File: Mathlib/Algebra/Homology/ShortComplex/PreservesHomology.lean

tactic: apply LeftHomologyData.cyclesIso_hom_comp_i
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_3, u_1} C
inst✝⁶ : Category.{u_4, u_2} D
inst✝⁵ : HasZeroMorphisms C
inst✝⁴ : HasZeroMorphisms D
S : ShortComplex C
h₁✝ : S.LeftHomologyData
h₂✝ : S.RightHomologyData
F✝ : C ⥤ D
inst✝³ : F✝.PreservesZeroMorphisms
hl : S.LeftHomologyData
hr : S.RightHomologyData
S₁ S₂ : ShortComplex C
φ : S₁ ⟶ S₂
hl₁ : S₁.LeftHomologyData
hr₁ : S₁.RightHomologyData
hl₂ : S₂.LeftHomologyData
hr₂ : S₂.RightHomologyData
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
F : C ⥤ D
inst✝² : F.PreservesZeroMorphisms
inst✝¹ : S.HasLeftHomology
inst✝ : F.PreservesLeftHomologyOf S
⊢ (S.mapCyclesIso F).hom ≫ F.map S.iCycles = (S.map F).iCycles
state_after: no goals
Theorem: FirstOrder.Language.BoundedFormula.realize_iff
File: Mathlib/ModelTheory/Semantics.lean

tactic: simp only [BoundedFormula.iff, realize_inf, realize_imp, and_imp, ← iff_def]
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n l : ℕ
φ ψ : L.BoundedFormula α l
θ : L.BoundedFormula α l.succ
v : α → M
xs : Fin l → M
⊢ (φ ⇔ ψ).Realize v xs ↔ (φ.Realize v xs ↔ ψ.Realize v xs)
state_after: no goals
Theorem: OmegaCompletePartialOrder.continuous_const
File: Mathlib/Order/OmegaCompletePartialOrder.lean

tactic: rw [ωSup_le_iff, Chain.map_coe, OrderHom.const_coe_coe]
state_before: α : Type u
β : Type v
γ : Type u_1
inst✝² : OmegaCompletePartialOrder α
inst✝¹ : OmegaCompletePartialOrder β
inst✝ : OmegaCompletePartialOrder γ
f : α →o β
g : β →o γ
x : β
c : Chain α
z : β
⊢ ((OrderHom.const α) x) (ωSup c) ≤ z ↔ ωSup (c.map ((OrderHom.const α) x)) ≤ z
state_after: α : Type u
β : Type v
γ : Type u_1
inst✝² : OmegaCompletePartialOrder α
inst✝¹ : OmegaCompletePartialOrder β
inst✝ : OmegaCompletePartialOrder γ
f : α →o β
g : β →o γ
x : β
c : Chain α
z : β
⊢ Function.const α x (ωSup c) ≤ z ↔ ∀ (i : ℕ), (Function.const α x ∘ ⇑c) i ≤ z

tactic: simp
state_before: α : Type u
β : Type v
γ : Type u_1
inst✝² : OmegaCompletePartialOrder α
inst✝¹ : OmegaCompletePartialOrder β
inst✝ : OmegaCompletePartialOrder γ
f : α →o β
g : β →o γ
x : β
c : Chain α
z : β
⊢ Function.const α x (ωSup c) ≤ z ↔ ∀ (i : ℕ), (Function.const α x ∘ ⇑c) i ≤ z
state_after: no goals
Theorem: Real.expNear_zero
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [expNear]
state_before: x r : ℝ
⊢ expNear 0 x r = r
state_after: no goals
Theorem: CategoryTheory.Limits.Types.jointly_surjective_of_isColimit
File: Mathlib/CategoryTheory/Limits/Types.lean

tactic: by_contra hx
state_before: J : Type v
inst✝¹ : Category.{w, v} J
F✝ : J ⥤ Type u
inst✝ : HasColimit F✝
F : J ⥤ Type u
t : Cocone F
h : IsColimit t
x : t.pt
⊢ ∃ j y, t.ι.app j y = x
state_after: J : Type v
inst✝¹ : Category.{w, v} J
F✝ : J ⥤ Type u
inst✝ : HasColimit F✝
F : J ⥤ Type u
t : Cocone F
h : IsColimit t
x : t.pt
hx : ¬∃ j y, t.ι.app j y = x
⊢ False

tactic: simp_rw [not_exists] at hx
state_before: J : Type v
inst✝¹ : Category.{w, v} J
F✝ : J ⥤ Type u
inst✝ : HasColimit F✝
F : J ⥤ Type u
t : Cocone F
h : IsColimit t
x : t.pt
hx : ¬∃ j y, t.ι.app j y = x
⊢ False
state_after: J : Type v
inst✝¹ : Category.{w, v} J
F✝ : J ⥤ Type u
inst✝ : HasColimit F✝
F : J ⥤ Type u
t : Cocone F
h : IsColimit t
x : t.pt
hx : ∀ (x_1 : J) (x_2 : F.obj x_1), ¬t.ι.app x_1 x_2 = x
⊢ False

tactic: refine h.hom_ext fun j ↦ ?_
state_before: J : Type v
inst✝¹ : Category.{w, v} J
F✝ : J ⥤ Type u
inst✝ : HasColimit F✝
F : J ⥤ Type u
t : Cocone F
h : IsColimit t
x : t.pt
hx : ∀ (x_1 : J) (x_2 : F.obj x_1), ¬t.ι.app x_1 x_2 = x
⊢ (fun x => { down := True }) = fun x_1 => { down := x_1 ≠ x }
state_after: J : Type v
inst✝¹ : Category.{w, v} J
F✝ : J ⥤ Type u
inst✝ : HasColimit F✝
F : J ⥤ Type u
t : Cocone F
h : IsColimit t
x : t.pt
hx : ∀ (x_1 : J) (x_2 : F.obj x_1), ¬t.ι.app x_1 x_2 = x
j : J
⊢ (t.ι.app j ≫ fun x => { down := True }) = t.ι.app j ≫ fun x_1 => { down := x_1 ≠ x }

tactic: ext y
state_before: J : Type v
inst✝¹ : Category.{w, v} J
F✝ : J ⥤ Type u
inst✝ : HasColimit F✝
F : J ⥤ Type u
t : Cocone F
h : IsColimit t
x : t.pt
hx : ∀ (x_1 : J) (x_2 : F.obj x_1), ¬t.ι.app x_1 x_2 = x
j : J
⊢ (t.ι.app j ≫ fun x => { down := True }) = t.ι.app j ≫ fun x_1 => { down := x_1 ≠ x }
state_after: case h.h.a
J : Type v
inst✝¹ : Category.{w, v} J
F✝ : J ⥤ Type u
inst✝ : HasColimit F✝
F : J ⥤ Type u
t : Cocone F
h : IsColimit t
x : t.pt
hx : ∀ (x_1 : J) (x_2 : F.obj x_1), ¬t.ι.app x_1 x_2 = x
j : J
y : F.obj j
⊢ ((t.ι.app j ≫ fun x => { down := True }) y).down ↔ ((t.ι.app j ≫ fun x_1 => { down := x_1 ≠ x }) y).down

tactic: exact (true_iff _).mpr (hx j y)
state_before: case h.h.a
J : Type v
inst✝¹ : Category.{w, v} J
F✝ : J ⥤ Type u
inst✝ : HasColimit F✝
F : J ⥤ Type u
t : Cocone F
h : IsColimit t
x : t.pt
hx : ∀ (x_1 : J) (x_2 : F.obj x_1), ¬t.ι.app x_1 x_2 = x
j : J
y : F.obj j
⊢ ((t.ι.app j ≫ fun x => { down := True }) y).down ↔ ((t.ι.app j ≫ fun x_1 => { down := x_1 ≠ x }) y).down
state_after: no goals

tactic: exact fun he ↦ of_eq_true (congr_arg ULift.down <| congr_fun he x).symm rfl
state_before: J : Type v
inst✝¹ : Category.{w, v} J
F✝ : J ⥤ Type u
inst✝ : HasColimit F✝
F : J ⥤ Type u
t : Cocone F
h : IsColimit t
x : t.pt
hx : ∀ (x_1 : J) (x_2 : F.obj x_1), ¬t.ι.app x_1 x_2 = x
⊢ (fun x => { down := True }) ≠ fun x_1 => { down := x_1 ≠ x }
state_after: no goals
Theorem: EMetric.diam_pi_le_of_le
File: Mathlib/Topology/EMetricSpace/Basic.lean

tactic: refine diam_le fun x hx y hy => edist_pi_le_iff.mpr ?_
state_before: α : Type u
β : Type v
X : Type u_1
inst✝² : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s✝ t : Set α
π : β → Type u_2
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), diam (s b) ≤ c
⊢ diam (univ.pi s) ≤ c
state_after: α : Type u
β : Type v
X : Type u_1
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
ε ε₁ ε₂ : ℝ≥0∞
s✝ t : Set α
π : β → Type u_2
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), diam (s b) ≤ c
x : (i : β) → π i
hx : x ∈ univ.pi s
y : (i : β) → π i
hy : y ∈ univ.pi s
⊢ ∀ (b : β), edist (x b) (y b) ≤ c

tactic: rw [mem_univ_pi] at hx hy
state_before: α : Type u
β : Type v
X : Type u_1
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
ε ε₁ ε₂ : ℝ≥0∞
s✝ t : Set α
π : β → Type u_2
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), diam (s b) ≤ c
x : (i : β) → π i
hx : x ∈ univ.pi s
y : (i : β) → π i
hy : y ∈ univ.pi s
⊢ ∀ (b : β), edist (x b) (y b) ≤ c
state_after: α : Type u
β : Type v
X : Type u_1
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
ε ε₁ ε₂ : ℝ≥0∞
s✝ t : Set α
π : β → Type u_2
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), diam (s b) ≤ c
x : (i : β) → π i
hx : ∀ (i : β), x i ∈ s i
y : (i : β) → π i
hy : ∀ (i : β), y i ∈ s i
⊢ ∀ (b : β), edist (x b) (y b) ≤ c

tactic: exact fun b => diam_le_iff.1 (h b) (x b) (hx b) (y b) (hy b)
state_before: α : Type u
β : Type v
X : Type u_1
inst✝² : PseudoEMetricSpace α
x✝ y✝ z : α
ε ε₁ ε₂ : ℝ≥0∞
s✝ t : Set α
π : β → Type u_2
inst✝¹ : Fintype β
inst✝ : (b : β) → PseudoEMetricSpace (π b)
s : (b : β) → Set (π b)
c : ℝ≥0∞
h : ∀ (b : β), diam (s b) ≤ c
x : (i : β) → π i
hx : ∀ (i : β), x i ∈ s i
y : (i : β) → π i
hy : ∀ (i : β), y i ∈ s i
⊢ ∀ (b : β), edist (x b) (y b) ≤ c
state_after: no goals
Theorem: mul_mul_invOf_self_cancel'
File: Mathlib/Algebra/Group/Invertible/Defs.lean

tactic: simp [mul_assoc]
state_before: α : Type u
inst✝ : Monoid α
a b : α
x✝ : Invertible b
⊢ a * b * ⅟b = a
state_after: no goals
Theorem: map_iInf
File: Mathlib/Order/Hom/CompleteLattice.lean

tactic: simp [iInf, ← Set.range_comp, Function.comp]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
ι : Sort u_6
κ : ι → Sort u_7
inst✝³ : FunLike F α β
inst✝² : InfSet α
inst✝¹ : InfSet β
inst✝ : sInfHomClass F α β
f : F
g : ι → α
⊢ f (⨅ i, g i) = ⨅ i, f (g i)
state_after: no goals
Theorem: CategoryTheory.GrothendieckTopology.arrow_stable
File: Mathlib/CategoryTheory/Sites/Grothendieck.lean

tactic: rw [covers_iff] at h ⊢
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R : Sieve X
J : GrothendieckTopology C
f : Y ⟶ X
S : Sieve X
h : J.Covers S f
Z : C
g : Z ⟶ Y
⊢ J.Covers S (g ≫ f)
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R : Sieve X
J : GrothendieckTopology C
f : Y ⟶ X
S : Sieve X
h : Sieve.pullback f S ∈ J.sieves Y
Z : C
g : Z ⟶ Y
⊢ Sieve.pullback (g ≫ f) S ∈ J.sieves Z

tactic: simp [h, Sieve.pullback_comp]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R : Sieve X
J : GrothendieckTopology C
f : Y ⟶ X
S : Sieve X
h : Sieve.pullback f S ∈ J.sieves Y
Z : C
g : Z ⟶ Y
⊢ Sieve.pullback (g ≫ f) S ∈ J.sieves Z
state_after: no goals
Theorem: Ideal.ker_Pi_Quotient_mk
File: Mathlib/RingTheory/Ideal/QuotientOperations.lean

tactic: simp [Pi.ker_ringHom, mk_ker]
state_before: R : Type u
S : Type v
F : Type w
inst✝¹ : CommRing R
inst✝ : Semiring S
ι : Type u_1
I : ι → Ideal R
⊢ ker (Pi.ringHom fun i => Quotient.mk (I i)) = ⨅ i, I i
state_after: no goals
Theorem: isPreconnected_iff_preconnectedSpace
File: Mathlib/Topology/Connected/Basic.lean

tactic: simpa using isPreconnected_univ.image ((↑) : s → α) continuous_subtype_val.continuousOn
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s✝ t u v s : Set α
h : PreconnectedSpace ↑s
⊢ IsPreconnected s
state_after: no goals
Theorem: Set.disjoint_singleton
File: Mathlib/Data/Set/Basic.lean

tactic: simp
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s s₁ s₂ t t₁ t₂ u : Set α
⊢ Disjoint {a} {b} ↔ a ≠ b
state_after: no goals
Theorem: edist_le_of_edist_le_geometric_two_of_tendsto
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: simp only [div_eq_mul_inv, ENNReal.inv_pow] at *
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
C : ℝ≥0∞
hC : C ≠ ⊤
f : ℕ → α
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C / 2 ^ n
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
⊢ edist (f n) a ≤ 2 * C / 2 ^ n
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
C : ℝ≥0∞
hC : C ≠ ⊤
f : ℕ → α
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * 2⁻¹ ^ n
⊢ edist (f n) a ≤ 2 * C * 2⁻¹ ^ n

tactic: rw [mul_assoc, mul_comm]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
C : ℝ≥0∞
hC : C ≠ ⊤
f : ℕ → α
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * 2⁻¹ ^ n
⊢ edist (f n) a ≤ 2 * C * 2⁻¹ ^ n
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
C : ℝ≥0∞
hC : C ≠ ⊤
f : ℕ → α
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * 2⁻¹ ^ n
⊢ edist (f n) a ≤ C * 2⁻¹ ^ n * 2

tactic: convert edist_le_of_edist_le_geometric_of_tendsto 2⁻¹ C hu ha n using 1
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
C : ℝ≥0∞
hC : C ≠ ⊤
f : ℕ → α
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * 2⁻¹ ^ n
⊢ edist (f n) a ≤ C * 2⁻¹ ^ n * 2
state_after: case h.e'_4
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
C : ℝ≥0∞
hC : C ≠ ⊤
f : ℕ → α
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * 2⁻¹ ^ n
⊢ C * 2⁻¹ ^ n * 2 = C * 2⁻¹ ^ n / (1 - 2⁻¹)

tactic: rw [ENNReal.one_sub_inv_two, div_eq_mul_inv, inv_inv]
state_before: case h.e'_4
α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : PseudoEMetricSpace α
C : ℝ≥0∞
hC : C ≠ ⊤
f : ℕ → α
a : α
ha : Tendsto f atTop (𝓝 a)
n : ℕ
hu : ∀ (n : ℕ), edist (f n) (f (n + 1)) ≤ C * 2⁻¹ ^ n
⊢ C * 2⁻¹ ^ n * 2 = C * 2⁻¹ ^ n / (1 - 2⁻¹)
state_after: no goals