1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: FirstOrder.Language.Formula.realize_rel₂
File: Mathlib/ModelTheory/Semantics.lean

tactic: rw [Relations.formula₂, realize_rel, iff_eq_eq]
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.Formula α
v : α → M
R : L.Relations 2
t₁ t₂ : L.Term α
⊢ (R.formula₂ t₁ t₂).Realize v ↔ RelMap R ![Term.realize v t₁, Term.realize v t₂]
state_after: 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.Formula α
v : α → M
R : L.Relations 2
t₁ t₂ : L.Term α
⊢ (RelMap R fun i => Term.realize v (![t₁, t₂] i)) = RelMap R ![Term.realize v t₁, Term.realize v t₂]

tactic: refine congr rfl (funext (Fin.cases ?_ ?_))
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.Formula α
v : α → M
R : L.Relations 2
t₁ t₂ : L.Term α
⊢ (RelMap R fun i => Term.realize v (![t₁, t₂] i)) = RelMap R ![Term.realize v t₁, Term.realize v t₂]
state_after: case refine_1
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.Formula α
v : α → M
R : L.Relations 2
t₁ t₂ : L.Term α
⊢ Term.realize v (![t₁, t₂] 0) = ![Term.realize v t₁, Term.realize v t₂] 0

case refine_2
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.Formula α
v : α → M
R : L.Relations 2
t₁ t₂ : L.Term α
⊢ ∀ (i : Fin 1), Term.realize v (![t₁, t₂] i.succ) = ![Term.realize v t₁, Term.realize v t₂] i.succ

tactic: simp only [Matrix.cons_val_zero]
state_before: case refine_1
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.Formula α
v : α → M
R : L.Relations 2
t₁ t₂ : L.Term α
⊢ Term.realize v (![t₁, t₂] 0) = ![Term.realize v t₁, Term.realize v t₂] 0
state_after: no goals

tactic: simp only [Matrix.cons_val_succ, Matrix.cons_val_fin_one, forall_const]
state_before: case refine_2
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.Formula α
v : α → M
R : L.Relations 2
t₁ t₂ : L.Term α
⊢ ∀ (i : Fin 1), Term.realize v (![t₁, t₂] i.succ) = ![Term.realize v t₁, Term.realize v t₂] i.succ
state_after: no goals
Theorem: inner_sub_left
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: simp [sub_eq_add_neg, inner_add_left]
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
x y z : E
⊢ ⟪x - y, z⟫_𝕜 = ⟪x, z⟫_𝕜 - ⟪y, z⟫_𝕜
state_after: no goals
Theorem: SeminormFamily.basisSets_zero
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

tactic: rcases p.basisSets_iff.mp hU with ⟨ι', r, hr, hU⟩
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU : U ∈ p.basisSets
⊢ 0 ∈ U
state_after: case intro.intro.intro
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι'✝ : Type u_9
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU✝ : U ∈ p.basisSets
ι' : Finset ι
r : ℝ
hr : 0 < r
hU : U = (ι'.sup p).ball 0 r
⊢ 0 ∈ U

tactic: rw [hU, mem_ball_zero, map_zero]
state_before: case intro.intro.intro
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι'✝ : Type u_9
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU✝ : U ∈ p.basisSets
ι' : Finset ι
r : ℝ
hr : 0 < r
hU : U = (ι'.sup p).ball 0 r
⊢ 0 ∈ U
state_after: case intro.intro.intro
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι'✝ : Type u_9
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU✝ : U ∈ p.basisSets
ι' : Finset ι
r : ℝ
hr : 0 < r
hU : U = (ι'.sup p).ball 0 r
⊢ 0 < r

tactic: exact hr
state_before: case intro.intro.intro
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι'✝ : Type u_9
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU✝ : U ∈ p.basisSets
ι' : Finset ι
r : ℝ
hr : 0 < r
hU : U = (ι'.sup p).ball 0 r
⊢ 0 < r
state_after: no goals
Theorem: norm_iteratedFDeriv_fderiv
File: Mathlib/Analysis/Calculus/ContDiff/Defs.lean

tactic: rw [iteratedFDeriv_succ_eq_comp_right, comp_apply, LinearIsometryEquiv.norm_map]
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
n : ℕ
⊢ ‖iteratedFDeriv 𝕜 n (fderiv 𝕜 f) x‖ = ‖iteratedFDeriv 𝕜 (n + 1) f x‖
state_after: no goals
Theorem: UpperHalfPlane.verticalStrip_mono
File: Mathlib/Analysis/Complex/UpperHalfPlane/Topology.lean

tactic: rintro z ⟨hzre, hzim⟩
state_before: A B A' B' : ℝ
hA : A ≤ A'
hB : B' ≤ B
⊢ verticalStrip A B ⊆ verticalStrip A' B'
state_after: case intro
A B A' B' : ℝ
hA : A ≤ A'
hB : B' ≤ B
z : ℍ
hzre : |z.re| ≤ A
hzim : B ≤ z.im
⊢ z ∈ verticalStrip A' B'

tactic: exact ⟨hzre.trans hA, hB.trans hzim⟩
state_before: case intro
A B A' B' : ℝ
hA : A ≤ A'
hB : B' ≤ B
z : ℍ
hzre : |z.re| ≤ A
hzim : B ≤ z.im
⊢ z ∈ verticalStrip A' B'
state_after: no goals
Theorem: Wbtw.wSameSide₂₃
File: Mathlib/Analysis/Convex/Side.lean

tactic: rcases h with ⟨t, ⟨ht0, -⟩, rfl⟩
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : StrictOrderedCommRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y z : P
h : Wbtw R x y z
hx : x ∈ s
⊢ s.WSameSide y z
state_after: case intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : StrictOrderedCommRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x z : P
hx : x ∈ s
t : R
ht0 : 0 ≤ t
⊢ s.WSameSide ((lineMap x z) t) z

tactic: exact wSameSide_lineMap_left z hx ht0
state_before: case intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : StrictOrderedCommRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x z : P
hx : x ∈ s
t : R
ht0 : 0 ≤ t
⊢ s.WSameSide ((lineMap x z) t) z
state_after: no goals
Theorem: Polynomial.degree_add_eq_right_of_degree_lt
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [add_comm, degree_add_eq_left_of_degree_lt h]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
h : p.degree < q.degree
⊢ (p + q).degree = q.degree
state_after: no goals
Theorem: Real.pi_lt_315
File: Mathlib/Data/Real/Pi/Bounds.lean

tactic: pi_upper_bound [140 / 99, 279 / 151, 51 / 26, 412 / 207]
state_before: ⊢ π < 3.15
state_after: no goals
Theorem: reflection_singleton_apply
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: rw [reflection_apply, orthogonalProjection_singleton, ofReal_pow]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : HasOrthogonalProjection K
u v : E
⊢ (reflection (Submodule.span 𝕜 {u})) v = 2 • (⟪u, v⟫_𝕜 / ↑‖u‖ ^ 2) • u - v
state_after: no goals
Theorem: Mathlib.Meta.NormNum.Rat.invOf_denom_swap
File: Mathlib/Tactic/NormNum/Eq.lean

tactic: rw [mul_invOf_eq_iff_eq_mul_right, ← Int.commute_cast, mul_assoc,
  ← mul_left_eq_iff_eq_invOf_mul, Int.commute_cast]
state_before: α : Type u_1
inst✝² : Ring α
n₁ n₂ : ℤ
a₁ a₂ : α
inst✝¹ : Invertible a₁
inst✝ : Invertible a₂
⊢ ↑n₁ * ⅟a₁ = ↑n₂ * ⅟a₂ ↔ ↑n₁ * a₂ = ↑n₂ * a₁
state_after: no goals
Theorem: Ordinal.add_eq_right_iff_mul_omega_le
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: refine ⟨fun h => ?_, fun h => ?_⟩
state_before: a b : Ordinal.{u_1}
⊢ a + b = b ↔ a * ω ≤ b
state_after: case refine_1
a b : Ordinal.{u_1}
h : a + b = b
⊢ a * ω ≤ b

case refine_2
a b : Ordinal.{u_1}
h : a * ω ≤ b
⊢ a + b = b

tactic: rw [← nfp_add_zero a, ← deriv_zero]
state_before: case refine_1
a b : Ordinal.{u_1}
h : a + b = b
⊢ a * ω ≤ b
state_after: case refine_1
a b : Ordinal.{u_1}
h : a + b = b
⊢ deriv (fun x => a + x) 0 ≤ b

tactic: cases' (add_isNormal a).fp_iff_deriv.1 h with c hc
state_before: case refine_1
a b : Ordinal.{u_1}
h : a + b = b
⊢ deriv (fun x => a + x) 0 ≤ b
state_after: case refine_1.intro
a b : Ordinal.{u_1}
h : a + b = b
c : Ordinal.{u_1}
hc : deriv (fun x => a + x) c = b
⊢ deriv (fun x => a + x) 0 ≤ b

tactic: rw [← hc]
state_before: case refine_1.intro
a b : Ordinal.{u_1}
h : a + b = b
c : Ordinal.{u_1}
hc : deriv (fun x => a + x) c = b
⊢ deriv (fun x => a + x) 0 ≤ b
state_after: case refine_1.intro
a b : Ordinal.{u_1}
h : a + b = b
c : Ordinal.{u_1}
hc : deriv (fun x => a + x) c = b
⊢ deriv (fun x => a + x) 0 ≤ deriv (fun x => a + x) c

tactic: exact (deriv_isNormal _).monotone (Ordinal.zero_le _)
state_before: case refine_1.intro
a b : Ordinal.{u_1}
h : a + b = b
c : Ordinal.{u_1}
hc : deriv (fun x => a + x) c = b
⊢ deriv (fun x => a + x) 0 ≤ deriv (fun x => a + x) c
state_after: no goals

tactic: have := Ordinal.add_sub_cancel_of_le h
state_before: case refine_2
a b : Ordinal.{u_1}
h : a * ω ≤ b
⊢ a + b = b
state_after: case refine_2
a b : Ordinal.{u_1}
h : a * ω ≤ b
this : a * ω + (b - a * ω) = b
⊢ a + b = b

tactic: nth_rw 1 [← this]
state_before: case refine_2
a b : Ordinal.{u_1}
h : a * ω ≤ b
this : a * ω + (b - a * ω) = b
⊢ a + b = b
state_after: case refine_2
a b : Ordinal.{u_1}
h : a * ω ≤ b
this : a * ω + (b - a * ω) = b
⊢ a + (a * ω + (b - a * ω)) = b

tactic: rwa [← add_assoc, ← mul_one_add, one_add_omega]
state_before: case refine_2
a b : Ordinal.{u_1}
h : a * ω ≤ b
this : a * ω + (b - a * ω) = b
⊢ a + (a * ω + (b - a * ω)) = b
state_after: no goals
Theorem: MultilinearMap.curryFinFinset_apply_const
File: Mathlib/LinearAlgebra/Multilinear/Basic.lean

tactic: refine (curryFinFinset_symm_apply_piecewise_const hk hl _ _ _).symm.trans ?_
state_before: R : Type uR
S : Type uS
ι : Type uι
n✝ : ℕ
M : Fin n✝.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : Fin n✝.succ) → AddCommMonoid (M i)
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M₂
inst✝² : (i : Fin n✝.succ) → Module R (M i)
inst✝¹ : Module R M'
inst✝ : Module R M₂
ι' : Type u_1
k l n : ℕ
s : Finset (Fin n)
hk : s.card = k
hl : sᶜ.card = l
f : MultilinearMap R (fun x => M') M₂
x y : M'
⊢ ((((curryFinFinset R M₂ M' hk hl) f) fun x_1 => x) fun x => y) = f (s.piecewise (fun x_1 => x) fun x => y)
state_after: R : Type uR
S : Type uS
ι : Type uι
n✝ : ℕ
M : Fin n✝.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : Fin n✝.succ) → AddCommMonoid (M i)
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M₂
inst✝² : (i : Fin n✝.succ) → Module R (M i)
inst✝¹ : Module R M'
inst✝ : Module R M₂
ι' : Type u_1
k l n : ℕ
s : Finset (Fin n)
hk : s.card = k
hl : sᶜ.card = l
f : MultilinearMap R (fun x => M') M₂
x y : M'
⊢ ((curryFinFinset R M₂ M' hk hl).symm ((curryFinFinset R M₂ M' hk hl) f)) (s.piecewise (fun x_1 => x) fun x => y) =
    f (s.piecewise (fun x_1 => x) fun x => y)

tactic: rw [LinearEquiv.symm_apply_apply]
state_before: R : Type uR
S : Type uS
ι : Type uι
n✝ : ℕ
M : Fin n✝.succ → Type v
M₁ : ι → Type v₁
M₂ : Type v₂
M₃ : Type v₃
M' : Type v'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : Fin n✝.succ) → AddCommMonoid (M i)
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M₂
inst✝² : (i : Fin n✝.succ) → Module R (M i)
inst✝¹ : Module R M'
inst✝ : Module R M₂
ι' : Type u_1
k l n : ℕ
s : Finset (Fin n)
hk : s.card = k
hl : sᶜ.card = l
f : MultilinearMap R (fun x => M') M₂
x y : M'
⊢ ((curryFinFinset R M₂ M' hk hl).symm ((curryFinFinset R M₂ M' hk hl) f)) (s.piecewise (fun x_1 => x) fun x => y) =
    f (s.piecewise (fun x_1 => x) fun x => y)
state_after: no goals
Theorem: PresheafOfModules.restrictionApp_apply
File: Mathlib/Algebra/Category/ModuleCat/Presheaf.lean

tactic: rfl
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
X Y : Cᵒᵖ
f : X ⟶ Y
M : PresheafOfModules R
x : ↑(M.obj X)
⊢ (restrictionApp f M) x = (M.map f) x
state_after: no goals
Theorem: Seminorm.preimage_metric_ball
File: Mathlib/Analysis/Seminorm.lean

tactic: ext x
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p : Seminorm 𝕜 E
r : ℝ
⊢ ⇑p ⁻¹' Metric.ball 0 r = {x | p x < r}
state_after: case h
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p : Seminorm 𝕜 E
r : ℝ
x : E
⊢ x ∈ ⇑p ⁻¹' Metric.ball 0 r ↔ x ∈ {x | p x < r}

tactic: simp only [mem_setOf, mem_preimage, mem_ball_zero_iff, Real.norm_of_nonneg (apply_nonneg p _)]
state_before: case h
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p : Seminorm 𝕜 E
r : ℝ
x : E
⊢ x ∈ ⇑p ⁻¹' Metric.ball 0 r ↔ x ∈ {x | p x < r}
state_after: no goals
Theorem: Finset.map_map
File: Mathlib/Data/Finset/Image.lean

tactic: simp only [map_val, Multiset.map_map]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s✝ : Finset α
f : α ↪ β
g : β ↪ γ
s : Finset α
⊢ (map g (map f s)).val = (map (f.trans g) s).val
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s✝ : Finset α
f : α ↪ β
g : β ↪ γ
s : Finset α
⊢ Multiset.map (⇑g ∘ ⇑f) s.val = Multiset.map (⇑(f.trans g)) s.val

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s✝ : Finset α
f : α ↪ β
g : β ↪ γ
s : Finset α
⊢ Multiset.map (⇑g ∘ ⇑f) s.val = Multiset.map (⇑(f.trans g)) s.val
state_after: no goals
Theorem: List.isRotated_reverse_comm_iff
File: Mathlib/Data/List/Rotate.lean

tactic: intro h
state_before: case mpr
α : Type u
l l' : List α
⊢ l ~r l'.reverse → l.reverse ~r l'
state_after: case mpr
α : Type u
l l' : List α
h : l ~r l'.reverse
⊢ l.reverse ~r l'

tactic: simpa using h.reverse
state_before: case mpr
α : Type u
l l' : List α
h : l ~r l'.reverse
⊢ l.reverse ~r l'
state_after: no goals
Theorem: IsLocalization.injective
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: rw [injective_iff_map_eq_zero (algebraMap R S)]
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
K : Type u_4
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors R
⊢ Injective ⇑(algebraMap R S)
state_after: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
K : Type u_4
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors R
⊢ ∀ (a : R), (algebraMap R S) a = 0 → a = 0

tactic: intro a ha
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
K : Type u_4
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors R
⊢ ∀ (a : R), (algebraMap R S) a = 0 → a = 0
state_after: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
K : Type u_4
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors R
a : R
ha : (algebraMap R S) a = 0
⊢ a = 0

tactic: rwa [to_map_eq_zero_iff S hM] at ha
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
K : Type u_4
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors R
a : R
ha : (algebraMap R S) a = 0
⊢ a = 0
state_after: no goals
Theorem: Ordinal.one_nadd
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

tactic: rw [nadd_comm, nadd_one]
state_before: a b c : Ordinal.{u}
⊢ 1 ♯ a = succ a
state_after: no goals
Theorem: Finset.erase_injOn'
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [← insert_erase hs, ← insert_erase ht, h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t✝ u v : Finset α
a✝ b a : α
s : Finset α
hs : s ∈ {s | a ∈ s}
t : Finset α
ht : t ∈ {s | a ∈ s}
h : s.erase a = (fun s => s.erase a) t
⊢ s = t
state_after: no goals
Theorem: IsDedekindDomain.selmerGroup.fromUnitLift_injective
File: Mathlib/RingTheory/DedekindDomain/SelmerGroup.lean

tactic: dsimp only [fromUnitLift, MonoidHom.coe_comp, MulEquiv.coe_toMonoidHom]
state_before: R : Type u
inst✝⁵ : CommRing R
inst✝⁴ : IsDedekindDomain R
K : Type v
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
v : HeightOneSpectrum R
S S' : Set (HeightOneSpectrum R)
n : ℕ
inst✝ : Fact (0 < n)
⊢ Function.Injective ⇑fromUnitLift
state_after: R : Type u
inst✝⁵ : CommRing R
inst✝⁴ : IsDedekindDomain R
K : Type v
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
v : HeightOneSpectrum R
S S' : Set (HeightOneSpectrum R)
n : ℕ
inst✝ : Fact (0 < n)
⊢ Function.Injective (⇑(QuotientGroup.kerLift fromUnit) ∘ ⇑(QuotientGroup.quotientMulEquivOfEq ⋯).symm)

tactic: exact Function.Injective.comp (QuotientGroup.kerLift_injective _) (MulEquiv.injective _)
state_before: R : Type u
inst✝⁵ : CommRing R
inst✝⁴ : IsDedekindDomain R
K : Type v
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsFractionRing R K
v : HeightOneSpectrum R
S S' : Set (HeightOneSpectrum R)
n : ℕ
inst✝ : Fact (0 < n)
⊢ Function.Injective (⇑(QuotientGroup.kerLift fromUnit) ∘ ⇑(QuotientGroup.quotientMulEquivOfEq ⋯).symm)
state_after: no goals
Theorem: Polynomial.Chebyshev.U_neg
File: Mathlib/RingTheory/Polynomial/Chebyshev.lean

tactic: simpa [sub_sub] using U_neg_sub_one R (n - 1)
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℤ
⊢ U R (-n) = -U R (n - 2)
state_after: no goals
Theorem: LSeries_sub
File: Mathlib/NumberTheory/LSeries/Linearity.lean

tactic: simpa only [LSeries, term_sub, Pi.sub_apply] using tsum_sub hf hg
state_before: f g : ℕ → ℂ
s : ℂ
hf : LSeriesSummable f s
hg : LSeriesSummable g s
⊢ LSeries (f - g) s = LSeries f s - LSeries g s
state_after: no goals
Theorem: Complex.hasStrictDerivAt_cos
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Deriv.lean

tactic: simp only [sin, div_eq_mul_inv, neg_mul_eq_neg_mul]
state_before: x : ℂ
⊢ HasStrictDerivAt cos (-sin x) x
state_after: x : ℂ
⊢ HasStrictDerivAt cos (-(cexp (-x * I) - cexp (x * I)) * I * 2⁻¹) x

tactic: convert (((hasStrictDerivAt_id x).mul_const I).cexp.add
  ((hasStrictDerivAt_id x).neg.mul_const I).cexp).mul_const (2 : ℂ)⁻¹ using 1
state_before: x : ℂ
⊢ HasStrictDerivAt cos (-(cexp (-x * I) - cexp (x * I)) * I * 2⁻¹) x
state_after: case h.e'_7
x : ℂ
⊢ -(cexp (-x * I) - cexp (x * I)) * I * 2⁻¹ = (cexp (id x * I) * (1 * I) + cexp (-id x * I) * (-1 * I)) * 2⁻¹

tactic: simp only [Function.comp, id]
state_before: case h.e'_7
x : ℂ
⊢ -(cexp (-x * I) - cexp (x * I)) * I * 2⁻¹ = (cexp (id x * I) * (1 * I) + cexp (-id x * I) * (-1 * I)) * 2⁻¹
state_after: case h.e'_7
x : ℂ
⊢ -(cexp (-x * I) - cexp (x * I)) * I * 2⁻¹ = (cexp (x * I) * (1 * I) + cexp (-x * I) * (-1 * I)) * 2⁻¹

tactic: ring
state_before: case h.e'_7
x : ℂ
⊢ -(cexp (-x * I) - cexp (x * I)) * I * 2⁻¹ = (cexp (x * I) * (1 * I) + cexp (-x * I) * (-1 * I)) * 2⁻¹
state_after: no goals
Theorem: List.get_ofFn_go
File: Mathlib/Data/List/OfFn.lean

tactic: simp at hk
state_before: α : Type u
n : ℕ
f : Fin n → α
i j : ℕ
h : i + j = n
k : ℕ
hk : k < (ofFn.go f i j h).length
⊢ j + k < n
state_after: α : Type u
n : ℕ
f : Fin n → α
i j : ℕ
h : i + j = n
k : ℕ
hk : k < i
⊢ j + k < n

tactic: omega
state_before: α : Type u
n : ℕ
f : Fin n → α
i j : ℕ
h : i + j = n
k : ℕ
hk : k < i
⊢ j + k < n
state_after: no goals

tactic: simp [getElem_ofFn_go]
state_before: α : Type u
n : ℕ
f : Fin n → α
i j : ℕ
h : i + j = n
k : ℕ
hk : k < (ofFn.go f i j h).length
⊢ (ofFn.go f i j h).get ⟨k, hk⟩ = f ⟨j + k, ⋯⟩
state_after: no goals
Theorem: Finsupp.single_multiset_sum
File: Mathlib/Algebra/BigOperators/Finsupp.lean

tactic: rw [Multiset.sum_cons, single_add, ih, Multiset.map_cons, Multiset.sum_cons]
state_before: α : Type u_1
ι : Type u_2
γ : Type u_3
A : Type u_4
B : Type u_5
C : Type u_6
inst✝³ : AddCommMonoid A
inst✝² : AddCommMonoid B
inst✝¹ : AddCommMonoid C
t : ι → A → C
h0 : ∀ (i : ι), t i 0 = 0
h1 : ∀ (i : ι) (x y : A), t i (x + y) = t i x + t i y
s✝¹ : Finset α
f : α → ι →₀ A
i : ι
g : ι →₀ A
k : ι → A → γ → B
x : γ
β : Type u_7
M : Type u_8
M' : Type u_9
N : Type u_10
P : Type u_11
G : Type u_12
H : Type u_13
R : Type u_14
S : Type u_15
inst✝ : AddCommMonoid M
s✝ : Multiset M
a✝ : α
a : M
s : Multiset M
ih : single a✝ s.sum = (Multiset.map (single a✝) s).sum
⊢ single a✝ (a ::ₘ s).sum = (Multiset.map (single a✝) (a ::ₘ s)).sum
state_after: no goals
Theorem: NNReal.iInf_empty
File: Mathlib/Data/NNReal/Basic.lean

tactic: rw [_root_.iInf_of_isEmpty, sInf_empty]
state_before: ι : Sort u_1
f✝ : ι → ℝ≥0
inst✝ : IsEmpty ι
f : ι → ℝ≥0
⊢ ⨅ i, f i = 0
state_after: no goals
Theorem: upperBounds_insert
File: Mathlib/Order/Bounds/Basic.lean

tactic: rw [insert_eq, upperBounds_union, upperBounds_singleton]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝¹ : Preorder α
inst✝ : Preorder β
s✝ t : Set α
a✝ b a : α
s : Set α
⊢ upperBounds (insert a s) = Ici a ∩ upperBounds s
state_after: no goals
Theorem: Set.preimage_const_mul_uIcc
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp only [← preimage_mul_const_uIcc ha, mul_comm]
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a : α
ha : a ≠ 0
b c : α
⊢ (fun x => a * x) ⁻¹' [[b, c]] = [[b / a, c / a]]
state_after: no goals