1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.ShortComplex.Homotopy.rightHomologyMap'_congr
File: Mathlib/Algebra/Homology/ShortComplex/Preadditive.lean

tactic: rw [h.eq_add_nullHomotopic, rightHomologyMap'_add, rightHomologyMap'_nullHomotopic, add_zero]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
S₁ S₂ S₃ : ShortComplex C
φ₁ φ₂ φ₃ φ₄ : S₁ ⟶ S₂
h : Homotopy φ₁ φ₂
h₁ : S₁.RightHomologyData
h₂ : S₂.RightHomologyData
⊢ rightHomologyMap' φ₁ h₁ h₂ = rightHomologyMap' φ₂ h₁ h₂
state_after: no goals
Theorem: separableClosure_le
File: Mathlib/FieldTheory/PurelyInseparable.lean

tactic: obtain ⟨y, rfl⟩ := h.inseparable' _ <| (mem_separableClosure_iff.1 hx).map_minpoly L
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
L : IntermediateField F E
h : IsPurelyInseparable (↥L) E
x : E
hx : x ∈ separableClosure F E
⊢ x ∈ L
state_after: case intro
F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
L : IntermediateField F E
h : IsPurelyInseparable (↥L) E
y : ↥L
hx : (algebraMap (↥L) E) y ∈ separableClosure F E
⊢ (algebraMap (↥L) E) y ∈ L

tactic: exact y.2
state_before: case intro
F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
L : IntermediateField F E
h : IsPurelyInseparable (↥L) E
y : ↥L
hx : (algebraMap (↥L) E) y ∈ separableClosure F E
⊢ (algebraMap (↥L) E) y ∈ L
state_after: no goals
Theorem: OmegaCompletePartialOrder.isLUB_range_ωSup
File: Mathlib/Order/OmegaCompletePartialOrder.lean

tactic: constructor
state_before: α : Type u
β : Type v
γ : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ IsLUB (Set.range ⇑c) (ωSup c)
state_after: case left
α : Type u
β : Type v
γ : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ ωSup c ∈ upperBounds (Set.range ⇑c)

case right
α : Type u
β : Type v
γ : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ ωSup c ∈ lowerBounds (upperBounds (Set.range ⇑c))

tactic: simp only [upperBounds, Set.mem_range, forall_exists_index, forall_apply_eq_imp_iff,
  Set.mem_setOf_eq]
state_before: case left
α : Type u
β : Type v
γ : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ ωSup c ∈ upperBounds (Set.range ⇑c)
state_after: case left
α : Type u
β : Type v
γ : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ ∀ (a : ℕ), c a ≤ ωSup c

tactic: exact fun a ↦ le_ωSup c a
state_before: case left
α : Type u
β : Type v
γ : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ ∀ (a : ℕ), c a ≤ ωSup c
state_after: no goals

tactic: simp only [lowerBounds, upperBounds, Set.mem_range, forall_exists_index,
  forall_apply_eq_imp_iff, Set.mem_setOf_eq]
state_before: case right
α : Type u
β : Type v
γ : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ ωSup c ∈ lowerBounds (upperBounds (Set.range ⇑c))
state_after: case right
α : Type u
β : Type v
γ : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ ∀ ⦃a : α⦄, (∀ (a_1 : ℕ), c a_1 ≤ a) → ωSup c ≤ a

tactic: exact fun ⦃a⦄ a_1 ↦ ωSup_le c a a_1
state_before: case right
α : Type u
β : Type v
γ : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
⊢ ∀ ⦃a : α⦄, (∀ (a_1 : ℕ), c a_1 ≤ a) → ωSup c ≤ a
state_after: no goals
Theorem: WittVector.truncateFun_nsmul
File: Mathlib/RingTheory/WittVector/Truncated.lean

tactic: witt_truncateFun_tac
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n : ℕ
R : Type u_1
inst✝ : CommRing R
m : ℕ
x : 𝕎 R
⊢ truncateFun n (m • x) = m • truncateFun n x
state_after: no goals
Theorem: RCLike.I_eq_zero_or_im_I_eq_one
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: simpa [h] using (I_mul_re (I : K)).symm
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
𝕜 : ?m.53053
h : I * I = -1
⊢ im I = 1
state_after: no goals
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
hr : IsUnit 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
hr : IsUnit r
a : R[X]
⊢ p.scaleRoots r ∣ (p * a).scaleRoots r

tactic: rw [← ((hr.pow (natDegree p + natDegree a - natDegree (p * a))).map
  (algebraMap R R[X])).dvd_mul_left, ← Algebra.smul_def, mul_scaleRoots]
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
hr : IsUnit 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
hr : IsUnit 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
hr : IsUnit r
a : R[X]
⊢ p.scaleRoots r ∣ p.scaleRoots r * a.scaleRoots r
state_after: no goals
Theorem: ack_strict_mono_left'
File: Mathlib/Computability/Ackermann.lean

tactic: simpa using one_lt_ack_succ_right m 0
state_before: m : ℕ
_h : 0 < m + 1
⊢ ack 0 0 < ack (m + 1) 0
state_after: no goals

tactic: rw [ack_zero, ack_succ_succ]
state_before: m n : ℕ
h : 0 < m + 1
⊢ ack 0 (n + 1) < ack (m + 1) (n + 1)
state_after: m n : ℕ
h : 0 < m + 1
⊢ n + 1 + 1 < ack m (ack (m + 1) n)

tactic: apply lt_of_le_of_lt (le_trans _ <| add_le_add_left (add_add_one_le_ack _ _) m) (add_lt_ack _ _)
state_before: m n : ℕ
h : 0 < m + 1
⊢ n + 1 + 1 < ack m (ack (m + 1) n)
state_after: m n : ℕ
h : 0 < m + 1
⊢ n + 1 + 1 ≤ m + (m + 1 + n + 1)

tactic: omega
state_before: m n : ℕ
h : 0 < m + 1
⊢ n + 1 + 1 ≤ m + (m + 1 + n + 1)
state_after: no goals

tactic: simpa using ack_strict_mono_left' 1 ((add_lt_add_iff_right 1).1 h)
state_before: m₁ m₂ : ℕ
h : m₁ + 1 < m₂ + 1
⊢ ack (m₁ + 1) 0 < ack (m₂ + 1) 0
state_after: no goals

tactic: rw [ack_succ_succ, ack_succ_succ]
state_before: m₁ m₂ n : ℕ
h : m₁ + 1 < m₂ + 1
⊢ ack (m₁ + 1) (n + 1) < ack (m₂ + 1) (n + 1)
state_after: m₁ m₂ n : ℕ
h : m₁ + 1 < m₂ + 1
⊢ ack m₁ (ack (m₁ + 1) n) < ack m₂ (ack (m₂ + 1) n)

tactic: exact
  (ack_strict_mono_left' _ <| (add_lt_add_iff_right 1).1 h).trans
    (ack_strictMono_right _ <| ack_strict_mono_left' n h)
state_before: m₁ m₂ n : ℕ
h : m₁ + 1 < m₂ + 1
⊢ ack m₁ (ack (m₁ + 1) n) < ack m₂ (ack (m₂ + 1) n)
state_after: no goals
Theorem: Polynomial.eval₂_X_pow
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: rw [X_pow_eq_monomial]
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
n : ℕ
⊢ eval₂ f x (X ^ n) = x ^ n
state_after: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
n : ℕ
⊢ eval₂ f x ((monomial n) 1) = x ^ n

tactic: convert eval₂_monomial f x (n := n) (r := 1)
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
n : ℕ
⊢ eval₂ f x ((monomial n) 1) = x ^ n
state_after: case h.e'_3
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
n : ℕ
⊢ x ^ n = f 1 * x ^ n

tactic: simp
state_before: case h.e'_3
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
n : ℕ
⊢ x ^ n = f 1 * x ^ n
state_after: no goals
Theorem: Nat.div_two_mul_two_add_one_of_odd
File: Mathlib/Algebra/Ring/Parity.lean

tactic: rw [← odd_iff.mp h, div_add_mod']
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m n : ℕ
h : Odd n
⊢ n / 2 * 2 + 1 = n
state_after: no goals
Theorem: Set.subsingleton_of_einfsep_eq_top
File: Mathlib/Topology/MetricSpace/Infsep.lean

tactic: rw [einfsep_top] at hs
state_before: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : s.einfsep = ⊤
⊢ s.Subsingleton
state_after: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : ∀ x ∈ s, ∀ y ∈ s, x ≠ y → edist x y = ⊤
⊢ s.Subsingleton

tactic: exact fun _ hx _ hy => of_not_not fun hxy => edist_ne_top _ _ (hs _ hx _ hy hxy)
state_before: α : Type u_1
β : Type u_2
inst✝ : PseudoMetricSpace α
s : Set α
hs : ∀ x ∈ s, ∀ y ∈ s, x ≠ y → edist x y = ⊤
⊢ s.Subsingleton
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.equiv_iff_eq_of_Z_eq'
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: refine ⟨?_, by rintro rfl; exact Setoid.refl _⟩
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hz : P z = Q z
mem : Q z ∈ nonZeroDivisors R
⊢ P ≈ Q ↔ P = Q
state_after: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hz : P z = Q z
mem : Q z ∈ nonZeroDivisors R
⊢ P ≈ Q → P = Q

tactic: rintro ⟨u, rfl⟩
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hz : P z = Q z
mem : Q z ∈ nonZeroDivisors R
⊢ P ≈ Q → P = Q
state_after: case intro
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
Q : Fin 3 → R
mem : Q z ∈ nonZeroDivisors R
u : Rˣ
hz : (fun m => m • Q) u z = Q z
⊢ (fun m => m • Q) u = Q

tactic: rw [← one_mul (Q z)] at hz
state_before: case intro
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
Q : Fin 3 → R
mem : Q z ∈ nonZeroDivisors R
u : Rˣ
hz : (fun m => m • Q) u z = Q z
⊢ (fun m => m • Q) u = Q
state_after: case intro
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
Q : Fin 3 → R
mem : Q z ∈ nonZeroDivisors R
u : Rˣ
hz : (fun m => m • Q) u z = 1 * Q z
⊢ (fun m => m • Q) u = Q

tactic: simp_rw [Units.smul_def, (mul_cancel_right_mem_nonZeroDivisors mem).mp hz, one_smul]
state_before: case intro
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
Q : Fin 3 → R
mem : Q z ∈ nonZeroDivisors R
u : Rˣ
hz : (fun m => m • Q) u z = 1 * Q z
⊢ (fun m => m • Q) u = Q
state_after: no goals

tactic: rintro rfl
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hz : P z = Q z
mem : Q z ∈ nonZeroDivisors R
⊢ P = Q → P ≈ Q
state_after: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
hz : P z = P z
mem : P z ∈ nonZeroDivisors R
⊢ P ≈ P

tactic: exact Setoid.refl _
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
hz : P z = P z
mem : P z ∈ nonZeroDivisors R
⊢ P ≈ P
state_after: no goals
Theorem: KaehlerDifferential.mvPolynomialBasis_repr_D_X
File: Mathlib/RingTheory/Kaehler/Polynomial.lean

tactic: simp [mvPolynomialBasis_repr_D]
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
σ : Type u_1
i : σ
⊢ (mvPolynomialBasis R σ).repr ((D R (MvPolynomial σ R)) (MvPolynomial.X i)) = Finsupp.single i 1
state_after: no goals
Theorem: Submodule.map_subtype_le
File: Mathlib/Algebra/Module/Submodule/Range.lean

tactic: simpa using (map_le_range : map p.subtype p' ≤ range p.subtype)
state_before: R : Type u_1
R₂ : Type u_2
R₃ : Type u_3
K : Type u_4
K₂ : Type u_5
M : Type u_6
M₂ : Type u_7
M₃ : Type u_8
V : Type u_9
V₂ : Type u_10
inst✝⁷ : Semiring R
inst✝⁶ : Semiring R₂
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R M
inst✝² : Module R₂ M₂
p p'✝ : Submodule R M
q : Submodule R₂ M₂
τ₁₂ : R →+* R₂
F : Type u_11
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F τ₁₂ M M₂
p' : Submodule R ↥p
⊢ map p.subtype p' ≤ p
state_after: no goals
Theorem: TypeVec.eq_nilFun
File: Mathlib/Data/TypeVec.lean

tactic: ext x
state_before: n : ℕ
α : TypeVec.{u_1} 0
β : TypeVec.{u_2} 0
f : α ⟹ β
⊢ f = nilFun
state_after: case a.h
n : ℕ
α : TypeVec.{u_1} 0
β : TypeVec.{u_2} 0
f : α ⟹ β
x : Fin2 0
x✝ : α x
⊢ f x x✝ = nilFun x x✝

tactic: cases x
state_before: case a.h
n : ℕ
α : TypeVec.{u_1} 0
β : TypeVec.{u_2} 0
f : α ⟹ β
x : Fin2 0
x✝ : α x
⊢ f x x✝ = nilFun x x✝
state_after: no goals
Theorem: ENNReal.tendsto_nhds
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: simp only [nhds_of_ne_top ha, tendsto_iInf, tendsto_principal]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f : Filter α
u : α → ℝ≥0∞
a : ℝ≥0∞
ha : a ≠ ⊤
⊢ Tendsto u f (𝓝 a) ↔ ∀ ε > 0, ∀ᶠ (x : α) in f, u x ∈ Icc (a - ε) (a + ε)
state_after: no goals
Theorem: BoundedContinuousFunction.lintegral_le_edist_mul
File: Mathlib/MeasureTheory/Integral/BoundedContinuousFunction.lean

tactic: simp
state_before: X : Type u_1
inst✝² : MeasurableSpace X
inst✝¹ : TopologicalSpace X
inst✝ : OpensMeasurableSpace X
f : X →ᵇ ℝ≥0
μ : Measure X
⊢ ∫⁻ (a : X), ↑(nndist 0 f) ∂μ ≤ edist 0 f * μ Set.univ
state_after: no goals
Theorem: AddMonoidAlgebra.opRingEquiv_symm_single
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

tactic: simp
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝¹ : Semiring k
inst✝ : AddCommMonoid G
r : kᵐᵒᵖ
x : Gᵐᵒᵖ
⊢ AddMonoidAlgebra.opRingEquiv.symm (single x r) = op (single x (unop r))
state_after: no goals
Theorem: WeierstrassCurve.VariableChange.id_map
File: Mathlib/AlgebraicGeometry/EllipticCurve/Weierstrass.lean

tactic: simp only [id, map]
state_before: R : Type u
inst✝¹ : CommRing R
W : WeierstrassCurve R
A : Type v
inst✝ : CommRing A
φ : R →+* A
C : VariableChange R
⊢ map φ id = id
state_after: R : Type u
inst✝¹ : CommRing R
W : WeierstrassCurve R
A : Type v
inst✝ : CommRing A
φ : R →+* A
C : VariableChange R
⊢ { u := (Units.map ↑φ) 1, r := φ 0, s := φ 0, t := φ 0 } = { u := 1, r := 0, s := 0, t := 0 }

tactic: ext <;> simp only [map_one, Units.val_one, map_zero]
state_before: R : Type u
inst✝¹ : CommRing R
W : WeierstrassCurve R
A : Type v
inst✝ : CommRing A
φ : R →+* A
C : VariableChange R
⊢ { u := (Units.map ↑φ) 1, r := φ 0, s := φ 0, t := φ 0 } = { u := 1, r := 0, s := 0, t := 0 }
state_after: no goals
Theorem: MvPolynomial.C_eq_coe_nat
File: Mathlib/Algebra/MvPolynomial/Basic.lean

tactic: induction n <;> simp [*]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n✝ m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p q : MvPolynomial σ R
n : ℕ
⊢ C ↑n = ↑n
state_after: no goals
Theorem: MeasureTheory.isFiniteMeasure_withDensity_ofReal
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: refine isFiniteMeasure_withDensity ((lintegral_mono fun x => ?_).trans_lt hfi).ne
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ
hfi : HasFiniteIntegral f μ
⊢ IsFiniteMeasure (μ.withDensity fun x => ENNReal.ofReal (f x))
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ
hfi : HasFiniteIntegral f μ
x : α
⊢ ENNReal.ofReal (f x) ≤ ↑‖f x‖₊

tactic: exact Real.ofReal_le_ennnorm (f x)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ
hfi : HasFiniteIntegral f μ
x : α
⊢ ENNReal.ofReal (f x) ≤ ↑‖f x‖₊
state_after: no goals
Theorem: String.validFor_toSubstring
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: simp [toSubstring]
state_before: s : String
⊢ s.toSubstring.str.data = [] ++ s.data ++ []
state_after: no goals

tactic: simp [toSubstring, endPos, utf8ByteSize]
state_before: s : String
⊢ s.toSubstring.stopPos.byteIdx = utf8Len [] + utf8Len s.data
state_after: no goals
Theorem: MeasureTheory.lmarginal_erase
File: Mathlib/MeasureTheory/Integral/Marginal.lean

tactic: simpa [insert_erase hi] using lmarginal_insert _ hf (not_mem_erase i s) x
state_before: δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f✝ g : ((i : δ) → π i) → ℝ≥0∞
x✝ y : (i : δ) → π i
i✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
i : δ
hi : i ∈ s
x : (i : δ) → π i
⊢ (∫⋯∫⁻_s, f ∂μ) x = ∫⁻ (xᵢ : π i), (∫⋯∫⁻_s.erase i, f ∂μ) (update x i xᵢ) ∂μ i
state_after: no goals
Theorem: Submonoid.prod_eq_bot_iff
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

tactic: simp only [eq_bot_iff, prod_le_iff, (gc_map_comap _).le_iff_le, comap_bot', mker_inl, mker_inr]
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
s : Submonoid M
t : Submonoid N
⊢ s.prod t = ⊥ ↔ s = ⊥ ∧ t = ⊥
state_after: no goals
Theorem: PosNum.le_iff_cmp
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← cmp_swap]
state_before: m n : PosNum
⊢ n.cmp m = Ordering.lt ↔ m.cmp n = Ordering.gt
state_after: m n : PosNum
⊢ (m.cmp n).swap = Ordering.lt ↔ m.cmp n = Ordering.gt

tactic: cases cmp m n <;> decide
state_before: m n : PosNum
⊢ (m.cmp n).swap = Ordering.lt ↔ m.cmp n = Ordering.gt
state_after: no goals
Theorem: Nat.fast_fib_eq
File: Mathlib/Data/Nat/Fib/Basic.lean

tactic: rw [fastFib, fast_fib_aux_eq]
state_before: n : ℕ
⊢ n.fastFib = fib n
state_after: no goals
Theorem: CoxeterSystem.IsReduced.nodup_leftInvSeq
File: Mathlib/GroupTheory/Coxeter/Inversion.lean

tactic: simp only [leftInvSeq_eq_reverse_rightInvSeq_reverse, nodup_reverse]
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
rω : cs.IsReduced ω
⊢ (cs.leftInvSeq ω).Nodup
state_after: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
rω : cs.IsReduced ω
⊢ (cs.rightInvSeq ω.reverse).Nodup

tactic: apply nodup_rightInvSeq
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
rω : cs.IsReduced ω
⊢ (cs.rightInvSeq ω.reverse).Nodup
state_after: case rω
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
rω : cs.IsReduced ω
⊢ cs.IsReduced ω.reverse

tactic: rwa [isReduced_reverse]
state_before: case rω
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
rω : cs.IsReduced ω
⊢ cs.IsReduced ω.reverse
state_after: no goals
Theorem: AdjoinRoot.quotMapOfEquivQuotMapCMapSpanMk_symm_mk
File: Mathlib/RingTheory/AdjoinRoot.lean

tactic: rw [quotMapOfEquivQuotMapCMapSpanMk, Ideal.quotEquivOfEq_symm]
state_before: R : Type u
S : Type v
K : Type w
inst✝ : CommRing R
I : Ideal R
f : R[X]
x : AdjoinRoot f
⊢ (quotMapOfEquivQuotMapCMapSpanMk I f).symm
      ((Ideal.Quotient.mk (Ideal.map (Ideal.Quotient.mk (span {f})) (Ideal.map C I))) x) =
    (Ideal.Quotient.mk (Ideal.map (of f) I)) x
state_after: R : Type u
S : Type v
K : Type w
inst✝ : CommRing R
I : Ideal R
f : R[X]
x : AdjoinRoot f
⊢ (quotEquivOfEq ⋯) ((Ideal.Quotient.mk (Ideal.map (Ideal.Quotient.mk (span {f})) (Ideal.map C I))) x) =
    (Ideal.Quotient.mk (Ideal.map (of f) I)) x

tactic: exact Ideal.quotEquivOfEq_mk _ _
state_before: R : Type u
S : Type v
K : Type w
inst✝ : CommRing R
I : Ideal R
f : R[X]
x : AdjoinRoot f
⊢ (quotEquivOfEq ⋯) ((Ideal.Quotient.mk (Ideal.map (Ideal.Quotient.mk (span {f})) (Ideal.map C I))) x) =
    (Ideal.Quotient.mk (Ideal.map (of f) I)) x
state_after: no goals
Theorem: Option.join_pmap_eq_pmap_join
File: Mathlib/Data/Option/Basic.lean

tactic: rcases x with (_ | _ | x) <;> simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
p : α → Prop
f✝ : (a : α) → p a → β
x✝ : Option α
f : (a : α) → p a → β
x : Option (Option α)
H : ∀ (a : Option α), a ∈ x → ∀ (a_2 : α), a_2 ∈ a → p a_2
⊢ (pmap (pmap f) x H).join = pmap f x.join ⋯
state_after: no goals
Theorem: ContinuousAt.partialSups
File: Mathlib/Topology/Order/PartialSups.lean

tactic: simpa only [← partialSups_apply] using ContinuousAt.partialSups_apply hf
state_before: L : Type u_1
inst✝³ : SemilatticeSup L
inst✝² : TopologicalSpace L
inst✝¹ : ContinuousSup L
X : Type u_2
inst✝ : TopologicalSpace X
f : ℕ → X → L
n : ℕ
s : Set X
x : X
hf : ∀ k ≤ n, ContinuousAt (f k) x
⊢ ContinuousAt ((partialSups f) n) x
state_after: no goals
Theorem: MeasureTheory.Measure.addHaar_sphere
File: Mathlib/MeasureTheory/Measure/Lebesgue/EqHaar.lean

tactic: rcases eq_or_ne r 0 with (rfl | h)
state_before: E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : μ.IsAddHaarMeasure
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
⊢ μ (sphere x r) = 0
state_after: case inl
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : μ.IsAddHaarMeasure
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
⊢ μ (sphere x 0) = 0

case inr
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : μ.IsAddHaarMeasure
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
h : r ≠ 0
⊢ μ (sphere x r) = 0

tactic: rw [sphere_zero, measure_singleton]
state_before: case inl
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : μ.IsAddHaarMeasure
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
⊢ μ (sphere x 0) = 0
state_after: no goals

tactic: exact addHaar_sphere_of_ne_zero μ x h
state_before: case inr
E : Type u_1
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace ℝ E
inst✝⁷ : MeasurableSpace E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
μ : Measure E
inst✝⁴ : μ.IsAddHaarMeasure
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
s : Set E
inst✝ : Nontrivial E
x : E
r : ℝ
h : r ≠ 0
⊢ μ (sphere x r) = 0
state_after: no goals
Theorem: Ordinal.mex_le_of_ne
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simp [ha]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u_4
f : ι → Ordinal.{max u_5 u_4}
a : Ordinal.{max u_5 u_4}
ha : ∀ (i : ι), f i ≠ a
⊢ a ∈ (range f)ᶜ
state_after: no goals
Theorem: ZMod.coe_mul_inv_eq_one
File: Mathlib/Data/ZMod/Basic.lean

tactic: rw [Nat.Coprime, Nat.gcd_comm, Nat.gcd_rec] at h
state_before: n x : ℕ
h : x.Coprime n
⊢ ↑x * (↑x)⁻¹ = 1
state_after: n x : ℕ
h : (x % n).gcd n = 1
⊢ ↑x * (↑x)⁻¹ = 1

tactic: rw [mul_inv_eq_gcd, val_natCast, h, Nat.cast_one]
state_before: n x : ℕ
h : (x % n).gcd n = 1
⊢ ↑x * (↑x)⁻¹ = 1
state_after: no goals