1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finsupp.some_single_none
File: Mathlib/Data/Finsupp/Basic.lean

tactic: ext
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
m : M
⊢ (single none m).some = 0
state_after: case h
α : 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
m : M
a✝ : α
⊢ (single none m).some a✝ = 0 a✝

tactic: simp
state_before: case h
α : 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
m : M
a✝ : α
⊢ (single none m).some a✝ = 0 a✝
state_after: no goals
Theorem: Filter.frequently_comap
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [Filter.Frequently, eventually_comap, not_exists, _root_.not_and]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l✝ : Filter α
f : α → β
l : Filter β
p : α → Prop
s : Set α
⊢ (∃ᶠ (a : α) in comap f l, p a) ↔ ∃ᶠ (b : β) in l, ∃ a, f a = b ∧ p a
state_after: no goals
Theorem: Metric.isBounded_iff
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: rw [isBounded_def, ← Filter.mem_sets, @PseudoMetricSpace.cobounded_sets α, mem_setOf_eq,
  compl_compl]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s✝ s : Set α
⊢ IsBounded s ↔ ∃ C, ∀ ⦃x : α⦄, x ∈ s → ∀ ⦃y : α⦄, y ∈ s → dist x y ≤ C
state_after: no goals
Theorem: CategoryTheory.tensor_μ_natural_left
File: Mathlib/CategoryTheory/Monoidal/Braided/Basic.lean

tactic: convert tensor_μ_natural C f₁ f₂ (𝟙 Z₁) (𝟙 Z₂) using 1 <;> simp
state_before: C : Type u₁
inst✝⁸ : Category.{v₁, u₁} C
inst✝⁷ : MonoidalCategory C
inst✝⁶ : BraidedCategory C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
inst✝⁴ : MonoidalCategory D
inst✝³ : BraidedCategory D
E : Type u₃
inst✝² : Category.{v₃, u₃} E
inst✝¹ : MonoidalCategory E
inst✝ : BraidedCategory E
X₁ X₂ Y₁ Y₂ : C
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₂
Z₁ Z₂ : C
⊢ (f₁ ⊗ f₂) ▷ (Z₁ ⊗ Z₂) ≫ tensor_μ C (Y₁, Y₂) (Z₁, Z₂) = tensor_μ C (X₁, X₂) (Z₁, Z₂) ≫ (f₁ ▷ Z₁ ⊗ f₂ ▷ Z₂)
state_after: no goals
Theorem: WittVector.FractionRing.p_nonzero
File: Mathlib/RingTheory/WittVector/Identities.lean

tactic: simpa using (IsFractionRing.injective (𝕎 R) (FractionRing (𝕎 R))).ne (WittVector.p_nonzero _ _)
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : Nontrivial R
inst✝ : CharP R p
⊢ ↑p ≠ 0
state_after: no goals
Theorem: NumberField.InfinitePlace.isUnramified_smul_iff
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: rw [isUnramified_iff, isUnramified_iff, isReal_smul_iff, comap_smul,
  ← AlgEquiv.toAlgHom_toRingHom, AlgHom.comp_algebraMap]
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
inst✝³ : Algebra k K
inst✝² : Algebra k F
inst✝¹ : Algebra K F
inst✝ : IsScalarTower k K F
σ : K ≃ₐ[k] K
w : InfinitePlace K
⊢ IsUnramified k (σ • w) ↔ IsUnramified k w
state_after: no goals
Theorem: MeasureTheory.setIntegral_prod
File: Mathlib/MeasureTheory/Constructions/Prod/Integral.lean

tactic: simp only [← Measure.prod_restrict s t, IntegrableOn] at hf ⊢
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝¹⁰ : MeasurableSpace α
inst✝⁹ : MeasurableSpace α'
inst✝⁸ : MeasurableSpace β
inst✝⁷ : MeasurableSpace β'
inst✝⁶ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SigmaFinite ν
inst✝³ : NormedSpace ℝ E
inst✝² : SigmaFinite μ
E' : Type u_7
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace ℝ E'
f : α × β → E
s : Set α
t : Set β
hf : IntegrableOn f (s ×ˢ t) (μ.prod ν)
⊢ ∫ (z : α × β) in s ×ˢ t, f z ∂μ.prod ν = ∫ (x : α) in s, ∫ (y : β) in t, f (x, y) ∂ν ∂μ
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝¹⁰ : MeasurableSpace α
inst✝⁹ : MeasurableSpace α'
inst✝⁸ : MeasurableSpace β
inst✝⁷ : MeasurableSpace β'
inst✝⁶ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SigmaFinite ν
inst✝³ : NormedSpace ℝ E
inst✝² : SigmaFinite μ
E' : Type u_7
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace ℝ E'
f : α × β → E
s : Set α
t : Set β
hf : Integrable f ((μ.restrict s).prod (ν.restrict t))
⊢ ∫ (z : α × β), f z ∂(μ.restrict s).prod (ν.restrict t) = ∫ (x : α) in s, ∫ (y : β) in t, f (x, y) ∂ν ∂μ

tactic: exact integral_prod f hf
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝¹⁰ : MeasurableSpace α
inst✝⁹ : MeasurableSpace α'
inst✝⁸ : MeasurableSpace β
inst✝⁷ : MeasurableSpace β'
inst✝⁶ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : SigmaFinite ν
inst✝³ : NormedSpace ℝ E
inst✝² : SigmaFinite μ
E' : Type u_7
inst✝¹ : NormedAddCommGroup E'
inst✝ : NormedSpace ℝ E'
f : α × β → E
s : Set α
t : Set β
hf : Integrable f ((μ.restrict s).prod (ν.restrict t))
⊢ ∫ (z : α × β), f z ∂(μ.restrict s).prod (ν.restrict t) = ∫ (x : α) in s, ∫ (y : β) in t, f (x, y) ∂ν ∂μ
state_after: no goals
Theorem: SimpleGraph.Walk.IsPath.of_cons
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: simp [isPath_def]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x y u v w : V
h : G.Adj u v
p : G.Walk v w
⊢ (cons h p).IsPath → p.IsPath
state_after: no goals
Theorem: congrArg₂
File: .lake/packages/batteries/Batteries/Logic.lean

tactic: subst hx hy
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β → γ
x x' : α
y y' : β
hx : x = x'
hy : y = y'
⊢ f x y = f x' y'
state_after: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β → γ
x : α
y : β
⊢ f x y = f x y

tactic: rfl
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f : α → β → γ
x : α
y : β
⊢ f x y = f x y
state_after: no goals
Theorem: SetTheory.PGame.equiv_of_mk_equiv
File: Mathlib/SetTheory/Game/PGame.lean

tactic: constructor <;> rw [le_def]
state_before: xl xr : Type u
x y : PGame
L : x.LeftMoves ≃ y.LeftMoves
R : x.RightMoves ≃ y.RightMoves
hl : ∀ (i : x.LeftMoves), x.moveLeft i ≈ y.moveLeft (L i)
hr : ∀ (j : x.RightMoves), x.moveRight j ≈ y.moveRight (R j)
⊢ x ≈ y
state_after: case left
xl xr : Type u
x y : PGame
L : x.LeftMoves ≃ y.LeftMoves
R : x.RightMoves ≃ y.RightMoves
hl : ∀ (i : x.LeftMoves), x.moveLeft i ≈ y.moveLeft (L i)
hr : ∀ (j : x.RightMoves), x.moveRight j ≈ y.moveRight (R j)
⊢ (∀ (i : x.LeftMoves), (∃ i', x.moveLeft i ≤ y.moveLeft i') ∨ ∃ j, (x.moveLeft i).moveRight j ≤ y) ∧
    ∀ (j : y.RightMoves), (∃ i, x ≤ (y.moveRight j).moveLeft i) ∨ ∃ j', x.moveRight j' ≤ y.moveRight j

case right
xl xr : Type u
x y : PGame
L : x.LeftMoves ≃ y.LeftMoves
R : x.RightMoves ≃ y.RightMoves
hl : ∀ (i : x.LeftMoves), x.moveLeft i ≈ y.moveLeft (L i)
hr : ∀ (j : x.RightMoves), x.moveRight j ≈ y.moveRight (R j)
⊢ (∀ (i : y.LeftMoves), (∃ i', y.moveLeft i ≤ x.moveLeft i') ∨ ∃ j, (y.moveLeft i).moveRight j ≤ x) ∧
    ∀ (j : x.RightMoves), (∃ i, y ≤ (x.moveRight j).moveLeft i) ∨ ∃ j', y.moveRight j' ≤ x.moveRight j

tactic: exact ⟨fun i => Or.inl ⟨_, (hl i).1⟩, fun j => Or.inr ⟨_, by simpa using (hr (R.symm j)).1⟩⟩
state_before: case left
xl xr : Type u
x y : PGame
L : x.LeftMoves ≃ y.LeftMoves
R : x.RightMoves ≃ y.RightMoves
hl : ∀ (i : x.LeftMoves), x.moveLeft i ≈ y.moveLeft (L i)
hr : ∀ (j : x.RightMoves), x.moveRight j ≈ y.moveRight (R j)
⊢ (∀ (i : x.LeftMoves), (∃ i', x.moveLeft i ≤ y.moveLeft i') ∨ ∃ j, (x.moveLeft i).moveRight j ≤ y) ∧
    ∀ (j : y.RightMoves), (∃ i, x ≤ (y.moveRight j).moveLeft i) ∨ ∃ j', x.moveRight j' ≤ y.moveRight j
state_after: no goals

tactic: simpa using (hr (R.symm j)).1
state_before: xl xr : Type u
x y : PGame
L : x.LeftMoves ≃ y.LeftMoves
R : x.RightMoves ≃ y.RightMoves
hl : ∀ (i : x.LeftMoves), x.moveLeft i ≈ y.moveLeft (L i)
hr : ∀ (j : x.RightMoves), x.moveRight j ≈ y.moveRight (R j)
j : y.RightMoves
⊢ x.moveRight (?m.66732 j) ≤ y.moveRight j
state_after: no goals

tactic: exact ⟨fun i => Or.inl ⟨_, by simpa using (hl (L.symm i)).2⟩, fun j => Or.inr ⟨_, (hr j).2⟩⟩
state_before: case right
xl xr : Type u
x y : PGame
L : x.LeftMoves ≃ y.LeftMoves
R : x.RightMoves ≃ y.RightMoves
hl : ∀ (i : x.LeftMoves), x.moveLeft i ≈ y.moveLeft (L i)
hr : ∀ (j : x.RightMoves), x.moveRight j ≈ y.moveRight (R j)
⊢ (∀ (i : y.LeftMoves), (∃ i', y.moveLeft i ≤ x.moveLeft i') ∨ ∃ j, (y.moveLeft i).moveRight j ≤ x) ∧
    ∀ (j : x.RightMoves), (∃ i, y ≤ (x.moveRight j).moveLeft i) ∨ ∃ j', y.moveRight j' ≤ x.moveRight j
state_after: no goals

tactic: simpa using (hl (L.symm i)).2
state_before: xl xr : Type u
x y : PGame
L : x.LeftMoves ≃ y.LeftMoves
R : x.RightMoves ≃ y.RightMoves
hl : ∀ (i : x.LeftMoves), x.moveLeft i ≈ y.moveLeft (L i)
hr : ∀ (j : x.RightMoves), x.moveRight j ≈ y.moveRight (R j)
i : y.LeftMoves
⊢ y.moveLeft i ≤ x.moveLeft (?m.67133 i)
state_after: no goals
Theorem: Module.AEval.X_smul_of
File: Mathlib/Algebra/Polynomial/Module/AEval.lean

tactic: rw [← of_aeval_smul, aeval_X]
state_before: R : Type u_2
A : Type u_3
M : Type u_1
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
a : A
inst✝⁴ : Algebra R A
inst✝³ : AddCommMonoid M
inst✝² : Module A M
inst✝¹ : Module R M
inst✝ : IsScalarTower R A M
m : M
⊢ X • (of R M a) m = (of R M a) (a • m)
state_after: no goals
Theorem: CategoryTheory.Limits.imageSubobjectCompIso_hom_arrow
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp [imageSubobjectCompIso]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
X Y Z : C
f✝ : X ⟶ Y
inst✝³ : HasImage f✝
inst✝² : HasEqualizers C
f : X ⟶ Y
inst✝¹ : HasImage f
Y' : C
h : Y ⟶ Y'
inst✝ : IsIso h
⊢ (imageSubobjectCompIso f h).hom ≫ (imageSubobject f).arrow = (imageSubobject (f ≫ h)).arrow ≫ inv h
state_after: no goals
Theorem: NonUnitalStarAlgebra.mem_sInf
File: Mathlib/Algebra/Star/NonUnitalSubalgebra.lean

tactic: simp only [← SetLike.mem_coe, coe_sInf, Set.mem_iInter₂]
state_before: F : Type v'
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝¹⁶ : CommSemiring R
inst✝¹⁵ : StarRing R
inst✝¹⁴ : NonUnitalSemiring A
inst✝¹³ : StarRing A
inst✝¹² : Module R A
inst✝¹¹ : IsScalarTower R A A
inst✝¹⁰ : SMulCommClass R A A
inst✝⁹ : StarModule R A
inst✝⁸ : NonUnitalSemiring B
inst✝⁷ : StarRing B
inst✝⁶ : Module R B
inst✝⁵ : IsScalarTower R B B
inst✝⁴ : SMulCommClass R B B
inst✝³ : StarModule R B
inst✝² : FunLike F A B
inst✝¹ : NonUnitalAlgHomClass F R A B
inst✝ : NonUnitalStarAlgHomClass F R A B
S : Set (NonUnitalStarSubalgebra R A)
x : A
⊢ x ∈ sInf S ↔ ∀ p ∈ S, x ∈ p
state_after: no goals
Theorem: Filter.forall_neBot_le_iff
File: Mathlib/Order/Filter/Ultrafilter.lean

tactic: refine ⟨fun H f hf => H f f.neBot hf, ?_⟩
state_before: α : Type u
β : Type v
γ : Type u_1
f : Filter α
s : Set α
a : α
g : Filter α
p : Filter α → Prop
hp : Monotone p
⊢ (∀ (f : Filter α), f.NeBot → f ≤ g → p f) ↔ ∀ (f : Ultrafilter α), ↑f ≤ g → p ↑f
state_after: α : Type u
β : Type v
γ : Type u_1
f : Filter α
s : Set α
a : α
g : Filter α
p : Filter α → Prop
hp : Monotone p
⊢ (∀ (f : Ultrafilter α), ↑f ≤ g → p ↑f) → ∀ (f : Filter α), f.NeBot → f ≤ g → p f

tactic: intro H f hf hfg
state_before: α : Type u
β : Type v
γ : Type u_1
f : Filter α
s : Set α
a : α
g : Filter α
p : Filter α → Prop
hp : Monotone p
⊢ (∀ (f : Ultrafilter α), ↑f ≤ g → p ↑f) → ∀ (f : Filter α), f.NeBot → f ≤ g → p f
state_after: α : Type u
β : Type v
γ : Type u_1
f✝ : Filter α
s : Set α
a : α
g : Filter α
p : Filter α → Prop
hp : Monotone p
H : ∀ (f : Ultrafilter α), ↑f ≤ g → p ↑f
f : Filter α
hf : f.NeBot
hfg : f ≤ g
⊢ p f

tactic: exact hp (of_le f) (H _ ((of_le f).trans hfg))
state_before: α : Type u
β : Type v
γ : Type u_1
f✝ : Filter α
s : Set α
a : α
g : Filter α
p : Filter α → Prop
hp : Monotone p
H : ∀ (f : Ultrafilter α), ↑f ≤ g → p ↑f
f : Filter α
hf : f.NeBot
hfg : f ≤ g
⊢ p f
state_after: no goals
Theorem: CategoryTheory.Limits.zero_of_target_iso_zero
File: Mathlib/CategoryTheory/Limits/Shapes/ZeroMorphisms.lean

tactic: have h : f = f ≫ i.hom ≫ 𝟙 0 ≫ i.inv := by simp only [Iso.hom_inv_id, id_comp, comp_id]
state_before: C : Type u
inst✝³ : Category.{v, u} C
D : Type u'
inst✝² : Category.{v', u'} D
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
X Y : C
f : X ⟶ Y
i : Y ≅ 0
⊢ f = 0
state_after: C : Type u
inst✝³ : Category.{v, u} C
D : Type u'
inst✝² : Category.{v', u'} D
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
X Y : C
f : X ⟶ Y
i : Y ≅ 0
h : f = f ≫ i.hom ≫ 𝟙 0 ≫ i.inv
⊢ f = 0

tactic: simpa using h
state_before: C : Type u
inst✝³ : Category.{v, u} C
D : Type u'
inst✝² : Category.{v', u'} D
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
X Y : C
f : X ⟶ Y
i : Y ≅ 0
h : f = f ≫ i.hom ≫ 𝟙 0 ≫ i.inv
⊢ f = 0
state_after: no goals

tactic: simp only [Iso.hom_inv_id, id_comp, comp_id]
state_before: C : Type u
inst✝³ : Category.{v, u} C
D : Type u'
inst✝² : Category.{v', u'} D
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
X Y : C
f : X ⟶ Y
i : Y ≅ 0
⊢ f = f ≫ i.hom ≫ 𝟙 0 ≫ i.inv
state_after: no goals
Theorem: List.lt_length_left_of_zipWith
File: Mathlib/Data/List/Zip.lean

tactic: rw [length_zipWith] at h
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → β → γ
i : ℕ
l : List α
l' : List β
h : i < (zipWith f l l').length
⊢ i < l.length
state_after: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → β → γ
i : ℕ
l : List α
l' : List β
h : i < min l.length l'.length
⊢ i < l.length

tactic: omega
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f : α → β → γ
i : ℕ
l : List α
l' : List β
h : i < min l.length l'.length
⊢ i < l.length
state_after: no goals
Theorem: Pretrivialization.trans_source
File: Mathlib/Topology/FiberBundle/Trivialization.lean

tactic: rw [PartialEquiv.trans_source, PartialEquiv.symm_source, e.target_inter_preimage_symm_source_eq]
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝¹ : TopologicalSpace B
inst✝ : TopologicalSpace F
proj : Z → B
e✝ : Pretrivialization F proj
x : Z
e f : Pretrivialization F proj
⊢ (f.symm.trans e.toPartialEquiv).source = (e.baseSet ∩ f.baseSet) ×ˢ univ
state_after: no goals
Theorem: List.iota_eq_reverse_range'
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp [iota, range'_concat, iota_eq_reverse_range' n, reverse_append, Nat.add_comm]
state_before: n : Nat
⊢ iota (n + 1) = (range' 1 (n + 1)).reverse
state_after: no goals
Theorem: Nat.smoothNumbers_zero
File: Mathlib/NumberTheory/SmoothNumbers.lean

tactic: simp only [smoothNumbers_eq_factoredNumbers, Finset.range_zero, factoredNumbers_empty]
state_before: ⊢ smoothNumbers 0 = {1}
state_after: no goals
Theorem: IsNilpotent.smul
File: Mathlib/RingTheory/Nilpotent/Basic.lean

tactic: obtain ⟨k, ha⟩ := ha
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝⁴ : MonoidWithZero R
inst✝³ : MonoidWithZero S
inst✝² : MulActionWithZero R S
inst✝¹ : SMulCommClass R S S
inst✝ : IsScalarTower R S S
a : S
ha : IsNilpotent a
t : R
⊢ IsNilpotent (t • a)
state_after: case intro
R : Type u_1
S : Type u_2
x y : R
inst✝⁴ : MonoidWithZero R
inst✝³ : MonoidWithZero S
inst✝² : MulActionWithZero R S
inst✝¹ : SMulCommClass R S S
inst✝ : IsScalarTower R S S
a : S
t : R
k : ℕ
ha : a ^ k = 0
⊢ IsNilpotent (t • a)

tactic: use k
state_before: case intro
R : Type u_1
S : Type u_2
x y : R
inst✝⁴ : MonoidWithZero R
inst✝³ : MonoidWithZero S
inst✝² : MulActionWithZero R S
inst✝¹ : SMulCommClass R S S
inst✝ : IsScalarTower R S S
a : S
t : R
k : ℕ
ha : a ^ k = 0
⊢ IsNilpotent (t • a)
state_after: case h
R : Type u_1
S : Type u_2
x y : R
inst✝⁴ : MonoidWithZero R
inst✝³ : MonoidWithZero S
inst✝² : MulActionWithZero R S
inst✝¹ : SMulCommClass R S S
inst✝ : IsScalarTower R S S
a : S
t : R
k : ℕ
ha : a ^ k = 0
⊢ (t • a) ^ k = 0

tactic: rw [smul_pow, ha, smul_zero]
state_before: case h
R : Type u_1
S : Type u_2
x y : R
inst✝⁴ : MonoidWithZero R
inst✝³ : MonoidWithZero S
inst✝² : MulActionWithZero R S
inst✝¹ : SMulCommClass R S S
inst✝ : IsScalarTower R S S
a : S
t : R
k : ℕ
ha : a ^ k = 0
⊢ (t • a) ^ k = 0
state_after: no goals
Theorem: Filter.liminf_nat_add
File: Mathlib/Order/LiminfLimsup.lean

tactic: rw [liminf, liminf, ← map_map, map_add_atTop_eq_nat]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : ConditionallyCompleteLattice α
f : ℕ → α
k : ℕ
⊢ liminf (f ∘ fun x => x + k) atTop = liminf f atTop
state_after: no goals
Theorem: LinearMap.BilinForm.IsAdjointPair.sub
File: Mathlib/LinearAlgebra/BilinearForm/Properties.lean

tactic: rw [LinearMap.sub_apply, LinearMap.sub_apply, sub_left, sub_right, h, h']
state_before: R : Type u_1
M : Type u_2
inst✝¹⁶ : CommSemiring R
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹³ : CommRing R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝¹⁰ : Field K
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁷ : AddCommMonoid M'✝
inst✝⁶ : AddCommMonoid M''
inst✝⁵ : Module R M'✝
inst✝⁴ : Module R M''
B : BilinForm R M
B₁ : BilinForm R₁ M₁
F : BilinForm R M
M' : Type u_9
inst✝³ : AddCommMonoid M'
inst✝² : Module R M'
B' : BilinForm R M'
f f' : M →ₗ[R] M'
g g' : M' →ₗ[R] M
M₁' : Type u_10
inst✝¹ : AddCommGroup M₁'
inst✝ : Module R₁ M₁'
B₁' : BilinForm R₁ M₁'
f₁ f₁' : M₁ →ₗ[R₁] M₁'
g₁ g₁' : M₁' →ₗ[R₁] M₁
h : B₁.IsAdjointPair B₁' f₁ g₁
h' : B₁.IsAdjointPair B₁' f₁' g₁'
x : M₁
y : M₁'
⊢ (B₁' ((f₁ - f₁') x)) y = (B₁ x) ((g₁ - g₁') y)
state_after: no goals
Theorem: MulChar.IsQuadratic.gaussSum_frob
File: Mathlib/NumberTheory/GaussSum.lean

tactic: rw [_root_.gaussSum_frob, pow_mulShift, hχ.pow_char p, ← gaussSum_mulShift χ ψ hp.unit,
  ← mul_assoc, hp.unit_spec, ← pow_two, ← pow_apply' _ two_ne_zero, hχ.sq_eq_one, ← hp.unit_spec,
  one_apply_coe, one_mul]
state_before: R : Type u
inst✝² : CommRing R
inst✝¹ : Fintype R
R' : Type v
inst✝ : CommRing R'
p : ℕ
fp : Fact (Nat.Prime p)
hch : CharP R' p
hp : IsUnit ↑p
χ : MulChar R R'
hχ : χ.IsQuadratic
ψ : AddChar R R'
⊢ gaussSum χ ψ ^ p = χ ↑p * gaussSum χ ψ
state_after: no goals
Theorem: EuclideanGeometry.Sphere.dist_div_sin_oangle_eq_two_mul_radius
File: Mathlib/Geometry/Euclidean/Angle/Sphere.lean

tactic: rw [← dist_div_sin_oangle_div_two_eq_radius hp₁ hp₂ hp₃ hp₁p₂ hp₁p₃ hp₂p₃,
  mul_div_cancel₀ _ (two_ne_zero' ℝ)]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
s : Sphere P
p₁ p₂ p₃ : P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
hp₃ : p₃ ∈ s
hp₁p₂ : p₁ ≠ p₂
hp₁p₃ : p₁ ≠ p₃
hp₂p₃ : p₂ ≠ p₃
⊢ dist p₁ p₃ / |(∡ p₁ p₂ p₃).sin| = 2 * s.radius
state_after: no goals
Theorem: CoxeterSystem.leftInvSeq_reverse
File: Mathlib/GroupTheory/Coxeter/Inversion.lean

tactic: simp [leftInvSeq_eq_reverse_rightInvSeq_reverse]
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
ω : List B
⊢ cs.leftInvSeq ω.reverse = (cs.rightInvSeq ω).reverse
state_after: no goals
Theorem: AlgebraicGeometry.Scheme.Pullback.cocycle_fst_fst_snd
File: Mathlib/AlgebraicGeometry/Pullbacks.lean

tactic: simp only [t'_fst_fst_snd]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
i j k : 𝒰.J
⊢ t' 𝒰 f g i j k ≫ t' 𝒰 f g j k i ≫ t' 𝒰 f g k i j ≫ pullback.fst ≫ pullback.fst ≫ pullback.snd =
    pullback.fst ≫ pullback.fst ≫ pullback.snd
state_after: no goals
Theorem: mem_image_univ_iff_mem_range
File: Mathlib/Data/Fintype/Basic.lean

tactic: simp
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Fintype α
inst✝ : DecidableEq β
f : α → β
b : β
⊢ b ∈ image f univ ↔ b ∈ Set.range f
state_after: no goals
Theorem: WeakFEPair.symm_Λ₀_eq
File: Mathlib/NumberTheory/LSeries/AbstractFuncEq.lean

tactic: rw [P.symm.Λ₀_eq]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : WeakFEPair E
s : ℂ
⊢ P.symm.Λ₀ s = P.symm.Λ s + (1 / s) • P.g₀ + (P.ε⁻¹ / (↑P.k - s)) • P.f₀
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : WeakFEPair E
s : ℂ
⊢ P.symm.Λ s + (1 / s) • P.symm.f₀ + (P.symm.ε / (↑P.symm.k - s)) • P.symm.g₀ =
    P.symm.Λ s + (1 / s) • P.g₀ + (P.ε⁻¹ / (↑P.k - s)) • P.f₀

tactic: rfl
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
P : WeakFEPair E
s : ℂ
⊢ P.symm.Λ s + (1 / s) • P.symm.f₀ + (P.symm.ε / (↑P.symm.k - s)) • P.symm.g₀ =
    P.symm.Λ s + (1 / s) • P.g₀ + (P.ε⁻¹ / (↑P.k - s)) • P.f₀
state_after: no goals
Theorem: CategoryTheory.Limits.imageSubobject_comp_le
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp
state_before: C : Type u
inst✝³ : Category.{v, u} C
X Y Z : C
f✝ : X ⟶ Y
inst✝² : HasImage f✝
X' : C
h : X' ⟶ X
f : X ⟶ Y
inst✝¹ : HasImage f
inst✝ : HasImage (h ≫ f)
⊢ image.preComp h f ≫ image.ι f = image.ι (h ≫ f)
state_after: no goals
Theorem: CategoryTheory.tensorRightHomEquiv_tensor
File: Mathlib/CategoryTheory/Monoidal/Rigid/Basic.lean

tactic: simp [tensorRightHomEquiv, tensorHom_def]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
⊢ (tensorRightHomEquiv (X' ⊗ X) Y Y' (Z' ⊗ Z)).symm ((g ⊗ f) ≫ (α_ Z' Z Y').inv) =
    (α_ X' X Y).hom ≫ (g ⊗ (tensorRightHomEquiv X Y Y' Z).symm f)
state_after: no goals
Theorem: Function.Semiconj.injOn_image
File: Mathlib/Data/Set/Function.lean

tactic: rintro _ ⟨x, hx, rfl⟩ _ ⟨y, hy, rfl⟩ H
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
fa : α → α
fb : β → β
f : α → β
g : β → γ
s t : Set α
h : Semiconj f fa fb
ha : InjOn fa s
hf : InjOn f (fa '' s)
⊢ InjOn fb (f '' s)
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
fa : α → α
fb : β → β
f : α → β
g : β → γ
s t : Set α
h : Semiconj f fa fb
ha : InjOn fa s
hf : InjOn f (fa '' s)
x : α
hx : x ∈ s
y : α
hy : y ∈ s
H : fb (f x) = fb (f y)
⊢ f x = f y

tactic: simp only [← h.eq] at H
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
fa : α → α
fb : β → β
f : α → β
g : β → γ
s t : Set α
h : Semiconj f fa fb
ha : InjOn fa s
hf : InjOn f (fa '' s)
x : α
hx : x ∈ s
y : α
hy : y ∈ s
H : fb (f x) = fb (f y)
⊢ f x = f y
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
fa : α → α
fb : β → β
f : α → β
g : β → γ
s t : Set α
h : Semiconj f fa fb
ha : InjOn fa s
hf : InjOn f (fa '' s)
x : α
hx : x ∈ s
y : α
hy : y ∈ s
H : f (fa x) = f (fa y)
⊢ f x = f y

tactic: exact congr_arg f (ha hx hy <| hf (mem_image_of_mem fa hx) (mem_image_of_mem fa hy) H)
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
fa : α → α
fb : β → β
f : α → β
g : β → γ
s t : Set α
h : Semiconj f fa fb
ha : InjOn fa s
hf : InjOn f (fa '' s)
x : α
hx : x ∈ s
y : α
hy : y ∈ s
H : f (fa x) = f (fa y)
⊢ f x = f y
state_after: no goals