1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ApplicativeTransformation.preserves_map
File: Mathlib/Control/Traversable/Basic.lean

tactic: rw [← pure_seq, η.preserves_seq, preserves_pure, pure_seq]
state_before: F : Type u → Type v
inst✝³ : Applicative F
inst✝² : LawfulApplicative F
G : Type u → Type w
inst✝¹ : Applicative G
inst✝ : LawfulApplicative G
η : ApplicativeTransformation F G
α β : Type u
x : α → β
y : F α
⊢ (fun {α} => η.app α) (x <$> y) = x <$> (fun {α} => η.app α) y
state_after: no goals
Theorem: sdiff_sup_cancel
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [sup_comm, sup_sdiff_cancel_right h]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
h : b ≤ a
⊢ a \ b ⊔ b = a
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.setToSimpleFunc_smul_left
File: Mathlib/MeasureTheory/Integral/SetToL1.lean

tactic: simp_rw [setToSimpleFunc, ContinuousLinearMap.smul_apply, smul_sum]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
𝕜 : Type u_6
p : ℝ≥0∞
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
inst✝ : NormedAddCommGroup G
m✝ : MeasurableSpace α
μ : Measure α
m : MeasurableSpace α
T : Set α → F →L[ℝ] F'
c : ℝ
f : α →ₛ F
⊢ setToSimpleFunc (fun s => c • T s) f = c • setToSimpleFunc T f
state_after: no goals
Theorem: AffineSubspace.sSameSide_smul_vsub_vadd_left
File: Mathlib/Analysis/Convex/Side.lean

tactic: refine ⟨wSameSide_smul_vsub_vadd_left x hp₁ hp₂ ht.le, fun h => hx ?_, hx⟩
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField 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 p₁ p₂ : P
hx : x ∉ s
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
t : R
ht : 0 < t
⊢ s.SSameSide (t • (x -ᵥ p₁) +ᵥ p₂) x
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField 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 p₁ p₂ : P
hx : x ∉ s
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
t : R
ht : 0 < t
h : t • (x -ᵥ p₁) +ᵥ p₂ ∈ s
⊢ x ∈ s

tactic: rwa [vadd_mem_iff_mem_direction _ hp₂, s.direction.smul_mem_iff ht.ne.symm,
  vsub_right_mem_direction_iff_mem hp₁] at h
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField 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 p₁ p₂ : P
hx : x ∉ s
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
t : R
ht : 0 < t
h : t • (x -ᵥ p₁) +ᵥ p₂ ∈ s
⊢ x ∈ s
state_after: no goals
Theorem: AffineMap.linearMap_vsub
File: Mathlib/LinearAlgebra/AffineSpace/AffineMap.lean

tactic: conv_rhs => rw [← vsub_vadd p1 p2, map_vadd, vadd_vsub]
state_before: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
f : P1 →ᵃ[k] P2
p1 p2 : P1
⊢ f.linear (p1 -ᵥ p2) = f p1 -ᵥ f p2
state_after: no goals
Theorem: Complex.angle_exp_one
File: Mathlib/Analysis/Complex/Angle.lean

tactic: simpa using angle_exp_exp x 0
state_before: a x✝ y : ℂ
x : ℝ
⊢ angle (cexp (↑x * I)) 1 = |toIocMod Real.two_pi_pos (-π) x|
state_after: no goals
Theorem: toIocMod_sub
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simpa only [one_zsmul] using toIocMod_sub_zsmul hp a b 1
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIocMod hp a (b - p) = toIocMod hp a b
state_after: no goals
Theorem: QuaternionGroup.xa_pow_four
File: Mathlib/GroupTheory/SpecificGroups/Quaternion.lean

tactic: rw [pow_succ, pow_succ, sq, xa_mul_xa, a_mul_xa, xa_mul_xa,
  add_sub_cancel_right, add_sub_assoc, sub_sub_cancel]
state_before: n : ℕ
i : ZMod (2 * n)
⊢ xa i ^ 4 = 1
state_after: n : ℕ
i : ZMod (2 * n)
⊢ a (↑n + ↑n) = 1

tactic: norm_cast
state_before: n : ℕ
i : ZMod (2 * n)
⊢ a (↑n + ↑n) = 1
state_after: n : ℕ
i : ZMod (2 * n)
⊢ a ↑(n + n) = 1

tactic: rw [← two_mul]
state_before: n : ℕ
i : ZMod (2 * n)
⊢ a ↑(n + n) = 1
state_after: n : ℕ
i : ZMod (2 * n)
⊢ a ↑(2 * n) = 1

tactic: simp [one_def]
state_before: n : ℕ
i : ZMod (2 * n)
⊢ a ↑(2 * n) = 1
state_after: no goals
Theorem: Denumerable.ofEquiv_ofNat
File: Mathlib/Logic/Denumerable.lean

tactic: letI := ofEquiv _ e
state_before: α✝ : Type u_1
β✝ : Type u_2
inst✝² : Denumerable α✝
inst✝¹ : Denumerable β✝
α : Type u_3
β : Type u_4
inst✝ : Denumerable α
e : β ≃ α
n : ℕ
⊢ ofNat β n = e.symm (ofNat α n)
state_after: α✝ : Type u_1
β✝ : Type u_2
inst✝² : Denumerable α✝
inst✝¹ : Denumerable β✝
α : Type u_3
β : Type u_4
inst✝ : Denumerable α
e : β ≃ α
n : ℕ
this : Denumerable β := ofEquiv α e
⊢ ofNat β n = e.symm (ofNat α n)

tactic: refine ofNat_of_decode ?_
state_before: α✝ : Type u_1
β✝ : Type u_2
inst✝² : Denumerable α✝
inst✝¹ : Denumerable β✝
α : Type u_3
β : Type u_4
inst✝ : Denumerable α
e : β ≃ α
n : ℕ
this : Denumerable β := ofEquiv α e
⊢ ofNat β n = e.symm (ofNat α n)
state_after: α✝ : Type u_1
β✝ : Type u_2
inst✝² : Denumerable α✝
inst✝¹ : Denumerable β✝
α : Type u_3
β : Type u_4
inst✝ : Denumerable α
e : β ≃ α
n : ℕ
this : Denumerable β := ofEquiv α e
⊢ decode n = some (e.symm (ofNat α n))

tactic: rw [decode_ofEquiv e]
state_before: α✝ : Type u_1
β✝ : Type u_2
inst✝² : Denumerable α✝
inst✝¹ : Denumerable β✝
α : Type u_3
β : Type u_4
inst✝ : Denumerable α
e : β ≃ α
n : ℕ
this : Denumerable β := ofEquiv α e
⊢ decode n = some (e.symm (ofNat α n))
state_after: α✝ : Type u_1
β✝ : Type u_2
inst✝² : Denumerable α✝
inst✝¹ : Denumerable β✝
α : Type u_3
β : Type u_4
inst✝ : Denumerable α
e : β ≃ α
n : ℕ
this : Denumerable β := ofEquiv α e
⊢ Option.map (⇑e.symm) (decode n) = some (e.symm (ofNat α n))

tactic: simp
state_before: α✝ : Type u_1
β✝ : Type u_2
inst✝² : Denumerable α✝
inst✝¹ : Denumerable β✝
α : Type u_3
β : Type u_4
inst✝ : Denumerable α
e : β ≃ α
n : ℕ
this : Denumerable β := ofEquiv α e
⊢ Option.map (⇑e.symm) (decode n) = some (e.symm (ofNat α n))
state_after: no goals
Theorem: isGreatest_univ_iff
File: Mathlib/Order/Bounds/Basic.lean

tactic: simp [IsGreatest, mem_upperBounds, IsTop]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝¹ : Preorder α
inst✝ : Preorder β
s t : Set α
a b : α
⊢ IsGreatest univ a ↔ IsTop a
state_after: no goals
Theorem: Matrix.diagonal_dotProduct
File: Mathlib/Data/Matrix/Basic.lean

tactic: have : ∀ j ≠ i, diagonal v i j * w j = 0 := fun j hij => by
  simp [diagonal_apply_ne' _ hij]
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✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i : m
⊢ diagonal v i ⬝ᵥ w = v i * w i
state_after: 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✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i : m
this : ∀ (j : m), j ≠ i → diagonal v i j * w j = 0
⊢ diagonal v i ⬝ᵥ w = v i * w i

tactic: convert Finset.sum_eq_single i (fun j _ => this j) _ using 1 <;> simp
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✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i : m
this : ∀ (j : m), j ≠ i → diagonal v i j * w j = 0
⊢ diagonal v i ⬝ᵥ w = v i * w i
state_after: no goals

tactic: simp [diagonal_apply_ne' _ hij]
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✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
i j : m
hij : j ≠ i
⊢ diagonal v i j * w j = 0
state_after: no goals
Theorem: Real.Angle.toReal_neg_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: constructor <;> linarith [pi_pos]
state_before: ⊢ -π < -π / 2 ∧ -π / 2 ≤ π
state_after: no goals
Theorem: orthogonalProjection_mem_subspace_eq_self
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: ext
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
v : ↥K
⊢ (orthogonalProjection K) ↑v = v
state_after: case a
𝕜 : 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
v : ↥K
⊢ ↑((orthogonalProjection K) ↑v) = ↑v

tactic: apply eq_orthogonalProjection_of_mem_of_inner_eq_zero <;> simp
state_before: case a
𝕜 : 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
v : ↥K
⊢ ↑((orthogonalProjection K) ↑v) = ↑v
state_after: no goals
Theorem: Real.sin_lt_sin_of_lt_of_le_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: rw [← sub_pos, sin_sub_sin]
state_before: x y : ℝ
hx₁ : -(π / 2) ≤ x
hy₂ : y ≤ π / 2
hxy : x < y
⊢ sin x < sin y
state_after: x y : ℝ
hx₁ : -(π / 2) ≤ x
hy₂ : y ≤ π / 2
hxy : x < y
⊢ 0 < 2 * sin ((y - x) / 2) * cos ((y + x) / 2)

tactic: have : 0 < sin ((y - x) / 2) := by apply sin_pos_of_pos_of_lt_pi <;> linarith
state_before: x y : ℝ
hx₁ : -(π / 2) ≤ x
hy₂ : y ≤ π / 2
hxy : x < y
⊢ 0 < 2 * sin ((y - x) / 2) * cos ((y + x) / 2)
state_after: x y : ℝ
hx₁ : -(π / 2) ≤ x
hy₂ : y ≤ π / 2
hxy : x < y
this : 0 < sin ((y - x) / 2)
⊢ 0 < 2 * sin ((y - x) / 2) * cos ((y + x) / 2)

tactic: have : 0 < cos ((y + x) / 2) := by refine cos_pos_of_mem_Ioo ⟨?_, ?_⟩ <;> linarith
state_before: x y : ℝ
hx₁ : -(π / 2) ≤ x
hy₂ : y ≤ π / 2
hxy : x < y
this : 0 < sin ((y - x) / 2)
⊢ 0 < 2 * sin ((y - x) / 2) * cos ((y + x) / 2)
state_after: x y : ℝ
hx₁ : -(π / 2) ≤ x
hy₂ : y ≤ π / 2
hxy : x < y
this✝ : 0 < sin ((y - x) / 2)
this : 0 < cos ((y + x) / 2)
⊢ 0 < 2 * sin ((y - x) / 2) * cos ((y + x) / 2)

tactic: positivity
state_before: x y : ℝ
hx₁ : -(π / 2) ≤ x
hy₂ : y ≤ π / 2
hxy : x < y
this✝ : 0 < sin ((y - x) / 2)
this : 0 < cos ((y + x) / 2)
⊢ 0 < 2 * sin ((y - x) / 2) * cos ((y + x) / 2)
state_after: no goals

tactic: apply sin_pos_of_pos_of_lt_pi <;> linarith
state_before: x y : ℝ
hx₁ : -(π / 2) ≤ x
hy₂ : y ≤ π / 2
hxy : x < y
⊢ 0 < sin ((y - x) / 2)
state_after: no goals

tactic: refine cos_pos_of_mem_Ioo ⟨?_, ?_⟩ <;> linarith
state_before: x y : ℝ
hx₁ : -(π / 2) ≤ x
hy₂ : y ≤ π / 2
hxy : x < y
this : 0 < sin ((y - x) / 2)
⊢ 0 < cos ((y + x) / 2)
state_after: no goals
Theorem: Multiset.sub_inter
File: Mathlib/Data/Multiset/Basic.lean

tactic: rw [sub_add_inter s t, tsub_add_cancel_of_le (inter_le_left s t)]
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s✝ t✝ u : Multiset α
a b : α
s t : Multiset α
⊢ s - s ∩ t + ?m.126098 = s - t + ?m.126098
state_after: no goals
Theorem: CategoryTheory.ShortComplex.abCyclesIso_inv_apply_iCycles
File: Mathlib/Algebra/Homology/ShortComplex/Ab.lean

tactic: dsimp only [abCyclesIso]
state_before: S : ShortComplex Ab
x : ↥(AddMonoidHom.ker S.g)
⊢ S.iCycles (S.abCyclesIso.inv x) = ↑x
state_after: S : ShortComplex Ab
x : ↥(AddMonoidHom.ker S.g)
⊢ S.iCycles (S.abLeftHomologyData.cyclesIso.inv x) = ↑x

tactic: erw [← comp_apply, S.abLeftHomologyData.cyclesIso_inv_comp_iCycles]
state_before: S : ShortComplex Ab
x : ↥(AddMonoidHom.ker S.g)
⊢ S.iCycles (S.abLeftHomologyData.cyclesIso.inv x) = ↑x
state_after: S : ShortComplex Ab
x : ↥(AddMonoidHom.ker S.g)
⊢ S.abLeftHomologyData.i x = ↑x

tactic: rfl
state_before: S : ShortComplex Ab
x : ↥(AddMonoidHom.ker S.g)
⊢ S.abLeftHomologyData.i x = ↑x
state_after: no goals
Theorem: Rel.edgeDensity_comm
File: Mathlib/Combinatorics/SimpleGraph/Density.lean

tactic: rw [edgeDensity, mul_comm, card_interedges_comm hr, edgeDensity]
state_before: 𝕜 : Type u_1
ι : Type u_2
κ : Type u_3
α : Type u_4
β : Type u_5
r : α → α → Prop
inst✝ : DecidableRel r
s✝ s₁ s₂ t✝ t₁ t₂ : Finset α
a b : α
hr : Symmetric r
s t : Finset α
⊢ edgeDensity r s t = edgeDensity r t s
state_after: no goals
Theorem: Polynomial.derivative_X_pow
File: Mathlib/Algebra/Polynomial/Derivative.lean

tactic: convert derivative_C_mul_X_pow (1 : R) n <;> simp
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝ : Semiring R
n : ℕ
⊢ derivative (X ^ n) = C ↑n * X ^ (n - 1)
state_after: no goals
Theorem: CategoryTheory.MorphismProperty.IsInvertedBy.map_iff
File: Mathlib/CategoryTheory/MorphismProperty/IsInvertedBy.lean

tactic: simp only [IsInvertedBy.iff_map_le_isomorphisms, map_map]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
C₁ : Type u_1
C₂ : Type u_2
C₃ : Type u_3
inst✝² : Category.{u_4, u_1} C₁
inst✝¹ : Category.{u_5, u_2} C₂
inst✝ : Category.{u_6, u_3} C₃
W : MorphismProperty C₁
F : C₁ ⥤ C₂
G : C₂ ⥤ C₃
⊢ (W.map F).IsInvertedBy G ↔ W.IsInvertedBy (F ⋙ G)
state_after: no goals
Theorem: mem_nhds_subtype_iff_nhdsWithin
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [← map_nhds_subtype_val, image_mem_map_iff Subtype.val_injective]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝ : (i : ι) → TopologicalSpace (π i)
s : Set α
a : ↑s
t : Set ↑s
⊢ t ∈ 𝓝 a ↔ Subtype.val '' t ∈ 𝓝[s] ↑a
state_after: no goals
Theorem: Finset.nodup_toList
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [toList, ← Multiset.coe_nodup, Multiset.coe_toList]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
⊢ s.toList.Nodup
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
⊢ s.val.Nodup

tactic: exact s.nodup
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
⊢ s.val.Nodup
state_after: no goals
Theorem: Finset.piecewise_mem_set_pi
File: Mathlib/Data/Finset/Piecewise.lean

tactic: classical rw [← piecewise_coe]; exact Set.piecewise_mem_pi (↑s) hf hg
state_before: ι : Type u_1
π✝ : ι → Sort u_2
s : Finset ι
f✝ g✝ : (i : ι) → π✝ i
inst✝ : (j : ι) → Decidable (j ∈ s)
π : ι → Type u_3
t : Set ι
t' : (i : ι) → Set (π i)
f g f' g' h : (i : ι) → π i
hf : f ∈ t.pi t'
hg : g ∈ t.pi t'
⊢ s.piecewise f g ∈ t.pi t'
state_after: no goals

tactic: rw [← piecewise_coe]
state_before: ι : Type u_1
π✝ : ι → Sort u_2
s : Finset ι
f✝ g✝ : (i : ι) → π✝ i
inst✝ : (j : ι) → Decidable (j ∈ s)
π : ι → Type u_3
t : Set ι
t' : (i : ι) → Set (π i)
f g f' g' h : (i : ι) → π i
hf : f ∈ t.pi t'
hg : g ∈ t.pi t'
⊢ s.piecewise f g ∈ t.pi t'
state_after: ι : Type u_1
π✝ : ι → Sort u_2
s : Finset ι
f✝ g✝ : (i : ι) → π✝ i
inst✝ : (j : ι) → Decidable (j ∈ s)
π : ι → Type u_3
t : Set ι
t' : (i : ι) → Set (π i)
f g f' g' h : (i : ι) → π i
hf : f ∈ t.pi t'
hg : g ∈ t.pi t'
⊢ (↑s).piecewise f g ∈ t.pi t'

tactic: exact Set.piecewise_mem_pi (↑s) hf hg
state_before: ι : Type u_1
π✝ : ι → Sort u_2
s : Finset ι
f✝ g✝ : (i : ι) → π✝ i
inst✝ : (j : ι) → Decidable (j ∈ s)
π : ι → Type u_3
t : Set ι
t' : (i : ι) → Set (π i)
f g f' g' h : (i : ι) → π i
hf : f ∈ t.pi t'
hg : g ∈ t.pi t'
⊢ (↑s).piecewise f g ∈ t.pi t'
state_after: no goals
Theorem: bernsteinPolynomial.derivative_zero
File: Mathlib/RingTheory/Polynomial/Bernstein.lean

tactic: simp [bernsteinPolynomial, Polynomial.derivative_pow]
state_before: R : Type u_1
inst✝ : CommRing R
n : ℕ
⊢ Polynomial.derivative (bernsteinPolynomial R n 0) = -↑n * bernsteinPolynomial R (n - 1) 0
state_after: no goals
Theorem: CategoryTheory.Limits.pullbackAssoc_inv_snd
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: rw [Iso.inv_comp_eq, pullbackAssoc_hom_snd_snd]
state_before: C : Type u
inst✝⁷ : Category.{v, u} C
D : Type u₂
inst✝⁶ : Category.{v₂, u₂} D
W X Y Z X₁ X₂ X₃ Y₁ Y₂ : C
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₁
f₃ : X₂ ⟶ Y₂
f₄ : X₃ ⟶ Y₂
inst✝⁵ : HasPullback f₁ f₂
inst✝⁴ : HasPullback f₃ f₄
inst✝³ : HasPullback (pullback.snd ≫ sorryAx (sorryAx C true ⟶ Y₂) true) f₄
inst✝² : HasPullback f₁ (pullback.fst ≫ f₂)
inst✝¹ : HasPullback (pullback.snd ≫ f₃) f₄
inst✝ : HasPullback f₁ (pullback.fst ≫ f₂)
⊢ (pullbackAssoc f₁ f₂ f₃ f₄).inv ≫ pullback.snd = pullback.snd ≫ pullback.snd
state_after: no goals
Theorem: Filter.tendsto_finset_image_atTop_atTop
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simp only [Finset.image_singleton, h a, Finset.mem_singleton]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : DecidableEq β
i : β → γ
j : γ → β
h : Function.LeftInverse j i
a : β
⊢ a ∈ Finset.image j {i a}
state_after: no goals
Theorem: tendstoUniformlyOn_empty
File: Mathlib/Topology/UniformSpace/UniformConvergence.lean

tactic: simp
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
u : Set (β × β)
x✝ : u ∈ 𝓤 β
⊢ ∀ᶠ (n : ι) in p, ∀ x ∈ ∅, (f x, F n x) ∈ u
state_after: no goals
Theorem: Prod.mk_covBy_mk_iff_right
File: Mathlib/Order/Cover.lean

tactic: simp_rw [covBy_iff_wcovBy_and_lt, mk_wcovBy_mk_iff_right, mk_lt_mk_iff_right]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PartialOrder α
inst✝ : PartialOrder β
a a₁ a₂ : α
b b₁ b₂ : β
x y : α × β
⊢ (a, b₁) ⋖ (a, b₂) ↔ b₁ ⋖ b₂
state_after: no goals
Theorem: ENNReal.toReal_add_le
File: Mathlib/Data/ENNReal/Real.lean

tactic: simp only [ha, top_add, top_toReal, zero_add, toReal_nonneg]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
ha : a = ⊤
⊢ (a + b).toReal ≤ a.toReal + b.toReal
state_after: no goals

tactic: simp only [hb, add_top, top_toReal, add_zero, toReal_nonneg]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
ha : ¬a = ⊤
hb : b = ⊤
⊢ (a + b).toReal ≤ a.toReal + b.toReal
state_after: no goals
Theorem: finRotate_apply_zero
File: Mathlib/Logic/Equiv/Fin.lean

tactic: rw [finRotate_succ_apply, Fin.zero_add]
state_before: m n : ℕ
⊢ (finRotate n.succ) 0 = 1
state_after: no goals
Theorem: CategoryTheory.Limits.PreservesPullback.iso_hom_snd
File: Mathlib/CategoryTheory/Limits/Preserves/Shapes/Pullbacks.lean

tactic: simp [PreservesPullback.iso]
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
G : C ⥤ D
W X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
h : W ⟶ X
k : W ⟶ Y
comm : h ≫ f = k ≫ g
inst✝² : PreservesLimit (cospan f g) G
inst✝¹ : HasPullback f g
inst✝ : HasPullback (G.map f) (G.map g)
⊢ (iso G f g).hom ≫ pullback.snd = G.map pullback.snd
state_after: no goals
Theorem: totallyBounded_of_forall_symm
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: simpa only [ball_eq_of_symmetry hV.2] using h V hV.1 hV.2
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
s : Set α
h : ∀ V ∈ 𝓤 α, SymmetricRel V → ∃ t, t.Finite ∧ s ⊆ ⋃ y ∈ t, ball y V
V : Set (α × α)
hV : V ∈ 𝓤 α ∧ SymmetricRel V
⊢ ∃ t, t.Finite ∧ s ⊆ ⋃ y ∈ t, {x | (x, y) ∈ id V}
state_after: no goals
Theorem: Function.Involutive.iterate_eq_id
File: Mathlib/Algebra/Ring/Parity.lean

tactic: rwa [hf.iterate_odd hn] at H
state_before: F : Type u_1
α✝ : Type u_2
β : Type u_3
R : Type u_4
α : Type u_5
f : α → α
n : ℕ
hf : Involutive f
hne : f ≠ id
H : f^[n] = id
hn : Odd n
⊢ f = id
state_after: no goals
Theorem: MulLECancellable.mul_le_iff_le_one_right
File: Mathlib/Algebra/Order/Monoid/Unbundled/Basic.lean

tactic: rw [mul_one]
state_before: α : Type u_1
β : Type u_2
inst✝² : LE α
inst✝¹ : MulOneClass α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b : α
ha : MulLECancellable a
⊢ a * b ≤ a ↔ a * b ≤ a * 1
state_after: no goals
Theorem: HomologicalComplex.mkHomFromSingle_f
File: Mathlib/Algebra/Homology/Single.lean

tactic: dsimp [mkHomFromSingle]
state_before: V : Type u
inst✝³ : Category.{v, u} V
inst✝² : HasZeroMorphisms V
inst✝¹ : HasZeroObject V
ι : Type u_1
inst✝ : DecidableEq ι
c : ComplexShape ι
K : HomologicalComplex V c
j : ι
A : V
φ : A ⟶ K.X j
hφ : ∀ (k : ι), c.Rel j k → φ ≫ K.d j k = 0
⊢ (mkHomFromSingle φ hφ).f j = (singleObjXSelf c j A).hom ≫ φ
state_after: V : Type u
inst✝³ : Category.{v, u} V
inst✝² : HasZeroMorphisms V
inst✝¹ : HasZeroObject V
ι : Type u_1
inst✝ : DecidableEq ι
c : ComplexShape ι
K : HomologicalComplex V c
j : ι
A : V
φ : A ⟶ K.X j
hφ : ∀ (k : ι), c.Rel j k → φ ≫ K.d j k = 0
⊢ (if hi : j = j then (singleObjXIsoOfEq c j A j hi).hom ≫ φ ≫ 𝟙 (K.X j) else 0) = (singleObjXSelf c j A).hom ≫ φ

tactic: rw [dif_pos rfl, comp_id]
state_before: V : Type u
inst✝³ : Category.{v, u} V
inst✝² : HasZeroMorphisms V
inst✝¹ : HasZeroObject V
ι : Type u_1
inst✝ : DecidableEq ι
c : ComplexShape ι
K : HomologicalComplex V c
j : ι
A : V
φ : A ⟶ K.X j
hφ : ∀ (k : ι), c.Rel j k → φ ≫ K.d j k = 0
⊢ (if hi : j = j then (singleObjXIsoOfEq c j A j hi).hom ≫ φ ≫ 𝟙 (K.X j) else 0) = (singleObjXSelf c j A).hom ≫ φ
state_after: V : Type u
inst✝³ : Category.{v, u} V
inst✝² : HasZeroMorphisms V
inst✝¹ : HasZeroObject V
ι : Type u_1
inst✝ : DecidableEq ι
c : ComplexShape ι
K : HomologicalComplex V c
j : ι
A : V
φ : A ⟶ K.X j
hφ : ∀ (k : ι), c.Rel j k → φ ≫ K.d j k = 0
⊢ (singleObjXIsoOfEq c j A j ⋯).hom ≫ φ = (singleObjXSelf c j A).hom ≫ φ

tactic: rfl
state_before: V : Type u
inst✝³ : Category.{v, u} V
inst✝² : HasZeroMorphisms V
inst✝¹ : HasZeroObject V
ι : Type u_1
inst✝ : DecidableEq ι
c : ComplexShape ι
K : HomologicalComplex V c
j : ι
A : V
φ : A ⟶ K.X j
hφ : ∀ (k : ι), c.Rel j k → φ ≫ K.d j k = 0
⊢ (singleObjXIsoOfEq c j A j ⋯).hom ≫ φ = (singleObjXSelf c j A).hom ≫ φ
state_after: no goals
Theorem: differentiable_euclidean
File: Mathlib/Analysis/InnerProductSpace/Calculus.lean

tactic: rw [← (EuclideanSpace.equiv ι 𝕜).comp_differentiable_iff, differentiable_pi]
state_before: 𝕜 : Type u_1
ι : Type u_2
H : Type u_3
inst✝³ : _root_.RCLike 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
⊢ Differentiable 𝕜 f ↔ ∀ (i : ι), Differentiable 𝕜 fun x => f x i
state_after: 𝕜 : Type u_1
ι : Type u_2
H : Type u_3
inst✝³ : _root_.RCLike 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
⊢ (∀ (i : ι), Differentiable 𝕜 fun x => (⇑(EuclideanSpace.equiv ι 𝕜) ∘ f) x i) ↔
    ∀ (i : ι), Differentiable 𝕜 fun x => f x i

tactic: rfl
state_before: 𝕜 : Type u_1
ι : Type u_2
H : Type u_3
inst✝³ : _root_.RCLike 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
⊢ (∀ (i : ι), Differentiable 𝕜 fun x => (⇑(EuclideanSpace.equiv ι 𝕜) ∘ f) x i) ↔
    ∀ (i : ι), Differentiable 𝕜 fun x => f x i
state_after: no goals
Theorem: Polynomial.eval₂_add
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: simp only [eval₂_eq_sum]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
⊢ eval₂ f x (p + q) = eval₂ f x p + eval₂ f x q
state_after: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
⊢ ((p + q).sum fun e a => f a * x ^ e) = (p.sum fun e a => f a * x ^ e) + q.sum fun e a => f a * x ^ e

tactic: apply sum_add_index <;> simp [add_mul]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
⊢ ((p + q).sum fun e a => f a * x ^ e) = (p.sum fun e a => f a * x ^ e) + q.sum fun e a => f a * x ^ e
state_after: no goals