1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: TensorAlgebra.lift_ι_apply
File: Mathlib/LinearAlgebra/TensorAlgebra/Basic.lean

tactic: conv_rhs => rw [← ι_comp_lift f]
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
f : M →ₗ[R] A
x : M
⊢ ((lift R) f) ((ι R) x) = f x
state_after: R : Type u_1
inst✝⁴ : CommSemiring R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
f : M →ₗ[R] A
x : M
⊢ ((lift R) f) ((ι R) x) = (((lift R) f).toLinearMap ∘ₗ ι R) x

tactic: rfl
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Type u_2
inst✝³ : AddCommMonoid M
inst✝² : Module R M
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
f : M →ₗ[R] A
x : M
⊢ ((lift R) f) ((ι R) x) = (((lift R) f).toLinearMap ∘ₗ ι R) x
state_after: no goals
Theorem: MeasureTheory.L1.edist_def
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simp only [Lp.edist_def, snorm, one_ne_zero, snorm', Pi.sub_apply, one_toReal, ENNReal.rpow_one,
  ne_eq, not_false_eq_true, div_self, ite_false]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f g : ↥(Lp β 1 μ)
⊢ edist f g = ∫⁻ (a : α), edist (↑↑f a) (↑↑g a) ∂μ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f g : ↥(Lp β 1 μ)
⊢ (if 1 = ⊤ then snormEssSup (↑↑f - ↑↑g) μ else ∫⁻ (a : α), ↑‖↑↑f a - ↑↑g a‖₊ ∂μ) = ∫⁻ (a : α), edist (↑↑f a) (↑↑g a) ∂μ

tactic: simp [edist_eq_coe_nnnorm_sub]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f g : ↥(Lp β 1 μ)
⊢ (if 1 = ⊤ then snormEssSup (↑↑f - ↑↑g) μ else ∫⁻ (a : α), ↑‖↑↑f a - ↑↑g a‖₊ ∂μ) = ∫⁻ (a : α), edist (↑↑f a) (↑↑g a) ∂μ
state_after: no goals
Theorem: MulAction.IsBlock.iff_top
File: Mathlib/GroupTheory/GroupAction/Blocks.lean

tactic: simp only [IsBlock.def_one]
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ IsBlock G B ↔ IsBlock (↥⊤) B
state_after: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G), g • B = B ∨ Disjoint (g • B) B) ↔ ∀ (g : ↥⊤), g • B = B ∨ Disjoint (g • B) B

tactic: constructor
state_before: G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G), g • B = B ∨ Disjoint (g • B) B) ↔ ∀ (g : ↥⊤), g • B = B ∨ Disjoint (g • B) B
state_after: case mp
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G), g • B = B ∨ Disjoint (g • B) B) → ∀ (g : ↥⊤), g • B = B ∨ Disjoint (g • B) B

case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : ↥⊤), g • B = B ∨ Disjoint (g • B) B) → ∀ (g : G), g • B = B ∨ Disjoint (g • B) B

tactic: intro h g
state_before: case mp
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : G), g • B = B ∨ Disjoint (g • B) B) → ∀ (g : ↥⊤), g • B = B ∨ Disjoint (g • B) B
state_after: case mp
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
h : ∀ (g : G), g • B = B ∨ Disjoint (g • B) B
g : ↥⊤
⊢ g • B = B ∨ Disjoint (g • B) B

tactic: exact h g
state_before: case mp
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
h : ∀ (g : G), g • B = B ∨ Disjoint (g • B) B
g : ↥⊤
⊢ g • B = B ∨ Disjoint (g • B) B
state_after: no goals

tactic: intro h g
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
⊢ (∀ (g : ↥⊤), g • B = B ∨ Disjoint (g • B) B) → ∀ (g : G), g • B = B ∨ Disjoint (g • B) B
state_after: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
h : ∀ (g : ↥⊤), g • B = B ∨ Disjoint (g • B) B
g : G
⊢ g • B = B ∨ Disjoint (g • B) B

tactic: exact h ⟨g, Subgroup.mem_top g⟩
state_before: case mpr
G : Type u_1
inst✝¹ : Group G
X : Type u_2
inst✝ : MulAction G X
B : Set X
h : ∀ (g : ↥⊤), g • B = B ∨ Disjoint (g • B) B
g : G
⊢ g • B = B ∨ Disjoint (g • B) B
state_after: no goals
Theorem: Fin.castPred_eq_iff_eq_castSucc
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [← h, castSucc_castPred]
state_before: n m : ℕ
i : Fin (n + 1)
hi : i ≠ last n
j : Fin n
h : i.castPred hi = j
⊢ i = j.castSucc
state_after: no goals

tactic: simp_rw [h, castPred_castSucc]
state_before: n m : ℕ
i : Fin (n + 1)
hi : i ≠ last n
j : Fin n
h : i = j.castSucc
⊢ i.castPred hi = j
state_after: no goals
Theorem: Measurable.ennreal_tsum
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Real.lean

tactic: simp_rw [ENNReal.tsum_eq_iSup_sum]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι✝ : Sort y
s t u : Set α
inst✝¹ : MeasurableSpace α
ι : Type u_5
inst✝ : Countable ι
f : ι → α → ℝ≥0∞
h : ∀ (i : ι), Measurable (f i)
⊢ Measurable fun x => ∑' (i : ι), f i x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι✝ : Sort y
s t u : Set α
inst✝¹ : MeasurableSpace α
ι : Type u_5
inst✝ : Countable ι
f : ι → α → ℝ≥0∞
h : ∀ (i : ι), Measurable (f i)
⊢ Measurable fun x => ⨆ s, ∑ i ∈ s, f i x

tactic: apply measurable_iSup
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι✝ : Sort y
s t u : Set α
inst✝¹ : MeasurableSpace α
ι : Type u_5
inst✝ : Countable ι
f : ι → α → ℝ≥0∞
h : ∀ (i : ι), Measurable (f i)
⊢ Measurable fun x => ⨆ s, ∑ i ∈ s, f i x
state_after: case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι✝ : Sort y
s t u : Set α
inst✝¹ : MeasurableSpace α
ι : Type u_5
inst✝ : Countable ι
f : ι → α → ℝ≥0∞
h : ∀ (i : ι), Measurable (f i)
⊢ ∀ (i : Finset ι), Measurable fun b => ∑ i ∈ i, f i b

tactic: exact fun s => s.measurable_sum fun i _ => h i
state_before: case hf
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι✝ : Sort y
s t u : Set α
inst✝¹ : MeasurableSpace α
ι : Type u_5
inst✝ : Countable ι
f : ι → α → ℝ≥0∞
h : ∀ (i : ι), Measurable (f i)
⊢ ∀ (i : Finset ι), Measurable fun b => ∑ i ∈ i, f i b
state_after: no goals
Theorem: NumberField.InfinitePlace.isReal_of_mk_isReal
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: contrapose! h
state_before: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
φ : K →+* ℂ
h : (mk φ).IsReal
⊢ ComplexEmbedding.IsReal φ
state_after: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
φ : K →+* ℂ
h : ¬ComplexEmbedding.IsReal φ
⊢ ¬(mk φ).IsReal

tactic: rw [not_isReal_iff_isComplex]
state_before: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
φ : K →+* ℂ
h : ¬ComplexEmbedding.IsReal φ
⊢ ¬(mk φ).IsReal
state_after: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
φ : K →+* ℂ
h : ¬ComplexEmbedding.IsReal φ
⊢ (mk φ).IsComplex

tactic: exact ⟨φ, h, rfl⟩
state_before: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
φ : K →+* ℂ
h : ¬ComplexEmbedding.IsReal φ
⊢ (mk φ).IsComplex
state_after: no goals
Theorem: Irreducible.dvd_symm
File: Mathlib/Algebra/Associated.lean

tactic: rintro ⟨q', rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
p q : α
hp : Irreducible p
hq : Irreducible q
⊢ p ∣ q → q ∣ p
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
p : α
hp : Irreducible p
q' : α
hq : Irreducible (p * q')
⊢ p * q' ∣ p

tactic: rw [IsUnit.mul_right_dvd (Or.resolve_left (of_irreducible_mul hq) hp.not_unit)]
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
p : α
hp : Irreducible p
q' : α
hq : Irreducible (p * q')
⊢ p * q' ∣ p
state_after: no goals
Theorem: Quaternion.normSq_nonneg
File: Mathlib/Algebra/Quaternion.lean

tactic: rw [normSq_def']
state_before: R : Type u_1
inst✝ : LinearOrderedCommRing R
a : ℍ[R]
⊢ 0 ≤ normSq a
state_after: R : Type u_1
inst✝ : LinearOrderedCommRing R
a : ℍ[R]
⊢ 0 ≤ a.re ^ 2 + a.imI ^ 2 + a.imJ ^ 2 + a.imK ^ 2

tactic: apply_rules [sq_nonneg, add_nonneg]
state_before: R : Type u_1
inst✝ : LinearOrderedCommRing R
a : ℍ[R]
⊢ 0 ≤ a.re ^ 2 + a.imI ^ 2 + a.imJ ^ 2 + a.imK ^ 2
state_after: no goals
Theorem: StarConvex.affine_image
File: Mathlib/Analysis/Convex/Star.lean

tactic: rintro y ⟨y', ⟨hy', hy'f⟩⟩ a b ha hb hab
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set E
hs : StarConvex 𝕜 x s
⊢ StarConvex 𝕜 (f x) (⇑f '' s)
state_after: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set E
hs : StarConvex 𝕜 x s
y : F
y' : E
hy' : y' ∈ s
hy'f : f y' = y
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • f x + b • y ∈ ⇑f '' s

tactic: refine ⟨a • x + b • y', ⟨hs hy' ha hb hab, ?_⟩⟩
state_before: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set E
hs : StarConvex 𝕜 x s
y : F
y' : E
hy' : y' ∈ s
hy'f : f y' = y
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • f x + b • y ∈ ⇑f '' s
state_after: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set E
hs : StarConvex 𝕜 x s
y : F
y' : E
hy' : y' ∈ s
hy'f : f y' = y
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ f (a • x + b • y') = a • f x + b • y

tactic: rw [Convex.combo_affine_apply hab, hy'f]
state_before: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ : E
s✝ t : Set E
f : E →ᵃ[𝕜] F
s : Set E
hs : StarConvex 𝕜 x s
y : F
y' : E
hy' : y' ∈ s
hy'f : f y' = y
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ f (a • x + b • y') = a • f x + b • y
state_after: no goals
Theorem: CategoryTheory.eqToHom_map_comp
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: aesop_cat
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
p : X = Y
q : Y = Z
⊢ F.map (eqToHom p) ≫ F.map (eqToHom q) = F.map (eqToHom ⋯)
state_after: no goals
Theorem: Ordnode.dual_node3R
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: simp [node3L, node3R, dual_node', add_comm]
state_before: α : Type u_1
l : Ordnode α
x : α
m : Ordnode α
y : α
r : Ordnode α
⊢ (l.node3R x m y r).dual = r.dual.node3L y m.dual x l.dual
state_after: no goals
Theorem: hasProd_prod_disjoint
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: simp_rw [hasProd_subtype_iff_mulIndicator] at *
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommMonoid α
inst✝¹ : TopologicalSpace α
f g : β → α
a✝ b : α
s✝ : Finset β
inst✝ : ContinuousMul α
ι : Type u_5
s : Finset ι
t : ι → Set β
a : ι → α
hs : (↑s).Pairwise (Disjoint on t)
hf : ∀ i ∈ s, HasProd (f ∘ Subtype.val) (a i)
⊢ HasProd (f ∘ Subtype.val) (∏ i ∈ s, a i)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommMonoid α
inst✝¹ : TopologicalSpace α
f g : β → α
a✝ b : α
s✝ : Finset β
inst✝ : ContinuousMul α
ι : Type u_5
s : Finset ι
t : ι → Set β
a : ι → α
hs : (↑s).Pairwise (Disjoint on t)
hf : ∀ i ∈ s, HasProd ((t i).mulIndicator f) (a i)
⊢ HasProd ((⋃ i ∈ s, t i).mulIndicator f) (∏ i ∈ s, a i)

tactic: rw [Finset.mulIndicator_biUnion _ _ hs]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommMonoid α
inst✝¹ : TopologicalSpace α
f g : β → α
a✝ b : α
s✝ : Finset β
inst✝ : ContinuousMul α
ι : Type u_5
s : Finset ι
t : ι → Set β
a : ι → α
hs : (↑s).Pairwise (Disjoint on t)
hf : ∀ i ∈ s, HasProd ((t i).mulIndicator f) (a i)
⊢ HasProd ((⋃ i ∈ s, t i).mulIndicator f) (∏ i ∈ s, a i)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommMonoid α
inst✝¹ : TopologicalSpace α
f g : β → α
a✝ b : α
s✝ : Finset β
inst✝ : ContinuousMul α
ι : Type u_5
s : Finset ι
t : ι → Set β
a : ι → α
hs : (↑s).Pairwise (Disjoint on t)
hf : ∀ i ∈ s, HasProd ((t i).mulIndicator f) (a i)
⊢ HasProd (fun a => ∏ i ∈ s, (t i).mulIndicator f a) (∏ i ∈ s, a i)

tactic: exact hasProd_prod hf
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : CommMonoid α
inst✝¹ : TopologicalSpace α
f g : β → α
a✝ b : α
s✝ : Finset β
inst✝ : ContinuousMul α
ι : Type u_5
s : Finset ι
t : ι → Set β
a : ι → α
hs : (↑s).Pairwise (Disjoint on t)
hf : ∀ i ∈ s, HasProd ((t i).mulIndicator f) (a i)
⊢ HasProd (fun a => ∏ i ∈ s, (t i).mulIndicator f a) (∏ i ∈ s, a i)
state_after: no goals
Theorem: CategoryTheory.Presieve.singleton_eq_iff_domain
File: Mathlib/CategoryTheory/Sites/Sieves.lean

tactic: constructor
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f✝ f g : Y ⟶ X
⊢ singleton f g ↔ f = g
state_after: case mp
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f✝ f g : Y ⟶ X
⊢ singleton f g → f = g

case mpr
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f✝ f g : Y ⟶ X
⊢ f = g → singleton f g

tactic: rintro ⟨a, rfl⟩
state_before: case mp
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f✝ f g : Y ⟶ X
⊢ singleton f g → f = g
state_after: case mp.mk
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f✝ f : Y✝ ⟶ X
Y : C
⊢ f = f

tactic: rfl
state_before: case mp.mk
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y✝ Z : C
f✝ f : Y✝ ⟶ X
Y : C
⊢ f = f
state_after: no goals

tactic: rintro rfl
state_before: case mpr
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f✝ f g : Y ⟶ X
⊢ f = g → singleton f g
state_after: case mpr
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f✝ f : Y ⟶ X
⊢ singleton f f

tactic: apply singleton.mk
state_before: case mpr
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X Y Z : C
f✝ f : Y ⟶ X
⊢ singleton f f
state_after: no goals
Theorem: MeasureTheory.tilted_zero
File: Mathlib/MeasureTheory/Measure/Tilted.lean

tactic: simp
state_before: α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f : α → ℝ
μ : Measure α
inst✝ : IsProbabilityMeasure μ
⊢ μ.tilted 0 = μ
state_after: no goals
Theorem: AlgebraicGeometry.Scheme.Hom.app_eq_appLE
File: Mathlib/AlgebraicGeometry/Scheme.lean

tactic: simp [Hom.appLE]
state_before: X Y : Scheme
f : X.Hom Y
U✝ U' : Opens ↑↑Y.toPresheafedSpace
V V' : Opens ↑↑X.toPresheafedSpace
U : Opens ↑↑Y.toPresheafedSpace
⊢ f.app U = f.appLE U (f ⁻¹ᵁ U) ⋯
state_after: no goals
Theorem: isometry_dcomp
File: Mathlib/Topology/MetricSpace/Isometry.lean

tactic: simp only [edist_pi_def, (hf _).edist_eq]
state_before: ι✝ : Type u_1
α✝ : Type u
β✝ : Type v
γ : Type w
inst✝⁵ : PseudoEMetricSpace α✝
inst✝⁴ : PseudoEMetricSpace β✝
inst✝³ : PseudoEMetricSpace γ
f✝ : α✝ → β✝
x✝ y✝ z : α✝
s : Set α✝
ι : Type u_4
inst✝² : Fintype ι
α : ι → Type u_2
β : ι → Type u_3
inst✝¹ : (i : ι) → PseudoEMetricSpace (α i)
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
f : (i : ι) → α i → β i
hf : ∀ (i : ι), Isometry (f i)
x y : (i : ι) → α i
⊢ edist ((fun g i => f i (g i)) x) ((fun g i => f i (g i)) y) = edist x y
state_after: no goals
Theorem: FreeAbelianGroup.toFinsupp_comp_toFreeAbelianGroup
File: Mathlib/GroupTheory/FreeAbelianGroupFinsupp.lean

tactic: ext x y
state_before: X : Type u_1
⊢ toFinsupp.comp toFreeAbelianGroup = AddMonoidHom.id (X →₀ ℤ)
state_after: case H.h1.h
X : Type u_1
x y : X
⊢ (((toFinsupp.comp toFreeAbelianGroup).comp (singleAddHom x)) 1) y =
    (((AddMonoidHom.id (X →₀ ℤ)).comp (singleAddHom x)) 1) y

tactic: simp only [AddMonoidHom.id_comp]
state_before: case H.h1.h
X : Type u_1
x y : X
⊢ (((toFinsupp.comp toFreeAbelianGroup).comp (singleAddHom x)) 1) y =
    (((AddMonoidHom.id (X →₀ ℤ)).comp (singleAddHom x)) 1) y
state_after: case H.h1.h
X : Type u_1
x y : X
⊢ (((toFinsupp.comp toFreeAbelianGroup).comp (singleAddHom x)) 1) y = ((singleAddHom x) 1) y

tactic: rw [AddMonoidHom.comp_assoc, Finsupp.toFreeAbelianGroup_comp_singleAddHom]
state_before: case H.h1.h
X : Type u_1
x y : X
⊢ (((toFinsupp.comp toFreeAbelianGroup).comp (singleAddHom x)) 1) y = ((singleAddHom x) 1) y
state_after: case H.h1.h
X : Type u_1
x y : X
⊢ ((toFinsupp.comp ((smulAddHom ℤ (FreeAbelianGroup X)).flip (of x))) 1) y = ((singleAddHom x) 1) y

tactic: simp only [toFinsupp, AddMonoidHom.coe_comp, Finsupp.singleAddHom_apply, Function.comp_apply,
  one_smul, lift.of, AddMonoidHom.flip_apply, smulAddHom_apply, AddMonoidHom.id_apply]
state_before: case H.h1.h
X : Type u_1
x y : X
⊢ ((toFinsupp.comp ((smulAddHom ℤ (FreeAbelianGroup X)).flip (of x))) 1) y = ((singleAddHom x) 1) y
state_after: no goals
Theorem: Real.strictAnti_eulerMascheroniSeq'
File: Mathlib/NumberTheory/Harmonic/EulerMascheroni.lean

tactic: refine strictAnti_nat_of_succ_lt (fun n ↦ ?_)
state_before: ⊢ StrictAnti eulerMascheroniSeq'
state_after: n : ℕ
⊢ eulerMascheroniSeq' (n + 1) < eulerMascheroniSeq' n

tactic: rcases Nat.eq_zero_or_pos n with rfl | hn
state_before: n : ℕ
⊢ eulerMascheroniSeq' (n + 1) < eulerMascheroniSeq' n
state_after: case inl

⊢ eulerMascheroniSeq' (0 + 1) < eulerMascheroniSeq' 0

case inr
n : ℕ
hn : n > 0
⊢ eulerMascheroniSeq' (n + 1) < eulerMascheroniSeq' n

tactic: simp_rw [eulerMascheroniSeq', eq_false_intro hn.ne', if_false]
state_before: case inr
n : ℕ
hn : n > 0
⊢ eulerMascheroniSeq' (n + 1) < eulerMascheroniSeq' n
state_after: case inr
n : ℕ
hn : n > 0
⊢ ↑(harmonic (n + 1)) - log ↑(n + 1) < ↑(harmonic n) - log ↑n

tactic: rw [← sub_pos, sub_sub_sub_comm,
  harmonic_succ, Rat.cast_add, ← sub_sub, sub_self, zero_sub, sub_eq_add_neg, neg_sub,
  ← sub_eq_neg_add, sub_pos, ← log_div (by positivity) (by positivity), ← neg_lt_neg_iff,
  ← log_inv]
state_before: case inr
n : ℕ
hn : n > 0
⊢ ↑(harmonic (n + 1)) - log ↑(n + 1) < ↑(harmonic n) - log ↑n
state_after: case inr
n : ℕ
hn : n > 0
⊢ log (↑(n + 1) / ↑n)⁻¹ < -↑(↑(n + 1))⁻¹

tactic: refine (log_lt_sub_one_of_pos ?_ ?_).trans_le (le_of_eq ?_)
state_before: case inr
n : ℕ
hn : n > 0
⊢ log (↑(n + 1) / ↑n)⁻¹ < -↑(↑(n + 1))⁻¹
state_after: case inr.refine_1
n : ℕ
hn : n > 0
⊢ 0 < (↑(n + 1) / ↑n)⁻¹

case inr.refine_2
n : ℕ
hn : n > 0
⊢ (↑(n + 1) / ↑n)⁻¹ ≠ 1

case inr.refine_3
n : ℕ
hn : n > 0
⊢ (↑(n + 1) / ↑n)⁻¹ - 1 = -↑(↑(n + 1))⁻¹

tactic: simp [eulerMascheroniSeq']
state_before: case inl

⊢ eulerMascheroniSeq' (0 + 1) < eulerMascheroniSeq' 0
state_after: no goals

tactic: positivity
state_before: n : ℕ
hn : n > 0
⊢ ↑(n + 1) ≠ 0
state_after: no goals

tactic: positivity
state_before: n : ℕ
hn : n > 0
⊢ ↑n ≠ 0
state_after: no goals

tactic: positivity
state_before: case inr.refine_1
n : ℕ
hn : n > 0
⊢ 0 < (↑(n + 1) / ↑n)⁻¹
state_after: no goals

tactic: field_simp
state_before: case inr.refine_2
n : ℕ
hn : n > 0
⊢ (↑(n + 1) / ↑n)⁻¹ ≠ 1
state_after: no goals

tactic: field_simp
state_before: case inr.refine_3
n : ℕ
hn : n > 0
⊢ (↑(n + 1) / ↑n)⁻¹ - 1 = -↑(↑(n + 1))⁻¹
state_after: no goals
Theorem: Filter.tendsto_div_const_atTop_iff_pos
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simp only [div_eq_mul_inv, tendsto_mul_const_atTop_iff_pos h, inv_pos]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : LinearOrderedSemifield α
l : Filter β
f : β → α
r c : α
n : ℕ
inst✝ : l.NeBot
h : Tendsto f l atTop
⊢ Tendsto (fun x => f x / r) l atTop ↔ 0 < r
state_after: no goals
Theorem: LieDerivation.lie_der_ad_eq_ad_der
File: Mathlib/Algebra/Lie/Derivation/AdjointAction.lean

tactic: rw [ad_apply_lieDerivation, ← lie_ad, lie_skew]
state_before: R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
D : LieDerivation R L L
x : L
⊢ ⁅D, (ad R L) x⁆ = (ad R L) (D x)
state_after: no goals
Theorem: Disjoint.disjoint_sup_right_of_disjoint_sup_left
File: Mathlib/Order/ModularLattice.lean

tactic: rw [disjoint_iff_inf_le, ← h.eq_bot, sup_comm]
state_before: α : Type u_1
a b c : α
inst✝² : Lattice α
inst✝¹ : OrderBot α
inst✝ : IsModularLattice α
h : Disjoint a b
hsup : Disjoint (a ⊔ b) c
⊢ Disjoint a (b ⊔ c)
state_after: α : Type u_1
a b c : α
inst✝² : Lattice α
inst✝¹ : OrderBot α
inst✝ : IsModularLattice α
h : Disjoint a b
hsup : Disjoint (a ⊔ b) c
⊢ a ⊓ (c ⊔ b) ≤ a ⊓ b

tactic: apply le_inf inf_le_left
state_before: α : Type u_1
a b c : α
inst✝² : Lattice α
inst✝¹ : OrderBot α
inst✝ : IsModularLattice α
h : Disjoint a b
hsup : Disjoint (a ⊔ b) c
⊢ a ⊓ (c ⊔ b) ≤ a ⊓ b
state_after: α : Type u_1
a b c : α
inst✝² : Lattice α
inst✝¹ : OrderBot α
inst✝ : IsModularLattice α
h : Disjoint a b
hsup : Disjoint (a ⊔ b) c
⊢ a ⊓ (c ⊔ b) ≤ b

tactic: apply (inf_le_inf_right (c ⊔ b) le_sup_right).trans
state_before: α : Type u_1
a b c : α
inst✝² : Lattice α
inst✝¹ : OrderBot α
inst✝ : IsModularLattice α
h : Disjoint a b
hsup : Disjoint (a ⊔ b) c
⊢ a ⊓ (c ⊔ b) ≤ b
state_after: α : Type u_1
a b c : α
inst✝² : Lattice α
inst✝¹ : OrderBot α
inst✝ : IsModularLattice α
h : Disjoint a b
hsup : Disjoint (a ⊔ b) c
⊢ (?m.25912 ⊔ a) ⊓ (c ⊔ b) ≤ b

α : Type u_1
a b c : α
inst✝² : Lattice α
inst✝¹ : OrderBot α
inst✝ : IsModularLattice α
h : Disjoint a b
hsup : Disjoint (a ⊔ b) c
⊢ α

tactic: rw [sup_comm, IsModularLattice.sup_inf_sup_assoc, hsup.eq_bot, bot_sup_eq]
state_before: α : Type u_1
a b c : α
inst✝² : Lattice α
inst✝¹ : OrderBot α
inst✝ : IsModularLattice α
h : Disjoint a b
hsup : Disjoint (a ⊔ b) c
⊢ (?m.25912 ⊔ a) ⊓ (c ⊔ b) ≤ b

α : Type u_1
a b c : α
inst✝² : Lattice α
inst✝¹ : OrderBot α
inst✝ : IsModularLattice α
h : Disjoint a b
hsup : Disjoint (a ⊔ b) c
⊢ α
state_after: no goals
Theorem: sign_pos
File: Mathlib/Data/Sign.lean

tactic: rwa [sign_apply, if_pos]
state_before: α : Type u_1
inst✝² : Zero α
inst✝¹ : Preorder α
inst✝ : DecidableRel fun x x_1 => x < x_1
a : α
ha : 0 < a
⊢ sign a = 1
state_after: no goals
Theorem: Orthonormal.inner_finsupp_eq_sum_right
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: simp only [l₂.total_apply _, Finsupp.inner_sum, hv.inner_left_finsupp, mul_comm, smul_eq_mul]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
v : ι → E
hv : Orthonormal 𝕜 v
l₁ l₂ : ι →₀ 𝕜
⊢ ⟪(Finsupp.total ι E 𝕜 v) l₁, (Finsupp.total ι E 𝕜 v) l₂⟫_𝕜 = l₂.sum fun i y => (starRingEnd 𝕜) (l₁ i) * y
state_after: no goals
Theorem: Orientation.rotation_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Rotation.lean

tactic: ext x
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
⊢ o.rotation ↑(π / 2) = o.rightAngleRotation
state_after: case h
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x : V
⊢ (o.rotation ↑(π / 2)) x = o.rightAngleRotation x

tactic: simp [rotation]
state_before: case h
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x : V
⊢ (o.rotation ↑(π / 2)) x = o.rightAngleRotation x
state_after: no goals