ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: List.getElem_insertNth_self
File: Mathlib/Data/List/InsertNth.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l : List α
x : α
n : ℕ
hn : n ≤ l.length
⊢ n < (insertNth n x l).length
state_after: no goals
tactic: rwa [length_insertNth _ _ hn, Nat.lt_succ_iff]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
l : List α
x : α
n : ℕ
hn : n ≤ l.length
hn' : optParam (n < (insertNth n x l).length) ⋯
⊢ (insertNth n x l)[n] = x
state_after: case nil
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a x : α
n : ℕ
hn : n ≤ [].length
hn' : optParam (n < (insertNth n x []).length) ⋯
⊢ (insertNth n x [])[n] = x

case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a x hd : α
tl : List α
IH : ∀ (n : ℕ) (hn : n ≤ tl.length) (hn' : optParam (n < (insertNth n x tl).length) ⋯), (insertNth n x tl)[n] = x
n : ℕ
hn : n ≤ (hd :: tl).length
hn' : optParam (n < (insertNth n x (hd :: tl)).length) ⋯
⊢ (insertNth n x (hd :: tl))[n] = x
tactic: induction' l with hd tl IH generalizing n
Theorem: Orientation.inner_rev_eq_zero_of_oangle_eq_neg_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

Proof steps:
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(-π / 2)
⊢ ⟪y, x⟫_ℝ = 0
state_after: no goals
tactic: rw [real_inner_comm, o.inner_eq_zero_of_oangle_eq_neg_pi_div_two h]
Theorem: DenseEmbedding.subtype
File: Mathlib/Topology/DenseEmbedding.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : α → β
de : DenseEmbedding e
p : α → Prop
⊢ closure (range (subtypeEmb p e)) = univ
state_after: case h.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : α → β
de : DenseEmbedding e
p : α → Prop
x : β
hx : x ∈ closure (e '' {x | p x})
⊢ ⟨x, hx⟩ ∈ closure (range (subtypeEmb p e)) ↔ ⟨x, hx⟩ ∈ univ
tactic: ext ⟨x, hx⟩
state_before: case h.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : α → β
de : DenseEmbedding e
p : α → Prop
x : β
hx : x ∈ closure (e '' {x | p x})
⊢ ⟨x, hx⟩ ∈ closure (range (subtypeEmb p e)) ↔ ⟨x, hx⟩ ∈ univ
state_after: case h.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : α → β
de : DenseEmbedding e
p : α → Prop
x : β
hx✝ : x ∈ closure (e '' {x | p x})
hx : x ∈ closure (range fun x => e ↑x)
⊢ ⟨x, hx✝⟩ ∈ closure (range (subtypeEmb p e)) ↔ ⟨x, hx✝⟩ ∈ univ
tactic: rw [image_eq_range] at hx
Theorem: SimplicialObject.Splitting.ofIso_N
File: Mathlib/AlgebraicTopology/SplitSimplicialObject.lean

Proof steps:
state_before: C : Type u_1
inst✝ : Category.{?u.26425, u_1} C
X Y : SimplicialObject C
s : Splitting X
e : X ≅ Y
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ (s.cofan Δ).inj A ≫ (e.app Δ).hom = (cofan' s.N Y (fun n => s.ι n ≫ e.hom.app (op [n])) Δ).inj A
state_after: no goals
tactic: simp [cofan, cofan']
Theorem: measurable_inv_iff₀
File: Mathlib/MeasureTheory/Group/Arithmetic.lean

Proof steps:
state_before: α✝ : Type u_1
G : Type u_2
α : Type u_3
inst✝⁵ : Inv G
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableInv G
m : MeasurableSpace α
f✝ : α → G
μ : Measure α
G₀ : Type u_4
inst✝² : GroupWithZero G₀
inst✝¹ : MeasurableSpace G₀
inst✝ : MeasurableInv G₀
f : α → G₀
h : Measurable fun x => (f x)⁻¹
⊢ Measurable f
state_after: no goals
tactic: simpa only [inv_inv] using h.inv
Theorem: Filter.tendsto_iSup
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l : Filter α
f : α → β
x : ι → Filter α
y : Filter β
⊢ Tendsto f (⨆ i, x i) y ↔ ∀ (i : ι), Tendsto f (x i) y
state_after: no goals
tactic: simp only [Tendsto, map_iSup, iSup_le_iff]
Theorem: Fintype.card_filter_piFinset_const
File: Mathlib/Data/Fintype/BigOperators.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
κ : Type u_5
α : ι → Type u_6
inst✝³ : DecidableEq ι
inst✝² : DecidableEq κ
inst✝¹ : Fintype ι
inst✝ : (i : ι) → DecidableEq (α i)
s : Finset κ
i : ι
j : κ
⊢ (if j ∈ s then ∏ b ∈ univ.erase i, s.card else 0) = if j ∈ s then s.card ^ (card ι - 1) else 0
state_after: no goals
tactic: rw [prod_const s.card, card_erase_of_mem (mem_univ _), card_univ]
Theorem: IsUnit.val_inv_subInvSMul
File: Mathlib/Algebra/Algebra/Spectrum.lean

Proof steps:
state_before: R : Type u
A : Type v
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
r : Rˣ
s : R
a : A
h : IsUnit (r • ↑ₐ s - a)
⊢ (↑ₐ s - r⁻¹ • a) * r • ↑h.unit⁻¹ = 1
state_after: no goals
tactic: rw [mul_smul_comm, ← smul_mul_assoc, smul_sub, smul_inv_smul, h.mul_val_inv]
state_before: R : Type u
A : Type v
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
r : Rˣ
s : R
a : A
h : IsUnit (r • ↑ₐ s - a)
⊢ r • ↑h.unit⁻¹ * (↑ₐ s - r⁻¹ • a) = 1
state_after: no goals
tactic: rw [smul_mul_assoc, ← mul_smul_comm, smul_sub, smul_inv_smul, h.val_inv_mul]
Theorem: Real.rpow_le_rpow_of_exponent_ge
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

Proof steps:
state_before: x y z : ℝ
n : ℕ
hx0 : 0 < x
hx1 : x ≤ 1
hyz : z ≤ y
⊢ x ^ y ≤ x ^ z
state_after: x y z : ℝ
n : ℕ
hx0 : 0 < x
hx1 : x ≤ 1
hyz : z ≤ y
⊢ rexp (log x * y) ≤ rexp (log x * z)
tactic: repeat' rw [rpow_def_of_pos hx0]
state_before: x y z : ℝ
n : ℕ
hx0 : 0 < x
hx1 : x ≤ 1
hyz : z ≤ y
⊢ rexp (log x * y) ≤ rexp (log x * z)
state_after: x y z : ℝ
n : ℕ
hx0 : 0 < x
hx1 : x ≤ 1
hyz : z ≤ y
⊢ log x * y ≤ log x * z
tactic: rw [exp_le_exp]
state_before: x y z : ℝ
n : ℕ
hx0 : 0 < x
hx1 : x ≤ 1
hyz : z ≤ y
⊢ log x * y ≤ log x * z
state_after: no goals
tactic: exact mul_le_mul_of_nonpos_left hyz (log_nonpos (le_of_lt hx0) hx1)
Theorem: Finsupp.filter_eq_zero_iff
File: Mathlib/Data/Finsupp/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
p : α → Prop
inst✝ : DecidablePred p
f : α →₀ M
⊢ filter p f = 0 ↔ ∀ (x : α), p x → f x = 0
state_after: no goals
tactic: simp only [DFunLike.ext_iff, filter_eq_indicator, zero_apply, Set.indicator_apply_eq_zero,
    Set.mem_setOf_eq]
Theorem: AffineMap.lineMap_apply_one
File: Mathlib/LinearAlgebra/AffineSpace/AffineMap.lean

Proof steps:
state_before: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
p₀ p₁ : P1
⊢ (lineMap p₀ p₁) 1 = p₁
state_after: no goals
tactic: simp [lineMap_apply]
Theorem: _private.Mathlib.Algebra.Category.FGModuleCat.Basic.0.FGModuleCat.coevaluation_evaluation
File: Mathlib/Algebra/Category/FGModuleCat/Basic.lean

Proof steps:
state_before: K : Type u
inst✝ : Field K
V W : FGModuleCat K
⊢ FGModuleCatDual K V ◁ FGModuleCatCoevaluation K V ≫
      (α_ (FGModuleCatDual K V) V (FGModuleCatDual K V)).inv ≫ FGModuleCatEvaluation K V ▷ FGModuleCatDual K V =
    (ρ_ (FGModuleCatDual K V)).hom ≫ (λ_ (FGModuleCatDual K V)).inv
state_after: no goals
tactic: apply contractLeft_assoc_coevaluation K V
Theorem: PiNat.lipschitz_with_one_iff_forall_dist_image_le_of_mem_cylinder
File: Mathlib/Topology/MetricSpace/PiNat.lean

Proof steps:
state_before: E : ℕ → Type u_1
α : Type u_2
inst✝ : PseudoMetricSpace α
f : ((n : ℕ) → E n) → α
⊢ (∀ (x y : (n : ℕ) → E n), dist (f x) (f y) ≤ dist x y) ↔
    ∀ (x y : (n : ℕ) → E n) (n : ℕ), y ∈ cylinder x n → dist (f x) (f y) ≤ (1 / 2) ^ n
state_after: case mp
E : ℕ → Type u_1
α : Type u_2
inst✝ : PseudoMetricSpace α
f : ((n : ℕ) → E n) → α
⊢ (∀ (x y : (n : ℕ) → E n), dist (f x) (f y) ≤ dist x y) →
    ∀ (x y : (n : ℕ) → E n) (n : ℕ), y ∈ cylinder x n → dist (f x) (f y) ≤ (1 / 2) ^ n

case mpr
E : ℕ → Type u_1
α : Type u_2
inst✝ : PseudoMetricSpace α
f : ((n : ℕ) → E n) → α
⊢ (∀ (x y : (n : ℕ) → E n) (n : ℕ), y ∈ cylinder x n → dist (f x) (f y) ≤ (1 / 2) ^ n) →
    ∀ (x y : (n : ℕ) → E n), dist (f x) (f y) ≤ dist x y
tactic: constructor
Theorem: Ordinal.sup_eq_lsub_iff_lt_sup
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal.{max u v}
h : sup f = lsub f
i : ι
⊢ f i < sup f
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal.{max u v}
h : sup f = lsub f
i : ι
⊢ f i < lsub f
tactic: rw [h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal.{max u v}
h : sup f = lsub f
i : ι
⊢ f i < lsub f
state_after: no goals
tactic: apply lt_lsub
Theorem: Polynomial.leadingCoeff_smul_of_smul_regular
File: Mathlib/Algebra/Polynomial/Monic.lean

Proof steps:
state_before: R : Type u
S✝ : Type v
a b : R
m n : ℕ
ι : Type y
inst✝² : Semiring R
p✝ : R[X]
S : Type u_1
inst✝¹ : Monoid S
inst✝ : DistribMulAction S R
k : S
p : R[X]
h : IsSMulRegular R k
⊢ (k • p).leadingCoeff = k • p.leadingCoeff
state_after: no goals
tactic: rw [Polynomial.leadingCoeff, Polynomial.leadingCoeff, coeff_smul,
    natDegree_smul_of_smul_regular p h]
Theorem: ProbabilityTheory.evariance_zero
File: Mathlib/Probability/Variance.lean

Proof steps:
state_before: Ω : Type u_1
m : MeasurableSpace Ω
X : Ω → ℝ
μ : Measure Ω
⊢ evariance 0 μ = 0
state_after: no goals
tactic: simp [evariance]
Theorem: MeasureTheory.forall_measure_preimage_mul_iff
File: Mathlib/MeasureTheory/Group/Measure.lean

Proof steps:
state_before: 𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : Mul G
μ✝ : Measure G
inst✝ : MeasurableMul G
μ : Measure G
⊢ (∀ (g : G), Measure.map (fun x => g * x) μ = μ) ↔ μ.IsMulLeftInvariant
state_after: no goals
tactic: exact ⟨fun h => ⟨h⟩, fun h => h.1⟩
Theorem: NormedSpace.norm_expSeries_div_summable_of_mem_ball
File: Mathlib/Analysis/NormedSpace/Exponential.lean

Proof steps:
state_before: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝² : NontriviallyNormedField 𝕂
inst✝¹ : NormedDivisionRing 𝔸
inst✝ : NormedAlgebra 𝕂 𝔸
x : 𝔸
hx : x ∈ EMetric.ball 0 (expSeries 𝕂 𝔸).radius
⊢ Summable fun n => ‖x ^ n / ↑n !‖
state_after: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝² : NontriviallyNormedField 𝕂
inst✝¹ : NormedDivisionRing 𝔸
inst✝ : NormedAlgebra 𝕂 𝔸
x : 𝔸
hx : x ∈ EMetric.ball 0 (expSeries 𝕂 𝔸).radius
⊢ Summable (norm ∘ fun n => x ^ n / ↑n !)
tactic: change Summable (norm ∘ _)
state_before: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝² : NontriviallyNormedField 𝕂
inst✝¹ : NormedDivisionRing 𝔸
inst✝ : NormedAlgebra 𝕂 𝔸
x : 𝔸
hx : x ∈ EMetric.ball 0 (expSeries 𝕂 𝔸).radius
⊢ Summable (norm ∘ fun n => x ^ n / ↑n !)
state_after: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝² : NontriviallyNormedField 𝕂
inst✝¹ : NormedDivisionRing 𝔸
inst✝ : NormedAlgebra 𝕂 𝔸
x : 𝔸
hx : x ∈ EMetric.ball 0 (expSeries 𝕂 𝔸).radius
⊢ Summable (norm ∘ fun n => (expSeries 𝕂 𝔸 n) fun x_1 => x)
tactic: rw [← expSeries_apply_eq_div' (𝕂 := 𝕂) x]
state_before: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝² : NontriviallyNormedField 𝕂
inst✝¹ : NormedDivisionRing 𝔸
inst✝ : NormedAlgebra 𝕂 𝔸
x : 𝔸
hx : x ∈ EMetric.ball 0 (expSeries 𝕂 𝔸).radius
⊢ Summable (norm ∘ fun n => (expSeries 𝕂 𝔸 n) fun x_1 => x)
state_after: no goals
tactic: exact norm_expSeries_summable_of_mem_ball x hx
Theorem: Nat.totient_eq_prod_factorization
File: Mathlib/Data/Nat/Totient.lean

Proof steps:
state_before: n : ℕ
hn : n ≠ 0
⊢ φ n = n.factorization.prod fun p k => p ^ (k - 1) * (p - 1)
state_after: n : ℕ
hn : n ≠ 0
⊢ (n.factorization.prod fun p k => φ (p ^ k)) = n.factorization.prod fun p k => p ^ (k - 1) * (p - 1)
tactic: rw [multiplicative_factorization φ (@totient_mul) totient_one hn]
state_before: n : ℕ
hn : n ≠ 0
⊢ (n.factorization.prod fun p k => φ (p ^ k)) = n.factorization.prod fun p k => p ^ (k - 1) * (p - 1)
state_after: n : ℕ
hn : n ≠ 0
⊢ ∀ x ∈ n.factorization.support, φ (x ^ n.factorization x) = x ^ (n.factorization x - 1) * (x - 1)
tactic: apply Finsupp.prod_congr _
state_before: n : ℕ
hn : n ≠ 0
⊢ ∀ x ∈ n.factorization.support, φ (x ^ n.factorization x) = x ^ (n.factorization x - 1) * (x - 1)
state_after: n : ℕ
hn : n ≠ 0
p : ℕ
hp : p ∈ n.factorization.support
⊢ φ (p ^ n.factorization p) = p ^ (n.factorization p - 1) * (p - 1)
tactic: intro p hp
state_before: n : ℕ
hn : n ≠ 0
p : ℕ
hp : p ∈ n.factorization.support
⊢ φ (p ^ n.factorization p) = p ^ (n.factorization p - 1) * (p - 1)
state_after: n : ℕ
hn : n ≠ 0
p : ℕ
hp : p ∈ n.factorization.support
h : 0 < n.factorization p
⊢ φ (p ^ n.factorization p) = p ^ (n.factorization p - 1) * (p - 1)
tactic: have h := zero_lt_iff.mpr (Finsupp.mem_support_iff.mp hp)
state_before: n : ℕ
hn : n ≠ 0
p : ℕ
hp : p ∈ n.factorization.support
h : 0 < n.factorization p
⊢ φ (p ^ n.factorization p) = p ^ (n.factorization p - 1) * (p - 1)
state_after: no goals
tactic: rw [totient_prime_pow (prime_of_mem_primeFactors hp) h]
Theorem: Set.image_image2
File: Mathlib/Data/Set/NAry.lean

Proof steps:
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f✝ f' : α → β → γ
g✝ g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
f : α → β → γ
g : γ → δ
⊢ g '' image2 f s t = image2 (fun a b => g (f a b)) s t
state_after: no goals
tactic: simp only [← image_prod, image_image]
Theorem: TopologicalSpace.IsTopologicalBasis.inf
File: Mathlib/Topology/Bases.lean

Proof steps:
state_before: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
t₁ t₂ : TopologicalSpace β
B₁ B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
⊢ IsTopologicalBasis (image2 (fun x x_1 => x ∩ x_1) B₁ B₂)
state_after: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
t₁ t₂ : TopologicalSpace β
B₁ B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
a : β
⊢ (𝓝 a).HasBasis (fun t => t ∈ image2 (fun x x_1 => x ∩ x_1) B₁ B₂ ∧ a ∈ t) id
tactic: refine .of_hasBasis_nhds (t := ?_) fun a ↦ ?_
state_before: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
t₁ t₂ : TopologicalSpace β
B₁ B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
a : β
⊢ (𝓝 a).HasBasis (fun t => t ∈ image2 (fun x x_1 => x ∩ x_1) B₁ B₂ ∧ a ∈ t) id
state_after: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
t₁ t₂ : TopologicalSpace β
B₁ B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
a : β
⊢ (𝓝 a ⊓ 𝓝 a).HasBasis (fun t => t ∈ image2 (fun x x_1 => x ∩ x_1) B₁ B₂ ∧ a ∈ t) id
tactic: rw [nhds_inf (t₁ := t₁)]
state_before: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
t₁ t₂ : TopologicalSpace β
B₁ B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
a : β
⊢ (𝓝 a ⊓ 𝓝 a).HasBasis (fun t => t ∈ image2 (fun x x_1 => x ∩ x_1) B₁ B₂ ∧ a ∈ t) id
state_after: case h.e'_4.h.a
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
t₁ t₂ : TopologicalSpace β
B₁ B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
a : β
x✝ : Set β
⊢ x✝ ∈ image2 (fun x x_1 => x ∩ x_1) B₁ B₂ ∧ a ∈ x✝ ↔
    x✝ ∈ (fun i => i.1 ∩ i.2) '' {i | (i.1 ∈ B₁ ∧ a ∈ i.1) ∧ i.2 ∈ B₂ ∧ a ∈ i.2}
tactic: convert ((h₁.nhds_hasBasis (t := t₁)).inf (h₂.nhds_hasBasis (t := t₂))).to_image_id
state_before: case h.e'_4.h.a
α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
t₁ t₂ : TopologicalSpace β
B₁ B₂ : Set (Set β)
h₁ : IsTopologicalBasis B₁
h₂ : IsTopologicalBasis B₂
a : β
x✝ : Set β
⊢ x✝ ∈ image2 (fun x x_1 => x ∩ x_1) B₁ B₂ ∧ a ∈ x✝ ↔
    x✝ ∈ (fun i => i.1 ∩ i.2) '' {i | (i.1 ∈ B₁ ∧ a ∈ i.1) ∧ i.2 ∈ B₂ ∧ a ∈ i.2}
state_after: no goals
tactic: aesop
Theorem: SimpleGraph.Partition.partOfVertex_ne_of_adj
File: Mathlib/Combinatorics/SimpleGraph/Partition.lean

Proof steps:
state_before: V : Type u
G : SimpleGraph V
P : G.Partition
v w : V
h : G.Adj v w
⊢ P.partOfVertex v ≠ P.partOfVertex w
state_after: V : Type u
G : SimpleGraph V
P : G.Partition
v w : V
h : G.Adj v w
hn : P.partOfVertex v = P.partOfVertex w
⊢ False
tactic: intro hn
state_before: V : Type u
G : SimpleGraph V
P : G.Partition
v w : V
h : G.Adj v w
hn : P.partOfVertex v = P.partOfVertex w
⊢ False
state_after: V : Type u
G : SimpleGraph V
P : G.Partition
v w : V
h : G.Adj v w
hn : P.partOfVertex v = P.partOfVertex w
hw : w ∈ P.partOfVertex w
⊢ False
tactic: have hw := P.mem_partOfVertex w
state_before: V : Type u
G : SimpleGraph V
P : G.Partition
v w : V
h : G.Adj v w
hn : P.partOfVertex v = P.partOfVertex w
hw : w ∈ P.partOfVertex w
⊢ False
state_after: V : Type u
G : SimpleGraph V
P : G.Partition
v w : V
h : G.Adj v w
hn : P.partOfVertex v = P.partOfVertex w
hw : w ∈ P.partOfVertex v
⊢ False
tactic: rw [← hn] at hw
state_before: V : Type u
G : SimpleGraph V
P : G.Partition
v w : V
h : G.Adj v w
hn : P.partOfVertex v = P.partOfVertex w
hw : w ∈ P.partOfVertex v
⊢ False
state_after: no goals
tactic: exact P.independent _ (P.partOfVertex_mem v) (P.mem_partOfVertex v) hw (G.ne_of_adj h) h
Theorem: Cardinal.aleph'_succ
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

Proof steps:
state_before: o : Ordinal.{u_1}
⊢ aleph' (succ o) = succ (aleph' o)
state_after: o : Ordinal.{u_1}
⊢ (aleph' (succ o)).alephIdx ≤ (succ (aleph' o)).alephIdx
tactic: apply (succ_le_of_lt <| aleph'_lt.2 <| lt_succ o).antisymm' (Cardinal.alephIdx_le.1 <| _)
state_before: o : Ordinal.{u_1}
⊢ (aleph' (succ o)).alephIdx ≤ (succ (aleph' o)).alephIdx
state_after: o : Ordinal.{u_1}
⊢ aleph' o < succ (aleph' o)
tactic: rw [alephIdx_aleph', succ_le_iff, ← aleph'_lt, aleph'_alephIdx]
state_before: o : Ordinal.{u_1}
⊢ aleph' o < succ (aleph' o)
state_after: no goals
tactic: apply lt_succ
Theorem: Ideal.absNorm_top
File: Mathlib/RingTheory/Ideal/Norm.lean

Proof steps:
state_before: S : Type u_1
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain S
inst✝³ : Nontrivial S
inst✝² : IsDedekindDomain S
inst✝¹ : Module.Free ℤ S
inst✝ : Module.Finite ℤ S
⊢ absNorm ⊤ = 1
state_after: no goals
tactic: rw [← Ideal.one_eq_top, _root_.map_one]
Theorem: isSplittingField_AdjoinRoot_X_pow_sub_C
File: Mathlib/FieldTheory/KummerExtension.lean

Proof steps:
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
⊢ IsSplittingField K K[n√a] (X ^ n - C a)
state_after: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
this : Fact (Irreducible (X ^ n - C a))
⊢ IsSplittingField K K[n√a] (X ^ n - C a)
tactic: have := Fact.mk H
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
this : Fact (Irreducible (X ^ n - C a))
⊢ IsSplittingField K K[n√a] (X ^ n - C a)
state_after: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
this✝ : Fact (Irreducible (X ^ n - C a))
this : Algebra K K[n√a] := inferInstance
⊢ IsSplittingField K K[n√a] (X ^ n - C a)
tactic: letI : Algebra K K[n√a] := inferInstance
state_before: K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
this✝ : Fact (Irreducible (X ^ n - C a))
this : Algebra K K[n√a] := inferInstance
⊢ IsSplittingField K K[n√a] (X ^ n - C a)
state_after: case splits'
K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
this✝ : Fact (Irreducible (X ^ n - C a))
this : Algebra K K[n√a] := inferInstance
⊢ Splits (algebraMap K K[n√a]) (X ^ n - C a)

case adjoin_rootSet'
K : Type u
inst✝³ : Field K
n : ℕ
hζ : (primitiveRoots n K).Nonempty
hn : 0 < n
a : K
H : Irreducible (X ^ n - C a)
L : Type u_1
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsSplittingField K L (X ^ n - C a)
this✝ : Fact (Irreducible (X ^ n - C a))
this : Algebra K K[n√a] := inferInstance
⊢ Algebra.adjoin K ((X ^ n - C a).rootSet K[n√a]) = ⊤
tactic: constructor
Theorem: Algebra.FinitePresentation.mvPolynomial_of_finitePresentation
File: Mathlib/RingTheory/FinitePresentation.lean

Proof steps:
state_before: R : Type w₁
A : Type w₂
B : Type w₃
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : FinitePresentation R A
ι : Type v
inst✝ : Finite ι
⊢ FinitePresentation R (MvPolynomial ι A)
state_after: R : Type w₁
A : Type w₂
B : Type w₃
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : FinitePresentation R A
ι : Type v
inst✝ : Finite ι
hfp : FinitePresentation R A
⊢ FinitePresentation R (MvPolynomial ι A)
tactic: have hfp : FinitePresentation.{w₁, w₂} R A := inferInstance
state_before: R : Type w₁
A : Type w₂
B : Type w₃
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : FinitePresentation R A
ι : Type v
inst✝ : Finite ι
hfp : FinitePresentation R A
⊢ FinitePresentation R (MvPolynomial ι A)
state_after: R : Type w₁
A : Type w₂
B : Type w₃
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Algebra R A
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : FinitePresentation R A
ι : Type v
inst✝ : Finite ι
hfp : ∃ ι x f, Surjective ⇑f ∧ (RingHom.ker f.toRingHom).FG
⊢ ∃ ι_1 x f, Surjective ⇑f ∧ (RingHom.ker f.toRingHom).FG
tactic: rw [iff_quotient_mvPolynomial'] at hfp ⊢
Theorem: Finsupp.card_Iio
File: Mathlib/Data/Finsupp/Interval.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : CanonicallyOrderedAddCommMonoid α
inst✝ : LocallyFiniteOrder α
f : ι →₀ α
⊢ (Iio f).card = ∏ i ∈ f.support, (Iic (f i)).card - 1
state_after: no goals
tactic: rw [card_Iio_eq_card_Iic_sub_one, card_Iic]