1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ZMod.valMinAbs_spec
File: Mathlib/Data/ZMod/Basic.lean

tactic: rintro rfl
state_before: n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
⊢ x.valMinAbs = y → x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
state_after: n : ℕ
inst✝ : NeZero n
x : ZMod n
⊢ x = ↑x.valMinAbs ∧ x.valMinAbs * 2 ∈ Set.Ioc (-↑n) ↑n

tactic: exact ⟨x.coe_valMinAbs.symm, x.valMinAbs_mem_Ioc⟩
state_before: n : ℕ
inst✝ : NeZero n
x : ZMod n
⊢ x = ↑x.valMinAbs ∧ x.valMinAbs * 2 ∈ Set.Ioc (-↑n) ↑n
state_after: no goals

tactic: rw [← sub_eq_zero]
state_before: n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ x.valMinAbs = y
state_after: n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ x.valMinAbs - y = 0

tactic: apply @Int.eq_zero_of_abs_lt_dvd n
state_before: n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ x.valMinAbs - y = 0
state_after: case h1
n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ ↑n ∣ x.valMinAbs - y

case h2
n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ |x.valMinAbs - y| < ↑n

tactic: rw [← mul_lt_mul_right (@zero_lt_two ℤ _ _ _ _ _)]
state_before: case h2
n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ |x.valMinAbs - y| < ↑n
state_after: case h2
n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ |x.valMinAbs - y| * 2 < ↑n * 2

tactic: nth_rw 1 [← abs_eq_self.2 (@zero_le_two ℤ _ _ _ _)]
state_before: case h2
n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ |x.valMinAbs - y| * 2 < ↑n * 2
state_after: case h2
n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ |x.valMinAbs - y| * |2| < ↑n * 2

tactic: rw [← abs_mul, sub_mul, abs_lt]
state_before: case h2
n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ |x.valMinAbs - y| * |2| < ↑n * 2
state_after: case h2
n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ -(↑n * 2) < x.valMinAbs * 2 - y * 2 ∧ x.valMinAbs * 2 - y * 2 < ↑n * 2

tactic: constructor <;> linarith only [x.valMinAbs_mem_Ioc.1, x.valMinAbs_mem_Ioc.2, h.2.1, h.2.2]
state_before: case h2
n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ -(↑n * 2) < x.valMinAbs * 2 - y * 2 ∧ x.valMinAbs * 2 - y * 2 < ↑n * 2
state_after: no goals

tactic: rw [← intCast_zmod_eq_zero_iff_dvd, Int.cast_sub, coe_valMinAbs, h.1, sub_self]
state_before: case h1
n : ℕ
inst✝ : NeZero n
x : ZMod n
y : ℤ
h : x = ↑y ∧ y * 2 ∈ Set.Ioc (-↑n) ↑n
⊢ ↑n ∣ x.valMinAbs - y
state_after: no goals
Theorem: inf_sup_self
File: Mathlib/Order/Lattice.lean

tactic: simp
state_before: α : Type u
β : Type v
inst✝ : Lattice α
a b c d : α
⊢ a ⊓ (a ⊔ b) = a
state_after: no goals
Theorem: sup_iSup
File: Mathlib/Order/CompleteLattice.lean

tactic: rw [iSup_sup_eq, iSup_const]
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝¹ : CompleteLattice α
f✝ g s t : ι → α
a✝ b : α
inst✝ : Nonempty ι
f : ι → α
a : α
⊢ a ⊔ ⨆ x, f x = ⨆ x, a ⊔ f x
state_after: no goals
Theorem: Nat.Ico_zero_eq_range
File: Mathlib/Order/Interval/Finset/Nat.lean

tactic: rw [← Nat.bot_eq_zero, ← Iio_eq_Ico, Iio_eq_range]
state_before: a b c : ℕ
⊢ Ico 0 = range
state_after: no goals
Theorem: List.not_eq_key
File: Mathlib/Data/List/Sigma.lean

tactic: rwa [e] at h₁
state_before: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
a : α
l : List (Sigma β)
h₁ : a ∉ l.keys
s : Sigma β
h₂ : s ∈ l
e : a = s.fst
⊢ s.fst ∉ l.keys
state_after: no goals
Theorem: GeneralizedContinuedFraction.squashSeq_eq_self_of_terminated
File: Mathlib/Algebra/ContinuedFractions/ConvergentsEquiv.lean

tactic: change s.get? (n + 1) = none at terminated_at_succ_n
state_before: K : Type u_1
n : ℕ
g : GeneralizedContinuedFraction K
s : Stream'.Seq (Pair K)
inst✝ : DivisionRing K
terminated_at_succ_n : s.TerminatedAt (n + 1)
⊢ squashSeq s n = s
state_after: K : Type u_1
n : ℕ
g : GeneralizedContinuedFraction K
s : Stream'.Seq (Pair K)
inst✝ : DivisionRing K
terminated_at_succ_n : s.get? (n + 1) = none
⊢ squashSeq s n = s

tactic: cases s_nth_eq : s.get? n <;> simp only [*, squashSeq]
state_before: K : Type u_1
n : ℕ
g : GeneralizedContinuedFraction K
s : Stream'.Seq (Pair K)
inst✝ : DivisionRing K
terminated_at_succ_n : s.get? (n + 1) = none
⊢ squashSeq s n = s
state_after: no goals
Theorem: MvPolynomial.vars_mul
File: Mathlib/Algebra/MvPolynomial/Variables.lean

tactic: simp_rw [vars_def, ← Multiset.toFinset_add, Multiset.toFinset_subset]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
inst✝ : DecidableEq σ
φ ψ : MvPolynomial σ R
⊢ (φ * ψ).vars ⊆ φ.vars ∪ ψ.vars
state_after: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
inst✝ : DecidableEq σ
φ ψ : MvPolynomial σ R
⊢ (φ * ψ).degrees ⊆ φ.degrees + ψ.degrees

tactic: exact Multiset.subset_of_le (degrees_mul φ ψ)
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
inst✝ : DecidableEq σ
φ ψ : MvPolynomial σ R
⊢ (φ * ψ).degrees ⊆ φ.degrees + ψ.degrees
state_after: no goals
Theorem: AntilipschitzWith.to_rightInverse
File: Mathlib/Topology/MetricSpace/Antilipschitz.lean

tactic: intro x y
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f : α → β
hf : AntilipschitzWith K f
g : β → α
hg : Function.RightInverse g f
⊢ LipschitzWith K g
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f : α → β
hf : AntilipschitzWith K f
g : β → α
hg : Function.RightInverse g f
x y : β
⊢ edist (g x) (g y) ≤ ↑K * edist x y

tactic: have := hf (g x) (g y)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f : α → β
hf : AntilipschitzWith K f
g : β → α
hg : Function.RightInverse g f
x y : β
⊢ edist (g x) (g y) ≤ ↑K * edist x y
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f : α → β
hf : AntilipschitzWith K f
g : β → α
hg : Function.RightInverse g f
x y : β
this : edist (g x) (g y) ≤ ↑K * edist (f (g x)) (f (g y))
⊢ edist (g x) (g y) ≤ ↑K * edist x y

tactic: rwa [hg x, hg y] at this
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K : ℝ≥0
f : α → β
hf : AntilipschitzWith K f
g : β → α
hg : Function.RightInverse g f
x y : β
this : edist (g x) (g y) ≤ ↑K * edist (f (g x)) (f (g y))
⊢ edist (g x) (g y) ≤ ↑K * edist x y
state_after: no goals
Theorem: Submodule.span_preimage_le
File: Mathlib/LinearAlgebra/Span.lean

tactic: rw [span_le, comap_coe]
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x : M
p p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s✝ t : Set M
f : F
s : Set M₂
⊢ span R (⇑f ⁻¹' s) ≤ comap f (span R₂ s)
state_after: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x : M
p p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s✝ t : Set M
f : F
s : Set M₂
⊢ ⇑f ⁻¹' s ⊆ ⇑f ⁻¹' ↑(span R₂ s)

tactic: exact preimage_mono subset_span
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x : M
p p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s✝ t : Set M
f : F
s : Set M₂
⊢ ⇑f ⁻¹' s ⊆ ⇑f ⁻¹' ↑(span R₂ s)
state_after: no goals
Theorem: Seminorm.closedBall_finset_sup_eq_iInter
File: Mathlib/Analysis/Seminorm.lean

tactic: lift r to NNReal using hr
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
p : ι → Seminorm 𝕜 E
s : Finset ι
x : E
r : ℝ
hr : 0 ≤ r
⊢ (s.sup p).closedBall x r = ⋂ i ∈ s, (p i).closedBall x r
state_after: case intro
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
p : ι → Seminorm 𝕜 E
s : Finset ι
x : E
r : ℝ≥0
⊢ (s.sup p).closedBall x ↑r = ⋂ i ∈ s, (p i).closedBall x ↑r

tactic: simp_rw [closedBall, iInter_setOf, finset_sup_apply, NNReal.coe_le_coe, Finset.sup_le_iff, ←
  NNReal.coe_le_coe, NNReal.coe_mk]
state_before: case intro
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
p : ι → Seminorm 𝕜 E
s : Finset ι
x : E
r : ℝ≥0
⊢ (s.sup p).closedBall x ↑r = ⋂ i ∈ s, (p i).closedBall x ↑r
state_after: no goals
Theorem: CategoryTheory.Limits.pullbackZeroZeroIso_hom_fst
File: Mathlib/CategoryTheory/Limits/Constructions/ZeroObjects.lean

tactic: simp [← Iso.eq_inv_comp]
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : HasZeroObject C
inst✝¹ : HasZeroMorphisms C
X Y : C
inst✝ : HasBinaryProduct X Y
⊢ (pullbackZeroZeroIso X Y).hom ≫ prod.fst = pullback.fst
state_after: no goals
Theorem: EuclideanGeometry.left_ne_of_oangle_sign_eq_neg_one
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Affine.lean

tactic: decide
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : (∡ p₁ p₂ p₃).sign = -1
⊢ -1 ≠ 0
state_after: no goals
Theorem: StarOrderedRing.of_nonneg_iff'
File: Mathlib/Algebra/Star/Order.lean

tactic: simpa [sub_eq_iff_eq_add', sub_nonneg] using fun x y => h_nonneg_iff (y - x)
state_before: R : Type u
inst✝² : NonUnitalRing R
inst✝¹ : PartialOrder R
inst✝ : StarRing R
h_add : ∀ {x y : R}, x ≤ y → ∀ (z : R), z + x ≤ z + y
h_nonneg_iff : ∀ (x : R), 0 ≤ x ↔ ∃ s, x = star s * s
this : CovariantClass R R (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ ∀ (x y : R), x ≤ y ↔ ∃ s, y = x + star s * s
state_after: no goals
Theorem: le_one_div
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: simpa using le_inv ha hb
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
hb : 0 < b
⊢ a ≤ 1 / b ↔ b ≤ 1 / a
state_after: no goals
Theorem: mellinConvergent_of_isBigO_rpow
File: Mathlib/Analysis/MellinTransform.lean

tactic: rw [MellinConvergent,
  mellin_convergent_iff_norm Subset.rfl measurableSet_Ioi hfc.aestronglyMeasurable]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
a b : ℝ
f : ℝ → E
s : ℂ
hfc : LocallyIntegrableOn f (Ioi 0) volume
hf_top : f =O[atTop] fun x => x ^ (-a)
hs_top : s.re < a
hf_bot : f =O[𝓝[>] 0] fun x => x ^ (-b)
hs_bot : b < s.re
⊢ MellinConvergent f s
state_after: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
a b : ℝ
f : ℝ → E
s : ℂ
hfc : LocallyIntegrableOn f (Ioi 0) volume
hf_top : f =O[atTop] fun x => x ^ (-a)
hs_top : s.re < a
hf_bot : f =O[𝓝[>] 0] fun x => x ^ (-b)
hs_bot : b < s.re
⊢ IntegrableOn (fun t => t ^ (s.re - 1) * ‖f t‖) (Ioi 0) volume

tactic: exact mellin_convergent_of_isBigO_scalar hfc.norm hf_top.norm_left hs_top hf_bot.norm_left hs_bot
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
a b : ℝ
f : ℝ → E
s : ℂ
hfc : LocallyIntegrableOn f (Ioi 0) volume
hf_top : f =O[atTop] fun x => x ^ (-a)
hs_top : s.re < a
hf_bot : f =O[𝓝[>] 0] fun x => x ^ (-b)
hs_bot : b < s.re
⊢ IntegrableOn (fun t => t ^ (s.re - 1) * ‖f t‖) (Ioi 0) volume
state_after: no goals
Theorem: deriv_sqrt_mul_log
File: Mathlib/Analysis/Convex/SpecificFunctions/Deriv.lean

tactic: cases' lt_or_le 0 x with hx hx
state_before: x : ℝ
⊢ deriv (fun x => √x * log x) x = (2 + log x) / (2 * √x)
state_after: case inl
x : ℝ
hx : 0 < x
⊢ deriv (fun x => √x * log x) x = (2 + log x) / (2 * √x)

case inr
x : ℝ
hx : x ≤ 0
⊢ deriv (fun x => √x * log x) x = (2 + log x) / (2 * √x)

tactic: exact (hasDerivAt_sqrt_mul_log hx.ne').deriv
state_before: case inl
x : ℝ
hx : 0 < x
⊢ deriv (fun x => √x * log x) x = (2 + log x) / (2 * √x)
state_after: no goals

tactic: rw [sqrt_eq_zero_of_nonpos hx, mul_zero, div_zero]
state_before: case inr
x : ℝ
hx : x ≤ 0
⊢ deriv (fun x => √x * log x) x = (2 + log x) / (2 * √x)
state_after: case inr
x : ℝ
hx : x ≤ 0
⊢ deriv (fun x => √x * log x) x = 0

tactic: refine HasDerivWithinAt.deriv_eq_zero ?_ (uniqueDiffOn_Iic 0 x hx)
state_before: case inr
x : ℝ
hx : x ≤ 0
⊢ deriv (fun x => √x * log x) x = 0
state_after: case inr
x : ℝ
hx : x ≤ 0
⊢ HasDerivWithinAt (fun x => √x * log x) 0 (Iic 0) x

tactic: refine (hasDerivWithinAt_const x _ 0).congr_of_mem (fun x hx => ?_) hx
state_before: case inr
x : ℝ
hx : x ≤ 0
⊢ HasDerivWithinAt (fun x => √x * log x) 0 (Iic 0) x
state_after: case inr
x✝ : ℝ
hx✝ : x✝ ≤ 0
x : ℝ
hx : x ∈ Iic 0
⊢ √x * log x = 0

tactic: rw [sqrt_eq_zero_of_nonpos hx, zero_mul]
state_before: case inr
x✝ : ℝ
hx✝ : x✝ ≤ 0
x : ℝ
hx : x ∈ Iic 0
⊢ √x * log x = 0
state_after: no goals
Theorem: Set.kernImage_compl
File: Mathlib/Data/Set/Lattice.lean

tactic: rw [kernImage_eq_compl, compl_compl]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β
s : Set α
⊢ kernImage f sᶜ = (f '' s)ᶜ
state_after: no goals
Theorem: Finset.image₂_empty_left
File: Mathlib/Data/Finset/NAry.lean

tactic: simp
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
⊢ ↑(image₂ f ∅ t) = ↑∅
state_after: no goals
Theorem: PredOrder.limitRecOn_limit
File: Mathlib/Order/SuccPred/Limit.lean

tactic: rw [PredOrder.limitRecOn, WellFounded.fix_eq, dif_pos ha]
state_before: α : Type u_1
inst✝² : PartialOrder α
inst✝¹ : PredOrder α
a b : α
C : α → Sort u_2
inst✝ : WellFoundedGT α
H_pred : (a : α) → ¬IsMin a → C a → C (pred a)
H_lim : (a : α) → IsPredLimit a → ((b : α) → b > a → C b) → C a
ha : IsPredLimit a
⊢ PredOrder.limitRecOn a H_pred H_lim = H_lim a ha fun x x_1 => PredOrder.limitRecOn x H_pred H_lim
state_after: α : Type u_1
inst✝² : PartialOrder α
inst✝¹ : PredOrder α
a b : α
C : α → Sort u_2
inst✝ : WellFoundedGT α
H_pred : (a : α) → ¬IsMin a → C a → C (pred a)
H_lim : (a : α) → IsPredLimit a → ((b : α) → b > a → C b) → C a
ha : IsPredLimit a
⊢ (H_lim a ha fun y x =>
      ⋯.fix
        (fun a IH =>
          if h : IsPredLimit a then H_lim a h IH
          else
            let x := Classical.indefiniteDescription (fun x => ¬IsMin x ∧ pred x = a) ⋯;
            ⋯ ▸ H_pred ↑x ⋯ (IH ↑x ⋯))
        y) =
    H_lim a ha fun x x_1 => PredOrder.limitRecOn x H_pred H_lim

tactic: rfl
state_before: α : Type u_1
inst✝² : PartialOrder α
inst✝¹ : PredOrder α
a b : α
C : α → Sort u_2
inst✝ : WellFoundedGT α
H_pred : (a : α) → ¬IsMin a → C a → C (pred a)
H_lim : (a : α) → IsPredLimit a → ((b : α) → b > a → C b) → C a
ha : IsPredLimit a
⊢ (H_lim a ha fun y x =>
      ⋯.fix
        (fun a IH =>
          if h : IsPredLimit a then H_lim a h IH
          else
            let x := Classical.indefiniteDescription (fun x => ¬IsMin x ∧ pred x = a) ⋯;
            ⋯ ▸ H_pred ↑x ⋯ (IH ↑x ⋯))
        y) =
    H_lim a ha fun x x_1 => PredOrder.limitRecOn x H_pred H_lim
state_after: no goals
Theorem: AlgebraicGeometry.LocallyRingedSpace.isLocalRingHom_stalkMap_congr
File: Mathlib/Geometry/RingedSpace/LocallyRingedSpace/HasColimits.lean

tactic: rw [PresheafedSpace.stalkMap.congr_hom _ _ H.symm x]
state_before: X✝ Y✝ : LocallyRingedSpace
f✝ g✝ : X✝ ⟶ Y✝
X Y : RingedSpace
f g : X ⟶ Y
H : f = g
x : ↑↑X.toPresheafedSpace
h : IsLocalRingHom (PresheafedSpace.stalkMap f x)
⊢ IsLocalRingHom (PresheafedSpace.stalkMap g x)
state_after: X✝ Y✝ : LocallyRingedSpace
f✝ g✝ : X✝ ⟶ Y✝
X Y : RingedSpace
f g : X ⟶ Y
H : f = g
x : ↑↑X.toPresheafedSpace
h : IsLocalRingHom (PresheafedSpace.stalkMap f x)
⊢ IsLocalRingHom (eqToHom ⋯ ≫ PresheafedSpace.stalkMap f x)

tactic: infer_instance
state_before: X✝ Y✝ : LocallyRingedSpace
f✝ g✝ : X✝ ⟶ Y✝
X Y : RingedSpace
f g : X ⟶ Y
H : f = g
x : ↑↑X.toPresheafedSpace
h : IsLocalRingHom (PresheafedSpace.stalkMap f x)
⊢ IsLocalRingHom (eqToHom ⋯ ≫ PresheafedSpace.stalkMap f x)
state_after: no goals
Theorem: ArithmeticFunction.pow_apply
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: cases k
state_before: R : Type u_1
k n : ℕ
⊢ (pow k) n = if k = 0 ∧ n = 0 then 0 else n ^ k
state_after: case zero
R : Type u_1
n : ℕ
⊢ (pow 0) n = if 0 = 0 ∧ n = 0 then 0 else n ^ 0

case succ
R : Type u_1
n n✝ : ℕ
⊢ (pow (n✝ + 1)) n = if n✝ + 1 = 0 ∧ n = 0 then 0 else n ^ (n✝ + 1)

tactic: rename_i k
state_before: case succ
R : Type u_1
n n✝ : ℕ
⊢ (pow (n✝ + 1)) n = if n✝ + 1 = 0 ∧ n = 0 then 0 else n ^ (n✝ + 1)
state_after: case succ
R : Type u_1
n k : ℕ
⊢ (pow (k + 1)) n = if k + 1 = 0 ∧ n = 0 then 0 else n ^ (k + 1)

tactic: simp [pow, k.succ_pos.ne']
state_before: case succ
R : Type u_1
n k : ℕ
⊢ (pow (k + 1)) n = if k + 1 = 0 ∧ n = 0 then 0 else n ^ (k + 1)
state_after: no goals

tactic: simp [pow]
state_before: case zero
R : Type u_1
n : ℕ
⊢ (pow 0) n = if 0 = 0 ∧ n = 0 then 0 else n ^ 0
state_after: no goals
Theorem: MeasureTheory.snormEssSup_mono_measure
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

tactic: simp_rw [snormEssSup]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hμν : ν ≪ μ
⊢ snormEssSup f ν ≤ snormEssSup f μ
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hμν : ν ≪ μ
⊢ essSup (fun x => ↑‖f x‖₊) ν ≤ essSup (fun x => ↑‖f x‖₊) μ

tactic: exact essSup_mono_measure hμν
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
hμν : ν ≪ μ
⊢ essSup (fun x => ↑‖f x‖₊) ν ≤ essSup (fun x => ↑‖f x‖₊) μ
state_after: no goals
Theorem: Filter.HasBasis.uniformContinuous_iff
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: simp only [Prod.forall]
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
inst✝¹ : UniformSpace α
ι' : Sort u_2
inst✝ : UniformSpace β
p : ι → Prop
s : ι → Set (α × α)
ha : (𝓤 α).HasBasis p s
q : ι' → Prop
t : ι' → Set (β × β)
hb : (𝓤 β).HasBasis q t
f : α → β
⊢ (∀ (ib : ι'), q ib → ∃ ia, p ia ∧ ∀ x ∈ s ia, (f x.1, f x.2) ∈ t ib) ↔
    ∀ (i : ι'), q i → ∃ j, p j ∧ ∀ (x y : α), (x, y) ∈ s j → (f x, f y) ∈ t i
state_after: no goals
Theorem: MvPolynomial.esymm_isSymmetric
File: Mathlib/RingTheory/MvPolynomial/Symmetric.lean

tactic: intro
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
⊢ (esymm σ R n).IsSymmetric
state_after: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e✝ : Perm σ
⊢ (rename ⇑e✝) (esymm σ R n) = esymm σ R n

tactic: rw [rename_esymm]
state_before: σ : Type u_1
R : Type u_2
τ : Type u_3
S : Type u_4
inst✝³ : CommSemiring R
inst✝² : CommSemiring S
inst✝¹ : Fintype σ
inst✝ : Fintype τ
n : ℕ
e✝ : Perm σ
⊢ (rename ⇑e✝) (esymm σ R n) = esymm σ R n
state_after: no goals
Theorem: Fintype.finsetEquivSet_symm_apply
File: Mathlib/Data/Fintype/Basic.lean

tactic: simp [finsetEquivSet]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : Fintype α
s : Set α
inst✝ : Fintype ↑s
⊢ finsetEquivSet.symm s = s.toFinset
state_after: no goals
Theorem: Function.leftInvOn_invFunOn_of_subset_image_image
File: Mathlib/Data/Set/Function.lean

tactic: obtain ⟨-, ⟨x, hx', rfl⟩, rfl⟩ := h hx
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t : Set β
f : α → β
inst✝ : Nonempty α
h : s ⊆ invFunOn f s '' (f '' s)
x : α
hx : x ∈ s
⊢ invFunOn f s (f x) = x
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t : Set β
f : α → β
inst✝ : Nonempty α
h : s ⊆ invFunOn f s '' (f '' s)
x : α
hx' : x ∈ s
hx : invFunOn f s (f x) ∈ s
⊢ invFunOn f s (f (invFunOn f s (f x))) = invFunOn f s (f x)

tactic: rw [invFunOn_apply_eq (f := f) hx']
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t : Set β
f : α → β
inst✝ : Nonempty α
h : s ⊆ invFunOn f s '' (f '' s)
x : α
hx' : x ∈ s
hx : invFunOn f s (f x) ∈ s
⊢ invFunOn f s (f (invFunOn f s (f x))) = invFunOn f s (f x)
state_after: no goals
Theorem: Mathlib.Tactic.Ring.sub_congr
File: Mathlib/Tactic/Ring/Basic.lean

tactic: subst_vars
state_before: u : Lean.Level
R✝ : Type ?u.211390
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
R : Type u_1
inst✝ : Ring R
a a' b b' c : R
x✝² : a = a'
x✝¹ : b = b'
x✝ : a' - b' = c
⊢ a - b = c
state_after: u : Lean.Level
R✝ : Type ?u.211390
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
R : Type u_1
inst✝ : Ring R
a' b' : R
⊢ a' - b' = a' - b'

tactic: rfl
state_before: u : Lean.Level
R✝ : Type ?u.211390
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
R : Type u_1
inst✝ : Ring R
a' b' : R
⊢ a' - b' = a' - b'
state_after: no goals
Theorem: Subsemigroup.dense_induction
File: Mathlib/Algebra/Group/Subsemigroup/Basic.lean

tactic: have : ∀ x ∈ closure s, p x := fun x hx => closure_induction hx mem mul
state_before: M : Type u_1
N : Type u_2
A : Type u_3
inst✝¹ : Mul M
s✝ : Set M
inst✝ : Add A
t : Set A
S : Subsemigroup M
p : M → Prop
x : M
s : Set M
hs : closure s = ⊤
mem : ∀ x ∈ s, p x
mul : ∀ (x y : M), p x → p y → p (x * y)
⊢ p x
state_after: M : Type u_1
N : Type u_2
A : Type u_3
inst✝¹ : Mul M
s✝ : Set M
inst✝ : Add A
t : Set A
S : Subsemigroup M
p : M → Prop
x : M
s : Set M
hs : closure s = ⊤
mem : ∀ x ∈ s, p x
mul : ∀ (x y : M), p x → p y → p (x * y)
this : ∀ x ∈ closure s, p x
⊢ p x

tactic: simpa [hs] using this x
state_before: M : Type u_1
N : Type u_2
A : Type u_3
inst✝¹ : Mul M
s✝ : Set M
inst✝ : Add A
t : Set A
S : Subsemigroup M
p : M → Prop
x : M
s : Set M
hs : closure s = ⊤
mem : ∀ x ∈ s, p x
mul : ∀ (x y : M), p x → p y → p (x * y)
this : ∀ x ∈ closure s, p x
⊢ p x
state_after: no goals