1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Cauchy.ultrafilter_of
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: haveI := h.1
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
l : Filter α
h : Cauchy l
⊢ Cauchy ↑(Ultrafilter.of l)
state_after: α : Type u
β : Type v
uniformSpace : UniformSpace α
l : Filter α
h : Cauchy l
this : l.NeBot
⊢ Cauchy ↑(Ultrafilter.of l)

tactic: have := Ultrafilter.of_le l
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
l : Filter α
h : Cauchy l
this : l.NeBot
⊢ Cauchy ↑(Ultrafilter.of l)
state_after: α : Type u
β : Type v
uniformSpace : UniformSpace α
l : Filter α
h : Cauchy l
this✝ : l.NeBot
this : ↑(Ultrafilter.of l) ≤ l
⊢ Cauchy ↑(Ultrafilter.of l)

tactic: exact ⟨Ultrafilter.neBot _, (Filter.prod_mono this this).trans h.2⟩
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
l : Filter α
h : Cauchy l
this✝ : l.NeBot
this : ↑(Ultrafilter.of l) ≤ l
⊢ Cauchy ↑(Ultrafilter.of l)
state_after: no goals
Theorem: Real.sqrt_lt'
File: Mathlib/Data/Real/Sqrt.lean

tactic: rw [← sqrt_lt_sqrt_iff_of_pos (pow_pos hy _), sqrt_sq hy.le]
state_before: x y : ℝ
hy : 0 < y
⊢ √x < y ↔ x < y ^ 2
state_after: no goals
Theorem: IntermediateField.mem_adjoin_iff
File: Mathlib/FieldTheory/Adjoin.lean

tactic: simp only [adjoin, mem_mk, Subring.mem_toSubsemiring, Subfield.mem_toSubring,
  Subfield.mem_closure_iff, ← Algebra.adjoin_eq_ring_closure, Subalgebra.mem_toSubring,
  Algebra.adjoin_eq_range, AlgHom.mem_range, exists_exists_eq_and]
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
x : E
⊢ x ∈ adjoin F S ↔ ∃ r s, x = (MvPolynomial.aeval Subtype.val) r / (MvPolynomial.aeval Subtype.val) s
state_after: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
x : E
⊢ (∃ a a_1, (MvPolynomial.aeval Subtype.val) a / (MvPolynomial.aeval Subtype.val) a_1 = x) ↔
    ∃ r s, x = (MvPolynomial.aeval Subtype.val) r / (MvPolynomial.aeval Subtype.val) s

tactic: tauto
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
x : E
⊢ (∃ a a_1, (MvPolynomial.aeval Subtype.val) a / (MvPolynomial.aeval Subtype.val) a_1 = x) ↔
    ∃ r s, x = (MvPolynomial.aeval Subtype.val) r / (MvPolynomial.aeval Subtype.val) s
state_after: no goals
Theorem: Real.differentiableWithinAt_arcsin_Ici
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/InverseDeriv.lean

tactic: refine ⟨?_, fun h => (hasDerivWithinAt_arcsin_Ici h).differentiableWithinAt⟩
state_before: x : ℝ
⊢ DifferentiableWithinAt ℝ arcsin (Ici x) x ↔ x ≠ -1
state_after: x : ℝ
⊢ DifferentiableWithinAt ℝ arcsin (Ici x) x → x ≠ -1

tactic: rintro h rfl
state_before: x : ℝ
⊢ DifferentiableWithinAt ℝ arcsin (Ici x) x → x ≠ -1
state_after: h : DifferentiableWithinAt ℝ arcsin (Ici (-1)) (-1)
⊢ False

tactic: have : sin ∘ arcsin =ᶠ[𝓝[≥] (-1 : ℝ)] id := by
  filter_upwards [Icc_mem_nhdsWithin_Ici ⟨le_rfl, neg_lt_self (zero_lt_one' ℝ)⟩] with x using
    sin_arcsin'
state_before: h : DifferentiableWithinAt ℝ arcsin (Ici (-1)) (-1)
⊢ False
state_after: h : DifferentiableWithinAt ℝ arcsin (Ici (-1)) (-1)
this : sin ∘ arcsin =ᶠ[𝓝[≥] (-1)] id
⊢ False

tactic: have := h.hasDerivWithinAt.sin.congr_of_eventuallyEq this.symm (by simp)
state_before: h : DifferentiableWithinAt ℝ arcsin (Ici (-1)) (-1)
this : sin ∘ arcsin =ᶠ[𝓝[≥] (-1)] id
⊢ False
state_after: h : DifferentiableWithinAt ℝ arcsin (Ici (-1)) (-1)
this✝ : sin ∘ arcsin =ᶠ[𝓝[≥] (-1)] id
this : HasDerivWithinAt id (cos (arcsin (-1)) * derivWithin arcsin (Ici (-1)) (-1)) (Ici (-1)) (-1)
⊢ False

tactic: simpa using (uniqueDiffOn_Ici _ _ left_mem_Ici).eq_deriv _ this (hasDerivWithinAt_id _ _)
state_before: h : DifferentiableWithinAt ℝ arcsin (Ici (-1)) (-1)
this✝ : sin ∘ arcsin =ᶠ[𝓝[≥] (-1)] id
this : HasDerivWithinAt id (cos (arcsin (-1)) * derivWithin arcsin (Ici (-1)) (-1)) (Ici (-1)) (-1)
⊢ False
state_after: no goals

tactic: filter_upwards [Icc_mem_nhdsWithin_Ici ⟨le_rfl, neg_lt_self (zero_lt_one' ℝ)⟩] with x using
  sin_arcsin'
state_before: h : DifferentiableWithinAt ℝ arcsin (Ici (-1)) (-1)
⊢ sin ∘ arcsin =ᶠ[𝓝[≥] (-1)] id
state_after: no goals

tactic: simp
state_before: h : DifferentiableWithinAt ℝ arcsin (Ici (-1)) (-1)
this : sin ∘ arcsin =ᶠ[𝓝[≥] (-1)] id
⊢ id (-1) = sin (arcsin (-1))
state_after: no goals
Theorem: isNilpotent_of_pos_nilpotencyClass
File: Mathlib/RingTheory/Nilpotent/Defs.lean

tactic: let s : Set ℕ := {k | x ^ k = 0}
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝¹ : Zero R
inst✝ : Pow R ℕ
hx : 0 < nilpotencyClass x
⊢ IsNilpotent x
state_after: R : Type u_1
S : Type u_2
x y : R
inst✝¹ : Zero R
inst✝ : Pow R ℕ
hx : 0 < nilpotencyClass x
s : Set ℕ := {k | x ^ k = 0}
⊢ IsNilpotent x

tactic: change s.Nonempty
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝¹ : Zero R
inst✝ : Pow R ℕ
hx : 0 < nilpotencyClass x
s : Set ℕ := {k | x ^ k = 0}
⊢ IsNilpotent x
state_after: R : Type u_1
S : Type u_2
x y : R
inst✝¹ : Zero R
inst✝ : Pow R ℕ
hx : 0 < nilpotencyClass x
s : Set ℕ := {k | x ^ k = 0}
⊢ s.Nonempty

tactic: change 0 < sInf s at hx
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝¹ : Zero R
inst✝ : Pow R ℕ
hx : 0 < nilpotencyClass x
s : Set ℕ := {k | x ^ k = 0}
⊢ s.Nonempty
state_after: R : Type u_1
S : Type u_2
x y : R
inst✝¹ : Zero R
inst✝ : Pow R ℕ
s : Set ℕ := {k | x ^ k = 0}
hx : 0 < sInf s
⊢ s.Nonempty

tactic: by_contra contra
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝¹ : Zero R
inst✝ : Pow R ℕ
s : Set ℕ := {k | x ^ k = 0}
hx : 0 < sInf s
⊢ s.Nonempty
state_after: R : Type u_1
S : Type u_2
x y : R
inst✝¹ : Zero R
inst✝ : Pow R ℕ
s : Set ℕ := {k | x ^ k = 0}
hx : 0 < sInf s
contra : ¬s.Nonempty
⊢ False

tactic: simp [not_nonempty_iff_eq_empty.mp contra] at hx
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝¹ : Zero R
inst✝ : Pow R ℕ
s : Set ℕ := {k | x ^ k = 0}
hx : 0 < sInf s
contra : ¬s.Nonempty
⊢ False
state_after: no goals
Theorem: convex_iff_pointwise_add_subset
File: Mathlib/Analysis/Convex/Basic.lean

tactic: rintro hA a b ha hb hab w ⟨au, ⟨u, hu, rfl⟩, bv, ⟨v, hv, rfl⟩, rfl⟩
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✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x : E
⊢ Convex 𝕜 s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → a • s + b • s ⊆ s
state_after: case intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x : E
hA : Convex 𝕜 s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
u : E
hu : u ∈ s
v : E
hv : v ∈ s
⊢ (fun x x_1 => x + x_1) ((fun x => a • x) u) ((fun x => b • x) v) ∈ s

tactic: exact hA hu hv ha hb hab
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x : E
hA : Convex 𝕜 s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
u : E
hu : u ∈ s
v : E
hv : v ∈ s
⊢ (fun x x_1 => x + x_1) ((fun x => a • x) u) ((fun x => b • x) v) ∈ s
state_after: no goals
Theorem: Equiv.Perm.disjoint_mul_inv_of_mem_cycleFactorsFinset
File: Mathlib/GroupTheory/Perm/Cycle/Factors.lean

tactic: rw [mem_cycleFactorsFinset_iff] at h
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f ∈ g.cycleFactorsFinset
⊢ (g * f⁻¹).Disjoint f
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f.IsCycle ∧ ∀ a ∈ f.support, f a = g a
⊢ (g * f⁻¹).Disjoint f

tactic: intro x
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f.IsCycle ∧ ∀ a ∈ f.support, f a = g a
⊢ (g * f⁻¹).Disjoint f
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f.IsCycle ∧ ∀ a ∈ f.support, f a = g a
x : α
⊢ (g * f⁻¹) x = x ∨ f x = x

tactic: by_cases hx : f x = x
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f.IsCycle ∧ ∀ a ∈ f.support, f a = g a
x : α
⊢ (g * f⁻¹) x = x ∨ f x = x
state_after: case pos
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f.IsCycle ∧ ∀ a ∈ f.support, f a = g a
x : α
hx : f x = x
⊢ (g * f⁻¹) x = x ∨ f x = x

case neg
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f.IsCycle ∧ ∀ a ∈ f.support, f a = g a
x : α
hx : ¬f x = x
⊢ (g * f⁻¹) x = x ∨ f x = x

tactic: exact Or.inr hx
state_before: case pos
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f.IsCycle ∧ ∀ a ∈ f.support, f a = g a
x : α
hx : f x = x
⊢ (g * f⁻¹) x = x ∨ f x = x
state_after: no goals

tactic: refine Or.inl ?_
state_before: case neg
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f.IsCycle ∧ ∀ a ∈ f.support, f a = g a
x : α
hx : ¬f x = x
⊢ (g * f⁻¹) x = x ∨ f x = x
state_after: case neg
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f.IsCycle ∧ ∀ a ∈ f.support, f a = g a
x : α
hx : ¬f x = x
⊢ (g * f⁻¹) x = x

tactic: rw [mul_apply, ← h.right, apply_inv_self]
state_before: case neg
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f.IsCycle ∧ ∀ a ∈ f.support, f a = g a
x : α
hx : ¬f x = x
⊢ (g * f⁻¹) x = x
state_after: case neg.a
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f.IsCycle ∧ ∀ a ∈ f.support, f a = g a
x : α
hx : ¬f x = x
⊢ f⁻¹ x ∈ f.support

tactic: rwa [← support_inv, apply_mem_support, support_inv, mem_support]
state_before: case neg.a
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : f.IsCycle ∧ ∀ a ∈ f.support, f a = g a
x : α
hx : ¬f x = x
⊢ f⁻¹ x ∈ f.support
state_after: no goals
Theorem: BoxIntegral.IntegrationParams.rCond_of_bRiemann_eq_false
File: Mathlib/Analysis/BoxIntegral/Partition/Filter.lean

tactic: simp [RCond, hl]
state_before: ι✝ : Type u_1
inst✝ : Fintype ι✝
I J : Box ι✝
c c₁ c₂ : ℝ≥0
r✝ r₁ r₂ : (ι✝ → ℝ) → ↑(Set.Ioi 0)
π π₁ π₂ : TaggedPrepartition I
l✝ l₁ l₂ : IntegrationParams
ι : Type u_2
l : IntegrationParams
hl : l.bRiemann = false
r : (ι → ℝ) → ↑(Set.Ioi 0)
⊢ l.RCond r
state_after: no goals
Theorem: Associates.factors_eq_some_iff_ne_zero
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: simp_rw [@eq_comm _ a.factors, ← WithTop.ne_top_iff_exists]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a : Associates α
⊢ (∃ s, a.factors = ↑s) ↔ a ≠ 0
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a : Associates α
⊢ a.factors ≠ ⊤ ↔ a ≠ 0

tactic: exact factors_eq_top_iff_zero.not
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a : Associates α
⊢ a.factors ≠ ⊤ ↔ a ≠ 0
state_after: no goals
Theorem: Orientation.oangle_sign_sub_left
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: rw [← o.oangle_sign_sub_smul_left x y 1, one_smul]
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
⊢ (o.oangle (x - y) y).sign = (o.oangle x y).sign
state_after: no goals
Theorem: Mathlib.Meta.NormNum.isInt_rpow_pos
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rwa [pb.out, rpow_natCast]
state_before: a b : ℝ
nb ne : ℕ
pb : IsNat b nb
pe' : IsInt (a ^ nb) (Int.negOfNat ne)
⊢ IsInt (a ^ b) (Int.negOfNat ne)
state_after: no goals
Theorem: LinearIsometryEquiv.coe_toAffineIsometryEquiv
File: Mathlib/Analysis/NormedSpace/AffineIsometry.lean

tactic: rfl
state_before: 𝕜 : Type u_1
V : Type u_2
V₁ : Type u_3
V₁' : Type u_4
V₂ : Type u_5
V₃ : Type u_6
V₄ : Type u_7
P₁ : Type u_8
P₁' : Type u_9
P : Type u_10
P₂ : Type u_11
P₃ : Type u_12
P₄ : Type u_13
inst✝²⁴ : NormedField 𝕜
inst✝²³ : SeminormedAddCommGroup V
inst✝²² : NormedSpace 𝕜 V
inst✝²¹ : PseudoMetricSpace P
inst✝²⁰ : NormedAddTorsor V P
inst✝¹⁹ : SeminormedAddCommGroup V₁
inst✝¹⁸ : NormedSpace 𝕜 V₁
inst✝¹⁷ : PseudoMetricSpace P₁
inst✝¹⁶ : NormedAddTorsor V₁ P₁
inst✝¹⁵ : SeminormedAddCommGroup V₁'
inst✝¹⁴ : NormedSpace 𝕜 V₁'
inst✝¹³ : MetricSpace P₁'
inst✝¹² : NormedAddTorsor V₁' P₁'
inst✝¹¹ : SeminormedAddCommGroup V₂
inst✝¹⁰ : NormedSpace 𝕜 V₂
inst✝⁹ : PseudoMetricSpace P₂
inst✝⁸ : NormedAddTorsor V₂ P₂
inst✝⁷ : SeminormedAddCommGroup V₃
inst✝⁶ : NormedSpace 𝕜 V₃
inst✝⁵ : PseudoMetricSpace P₃
inst✝⁴ : NormedAddTorsor V₃ P₃
inst✝³ : SeminormedAddCommGroup V₄
inst✝² : NormedSpace 𝕜 V₄
inst✝¹ : PseudoMetricSpace P₄
inst✝ : NormedAddTorsor V₄ P₄
e : V ≃ₗᵢ[𝕜] V₂
⊢ ⇑e.toAffineIsometryEquiv = ⇑e
state_after: no goals
Theorem: EuclideanSpace.volume_closedBall
File: Mathlib/MeasureTheory/Measure/Lebesgue/VolumeOfBalls.lean

tactic: rw [addHaar_closedBall_eq_addHaar_ball, EuclideanSpace.volume_ball]
state_before: ι : Type u_1
inst✝¹ : Nonempty ι
inst✝ : Fintype ι
x : EuclideanSpace ℝ ι
r : ℝ
⊢ volume (Metric.closedBall x r) = ENNReal.ofReal r ^ card ι * ENNReal.ofReal (√π ^ card ι / Gamma (↑(card ι) / 2 + 1))
state_after: no goals
Theorem: Submodule.span_insert
File: Mathlib/LinearAlgebra/Span.lean

tactic: rw [insert_eq, span_union]
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
x : M
s : Set M
⊢ span R (insert x s) = span R {x} ⊔ span R s
state_after: no goals
Theorem: CategoryTheory.Functor.additive_of_preservesBinaryBiproducts
File: Mathlib/CategoryTheory/Preadditive/AdditiveFunctor.lean

tactic: rw [biprod.add_eq_lift_id_desc, F.map_comp, ← biprod.lift_mapBiprod,
  ← biprod.mapBiprod_hom_desc, Category.assoc, Iso.inv_hom_id_assoc, F.map_id,
  biprod.add_eq_lift_id_desc]
state_before: C : Type u₁
D : Type u₂
inst✝⁶ : Category.{v₁, u₁} C
inst✝⁵ : Category.{v₂, u₂} D
inst✝⁴ : Preadditive C
inst✝³ : Preadditive D
F : C ⥤ D
inst✝² : HasBinaryBiproducts C
inst✝¹ : F.PreservesZeroMorphisms
inst✝ : PreservesBinaryBiproducts F
X Y : C
f g : X ⟶ Y
⊢ F.map (f + g) = F.map f + F.map g
state_after: no goals
Theorem: isReduced_zmod
File: Mathlib/RingTheory/ZMod.lean

tactic: rw [← RingHom.ker_isRadical_iff_reduced_of_surjective
    (ZMod.ringHom_surjective <| Int.castRingHom <| ZMod n),
    ZMod.ker_intCastRingHom, ← isRadical_iff_span_singleton, isRadical_iff_squarefree_or_zero,
    Int.squarefree_natCast, Nat.cast_eq_zero]
state_before: n : ℕ
⊢ IsReduced (ZMod n) ↔ Squarefree n ∨ n = 0
state_after: no goals
Theorem: AdjoinRoot.smul_of
File: Mathlib/RingTheory/AdjoinRoot.lean

tactic: rw [of, RingHom.comp_apply, RingHom.comp_apply, smul_mk, smul_C]
state_before: R : Type u
S : Type v
K : Type w
inst✝² : CommRing R
f : R[X]
inst✝¹ : DistribSMul S R
inst✝ : IsScalarTower S R R
a : S
x : R
⊢ a • (of f) x = (of f) (a • x)
state_after: no goals
Theorem: Real.sq_lt
File: Mathlib/Data/Real/Sqrt.lean

tactic: rw [← abs_lt, ← sq_abs, lt_sqrt (abs_nonneg _)]
state_before: x✝ y✝ x y : ℝ
⊢ x ^ 2 < y ↔ -√y < x ∧ x < √y
state_after: no goals
Theorem: Matrix.linftyOpBoundedSMul
File: Mathlib/Analysis/Matrix.lean

tactic: infer_instance
state_before: R : Type u_1
l : Type u_2
m : Type u_3
n : Type u_4
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁷ : Fintype l
inst✝⁶ : Fintype m
inst✝⁵ : Fintype n
inst✝⁴ : Unique ι
inst✝³ : SeminormedRing R
inst✝² : SeminormedAddCommGroup α
inst✝¹ : Module R α
inst✝ : BoundedSMul R α
⊢ BoundedSMul R (m → PiLp 1 fun j => α)
state_after: no goals
Theorem: HomologicalComplex.comp_liftCycles
File: Mathlib/Algebra/Homology/ShortComplex/HomologicalComplex.lean

tactic: rw [assoc, hk, comp_zero]
state_before: C : Type u_1
inst✝² : Category.{?u.27678, u_1} C
inst✝¹ : HasZeroMorphisms C
ι : Type u_2
c : ComplexShape ι
K L M : HomologicalComplex C c
φ : K ⟶ L
ψ : L ⟶ M
i j✝ k✝ : ι
inst✝ : K.HasHomology i
A' A : C
k : A ⟶ K.X i
j : ι
hj : c.next i = j
hk : k ≫ K.d i j = 0
α : A' ⟶ A
⊢ (α ≫ k) ≫ K.d i j = 0
state_after: no goals

tactic: simp only [← cancel_mono (K.iCycles i), assoc, liftCycles_i]
state_before: C : Type u_1
inst✝² : Category.{u_3, u_1} C
inst✝¹ : HasZeroMorphisms C
ι : Type u_2
c : ComplexShape ι
K L M : HomologicalComplex C c
φ : K ⟶ L
ψ : L ⟶ M
i j✝ k✝ : ι
inst✝ : K.HasHomology i
A' A : C
k : A ⟶ K.X i
j : ι
hj : c.next i = j
hk : k ≫ K.d i j = 0
α : A' ⟶ A
⊢ α ≫ K.liftCycles k j hj hk = K.liftCycles (α ≫ k) j hj ⋯
state_after: no goals
Theorem: krullDim_eq_iSup_height
File: Mathlib/Order/KrullDimension.lean

tactic: omega
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
i : LTSeries α
m : Fin (i.length + 1)
⊢ ↑m ≤ i.length
state_after: no goals
Theorem: Algebra.traceMatrix_eq_embeddingsMatrixReindex_mul_trans
File: Mathlib/RingTheory/Trace.lean

tactic: rw [traceMatrix_eq_embeddingsMatrix_mul_trans, embeddingsMatrixReindex, reindex_apply,
  transpose_submatrix, ← submatrix_mul_transpose_submatrix, ← Equiv.coe_refl, Equiv.refl_symm]
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝²⁴ : CommRing R
inst✝²³ : CommRing S
inst✝²² : CommRing T
inst✝²¹ : Algebra R S
inst✝²⁰ : Algebra R T
K : Type u_4
L : Type u_5
inst✝¹⁹ : Field K
inst✝¹⁸ : Field L
inst✝¹⁷ : Algebra K L
ι κ : Type w
inst✝¹⁶ : Fintype ι
F : Type u_6
inst✝¹⁵ : Field F
inst✝¹⁴ : Algebra R L
inst✝¹³ : Algebra L F
inst✝¹² : Algebra R F
inst✝¹¹ : IsScalarTower R L F
A : Type u
B : Type v
C : Type z
inst✝¹⁰ : CommRing A
inst✝⁹ : CommRing B
inst✝⁸ : Algebra A B
inst✝⁷ : CommRing C
inst✝⁶ : Algebra A C
E : Type z
inst✝⁵ : Field E
inst✝⁴ : Algebra K E
inst✝³ : Module.Finite K L
inst✝² : IsSeparable K L
inst✝¹ : IsAlgClosed E
b : κ → L
pb : PowerBasis K L
inst✝ : Fintype κ
e : κ ≃ (L →ₐ[K] E)
⊢ (traceMatrix K b).map ⇑(algebraMap K E) = embeddingsMatrixReindex K E b e * (embeddingsMatrixReindex K E b e)ᵀ
state_after: no goals
Theorem: normEDS_neg
File: Mathlib/NumberTheory/EllipticDivisibilitySequence.lean

tactic: simp only [normEDS, preNormEDS_neg, neg_mul, even_neg]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : ℤ → R
f : R →+* S
b c d : R
n : ℤ
⊢ normEDS b c d (-n) = -normEDS b c d n
state_after: no goals
Theorem: SimpleGraph.Walk.mem_support_append_iff
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: simp only [mem_support_iff, mem_tail_support_append_iff]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
t u v w : V
p : G.Walk u v
p' : G.Walk v w
⊢ t ∈ (p.append p').support ↔ t ∈ p.support ∨ t ∈ p'.support
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
t u v w : V
p : G.Walk u v
p' : G.Walk v w
⊢ t = u ∨ t ∈ p.support.tail ∨ t ∈ p'.support.tail ↔ (t = u ∨ t ∈ p.support.tail) ∨ t = v ∨ t ∈ p'.support.tail

tactic: obtain rfl | h := eq_or_ne t v <;> obtain rfl | h' := eq_or_ne t u <;>
  (try have := h'.symm) <;> simp [*]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
t u v w : V
p : G.Walk u v
p' : G.Walk v w
⊢ t = u ∨ t ∈ p.support.tail ∨ t ∈ p'.support.tail ↔ (t = u ∨ t ∈ p.support.tail) ∨ t = v ∨ t ∈ p'.support.tail
state_after: no goals

tactic: try have := h'.symm
state_before: case inr.inr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
t u v w : V
p : G.Walk u v
p' : G.Walk v w
h : t ≠ v
h' : t ≠ u
⊢ t = u ∨ t ∈ p.support.tail ∨ t ∈ p'.support.tail ↔ (t = u ∨ t ∈ p.support.tail) ∨ t = v ∨ t ∈ p'.support.tail
state_after: case inr.inr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
t u v w : V
p : G.Walk u v
p' : G.Walk v w
h : t ≠ v
h' : t ≠ u
this : u ≠ t
⊢ t = u ∨ t ∈ p.support.tail ∨ t ∈ p'.support.tail ↔ (t = u ∨ t ∈ p.support.tail) ∨ t = v ∨ t ∈ p'.support.tail

tactic: have := h'.symm
state_before: case inr.inr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
t u v w : V
p : G.Walk u v
p' : G.Walk v w
h : t ≠ v
h' : t ≠ u
⊢ t = u ∨ t ∈ p.support.tail ∨ t ∈ p'.support.tail ↔ (t = u ∨ t ∈ p.support.tail) ∨ t = v ∨ t ∈ p'.support.tail
state_after: case inr.inr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
t u v w : V
p : G.Walk u v
p' : G.Walk v w
h : t ≠ v
h' : t ≠ u
this : u ≠ t
⊢ t = u ∨ t ∈ p.support.tail ∨ t ∈ p'.support.tail ↔ (t = u ∨ t ∈ p.support.tail) ∨ t = v ∨ t ∈ p'.support.tail
Theorem: Finset.norm_prod_le'
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: rcases s with ⟨⟨l⟩, hl⟩
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : SeminormedRing α✝
α : Type u_5
inst✝ : NormedCommRing α
s : Finset ι
hs : s.Nonempty
f : ι → α
⊢ ‖∏ i ∈ s, f i‖ ≤ ∏ i ∈ s, ‖f i‖
state_after: case mk.mk
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : SeminormedRing α✝
α : Type u_5
inst✝ : NormedCommRing α
f : ι → α
val✝ : Multiset ι
l : List ι
hl : Multiset.Nodup (Quot.mk Setoid.r l)
hs : { val := Quot.mk Setoid.r l, nodup := hl }.Nonempty
⊢ ‖∏ i ∈ { val := Quot.mk Setoid.r l, nodup := hl }, f i‖ ≤ ∏ i ∈ { val := Quot.mk Setoid.r l, nodup := hl }, ‖f i‖

tactic: have : l.map f ≠ [] := by simpa using hs
state_before: case mk.mk
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : SeminormedRing α✝
α : Type u_5
inst✝ : NormedCommRing α
f : ι → α
val✝ : Multiset ι
l : List ι
hl : Multiset.Nodup (Quot.mk Setoid.r l)
hs : { val := Quot.mk Setoid.r l, nodup := hl }.Nonempty
⊢ ‖∏ i ∈ { val := Quot.mk Setoid.r l, nodup := hl }, f i‖ ≤ ∏ i ∈ { val := Quot.mk Setoid.r l, nodup := hl }, ‖f i‖
state_after: case mk.mk
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : SeminormedRing α✝
α : Type u_5
inst✝ : NormedCommRing α
f : ι → α
val✝ : Multiset ι
l : List ι
hl : Multiset.Nodup (Quot.mk Setoid.r l)
hs : { val := Quot.mk Setoid.r l, nodup := hl }.Nonempty
this : List.map f l ≠ []
⊢ ‖∏ i ∈ { val := Quot.mk Setoid.r l, nodup := hl }, f i‖ ≤ ∏ i ∈ { val := Quot.mk Setoid.r l, nodup := hl }, ‖f i‖

tactic: simpa using List.norm_prod_le' this
state_before: case mk.mk
α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : SeminormedRing α✝
α : Type u_5
inst✝ : NormedCommRing α
f : ι → α
val✝ : Multiset ι
l : List ι
hl : Multiset.Nodup (Quot.mk Setoid.r l)
hs : { val := Quot.mk Setoid.r l, nodup := hl }.Nonempty
this : List.map f l ≠ []
⊢ ‖∏ i ∈ { val := Quot.mk Setoid.r l, nodup := hl }, f i‖ ≤ ∏ i ∈ { val := Quot.mk Setoid.r l, nodup := hl }, ‖f i‖
state_after: no goals

tactic: simpa using hs
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : SeminormedRing α✝
α : Type u_5
inst✝ : NormedCommRing α
f : ι → α
val✝ : Multiset ι
l : List ι
hl : Multiset.Nodup (Quot.mk Setoid.r l)
hs : { val := Quot.mk Setoid.r l, nodup := hl }.Nonempty
⊢ List.map f l ≠ []
state_after: no goals