1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Polynomial.scaleRoots_dvd
File: Mathlib/RingTheory/Polynomial/ScaleRoots.lean

tactic: obtain ⟨a, rfl⟩ := hpq
state_before: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝⁴ : Semiring S
inst✝³ : CommSemiring R
inst✝² : Semiring A
inst✝¹ : Field K
p q : R[X]
r : R
inst✝ : NoZeroDivisors R
hpq : p ∣ q
⊢ p.scaleRoots r ∣ q.scaleRoots r
state_after: case intro
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝⁴ : Semiring S
inst✝³ : CommSemiring R
inst✝² : Semiring A
inst✝¹ : Field K
p : R[X]
r : R
inst✝ : NoZeroDivisors R
a : R[X]
⊢ p.scaleRoots r ∣ (p * a).scaleRoots r

tactic: rw [mul_scaleRoots_of_noZeroDivisors]
state_before: case intro
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝⁴ : Semiring S
inst✝³ : CommSemiring R
inst✝² : Semiring A
inst✝¹ : Field K
p : R[X]
r : R
inst✝ : NoZeroDivisors R
a : R[X]
⊢ p.scaleRoots r ∣ (p * a).scaleRoots r
state_after: case intro
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝⁴ : Semiring S
inst✝³ : CommSemiring R
inst✝² : Semiring A
inst✝¹ : Field K
p : R[X]
r : R
inst✝ : NoZeroDivisors R
a : R[X]
⊢ p.scaleRoots r ∣ p.scaleRoots r * a.scaleRoots r

tactic: exact dvd_mul_right (scaleRoots p r) (scaleRoots a r)
state_before: case intro
R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝⁴ : Semiring S
inst✝³ : CommSemiring R
inst✝² : Semiring A
inst✝¹ : Field K
p : R[X]
r : R
inst✝ : NoZeroDivisors R
a : R[X]
⊢ p.scaleRoots r ∣ p.scaleRoots r * a.scaleRoots r
state_after: no goals
Theorem: IsLocalization.mk'_eq_zero_iff
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: rw [← (map_units S s).mul_left_inj, mk'_spec, zero_mul, map_eq_zero_iff M]
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
x : R
s : ↥M
⊢ mk' S x s = 0 ↔ ∃ m, ↑m * x = 0
state_after: no goals
Theorem: set_smul_sphere_zero
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: rw [smul_sphere' (ne_of_mem_of_not_mem hc hs), smul_zero]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set 𝕜
hs : 0 ∉ s
r : ℝ
c : 𝕜
hc : c ∈ s
⊢ c • sphere 0 r = sphere 0 (‖c‖ * r)
state_after: no goals

tactic: ext
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set 𝕜
hs : 0 ∉ s
r : ℝ
⊢ ⋃ c ∈ s, sphere 0 (‖c‖ * r) = (fun x => ‖x‖) ⁻¹' ((fun x => ‖x‖ * r) '' s)
state_after: case h
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set 𝕜
hs : 0 ∉ s
r : ℝ
x✝ : E
⊢ x✝ ∈ ⋃ c ∈ s, sphere 0 (‖c‖ * r) ↔ x✝ ∈ (fun x => ‖x‖) ⁻¹' ((fun x => ‖x‖ * r) '' s)

tactic: simp [eq_comm]
state_before: case h
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set 𝕜
hs : 0 ∉ s
r : ℝ
x✝ : E
⊢ x✝ ∈ ⋃ c ∈ s, sphere 0 (‖c‖ * r) ↔ x✝ ∈ (fun x => ‖x‖) ⁻¹' ((fun x => ‖x‖ * r) '' s)
state_after: no goals
Theorem: HasStrictDerivAt.star
File: Mathlib/Analysis/Calculus/Deriv/Star.lean

tactic: simpa using h.star.hasStrictDerivAt
state_before: 𝕜 : Type u
inst✝⁷ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
f : 𝕜 → F
inst✝⁴ : StarRing 𝕜
inst✝³ : TrivialStar 𝕜
inst✝² : StarAddMonoid F
inst✝¹ : ContinuousStar F
inst✝ : StarModule 𝕜 F
f' : F
s : Set 𝕜
x : 𝕜
L : Filter 𝕜
h : HasStrictDerivAt f f' x
⊢ HasStrictDerivAt (fun x => star (f x)) (star f') x
state_after: no goals
Theorem: Nat.cast_div_charZero
File: Mathlib/Algebra/CharZero/Lemmas.lean

tactic: rcases eq_or_ne n 0 with (rfl | hn)
state_before: R : Type u_1
inst✝³ : AddMonoidWithOne R
inst✝² : CharZero R
k : Type u_2
inst✝¹ : DivisionSemiring k
inst✝ : CharZero k
m n : ℕ
n_dvd : n ∣ m
⊢ ↑(m / n) = ↑m / ↑n
state_after: case inl
R : Type u_1
inst✝³ : AddMonoidWithOne R
inst✝² : CharZero R
k : Type u_2
inst✝¹ : DivisionSemiring k
inst✝ : CharZero k
m : ℕ
n_dvd : 0 ∣ m
⊢ ↑(m / 0) = ↑m / ↑0

case inr
R : Type u_1
inst✝³ : AddMonoidWithOne R
inst✝² : CharZero R
k : Type u_2
inst✝¹ : DivisionSemiring k
inst✝ : CharZero k
m n : ℕ
n_dvd : n ∣ m
hn : n ≠ 0
⊢ ↑(m / n) = ↑m / ↑n

tactic: simp
state_before: case inl
R : Type u_1
inst✝³ : AddMonoidWithOne R
inst✝² : CharZero R
k : Type u_2
inst✝¹ : DivisionSemiring k
inst✝ : CharZero k
m : ℕ
n_dvd : 0 ∣ m
⊢ ↑(m / 0) = ↑m / ↑0
state_after: no goals

tactic: exact cast_div n_dvd (cast_ne_zero.2 hn)
state_before: case inr
R : Type u_1
inst✝³ : AddMonoidWithOne R
inst✝² : CharZero R
k : Type u_2
inst✝¹ : DivisionSemiring k
inst✝ : CharZero k
m n : ℕ
n_dvd : n ∣ m
hn : n ≠ 0
⊢ ↑(m / n) = ↑m / ↑n
state_after: no goals
Theorem: Ordinal.sup_sequence_lt_omega1
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: apply sup_lt_ord_lift _ ho
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
α : Type u_2
inst✝ : Countable α
o : α → Ordinal.{max u_3 u_2}
ho : ∀ (n : α), o n < (aleph 1).ord
⊢ sup o < (aleph 1).ord
state_after: α✝ : Type u_1
r : α✝ → α✝ → Prop
α : Type u_2
inst✝ : Countable α
o : α → Ordinal.{max u_3 u_2}
ho : ∀ (n : α), o n < (aleph 1).ord
⊢ Cardinal.lift.{u_3, u_2} #α < (aleph 1).ord.cof

tactic: rw [Cardinal.isRegular_aleph_one.cof_eq]
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
α : Type u_2
inst✝ : Countable α
o : α → Ordinal.{max u_3 u_2}
ho : ∀ (n : α), o n < (aleph 1).ord
⊢ Cardinal.lift.{u_3, u_2} #α < (aleph 1).ord.cof
state_after: α✝ : Type u_1
r : α✝ → α✝ → Prop
α : Type u_2
inst✝ : Countable α
o : α → Ordinal.{max u_3 u_2}
ho : ∀ (n : α), o n < (aleph 1).ord
⊢ Cardinal.lift.{u_3, u_2} #α < aleph 1

tactic: exact lt_of_le_of_lt mk_le_aleph0 aleph0_lt_aleph_one
state_before: α✝ : Type u_1
r : α✝ → α✝ → Prop
α : Type u_2
inst✝ : Countable α
o : α → Ordinal.{max u_3 u_2}
ho : ∀ (n : α), o n < (aleph 1).ord
⊢ Cardinal.lift.{u_3, u_2} #α < aleph 1
state_after: no goals
Theorem: nhds_basis_Ioo'
File: Mathlib/Topology/Order/Basic.lean

tactic: simp
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
a : α
hl : ∃ l, l < a
hu : ∃ u, a < u
s : Set α
⊢ (∃ l u, a ∈ Ioo l u ∧ Ioo l u ⊆ s) ↔ ∃ i, (i.1 < a ∧ a < i.2) ∧ Ioo i.1 i.2 ⊆ s
state_after: no goals
Theorem: SimpleGraph.Subgraph.le_induce_union_left
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: exact (sup_le_iff.mp le_induce_union).1
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' G'' : G.Subgraph
s s' : Set V
⊢ G'.induce s ≤ G'.induce (s ∪ s')
state_after: no goals
Theorem: gauge_pos
File: Mathlib/Analysis/Convex/Gauge.lean

tactic: simp only [(gauge_nonneg _).gt_iff_ne, Ne, gauge_eq_zero hs hb]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
s t : Set E
x : E
a : ℝ
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
hs : Absorbent ℝ s
hb : Bornology.IsVonNBounded ℝ s
⊢ 0 < gauge s x ↔ x ≠ 0
state_after: no goals
Theorem: Turing.TM2to1.addBottom_nth_snd
File: Mathlib/Computability/TuringMachine.lean

tactic: conv => rhs; rw [← addBottom_map L, ListBlank.nth_map]
state_before: K : Type u_1
inst✝² : DecidableEq K
Γ : K → Type u_2
Λ : Type u_3
inst✝¹ : Inhabited Λ
σ : Type u_4
inst✝ : Inhabited σ
L : ListBlank ((k : K) → Option (Γ k))
n : ℕ
⊢ ((addBottom L).nth n).2 = L.nth n
state_after: no goals
Theorem: Fin.cons_zero
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: simp [cons]
state_before: m n : ℕ
α : Fin (n + 1) → Type u
x : α 0
q : (i : Fin (n + 1)) → α i
p : (i : Fin n) → α i.succ
i : Fin n
y : α i.succ
z : α 0
⊢ cons x p 0 = x
state_after: no goals
Theorem: continuous_tsum
File: Mathlib/Analysis/NormedSpace/FunctionSeries.lean

tactic: simp_rw [continuous_iff_continuousOn_univ] at hf ⊢
state_before: α : Type u_1
β : Type u_2
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : CompleteSpace F
u : α → ℝ
inst✝ : TopologicalSpace β
f : α → β → F
hf : ∀ (i : α), Continuous (f i)
hu : Summable u
hfu : ∀ (n : α) (x : β), ‖f n x‖ ≤ u n
⊢ Continuous fun x => ∑' (n : α), f n x
state_after: α : Type u_1
β : Type u_2
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : CompleteSpace F
u : α → ℝ
inst✝ : TopologicalSpace β
f : α → β → F
hu : Summable u
hfu : ∀ (n : α) (x : β), ‖f n x‖ ≤ u n
hf : ∀ (i : α), ContinuousOn (f i) univ
⊢ ContinuousOn (fun x => ∑' (n : α), f n x) univ

tactic: exact continuousOn_tsum hf hu fun n x _ => hfu n x
state_before: α : Type u_1
β : Type u_2
F : Type u_3
inst✝² : NormedAddCommGroup F
inst✝¹ : CompleteSpace F
u : α → ℝ
inst✝ : TopologicalSpace β
f : α → β → F
hu : Summable u
hfu : ∀ (n : α) (x : β), ‖f n x‖ ≤ u n
hf : ∀ (i : α), ContinuousOn (f i) univ
⊢ ContinuousOn (fun x => ∑' (n : α), f n x) univ
state_after: no goals
Theorem: LinearMap.ker_pi
File: Mathlib/LinearAlgebra/Pi.lean

tactic: ext c
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
ι' : Type x'
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : AddCommMonoid M₃
inst✝² : Module R M₃
φ : ι → Type i
inst✝¹ : (i : ι) → AddCommMonoid (φ i)
inst✝ : (i : ι) → Module R (φ i)
f : (i : ι) → M₂ →ₗ[R] φ i
⊢ ker (pi f) = ⨅ i, ker (f i)
state_after: case h
R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
ι' : Type x'
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : AddCommMonoid M₃
inst✝² : Module R M₃
φ : ι → Type i
inst✝¹ : (i : ι) → AddCommMonoid (φ i)
inst✝ : (i : ι) → Module R (φ i)
f : (i : ι) → M₂ →ₗ[R] φ i
c : M₂
⊢ c ∈ ker (pi f) ↔ c ∈ ⨅ i, ker (f i)

tactic: simp [funext_iff]
state_before: case h
R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
ι' : Type x'
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : AddCommMonoid M₃
inst✝² : Module R M₃
φ : ι → Type i
inst✝¹ : (i : ι) → AddCommMonoid (φ i)
inst✝ : (i : ι) → Module R (φ i)
f : (i : ι) → M₂ →ₗ[R] φ i
c : M₂
⊢ c ∈ ker (pi f) ↔ c ∈ ⨅ i, ker (f i)
state_after: no goals
Theorem: Multiset.monotone_filter_right
File: Mathlib/Data/Multiset/Basic.lean

tactic: simpa using h
state_before: α : Type u_1
β : Type v
γ : Type u_2
p✝ : α → Prop
inst✝² : DecidablePred p✝
s : Multiset α
p q : α → Prop
inst✝¹ : DecidablePred p
inst✝ : DecidablePred q
h : ∀ (b : α), p b → q b
l : List α
⊢ ∀ (a : α), decide (p a) = true → decide (q a) = true
state_after: no goals
Theorem: List.zipRight_eq_zipRight'
File: Mathlib/Data/List/Basic.lean

tactic: induction as generalizing bs <;> cases bs <;> simp [*]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
as : List α
b : β
bs : List β
⊢ as.zipRight bs = (as.zipRight' bs).1
state_after: no goals
Theorem: CauSeq.not_limZero_of_not_congr_zero
File: Mathlib/Algebra/Order/CauSeq/Basic.lean

tactic: intro h
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f : CauSeq β abv
hf : ¬f ≈ 0
⊢ ¬f.LimZero
state_after: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f : CauSeq β abv
hf : ¬f ≈ 0
h : f.LimZero
⊢ False

tactic: have : LimZero (f - 0) := by simp [h]
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f : CauSeq β abv
hf : ¬f ≈ 0
h : f.LimZero
⊢ False
state_after: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f : CauSeq β abv
hf : ¬f ≈ 0
h : f.LimZero
this : (f - 0).LimZero
⊢ False

tactic: exact hf this
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f : CauSeq β abv
hf : ¬f ≈ 0
h : f.LimZero
this : (f - 0).LimZero
⊢ False
state_after: no goals

tactic: simp [h]
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f : CauSeq β abv
hf : ¬f ≈ 0
h : f.LimZero
⊢ (f - 0).LimZero
state_after: no goals
Theorem: List.getLast_congr
File: Mathlib/Data/List/Basic.lean

tactic: subst l₁
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h₁ : l₁ ≠ []
h₂ : l₂ ≠ []
h₃ : l₁ = l₂
⊢ l₁.getLast h₁ = l₂.getLast h₂
state_after: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂✝ l₂ : List α
h₂ h₁ : l₂ ≠ []
⊢ l₂.getLast h₁ = l₂.getLast h₂

tactic: rfl
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂✝ l₂ : List α
h₂ h₁ : l₂ ≠ []
⊢ l₂.getLast h₁ = l₂.getLast h₂
state_after: no goals
Theorem: LinearEquiv.rTensor_pow
File: Mathlib/LinearAlgebra/TensorProduct/Basic.lean

tactic: simpa only [one_pow] using TensorProduct.congr_pow f (1 : N ≃ₗ[R] N) n
state_before: R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type u_2
inst✝¹⁵ : Monoid R'
R'' : Type u_3
inst✝¹⁴ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : AddCommMonoid T
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Module R S
inst✝² : Module R T
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
g : P ≃ₗ[R] Q
f✝ : N ≃ₗ[R] P
m : M
n✝ : N
p : P
x : M ⊗[R] N
y : N ⊗[R] M
f : M ≃ₗ[R] M
n : ℕ
⊢ rTensor N f ^ n = rTensor N (f ^ n)
state_after: no goals
Theorem: Set.MapsTo.perm_pow
File: Mathlib/GroupTheory/Perm/Basic.lean

tactic: simp_rw [Equiv.Perm.coe_pow]
state_before: α : Type u_1
f : Perm α
s : Set α
⊢ MapsTo (⇑f) s s → ∀ (n : ℕ), MapsTo (⇑(f ^ n)) s s
state_after: α : Type u_1
f : Perm α
s : Set α
⊢ MapsTo (⇑f) s s → ∀ (n : ℕ), MapsTo (⇑f)^[n] s s

tactic: exact MapsTo.iterate
state_before: α : Type u_1
f : Perm α
s : Set α
⊢ MapsTo (⇑f) s s → ∀ (n : ℕ), MapsTo (⇑f)^[n] s s
state_after: no goals
Theorem: MeasureTheory.OuterMeasure.trim_eq_trim_iff
File: Mathlib/MeasureTheory/OuterMeasure/Induced.lean

tactic: simp only [le_antisymm_iff, trim_le_trim_iff, forall_and]
state_before: α : Type u_1
inst✝ : MeasurableSpace α
m m₁ m₂ : OuterMeasure α
⊢ m₁.trim = m₂.trim ↔ ∀ (s : Set α), MeasurableSet s → m₁ s = m₂ s
state_after: no goals
Theorem: Nat.cast_add
File: Mathlib/Data/Nat/Cast/Defs.lean

tactic: induction n with
| zero => simp
| succ n ih => rw [add_succ, cast_succ, ih, cast_succ, add_assoc]
state_before: R : Type u_1
inst✝ : AddMonoidWithOne R
m n : ℕ
⊢ ↑(m + n) = ↑m + ↑n
state_after: no goals

tactic: simp
state_before: case zero
R : Type u_1
inst✝ : AddMonoidWithOne R
m : ℕ
⊢ ↑(m + 0) = ↑m + ↑0
state_after: no goals

tactic: rw [add_succ, cast_succ, ih, cast_succ, add_assoc]
state_before: case succ
R : Type u_1
inst✝ : AddMonoidWithOne R
m n : ℕ
ih : ↑(m + n) = ↑m + ↑n
⊢ ↑(m + (n + 1)) = ↑m + ↑(n + 1)
state_after: no goals
Theorem: fderivWithin_zero_of_not_differentiableWithinAt
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

tactic: have : ¬∃ f', HasFDerivWithinAt f f' s x := h
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
h : ¬DifferentiableWithinAt 𝕜 f s x
⊢ fderivWithin 𝕜 f s x = 0
state_after: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
h : ¬DifferentiableWithinAt 𝕜 f s x
this : ¬∃ f', HasFDerivWithinAt f f' s x
⊢ fderivWithin 𝕜 f s x = 0

tactic: simp [fderivWithin, this]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
h : ¬DifferentiableWithinAt 𝕜 f s x
this : ¬∃ f', HasFDerivWithinAt f f' s x
⊢ fderivWithin 𝕜 f s x = 0
state_after: no goals
Theorem: EllipticCurve.variableChange_j
File: Mathlib/AlgebraicGeometry/EllipticCurve/Weierstrass.lean

tactic: rw [j, coe_inv_variableChange_Δ', Units.val_mul, Units.val_pow_eq_pow_val,
  variableChange_toWeierstrassCurve, WeierstrassCurve.variableChange_c₄]
state_before: R : Type u
inst✝ : CommRing R
E : EllipticCurve R
C : WeierstrassCurve.VariableChange R
⊢ (E.variableChange C).j = E.j
state_after: R : Type u
inst✝ : CommRing R
E : EllipticCurve R
C : WeierstrassCurve.VariableChange R
⊢ ↑C.u ^ 12 * ↑E.Δ'⁻¹ * (↑C.u⁻¹ ^ 4 * E.c₄) ^ 3 = E.j

tactic: have hu : (C.u * C.u⁻¹ : R) ^ 12 = 1 := by rw [C.u.mul_inv, one_pow]
state_before: R : Type u
inst✝ : CommRing R
E : EllipticCurve R
C : WeierstrassCurve.VariableChange R
⊢ ↑C.u ^ 12 * ↑E.Δ'⁻¹ * (↑C.u⁻¹ ^ 4 * E.c₄) ^ 3 = E.j
state_after: R : Type u
inst✝ : CommRing R
E : EllipticCurve R
C : WeierstrassCurve.VariableChange R
hu : (↑C.u * ↑C.u⁻¹) ^ 12 = 1
⊢ ↑C.u ^ 12 * ↑E.Δ'⁻¹ * (↑C.u⁻¹ ^ 4 * E.c₄) ^ 3 = E.j

tactic: linear_combination (norm := (rw [j]; ring1)) E.j * hu
state_before: R : Type u
inst✝ : CommRing R
E : EllipticCurve R
C : WeierstrassCurve.VariableChange R
hu : (↑C.u * ↑C.u⁻¹) ^ 12 = 1
⊢ ↑C.u ^ 12 * ↑E.Δ'⁻¹ * (↑C.u⁻¹ ^ 4 * E.c₄) ^ 3 = E.j
state_after: no goals

tactic: rw [C.u.mul_inv, one_pow]
state_before: R : Type u
inst✝ : CommRing R
E : EllipticCurve R
C : WeierstrassCurve.VariableChange R
⊢ (↑C.u * ↑C.u⁻¹) ^ 12 = 1
state_after: no goals

tactic: rw [j]
state_before: case a
R : Type u
inst✝ : CommRing R
E : EllipticCurve R
C : WeierstrassCurve.VariableChange R
hu : (↑C.u * ↑C.u⁻¹) ^ 12 = 1
⊢ ↑C.u ^ 12 * ↑E.Δ'⁻¹ * (↑C.u⁻¹ ^ 4 * E.c₄) ^ 3 - E.j - (E.j * (↑C.u * ↑C.u⁻¹) ^ 12 - E.j * 1) = 0
state_after: case a
R : Type u
inst✝ : CommRing R
E : EllipticCurve R
C : WeierstrassCurve.VariableChange R
hu : (↑C.u * ↑C.u⁻¹) ^ 12 = 1
⊢ ↑C.u ^ 12 * ↑E.Δ'⁻¹ * (↑C.u⁻¹ ^ 4 * E.c₄) ^ 3 - ↑E.Δ'⁻¹ * E.c₄ ^ 3 -
      (↑E.Δ'⁻¹ * E.c₄ ^ 3 * (↑C.u * ↑C.u⁻¹) ^ 12 - ↑E.Δ'⁻¹ * E.c₄ ^ 3 * 1) =
    0

tactic: ring1
state_before: case a
R : Type u
inst✝ : CommRing R
E : EllipticCurve R
C : WeierstrassCurve.VariableChange R
hu : (↑C.u * ↑C.u⁻¹) ^ 12 = 1
⊢ ↑C.u ^ 12 * ↑E.Δ'⁻¹ * (↑C.u⁻¹ ^ 4 * E.c₄) ^ 3 - ↑E.Δ'⁻¹ * E.c₄ ^ 3 -
      (↑E.Δ'⁻¹ * E.c₄ ^ 3 * (↑C.u * ↑C.u⁻¹) ^ 12 - ↑E.Δ'⁻¹ * E.c₄ ^ 3 * 1) =
    0
state_after: no goals
Theorem: dist_pi_le_iff'
File: Mathlib/Topology/MetricSpace/Pseudo/Constructions.lean

tactic: by_cases hr : 0 ≤ r
state_before: α : Type u_1
β : Type u_2
inst✝³ : PseudoMetricSpace α
π : β → Type u_3
inst✝² : Fintype β
inst✝¹ : (b : β) → PseudoMetricSpace (π b)
inst✝ : Nonempty β
f g : (b : β) → π b
r : ℝ
⊢ dist f g ≤ r ↔ ∀ (b : β), dist (f b) (g b) ≤ r
state_after: case pos
α : Type u_1
β : Type u_2
inst✝³ : PseudoMetricSpace α
π : β → Type u_3
inst✝² : Fintype β
inst✝¹ : (b : β) → PseudoMetricSpace (π b)
inst✝ : Nonempty β
f g : (b : β) → π b
r : ℝ
hr : 0 ≤ r
⊢ dist f g ≤ r ↔ ∀ (b : β), dist (f b) (g b) ≤ r

case neg
α : Type u_1
β : Type u_2
inst✝³ : PseudoMetricSpace α
π : β → Type u_3
inst✝² : Fintype β
inst✝¹ : (b : β) → PseudoMetricSpace (π b)
inst✝ : Nonempty β
f g : (b : β) → π b
r : ℝ
hr : ¬0 ≤ r
⊢ dist f g ≤ r ↔ ∀ (b : β), dist (f b) (g b) ≤ r

tactic: exact dist_pi_le_iff hr
state_before: case pos
α : Type u_1
β : Type u_2
inst✝³ : PseudoMetricSpace α
π : β → Type u_3
inst✝² : Fintype β
inst✝¹ : (b : β) → PseudoMetricSpace (π b)
inst✝ : Nonempty β
f g : (b : β) → π b
r : ℝ
hr : 0 ≤ r
⊢ dist f g ≤ r ↔ ∀ (b : β), dist (f b) (g b) ≤ r
state_after: no goals

tactic: exact iff_of_false (fun h => hr <| dist_nonneg.trans h) fun h =>
  hr <| dist_nonneg.trans <| h <| Classical.arbitrary _
state_before: case neg
α : Type u_1
β : Type u_2
inst✝³ : PseudoMetricSpace α
π : β → Type u_3
inst✝² : Fintype β
inst✝¹ : (b : β) → PseudoMetricSpace (π b)
inst✝ : Nonempty β
f g : (b : β) → π b
r : ℝ
hr : ¬0 ≤ r
⊢ dist f g ≤ r ↔ ∀ (b : β), dist (f b) (g b) ≤ r
state_after: no goals
Theorem: WithTop.sum_eq_top_iff
File: Mathlib/Algebra/BigOperators/WithTop.lean

tactic: induction s using Finset.cons_induction <;> simp [*]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : AddCommMonoid α
inst✝ : LT α
s : Finset ι
f : ι → WithTop α
⊢ ∑ i ∈ s, f i = ⊤ ↔ ∃ i ∈ s, f i = ⊤
state_after: no goals
Theorem: Function.extend_def
File: Mathlib/Logic/Function/Basic.lean

tactic: unfold extend
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f✝ f : α → β
g : α → γ
e' : β → γ
b : β
inst✝ : Decidable (∃ a, f a = b)
⊢ extend f g e' b = if h : ∃ a, f a = b then g (Classical.choose h) else e' b
state_after: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f✝ f : α → β
g : α → γ
e' : β → γ
b : β
inst✝ : Decidable (∃ a, f a = b)
⊢ (if h : ∃ a, f a = b then g (Classical.choose h) else e' b) =
    if h : ∃ a, f a = b then g (Classical.choose h) else e' b

tactic: congr
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f✝ f : α → β
g : α → γ
e' : β → γ
b : β
inst✝ : Decidable (∃ a, f a = b)
⊢ (if h : ∃ a, f a = b then g (Classical.choose h) else e' b) =
    if h : ∃ a, f a = b then g (Classical.choose h) else e' b
state_after: no goals
Theorem: MeasureTheory.AEEqFun.coeFn_pair
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

tactic: rw [pair_eq_mk]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
g : α →ₘ[μ] γ
⊢ ↑(f.pair g) =ᶠ[ae μ] fun x => (↑f x, ↑g x)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
g : α →ₘ[μ] γ
⊢ ↑(mk (fun x => (↑f x, ↑g x)) ⋯) =ᶠ[ae μ] fun x => (↑f x, ↑g x)

tactic: apply coeFn_mk
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
g : α →ₘ[μ] γ
⊢ ↑(mk (fun x => (↑f x, ↑g x)) ⋯) =ᶠ[ae μ] fun x => (↑f x, ↑g x)
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.Point.toAffine_some
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: simp only [toAffine_of_Z_ne_zero h one_ne_zero, fin3_def_ext, one_pow, div_one]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
X Y : F
h : W.Nonsingular ![X, Y, 1]
⊢ toAffine W ![X, Y, 1] = Affine.Point.some ⋯
state_after: no goals
Theorem: String.Iterator.Valid.remainingBytes_le
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: simp [h.remainingBytes, h.toString, Nat.le_add_left]
state_before: x✝ : Iterator
h✝ : x✝.Valid
l r : List Char
h : ValidFor l r x✝
⊢ x✝.remainingBytes ≤ x✝.s.utf8ByteSize
state_after: no goals
Theorem: Matrix.det_updateColumn_eq_zero
File: Mathlib/LinearAlgebra/Matrix/Determinant/Basic.lean

tactic: simp [h]
state_before: m : Type u_1
n : Type u_2
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
R : Type v
inst✝ : CommRing R
M : Matrix n n R
i j : n
h : i ≠ j
⊢ ∀ (k : n), M.updateColumn j (fun k => M k i) k i = M.updateColumn j (fun k => M k i) k j
state_after: no goals
Theorem: Nat.two_pow_succ
File: Mathlib/Data/Nat/Defs.lean

tactic: simp [Nat.pow_succ, Nat.mul_two]
state_before: a b c d m n✝ k : ℕ
p q : ℕ → Prop
n : ℕ
⊢ 2 ^ (n + 1) = 2 ^ n + 2 ^ n
state_after: no goals