1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Submodule.map₂_eq_span_image2
File: Mathlib/Algebra/Module/Submodule/Bilinear.lean

tactic: rw [← map₂_span_span, span_eq, span_eq]
state_before: ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
p : Submodule R M
q : Submodule R N
⊢ map₂ f p q = span R (image2 (fun m n => (f m) n) ↑p ↑q)
state_after: no goals
Theorem: EReal.inv_neg_of_neg_ne_bot
File: Mathlib/Data/Real/EReal.lean

tactic: induction a with
| h_bot => exact (h' (Eq.refl ⊥)).rec
| h_real a => rw [← coe_inv a]; norm_cast at *; exact inv_lt_zero.2 h
| h_top => exact (not_top_lt h).rec
state_before: a : EReal
h : a < 0
h' : a ≠ ⊥
⊢ a⁻¹ < 0
state_after: no goals

tactic: exact (h' (Eq.refl ⊥)).rec
state_before: case h_bot
h : ⊥ < 0
h' : ⊥ ≠ ⊥
⊢ ⊥⁻¹ < 0
state_after: no goals

tactic: rw [← coe_inv a]
state_before: case h_real
a : ℝ
h : ↑a < 0
h' : ↑a ≠ ⊥
⊢ (↑a)⁻¹ < 0
state_after: case h_real
a : ℝ
h : ↑a < 0
h' : ↑a ≠ ⊥
⊢ ↑a⁻¹ < 0

tactic: norm_cast at *
state_before: case h_real
a : ℝ
h : ↑a < 0
h' : ↑a ≠ ⊥
⊢ ↑a⁻¹ < 0
state_after: case h_real
a : ℝ
h' : ¬↑a = ⊥
h : a < 0
⊢ a⁻¹ < 0

tactic: exact inv_lt_zero.2 h
state_before: case h_real
a : ℝ
h' : ¬↑a = ⊥
h : a < 0
⊢ a⁻¹ < 0
state_after: no goals

tactic: exact (not_top_lt h).rec
state_before: case h_top
h : ⊤ < 0
h' : ⊤ ≠ ⊥
⊢ ⊤⁻¹ < 0
state_after: no goals
Theorem: HomologicalComplex₂.d₂_eq_zero
File: Mathlib/Algebra/Homology/TotalComplex.lean

tactic: dsimp [d₂]
state_before: C : Type u_1
inst✝⁴ : Category.{u_5, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁ : I₁
i₂ : I₂
i₁₂ : I₁₂
h : ¬c₂.Rel i₂ (c₂.next i₂)
⊢ K.d₂ c₁₂ i₁ i₂ i₁₂ = 0
state_after: C : Type u_1
inst✝⁴ : Category.{u_5, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁ : I₁
i₂ : I₂
i₁₂ : I₁₂
h : ¬c₂.Rel i₂ (c₂.next i₂)
⊢ c₁.ε₂ c₂ c₁₂ (i₁, i₂) •
      (K.X i₁).d i₂ (c₂.next i₂) ≫ K.toGradedObject.ιMapObjOrZero (c₁.π c₂ c₁₂) (i₁, c₂.next i₂) i₁₂ =
    0

tactic: rw [HomologicalComplex.shape _ _ _ h, zero_comp, smul_zero]
state_before: C : Type u_1
inst✝⁴ : Category.{u_5, u_1} C
inst✝³ : Preadditive C
I₁ : Type u_2
I₂ : Type u_3
I₁₂ : Type u_4
c₁ : ComplexShape I₁
c₂ : ComplexShape I₂
K L M : HomologicalComplex₂ C c₁ c₂
φ : K ⟶ L
e : K ≅ L
ψ : L ⟶ M
c₁₂ : ComplexShape I₁₂
inst✝² : DecidableEq I₁₂
inst✝¹ : TotalComplexShape c₁ c₂ c₁₂
inst✝ : K.HasTotal c₁₂
i₁ : I₁
i₂ : I₂
i₁₂ : I₁₂
h : ¬c₂.Rel i₂ (c₂.next i₂)
⊢ c₁.ε₂ c₂ c₁₂ (i₁, i₂) •
      (K.X i₁).d i₂ (c₂.next i₂) ≫ K.toGradedObject.ιMapObjOrZero (c₁.π c₂ c₁₂) (i₁, c₂.next i₂) i₁₂ =
    0
state_after: no goals
Theorem: List.formPerm_reverse
File: Mathlib/GroupTheory/Perm/List.lean

tactic: simp [formPerm_append_pair, swap_comm, ← formPerm_reverse (b::l)]
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
x a b : α
l : List α
⊢ (a :: b :: l).reverse.formPerm = (a :: b :: l).formPerm⁻¹
state_after: no goals
Theorem: NonUnitalStarSubalgebra.unitization_range
File: Mathlib/Algebra/Algebra/Subalgebra/Unitization.lean

tactic: rw [unitization, Unitization.starLift_range]
state_before: R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁷ : CommSemiring R
inst✝⁶ : StarRing R
inst✝⁵ : Semiring A
inst✝⁴ : StarRing A
inst✝³ : Algebra R A
inst✝² : StarModule R A
inst✝¹ : SetLike S A
hSA : NonUnitalSubsemiringClass S A
hSRA : SMulMemClass S R A
inst✝ : StarMemClass S A
s : S
⊢ (unitization s).range = StarAlgebra.adjoin R ↑s
state_after: R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁷ : CommSemiring R
inst✝⁶ : StarRing R
inst✝⁵ : Semiring A
inst✝⁴ : StarRing A
inst✝³ : Algebra R A
inst✝² : StarModule R A
inst✝¹ : SetLike S A
hSA : NonUnitalSubsemiringClass S A
hSRA : SMulMemClass S R A
inst✝ : StarMemClass S A
s : S
⊢ StarAlgebra.adjoin R ↑(NonUnitalStarAlgHom.range (NonUnitalStarSubalgebraClass.subtype s)) = StarAlgebra.adjoin R ↑s

tactic: simp only [NonUnitalStarAlgHom.coe_range, NonUnitalStarSubalgebraClass.coeSubtype,
  Subtype.range_coe_subtype]
state_before: R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁷ : CommSemiring R
inst✝⁶ : StarRing R
inst✝⁵ : Semiring A
inst✝⁴ : StarRing A
inst✝³ : Algebra R A
inst✝² : StarModule R A
inst✝¹ : SetLike S A
hSA : NonUnitalSubsemiringClass S A
hSRA : SMulMemClass S R A
inst✝ : StarMemClass S A
s : S
⊢ StarAlgebra.adjoin R ↑(NonUnitalStarAlgHom.range (NonUnitalStarSubalgebraClass.subtype s)) = StarAlgebra.adjoin R ↑s
state_after: R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁷ : CommSemiring R
inst✝⁶ : StarRing R
inst✝⁵ : Semiring A
inst✝⁴ : StarRing A
inst✝³ : Algebra R A
inst✝² : StarModule R A
inst✝¹ : SetLike S A
hSA : NonUnitalSubsemiringClass S A
hSRA : SMulMemClass S R A
inst✝ : StarMemClass S A
s : S
⊢ StarAlgebra.adjoin R {x | x ∈ s} = StarAlgebra.adjoin R ↑s

tactic: rfl
state_before: R : Type u_1
S : Type u_2
A : Type u_3
inst✝⁷ : CommSemiring R
inst✝⁶ : StarRing R
inst✝⁵ : Semiring A
inst✝⁴ : StarRing A
inst✝³ : Algebra R A
inst✝² : StarModule R A
inst✝¹ : SetLike S A
hSA : NonUnitalSubsemiringClass S A
hSRA : SMulMemClass S R A
inst✝ : StarMemClass S A
s : S
⊢ StarAlgebra.adjoin R {x | x ∈ s} = StarAlgebra.adjoin R ↑s
state_after: no goals
Theorem: Coheyting.hnot_boundary
File: Mathlib/Order/Heyting/Boundary.lean

tactic: rw [boundary, hnot_inf_distrib, sup_hnot_self]
state_before: α : Type u_1
inst✝ : CoheytingAlgebra α
a✝ b a : α
⊢ ￢∂ a = ⊤
state_after: no goals
Theorem: Cardinal.add_le_add_iff_of_lt_aleph0
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: refine ⟨fun h => ?_, fun h => add_le_add_right h γ⟩
state_before: α β γ : Cardinal.{u_1}
γ₀ : γ < ℵ₀
⊢ α + γ ≤ β + γ ↔ α ≤ β
state_after: α β γ : Cardinal.{u_1}
γ₀ : γ < ℵ₀
h : α + γ ≤ β + γ
⊢ α ≤ β

tactic: contrapose h
state_before: α β γ : Cardinal.{u_1}
γ₀ : γ < ℵ₀
h : α + γ ≤ β + γ
⊢ α ≤ β
state_after: α β γ : Cardinal.{u_1}
γ₀ : γ < ℵ₀
h : ¬α ≤ β
⊢ ¬α + γ ≤ β + γ

tactic: rw [not_le, lt_iff_le_and_ne, Ne] at h ⊢
state_before: α β γ : Cardinal.{u_1}
γ₀ : γ < ℵ₀
h : ¬α ≤ β
⊢ ¬α + γ ≤ β + γ
state_after: α β γ : Cardinal.{u_1}
γ₀ : γ < ℵ₀
h : β ≤ α ∧ ¬β = α
⊢ β + γ ≤ α + γ ∧ ¬β + γ = α + γ

tactic: exact ⟨add_le_add_right h.1 γ, mt (add_right_inj_of_lt_aleph0 γ₀).1 h.2⟩
state_before: α β γ : Cardinal.{u_1}
γ₀ : γ < ℵ₀
h : β ≤ α ∧ ¬β = α
⊢ β + γ ≤ α + γ ∧ ¬β + γ = α + γ
state_after: no goals
Theorem: AffineMap.map_top_of_surjective
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: rw [← AffineSubspace.ext_iff]
state_before: k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
V₃ : Type u_6
P₃ : Type u_7
inst✝⁹ : Ring k
inst✝⁸ : AddCommGroup V₁
inst✝⁷ : Module k V₁
inst✝⁶ : AffineSpace V₁ P₁
inst✝⁵ : AddCommGroup V₂
inst✝⁴ : Module k V₂
inst✝³ : AffineSpace V₂ P₂
inst✝² : AddCommGroup V₃
inst✝¹ : Module k V₃
inst✝ : AffineSpace V₃ P₃
f : P₁ →ᵃ[k] P₂
hf : Function.Surjective ⇑f
⊢ AffineSubspace.map f ⊤ = ⊤
state_after: k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
V₃ : Type u_6
P₃ : Type u_7
inst✝⁹ : Ring k
inst✝⁸ : AddCommGroup V₁
inst✝⁷ : Module k V₁
inst✝⁶ : AffineSpace V₁ P₁
inst✝⁵ : AddCommGroup V₂
inst✝⁴ : Module k V₂
inst✝³ : AffineSpace V₂ P₂
inst✝² : AddCommGroup V₃
inst✝¹ : Module k V₃
inst✝ : AffineSpace V₃ P₃
f : P₁ →ᵃ[k] P₂
hf : Function.Surjective ⇑f
⊢ ↑(AffineSubspace.map f ⊤) = ↑⊤

tactic: exact image_univ_of_surjective hf
state_before: k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
V₃ : Type u_6
P₃ : Type u_7
inst✝⁹ : Ring k
inst✝⁸ : AddCommGroup V₁
inst✝⁷ : Module k V₁
inst✝⁶ : AffineSpace V₁ P₁
inst✝⁵ : AddCommGroup V₂
inst✝⁴ : Module k V₂
inst✝³ : AffineSpace V₂ P₂
inst✝² : AddCommGroup V₃
inst✝¹ : Module k V₃
inst✝ : AffineSpace V₃ P₃
f : P₁ →ᵃ[k] P₂
hf : Function.Surjective ⇑f
⊢ ↑(AffineSubspace.map f ⊤) = ↑⊤
state_after: no goals
Theorem: HurwitzZeta.completedCosZeta_zero
File: Mathlib/NumberTheory/LSeries/RiemannZeta.lean

tactic: rw [completedRiemannZeta, completedHurwitzZetaEven, completedCosZeta, hurwitzEvenFEPair_zero_symm]
state_before: s : ℂ
⊢ completedCosZeta 0 s = completedRiemannZeta s
state_after: no goals
Theorem: Orientation.right_ne_zero_of_oangle_sign_eq_neg_one
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: decide
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).sign = -1
⊢ -1 ≠ 0
state_after: no goals
Theorem: Real.rpow_add_one
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simpa using rpow_add_nat hx y 1
state_before: x✝ y✝ z : ℝ
n : ℕ
x : ℝ
hx : x ≠ 0
y : ℝ
⊢ x ^ (y + 1) = x ^ y * x
state_after: no goals
Theorem: Vector.map₂_map_right
File: Mathlib/Data/Vector/MapLemmas.lean

tactic: induction xs, ys using Vector.revInductionOn₂ <;> simp_all
state_before: α : Type u_3
n : ℕ
β : Type u_4
xs : Vector α n
ys : Vector β n
γ : Type u_1
ζ : Type u_2
f₁ : α → γ → ζ
f₂ : β → γ
⊢ map₂ f₁ xs (map f₂ ys) = map₂ (fun x y => f₁ x (f₂ y)) xs ys
state_after: no goals
Theorem: Basis.repr_symm_apply
File: Mathlib/LinearAlgebra/Basis.lean

tactic: simp
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i : ι
c : R
x : M
v : ι →₀ R
⊢ b.repr.symm v = b.repr.symm (v.sum Finsupp.single)
state_after: no goals

tactic: simp only [repr_symm_single, Finsupp.total_apply]
state_before: ι : Type u_1
ι' : Type u_2
R : Type u_3
R₂ : Type u_4
K : Type u_5
M : Type u_6
M' : Type u_7
M'' : Type u_8
V : Type u
V' : Type u_9
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i : ι
c : R
x : M
v : ι →₀ R
⊢ (v.sum fun i vi => b.repr.symm (Finsupp.single i vi)) = (Finsupp.total ι M R ⇑b) v
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.leftUnshift_neg
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

tactic: change (leftShiftAddEquiv K L n a n' hn).symm (-γ) = _
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ✝ γ₁ γ₂ : Cochain K L n✝
n' a : ℤ
γ : Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K) L n'
n : ℤ
hn : n + a = n'
⊢ (-γ).leftUnshift n hn = -γ.leftUnshift n hn
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ✝ γ₁ γ₂ : Cochain K L n✝
n' a : ℤ
γ : Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K) L n'
n : ℤ
hn : n + a = n'
⊢ (leftShiftAddEquiv K L n a n' hn).symm (-γ) = -γ.leftUnshift n hn

tactic: apply _root_.map_neg
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ✝ γ₁ γ₂ : Cochain K L n✝
n' a : ℤ
γ : Cochain ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj K) L n'
n : ℤ
hn : n + a = n'
⊢ (leftShiftAddEquiv K L n a n' hn).symm (-γ) = -γ.leftUnshift n hn
state_after: no goals
Theorem: TopCat.Presheaf.stalkSpecializes_refl
File: Mathlib/Topology/Sheaves/Stalks.lean

tactic: ext
state_before: C✝ : Type u
inst✝³ : Category.{v, u} C✝
inst✝² : HasColimits C✝
X✝ Y Z : TopCat
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasColimits C
X : TopCat
F : Presheaf C X
x : ↑X
⊢ F.stalkSpecializes ⋯ = 𝟙 (F.stalk x)
state_after: case ih
C✝ : Type u
inst✝³ : Category.{v, u} C✝
inst✝² : HasColimits C✝
X✝ Y Z : TopCat
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasColimits C
X : TopCat
F : Presheaf C X
x : ↑X
U✝ : Opens ↑X
hxU✝ : x ∈ U✝
⊢ F.germ ⟨x, hxU✝⟩ ≫ F.stalkSpecializes ⋯ = F.germ ⟨x, hxU✝⟩ ≫ 𝟙 (F.stalk x)

tactic: simp
state_before: case ih
C✝ : Type u
inst✝³ : Category.{v, u} C✝
inst✝² : HasColimits C✝
X✝ Y Z : TopCat
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasColimits C
X : TopCat
F : Presheaf C X
x : ↑X
U✝ : Opens ↑X
hxU✝ : x ∈ U✝
⊢ F.germ ⟨x, hxU✝⟩ ≫ F.stalkSpecializes ⋯ = F.germ ⟨x, hxU✝⟩ ≫ 𝟙 (F.stalk x)
state_after: no goals
Theorem: LieAlgebra.hasTrivialRadical_iff_no_abelian_ideals
File: Mathlib/Algebra/Lie/Semisimple/Basic.lean

tactic: rw [hasTrivialRadical_iff_no_solvable_ideals]
state_before: R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
⊢ HasTrivialRadical R L ↔ ∀ (I : LieIdeal R L), IsLieAbelian ↥↑I → I = ⊥
state_after: R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
⊢ (∀ (I : LieIdeal R L), IsSolvable R ↥↑I → I = ⊥) ↔ ∀ (I : LieIdeal R L), IsLieAbelian ↥↑I → I = ⊥

tactic: constructor <;> intro h₁ I h₂
state_before: R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
⊢ (∀ (I : LieIdeal R L), IsSolvable R ↥↑I → I = ⊥) ↔ ∀ (I : LieIdeal R L), IsLieAbelian ↥↑I → I = ⊥
state_after: case mp
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
h₁ : ∀ (I : LieIdeal R L), IsSolvable R ↥↑I → I = ⊥
I : LieIdeal R L
h₂ : IsLieAbelian ↥↑I
⊢ I = ⊥

case mpr
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
h₁ : ∀ (I : LieIdeal R L), IsLieAbelian ↥↑I → I = ⊥
I : LieIdeal R L
h₂ : IsSolvable R ↥↑I
⊢ I = ⊥

tactic: exact h₁ _ <| LieAlgebra.ofAbelianIsSolvable R I
state_before: case mp
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
h₁ : ∀ (I : LieIdeal R L), IsSolvable R ↥↑I → I = ⊥
I : LieIdeal R L
h₂ : IsLieAbelian ↥↑I
⊢ I = ⊥
state_after: no goals

tactic: rw [← abelian_of_solvable_ideal_eq_bot_iff]
state_before: case mpr
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
h₁ : ∀ (I : LieIdeal R L), IsLieAbelian ↥↑I → I = ⊥
I : LieIdeal R L
h₂ : IsSolvable R ↥↑I
⊢ I = ⊥
state_after: case mpr
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
h₁ : ∀ (I : LieIdeal R L), IsLieAbelian ↥↑I → I = ⊥
I : LieIdeal R L
h₂ : IsSolvable R ↥↑I
⊢ derivedAbelianOfIdeal I = ⊥

tactic: exact h₁ _ <| abelian_derivedAbelianOfIdeal I
state_before: case mpr
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
h₁ : ∀ (I : LieIdeal R L), IsLieAbelian ↥↑I → I = ⊥
I : LieIdeal R L
h₂ : IsSolvable R ↥↑I
⊢ derivedAbelianOfIdeal I = ⊥
state_after: no goals
Theorem: IsAlgClosed.cardinal_eq_cardinal_transcendence_basis_of_aleph0_lt
File: Mathlib/FieldTheory/IsAlgClosed/Classification.lean

tactic: rw [max_eq_left, max_eq_right]
state_before: R L K : Type u
inst✝⁴ : CommRing R
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsAlgClosed K
ι : Type u
v : ι → K
hv✝ : IsTranscendenceBasis R v
inst✝ : Nontrivial R
hv : IsTranscendenceBasis R v
hR : #R ≤ ℵ₀
hK : ℵ₀ < #K
this : ℵ₀ ≤ #ι
⊢ max (max #R #ι) ℵ₀ = #ι
state_after: R L K : Type u
inst✝⁴ : CommRing R
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsAlgClosed K
ι : Type u
v : ι → K
hv✝ : IsTranscendenceBasis R v
inst✝ : Nontrivial R
hv : IsTranscendenceBasis R v
hR : #R ≤ ℵ₀
hK : ℵ₀ < #K
this : ℵ₀ ≤ #ι
⊢ #R ≤ #ι

R L K : Type u
inst✝⁴ : CommRing R
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsAlgClosed K
ι : Type u
v : ι → K
hv✝ : IsTranscendenceBasis R v
inst✝ : Nontrivial R
hv : IsTranscendenceBasis R v
hR : #R ≤ ℵ₀
hK : ℵ₀ < #K
this : ℵ₀ ≤ #ι
⊢ ℵ₀ ≤ max #R #ι

tactic: exact le_trans hR this
state_before: R L K : Type u
inst✝⁴ : CommRing R
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsAlgClosed K
ι : Type u
v : ι → K
hv✝ : IsTranscendenceBasis R v
inst✝ : Nontrivial R
hv : IsTranscendenceBasis R v
hR : #R ≤ ℵ₀
hK : ℵ₀ < #K
this : ℵ₀ ≤ #ι
⊢ #R ≤ #ι
state_after: no goals

tactic: exact le_max_of_le_right this
state_before: R L K : Type u
inst✝⁴ : CommRing R
inst✝³ : Field K
inst✝² : Algebra R K
inst✝¹ : IsAlgClosed K
ι : Type u
v : ι → K
hv✝ : IsTranscendenceBasis R v
inst✝ : Nontrivial R
hv : IsTranscendenceBasis R v
hR : #R ≤ ℵ₀
hK : ℵ₀ < #K
this : ℵ₀ ≤ #ι
⊢ ℵ₀ ≤ max #R #ι
state_after: no goals
Theorem: ContDiffAt.eventually
File: Mathlib/Analysis/Calculus/ContDiff/Defs.lean

tactic: simpa [nhdsWithin_univ] using ContDiffWithinAt.eventually h
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
n : ℕ
h : ContDiffAt 𝕜 (↑n) f x
⊢ ∀ᶠ (y : E) in 𝓝 x, ContDiffAt 𝕜 (↑n) f y
state_after: no goals
Theorem: IsGenericPoint.image
File: Mathlib/Topology/Sober.lean

tactic: rw [isGenericPoint_def, ← h.def, ← image_singleton, closure_image_closure hf]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
x y : α
S U Z : Set α
h : IsGenericPoint x S
f : α → β
hf : Continuous f
⊢ IsGenericPoint (f x) (closure (f '' S))
state_after: no goals
Theorem: List.modifyNthTail_modifyNthTail_same
File: Mathlib/Data/List/Basic.lean

tactic: rw [modifyNthTail_modifyNthTail_le n n l (le_refl n), Nat.sub_self]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f g : List α → List α
n : ℕ
l : List α
⊢ modifyNthTail g n (modifyNthTail f n l) = modifyNthTail (g ∘ f) n l
state_after: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f g : List α → List α
n : ℕ
l : List α
⊢ modifyNthTail (fun l => modifyNthTail g 0 (f l)) n l = modifyNthTail (g ∘ f) n l

tactic: rfl
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f g : List α → List α
n : ℕ
l : List α
⊢ modifyNthTail (fun l => modifyNthTail g 0 (f l)) n l = modifyNthTail (g ∘ f) n l
state_after: no goals
Theorem: Finset.prod_unique_nonempty
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [h.eq_singleton_default, Finset.prod_singleton]
state_before: ι : Type u_1
κ : Type u_2
α✝ : Type u_3
β✝ : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α✝
a : α✝
f✝ g : α✝ → β✝
α : Type u_6
β : Type u_7
inst✝¹ : CommMonoid β
inst✝ : Unique α
s : Finset α
f : α → β
h : s.Nonempty
⊢ ∏ x ∈ s, f x = f default
state_after: no goals
Theorem: TopologicalSpace.Opens.eq_bot_or_top
File: Mathlib/Topology/Sets/Opens.lean

tactic: subst h
state_before: ι : Type u_1
α✝ : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
α : Type u_5
t : TopologicalSpace α
h : t = ⊤
U : Opens α
⊢ U = ⊥ ∨ U = ⊤
state_after: ι : Type u_1
α✝ : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
α : Type u_5
U : Opens α
⊢ U = ⊥ ∨ U = ⊤

tactic: letI : TopologicalSpace α := ⊤
state_before: ι : Type u_1
α✝ : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
α : Type u_5
U : Opens α
⊢ U = ⊥ ∨ U = ⊤
state_after: ι : Type u_1
α✝ : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
α : Type u_5
U : Opens α
this : TopologicalSpace α := ⊤
⊢ U = ⊥ ∨ U = ⊤

tactic: rw [← coe_eq_empty, ← coe_eq_univ, ← isOpen_top_iff]
state_before: ι : Type u_1
α✝ : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
α : Type u_5
U : Opens α
this : TopologicalSpace α := ⊤
⊢ U = ⊥ ∨ U = ⊤
state_after: ι : Type u_1
α✝ : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
α : Type u_5
U : Opens α
this : TopologicalSpace α := ⊤
⊢ IsOpen ↑U

tactic: exact U.2
state_before: ι : Type u_1
α✝ : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : TopologicalSpace α✝
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
α : Type u_5
U : Opens α
this : TopologicalSpace α := ⊤
⊢ IsOpen ↑U
state_after: no goals
Theorem: semiconjBy_iff_eq
File: Mathlib/Algebra/Group/Semiconj/Defs.lean

tactic: rw [h, SemiconjBy, mul_comm]
state_before: S : Type u_1
M : Type u_2
G : Type u_3
inst✝ : CancelCommMonoid M
a x y : M
h : x = y
⊢ SemiconjBy a x y
state_after: no goals
Theorem: AList.toFinmap_eq
File: Mathlib/Data/Finmap.lean

tactic: cases s₁
state_before: α : Type u
β : α → Type v
s₁ s₂ : AList β
⊢ ⟦s₁⟧ = ⟦s₂⟧ ↔ s₁.entries ~ s₂.entries
state_after: case mk
α : Type u
β : α → Type v
s₂ : AList β
entries✝ : List (Sigma β)
nodupKeys✝ : entries✝.NodupKeys
⊢ ⟦{ entries := entries✝, nodupKeys := nodupKeys✝ }⟧ = ⟦s₂⟧ ↔
    { entries := entries✝, nodupKeys := nodupKeys✝ }.entries ~ s₂.entries

tactic: cases s₂
state_before: case mk
α : Type u
β : α → Type v
s₂ : AList β
entries✝ : List (Sigma β)
nodupKeys✝ : entries✝.NodupKeys
⊢ ⟦{ entries := entries✝, nodupKeys := nodupKeys✝ }⟧ = ⟦s₂⟧ ↔
    { entries := entries✝, nodupKeys := nodupKeys✝ }.entries ~ s₂.entries
state_after: case mk.mk
α : Type u
β : α → Type v
entries✝¹ : List (Sigma β)
nodupKeys✝¹ : entries✝¹.NodupKeys
entries✝ : List (Sigma β)
nodupKeys✝ : entries✝.NodupKeys
⊢ ⟦{ entries := entries✝¹, nodupKeys := nodupKeys✝¹ }⟧ = ⟦{ entries := entries✝, nodupKeys := nodupKeys✝ }⟧ ↔
    { entries := entries✝¹, nodupKeys := nodupKeys✝¹ }.entries ~
      { entries := entries✝, nodupKeys := nodupKeys✝ }.entries

tactic: simp [AList.toFinmap]
state_before: case mk.mk
α : Type u
β : α → Type v
entries✝¹ : List (Sigma β)
nodupKeys✝¹ : entries✝¹.NodupKeys
entries✝ : List (Sigma β)
nodupKeys✝ : entries✝.NodupKeys
⊢ ⟦{ entries := entries✝¹, nodupKeys := nodupKeys✝¹ }⟧ = ⟦{ entries := entries✝, nodupKeys := nodupKeys✝ }⟧ ↔
    { entries := entries✝¹, nodupKeys := nodupKeys✝¹ }.entries ~
      { entries := entries✝, nodupKeys := nodupKeys✝ }.entries
state_after: no goals
Theorem: leOnePart_le_one'
File: Mathlib/Algebra/Order/Group/PosPart.lean

tactic: simp [leOnePart]
state_before: α : Type u_1
β : Type u_2
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ a⁻ᵐ ≤ 1 ↔ a⁻¹ ≤ 1
state_after: no goals
Theorem: Int.fract_add_le
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [fract, fract, fract, sub_add_sub_comm, sub_le_sub_iff_left, ← Int.cast_add, Int.cast_le]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a b : α
⊢ fract (a + b) ≤ fract a + fract b
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a b : α
⊢ ⌊a⌋ + ⌊b⌋ ≤ ⌊a + b⌋

tactic: exact le_floor_add _ _
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a b : α
⊢ ⌊a⌋ + ⌊b⌋ ≤ ⌊a + b⌋
state_after: no goals