1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: TensorProduct.lift_mk_compr₂
File: Mathlib/LinearAlgebra/TensorProduct/Basic.lean

tactic: rw [lift_compr₂ f, lift_mk, LinearMap.comp_id]
state_before: R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type u_2
inst✝¹⁵ : Monoid R'
R'' : Type u_3
inst✝¹⁴ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : AddCommMonoid T
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Module R S
inst✝² : Module R T
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
f✝ : M →ₗ[R] N →ₗ[R] P
f : M ⊗[R] N →ₗ[R] P
⊢ lift ((mk R M N).compr₂ f) = f
state_after: no goals
Theorem: PMF.toMeasure_uniformOfFintype_apply
File: Mathlib/Probability/Distributions/Uniform.lean

tactic: simp [uniformOfFintype, hs]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : Fintype α
inst✝¹ : Nonempty α
s : Set α
inst✝ : MeasurableSpace α
hs : MeasurableSet s
⊢ (uniformOfFintype α).toMeasure s = ↑(Fintype.card ↑s) / ↑(Fintype.card α)
state_after: no goals
Theorem: Multiset.pairwise_coe_iff
File: Mathlib/Data/Multiset/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type v
γ : Type u_2
r : α → α → Prop
l : List α
⊢ ∀ (a : List α), ↑l = ↑a ∧ List.Pairwise r a ↔ l ~ a ∧ List.Pairwise r a
state_after: no goals
Theorem: Ideal.disjoint_powers_iff_not_mem
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: refine ⟨fun h => Set.disjoint_left.1 h (Submonoid.mem_powers _),
    fun h => disjoint_iff.mpr (eq_bot_iff.mpr ?_)⟩
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
y : R
hI : I.IsRadical
⊢ Disjoint ↑(Submonoid.powers y) ↑I ↔ y ∉ I.toAddSubmonoid
state_after: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
y : R
hI : I.IsRadical
h : y ∉ I.toAddSubmonoid
⊢ ↑(Submonoid.powers y) ⊓ ↑I ≤ ⊥

tactic: rintro x ⟨⟨n, rfl⟩, hx'⟩
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
y : R
hI : I.IsRadical
h : y ∉ I.toAddSubmonoid
⊢ ↑(Submonoid.powers y) ⊓ ↑I ≤ ⊥
state_after: case intro.intro
R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
y : R
hI : I.IsRadical
h : y ∉ I.toAddSubmonoid
n : ℕ
hx' : (fun x => y ^ x) n ∈ ↑I
⊢ (fun x => y ^ x) n ∈ ⊥

tactic: exact h (hI <| mem_radical_of_pow_mem <| le_radical hx')
state_before: case intro.intro
R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
y : R
hI : I.IsRadical
h : y ∉ I.toAddSubmonoid
n : ℕ
hx' : (fun x => y ^ x) n ∈ ↑I
⊢ (fun x => y ^ x) n ∈ ⊥
state_after: no goals
Theorem: GeneralizedContinuedFraction.denominators_stable_of_terminated
File: Mathlib/Algebra/ContinuedFractions/TerminatedStable.lean

tactic: simp only [denom_eq_conts_b, continuants_stable_of_terminated n_le_m terminated_at_n]
state_before: K : Type u_1
g : GeneralizedContinuedFraction K
n m : ℕ
inst✝ : DivisionRing K
n_le_m : n ≤ m
terminated_at_n : g.TerminatedAt n
⊢ g.denominators m = g.denominators n
state_after: no goals
Theorem: NumberField.InfinitePlace.nrRealPlaces_eq_one_of_finrank_eq_one
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: have := card_add_two_mul_card_eq_rank K
state_before: k : Type u_1
inst✝³ : Field k
K : Type u_2
inst✝² : Field K
F : Type u_3
inst✝¹ : Field F
inst✝ : NumberField K
h : finrank ℚ K = 1
⊢ NrRealPlaces K = 1
state_after: k : Type u_1
inst✝³ : Field k
K : Type u_2
inst✝² : Field K
F : Type u_3
inst✝¹ : Field F
inst✝ : NumberField K
h : finrank ℚ K = 1
this : NrRealPlaces K + 2 * NrComplexPlaces K = finrank ℚ K
⊢ NrRealPlaces K = 1

tactic: rwa [nrComplexPlaces_eq_zero_of_finrank_eq_one h, h, mul_zero, add_zero] at this
state_before: k : Type u_1
inst✝³ : Field k
K : Type u_2
inst✝² : Field K
F : Type u_3
inst✝¹ : Field F
inst✝ : NumberField K
h : finrank ℚ K = 1
this : NrRealPlaces K + 2 * NrComplexPlaces K = finrank ℚ K
⊢ NrRealPlaces K = 1
state_after: no goals
Theorem: Module.DualBases.dual_lc
File: Mathlib/LinearAlgebra/Dual.lean

tactic: rw [lc, _root_.map_finsupp_sum, Finsupp.sum_eq_single i (g := fun a b ↦ (ε i) (b • e a))]
state_before: R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
e : ι → M
ε : ι → Dual R M
inst✝ : DecidableEq ι
h : DualBases e ε
l : ι →₀ R
i : ι
⊢ (ε i) (lc e l) = l i
state_after: R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
e : ι → M
ε : ι → Dual R M
inst✝ : DecidableEq ι
h : DualBases e ε
l : ι →₀ R
i : ι
⊢ (ε i) (l i • e i) = l i

case h₀
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
e : ι → M
ε : ι → Dual R M
inst✝ : DecidableEq ι
h : DualBases e ε
l : ι →₀ R
i : ι
⊢ ∀ (b : ι), l b ≠ 0 → b ≠ i → (ε i) (l b • e b) = 0

case h₁
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
e : ι → M
ε : ι → Dual R M
inst✝ : DecidableEq ι
h : DualBases e ε
l : ι →₀ R
i : ι
⊢ l i = 0 → (ε i) (0 • e i) = 0

tactic: simp [h.eval, smul_eq_mul]
state_before: R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
e : ι → M
ε : ι → Dual R M
inst✝ : DecidableEq ι
h : DualBases e ε
l : ι →₀ R
i : ι
⊢ (ε i) (l i • e i) = l i
state_after: no goals

tactic: intro q _ q_ne
state_before: case h₀
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
e : ι → M
ε : ι → Dual R M
inst✝ : DecidableEq ι
h : DualBases e ε
l : ι →₀ R
i : ι
⊢ ∀ (b : ι), l b ≠ 0 → b ≠ i → (ε i) (l b • e b) = 0
state_after: case h₀
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
e : ι → M
ε : ι → Dual R M
inst✝ : DecidableEq ι
h : DualBases e ε
l : ι →₀ R
i q : ι
a✝ : l q ≠ 0
q_ne : q ≠ i
⊢ (ε i) (l q • e q) = 0

tactic: simp [q_ne.symm, h.eval, smul_eq_mul]
state_before: case h₀
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
e : ι → M
ε : ι → Dual R M
inst✝ : DecidableEq ι
h : DualBases e ε
l : ι →₀ R
i q : ι
a✝ : l q ≠ 0
q_ne : q ≠ i
⊢ (ε i) (l q • e q) = 0
state_after: no goals

tactic: simp
state_before: case h₁
R : Type u_1
M : Type u_2
ι : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
e : ι → M
ε : ι → Dual R M
inst✝ : DecidableEq ι
h : DualBases e ε
l : ι →₀ R
i : ι
⊢ l i = 0 → (ε i) (0 • e i) = 0
state_after: no goals
Theorem: CategoryTheory.Limits.hasLimitOfEquivalenceComp
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

tactic: haveI : HasLimit (e.inverse ⋙ e.functor ⋙ F) := Limits.hasLimitEquivalenceComp e.symm
state_before: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u
inst✝¹ : Category.{v, u} C
F : J ⥤ C
e : K ≌ J
inst✝ : HasLimit (e.functor ⋙ F)
⊢ HasLimit F
state_after: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u
inst✝¹ : Category.{v, u} C
F : J ⥤ C
e : K ≌ J
inst✝ : HasLimit (e.functor ⋙ F)
this : HasLimit (e.inverse ⋙ e.functor ⋙ F)
⊢ HasLimit F

tactic: apply hasLimitOfIso (e.invFunIdAssoc F)
state_before: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u
inst✝¹ : Category.{v, u} C
F : J ⥤ C
e : K ≌ J
inst✝ : HasLimit (e.functor ⋙ F)
this : HasLimit (e.inverse ⋙ e.functor ⋙ F)
⊢ HasLimit F
state_after: no goals
Theorem: monovaryOn_inv₀
File: Mathlib/Algebra/Order/Monovary.lean

tactic: rw [monovaryOn_inv_left₀ hf, antivaryOn_inv_right₀ hg]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedSemifield α
inst✝ : LinearOrderedSemifield β
s : Set ι
f f₁ f₂ : ι → α
g g₁ g₂ : ι → β
hf : ∀ i ∈ s, 0 < f i
hg : ∀ i ∈ s, 0 < g i
⊢ MonovaryOn f⁻¹ g⁻¹ s ↔ MonovaryOn f g s
state_after: no goals
Theorem: Real.isLUB_sSup
File: Mathlib/Data/Real/Archimedean.lean

tactic: simp only [sSup_def, dif_pos (And.intro h₁ h₂)]
state_before: S : Set ℝ
h₁ : S.Nonempty
h₂ : BddAbove S
⊢ IsLUB S (sSup S)
state_after: S : Set ℝ
h₁ : S.Nonempty
h₂ : BddAbove S
⊢ IsLUB S (Classical.choose ⋯)

tactic: apply Classical.choose_spec
state_before: S : Set ℝ
h₁ : S.Nonempty
h₂ : BddAbove S
⊢ IsLUB S (Classical.choose ⋯)
state_after: no goals
Theorem: PiLp.norm_eq_of_nat
File: Mathlib/Analysis/NormedSpace/PiLp.lean

tactic: have := p.toReal_pos_iff_ne_top.mpr (ne_of_eq_of_ne h <| ENNReal.natCast_ne_top n)
state_before: p✝ : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
inst✝³ : Fact (1 ≤ p✝)
inst✝² : Fintype ι
p : ℝ≥0∞
inst✝¹ : Fact (1 ≤ p)
β : ι → Type u_5
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
n : ℕ
h : p = ↑n
f : PiLp p β
⊢ ‖f‖ = (∑ i : ι, ‖f i‖ ^ n) ^ (1 / ↑n)
state_after: p✝ : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
inst✝³ : Fact (1 ≤ p✝)
inst✝² : Fintype ι
p : ℝ≥0∞
inst✝¹ : Fact (1 ≤ p)
β : ι → Type u_5
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
n : ℕ
h : p = ↑n
f : PiLp p β
this : 0 < p.toReal
⊢ ‖f‖ = (∑ i : ι, ‖f i‖ ^ n) ^ (1 / ↑n)

tactic: simp only [one_div, h, Real.rpow_natCast, ENNReal.toReal_nat, eq_self_iff_true, Finset.sum_congr,
  norm_eq_sum this]
state_before: p✝ : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β✝ : ι → Type u_4
inst✝³ : Fact (1 ≤ p✝)
inst✝² : Fintype ι
p : ℝ≥0∞
inst✝¹ : Fact (1 ≤ p)
β : ι → Type u_5
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
n : ℕ
h : p = ↑n
f : PiLp p β
this : 0 < p.toReal
⊢ ‖f‖ = (∑ i : ι, ‖f i‖ ^ n) ^ (1 / ↑n)
state_after: no goals
Theorem: inf_eq_half_smul_add_sub_abs_sub
File: Mathlib/Algebra/Order/Module/OrderedSMul.lean

tactic: rw [← two_nsmul_inf_eq_add_sub_abs_sub x y, two_smul, ← two_smul α,
  smul_smul, invOf_mul_self, one_smul]
state_before: ι : Type u_1
α✝ : Type u_2
β✝ : Type u_3
γ : Type u_4
𝕜 : Type u_5
R : Type u_6
M : Type u_7
N : Type u_8
α : Type u_9
β : Type u_10
inst✝⁵ : Semiring α
inst✝⁴ : Invertible 2
inst✝³ : Lattice β
inst✝² : AddCommGroup β
inst✝¹ : Module α β
inst✝ : CovariantClass β β (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
x y : β
⊢ x ⊓ y = ⅟2 • (x + y - |y - x|)
state_after: no goals
Theorem: InnerProductGeometry.angle_add_lt_pi_div_two_of_inner_eq_zero
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

tactic: rw [angle_add_eq_arccos_of_inner_eq_zero h, Real.arccos_lt_pi_div_two,
  norm_add_eq_sqrt_iff_real_inner_eq_zero.2 h]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : x ≠ 0
⊢ angle x (x + y) < π / 2
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : x ≠ 0
⊢ 0 < ‖x‖ / √(‖x‖ * ‖x‖ + ‖y‖ * ‖y‖)

tactic: exact div_pos (norm_pos_iff.2 h0) (Real.sqrt_pos.2 (Left.add_pos_of_pos_of_nonneg
  (mul_self_pos.2 (norm_ne_zero_iff.2 h0)) (mul_self_nonneg _)))
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : x ≠ 0
⊢ 0 < ‖x‖ / √(‖x‖ * ‖x‖ + ‖y‖ * ‖y‖)
state_after: no goals
Theorem: coord_norm'
File: Mathlib/Analysis/NormedSpace/HahnBanach/Extension.lean

tactic: set_option maxSynthPendingDepth 2 in
rw [norm_smul (α := 𝕜) (x := coord 𝕜 x h), RCLike.norm_coe_norm, coord_norm,
  mul_inv_cancel (mt norm_eq_zero.mp h)]
state_before: 𝕜 : Type v
inst✝² : RCLike 𝕜
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
h : x ≠ 0
⊢ ‖↑‖x‖ • coord 𝕜 x h‖ = 1
state_after: no goals

tactic: rw [norm_smul (α := 𝕜) (x := coord 𝕜 x h), RCLike.norm_coe_norm, coord_norm,
  mul_inv_cancel (mt norm_eq_zero.mp h)]
state_before: 𝕜 : Type v
inst✝² : RCLike 𝕜
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x : E
h : x ≠ 0
⊢ ‖↑‖x‖ • coord 𝕜 x h‖ = 1
state_after: no goals
Theorem: InnerProductSpaceable.nat_prop
File: Mathlib/Analysis/InnerProductSpace/OfNorm.lean

tactic: simp only [map_natCast]
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
r : ℕ
x y : E
⊢ inner_ 𝕜 (↑r • x) y = (starRingEnd 𝕜) ↑r * inner_ 𝕜 x y
state_after: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
r : ℕ
x y : E
⊢ inner_ 𝕜 (↑r • x) y = ↑r * inner_ 𝕜 x y

tactic: exact nat r x y
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
r : ℕ
x y : E
⊢ inner_ 𝕜 (↑r • x) y = ↑r * inner_ 𝕜 x y
state_after: no goals
Theorem: Sum.map_surjective
File: Mathlib/Data/Sum/Basic.lean

tactic: obtain ⟨a | b, h⟩ := h (inl c)
state_before: α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
f : α → γ
g : β → δ
h : Surjective (Sum.map f g)
c : γ
⊢ ∃ a, f a = c
state_after: case intro.inl
α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
f : α → γ
g : β → δ
h✝ : Surjective (Sum.map f g)
c : γ
a : α
h : Sum.map f g (inl a) = inl c
⊢ ∃ a, f a = c

case intro.inr
α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
f : α → γ
g : β → δ
h✝ : Surjective (Sum.map f g)
c : γ
b : β
h : Sum.map f g (inr b) = inl c
⊢ ∃ a, f a = c

tactic: exact ⟨a, inl_injective h⟩
state_before: case intro.inl
α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
f : α → γ
g : β → δ
h✝ : Surjective (Sum.map f g)
c : γ
a : α
h : Sum.map f g (inl a) = inl c
⊢ ∃ a, f a = c
state_after: no goals

tactic: cases h
state_before: case intro.inr
α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
f : α → γ
g : β → δ
h✝ : Surjective (Sum.map f g)
c : γ
b : β
h : Sum.map f g (inr b) = inl c
⊢ ∃ a, f a = c
state_after: no goals

tactic: obtain ⟨a | b, h⟩ := h (inr d)
state_before: α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
f : α → γ
g : β → δ
h : Surjective (Sum.map f g)
d : δ
⊢ ∃ a, g a = d
state_after: case intro.inl
α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
f : α → γ
g : β → δ
h✝ : Surjective (Sum.map f g)
d : δ
a : α
h : Sum.map f g (inl a) = inr d
⊢ ∃ a, g a = d

case intro.inr
α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
f : α → γ
g : β → δ
h✝ : Surjective (Sum.map f g)
d : δ
b : β
h : Sum.map f g (inr b) = inr d
⊢ ∃ a, g a = d

tactic: cases h
state_before: case intro.inl
α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
f : α → γ
g : β → δ
h✝ : Surjective (Sum.map f g)
d : δ
a : α
h : Sum.map f g (inl a) = inr d
⊢ ∃ a, g a = d
state_after: no goals

tactic: exact ⟨b, inr_injective h⟩
state_before: case intro.inr
α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
f : α → γ
g : β → δ
h✝ : Surjective (Sum.map f g)
d : δ
b : β
h : Sum.map f g (inr b) = inr d
⊢ ∃ a, g a = d
state_after: no goals
Theorem: Ordinal.lift_lt
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: simp only [lt_iff_le_not_le, lift_le]
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{v}
⊢ lift.{u, v} a < lift.{u, v} b ↔ a < b
state_after: no goals
Theorem: tsub_eq_zero_iff_le
File: Mathlib/Algebra/Order/Sub/Canonical.lean

tactic: rw [← nonpos_iff_eq_zero, tsub_le_iff_left, add_zero]
state_before: α : Type u_1
inst✝² : CanonicallyOrderedAddCommMonoid α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
⊢ a - b = 0 ↔ a ≤ b
state_after: no goals
Theorem: MeasureTheory.measure_eq_iInf
File: Mathlib/MeasureTheory/Measure/MeasureSpaceDef.lean

tactic: rw [measure_eq_trim, OuterMeasure.trim_eq_iInf, μ.coe_toOuterMeasure]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t s : Set α
⊢ μ s = ⨅ t, ⨅ (_ : s ⊆ t), ⨅ (_ : MeasurableSet t), μ t
state_after: no goals
Theorem: TendstoUniformlyOn.seq_tendstoUniformlyOn
File: Mathlib/Topology/UniformSpace/UniformConvergence.lean

tactic: rw [tendstoUniformlyOn_iff_tendsto] at h ⊢
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
h : TendstoUniformlyOn F f l s
u : ℕ → ι
hu : Tendsto u atTop l
⊢ TendstoUniformlyOn (fun n => F (u n)) f atTop s
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
h : Tendsto (fun q => (f q.2, F q.1 q.2)) (l ×ˢ 𝓟 s) (𝓤 β)
u : ℕ → ι
hu : Tendsto u atTop l
⊢ Tendsto (fun q => (f q.2, F (u q.1) q.2)) (atTop ×ˢ 𝓟 s) (𝓤 β)

tactic: exact h.comp ((hu.comp tendsto_fst).prod_mk tendsto_snd)
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
l : Filter ι
h : Tendsto (fun q => (f q.2, F q.1 q.2)) (l ×ˢ 𝓟 s) (𝓤 β)
u : ℕ → ι
hu : Tendsto u atTop l
⊢ Tendsto (fun q => (f q.2, F (u q.1) q.2)) (atTop ×ˢ 𝓟 s) (𝓤 β)
state_after: no goals
Theorem: Set.MapsTo.closure
File: Mathlib/Topology/Basic.lean

tactic: simp only [MapsTo, mem_closure_iff_clusterPt]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : X → Y
s : Set X
x : X
y : Y
t : Set Y
h : MapsTo f s t
hc : Continuous f
⊢ MapsTo f (closure s) (closure t)
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : X → Y
s : Set X
x : X
y : Y
t : Set Y
h : MapsTo f s t
hc : Continuous f
⊢ ∀ ⦃x : X⦄, ClusterPt x (𝓟 s) → ClusterPt (f x) (𝓟 t)

tactic: exact fun x hx => hx.map hc.continuousAt (tendsto_principal_principal.2 h)
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : X → Y
s : Set X
x : X
y : Y
t : Set Y
h : MapsTo f s t
hc : Continuous f
⊢ ∀ ⦃x : X⦄, ClusterPt x (𝓟 s) → ClusterPt (f x) (𝓟 t)
state_after: no goals
Theorem: IsCoprime.neg_left
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: obtain ⟨a, b, h⟩ := h
state_before: R : Type u
inst✝ : CommRing R
x y : R
h : IsCoprime x y
⊢ IsCoprime (-x) y
state_after: case intro.intro
R : Type u
inst✝ : CommRing R
x y a b : R
h : a * x + b * y = 1
⊢ IsCoprime (-x) y

tactic: use -a, b
state_before: case intro.intro
R : Type u
inst✝ : CommRing R
x y a b : R
h : a * x + b * y = 1
⊢ IsCoprime (-x) y
state_after: case h
R : Type u
inst✝ : CommRing R
x y a b : R
h : a * x + b * y = 1
⊢ -a * -x + b * y = 1

tactic: rwa [neg_mul_neg]
state_before: case h
R : Type u
inst✝ : CommRing R
x y a b : R
h : a * x + b * y = 1
⊢ -a * -x + b * y = 1
state_after: no goals
Theorem: Cardinal.aleph_le_beth
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: induction o using limitRecOn with
| H₁ => simp
| H₂ o h =>
  rw [aleph_succ, beth_succ, succ_le_iff]
  exact (cantor _).trans_le (power_le_power_left two_ne_zero h)
| H₃ o ho IH =>
  rw [aleph_limit ho, beth_limit ho]
  exact ciSup_mono (bddAbove_of_small _) fun x => IH x.1 x.2
state_before: o : Ordinal.{u_1}
⊢ aleph o ≤ beth o
state_after: no goals

tactic: simp
state_before: case H₁

⊢ aleph 0 ≤ beth 0
state_after: no goals

tactic: rw [aleph_succ, beth_succ, succ_le_iff]
state_before: case H₂
o : Ordinal.{u_1}
h : aleph o ≤ beth o
⊢ aleph (succ o) ≤ beth (succ o)
state_after: case H₂
o : Ordinal.{u_1}
h : aleph o ≤ beth o
⊢ aleph o < 2 ^ beth o

tactic: exact (cantor _).trans_le (power_le_power_left two_ne_zero h)
state_before: case H₂
o : Ordinal.{u_1}
h : aleph o ≤ beth o
⊢ aleph o < 2 ^ beth o
state_after: no goals

tactic: rw [aleph_limit ho, beth_limit ho]
state_before: case H₃
o : Ordinal.{u_1}
ho : o.IsLimit
IH : ∀ o' < o, aleph o' ≤ beth o'
⊢ aleph o ≤ beth o
state_after: case H₃
o : Ordinal.{u_1}
ho : o.IsLimit
IH : ∀ o' < o, aleph o' ≤ beth o'
⊢ ⨆ a, aleph ↑a ≤ ⨆ a, beth ↑a

tactic: exact ciSup_mono (bddAbove_of_small _) fun x => IH x.1 x.2
state_before: case H₃
o : Ordinal.{u_1}
ho : o.IsLimit
IH : ∀ o' < o, aleph o' ≤ beth o'
⊢ ⨆ a, aleph ↑a ≤ ⨆ a, beth ↑a
state_after: no goals
Theorem: mem_closure_iff_nhds'
File: Mathlib/Topology/Basic.lean

tactic: simp only [mem_closure_iff_nhds, Set.inter_nonempty_iff_exists_right, SetCoe.exists, exists_prop]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ x ∈ closure s ↔ ∀ t ∈ 𝓝 x, ∃ y, ↑y ∈ t
state_after: no goals
Theorem: Finsupp.sum_smul_index_linearMap'
File: Mathlib/LinearAlgebra/Finsupp.lean

tactic: rw [Finsupp.sum_smul_index', Finsupp.smul_sum]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
M : Type u_4
M₂ : Type u_5
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
v : α →₀ M
c : R
h : α → M →ₗ[R] M₂
⊢ ((c • v).sum fun a => ⇑(h a)) = c • v.sum fun a => ⇑(h a)
state_after: α : Type u_1
β : Type u_2
R : Type u_3
M : Type u_4
M₂ : Type u_5
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
v : α →₀ M
c : R
h : α → M →ₗ[R] M₂
⊢ (v.sum fun i c_1 => (h i) (c • c_1)) = v.sum fun a b => c • (h a) b

α : Type u_1
β : Type u_2
R : Type u_3
M : Type u_4
M₂ : Type u_5
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
v : α →₀ M
c : R
h : α → M →ₗ[R] M₂
⊢ ∀ (i : α), (h i) 0 = 0

tactic: simp only [map_smul]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
M : Type u_4
M₂ : Type u_5
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
v : α →₀ M
c : R
h : α → M →ₗ[R] M₂
⊢ (v.sum fun i c_1 => (h i) (c • c_1)) = v.sum fun a b => c • (h a) b
state_after: no goals

tactic: intro i
state_before: α : Type u_1
β : Type u_2
R : Type u_3
M : Type u_4
M₂ : Type u_5
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
v : α →₀ M
c : R
h : α → M →ₗ[R] M₂
⊢ ∀ (i : α), (h i) 0 = 0
state_after: α : Type u_1
β : Type u_2
R : Type u_3
M : Type u_4
M₂ : Type u_5
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
v : α →₀ M
c : R
h : α → M →ₗ[R] M₂
i : α
⊢ (h i) 0 = 0

tactic: exact (h i).map_zero
state_before: α : Type u_1
β : Type u_2
R : Type u_3
M : Type u_4
M₂ : Type u_5
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
v : α →₀ M
c : R
h : α → M →ₗ[R] M₂
i : α
⊢ (h i) 0 = 0
state_after: no goals
Theorem: List.count_tail
File: .lake/packages/batteries/Batteries/Data/List/Count.lean

tactic: simp [count_cons]
state_before: α : Type u_1
inst✝ : DecidableEq α
head : α
tail : List α
a : α
h : head :: tail ≠ []
⊢ count a (head :: tail).tail = count a (head :: tail) - if a = (head :: tail).head h then 1 else 0
state_after: no goals
Theorem: Nat.two_mul_odd_div_two
File: Mathlib/Data/Nat/Defs.lean

tactic: conv => rhs; rw [← Nat.mod_add_div n 2, hn, Nat.add_sub_cancel_left]
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hn : n % 2 = 1
⊢ 2 * (n / 2) = n - 1
state_after: no goals
Theorem: Sym2.IsDiag.mem_range_diag
File: Mathlib/Data/Sym/Sym2.lean

tactic: induction' z with x y
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
z : Sym2 α
⊢ z.IsDiag → z ∈ Set.range diag
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
x y : α
⊢ s(x, y).IsDiag → s(x, y) ∈ Set.range diag

tactic: rintro (rfl : x = y)
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
x y : α
⊢ s(x, y).IsDiag → s(x, y) ∈ Set.range diag
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
x : α
⊢ s(x, x) ∈ Set.range diag

tactic: exact ⟨_, rfl⟩
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
e : Sym2 α
f : α → β
x : α
⊢ s(x, x) ∈ Set.range diag
state_after: no goals
Theorem: Substring.Valid.any
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: simp [h.any, h.toString]
state_before: f : Char → Bool
x✝ : Substring
h✝ : x✝.Valid
w✝² w✝¹ w✝ : List Char
h : ValidFor w✝² w✝¹ w✝ x✝
⊢ x✝.any f = x✝.toString.data.any f
state_after: no goals