1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Complex.eqOn_closure_of_eqOn_frontier
File: Mathlib/Analysis/Complex/AbsMax.lean

tactic: suffices H : ∀ z ∈ closure U, ‖(f - g) z‖ ≤ 0 by simpa [sub_eq_zero] using H
state_before: E : Type u
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
F : Type v
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℂ F
inst✝ : Nontrivial E
f g : E → F
U : Set E
hU : Bornology.IsBounded U
hf : DiffContOnCl ℂ f U
hg : DiffContOnCl ℂ g U
hfg : EqOn f g (frontier U)
⊢ EqOn f g (closure U)
state_after: E : Type u
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
F : Type v
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℂ F
inst✝ : Nontrivial E
f g : E → F
U : Set E
hU : Bornology.IsBounded U
hf : DiffContOnCl ℂ f U
hg : DiffContOnCl ℂ g U
hfg : EqOn f g (frontier U)
⊢ ∀ z ∈ closure U, ‖(f - g) z‖ ≤ 0

tactic: refine fun z hz => norm_le_of_forall_mem_frontier_norm_le hU (hf.sub hg) (fun w hw => ?_) hz
state_before: E : Type u
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
F : Type v
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℂ F
inst✝ : Nontrivial E
f g : E → F
U : Set E
hU : Bornology.IsBounded U
hf : DiffContOnCl ℂ f U
hg : DiffContOnCl ℂ g U
hfg : EqOn f g (frontier U)
⊢ ∀ z ∈ closure U, ‖(f - g) z‖ ≤ 0
state_after: E : Type u
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
F : Type v
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℂ F
inst✝ : Nontrivial E
f g : E → F
U : Set E
hU : Bornology.IsBounded U
hf : DiffContOnCl ℂ f U
hg : DiffContOnCl ℂ g U
hfg : EqOn f g (frontier U)
z : E
hz : z ∈ closure U
w : E
hw : w ∈ frontier U
⊢ ‖(f - g) w‖ ≤ 0

tactic: simp [hfg hw]
state_before: E : Type u
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
F : Type v
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℂ F
inst✝ : Nontrivial E
f g : E → F
U : Set E
hU : Bornology.IsBounded U
hf : DiffContOnCl ℂ f U
hg : DiffContOnCl ℂ g U
hfg : EqOn f g (frontier U)
z : E
hz : z ∈ closure U
w : E
hw : w ∈ frontier U
⊢ ‖(f - g) w‖ ≤ 0
state_after: no goals

tactic: simpa [sub_eq_zero] using H
state_before: E : Type u
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
F : Type v
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℂ F
inst✝ : Nontrivial E
f g : E → F
U : Set E
hU : Bornology.IsBounded U
hf : DiffContOnCl ℂ f U
hg : DiffContOnCl ℂ g U
hfg : EqOn f g (frontier U)
H : ∀ z ∈ closure U, ‖(f - g) z‖ ≤ 0
⊢ EqOn f g (closure U)
state_after: no goals
Theorem: div_div_div_comm
File: Mathlib/Algebra/Group/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionCommMonoid α
a b c d : α
⊢ a / b / (c / d) = a / c / (b / d)
state_after: no goals
Theorem: Matrix.mulVec_sub
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype n
A : Matrix m n α
x y : n → α
⊢ A *ᵥ (x - y) = A *ᵥ x - A *ᵥ y
state_after: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype n
A : Matrix m n α
x y : n → α
x✝ : m
⊢ (A *ᵥ (x - y)) x✝ = (A *ᵥ x - A *ᵥ y) x✝

tactic: apply dotProduct_sub
state_before: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype n
A : Matrix m n α
x y : n → α
x✝ : m
⊢ (A *ᵥ (x - y)) x✝ = (A *ᵥ x - A *ᵥ y) x✝
state_after: no goals
Theorem: threeGPFree_smul_set₀
File: Mathlib/Combinatorics/Additive/AP/Three/Defs.lean

tactic: rw [smul_eq_mul, smul_eq_mul, mul_mul_mul_comm, h, mul_mul_mul_comm]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
𝕜 : Type u_4
E : Type u_5
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NoZeroDivisors α
s : Set α
a : α
ha : a ≠ 0
hs : ThreeGPFree (a • s)
b : α
hb : b ∈ s
c : α
hc : c ∈ s
d : α
hd : d ∈ s
h : b * d = c * c
⊢ a • b * a • d = a * c * (a * c)
state_after: no goals
Theorem: Int.cast_npow
File: Mathlib/Algebra/Group/NatPowAssoc.lean

tactic: rw [pow_zero, npow_zero, Int.cast_one]
state_before: M : Type u_1
inst✝³ : Monoid M
R : Type u_2
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : NatPowAssoc R
n : ℤ
⊢ ↑(n ^ 0) = ↑n ^ 0
state_after: no goals

tactic: rw [npow_add, npow_one, Int.cast_mul, Int.cast_npow R n m, npow_add, npow_one]
state_before: M : Type u_1
inst✝³ : Monoid M
R : Type u_2
inst✝² : NonAssocRing R
inst✝¹ : Pow R ℕ
inst✝ : NatPowAssoc R
n : ℤ
m : ℕ
⊢ ↑(n ^ (m + 1)) = ↑n ^ (m + 1)
state_after: no goals
Theorem: PMF.mem_support_normalize_iff
File: Mathlib/Probability/ProbabilityMassFunction/Constructions.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → ℝ≥0∞
hf0 : tsum f ≠ 0
hf : tsum f ≠ ⊤
a : α
⊢ a ∈ (normalize f hf0 hf).support ↔ f a ≠ 0
state_after: no goals
Theorem: SmoothBumpFunction.support_mem_nhds
File: Mathlib/Geometry/Manifold/BumpFunction.lean

tactic: rw [hx]
state_before: E : Type uE
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : FiniteDimensional ℝ E
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
c : M
f : SmoothBumpFunction I c
x✝ x : M
hx : ↑f x = 1 x
⊢ ↑f x ≠ 0
state_after: E : Type uE
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : FiniteDimensional ℝ E
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
c : M
f : SmoothBumpFunction I c
x✝ x : M
hx : ↑f x = 1 x
⊢ 1 x ≠ 0

tactic: exact one_ne_zero
state_before: E : Type uE
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : FiniteDimensional ℝ E
H : Type uH
inst✝³ : TopologicalSpace H
I : ModelWithCorners ℝ E H
M : Type uM
inst✝² : TopologicalSpace M
inst✝¹ : ChartedSpace H M
inst✝ : SmoothManifoldWithCorners I M
c : M
f : SmoothBumpFunction I c
x✝ x : M
hx : ↑f x = 1 x
⊢ 1 x ≠ 0
state_after: no goals
Theorem: Set.star_inv
File: Mathlib/Algebra/Star/Pointwise.lean

tactic: ext
state_before: α : Type u_1
s✝ t : Set α
a : α
inst✝¹ : Group α
inst✝ : StarMul α
s : Set α
⊢ s⁻¹⋆ = s⋆⁻¹
state_after: case h
α : Type u_1
s✝ t : Set α
a : α
inst✝¹ : Group α
inst✝ : StarMul α
s : Set α
x✝ : α
⊢ x✝ ∈ s⁻¹⋆ ↔ x✝ ∈ s⋆⁻¹

tactic: simp only [mem_star, mem_inv, star_inv]
state_before: case h
α : Type u_1
s✝ t : Set α
a : α
inst✝¹ : Group α
inst✝ : StarMul α
s : Set α
x✝ : α
⊢ x✝ ∈ s⁻¹⋆ ↔ x✝ ∈ s⋆⁻¹
state_after: no goals
Theorem: Cubic.natDegree_of_c_eq_zero
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [of_c_eq_zero ha hb hc, natDegree_C]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
ha : P.a = 0
hb : P.b = 0
hc : P.c = 0
⊢ P.toPoly.natDegree = 0
state_after: no goals
Theorem: TopCat.Presheaf.Pushforward.id_eq
File: Mathlib/Topology/Sheaves/Presheaf.lean

tactic: unfold pushforwardObj
state_before: C : Type u
inst✝ : Category.{v, u} C
X : TopCat
ℱ : Presheaf C X
⊢ 𝟙 X _* ℱ = ℱ
state_after: C : Type u
inst✝ : Category.{v, u} C
X : TopCat
ℱ : Presheaf C X
⊢ (Opens.map (𝟙 X)).op ⋙ ℱ = ℱ

tactic: rw [Opens.map_id_eq]
state_before: C : Type u
inst✝ : Category.{v, u} C
X : TopCat
ℱ : Presheaf C X
⊢ (Opens.map (𝟙 X)).op ⋙ ℱ = ℱ
state_after: C : Type u
inst✝ : Category.{v, u} C
X : TopCat
ℱ : Presheaf C X
⊢ (𝟭 (Opens ↑X)).op ⋙ ℱ = ℱ

tactic: erw [Functor.id_comp]
state_before: C : Type u
inst✝ : Category.{v, u} C
X : TopCat
ℱ : Presheaf C X
⊢ (𝟭 (Opens ↑X)).op ⋙ ℱ = ℱ
state_after: no goals
Theorem: MeasureTheory.IntegrableOn.integrable_of_ae_not_mem_eq_zero
File: Mathlib/MeasureTheory/Integral/IntegrableOn.lean

tactic: rw [← integrableOn_univ]
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
hf : IntegrableOn f s μ
h't : ∀ᵐ (x : α) ∂μ, x ∉ s → f x = 0
⊢ Integrable f μ
state_after: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
hf : IntegrableOn f s μ
h't : ∀ᵐ (x : α) ∂μ, x ∉ s → f x = 0
⊢ IntegrableOn f univ μ

tactic: apply hf.of_ae_diff_eq_zero nullMeasurableSet_univ
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
hf : IntegrableOn f s μ
h't : ∀ᵐ (x : α) ∂μ, x ∉ s → f x = 0
⊢ IntegrableOn f univ μ
state_after: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
hf : IntegrableOn f s μ
h't : ∀ᵐ (x : α) ∂μ, x ∉ s → f x = 0
⊢ ∀ᵐ (x : α) ∂μ, x ∈ univ \ s → f x = 0

tactic: filter_upwards [h't] with x hx h'x using hx h'x.2
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : MeasurableSpace α
inst✝ : NormedAddCommGroup E
f g : α → E
s t : Set α
μ ν : Measure α
hf : IntegrableOn f s μ
h't : ∀ᵐ (x : α) ∂μ, x ∉ s → f x = 0
⊢ ∀ᵐ (x : α) ∂μ, x ∈ univ \ s → f x = 0
state_after: no goals
Theorem: CategoryTheory.ShortComplex.LeftHomologyData.homologyIso_hom_comp_leftHomologyIso_inv
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

tactic: dsimp only [homologyIso]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝¹ : S.HasHomology
h : S.LeftHomologyData
inst✝ : S.HasHomology
⊢ h.homologyIso.hom ≫ h.leftHomologyIso.inv = S.leftHomologyIso.inv
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝¹ : S.HasHomology
h : S.LeftHomologyData
inst✝ : S.HasHomology
⊢ (S.leftHomologyIso.symm ≪≫ h.leftHomologyIso).hom ≫ h.leftHomologyIso.inv = S.leftHomologyIso.inv

tactic: simp only [Iso.trans_hom, Iso.symm_hom, assoc, Iso.hom_inv_id, comp_id]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝¹ : S.HasHomology
h : S.LeftHomologyData
inst✝ : S.HasHomology
⊢ (S.leftHomologyIso.symm ≪≫ h.leftHomologyIso).hom ≫ h.leftHomologyIso.inv = S.leftHomologyIso.inv
state_after: no goals
Theorem: CategoryTheory.Functor.shiftMap_zero
File: Mathlib/CategoryTheory/Shift/ShiftSequence.lean

tactic: simp [shiftMap]
state_before: C : Type u_1
A : Type u_2
inst✝¹⁰ : Category.{u_6, u_1} C
inst✝⁹ : Category.{u_5, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁸ : AddMonoid M
inst✝⁷ : HasShift C M
G : Type u_4
inst✝⁶ : AddGroup G
inst✝⁵ : HasShift C G
inst✝⁴ : F.ShiftSequence M
inst✝³ : HasZeroMorphisms C
inst✝² : HasZeroMorphisms A
inst✝¹ : F.PreservesZeroMorphisms
inst✝ : ∀ (n : M), (shiftFunctor C n).PreservesZeroMorphisms
X Y : C
n a a' : M
ha' : n + a = a'
⊢ F.shiftMap 0 a a' ha' = 0
state_after: no goals
Theorem: Function.bUnion_ptsOfPeriod
File: Mathlib/Dynamics/PeriodicPts.lean

tactic: simp [mem_periodicPts]
state_before: α : Type u_1
β : Type u_2
f fa : α → α
fb : β → β
x✝ y : α
m n : ℕ
x : α
⊢ x ∈ ⋃ n, ⋃ (_ : n > 0), ptsOfPeriod f n ↔ x ∈ periodicPts f
state_after: no goals
Theorem: IsFiniteMeasureOnCompacts.map
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Order.lean

tactic: refine ⟨fun K hK ↦ ?_⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝⁷ : TopologicalSpace α
inst✝⁶ : MeasurableSpace α
inst✝⁵ : BorelSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : MeasurableSpace β
inst✝² : BorelSpace β
inst✝¹ : MeasurableSpace δ
μ : Measure α
inst✝ : IsFiniteMeasureOnCompacts μ
f : α ≃ₜ β
⊢ IsFiniteMeasureOnCompacts (Measure.map (⇑f) μ)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝⁷ : TopologicalSpace α
inst✝⁶ : MeasurableSpace α
inst✝⁵ : BorelSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : MeasurableSpace β
inst✝² : BorelSpace β
inst✝¹ : MeasurableSpace δ
μ : Measure α
inst✝ : IsFiniteMeasureOnCompacts μ
f : α ≃ₜ β
K : Set β
hK : IsCompact K
⊢ (Measure.map (⇑f) μ) K < ⊤

tactic: rw [← Homeomorph.toMeasurableEquiv_coe, MeasurableEquiv.map_apply]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝⁷ : TopologicalSpace α
inst✝⁶ : MeasurableSpace α
inst✝⁵ : BorelSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : MeasurableSpace β
inst✝² : BorelSpace β
inst✝¹ : MeasurableSpace δ
μ : Measure α
inst✝ : IsFiniteMeasureOnCompacts μ
f : α ≃ₜ β
K : Set β
hK : IsCompact K
⊢ (Measure.map (⇑f) μ) K < ⊤
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝⁷ : TopologicalSpace α
inst✝⁶ : MeasurableSpace α
inst✝⁵ : BorelSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : MeasurableSpace β
inst✝² : BorelSpace β
inst✝¹ : MeasurableSpace δ
μ : Measure α
inst✝ : IsFiniteMeasureOnCompacts μ
f : α ≃ₜ β
K : Set β
hK : IsCompact K
⊢ μ (⇑f.toMeasurableEquiv ⁻¹' K) < ⊤

tactic: exact IsCompact.measure_lt_top (f.isCompact_preimage.2 hK)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
inst✝⁷ : TopologicalSpace α
inst✝⁶ : MeasurableSpace α
inst✝⁵ : BorelSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : MeasurableSpace β
inst✝² : BorelSpace β
inst✝¹ : MeasurableSpace δ
μ : Measure α
inst✝ : IsFiniteMeasureOnCompacts μ
f : α ≃ₜ β
K : Set β
hK : IsCompact K
⊢ μ (⇑f.toMeasurableEquiv ⁻¹' K) < ⊤
state_after: no goals
Theorem: Matroid.coindep_iff_exists
File: Mathlib/Data/Matroid/Dual.lean

tactic: rw [coindep_iff_exists', and_iff_left hX]
state_before: α : Type u_1
M : Matroid α
I B X : Set α
hX : autoParam (X ⊆ M.E) _auto✝
⊢ M.Coindep X ↔ ∃ B, M.Base B ∧ B ⊆ M.E \ X
state_after: no goals
Theorem: Profinite.NobelingProof.GoodProducts.Plimit
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

tactic: intro h hho C hC hsC
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
ho : o.IsLimit
⊢ (∀ o' < o, P I o') → P I o
state_after: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
o : Ordinal.{u}
ho : o.IsLimit
h : ∀ o' < o, P I o'
hho : o ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
hC : IsClosed C
hsC : contained C o
⊢ LinearIndependent ℤ (eval C)

tactic: rw [linearIndependent_iff_union_smaller C ho hsC]
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
o : Ordinal.{u}
ho : o.IsLimit
h : ∀ o' < o, P I o'
hho : o ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
hC : IsClosed C
hsC : contained C o
⊢ LinearIndependent ℤ (eval C)
state_after: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C✝ : Set (I → Bool)
o : Ordinal.{u}
ho : o.IsLimit
h : ∀ o' < o, P I o'
hho : o ≤ Ordinal.type fun x x_1 => x < x_1
C : Set (I → Bool)
hC : IsClosed C
hsC : contained C o
⊢ LinearIndependent ℤ fun (p : ↑(⋃ e, smaller C ↑e)) => ↑p
Theorem: dist_div_div_le
File: Mathlib/Analysis/Normed/Group/Uniform.lean

tactic: simpa only [div_eq_mul_inv, dist_inv_inv] using dist_mul_mul_le a₁ a₂⁻¹ b₁ b₂⁻¹
state_before: 𝓕 : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁✝ a₂✝ b b₁✝ b₂✝ : E
r r₁ r₂ : ℝ
a₁ a₂ b₁ b₂ : E
⊢ dist (a₁ / a₂) (b₁ / b₂) ≤ dist a₁ b₁ + dist a₂ b₂
state_after: no goals
Theorem: expChar_is_prime_or_one
File: Mathlib/Algebra/CharP/ExpChar.lean

tactic: cases hq with
| zero => exact .inr rfl
| prime hp => exact .inl hp
state_before: R : Type u
inst✝² : Semiring R
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
q : ℕ
hq : ExpChar R q
⊢ Nat.Prime q ∨ q = 1
state_after: no goals

tactic: exact .inr rfl
state_before: case zero
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
inst✝¹ : NoZeroDivisors R
inst✝ : CharZero R
⊢ Nat.Prime 1 ∨ 1 = 1
state_after: no goals

tactic: exact .inl hp
state_before: case prime
R : Type u
inst✝² : Semiring R
inst✝¹ : Nontrivial R
inst✝ : NoZeroDivisors R
q : ℕ
hp : Nat.Prime q
hchar✝ : CharP R q
⊢ Nat.Prime q ∨ q = 1
state_after: no goals
Theorem: Equiv.swap_apply_ne_self_iff
File: Mathlib/Logic/Equiv/Basic.lean

tactic: by_cases hab : a = b
state_before: α : Sort u_1
inst✝ : DecidableEq α
a b x : α
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)
state_after: case pos
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
hab : a = b
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)

case neg
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
hab : ¬a = b
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)

tactic: by_cases hax : x = a
state_before: case neg
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
hab : ¬a = b
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)
state_after: case pos
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
hab : ¬a = b
hax : x = a
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)

case neg
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
hab : ¬a = b
hax : ¬x = a
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)

tactic: by_cases hbx : x = b
state_before: case neg
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
hab : ¬a = b
hax : ¬x = a
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)
state_after: case pos
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
hab : ¬a = b
hax : ¬x = a
hbx : x = b
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)

case neg
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
hab : ¬a = b
hax : ¬x = a
hbx : ¬x = b
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)

tactic: simp [hab, hax, hbx, swap_apply_of_ne_of_ne]
state_before: case neg
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
hab : ¬a = b
hax : ¬x = a
hbx : ¬x = b
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)
state_after: no goals

tactic: simp [hab]
state_before: case pos
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
hab : a = b
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)
state_after: no goals

tactic: simp [hax, eq_comm]
state_before: case pos
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
hab : ¬a = b
hax : x = a
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)
state_after: no goals

tactic: simp [hbx]
state_before: case pos
α : Sort u_1
inst✝ : DecidableEq α
a b x : α
hab : ¬a = b
hax : ¬x = a
hbx : x = b
⊢ (swap a b) x ≠ x ↔ a ≠ b ∧ (x = a ∨ x = b)
state_after: no goals
Theorem: ne_zero_of_dvd_ne_zero
File: Mathlib/Algebra/GroupWithZero/Divisibility.lean

tactic: rcases h₂ with ⟨u, rfl⟩
state_before: α : Type u_1
inst✝ : MonoidWithZero α
p q : α
h₁ : q ≠ 0
h₂ : p ∣ q
⊢ p ≠ 0
state_after: case intro
α : Type u_1
inst✝ : MonoidWithZero α
p u : α
h₁ : p * u ≠ 0
⊢ p ≠ 0

tactic: exact left_ne_zero_of_mul h₁
state_before: case intro
α : Type u_1
inst✝ : MonoidWithZero α
p u : α
h₁ : p * u ≠ 0
⊢ p ≠ 0
state_after: no goals
Theorem: Module.End.maxGenEigenspace_eq
File: Mathlib/LinearAlgebra/Eigenspace/Basic.lean

tactic: rw [isNoetherian_iff_wellFounded] at h
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
h : IsNoetherian R M
f : End R M
μ : R
⊢ f.maxGenEigenspace μ = (f.genEigenspace μ) (f.maxGenEigenspaceIndex μ)
state_after: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
h : WellFounded fun x x_1 => x > x_1
f : End R M
μ : R
⊢ f.maxGenEigenspace μ = (f.genEigenspace μ) (f.maxGenEigenspaceIndex μ)

tactic: exact (WellFounded.iSup_eq_monotonicSequenceLimit h (f.genEigenspace μ) : _)
state_before: K R : Type v
V M : Type w
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
h : WellFounded fun x x_1 => x > x_1
f : End R M
μ : R
⊢ f.maxGenEigenspace μ = (f.genEigenspace μ) (f.maxGenEigenspaceIndex μ)
state_after: no goals
Theorem: finRotate_succ_apply
File: Mathlib/Logic/Equiv/Fin.lean

tactic: cases n
state_before: m n : ℕ
i : Fin (n + 1)
⊢ (finRotate (n + 1)) i = i + 1
state_after: case zero
m : ℕ
i : Fin (0 + 1)
⊢ (finRotate (0 + 1)) i = i + 1

case succ
m n✝ : ℕ
i : Fin (n✝ + 1 + 1)
⊢ (finRotate (n✝ + 1 + 1)) i = i + 1

tactic: rcases i.le_last.eq_or_lt with (rfl | h)
state_before: case succ
m n✝ : ℕ
i : Fin (n✝ + 1 + 1)
⊢ (finRotate (n✝ + 1 + 1)) i = i + 1
state_after: case succ.inl
m n✝ : ℕ
⊢ (finRotate (n✝ + 1 + 1)) (Fin.last (n✝ + 1)) = Fin.last (n✝ + 1) + 1

case succ.inr
m n✝ : ℕ
i : Fin (n✝ + 1 + 1)
h : i < Fin.last (n✝ + 1)
⊢ (finRotate (n✝ + 1 + 1)) i = i + 1

tactic: exact @Subsingleton.elim (Fin 1) _ _ _
state_before: case zero
m : ℕ
i : Fin (0 + 1)
⊢ (finRotate (0 + 1)) i = i + 1
state_after: no goals

tactic: simp [finRotate_last]
state_before: case succ.inl
m n✝ : ℕ
⊢ (finRotate (n✝ + 1 + 1)) (Fin.last (n✝ + 1)) = Fin.last (n✝ + 1) + 1
state_after: no goals

tactic: cases i
state_before: case succ.inr
m n✝ : ℕ
i : Fin (n✝ + 1 + 1)
h : i < Fin.last (n✝ + 1)
⊢ (finRotate (n✝ + 1 + 1)) i = i + 1
state_after: case succ.inr.mk
m n✝ val✝ : ℕ
isLt✝ : val✝ < n✝ + 1 + 1
h : ⟨val✝, isLt✝⟩ < Fin.last (n✝ + 1)
⊢ (finRotate (n✝ + 1 + 1)) ⟨val✝, isLt✝⟩ = ⟨val✝, isLt✝⟩ + 1

tactic: simp only [Fin.lt_iff_val_lt_val, Fin.val_last, Fin.val_mk] at h
state_before: case succ.inr.mk
m n✝ val✝ : ℕ
isLt✝ : val✝ < n✝ + 1 + 1
h : ⟨val✝, isLt✝⟩ < Fin.last (n✝ + 1)
⊢ (finRotate (n✝ + 1 + 1)) ⟨val✝, isLt✝⟩ = ⟨val✝, isLt✝⟩ + 1
state_after: case succ.inr.mk
m n✝ val✝ : ℕ
isLt✝ : val✝ < n✝ + 1 + 1
h : val✝ < n✝ + 1
⊢ (finRotate (n✝ + 1 + 1)) ⟨val✝, isLt✝⟩ = ⟨val✝, isLt✝⟩ + 1

tactic: simp [finRotate_of_lt h, Fin.ext_iff, Fin.add_def, Nat.mod_eq_of_lt (Nat.succ_lt_succ h)]
state_before: case succ.inr.mk
m n✝ val✝ : ℕ
isLt✝ : val✝ < n✝ + 1 + 1
h : val✝ < n✝ + 1
⊢ (finRotate (n✝ + 1 + 1)) ⟨val✝, isLt✝⟩ = ⟨val✝, isLt✝⟩ + 1
state_after: no goals
Theorem: Finset.inter_subset_inter
File: Mathlib/Data/Finset/Basic.lean

tactic: intro a a_in
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α
a b : α
x y s t : Finset α
h : x ⊆ y
h' : s ⊆ t
⊢ x ∩ s ⊆ y ∩ t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α
a✝ b : α
x y s t : Finset α
h : x ⊆ y
h' : s ⊆ t
a : α
a_in : a ∈ x ∩ s
⊢ a ∈ y ∩ t

tactic: rw [Finset.mem_inter] at a_in ⊢
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α
a✝ b : α
x y s t : Finset α
h : x ⊆ y
h' : s ⊆ t
a : α
a_in : a ∈ x ∩ s
⊢ a ∈ y ∩ t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α
a✝ b : α
x y s t : Finset α
h : x ⊆ y
h' : s ⊆ t
a : α
a_in : a ∈ x ∧ a ∈ s
⊢ a ∈ y ∧ a ∈ t

tactic: exact ⟨h a_in.1, h' a_in.2⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α
a✝ b : α
x y s t : Finset α
h : x ⊆ y
h' : s ⊆ t
a : α
a_in : a ∈ x ∧ a ∈ s
⊢ a ∈ y ∧ a ∈ t
state_after: no goals
Theorem: Int.even_add'
File: Mathlib/Algebra/Ring/Int.lean

tactic: rw [even_add, even_iff_not_odd, even_iff_not_odd, not_iff_not]
state_before: m n : ℤ
⊢ Even (m + n) ↔ (Odd m ↔ Odd n)
state_after: no goals
Theorem: eq_of_one_div_eq_one_div
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [← one_div_one_div a, h, one_div_one_div]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionMonoid α
a b c d : α
h : 1 / a = 1 / b
⊢ a = b
state_after: no goals
Theorem: Filter.limsup_le_iSup
File: Mathlib/Order/LiminfLimsup.lean

tactic: isBoundedDefault
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝ : CompleteLattice α
f : Filter β
u : β → α
⊢ IsCoboundedUnder (fun x x_1 => x ≤ x_1) f u
state_after: no goals
Theorem: smul_eq_zero_iff_eq
File: Mathlib/GroupTheory/GroupAction/Group.lean

tactic: rw [← inv_smul_smul a x, h, smul_zero]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : Group α
inst✝¹ : AddMonoid β
inst✝ : DistribMulAction α β
a : α
x : β
h : a • x = 0
⊢ x = 0
state_after: no goals