1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MellinConvergent.comp_rpow
File: Mathlib/Analysis/MellinTransform.lean

tactic: refine Iff.trans ?_ (integrableOn_Ioi_comp_rpow_iff' _ ha)
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℝ → E
s : ℂ
a : ℝ
ha : a ≠ 0
⊢ MellinConvergent (fun t => f (t ^ a)) s ↔ MellinConvergent f (s / ↑a)
state_after: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℝ → E
s : ℂ
a : ℝ
ha : a ≠ 0
⊢ MellinConvergent (fun t => f (t ^ a)) s ↔
    IntegrableOn (fun x => x ^ (a - 1) • ↑(x ^ a) ^ (s / ↑a - 1) • f (x ^ a)) (Ioi 0) volume

tactic: rw [MellinConvergent]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℝ → E
s : ℂ
a : ℝ
ha : a ≠ 0
⊢ MellinConvergent (fun t => f (t ^ a)) s ↔
    IntegrableOn (fun x => x ^ (a - 1) • ↑(x ^ a) ^ (s / ↑a - 1) • f (x ^ a)) (Ioi 0) volume
state_after: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℝ → E
s : ℂ
a : ℝ
ha : a ≠ 0
⊢ IntegrableOn (fun t => ↑t ^ (s - 1) • f (t ^ a)) (Ioi 0) volume ↔
    IntegrableOn (fun x => x ^ (a - 1) • ↑(x ^ a) ^ (s / ↑a - 1) • f (x ^ a)) (Ioi 0) volume

tactic: refine integrableOn_congr_fun (fun t ht => ?_) measurableSet_Ioi
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℝ → E
s : ℂ
a : ℝ
ha : a ≠ 0
⊢ IntegrableOn (fun t => ↑t ^ (s - 1) • f (t ^ a)) (Ioi 0) volume ↔
    IntegrableOn (fun x => x ^ (a - 1) • ↑(x ^ a) ^ (s / ↑a - 1) • f (x ^ a)) (Ioi 0) volume
state_after: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℝ → E
s : ℂ
a : ℝ
ha : a ≠ 0
t : ℝ
ht : t ∈ Ioi 0
⊢ ↑t ^ (s - 1) • f (t ^ a) = t ^ (a - 1) • ↑(t ^ a) ^ (s / ↑a - 1) • f (t ^ a)

tactic: rw [← Complex.coe_smul (t ^ (a - 1)), ← mul_smul, ← cpow_mul_ofReal_nonneg (le_of_lt ht),
  ofReal_cpow (le_of_lt ht), ← cpow_add _ _ (ofReal_ne_zero.mpr (ne_of_gt ht)), ofReal_sub,
  ofReal_one, mul_sub, mul_div_cancel₀ _ (ofReal_ne_zero.mpr ha), mul_one, add_comm, ←
  add_sub_assoc, sub_add_cancel]
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℝ → E
s : ℂ
a : ℝ
ha : a ≠ 0
t : ℝ
ht : t ∈ Ioi 0
⊢ ↑t ^ (s - 1) • f (t ^ a) = t ^ (a - 1) • ↑(t ^ a) ^ (s / ↑a - 1) • f (t ^ a)
state_after: no goals
Theorem: Ordinal.fp_iff_derivBFamily
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: rw [← le_iff_derivBFamily H]
state_before: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
a : Ordinal.{max u v}
⊢ (∀ (i : Ordinal.{u}) (hi : i < o), f i hi a = a) ↔ ∃ b, o.derivBFamily f b = a
state_after: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
a : Ordinal.{max u v}
⊢ (∀ (i : Ordinal.{u}) (hi : i < o), f i hi a = a) ↔ ∀ (i : Ordinal.{u}) (hi : i < o), f i hi a ≤ a

tactic: refine ⟨fun h i hi => le_of_eq (h i hi), fun h i hi => ?_⟩
state_before: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
a : Ordinal.{max u v}
⊢ (∀ (i : Ordinal.{u}) (hi : i < o), f i hi a = a) ↔ ∀ (i : Ordinal.{u}) (hi : i < o), f i hi a ≤ a
state_after: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
a : Ordinal.{max u v}
h : ∀ (i : Ordinal.{u}) (hi : i < o), f i hi a ≤ a
i : Ordinal.{u}
hi : i < o
⊢ f i hi a = a

tactic: rw [← (H i hi).le_iff_eq]
state_before: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
a : Ordinal.{max u v}
h : ∀ (i : Ordinal.{u}) (hi : i < o), f i hi a ≤ a
i : Ordinal.{u}
hi : i < o
⊢ f i hi a = a
state_after: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
a : Ordinal.{max u v}
h : ∀ (i : Ordinal.{u}) (hi : i < o), f i hi a ≤ a
i : Ordinal.{u}
hi : i < o
⊢ f i hi a ≤ a

tactic: exact h i hi
state_before: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
a : Ordinal.{max u v}
h : ∀ (i : Ordinal.{u}) (hi : i < o), f i hi a ≤ a
i : Ordinal.{u}
hi : i < o
⊢ f i hi a ≤ a
state_after: no goals
Theorem: rank_range_le
File: Mathlib/LinearAlgebra/Dimension/Basic.lean

tactic: simpa using lift_rank_range_le f
state_before: R : Type u
R' : Type u'
M M₁ : Type v
M' : Type v'
inst✝⁹ : Ring R
inst✝⁸ : Ring R'
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : Module R' M'
inst✝ : Module R' M₁
f : M →ₗ[R] M₁
⊢ Module.rank R ↥(LinearMap.range f) ≤ Module.rank R M
state_after: no goals
Theorem: Function.extend_injective
File: Mathlib/Logic/Function/Basic.lean

tactic: intro g₁ g₂ hg
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
hf : Injective f
e' : β → γ
⊢ Injective fun g => extend f g e'
state_after: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
hf : Injective f
e' : β → γ
g₁ g₂ : α → γ
hg : (fun g => extend f g e') g₁ = (fun g => extend f g e') g₂
⊢ g₁ = g₂

tactic: refine funext fun x ↦ ?_
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
hf : Injective f
e' : β → γ
g₁ g₂ : α → γ
hg : (fun g => extend f g e') g₁ = (fun g => extend f g e') g₂
⊢ g₁ = g₂
state_after: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
hf : Injective f
e' : β → γ
g₁ g₂ : α → γ
hg : (fun g => extend f g e') g₁ = (fun g => extend f g e') g₂
x : α
⊢ g₁ x = g₂ x

tactic: have H := congr_fun hg (f x)
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
hf : Injective f
e' : β → γ
g₁ g₂ : α → γ
hg : (fun g => extend f g e') g₁ = (fun g => extend f g e') g₂
x : α
⊢ g₁ x = g₂ x
state_after: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
hf : Injective f
e' : β → γ
g₁ g₂ : α → γ
hg : (fun g => extend f g e') g₁ = (fun g => extend f g e') g₂
x : α
H : (fun g => extend f g e') g₁ (f x) = (fun g => extend f g e') g₂ (f x)
⊢ g₁ x = g₂ x

tactic: simp only [hf.extend_apply] at H
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
hf : Injective f
e' : β → γ
g₁ g₂ : α → γ
hg : (fun g => extend f g e') g₁ = (fun g => extend f g e') g₂
x : α
H : (fun g => extend f g e') g₁ (f x) = (fun g => extend f g e') g₂ (f x)
⊢ g₁ x = g₂ x
state_after: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
hf : Injective f
e' : β → γ
g₁ g₂ : α → γ
hg : (fun g => extend f g e') g₁ = (fun g => extend f g e') g₂
x : α
H : g₁ x = g₂ x
⊢ g₁ x = g₂ x

tactic: exact H
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β
hf : Injective f
e' : β → γ
g₁ g₂ : α → γ
hg : (fun g => extend f g e') g₁ = (fun g => extend f g e') g₂
x : α
H : g₁ x = g₂ x
⊢ g₁ x = g₂ x
state_after: no goals
Theorem: dvd_cancel_right_mem_nonZeroDivisors
File: Mathlib/Algebra/GroupWithZero/NonZeroDivisors.lean

tactic: rwa [← mul_cancel_right_mem_nonZeroDivisors hr, mul_assoc, mul_comm z r,
← mul_assoc]
state_before: M₀ : Type u_1
inst✝⁵ : MonoidWithZero M₀
M : Type u_2
M' : Type u_3
M₁ : Type u_4
R : Type u_5
R' : Type u_6
F : Type u_7
inst✝⁴ : MonoidWithZero M
inst✝³ : MonoidWithZero M'
inst✝² : CommMonoidWithZero M₁
inst✝¹ : Ring R
inst✝ : CommRing R'
x y r : R'
hr : r ∈ R'⁰
x✝ : x * r ∣ y * r
z : R'
h✝ : y * r = x * r * z
⊢ y = x * z
state_after: no goals

tactic: rw [h, mul_assoc, mul_comm z r, ← mul_assoc]
state_before: M₀ : Type u_1
inst✝⁵ : MonoidWithZero M₀
M : Type u_2
M' : Type u_3
M₁ : Type u_4
R : Type u_5
R' : Type u_6
F : Type u_7
inst✝⁴ : MonoidWithZero M
inst✝³ : MonoidWithZero M'
inst✝² : CommMonoidWithZero M₁
inst✝¹ : Ring R
inst✝ : CommRing R'
x y r : R'
hr : r ∈ R'⁰
x✝ : x ∣ y
z : R'
h : y = x * z
⊢ y * r = x * r * z
state_after: no goals
Theorem: AddCircle.coe_add_period
File: Mathlib/Topology/Instances/AddCircle.lean

tactic: rw [coe_add, ← eq_sub_iff_add_eq', sub_self, coe_period]
state_before: 𝕜 : Type u_1
B : Type u_2
inst✝² : LinearOrderedAddCommGroup 𝕜
inst✝¹ : TopologicalSpace 𝕜
inst✝ : OrderTopology 𝕜
p x : 𝕜
⊢ ↑(x + p) = ↑x
state_after: no goals
Theorem: mabs_le_mabs_of_one_le
File: Mathlib/Algebra/Order/Group/Abs.lean

tactic: rwa [mabs_of_one_le ha, mabs_of_one_le (ha.trans hab)]
state_before: α : Type u_1
inst✝² : Lattice α
inst✝¹ : Group α
a b : α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
ha : 1 ≤ a
hab : a ≤ b
⊢ mabs a ≤ mabs b
state_after: no goals
Theorem: NNRat.cast_natCast
File: Mathlib/Data/Rat/Cast/Defs.lean

tactic: simp [cast_def]
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
inst✝ : DivisionSemiring α
q r : ℚ≥0
n : ℕ
⊢ ↑↑n = ↑n
state_after: no goals
Theorem: Polynomial.nextCoeff_map
File: Mathlib/Algebra/Polynomial/Monic.lean

tactic: unfold nextCoeff
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝¹ : Semiring R
inst✝ : Semiring S
f : R →+* S
hf : Injective ⇑f
p : R[X]
⊢ (map f p).nextCoeff = f p.nextCoeff
state_after: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝¹ : Semiring R
inst✝ : Semiring S
f : R →+* S
hf : Injective ⇑f
p : R[X]
⊢ (if (map f p).natDegree = 0 then 0 else (map f p).coeff ((map f p).natDegree - 1)) =
    f (if p.natDegree = 0 then 0 else p.coeff (p.natDegree - 1))

tactic: rw [natDegree_map_eq_of_injective hf]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝¹ : Semiring R
inst✝ : Semiring S
f : R →+* S
hf : Injective ⇑f
p : R[X]
⊢ (if (map f p).natDegree = 0 then 0 else (map f p).coeff ((map f p).natDegree - 1)) =
    f (if p.natDegree = 0 then 0 else p.coeff (p.natDegree - 1))
state_after: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝¹ : Semiring R
inst✝ : Semiring S
f : R →+* S
hf : Injective ⇑f
p : R[X]
⊢ (if p.natDegree = 0 then 0 else (map f p).coeff (p.natDegree - 1)) =
    f (if p.natDegree = 0 then 0 else p.coeff (p.natDegree - 1))

tactic: split_ifs <;> simp [*]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝¹ : Semiring R
inst✝ : Semiring S
f : R →+* S
hf : Injective ⇑f
p : R[X]
⊢ (if p.natDegree = 0 then 0 else (map f p).coeff (p.natDegree - 1)) =
    f (if p.natDegree = 0 then 0 else p.coeff (p.natDegree - 1))
state_after: no goals
Theorem: CategoryTheory.OverPresheafAux.unitForward_naturality₁
File: Mathlib/CategoryTheory/Comma/Presheaf.lean

tactic: simp [unitForward]
state_before: C : Type u
inst✝ : Category.{v, u} C
A F G : Cᵒᵖ ⥤ Type v
η : F ⟶ A
μ : G ⟶ A
ε : F ⟶ G
hε : ε ≫ μ = η
X : C
p : YonedaCollection (restrictedYonedaObj η) X
⊢ unitForward μ X (YonedaCollection.map₁ (restrictedYonedaObjMap₁ ε hε) p) = ε.app { unop := X } (unitForward η X p)
state_after: no goals
Theorem: Matrix.blockDiagonal_one
File: Mathlib/Data/Matrix/Block.lean

tactic: rw [blockDiagonal_diagonal]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝⁴ : DecidableEq o
inst✝³ : Zero α
inst✝² : Zero β
inst✝¹ : DecidableEq m
inst✝ : One α
⊢ (blockDiagonal fun x => diagonal fun x => 1) = diagonal fun x => 1
state_after: no goals
Theorem: OrderBot.ext_bot
File: Mathlib/Order/BoundedOrder.lean

tactic: cases PartialOrder.ext H
state_before: α✝ : Type u
β : Type v
γ : Type u_1
δ : Type u_2
α : Type u_3
hA : PartialOrder α
A : OrderBot α
hB : PartialOrder α
B : OrderBot α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
⊢ ⊥ = ⊥
state_after: case refl
α✝ : Type u
β : Type v
γ : Type u_1
δ : Type u_2
α : Type u_3
hA : PartialOrder α
A B : OrderBot α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
⊢ ⊥ = ⊥

tactic: apply bot_unique
state_before: case refl
α✝ : Type u
β : Type v
γ : Type u_1
δ : Type u_2
α : Type u_3
hA : PartialOrder α
A B : OrderBot α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
⊢ ⊥ = ⊥
state_after: case refl.h
α✝ : Type u
β : Type v
γ : Type u_1
δ : Type u_2
α : Type u_3
hA : PartialOrder α
A B : OrderBot α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
⊢ ⊥ ≤ ⊥

tactic: exact @bot_le _ _ A _
state_before: case refl.h
α✝ : Type u
β : Type v
γ : Type u_1
δ : Type u_2
α : Type u_3
hA : PartialOrder α
A B : OrderBot α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
⊢ ⊥ ≤ ⊥
state_after: no goals
Theorem: MeasureTheory.ae_eq_condexp_of_forall_setIntegral_eq
File: Mathlib/MeasureTheory/Function/ConditionalExpectation/Basic.lean

tactic: refine ae_eq_of_forall_setIntegral_eq_of_sigmaFinite' hm hg_int_finite
  (fun s _ _ => integrable_condexp.integrableOn) (fun s hs hμs => ?_) hgm
  (StronglyMeasurable.aeStronglyMeasurable' stronglyMeasurable_condexp)
state_before: α : Type u_1
F : Type u_2
F' : Type u_3
𝕜 : Type u_4
p : ℝ≥0∞
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace 𝕜 F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : CompleteSpace F'
m m0 : MeasurableSpace α
μ : Measure α
f✝ g✝ : α → F'
s : Set α
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
f g : α → F'
hf : Integrable f μ
hg_int_finite : ∀ (s : Set α), MeasurableSet s → μ s < ⊤ → IntegrableOn g s μ
hg_eq : ∀ (s : Set α), MeasurableSet s → μ s < ⊤ → ∫ (x : α) in s, g x ∂μ = ∫ (x : α) in s, f x ∂μ
hgm : AEStronglyMeasurable' m g μ
⊢ g =ᶠ[ae μ] μ[f|m]
state_after: α : Type u_1
F : Type u_2
F' : Type u_3
𝕜 : Type u_4
p : ℝ≥0∞
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace 𝕜 F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : CompleteSpace F'
m m0 : MeasurableSpace α
μ : Measure α
f✝ g✝ : α → F'
s✝ : Set α
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
f g : α → F'
hf : Integrable f μ
hg_int_finite : ∀ (s : Set α), MeasurableSet s → μ s < ⊤ → IntegrableOn g s μ
hg_eq : ∀ (s : Set α), MeasurableSet s → μ s < ⊤ → ∫ (x : α) in s, g x ∂μ = ∫ (x : α) in s, f x ∂μ
hgm : AEStronglyMeasurable' m g μ
s : Set α
hs : MeasurableSet s
hμs : μ s < ⊤
⊢ ∫ (x : α) in s, g x ∂μ = ∫ (x : α) in s, (μ[f|m]) x ∂μ

tactic: rw [hg_eq s hs hμs, setIntegral_condexp hm hf hs]
state_before: α : Type u_1
F : Type u_2
F' : Type u_3
𝕜 : Type u_4
p : ℝ≥0∞
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace 𝕜 F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : CompleteSpace F'
m m0 : MeasurableSpace α
μ : Measure α
f✝ g✝ : α → F'
s✝ : Set α
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
f g : α → F'
hf : Integrable f μ
hg_int_finite : ∀ (s : Set α), MeasurableSet s → μ s < ⊤ → IntegrableOn g s μ
hg_eq : ∀ (s : Set α), MeasurableSet s → μ s < ⊤ → ∫ (x : α) in s, g x ∂μ = ∫ (x : α) in s, f x ∂μ
hgm : AEStronglyMeasurable' m g μ
s : Set α
hs : MeasurableSet s
hμs : μ s < ⊤
⊢ ∫ (x : α) in s, g x ∂μ = ∫ (x : α) in s, (μ[f|m]) x ∂μ
state_after: no goals
Theorem: Set.ncard_diff_singleton_le
File: Mathlib/Data/Set/Card.lean

tactic: obtain hs | hs := s.finite_or_infinite
state_before: α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
⊢ (s \ {a}).ncard ≤ s.ncard
state_after: case inl
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Finite
⊢ (s \ {a}).ncard ≤ s.ncard

case inr
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ (s \ {a}).ncard ≤ s.ncard

tactic: convert @zero_le ℕ _ _
state_before: case inr
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ (s \ {a}).ncard ≤ s.ncard
state_after: case h.e'_3
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ (s \ {a}).ncard = 0

tactic: exact (hs.diff (by simp : Set.Finite {a})).ncard
state_before: case h.e'_3
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ (s \ {a}).ncard = 0
state_after: no goals

tactic: apply ncard_le_ncard diff_subset hs
state_before: case inl
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Finite
⊢ (s \ {a}).ncard ≤ s.ncard
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ {a}.Finite
state_after: no goals
Theorem: dist_vsub_vsub_le
File: Mathlib/Analysis/Normed/Group/AddTorsor.lean

tactic: rw [dist_eq_norm, vsub_sub_vsub_comm, dist_eq_norm_vsub V, dist_eq_norm_vsub V]
state_before: α : Type u_1
V : Type u_2
P : Type u_3
W : Type u_4
Q : Type u_5
inst✝⁵ : SeminormedAddCommGroup V
inst✝⁴ : PseudoMetricSpace P
inst✝³ : NormedAddTorsor V P
inst✝² : NormedAddCommGroup W
inst✝¹ : MetricSpace Q
inst✝ : NormedAddTorsor W Q
p₁ p₂ p₃ p₄ : P
⊢ dist (p₁ -ᵥ p₂) (p₃ -ᵥ p₄) ≤ dist p₁ p₃ + dist p₂ p₄
state_after: α : Type u_1
V : Type u_2
P : Type u_3
W : Type u_4
Q : Type u_5
inst✝⁵ : SeminormedAddCommGroup V
inst✝⁴ : PseudoMetricSpace P
inst✝³ : NormedAddTorsor V P
inst✝² : NormedAddCommGroup W
inst✝¹ : MetricSpace Q
inst✝ : NormedAddTorsor W Q
p₁ p₂ p₃ p₄ : P
⊢ ‖p₁ -ᵥ p₃ - (p₂ -ᵥ p₄)‖ ≤ ‖p₁ -ᵥ p₃‖ + ‖p₂ -ᵥ p₄‖

tactic: exact norm_sub_le _ _
state_before: α : Type u_1
V : Type u_2
P : Type u_3
W : Type u_4
Q : Type u_5
inst✝⁵ : SeminormedAddCommGroup V
inst✝⁴ : PseudoMetricSpace P
inst✝³ : NormedAddTorsor V P
inst✝² : NormedAddCommGroup W
inst✝¹ : MetricSpace Q
inst✝ : NormedAddTorsor W Q
p₁ p₂ p₃ p₄ : P
⊢ ‖p₁ -ᵥ p₃ - (p₂ -ᵥ p₄)‖ ≤ ‖p₁ -ᵥ p₃‖ + ‖p₂ -ᵥ p₄‖
state_after: no goals
Theorem: equicontinuousWithinAt_iInf_rng
File: Mathlib/Topology/UniformSpace/Equicontinuity.lean

tactic: simp only [equicontinuousWithinAt_iff_continuousWithinAt (uα := _), topologicalSpace]
state_before: ι : Type u_1
κ : Type u_2
X : Type u_3
X' : Type u_4
Y : Type u_5
Z : Type u_6
α : Type u_7
α' : Type u_8
β : Type u_9
β' : Type u_10
γ : Type u_11
𝓕 : Type u_12
tX : TopologicalSpace X
tY : TopologicalSpace Y
tZ : TopologicalSpace Z
uα : UniformSpace α
uβ : UniformSpace β
uγ : UniformSpace γ
u : κ → UniformSpace α'
F : ι → X → α'
S : Set X
x₀ : X
⊢ EquicontinuousWithinAt F S x₀ ↔ ∀ (k : κ), EquicontinuousWithinAt F S x₀
state_after: ι : Type u_1
κ : Type u_2
X : Type u_3
X' : Type u_4
Y : Type u_5
Z : Type u_6
α : Type u_7
α' : Type u_8
β : Type u_9
β' : Type u_10
γ : Type u_11
𝓕 : Type u_12
tX : TopologicalSpace X
tY : TopologicalSpace Y
tZ : TopologicalSpace Z
uα : UniformSpace α
uβ : UniformSpace β
uγ : UniformSpace γ
u : κ → UniformSpace α'
F : ι → X → α'
S : Set X
x₀ : X
⊢ ContinuousWithinAt (⇑UniformFun.ofFun ∘ swap F) S x₀ ↔ ∀ (k : κ), ContinuousWithinAt (⇑UniformFun.ofFun ∘ swap F) S x₀

tactic: unfold ContinuousWithinAt
state_before: ι : Type u_1
κ : Type u_2
X : Type u_3
X' : Type u_4
Y : Type u_5
Z : Type u_6
α : Type u_7
α' : Type u_8
β : Type u_9
β' : Type u_10
γ : Type u_11
𝓕 : Type u_12
tX : TopologicalSpace X
tY : TopologicalSpace Y
tZ : TopologicalSpace Z
uα : UniformSpace α
uβ : UniformSpace β
uγ : UniformSpace γ
u : κ → UniformSpace α'
F : ι → X → α'
S : Set X
x₀ : X
⊢ ContinuousWithinAt (⇑UniformFun.ofFun ∘ swap F) S x₀ ↔ ∀ (k : κ), ContinuousWithinAt (⇑UniformFun.ofFun ∘ swap F) S x₀
state_after: ι : Type u_1
κ : Type u_2
X : Type u_3
X' : Type u_4
Y : Type u_5
Z : Type u_6
α : Type u_7
α' : Type u_8
β : Type u_9
β' : Type u_10
γ : Type u_11
𝓕 : Type u_12
tX : TopologicalSpace X
tY : TopologicalSpace Y
tZ : TopologicalSpace Z
uα : UniformSpace α
uβ : UniformSpace β
uγ : UniformSpace γ
u : κ → UniformSpace α'
F : ι → X → α'
S : Set X
x₀ : X
⊢ Tendsto (⇑UniformFun.ofFun ∘ swap F) (𝓝[S] x₀) (𝓝 ((⇑UniformFun.ofFun ∘ swap F) x₀)) ↔
    ∀ (k : κ), Tendsto (⇑UniformFun.ofFun ∘ swap F) (𝓝[S] x₀) (𝓝 ((⇑UniformFun.ofFun ∘ swap F) x₀))

tactic: rw [UniformFun.iInf_eq, toTopologicalSpace_iInf, nhds_iInf, tendsto_iInf]
state_before: ι : Type u_1
κ : Type u_2
X : Type u_3
X' : Type u_4
Y : Type u_5
Z : Type u_6
α : Type u_7
α' : Type u_8
β : Type u_9
β' : Type u_10
γ : Type u_11
𝓕 : Type u_12
tX : TopologicalSpace X
tY : TopologicalSpace Y
tZ : TopologicalSpace Z
uα : UniformSpace α
uβ : UniformSpace β
uγ : UniformSpace γ
u : κ → UniformSpace α'
F : ι → X → α'
S : Set X
x₀ : X
⊢ Tendsto (⇑UniformFun.ofFun ∘ swap F) (𝓝[S] x₀) (𝓝 ((⇑UniformFun.ofFun ∘ swap F) x₀)) ↔
    ∀ (k : κ), Tendsto (⇑UniformFun.ofFun ∘ swap F) (𝓝[S] x₀) (𝓝 ((⇑UniformFun.ofFun ∘ swap F) x₀))
state_after: no goals
Theorem: List.injective_permutations'Aux
File: Mathlib/Data/List/Perm.lean

tactic: intro s t h
state_before: α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
⊢ Function.Injective (permutations'Aux x)
state_after: α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
⊢ s = t

tactic: apply insertNth_injective s.length x
state_before: α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
⊢ s = t
state_after: case a
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
⊢ insertNth s.length x s = insertNth s.length x t

tactic: have hl : s.length = t.length := by simpa using congr_arg length h
state_before: case a
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
⊢ insertNth s.length x s = insertNth s.length x t
state_after: case a
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
hl : s.length = t.length
⊢ insertNth s.length x s = insertNth s.length x t

tactic: rw [← get_permutations'Aux s x s.length (by simp),
  ← get_permutations'Aux t x s.length (by simp [hl])]
state_before: case a
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
hl : s.length = t.length
⊢ insertNth s.length x s = insertNth s.length x t
state_after: case a
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
hl : s.length = t.length
⊢ (permutations'Aux x s).get ⟨s.length, ⋯⟩ = (permutations'Aux x t).get ⟨s.length, ⋯⟩

tactic: simp only [get_eq_getElem, h, hl]
state_before: case a
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
hl : s.length = t.length
⊢ (permutations'Aux x s).get ⟨s.length, ⋯⟩ = (permutations'Aux x t).get ⟨s.length, ⋯⟩
state_after: no goals

tactic: simpa using congr_arg length h
state_before: α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
⊢ s.length = t.length
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
hl : s.length = t.length
⊢ s.length < (permutations'Aux x s).length
state_after: no goals

tactic: simp [hl]
state_before: α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
s t : List α
h : permutations'Aux x s = permutations'Aux x t
hl : s.length = t.length
⊢ s.length < (permutations'Aux x t).length
state_after: no goals
Theorem: Int.Prime.dvd_pow
File: Mathlib/RingTheory/Int/Basic.lean

tactic: rw [Int.natCast_dvd, Int.natAbs_pow] at h
state_before: n : ℤ
k p : ℕ
hp : Nat.Prime p
h : ↑p ∣ n ^ k
⊢ p ∣ n.natAbs
state_after: n : ℤ
k p : ℕ
hp : Nat.Prime p
h : p ∣ n.natAbs ^ k
⊢ p ∣ n.natAbs

tactic: exact hp.dvd_of_dvd_pow h
state_before: n : ℤ
k p : ℕ
hp : Nat.Prime p
h : p ∣ n.natAbs ^ k
⊢ p ∣ n.natAbs
state_after: no goals
Theorem: ProbabilityTheory.iCondIndepFun_iff_iCondIndep
File: Mathlib/Probability/Independence/Conditional.lean

tactic: simp only [iCondIndepFun, iCondIndep, kernel.iIndepFun]
state_before: Ω : Type u_1
ι : Type u_2
m' mΩ : MeasurableSpace Ω
inst✝² : StandardBorelSpace Ω
inst✝¹ : Nonempty Ω
hm' : m' ≤ mΩ
β : ι → Type u_3
m : (x : ι) → MeasurableSpace (β x)
f : (x : ι) → Ω → β x
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
⊢ iCondIndepFun m' hm' m f μ ↔ iCondIndep m' hm' (fun x => MeasurableSpace.comap (f x) (m x)) μ
state_after: no goals
Theorem: Nat.choose_eq_asc_factorial_div_factorial
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: apply Nat.mul_left_cancel k.factorial_pos
state_before: n k : ℕ
⊢ (n + k).choose k = (n + 1).ascFactorial k / k !
state_after: n k : ℕ
⊢ k ! * (n + k).choose k = k ! * ((n + 1).ascFactorial k / k !)

tactic: rw [← ascFactorial_eq_factorial_mul_choose]
state_before: n k : ℕ
⊢ k ! * (n + k).choose k = k ! * ((n + 1).ascFactorial k / k !)
state_after: n k : ℕ
⊢ (n + 1).ascFactorial k = k ! * ((n + 1).ascFactorial k / k !)

tactic: exact (Nat.mul_div_cancel' <| factorial_dvd_ascFactorial _ _).symm
state_before: n k : ℕ
⊢ (n + 1).ascFactorial k = k ! * ((n + 1).ascFactorial k / k !)
state_after: no goals