ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: frontier_inter_subset
File: Mathlib/Topology/Basic.lean

Proof steps:
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
s t : Set X
⊢ frontier (s ∩ t) ⊆ frontier s ∩ closure t ∪ closure s ∩ frontier t
state_after: 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
s t : Set X
⊢ closure (s ∩ t) ∩ (closure sᶜ ∪ closure tᶜ) ⊆
    closure s ∩ closure sᶜ ∩ closure t ∪ closure s ∩ (closure t ∩ closure tᶜ)
tactic: simp only [frontier_eq_closure_inter_closure, compl_inter, closure_union]
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
s t : Set X
⊢ closure (s ∩ t) ∩ (closure sᶜ ∪ closure tᶜ) ⊆
    closure s ∩ closure sᶜ ∩ closure t ∪ closure s ∩ (closure t ∩ closure tᶜ)
state_after: 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
s t : Set X
⊢ closure s ∩ closure t ∩ (closure sᶜ ∪ closure tᶜ) =
    closure s ∩ closure sᶜ ∩ closure t ∪ closure s ∩ (closure t ∩ closure tᶜ)
tactic: refine (inter_subset_inter_left _ (closure_inter_subset_inter_closure s t)).trans_eq ?_
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
s t : Set X
⊢ closure s ∩ closure t ∩ (closure sᶜ ∪ closure tᶜ) =
    closure s ∩ closure sᶜ ∩ closure t ∪ closure s ∩ (closure t ∩ closure tᶜ)
state_after: no goals
tactic: simp only [inter_union_distrib_left, union_inter_distrib_right, inter_assoc,
    inter_comm (closure t)]
Theorem: ProbabilityTheory.finite_of_condCount_ne_zero
File: Mathlib/Probability/CondCount.lean

Proof steps:
state_before: Ω : Type u_1
inst✝ : MeasurableSpace Ω
s t : Set Ω
h : (condCount s) t ≠ 0
⊢ s.Finite
state_after: Ω : Type u_1
inst✝ : MeasurableSpace Ω
s t : Set Ω
h : (condCount s) t ≠ 0
hs' : ¬s.Finite
⊢ False
tactic: by_contra hs'
state_before: Ω : Type u_1
inst✝ : MeasurableSpace Ω
s t : Set Ω
h : (condCount s) t ≠ 0
hs' : ¬s.Finite
⊢ False
state_after: no goals
tactic: simp [condCount, cond, Measure.count_apply_infinite hs'] at h
Theorem: Nat.range_eq_Icc_zero_sub_one
File: Mathlib/Order/Interval/Finset/Nat.lean

Proof steps:
state_before: a b c n : ℕ
hn : n ≠ 0
⊢ range n = Icc 0 (n - 1)
state_after: case a
a b✝ c n : ℕ
hn : n ≠ 0
b : ℕ
⊢ b ∈ range n ↔ b ∈ Icc 0 (n - 1)
tactic: ext b
state_before: case a
a b✝ c n : ℕ
hn : n ≠ 0
b : ℕ
⊢ b ∈ range n ↔ b ∈ Icc 0 (n - 1)
state_after: case a
a b✝ c n : ℕ
hn : n ≠ 0
b : ℕ
⊢ b < n ↔ b ≤ n - 1
tactic: simp_all only [mem_Icc, zero_le, true_and, mem_range]
state_before: case a
a b✝ c n : ℕ
hn : n ≠ 0
b : ℕ
⊢ b < n ↔ b ≤ n - 1
state_after: no goals
tactic: exact lt_iff_le_pred (zero_lt_of_ne_zero hn)
Theorem: MeasureTheory.SignedMeasure.rnDeriv_sub
File: Mathlib/MeasureTheory/Decomposition/SignedLebesgue.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝¹ : s.HaveLebesgueDecomposition μ
inst✝ : t.HaveLebesgueDecomposition μ
hst : (s - t).HaveLebesgueDecomposition μ
⊢ (s - t).rnDeriv μ =ᶠ[ae μ] s.rnDeriv μ - t.rnDeriv μ
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝¹ : s.HaveLebesgueDecomposition μ
inst✝ : t.HaveLebesgueDecomposition μ
hst : (s + -t).HaveLebesgueDecomposition μ
⊢ (s - t).rnDeriv μ =ᶠ[ae μ] s.rnDeriv μ - t.rnDeriv μ
tactic: rw [sub_eq_add_neg] at hst
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝¹ : s.HaveLebesgueDecomposition μ
inst✝ : t.HaveLebesgueDecomposition μ
hst : (s + -t).HaveLebesgueDecomposition μ
⊢ (s - t).rnDeriv μ =ᶠ[ae μ] s.rnDeriv μ - t.rnDeriv μ
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝¹ : s.HaveLebesgueDecomposition μ
inst✝ : t.HaveLebesgueDecomposition μ
hst : (s + -t).HaveLebesgueDecomposition μ
⊢ (s + -t).rnDeriv μ =ᶠ[ae μ] s.rnDeriv μ + -t.rnDeriv μ
tactic: rw [sub_eq_add_neg, sub_eq_add_neg]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t✝ s t : SignedMeasure α
μ : Measure α
inst✝¹ : s.HaveLebesgueDecomposition μ
inst✝ : t.HaveLebesgueDecomposition μ
hst : (s + -t).HaveLebesgueDecomposition μ
⊢ (s + -t).rnDeriv μ =ᶠ[ae μ] s.rnDeriv μ + -t.rnDeriv μ
state_after: no goals
tactic: exact ae_eq_trans (rnDeriv_add _ _ _) (Filter.EventuallyEq.add (ae_eq_refl _) (rnDeriv_neg _ _))
Theorem: BoxIntegral.Prepartition.card_filter_mem_Icc_le
File: Mathlib/Analysis/BoxIntegral/Partition/Basic.lean

Proof steps:
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x✝ : ι → ℝ
inst✝ : Fintype ι
x : ι → ℝ
⊢ (filter (fun J => x ∈ Box.Icc J) π.boxes).card ≤ 2 ^ Fintype.card ι
state_after: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x✝ : ι → ℝ
inst✝ : Fintype ι
x : ι → ℝ
⊢ (filter (fun J => x ∈ Box.Icc J) π.boxes).card ≤ Fintype.card (Set ι)
tactic: rw [← Fintype.card_set]
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x✝ : ι → ℝ
inst✝ : Fintype ι
x : ι → ℝ
⊢ (filter (fun J => x ∈ Box.Icc J) π.boxes).card ≤ Fintype.card (Set ι)
state_after: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x✝ : ι → ℝ
inst✝ : Fintype ι
x : ι → ℝ
⊢ InjOn (fun J => {i | J.lower i = x i}) ↑(filter (fun J => x ∈ Box.Icc J) π.boxes)
tactic: refine Finset.card_le_card_of_injOn (fun J : Box ι => { i | J.lower i = x i })
    (fun _ _ => Finset.mem_univ _) ?_
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x✝ : ι → ℝ
inst✝ : Fintype ι
x : ι → ℝ
⊢ InjOn (fun J => {i | J.lower i = x i}) ↑(filter (fun J => x ∈ Box.Icc J) π.boxes)
state_after: no goals
tactic: simpa using π.injOn_setOf_mem_Icc_setOf_lower_eq x
Theorem: Orientation.volumeForm_robust'
File: Mathlib/Analysis/InnerProductSpace/Orientation.lean

Proof steps:
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n : ℕ
_i : Fact (finrank ℝ E = n)
o : Orientation ℝ E (Fin n)
b : OrthonormalBasis (Fin n) ℝ E
v : Fin n → E
⊢ |o.volumeForm v| = |b.toBasis.det v|
state_after: case zero
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
_i : Fact (finrank ℝ E = 0)
o : Orientation ℝ E (Fin 0)
b : OrthonormalBasis (Fin 0) ℝ E
v : Fin 0 → E
⊢ |o.volumeForm v| = |b.toBasis.det v|

case succ
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : InnerProductSpace ℝ E
n✝ : ℕ
_i : Fact (finrank ℝ E = n✝ + 1)
o : Orientation ℝ E (Fin (n✝ + 1))
b : OrthonormalBasis (Fin (n✝ + 1)) ℝ E
v : Fin (n✝ + 1) → E
⊢ |o.volumeForm v| = |b.toBasis.det v|
tactic: cases n
Theorem: Set.ordConnected_singleton
File: Mathlib/Order/Interval/Set/OrdConnected.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
inst✝² : Preorder α✝
inst✝¹ : Preorder β
s t : Set α✝
α : Type u_3
inst✝ : PartialOrder α
a : α
⊢ {a}.OrdConnected
state_after: α✝ : Type u_1
β : Type u_2
inst✝² : Preorder α✝
inst✝¹ : Preorder β
s t : Set α✝
α : Type u_3
inst✝ : PartialOrder α
a : α
⊢ (Icc a a).OrdConnected
tactic: rw [← Icc_self]
state_before: α✝ : Type u_1
β : Type u_2
inst✝² : Preorder α✝
inst✝¹ : Preorder β
s t : Set α✝
α : Type u_3
inst✝ : PartialOrder α
a : α
⊢ (Icc a a).OrdConnected
state_after: no goals
tactic: exact ordConnected_Icc
Theorem: AddSubgroup.comap_injective
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
f✝ f : G →* N
h : Surjective ⇑f
K L : Subgroup N
⊢ comap f K = comap f L → K = L
state_after: no goals
tactic: simp only [le_antisymm_iff, comap_le_comap_of_surjective h, imp_self]
Theorem: Matrix.smul_vec2
File: Mathlib/Data/Matrix/Notation.lean

Proof steps:
state_before: α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
R : Type u_1
inst✝ : SMul R α
x : R
a₀ a₁ : α
⊢ x • ![a₀, a₁] = ![x • a₀, x • a₁]
state_after: no goals
tactic: rw [smul_cons, smul_cons, smul_empty]
Theorem: Combinatorics.Line.apply_none
File: Mathlib/Combinatorics/HalesJewett.lean

Proof steps:
state_before: η : Type u_1
α✝ : Type u_2
ι✝ : Type u_3
κ : Type u_4
l✝ : Line α✝ ι✝
i✝ : ι✝
a x✝ : α✝
α : Type u_5
ι : Type u_6
l : Line α ι
x : α
i : ι
h : l.idxFun i = none
⊢ (fun x i => (l.idxFun i).getD x) x i = x
state_after: no goals
tactic: simp only [Option.getD_none, h, l.apply_def]
Theorem: CategoryTheory.Presieve.in_coverByImage
File: Mathlib/CategoryTheory/Sites/DenseSubsite.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{u_4, u_1} C
D : Type u_2
inst✝¹ : Category.{u_5, u_2} D
E : Type u_3
inst✝ : Category.{?u.4369, u_3} E
J : GrothendieckTopology C
K : GrothendieckTopology D
L : GrothendieckTopology E
G : C ⥤ D
X : D
Y : C
f : G.obj Y ⟶ X
⊢ 𝟙 (G.obj Y) ≫ f = f
state_after: no goals
tactic: simp
Theorem: Nat.dist_mul_right
File: Mathlib/Data/Nat/Dist.lean

Proof steps:
state_before: n k m : ℕ
⊢ (n * k).dist (m * k) = n.dist m * k
state_after: no goals
tactic: rw [dist, dist, right_distrib, tsub_mul n, tsub_mul m]
Theorem: Finset.mulIndicator_biUnion_apply
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
κ✝¹ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
κ✝ : Type u_6
κ : Type u_7
s : Finset ι
t : ι → Set κ
f : κ → β
h : (↑s).PairwiseDisjoint t
x : κ
⊢ (⋃ i ∈ s, t i).mulIndicator f x = ∏ i ∈ s, (t i).mulIndicator f x
state_after: no goals
tactic: rw [mulIndicator_biUnion s t h]
Theorem: BoxIntegral.integrable_of_continuousOn
File: Mathlib/Analysis/BoxIntegral/Basic.lean

Proof steps:
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
I✝ J : Box ι
π : TaggedPrepartition I✝
inst✝² : Fintype ι
l : IntegrationParams
f✝ g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
inst✝¹ : CompleteSpace E
I : Box ι
f : (ι → ℝ) → E
hc : ContinuousOn f (Box.Icc I)
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
⊢ Integrable I l f μ.toBoxAdditive.toSMul
state_after: case hb
ι : Type u
E : Type v
F : Type w
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
I✝ J : Box ι
π : TaggedPrepartition I✝
inst✝² : Fintype ι
l : IntegrationParams
f✝ g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
inst✝¹ : CompleteSpace E
I : Box ι
f : (ι → ℝ) → E
hc : ContinuousOn f (Box.Icc I)
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
⊢ ∃ C, ∀ x ∈ Box.Icc I, ‖f x‖ ≤ C

case hc
ι : Type u
E : Type v
F : Type w
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
I✝ J : Box ι
π : TaggedPrepartition I✝
inst✝² : Fintype ι
l : IntegrationParams
f✝ g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
inst✝¹ : CompleteSpace E
I : Box ι
f : (ι → ℝ) → E
hc : ContinuousOn f (Box.Icc I)
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
⊢ ∀ᵐ (x : ι → ℝ) ∂μ.restrict (Box.Icc I), ContinuousWithinAt f (Box.Icc I) x
tactic: apply integrable_of_bounded_and_ae_continuousWithinAt
Theorem: Polynomial.natDegree_toSubring
File: Mathlib/RingTheory/Polynomial/Basic.lean

Proof steps:
state_before: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
p : R[X]
T : Subring R
hp : ↑p.coeffs ⊆ ↑T
⊢ (p.toSubring T hp).natDegree = p.natDegree
state_after: no goals
tactic: simp [natDegree]
Theorem: FreeAddGroup.closure_range_of
File: Mathlib/GroupTheory/FreeGroup/Basic.lean

Proof steps:
state_before: α✝ : Type u
L L₁ L₂ L₃ L₄ : List (α✝ × Bool)
β : Type v
inst✝ : Group β
f : α✝ → β
x y : FreeGroup α✝
α : Type u_1
⊢ Subgroup.closure (Set.range of) = ⊤
state_after: α✝ : Type u
L L₁ L₂ L₃ L₄ : List (α✝ × Bool)
β : Type v
inst✝ : Group β
f : α✝ → β
x y : FreeGroup α✝
α : Type u_1
⊢ (MonoidHom.id (FreeGroup α)).range = ⊤
tactic: rw [← lift.range_eq_closure, lift_of_eq_id]
state_before: α✝ : Type u
L L₁ L₂ L₃ L₄ : List (α✝ × Bool)
β : Type v
inst✝ : Group β
f : α✝ → β
x y : FreeGroup α✝
α : Type u_1
⊢ (MonoidHom.id (FreeGroup α)).range = ⊤
state_after: no goals
tactic: exact MonoidHom.range_top_of_surjective _ Function.surjective_id
Theorem: Finset.val_toFinset
File: Mathlib/Data/Finset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s : Finset α
⊢ s.val.toFinset = s
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s : Finset α
a✝ : α
⊢ a✝ ∈ s.val.toFinset ↔ a✝ ∈ s
tactic: ext
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s : Finset α
a✝ : α
⊢ a✝ ∈ s.val.toFinset ↔ a✝ ∈ s
state_after: no goals
tactic: rw [Multiset.mem_toFinset, ← mem_def]
Theorem: WeierstrassCurve.VariableChange.id_comp
File: Mathlib/AlgebraicGeometry/EllipticCurve/Weierstrass.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
W : WeierstrassCurve R
C✝ C' C'' C : VariableChange R
⊢ id.comp C = C
state_after: no goals
tactic: simp only [comp, id, zero_add, zero_mul, mul_zero, one_mul]
Theorem: IsCompact.closedBall_zero_sub
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

Proof steps:
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
hs : IsCompact s
hδ : 0 ≤ δ
⊢ closedBall 1 δ / s = cthickening δ s⁻¹
state_after: no goals
tactic: simp [div_eq_mul_inv, mul_comm, hs.inv.mul_closedBall_one hδ]
Theorem: SpectrumRestricts.image
File: Mathlib/Algebra/Algebra/Quasispectrum.lean

Proof steps:
state_before: R✝ : Type u_1
A✝ : Type u_2
inst✝¹¹ : CommSemiring R✝
inst✝¹⁰ : NonUnitalRing A✝
inst✝⁹ : Module R✝ A✝
inst✝⁸ : IsScalarTower R✝ A✝ A✝
inst✝⁷ : SMulCommClass R✝ A✝ A✝
R : Type u_3
S : Type u_4
A : Type u_5
inst✝⁶ : Semifield R
inst✝⁵ : Semifield S
inst✝⁴ : Ring A
inst✝³ : Algebra R S
inst✝² : Algebra R A
inst✝¹ : Algebra S A
a : A
f : S → R
inst✝ : IsScalarTower R S A
h : SpectrumRestricts a f
⊢ f '' spectrum S a = spectrum R a
state_after: no goals
tactic: simp only [← h.algebraMap_image, Set.image_image, h.left_inv _, Set.image_id']
Theorem: CategoryTheory.PreGaloisCategory.AutGalois.ext
File: Mathlib/CategoryTheory/Galois/Prorepresentability.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f g : AutGalois F
h : ∀ (A : PointedGaloisObject F), (π F A) f = (π F A) g
⊢ f = g
state_after: case a.h
C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f g : AutGalois F
h : ∀ (A : PointedGaloisObject F), (π F A) f = (π F A) g
A : PointedGaloisObject F
⊢ ↑f A = ↑g A
tactic: ext A
state_before: case a.h
C : Type u₁
inst✝² : Category.{u₂, u₁} C
inst✝¹ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝ : FiberFunctor F
f g : AutGalois F
h : ∀ (A : PointedGaloisObject F), (π F A) f = (π F A) g
A : PointedGaloisObject F
⊢ ↑f A = ↑g A
state_after: no goals
tactic: exact h A
Theorem: Mathlib.Tactic.Ring.inv_add
File: Mathlib/Tactic/Ring/Basic.lean

Proof steps:
state_before: u✝ : Lean.Level
arg : Q(Type u✝)
sα✝ : Q(CommSemiring «$arg»)
u : Lean.Level
α : Q(Type u)
sα : Q(CommSemiring «$α»)
R : Type u_1
inst✝ : CommSemiring R
a a' a₁✝ a₂✝ a₃ b b' b₁ b₂ b₃ c c₁ c₂ : R
a₁ a₂ : ℕ
x✝¹ : ↑a₁ = b₁
x✝ : ↑a₂ = b₂
⊢ ↑(a₁ + a₂) = b₁ + b₂
state_after: u✝ : Lean.Level
arg : Q(Type u✝)
sα✝ : Q(CommSemiring «$arg»)
u : Lean.Level
α : Q(Type u)
sα : Q(CommSemiring «$α»)
R : Type u_1
inst✝ : CommSemiring R
a a' a₁✝ a₂✝ a₃ b b' b₃ c c₁ c₂ : R
a₁ a₂ : ℕ
⊢ ↑(a₁ + a₂) = ↑a₁ + ↑a₂
tactic: subst_vars
state_before: u✝ : Lean.Level
arg : Q(Type u✝)
sα✝ : Q(CommSemiring «$arg»)
u : Lean.Level
α : Q(Type u)
sα : Q(CommSemiring «$α»)
R : Type u_1
inst✝ : CommSemiring R
a a' a₁✝ a₂✝ a₃ b b' b₃ c c₁ c₂ : R
a₁ a₂ : ℕ
⊢ ↑(a₁ + a₂) = ↑a₁ + ↑a₂
state_after: no goals
tactic: simp
Theorem: CompactlySupportedContinuousMapClass.of_compactSpace
File: Mathlib/Topology/ContinuousFunction/CompactlySupported.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁷ : TopologicalSpace α
inst✝⁶ : Zero β
inst✝⁵ : TopologicalSpace β
inst✝⁴ : FunLike F α β
inst✝³ : CompactlySupportedContinuousMapClass F α β
G : Type u_5
inst✝² : FunLike G α β
inst✝¹ : ContinuousMapClass G α β
inst✝ : CompactSpace α
⊢ ∀ (f : G), HasCompactSupport ⇑f
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁷ : TopologicalSpace α
inst✝⁶ : Zero β
inst✝⁵ : TopologicalSpace β
inst✝⁴ : FunLike F α β
inst✝³ : CompactlySupportedContinuousMapClass F α β
G : Type u_5
inst✝² : FunLike G α β
inst✝¹ : ContinuousMapClass G α β
inst✝ : CompactSpace α
f : G
⊢ HasCompactSupport ⇑f
tactic: intro f
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝⁷ : TopologicalSpace α
inst✝⁶ : Zero β
inst✝⁵ : TopologicalSpace β
inst✝⁴ : FunLike F α β
inst✝³ : CompactlySupportedContinuousMapClass F α β
G : Type u_5
inst✝² : FunLike G α β
inst✝¹ : ContinuousMapClass G α β
inst✝ : CompactSpace α
f : G
⊢ HasCompactSupport ⇑f
state_after: no goals
tactic: exact HasCompactSupport.of_compactSpace f
Theorem: PiTensorProduct.algebraMap_apply
File: Mathlib/RingTheory/PiTensorProduct.lean

Proof steps:
state_before: ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝⁷ : CommSemiring R'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : ι) → Semiring (A i)
inst✝⁴ : Algebra R' R
inst✝³ : (i : ι) → Algebra R (A i)
inst✝² : (i : ι) → Algebra R' (A i)
inst✝¹ : ∀ (i : ι), IsScalarTower R' R (A i)
r : R'
i : ι
inst✝ : DecidableEq ι
⊢ (algebraMap R' (⨂[R] (i : ι), A i)) r = (tprod R) (Pi.mulSingle i ((algebraMap R' (A i)) r))
state_after: ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝⁷ : CommSemiring R'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : ι) → Semiring (A i)
inst✝⁴ : Algebra R' R
inst✝³ : (i : ι) → Algebra R (A i)
inst✝² : (i : ι) → Algebra R' (A i)
inst✝¹ : ∀ (i : ι), IsScalarTower R' R (A i)
r : R'
i : ι
inst✝ : DecidableEq ι
⊢ r • (tprod R) 1 = (tprod R) (Pi.mulSingle i ((algebraMap R' (A i)) r))
tactic: change r • tprod R 1 = _
state_before: ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝⁷ : CommSemiring R'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : ι) → Semiring (A i)
inst✝⁴ : Algebra R' R
inst✝³ : (i : ι) → Algebra R (A i)
inst✝² : (i : ι) → Algebra R' (A i)
inst✝¹ : ∀ (i : ι), IsScalarTower R' R (A i)
r : R'
i : ι
inst✝ : DecidableEq ι
⊢ r • (tprod R) 1 = (tprod R) (Pi.mulSingle i ((algebraMap R' (A i)) r))
state_after: ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝⁷ : CommSemiring R'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : ι) → Semiring (A i)
inst✝⁴ : Algebra R' R
inst✝³ : (i : ι) → Algebra R (A i)
inst✝² : (i : ι) → Algebra R' (A i)
inst✝¹ : ∀ (i : ι), IsScalarTower R' R (A i)
r : R'
i : ι
inst✝ : DecidableEq ι
this : Pi.mulSingle i ((algebraMap R' (A i)) r) = update (fun i => 1) i (r • 1)
⊢ r • (tprod R) 1 = (tprod R) (Pi.mulSingle i ((algebraMap R' (A i)) r))
tactic: have : Pi.mulSingle i (algebraMap R' (A i) r) = update (fun i ↦ 1) i (r • 1) := by
    rw [Algebra.algebraMap_eq_smul_one]; rfl
state_before: ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝⁷ : CommSemiring R'
inst✝⁶ : CommSemiring R
inst✝⁵ : (i : ι) → Semiring (A i)
inst✝⁴ : Algebra R' R
inst✝³ : (i : ι) → Algebra R (A i)
inst✝² : (i : ι) → Algebra R' (A i)
inst✝¹ : ∀ (i : ι), IsScalarTower R' R (A i)
r : R'
i : ι
inst✝ : DecidableEq ι
this : Pi.mulSingle i ((algebraMap R' (A i)) r) = update (fun i => 1) i (r • 1)
⊢ r • (tprod R) 1 = (tprod R) (Pi.mulSingle i ((algebraMap R' (A i)) r))
state_after: no goals
tactic: rw [this, ← smul_one_smul R r (1 : A i), MultilinearMap.map_smul, update_eq_self, smul_one_smul,
    Pi.one_def]
Theorem: inseparable_one_iff_norm
File: Mathlib/Analysis/Normed/Group/Basic.lean

Proof steps:
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a✝ a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
a : E
⊢ Inseparable a 1 ↔ ‖a‖ = 0
state_after: no goals
tactic: rw [Metric.inseparable_iff, dist_one_right]
Theorem: Pi.toLex_strictMono
File: Mathlib/Order/PiLex.lean

Proof steps:
state_before: ι : Type u_1
β : ι → Type u_2
r : ι → ι → Prop
s : {i : ι} → β i → β i → Prop
inst✝² : LinearOrder ι
inst✝¹ : IsWellOrder ι fun x x_1 => x < x_1
inst✝ : (i : ι) → PartialOrder (β i)
x y : (i : ι) → β i
i✝ : ι
a✝ : β i✝
a b : (i : ι) → β i
h : a < b
i : ι
hi : i ∈ {i | a i ≠ b i}
hl : ∀ x ∈ {i | a i ≠ b i}, ¬x < i
j : ι
hj : (fun x x_1 => x < x_1) j i
⊢ toLex a j = toLex b j
state_after: ι : Type u_1
β : ι → Type u_2
r : ι → ι → Prop
s : {i : ι} → β i → β i → Prop
inst✝² : LinearOrder ι
inst✝¹ : IsWellOrder ι fun x x_1 => x < x_1
inst✝ : (i : ι) → PartialOrder (β i)
x y : (i : ι) → β i
i✝ : ι
a✝ : β i✝
a b : (i : ι) → β i
h : a < b
i : ι
hi : i ∈ {i | a i ≠ b i}
j : ι
hj : (fun x x_1 => x < x_1) j i
hl : toLex a j ≠ toLex b j
⊢ ∃ x ∈ {i | a i ≠ b i}, x < i
tactic: contrapose! hl
state_before: ι : Type u_1
β : ι → Type u_2
r : ι → ι → Prop
s : {i : ι} → β i → β i → Prop
inst✝² : LinearOrder ι
inst✝¹ : IsWellOrder ι fun x x_1 => x < x_1
inst✝ : (i : ι) → PartialOrder (β i)
x y : (i : ι) → β i
i✝ : ι
a✝ : β i✝
a b : (i : ι) → β i
h : a < b
i : ι
hi : i ∈ {i | a i ≠ b i}
j : ι
hj : (fun x x_1 => x < x_1) j i
hl : toLex a j ≠ toLex b j
⊢ ∃ x ∈ {i | a i ≠ b i}, x < i
state_after: no goals
tactic: exact ⟨j, hl, hj⟩
Theorem: FreeAbelianGroup.lift.add'
File: Mathlib/GroupTheory/FreeAbelianGroup.lean

Proof steps:
state_before: α✝ : Type u
α : Type u_1
β : Type u_2
inst✝ : AddCommGroup β
a : FreeAbelianGroup α
f g : α → β
⊢ (lift (f + g)) a = (lift f) a + (lift g) a
state_after: case refine_1
α✝ : Type u
α : Type u_1
β : Type u_2
inst✝ : AddCommGroup β
a : FreeAbelianGroup α
f g : α → β
⊢ (lift (f + g)) 0 = (lift f) 0 + (lift g) 0

case refine_2
α✝ : Type u
α : Type u_1
β : Type u_2
inst✝ : AddCommGroup β
a : FreeAbelianGroup α
f g : α → β
⊢ ∀ (x : α), (lift (f + g)) (of x) = (lift f) (of x) + (lift g) (of x)

case refine_3
α✝ : Type u
α : Type u_1
β : Type u_2
inst✝ : AddCommGroup β
a : FreeAbelianGroup α
f g : α → β
⊢ ∀ (x : α),
    (lift (f + g)) (of x) = (lift f) (of x) + (lift g) (of x) →
      (lift (f + g)) (-of x) = (lift f) (-of x) + (lift g) (-of x)

case refine_4
α✝ : Type u
α : Type u_1
β : Type u_2
inst✝ : AddCommGroup β
a : FreeAbelianGroup α
f g : α → β
⊢ ∀ (x y : FreeAbelianGroup α),
    (lift (f + g)) x = (lift f) x + (lift g) x →
      (lift (f + g)) y = (lift f) y + (lift g) y → (lift (f + g)) (x + y) = (lift f) (x + y) + (lift g) (x + y)
tactic: refine FreeAbelianGroup.induction_on a ?_ ?_ ?_ ?_
Theorem: AddConstMapClass.map_const
File: Mathlib/Algebra/AddConstMap/Basic.lean

Proof steps:
state_before: F : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : FunLike F G H
a : G
b : H
inst✝² : AddZeroClass G
inst✝¹ : Add H
inst✝ : AddConstMapClass F G H a b
f : F
⊢ f a = f 0 + b
state_after: no goals
tactic: simpa using map_add_const f 0
Theorem: SimpleGraph.edgeFinset_replaceVertex_of_not_adj
File: Mathlib/Combinatorics/SimpleGraph/Operations.lean

Proof steps:
state_before: V : Type u_1
inst✝² : DecidableEq V
G : SimpleGraph V
s t : V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
hn : ¬G.Adj s t
⊢ (G.replaceVertex s t).edgeFinset = G.edgeFinset \ G.incidenceFinset t ∪ image (fun x => s(x, t)) (G.neighborFinset s)
state_after: V : Type u_1
inst✝² : DecidableEq V
G : SimpleGraph V
s t : V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
hn : ¬G.Adj s t
⊢ (G.replaceVertex s t).edgeFinset = (G.edgeSet \ G.incidenceSet t ∪ (fun x => s(x, t)) '' G.neighborSet s).toFinset
tactic: simp only [incidenceFinset, neighborFinset, ← Set.toFinset_diff, ← Set.toFinset_image,
    ← Set.toFinset_union]
state_before: V : Type u_1
inst✝² : DecidableEq V
G : SimpleGraph V
s t : V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
hn : ¬G.Adj s t
⊢ (G.replaceVertex s t).edgeFinset = (G.edgeSet \ G.incidenceSet t ∪ (fun x => s(x, t)) '' G.neighborSet s).toFinset
state_after: no goals
tactic: exact Set.toFinset_congr (G.edgeSet_replaceVertex_of_not_adj hn)