1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MeasureTheory.Measure.sum_fintype
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: ext1 s hs
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
f : α → β
inst✝ : Fintype ι
μ : ι → Measure α
⊢ sum μ = ∑ i : ι, μ i
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f : α → β
inst✝ : Fintype ι
μ : ι → Measure α
s : Set α
hs : MeasurableSet s
⊢ (sum μ) s = (∑ i : ι, μ i) s

tactic: simp only [sum_apply, finset_sum_apply, hs, tsum_fintype]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ✝ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f : α → β
inst✝ : Fintype ι
μ : ι → Measure α
s : Set α
hs : MeasurableSet s
⊢ (sum μ) s = (∑ i : ι, μ i) s
state_after: no goals
Theorem: RatFunc.num_denom_neg
File: Mathlib/FieldTheory/RatFunc/Basic.lean

tactic: rw [num_mul_eq_mul_denom_iff (denom_ne_zero x), _root_.map_neg, neg_div, num_div_denom]
state_before: K : Type u
inst✝ : Field K
x : RatFunc K
⊢ (-x).num * x.denom = -x.num * (-x).denom
state_after: no goals
Theorem: Nat.Partrec'.part_iff₂
File: Mathlib/Computability/Halting.lean

tactic: simp only [head_cons, tail_cons]
state_before: f : ℕ → ℕ →. ℕ
h : _root_.Partrec fun v => f v.head v.tail.head
v : ℕ × ℕ
⊢ f (v.1 ::ᵥ v.2 ::ᵥ nil).head (v.1 ::ᵥ v.2 ::ᵥ nil).tail.head = f v.1 v.2
state_after: no goals
Theorem: AlgebraicGeometry.ProjectiveSpectrum.Proj.toSpec_preimage_basicOpen
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Scheme.lean

tactic: convert (ProjIsoSpecTopComponent.ToSpec.preimage_basicOpen f t)
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
t : NumDenSameDeg 𝒜 (Submonoid.powers f)
⊢ ⇑(toSpec 𝒜 f).val.base ⁻¹' ↑(sbo HomogeneousLocalization.mk t) =
    ↑((Opens.comap { toFun := Subtype.val, continuous_toFun := ⋯ }) (pbo ↑t.num))
state_after: case h.e'_2.h.e'_3
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
t : NumDenSameDeg 𝒜 (Submonoid.powers f)
⊢ ⇑(toSpec 𝒜 f).val.base = ProjIsoSpecTopComponent.ToSpec.toFun f

tactic: exact funext fun _ => toSpec_base_apply_eq _ _
state_before: case h.e'_2.h.e'_3
R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
t : NumDenSameDeg 𝒜 (Submonoid.powers f)
⊢ ⇑(toSpec 𝒜 f).val.base = ProjIsoSpecTopComponent.ToSpec.toFun f
state_after: no goals
Theorem: nonempty_fun
File: Mathlib/Logic/IsEmpty.lean

tactic: rw [not_or, not_nonempty_iff, not_nonempty_iff, isEmpty_fun, not_isEmpty_iff]
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
⊢ ¬Nonempty (α → β) ↔ ¬(IsEmpty α ∨ Nonempty β)
state_after: no goals
Theorem: DFinsupp.lex_lt_of_lt
File: Mathlib/Data/DFinsupp/Lex.lean

tactic: simp_rw [Pi.Lex, le_antisymm_iff]
state_before: ι : Type u_1
α : ι → Type u_2
inst✝² : (i : ι) → Zero (α i)
inst✝¹ : (i : ι) → PartialOrder (α i)
r : ι → ι → Prop
inst✝ : IsStrictOrder ι r
x y : Π₀ (i : ι), α i
hlt : x < y
⊢ Pi.Lex r (fun {i} x x_1 => x < x_1) ⇑x ⇑y
state_after: ι : Type u_1
α : ι → Type u_2
inst✝² : (i : ι) → Zero (α i)
inst✝¹ : (i : ι) → PartialOrder (α i)
r : ι → ι → Prop
inst✝ : IsStrictOrder ι r
x y : Π₀ (i : ι), α i
hlt : x < y
⊢ ∃ i, (∀ (j : ι), r j i → x j ≤ y j ∧ y j ≤ x j) ∧ x i < y i

tactic: exact lex_lt_of_lt_of_preorder r hlt
state_before: ι : Type u_1
α : ι → Type u_2
inst✝² : (i : ι) → Zero (α i)
inst✝¹ : (i : ι) → PartialOrder (α i)
r : ι → ι → Prop
inst✝ : IsStrictOrder ι r
x y : Π₀ (i : ι), α i
hlt : x < y
⊢ ∃ i, (∀ (j : ι), r j i → x j ≤ y j ∧ y j ≤ x j) ∧ x i < y i
state_after: no goals
Theorem: ENNReal.add_ne_top
File: Mathlib/Data/ENNReal/Operations.lean

tactic: simpa only [lt_top_iff_ne_top] using add_lt_top
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
α : Type u_1
⊢ a + b ≠ ⊤ ↔ a ≠ ⊤ ∧ b ≠ ⊤
state_after: no goals
Theorem: LieIdeal.map_comap_le
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [map_le_iff_le_comap]
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I I₂ : LieIdeal R L
J : LieIdeal R L'
⊢ map f (comap f J) ≤ J
state_after: no goals
Theorem: Composition.sizeUpTo_strict_mono
File: Mathlib/Combinatorics/Enumerative/Composition.lean

tactic: rw [c.sizeUpTo_succ h]
state_before: n : ℕ
c : Composition n
i : ℕ
h : i < c.length
⊢ c.sizeUpTo i < c.sizeUpTo (i + 1)
state_after: n : ℕ
c : Composition n
i : ℕ
h : i < c.length
⊢ c.sizeUpTo i < c.sizeUpTo i + c.blocks[i]

tactic: simp
state_before: n : ℕ
c : Composition n
i : ℕ
h : i < c.length
⊢ c.sizeUpTo i < c.sizeUpTo i + c.blocks[i]
state_after: no goals
Theorem: Finmap.keysLookupEquiv_symm_apply_lookup
File: Mathlib/Data/Finmap.lean

tactic: simp only [Equiv.symm_apply_apply, keysLookupEquiv_apply_coe_snd]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
x✝¹ : Finmap β
x✝ : α
⊢ lookup x✝ (keysLookupEquiv.symm (keysLookupEquiv x✝¹)) = (↑(keysLookupEquiv x✝¹)).2 x✝
state_after: no goals
Theorem: Matrix.linfty_opNNNorm_diagonal
File: Mathlib/Analysis/Matrix.lean

tactic: rw [linfty_opNNNorm_def, Pi.nnnorm_def]
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✝¹ : SeminormedAddCommGroup α
inst✝ : DecidableEq m
v : m → α
⊢ ‖diagonal v‖₊ = ‖v‖₊
state_after: 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✝¹ : SeminormedAddCommGroup α
inst✝ : DecidableEq m
v : m → α
⊢ (Finset.univ.sup fun i => ∑ j : m, ‖diagonal v i j‖₊) = Finset.univ.sup fun b => ‖v b‖₊

tactic: congr 1 with i : 1
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✝¹ : SeminormedAddCommGroup α
inst✝ : DecidableEq m
v : m → α
⊢ (Finset.univ.sup fun i => ∑ j : m, ‖diagonal v i j‖₊) = Finset.univ.sup fun b => ‖v b‖₊
state_after: case e_f.h
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✝¹ : SeminormedAddCommGroup α
inst✝ : DecidableEq m
v : m → α
i : m
⊢ ∑ j : m, ‖diagonal v i j‖₊ = ‖v i‖₊

tactic: refine (Finset.sum_eq_single_of_mem _ (Finset.mem_univ i) fun j _hj hij => ?_).trans ?_
state_before: case e_f.h
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✝¹ : SeminormedAddCommGroup α
inst✝ : DecidableEq m
v : m → α
i : m
⊢ ∑ j : m, ‖diagonal v i j‖₊ = ‖v i‖₊
state_after: case e_f.h.refine_1
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✝¹ : SeminormedAddCommGroup α
inst✝ : DecidableEq m
v : m → α
i j : m
_hj : j ∈ Finset.univ
hij : j ≠ i
⊢ ‖diagonal v i j‖₊ = 0

case e_f.h.refine_2
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✝¹ : SeminormedAddCommGroup α
inst✝ : DecidableEq m
v : m → α
i : m
⊢ ‖diagonal v i i‖₊ = ‖v i‖₊

tactic: rw [diagonal_apply_ne' _ hij, nnnorm_zero]
state_before: case e_f.h.refine_1
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✝¹ : SeminormedAddCommGroup α
inst✝ : DecidableEq m
v : m → α
i j : m
_hj : j ∈ Finset.univ
hij : j ≠ i
⊢ ‖diagonal v i j‖₊ = 0
state_after: no goals

tactic: rw [diagonal_apply_eq]
state_before: case e_f.h.refine_2
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✝¹ : SeminormedAddCommGroup α
inst✝ : DecidableEq m
v : m → α
i : m
⊢ ‖diagonal v i i‖₊ = ‖v i‖₊
state_after: no goals
Theorem: Cardinal.mk_emptyCollection_iff
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: constructor
state_before: α✝ β : Type u
c : Cardinal.{?u.193920}
α : Type u
s : Set α
⊢ #↑s = 0 ↔ s = ∅
state_after: case mp
α✝ β : Type u
c : Cardinal.{?u.193920}
α : Type u
s : Set α
⊢ #↑s = 0 → s = ∅

case mpr
α✝ β : Type u
c : Cardinal.{?u.193920}
α : Type u
s : Set α
⊢ s = ∅ → #↑s = 0

tactic: intro h
state_before: case mp
α✝ β : Type u
c : Cardinal.{?u.193920}
α : Type u
s : Set α
⊢ #↑s = 0 → s = ∅
state_after: case mp
α✝ β : Type u
c : Cardinal.{?u.193920}
α : Type u
s : Set α
h : #↑s = 0
⊢ s = ∅

tactic: rw [mk_eq_zero_iff] at h
state_before: case mp
α✝ β : Type u
c : Cardinal.{?u.193920}
α : Type u
s : Set α
h : #↑s = 0
⊢ s = ∅
state_after: case mp
α✝ β : Type u
c : Cardinal.{?u.193920}
α : Type u
s : Set α
h : IsEmpty ↑s
⊢ s = ∅

tactic: exact eq_empty_iff_forall_not_mem.2 fun x hx => h.elim' ⟨x, hx⟩
state_before: case mp
α✝ β : Type u
c : Cardinal.{?u.193920}
α : Type u
s : Set α
h : IsEmpty ↑s
⊢ s = ∅
state_after: no goals

tactic: rintro rfl
state_before: case mpr
α✝ β : Type u
c : Cardinal.{?u.193920}
α : Type u
s : Set α
⊢ s = ∅ → #↑s = 0
state_after: case mpr
α✝ β : Type u
c : Cardinal.{?u.193920}
α : Type u
⊢ #↑∅ = 0

tactic: exact mk_emptyCollection _
state_before: case mpr
α✝ β : Type u
c : Cardinal.{?u.193920}
α : Type u
⊢ #↑∅ = 0
state_after: no goals
Theorem: Wbtw.trans_right
File: Mathlib/Analysis/Convex/Between.lean

tactic: rw [wbtw_comm] at *
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w x y z : P
h₁ : Wbtw R w x z
h₂ : Wbtw R x y z
⊢ Wbtw R w y z
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w x y z : P
h₁ : Wbtw R z x w
h₂ : Wbtw R z y x
⊢ Wbtw R z y w

tactic: exact h₁.trans_left h₂
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w x y z : P
h₁ : Wbtw R z x w
h₂ : Wbtw R z y x
⊢ Wbtw R z y w
state_after: no goals
Theorem: Polynomial.mem_degreeLT
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: rw [degreeLT, Submodule.mem_iInf]
state_before: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ f ∈ degreeLT R n ↔ f.degree < ↑n
state_after: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ (∀ (i : ℕ), f ∈ ⨅ (_ : i ≥ n), LinearMap.ker (lcoeff R i)) ↔ f.degree < ↑n

tactic: conv_lhs => intro i; rw [Submodule.mem_iInf]
state_before: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ (∀ (i : ℕ), f ∈ ⨅ (_ : i ≥ n), LinearMap.ker (lcoeff R i)) ↔ f.degree < ↑n
state_after: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ (∀ i ≥ n, f ∈ LinearMap.ker (lcoeff R i)) ↔ f.degree < ↑n

tactic: rw [degree, Finset.max_eq_sup_coe]
state_before: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ (∀ i ≥ n, f ∈ LinearMap.ker (lcoeff R i)) ↔ f.degree < ↑n
state_after: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ (∀ i ≥ n, f ∈ LinearMap.ker (lcoeff R i)) ↔ f.support.sup WithBot.some < ↑n

tactic: rw [Finset.sup_lt_iff ?_]
state_before: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ (∀ i ≥ n, f ∈ LinearMap.ker (lcoeff R i)) ↔ f.support.sup WithBot.some < ↑n
state_after: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ (∀ i ≥ n, f ∈ LinearMap.ker (lcoeff R i)) ↔ ∀ b ∈ f.support, ↑b < ↑n

R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ ⊥ < ↑n

tactic: rotate_left
state_before: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ (∀ i ≥ n, f ∈ LinearMap.ker (lcoeff R i)) ↔ ∀ b ∈ f.support, ↑b < ↑n

R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ ⊥ < ↑n
state_after: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ ⊥ < ↑n

R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ (∀ i ≥ n, f ∈ LinearMap.ker (lcoeff R i)) ↔ ∀ b ∈ f.support, ↑b < ↑n

tactic: conv_rhs =>
  simp only [mem_support_iff]
  intro b
  rw [Nat.cast_withBot, WithBot.coe_lt_coe, lt_iff_not_le, Ne, not_imp_not]
state_before: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ (∀ i ≥ n, f ∈ LinearMap.ker (lcoeff R i)) ↔ ∀ b ∈ f.support, ↑b < ↑n
state_after: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ (∀ i ≥ n, f ∈ LinearMap.ker (lcoeff R i)) ↔ ∀ (b : ℕ), n ≤ b → f.coeff b = 0

tactic: rfl
state_before: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ (∀ i ≥ n, f ∈ LinearMap.ker (lcoeff R i)) ↔ ∀ (b : ℕ), n ≤ b → f.coeff b = 0
state_after: no goals

tactic: apply WithBot.bot_lt_coe
state_before: R : Type u
S : Type u_1
inst✝ : Semiring R
n : ℕ
f : R[X]
⊢ ⊥ < ↑n
state_after: no goals
Theorem: SchwartzMap.decay_neg_aux
File: Mathlib/Analysis/Distribution/SchwartzSpace.lean

tactic: rw [iteratedFDeriv_neg_apply, norm_neg]
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
D : Type u_3
E : Type u_4
F : Type u_5
G : Type u_6
V : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
k n : ℕ
f : 𝓢(E, F)
x : E
⊢ ‖x‖ ^ k * ‖iteratedFDeriv ℝ n (-⇑f) x‖ = ‖x‖ ^ k * ‖iteratedFDeriv ℝ n (⇑f) x‖
state_after: no goals
Theorem: isOpenMap_inr
File: Mathlib/Topology/Constructions.lean

tactic: simpa [isOpen_sum_iff, preimage_image_eq u Sum.inr_injective]
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace W
u : Set Y
hu : IsOpen u
⊢ IsOpen (inr '' u)
state_after: no goals
Theorem: DFinsupp.subtypeDomain_def
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: ext i
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
p : ι → Prop
inst✝ : DecidablePred p
f : Π₀ (i : ι), β i
⊢ subtypeDomain p f = mk (Finset.subtype p f.support) fun i => f ↑↑i
state_after: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
p : ι → Prop
inst✝ : DecidablePred p
f : Π₀ (i : ι), β i
i : Subtype p
⊢ (subtypeDomain p f) i = (mk (Finset.subtype p f.support) fun i => f ↑↑i) i

tactic: by_cases h2 : f i ≠ 0 <;> try simp at h2; dsimp; simp [h2]
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
p : ι → Prop
inst✝ : DecidablePred p
f : Π₀ (i : ι), β i
i : Subtype p
⊢ (subtypeDomain p f) i = (mk (Finset.subtype p f.support) fun i => f ↑↑i) i
state_after: no goals

tactic: simp at h2
state_before: case neg
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
p : ι → Prop
inst✝ : DecidablePred p
f : Π₀ (i : ι), β i
i : Subtype p
h2 : ¬f ↑i ≠ 0
⊢ (subtypeDomain p f) i = (mk (Finset.subtype p f.support) fun i => f ↑↑i) i
state_after: case neg
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
p : ι → Prop
inst✝ : DecidablePred p
f : Π₀ (i : ι), β i
i : Subtype p
h2 : f ↑i = 0
⊢ (subtypeDomain p f) i = (mk (Finset.subtype p f.support) fun i => f ↑↑i) i

tactic: dsimp
state_before: case neg
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
p : ι → Prop
inst✝ : DecidablePred p
f : Π₀ (i : ι), β i
i : Subtype p
h2 : f ↑i = 0
⊢ (subtypeDomain p f) i = (mk (Finset.subtype p f.support) fun i => f ↑↑i) i
state_after: case neg
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
p : ι → Prop
inst✝ : DecidablePred p
f : Π₀ (i : ι), β i
i : Subtype p
h2 : f ↑i = 0
⊢ f ↑i = if i ∈ Finset.subtype p f.support then f ↑i else 0

tactic: simp [h2]
state_before: case neg
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
p : ι → Prop
inst✝ : DecidablePred p
f : Π₀ (i : ι), β i
i : Subtype p
h2 : f ↑i = 0
⊢ f ↑i = if i ∈ Finset.subtype p f.support then f ↑i else 0
state_after: no goals
Theorem: AlgebraicClosure.toSplittingField_evalXSelf
File: Mathlib/FieldTheory/IsAlgClosed/AlgebraicClosure.lean

tactic: rw [toSplittingField, evalXSelf, ← AlgHom.coe_toRingHom, hom_eval₂, AlgHom.coe_toRingHom,
  MvPolynomial.aeval_X, dif_pos hf, ← MvPolynomial.algebraMap_eq, AlgHom.comp_algebraMap]
state_before: k : Type u
inst✝ : Field k
s : Finset (MonicIrreducible k)
f : MonicIrreducible k
hf : f ∈ s
⊢ (toSplittingField k s) (evalXSelf k f) = 0
state_after: k : Type u
inst✝ : Field k
s : Finset (MonicIrreducible k)
f : MonicIrreducible k
hf : f ∈ s
⊢ Polynomial.eval₂ (algebraMap k (∏ x ∈ s, ↑x).SplittingField)
      (rootOfSplits (algebraMap k (∏ x ∈ s, ↑x).SplittingField) ⋯ ⋯) ↑f =
    0

tactic: exact map_rootOfSplits _ _ _
state_before: k : Type u
inst✝ : Field k
s : Finset (MonicIrreducible k)
f : MonicIrreducible k
hf : f ∈ s
⊢ Polynomial.eval₂ (algebraMap k (∏ x ∈ s, ↑x).SplittingField)
      (rootOfSplits (algebraMap k (∏ x ∈ s, ↑x).SplittingField) ⋯ ⋯) ↑f =
    0
state_after: no goals
Theorem: Matrix.rank_self_mul_conjTranspose
File: Mathlib/Data/Matrix/Rank.lean

tactic: simpa only [rank_conjTranspose, conjTranspose_conjTranspose] using
  rank_conjTranspose_mul_self Aᴴ
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝⁶ : Fintype n
inst✝⁵ : Fintype o
inst✝⁴ : Fintype m
inst✝³ : Field R
inst✝² : PartialOrder R
inst✝¹ : StarRing R
inst✝ : StarOrderedRing R
A : Matrix m n R
⊢ (A * Aᴴ).rank = A.rank
state_after: no goals
Theorem: ultrafilterBasis_is_basis
File: Mathlib/Topology/StoneCech.lean

tactic: rintro _ ⟨a, rfl⟩ _ ⟨b, rfl⟩ u ⟨ua, ub⟩
state_before: α : Type u
⊢ ∀ t₁ ∈ ultrafilterBasis α, ∀ t₂ ∈ ultrafilterBasis α, ∀ x ∈ t₁ ∩ t₂, ∃ t₃ ∈ ultrafilterBasis α, x ∈ t₃ ∧ t₃ ⊆ t₁ ∩ t₂
state_after: case intro.intro.intro
α : Type u
a b : Set α
u : Ultrafilter α
ua : u ∈ (fun s => {u | s ∈ u}) a
ub : u ∈ (fun s => {u | s ∈ u}) b
⊢ ∃ t₃ ∈ ultrafilterBasis α, u ∈ t₃ ∧ t₃ ⊆ (fun s => {u | s ∈ u}) a ∩ (fun s => {u | s ∈ u}) b

tactic: refine ⟨_, ⟨a ∩ b, rfl⟩, inter_mem ua ub, fun v hv ↦ ⟨?_, ?_⟩⟩ <;> apply mem_of_superset hv <;>
  simp [inter_subset_right]
state_before: case intro.intro.intro
α : Type u
a b : Set α
u : Ultrafilter α
ua : u ∈ (fun s => {u | s ∈ u}) a
ub : u ∈ (fun s => {u | s ∈ u}) b
⊢ ∃ t₃ ∈ ultrafilterBasis α, u ∈ t₃ ∧ t₃ ⊆ (fun s => {u | s ∈ u}) a ∩ (fun s => {u | s ∈ u}) b
state_after: no goals
Theorem: Filter.prod_assoc_symm
File: Mathlib/Order/Filter/Prod.lean

tactic: simp_rw [map_equiv_symm, SProd.sprod, Filter.prod, comap_inf, comap_comap, inf_assoc,
  Function.comp, Equiv.prodAssoc_apply]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f✝ : Filter α
g✝ : Filter β
f : Filter α
g : Filter β
h : Filter γ
⊢ map (⇑(Equiv.prodAssoc α β γ).symm) (f ×ˢ g ×ˢ h) = (f ×ˢ g) ×ˢ h
state_after: no goals
Theorem: MvPolynomial.NewtonIdentities.filter_pairs_lt
File: Mathlib/RingTheory/MvPolynomial/NewtonIdentities.lean

tactic: ext
state_before: σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
⊢ filter
      (fun x =>
        match x with
        | (s, snd) => s.card < k)
      (MvPolynomial.NewtonIdentities.pairs σ k) =
    (range k).disjiUnion (fun x => powersetCard x univ) ⋯ ×ˢ univ
state_after: case a
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
a✝ : Finset σ × σ
⊢ a✝ ∈
      filter
        (fun x =>
          match x with
          | (s, snd) => s.card < k)
        (MvPolynomial.NewtonIdentities.pairs σ k) ↔
    a✝ ∈ (range k).disjiUnion (fun x => powersetCard x univ) ⋯ ×ˢ univ

tactic: aesop (add unsafe le_of_lt)
state_before: case a
σ : Type u_1
inst✝² : Fintype σ
inst✝¹ : DecidableEq σ
R : Type u_2
inst✝ : CommRing R
k : ℕ
a✝ : Finset σ × σ
⊢ a✝ ∈
      filter
        (fun x =>
          match x with
          | (s, snd) => s.card < k)
        (MvPolynomial.NewtonIdentities.pairs σ k) ↔
    a✝ ∈ (range k).disjiUnion (fun x => powersetCard x univ) ⋯ ×ˢ univ
state_after: no goals
Theorem: Filter.frequently_atTop'
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simp
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝² : SemilatticeSup α
inst✝¹ : Nonempty α
inst✝ : NoMaxOrder α
p : α → Prop
⊢ (∀ (i : α), True → ∃ x ∈ Ioi i, p x) ↔ ∀ (a : α), ∃ b > a, p b
state_after: no goals
Theorem: Asymptotics.isLittleO_sum_range_of_tendsto_zero
File: Mathlib/Analysis/Asymptotics/SpecificAsymptotics.lean

tactic: have := ((isLittleO_one_iff ℝ).2 h).sum_range fun i => zero_le_one
state_before: α : Type u_1
inst✝ : NormedAddCommGroup α
f : ℕ → α
h : Tendsto f atTop (𝓝 0)
⊢ (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n
state_after: α : Type u_1
inst✝ : NormedAddCommGroup α
f : ℕ → α
h : Tendsto f atTop (𝓝 0)
this :
  Tendsto (fun n => ∑ i ∈ range n, 1) atTop atTop → (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ∑ i ∈ range n, 1
⊢ (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n

tactic: simp only [sum_const, card_range, Nat.smul_one_eq_cast] at this
state_before: α : Type u_1
inst✝ : NormedAddCommGroup α
f : ℕ → α
h : Tendsto f atTop (𝓝 0)
this :
  Tendsto (fun n => ∑ i ∈ range n, 1) atTop atTop → (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ∑ i ∈ range n, 1
⊢ (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n
state_after: α : Type u_1
inst✝ : NormedAddCommGroup α
f : ℕ → α
h : Tendsto f atTop (𝓝 0)
this : Tendsto (fun n => ↑n) atTop atTop → (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n
⊢ (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n

tactic: exact this tendsto_natCast_atTop_atTop
state_before: α : Type u_1
inst✝ : NormedAddCommGroup α
f : ℕ → α
h : Tendsto f atTop (𝓝 0)
this : Tendsto (fun n => ↑n) atTop atTop → (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n
⊢ (fun n => ∑ i ∈ range n, f i) =o[atTop] fun n => ↑n
state_after: no goals