1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: pow_mem_ball
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: simp only [mem_ball, dist_eq_norm_div, ← div_pow] at h ⊢
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
n : ℕ
hn : 0 < n
h : a ∈ ball b r
⊢ a ^ n ∈ ball (b ^ n) (n • r)
state_after: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
n : ℕ
hn : 0 < n
h : ‖a / b‖ < r
⊢ ‖(a / b) ^ n‖ < n • r

tactic: refine lt_of_le_of_lt (norm_pow_le_mul_norm n (a / b)) ?_
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
n : ℕ
hn : 0 < n
h : ‖a / b‖ < r
⊢ ‖(a / b) ^ n‖ < n • r
state_after: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
n : ℕ
hn : 0 < n
h : ‖a / b‖ < r
⊢ ↑n * ‖a / b‖ < n • r

tactic: replace hn : 0 < (n : ℝ) := by norm_cast
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
n : ℕ
hn : 0 < n
h : ‖a / b‖ < r
⊢ ↑n * ‖a / b‖ < n • r
state_after: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
n : ℕ
h : ‖a / b‖ < r
hn : 0 < ↑n
⊢ ↑n * ‖a / b‖ < n • r

tactic: rw [nsmul_eq_mul]
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
n : ℕ
h : ‖a / b‖ < r
hn : 0 < ↑n
⊢ ↑n * ‖a / b‖ < n • r
state_after: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
n : ℕ
h : ‖a / b‖ < r
hn : 0 < ↑n
⊢ ↑n * ‖a / b‖ < ↑n * r

tactic: nlinarith
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
n : ℕ
h : ‖a / b‖ < r
hn : 0 < ↑n
⊢ ↑n * ‖a / b‖ < ↑n * r
state_after: no goals

tactic: norm_cast
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
n : ℕ
hn : 0 < n
h : ‖a / b‖ < r
⊢ 0 < ↑n
state_after: no goals
Theorem: LinearMap.BilinForm.IsAdjointPair.mul
File: Mathlib/LinearAlgebra/BilinearForm/Properties.lean

tactic: rw [LinearMap.mul_apply, LinearMap.mul_apply, h, h']
state_before: R : Type u_1
M : Type u_2
inst✝¹⁸ : CommSemiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹⁵ : CommRing R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝¹² : Field K
inst✝¹¹ : AddCommGroup V
inst✝¹⁰ : Module K V
M'✝ : Type u_7
M''✝ : Type u_8
inst✝⁹ : AddCommMonoid M'✝
inst✝⁸ : AddCommMonoid M''✝
inst✝⁷ : Module R M'✝
inst✝⁶ : Module R M''✝
B : BilinForm R M
B₁ : BilinForm R₁ M₁
F : BilinForm R M
M' : Type u_9
inst✝⁵ : AddCommMonoid M'
inst✝⁴ : Module R M'
B' : BilinForm R M'
f✝ f'✝ : M →ₗ[R] M'
g✝ g'✝ : M' →ₗ[R] M
M₁' : Type u_10
inst✝³ : AddCommGroup M₁'
inst✝² : Module R₁ M₁'
B₁' : BilinForm R₁ M₁'
f₁ f₁' : M₁ →ₗ[R₁] M₁'
g₁ g₁' : M₁' →ₗ[R₁] M₁
B₂' : BilinForm R M'
f₂ f₂' : M →ₗ[R] M'
g₂ g₂' : M' →ₗ[R] M
M'' : Type u_11
inst✝¹ : AddCommMonoid M''
inst✝ : Module R M''
B'' : BilinForm R M''
f g f' g' : Module.End R M
h : B.IsAdjointPair B f g
h' : B.IsAdjointPair B f' g'
x y : M
⊢ (B ((f * f') x)) y = (B x) ((g' * g) y)
state_after: no goals
Theorem: ZMod.exists_sq_eq_neg_one_iff
File: Mathlib/NumberTheory/LegendreSymbol/Basic.lean

tactic: rw [FiniteField.isSquare_neg_one_iff, card p]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
⊢ IsSquare (-1) ↔ p % 4 ≠ 3
state_after: no goals
Theorem: Polynomial.natDegree_iterate_derivative
File: Mathlib/Algebra/Polynomial/Derivative.lean

tactic: induction k with
| zero => rw [Function.iterate_zero_apply, Nat.sub_zero]
| succ d hd =>
    rw [Function.iterate_succ_apply', Nat.sub_succ']
    exact (natDegree_derivative_le _).trans <| Nat.sub_le_sub_right hd 1
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
k : ℕ
⊢ ((⇑derivative)^[k] p).natDegree ≤ p.natDegree - k
state_after: no goals

tactic: rw [Function.iterate_zero_apply, Nat.sub_zero]
state_before: case zero
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
⊢ ((⇑derivative)^[0] p).natDegree ≤ p.natDegree - 0
state_after: no goals

tactic: rw [Function.iterate_succ_apply', Nat.sub_succ']
state_before: case succ
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
d : ℕ
hd : ((⇑derivative)^[d] p).natDegree ≤ p.natDegree - d
⊢ ((⇑derivative)^[d + 1] p).natDegree ≤ p.natDegree - (d + 1)
state_after: case succ
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
d : ℕ
hd : ((⇑derivative)^[d] p).natDegree ≤ p.natDegree - d
⊢ (derivative ((⇑derivative)^[d] p)).natDegree ≤ p.natDegree - d - 1

tactic: exact (natDegree_derivative_le _).trans <| Nat.sub_le_sub_right hd 1
state_before: case succ
R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p : R[X]
d : ℕ
hd : ((⇑derivative)^[d] p).natDegree ≤ p.natDegree - d
⊢ (derivative ((⇑derivative)^[d] p)).natDegree ≤ p.natDegree - d - 1
state_after: no goals
Theorem: SimpleGraph.IsTuranMaximal.equivalence_not_adj
File: Mathlib/Combinatorics/SimpleGraph/Turan.lean

tactic: simp
state_before: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
⊢ ∀ (x : V), ¬G.Adj x x
state_after: no goals

tactic: simp [adj_comm]
state_before: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
s t u : V
h : G.IsTuranMaximal r
⊢ ∀ {x y : V}, ¬G.Adj x y → ¬G.Adj y x
state_after: no goals
Theorem: Multiset.rel_eq
File: Mathlib/Data/Multiset/Basic.lean

tactic: constructor
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
⊢ Rel (fun x x_1 => x = x_1) s t ↔ s = t
state_after: case mp
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
⊢ Rel (fun x x_1 => x = x_1) s t → s = t

case mpr
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
⊢ s = t → Rel (fun x x_1 => x = x_1) s t

tactic: intro h
state_before: case mp
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
⊢ Rel (fun x x_1 => x = x_1) s t → s = t
state_after: case mp
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
h : Rel (fun x x_1 => x = x_1) s t
⊢ s = t

tactic: induction h <;> simp [*]
state_before: case mp
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
h : Rel (fun x x_1 => x = x_1) s t
⊢ s = t
state_after: no goals

tactic: intro h
state_before: case mpr
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
⊢ s = t → Rel (fun x x_1 => x = x_1) s t
state_after: case mpr
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
h : s = t
⊢ Rel (fun x x_1 => x = x_1) s t

tactic: subst h
state_before: case mpr
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
h : s = t
⊢ Rel (fun x x_1 => x = x_1) s t
state_after: case mpr
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r : α → β → Prop
p : γ → δ → Prop
s : Multiset α
⊢ Rel (fun x x_1 => x = x_1) s s

tactic: exact rel_eq_refl
state_before: case mpr
α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
r : α → β → Prop
p : γ → δ → Prop
s : Multiset α
⊢ Rel (fun x x_1 => x = x_1) s s
state_after: no goals
Theorem: isLUB_Ioo
File: Mathlib/Order/Bounds/Basic.lean

tactic: simpa only [dual_Ioo] using isGLB_Ioo hab.dual
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝³ : Preorder α
inst✝² : Preorder β
s t : Set α
a✝ b✝ : α
inst✝¹ : SemilatticeInf γ
inst✝ : DenselyOrdered γ
a b : γ
hab : a < b
⊢ IsLUB (Ioo a b) b
state_after: no goals
Theorem: LinearMap.toMatrixAlgEquiv_reindexRange
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: simp_rw [LinearMap.toMatrixAlgEquiv_apply, Basis.reindexRange_self, Basis.reindexRange_repr]
state_before: R : Type u_1
inst✝¹⁰ : CommSemiring R
l : Type u_2
m : Type u_3
n : Type u_4
inst✝⁹ : Fintype n
inst✝⁸ : Fintype m
inst✝⁷ : DecidableEq n
M₁ : Type u_5
M₂ : Type u_6
inst✝⁶ : AddCommMonoid M₁
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
M₃ : Type u_7
inst✝² : AddCommMonoid M₃
inst✝¹ : Module R M₃
v₃ : Basis l R M₃
inst✝ : DecidableEq M₁
f : M₁ →ₗ[R] M₁
k i : n
⊢ (toMatrixAlgEquiv v₁.reindexRange) f ⟨v₁ k, ⋯⟩ ⟨v₁ i, ⋯⟩ = (toMatrixAlgEquiv v₁) f k i
state_after: no goals
Theorem: CliffordAlgebra.reverse_ι
File: Mathlib/LinearAlgebra/CliffordAlgebra/Conjugation.lean

tactic: simp [reverse]
state_before: R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
m : M
⊢ reverse ((ι Q) m) = (ι Q) m
state_after: no goals
Theorem: Convex.vadd
File: Mathlib/Analysis/Convex/Basic.lean

tactic: simp_rw [← image_vadd, vadd_eq_add, ← singleton_add]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s : Set E
x : E
hs : Convex 𝕜 s
z : E
⊢ Convex 𝕜 (z +ᵥ s)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s : Set E
x : E
hs : Convex 𝕜 s
z : E
⊢ Convex 𝕜 ({z} + s)

tactic: exact (convex_singleton _).add hs
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s : Set E
x : E
hs : Convex 𝕜 s
z : E
⊢ Convex 𝕜 ({z} + s)
state_after: no goals
Theorem: Function.Antiperiodic.mul_const'
File: Mathlib/Algebra/Periodic.lean

tactic: simpa only [div_eq_mul_inv] using h.mul_const ha
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : DivisionSemiring α
inst✝ : Neg β
h : Antiperiodic f c
a : α
ha : a ≠ 0
⊢ Antiperiodic (fun x => f (x * a)) (c / a)
state_after: no goals
Theorem: Real.continuousAt_log_iff
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: refine ⟨?_, continuousAt_log⟩
state_before: x y : ℝ
⊢ ContinuousAt log x ↔ x ≠ 0
state_after: x y : ℝ
⊢ ContinuousAt log x → x ≠ 0

tactic: rintro h rfl
state_before: x y : ℝ
⊢ ContinuousAt log x → x ≠ 0
state_after: y : ℝ
h : ContinuousAt log 0
⊢ False

tactic: exact not_tendsto_nhds_of_tendsto_atBot tendsto_log_nhdsWithin_zero _
  (h.tendsto.mono_left inf_le_left)
state_before: y : ℝ
h : ContinuousAt log 0
⊢ False
state_after: no goals
Theorem: Multiset.noncommProd_eq_prod
File: Mathlib/Data/Finset/NoncommProd.lean

tactic: induction s using Quotient.inductionOn
state_before: F : Type u_1
ι : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
f : α✝ → β → β
op : α✝ → α✝ → α✝
inst✝³ : Monoid α✝
inst✝² : Monoid β
inst✝¹ : FunLike F α✝ β
α : Type u_6
inst✝ : CommMonoid α
s : Multiset α
⊢ s.noncommProd ⋯ = s.prod
state_after: case h
F : Type u_1
ι : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
f : α✝ → β → β
op : α✝ → α✝ → α✝
inst✝³ : Monoid α✝
inst✝² : Monoid β
inst✝¹ : FunLike F α✝ β
α : Type u_6
inst✝ : CommMonoid α
a✝ : List α
⊢ noncommProd ⟦a✝⟧ ⋯ = prod ⟦a✝⟧

tactic: simp
state_before: case h
F : Type u_1
ι : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
f : α✝ → β → β
op : α✝ → α✝ → α✝
inst✝³ : Monoid α✝
inst✝² : Monoid β
inst✝¹ : FunLike F α✝ β
α : Type u_6
inst✝ : CommMonoid α
a✝ : List α
⊢ noncommProd ⟦a✝⟧ ⋯ = prod ⟦a✝⟧
state_after: no goals
Theorem: Stream'.head_drop
File: Mathlib/Data/Stream/Init.lean

tactic: simp
state_before: α : Type u
β : Type v
δ : Type w
a : Stream' α
n : ℕ
⊢ (drop n a).head = a.get n
state_after: no goals
Theorem: ChainComplex.augment_d_succ_succ
File: Mathlib/Algebra/Homology/Augment.lean

tactic: cases i <;> rfl
state_before: V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
C : ChainComplex V ℕ
X : V
f : C.X 0 ⟶ X
w : C.d 1 0 ≫ f = 0
i j : ℕ
⊢ (C.augment f w).d (i + 1) (j + 1) = C.d i j
state_after: no goals
Theorem: div_lt_comm₀
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [div_lt_iff hb, div_lt_iff' hc]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
hb : 0 < b
hc : 0 < c
⊢ a / b < c ↔ a / c < b
state_after: no goals
Theorem: CompactExhaustion.mem_diff_shiftr_find
File: Mathlib/Topology/Compactness/SigmaCompact.lean

tactic: simp only [find_shiftr, not_le, Nat.lt_succ_self]
state_before: X : Type u_1
Y : Type u_2
ι : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
inst✝ : SigmaCompactSpace X
K : CompactExhaustion X
x : X
⊢ ¬K.shiftr.find x ≤ K.find x
state_after: no goals
Theorem: vectorSpan_empty
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: rw [vectorSpan_def, vsub_empty, Submodule.span_empty]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
⊢ vectorSpan k ∅ = ⊥
state_after: no goals
Theorem: CategoryTheory.OplaxNatTrans.whiskerRight_naturality_id
File: Mathlib/CategoryTheory/Bicategory/NaturalTransformation.lean

tactic: rw [← associator_naturality_middle, ← comp_whiskerRight_assoc, naturality_id]
state_before: B : Type u₁
inst✝¹ : Bicategory B
C : Type u₂
inst✝ : Bicategory C
F G H : OplaxFunctor B C
η : OplaxNatTrans F G
θ : OplaxNatTrans G H
a b c : B
a' : C
f : (↑G.toPrelaxFunctor).obj a ⟶ a'
⊢ η.naturality (𝟙 a) ▷ f ≫ (α_ (η.app a) ((↑G.toPrelaxFunctor).map (𝟙 a)) f).hom ≫ η.app a ◁ G.mapId a ▷ f =
    F.mapId a ▷ η.app a ▷ f ≫
      (λ_ (η.app a)).hom ▷ f ≫ (ρ_ (η.app a)).inv ▷ f ≫ (α_ (η.app a) (𝟙 ((↑G.toPrelaxFunctor).obj a)) f).hom
state_after: B : Type u₁
inst✝¹ : Bicategory B
C : Type u₂
inst✝ : Bicategory C
F G H : OplaxFunctor B C
η : OplaxNatTrans F G
θ : OplaxNatTrans G H
a b c : B
a' : C
f : (↑G.toPrelaxFunctor).obj a ⟶ a'
⊢ (F.mapId a ▷ η.app a ≫ (λ_ (η.app a)).hom ≫ (ρ_ (η.app a)).inv) ▷ f ≫
      (α_ (η.app a) (𝟙 ((↑G.toPrelaxFunctor).obj a)) f).hom =
    F.mapId a ▷ η.app a ▷ f ≫
      (λ_ (η.app a)).hom ▷ f ≫ (ρ_ (η.app a)).inv ▷ f ≫ (α_ (η.app a) (𝟙 ((↑G.toPrelaxFunctor).obj a)) f).hom

tactic: simp
state_before: B : Type u₁
inst✝¹ : Bicategory B
C : Type u₂
inst✝ : Bicategory C
F G H : OplaxFunctor B C
η : OplaxNatTrans F G
θ : OplaxNatTrans G H
a b c : B
a' : C
f : (↑G.toPrelaxFunctor).obj a ⟶ a'
⊢ (F.mapId a ▷ η.app a ≫ (λ_ (η.app a)).hom ≫ (ρ_ (η.app a)).inv) ▷ f ≫
      (α_ (η.app a) (𝟙 ((↑G.toPrelaxFunctor).obj a)) f).hom =
    F.mapId a ▷ η.app a ▷ f ≫
      (λ_ (η.app a)).hom ▷ f ≫ (ρ_ (η.app a)).inv ▷ f ≫ (α_ (η.app a) (𝟙 ((↑G.toPrelaxFunctor).obj a)) f).hom
state_after: no goals
Theorem: Polynomial.eval₂_at_zero
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: simp (config := { contextual := true }) only [eval₂_eq_sum, zero_pow_eq, mul_ite, mul_zero,
  mul_one, sum, Classical.not_not, mem_support_iff, sum_ite_eq', ite_eq_left_iff,
  RingHom.map_zero, imp_true_iff, eq_self_iff_true]
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 0 p = f (p.coeff 0)
state_after: no goals
Theorem: List.sublists'_eq_sublists'Aux
File: Mathlib/Data/List/Sublists.lean

tactic: simp only [sublists', sublists'Aux_eq_array_foldl]
state_before: α : Type u
β : Type v
γ : Type w
l : List α
⊢ l.sublists' = foldr (fun a r => sublists'Aux a r r) [[]] l
state_after: α : Type u
β : Type v
γ : Type w
l : List α
⊢ (foldr (fun a arr => Array.foldl (fun r l => r.push (a :: l)) arr arr 0) #[[]] l).toList =
    foldr (fun a r => (Array.foldl (fun r l => r.push (a :: l)) (toArray r) (toArray r) 0).toList) [[]] l

tactic: rw [← List.foldr_hom Array.toList]
state_before: α : Type u
β : Type v
γ : Type w
l : List α
⊢ (foldr (fun a arr => Array.foldl (fun r l => r.push (a :: l)) arr arr 0) #[[]] l).toList =
    foldr (fun a r => (Array.foldl (fun r l => r.push (a :: l)) (toArray r) (toArray r) 0).toList) [[]] l
state_after: α : Type u
β : Type v
γ : Type w
l : List α
⊢ foldr ?g₂ #[[]].toList l =
    foldr (fun a r => (Array.foldl (fun r l => r.push (a :: l)) (toArray r) (toArray r) 0).toList) [[]] l

case g₂
α : Type u
β : Type v
γ : Type w
l : List α
⊢ α → List (List α) → List (List α)

case H
α : Type u
β : Type v
γ : Type w
l : List α
⊢ ∀ (x : α) (y : Array (List α)), ?g₂ x y.toList = (Array.foldl (fun r l => r.push (x :: l)) y y 0).toList

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
l : List α
⊢ foldr ?g₂ #[[]].toList l =
    foldr (fun a r => (Array.foldl (fun r l => r.push (a :: l)) (toArray r) (toArray r) 0).toList) [[]] l
state_after: no goals

tactic: intros _ _
state_before: case H
α : Type u
β : Type v
γ : Type w
l : List α
⊢ ∀ (x : α) (y : Array (List α)),
    (Array.foldl (fun r l => r.push (x :: l)) (toArray y.toList) (toArray y.toList) 0).toList =
      (Array.foldl (fun r l => r.push (x :: l)) y y 0).toList
state_after: case H
α : Type u
β : Type v
γ : Type w
l : List α
x✝ : α
y✝ : Array (List α)
⊢ (Array.foldl (fun r l => r.push (x✝ :: l)) (toArray y✝.toList) (toArray y✝.toList) 0).toList =
    (Array.foldl (fun r l => r.push (x✝ :: l)) y✝ y✝ 0).toList

tactic: congr <;> simp
state_before: case H
α : Type u
β : Type v
γ : Type w
l : List α
x✝ : α
y✝ : Array (List α)
⊢ (Array.foldl (fun r l => r.push (x✝ :: l)) (toArray y✝.toList) (toArray y✝.toList) 0).toList =
    (Array.foldl (fun r l => r.push (x✝ :: l)) y✝ y✝ 0).toList
state_after: no goals
Theorem: Metric.isCobounded_iff_closedBall_compl_subset
File: Mathlib/Topology/MetricSpace/Bounded.lean

tactic: rw [← isBounded_compl_iff, isBounded_iff_subset_closedBall c]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
s✝ t : Set α
r : ℝ
s : Set α
c : α
⊢ IsCobounded s ↔ ∃ r, (closedBall c r)ᶜ ⊆ s
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
s✝ t : Set α
r : ℝ
s : Set α
c : α
⊢ (∃ r, sᶜ ⊆ closedBall c r) ↔ ∃ r, (closedBall c r)ᶜ ⊆ s

tactic: apply exists_congr
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
s✝ t : Set α
r : ℝ
s : Set α
c : α
⊢ (∃ r, sᶜ ⊆ closedBall c r) ↔ ∃ r, (closedBall c r)ᶜ ⊆ s
state_after: case h
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
s✝ t : Set α
r : ℝ
s : Set α
c : α
⊢ ∀ (a : ℝ), sᶜ ⊆ closedBall c a ↔ (closedBall c a)ᶜ ⊆ s

tactic: intro r
state_before: case h
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
s✝ t : Set α
r : ℝ
s : Set α
c : α
⊢ ∀ (a : ℝ), sᶜ ⊆ closedBall c a ↔ (closedBall c a)ᶜ ⊆ s
state_after: case h
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
s✝ t : Set α
r✝ : ℝ
s : Set α
c : α
r : ℝ
⊢ sᶜ ⊆ closedBall c r ↔ (closedBall c r)ᶜ ⊆ s

tactic: rw [compl_subset_comm]
state_before: case h
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
s✝ t : Set α
r✝ : ℝ
s : Set α
c : α
r : ℝ
⊢ sᶜ ⊆ closedBall c r ↔ (closedBall c r)ᶜ ⊆ s
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.id_whiskerLeft_symm
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp only [id_whiskerLeft, assoc, inv_hom_id, comp_id, inv_hom_id_assoc]
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X✝ Y Z X X' : C
f : X ⟶ X'
⊢ f = (λ_ X).inv ≫ 𝟙_ C ◁ f ≫ (λ_ X').hom
state_after: no goals
Theorem: Set.Finite.exists_bijOn_of_encard_eq
File: Mathlib/Data/Set/Card.lean

tactic: obtain ⟨f, hf, hinj⟩ := hs.exists_injOn_of_encard_le h.le
state_before: α : Type u_1
β : Type u_2
s✝ t✝ s : Set α
t : Set β
f : α → β
inst✝ : Nonempty β
hs : s.Finite
h : s.encard = t.encard
⊢ ∃ f, BijOn f s t
state_after: case intro.intro
α : Type u_1
β : Type u_2
s✝ t✝ s : Set α
t : Set β
f✝ : α → β
inst✝ : Nonempty β
hs : s.Finite
h : s.encard = t.encard
f : α → β
hf : s ⊆ f ⁻¹' t
hinj : InjOn f s
⊢ ∃ f, BijOn f s t

tactic: use f
state_before: case intro.intro
α : Type u_1
β : Type u_2
s✝ t✝ s : Set α
t : Set β
f✝ : α → β
inst✝ : Nonempty β
hs : s.Finite
h : s.encard = t.encard
f : α → β
hf : s ⊆ f ⁻¹' t
hinj : InjOn f s
⊢ ∃ f, BijOn f s t
state_after: case h
α : Type u_1
β : Type u_2
s✝ t✝ s : Set α
t : Set β
f✝ : α → β
inst✝ : Nonempty β
hs : s.Finite
h : s.encard = t.encard
f : α → β
hf : s ⊆ f ⁻¹' t
hinj : InjOn f s
⊢ BijOn f s t

tactic: convert hinj.bijOn_image
state_before: case h
α : Type u_1
β : Type u_2
s✝ t✝ s : Set α
t : Set β
f✝ : α → β
inst✝ : Nonempty β
hs : s.Finite
h : s.encard = t.encard
f : α → β
hf : s ⊆ f ⁻¹' t
hinj : InjOn f s
⊢ BijOn f s t
state_after: case h.e'_5
α : Type u_1
β : Type u_2
s✝ t✝ s : Set α
t : Set β
f✝ : α → β
inst✝ : Nonempty β
hs : s.Finite
h : s.encard = t.encard
f : α → β
hf : s ⊆ f ⁻¹' t
hinj : InjOn f s
⊢ t = f '' s

tactic: rw [(hs.image f).eq_of_subset_of_encard_le' (image_subset_iff.mpr hf)
  (h.symm.trans hinj.encard_image.symm).le]
state_before: case h.e'_5
α : Type u_1
β : Type u_2
s✝ t✝ s : Set α
t : Set β
f✝ : α → β
inst✝ : Nonempty β
hs : s.Finite
h : s.encard = t.encard
f : α → β
hf : s ⊆ f ⁻¹' t
hinj : InjOn f s
⊢ t = f '' s
state_after: no goals
Theorem: InnerProductGeometry.angle_sub_eq_angle_sub_rev_of_norm_eq
File: Mathlib/Geometry/Euclidean/Triangle.lean

tactic: refine Real.injOn_cos ⟨angle_nonneg _ _, angle_le_pi _ _⟩ ⟨angle_nonneg _ _, angle_le_pi _ _⟩ ?_
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ‖x‖ = ‖y‖
⊢ angle x (x - y) = angle y (y - x)
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ‖x‖ = ‖y‖
⊢ Real.cos (angle x (x - y)) = Real.cos (angle y (y - x))

tactic: rw [cos_angle, cos_angle, h, ← neg_sub, norm_neg, neg_sub, inner_sub_right, inner_sub_right,
  real_inner_self_eq_norm_mul_norm, real_inner_self_eq_norm_mul_norm, h, real_inner_comm x y]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ‖x‖ = ‖y‖
⊢ Real.cos (angle x (x - y)) = Real.cos (angle y (y - x))
state_after: no goals