1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Ideal.eq_bot_or_top
File: Mathlib/RingTheory/Ideal/Basic.lean

tactic: rw [or_iff_not_imp_right]
state_before: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
⊢ I = ⊥ ∨ I = ⊤
state_after: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
⊢ ¬I = ⊤ → I = ⊥

tactic: change _ ≠ _ → _
state_before: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
⊢ ¬I = ⊤ → I = ⊥
state_after: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
⊢ I ≠ ⊤ → I = ⊥

tactic: rw [Ideal.ne_top_iff_one]
state_before: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
⊢ I ≠ ⊤ → I = ⊥
state_after: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
⊢ 1 ∉ I → I = ⊥

tactic: intro h1
state_before: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
⊢ 1 ∉ I → I = ⊥
state_after: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
h1 : 1 ∉ I
⊢ I = ⊥

tactic: rw [eq_bot_iff]
state_before: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
h1 : 1 ∉ I
⊢ I = ⊥
state_after: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
h1 : 1 ∉ I
⊢ I ≤ ⊥

tactic: intro r hr
state_before: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
h1 : 1 ∉ I
⊢ I ≤ ⊥
state_after: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
h1 : 1 ∉ I
r : K
hr : r ∈ I
⊢ r ∈ ⊥

tactic: by_cases H : r = 0
state_before: α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
h1 : 1 ∉ I
r : K
hr : r ∈ I
⊢ r ∈ ⊥
state_after: case pos
α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
h1 : 1 ∉ I
r : K
hr : r ∈ I
H : r = 0
⊢ r ∈ ⊥

case neg
α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
h1 : 1 ∉ I
r : K
hr : r ∈ I
H : ¬r = 0
⊢ r ∈ ⊥

tactic: simpa [H, h1] using I.mul_mem_left r⁻¹ hr
state_before: case neg
α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
h1 : 1 ∉ I
r : K
hr : r ∈ I
H : ¬r = 0
⊢ r ∈ ⊥
state_after: no goals

tactic: simpa
state_before: case pos
α : Type u
β : Type v
K : Type u
inst✝ : DivisionSemiring K
I : Ideal K
h1 : 1 ∉ I
r : K
hr : r ∈ I
H : r = 0
⊢ r ∈ ⊥
state_after: no goals
Theorem: expChar_pos
File: Mathlib/Algebra/CharP/ExpChar.lean

tactic: rcases expChar_is_prime_or_one R q with h | rfl
state_before: R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
inst✝¹ : NoZeroDivisors R
q : ℕ
inst✝ : ExpChar R q
⊢ 0 < q
state_after: case inl
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
inst✝¹ : NoZeroDivisors R
q : ℕ
inst✝ : ExpChar R q
h : Nat.Prime q
⊢ 0 < q

case inr
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
inst✝¹ : NoZeroDivisors R
inst✝ : ExpChar R 1
⊢ 0 < 1

tactic: exacts [Nat.Prime.pos h, Nat.one_pos]
state_before: case inl
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
inst✝¹ : NoZeroDivisors R
q : ℕ
inst✝ : ExpChar R q
h : Nat.Prime q
⊢ 0 < q

case inr
R : Type u
inst✝³ : Semiring R
inst✝² : Nontrivial R
inst✝¹ : NoZeroDivisors R
inst✝ : ExpChar R 1
⊢ 0 < 1
state_after: no goals
Theorem: StrictConvex.smul
File: Mathlib/Analysis/Convex/Strict.lean

tactic: obtain rfl | hc := eq_or_ne c 0
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
F : Type u_4
β : Type u_5
inst✝¹⁰ : OrderedSemiring 𝕜
inst✝⁹ : TopologicalSpace E
inst✝⁸ : TopologicalSpace F
inst✝⁷ : AddCommGroup E
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module 𝕜 E
inst✝⁴ : Module 𝕜 F
inst✝³ : LinearOrderedField 𝕝
inst✝² : Module 𝕝 E
inst✝¹ : ContinuousConstSMul 𝕝 E
inst✝ : LinearMap.CompatibleSMul E E 𝕜 𝕝
s : Set E
x : E
hs : StrictConvex 𝕜 s
c : 𝕝
⊢ StrictConvex 𝕜 (c • s)
state_after: case inl
𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
F : Type u_4
β : Type u_5
inst✝¹⁰ : OrderedSemiring 𝕜
inst✝⁹ : TopologicalSpace E
inst✝⁸ : TopologicalSpace F
inst✝⁷ : AddCommGroup E
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module 𝕜 E
inst✝⁴ : Module 𝕜 F
inst✝³ : LinearOrderedField 𝕝
inst✝² : Module 𝕝 E
inst✝¹ : ContinuousConstSMul 𝕝 E
inst✝ : LinearMap.CompatibleSMul E E 𝕜 𝕝
s : Set E
x : E
hs : StrictConvex 𝕜 s
⊢ StrictConvex 𝕜 (0 • s)

case inr
𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
F : Type u_4
β : Type u_5
inst✝¹⁰ : OrderedSemiring 𝕜
inst✝⁹ : TopologicalSpace E
inst✝⁸ : TopologicalSpace F
inst✝⁷ : AddCommGroup E
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module 𝕜 E
inst✝⁴ : Module 𝕜 F
inst✝³ : LinearOrderedField 𝕝
inst✝² : Module 𝕝 E
inst✝¹ : ContinuousConstSMul 𝕝 E
inst✝ : LinearMap.CompatibleSMul E E 𝕜 𝕝
s : Set E
x : E
hs : StrictConvex 𝕜 s
c : 𝕝
hc : c ≠ 0
⊢ StrictConvex 𝕜 (c • s)

tactic: exact (subsingleton_zero_smul_set _).strictConvex
state_before: case inl
𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
F : Type u_4
β : Type u_5
inst✝¹⁰ : OrderedSemiring 𝕜
inst✝⁹ : TopologicalSpace E
inst✝⁸ : TopologicalSpace F
inst✝⁷ : AddCommGroup E
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module 𝕜 E
inst✝⁴ : Module 𝕜 F
inst✝³ : LinearOrderedField 𝕝
inst✝² : Module 𝕝 E
inst✝¹ : ContinuousConstSMul 𝕝 E
inst✝ : LinearMap.CompatibleSMul E E 𝕜 𝕝
s : Set E
x : E
hs : StrictConvex 𝕜 s
⊢ StrictConvex 𝕜 (0 • s)
state_after: no goals

tactic: exact hs.linear_image (LinearMap.lsmul _ _ c) (isOpenMap_smul₀ hc)
state_before: case inr
𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
F : Type u_4
β : Type u_5
inst✝¹⁰ : OrderedSemiring 𝕜
inst✝⁹ : TopologicalSpace E
inst✝⁸ : TopologicalSpace F
inst✝⁷ : AddCommGroup E
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module 𝕜 E
inst✝⁴ : Module 𝕜 F
inst✝³ : LinearOrderedField 𝕝
inst✝² : Module 𝕝 E
inst✝¹ : ContinuousConstSMul 𝕝 E
inst✝ : LinearMap.CompatibleSMul E E 𝕜 𝕝
s : Set E
x : E
hs : StrictConvex 𝕜 s
c : 𝕝
hc : c ≠ 0
⊢ StrictConvex 𝕜 (c • s)
state_after: no goals
Theorem: LieSubmodule.subsingleton_iff
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [← subsingleton_iff_bot_eq_top, ← subsingleton_iff_bot_eq_top, ← coe_toSubmodule_eq_iff,
  top_coeSubmodule, bot_coeSubmodule]
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
⊢ Subsingleton (LieSubmodule R L M) ↔ Subsingleton (Submodule R M)
state_after: no goals
Theorem: CategoryTheory.Iso.unop_inv_hom_id_app
File: Mathlib/CategoryTheory/Opposites.lean

tactic: rw [← unop_comp, hom_inv_id_app, unop_id]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y : C
D : Type u_1
inst✝ : Category.{u_2, u_1} D
F G : C ⥤ Dᵒᵖ
e : F ≅ G
X : C
⊢ (e.inv.app X).unop ≫ (e.hom.app X).unop = 𝟙 (F.obj X).unop
state_after: no goals
Theorem: Module.End.iSup_genEigenspace_le_smul
File: Mathlib/LinearAlgebra/Eigenspace/Basic.lean

tactic: intro m hm
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
f : End R M
μ t : R
⊢ ⨆ k, (f.genEigenspace μ) k ≤ ⨆ k, ((t • f).genEigenspace (t * μ)) k
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
f : End R M
μ t : R
m : M
hm : m ∈ ⨆ k, (f.genEigenspace μ) k
⊢ m ∈ ⨆ k, ((t • f).genEigenspace (t * μ)) k

tactic: simp only [Submodule.mem_iSup_of_chain, mem_genEigenspace] at hm ⊢
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
f : End R M
μ t : R
m : M
hm : m ∈ ⨆ k, (f.genEigenspace μ) k
⊢ m ∈ ⨆ k, ((t • f).genEigenspace (t * μ)) k
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
f : End R M
μ t : R
m : M
hm : ∃ k, ((f - μ • 1) ^ k) m = 0
⊢ ∃ k, ((t • f - (t * μ) • 1) ^ k) m = 0

tactic: refine Exists.imp (fun k hk ↦ ?_) hm
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
f : End R M
μ t : R
m : M
hm : ∃ k, ((f - μ • 1) ^ k) m = 0
⊢ ∃ k, ((t • f - (t * μ) • 1) ^ k) m = 0
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
f : End R M
μ t : R
m : M
hm : ∃ k, ((f - μ • 1) ^ k) m = 0
k : ℕ
hk : ((f - μ • 1) ^ k) m = 0
⊢ ((t • f - (t * μ) • 1) ^ k) m = 0

tactic: rw [mul_smul, ← smul_sub, smul_pow, LinearMap.smul_apply, hk, smul_zero]
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
f : End R M
μ t : R
m : M
hm : ∃ k, ((f - μ • 1) ^ k) m = 0
k : ℕ
hk : ((f - μ • 1) ^ k) m = 0
⊢ ((t • f - (t * μ) • 1) ^ k) m = 0
state_after: no goals
Theorem: MeasurableSpace.measurableSet_iSup
File: Mathlib/MeasureTheory/MeasurableSpace/Defs.lean

tactic: simp only [iSup, measurableSet_sSup, exists_range_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι✝ : Sort u_6
s✝ t u : Set α
ι : Sort u_7
m : ι → MeasurableSpace α
s : Set α
⊢ MeasurableSet s ↔ GenerateMeasurable {s | ∃ i, MeasurableSet s} s
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.addXYZ_smul
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rw [addXYZ, addX_smul, addY_smul, addZ_smul]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
u v : R
⊢ W'.addXYZ (u • P) (v • Q) = (u * v) ^ 2 • W'.addXYZ P Q
state_after: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
u v : R
⊢ ![((u * v) ^ 2) ^ 2 * W'.addX P Q, ((u * v) ^ 2) ^ 3 * W'.addY P Q, (u * v) ^ 2 * addZ P Q] =
    (u * v) ^ 2 • W'.addXYZ P Q

tactic: rfl
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
u v : R
⊢ ![((u * v) ^ 2) ^ 2 * W'.addX P Q, ((u * v) ^ 2) ^ 3 * W'.addY P Q, (u * v) ^ 2 * addZ P Q] =
    (u * v) ^ 2 • W'.addXYZ P Q
state_after: no goals
Theorem: Batteries.RBNode.modify_eq_alter
File: .lake/packages/batteries/Batteries/Data/RBMap/Alter.lean

tactic: simp [modify, alter]
state_before: α : Type u_1
cut : α → Ordering
f : α → α
t : RBNode α
⊢ modify cut f t = alter cut (Option.map f) t
state_after: no goals
Theorem: nat_smul_eq_nsmul
File: Mathlib/Algebra/Module/Defs.lean

tactic: rfl
state_before: α : Type u_1
R : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
h : Module ℕ M
n : ℕ
x : M
⊢ SMul.smul n x = n • x
state_after: no goals
Theorem: Rat.mul_den_eq_num
File: Mathlib/Algebra/Ring/Rat.lean

tactic: suffices (q.num /. ↑q.den) * (↑q.den /. 1) = q.num /. 1 by
  conv => pattern (occs := 1) q; (rw [← num_divInt_den q])
  simp only [intCast_eq_divInt, natCast_eq_divInt, num_divInt_den] at this ⊢; assumption
state_before: q : ℚ
⊢ q * ↑q.den = ↑q.num
state_after: q : ℚ
⊢ q.num /. ↑q.den * (↑q.den /. 1) = q.num /. 1

tactic: have : (q.den : ℤ) ≠ 0 := mod_cast q.den_ne_zero
state_before: q : ℚ
⊢ q.num /. ↑q.den * (↑q.den /. 1) = q.num /. 1
state_after: q : ℚ
this : ↑q.den ≠ 0
⊢ q.num /. ↑q.den * (↑q.den /. 1) = q.num /. 1

tactic: rw [divInt_mul_divInt _ _ this Int.one_ne_zero, mul_comm (q.den : ℤ) 1, divInt_mul_right this]
state_before: q : ℚ
this : ↑q.den ≠ 0
⊢ q.num /. ↑q.den * (↑q.den /. 1) = q.num /. 1
state_after: no goals

tactic: conv => pattern (occs := 1) q; (rw [← num_divInt_den q])
state_before: q : ℚ
this : q.num /. ↑q.den * (↑q.den /. 1) = q.num /. 1
⊢ q * ↑q.den = ↑q.num
state_after: q : ℚ
this : q.num /. ↑q.den * (↑q.den /. 1) = q.num /. 1
⊢ q.num /. ↑q.den * ↑q.den = ↑q.num

tactic: simp only [intCast_eq_divInt, natCast_eq_divInt, num_divInt_den] at this ⊢
state_before: q : ℚ
this : q.num /. ↑q.den * (↑q.den /. 1) = q.num /. 1
⊢ q.num /. ↑q.den * ↑q.den = ↑q.num
state_after: q : ℚ
this : q * (↑q.den /. 1) = q.num /. 1
⊢ q * (↑q.den /. 1) = q.num /. 1

tactic: assumption
state_before: q : ℚ
this : q * (↑q.den /. 1) = q.num /. 1
⊢ q * (↑q.den /. 1) = q.num /. 1
state_after: no goals
Theorem: quadraticCharFun_eq_pow_of_char_ne_two
File: Mathlib/NumberTheory/LegendreSymbol/QuadraticChar/Basic.lean

tactic: simp only [quadraticCharFun, ha, if_false]
state_before: F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
hF : ringChar F ≠ 2
a : F
ha : a ≠ 0
⊢ quadraticCharFun F a = if a ^ (Fintype.card F / 2) = 1 then 1 else -1
state_after: F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
hF : ringChar F ≠ 2
a : F
ha : a ≠ 0
⊢ (if IsSquare a then 1 else -1) = if a ^ (Fintype.card F / 2) = 1 then 1 else -1

tactic: simp_rw [FiniteField.isSquare_iff hF ha]
state_before: F : Type u_1
inst✝² : Field F
inst✝¹ : Fintype F
inst✝ : DecidableEq F
hF : ringChar F ≠ 2
a : F
ha : a ≠ 0
⊢ (if IsSquare a then 1 else -1) = if a ^ (Fintype.card F / 2) = 1 then 1 else -1
state_after: no goals
Theorem: MeasureTheory.measure_inter_conull'
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: rw [← diff_compl, measure_diff_null']
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s s₁ s₂ t : Set α
ht : μ (s \ t) = 0
⊢ μ (s ∩ t) = μ s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s s₁ s₂ t : Set α
ht : μ (s \ t) = 0
⊢ μ (s ∩ tᶜ) = 0

tactic: rwa [← diff_eq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s s₁ s₂ t : Set α
ht : μ (s \ t) = 0
⊢ μ (s ∩ tᶜ) = 0
state_after: no goals
Theorem: differentiableOn_const_sub_iff
File: Mathlib/Analysis/Calculus/FDeriv/Add.lean

tactic: simp [sub_eq_add_neg]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
c : F
⊢ DifferentiableOn 𝕜 (fun y => c - f y) s ↔ DifferentiableOn 𝕜 f s
state_after: no goals
Theorem: disjoint_sup_right
File: Mathlib/Order/Disjoint.lean

tactic: simp only [disjoint_iff, inf_sup_left, sup_eq_bot_iff]
state_before: α : Type u_1
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
a b c : α
⊢ Disjoint a (b ⊔ c) ↔ Disjoint a b ∧ Disjoint a c
state_after: no goals
Theorem: Matrix.conjTranspose_eq_intCast
File: Mathlib/Data/Matrix/Basic.lean

tactic: rw [conjTranspose_intCast]
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✝² : DecidableEq n
inst✝¹ : Ring α
inst✝ : StarRing α
M : Matrix n n α
d : ℤ
⊢ M = (↑d)ᴴ ↔ M = ↑d
state_after: no goals
Theorem: HomologicalComplex₂.totalAux.ιMapObj_D₂
File: Mathlib/Algebra/Homology/TotalComplex.lean

tactic: simp [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₁.π c₂ c₁₂ i = i₁₂
⊢ K.toGradedObject.ιMapObj (c₁.π c₂ c₁₂) i i₁₂ h ≫ K.D₂ c₁₂ i₁₂ i₁₂' = K.d₂ c₁₂ i.1 i.2 i₁₂'
state_after: no goals
Theorem: CategoryTheory.Limits.colimit.desc_extend
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

tactic: ext1
state_before: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u
inst✝¹ : Category.{v, u} C
F✝ F : J ⥤ C
inst✝ : HasColimit F
c : Cocone F
X : C
f : c.pt ⟶ X
⊢ desc F (c.extend f) = desc F c ≫ f
state_after: case w
J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u
inst✝¹ : Category.{v, u} C
F✝ F : J ⥤ C
inst✝ : HasColimit F
c : Cocone F
X : C
f : c.pt ⟶ X
j✝ : J
⊢ ι F j✝ ≫ desc F (c.extend f) = ι F j✝ ≫ desc F c ≫ f

tactic: rw [← Category.assoc]
state_before: case w
J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u
inst✝¹ : Category.{v, u} C
F✝ F : J ⥤ C
inst✝ : HasColimit F
c : Cocone F
X : C
f : c.pt ⟶ X
j✝ : J
⊢ ι F j✝ ≫ desc F (c.extend f) = ι F j✝ ≫ desc F c ≫ f
state_after: case w
J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u
inst✝¹ : Category.{v, u} C
F✝ F : J ⥤ C
inst✝ : HasColimit F
c : Cocone F
X : C
f : c.pt ⟶ X
j✝ : J
⊢ ι F j✝ ≫ desc F (c.extend f) = (ι F j✝ ≫ desc F c) ≫ f

tactic: simp
state_before: case w
J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u
inst✝¹ : Category.{v, u} C
F✝ F : J ⥤ C
inst✝ : HasColimit F
c : Cocone F
X : C
f : c.pt ⟶ X
j✝ : J
⊢ ι F j✝ ≫ desc F (c.extend f) = (ι F j✝ ≫ desc F c) ≫ f
state_after: no goals
Theorem: InitialSeg.eq_or_principal
File: Mathlib/Order/InitialSeg.lean

tactic: rw [← e]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ≼i s
h : ¬∃ b, ∀ (x : β), s x b ↔ ∃ y, f y = x
b x : β
x✝¹ : ∀ (y : β), s y x → Acc s y
IH : ∀ (y : β), s y x → ∃ a, f a = y
hn : ∀ (x_1 : α), ¬f x_1 = x
y : β
x✝ : ∃ y_1, f y_1 = y
a : α
e : f a = y
⊢ s y x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ≼i s
h : ¬∃ b, ∀ (x : β), s x b ↔ ∃ y, f y = x
b x : β
x✝¹ : ∀ (y : β), s y x → Acc s y
IH : ∀ (y : β), s y x → ∃ a, f a = y
hn : ∀ (x_1 : α), ¬f x_1 = x
y : β
x✝ : ∃ y_1, f y_1 = y
a : α
e : f a = y
⊢ s (f a) x

tactic: exact
  (trichotomous _ _).resolve_right
    (not_or_of_not (hn a) fun hl => not_exists.2 hn (f.init hl))
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
inst✝ : IsWellOrder β s
f : r ≼i s
h : ¬∃ b, ∀ (x : β), s x b ↔ ∃ y, f y = x
b x : β
x✝¹ : ∀ (y : β), s y x → Acc s y
IH : ∀ (y : β), s y x → ∃ a, f a = y
hn : ∀ (x_1 : α), ¬f x_1 = x
y : β
x✝ : ∃ y_1, f y_1 = y
a : α
e : f a = y
⊢ s (f a) x
state_after: no goals
Theorem: Rat.MulRingNorm.equiv_on_nat_iff_equiv
File: Mathlib/NumberTheory/Ostrowski.lean

tactic: refine ⟨fun ⟨c, hc, h⟩ ↦ ⟨c, ⟨hc, ?_⟩⟩, fun ⟨c, hc, h⟩ ↦ ⟨c, ⟨hc, fun n ↦ by rw [← h]⟩⟩⟩
state_before: f g : MulRingNorm ℚ
⊢ (∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = g ↑n) ↔ f.equiv g
state_after: f g : MulRingNorm ℚ
x✝ : ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = g ↑n
c : ℝ
hc : 0 < c
h : ∀ (n : ℕ), f ↑n ^ c = g ↑n
⊢ (fun x => f x ^ c) = ⇑g

tactic: ext x
state_before: f g : MulRingNorm ℚ
x✝ : ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = g ↑n
c : ℝ
hc : 0 < c
h : ∀ (n : ℕ), f ↑n ^ c = g ↑n
⊢ (fun x => f x ^ c) = ⇑g
state_after: case h
f g : MulRingNorm ℚ
x✝ : ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = g ↑n
c : ℝ
hc : 0 < c
h : ∀ (n : ℕ), f ↑n ^ c = g ↑n
x : ℚ
⊢ f x ^ c = g x

tactic: rw [← Rat.num_div_den x, map_div₀, map_div₀, Real.div_rpow (apply_nonneg f _)
  (apply_nonneg f _), h x.den, ← MulRingNorm.apply_natAbs_eq,← MulRingNorm.apply_natAbs_eq,
  h (natAbs x.num)]
state_before: case h
f g : MulRingNorm ℚ
x✝ : ∃ c, 0 < c ∧ ∀ (n : ℕ), f ↑n ^ c = g ↑n
c : ℝ
hc : 0 < c
h : ∀ (n : ℕ), f ↑n ^ c = g ↑n
x : ℚ
⊢ f x ^ c = g x
state_after: no goals

tactic: rw [← h]
state_before: f g : MulRingNorm ℚ
x✝ : f.equiv g
c : ℝ
hc : 0 < c
h : (fun x => f x ^ c) = ⇑g
n : ℕ
⊢ f ↑n ^ c = g ↑n
state_after: no goals
Theorem: Ordinal.sup_lt_ord
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rwa [(#ι).lift_id]
state_before: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{u}
c : Ordinal.{u}
hι : #ι < c.cof
⊢ Cardinal.lift.{u, u} #ι < c.cof
state_after: no goals
Theorem: IsCyclic.exists_monoid_generator
File: Mathlib/GroupTheory/SpecificGroups/Cyclic.lean

tactic: simp_rw [mem_powers_iff_mem_zpowers]
state_before: α : Type u
a : α
inst✝² : Group α
inst✝¹ : Finite α
inst✝ : IsCyclic α
⊢ ∃ x, ∀ (y : α), y ∈ Submonoid.powers x
state_after: α : Type u
a : α
inst✝² : Group α
inst✝¹ : Finite α
inst✝ : IsCyclic α
⊢ ∃ x, ∀ (y : α), y ∈ zpowers x

tactic: exact IsCyclic.exists_generator
state_before: α : Type u
a : α
inst✝² : Group α
inst✝¹ : Finite α
inst✝ : IsCyclic α
⊢ ∃ x, ∀ (y : α), y ∈ zpowers x
state_after: no goals
Theorem: LipschitzWith.dist_iterate_succ_le_geometric
File: Mathlib/Topology/MetricSpace/Lipschitz.lean

tactic: rw [iterate_succ, mul_comm]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
K : ℝ≥0
f✝ : α → β
x✝ y : α
r : ℝ
f : α → α
hf : LipschitzWith K f
x : α
n : ℕ
⊢ dist (f^[n] x) (f^[n + 1] x) ≤ dist x (f x) * ↑K ^ n
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
K : ℝ≥0
f✝ : α → β
x✝ y : α
r : ℝ
f : α → α
hf : LipschitzWith K f
x : α
n : ℕ
⊢ dist (f^[n] x) ((f^[n] ∘ f) x) ≤ ↑K ^ n * dist x (f x)

tactic: simpa only [NNReal.coe_pow] using (hf.iterate n).dist_le_mul x (f x)
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoMetricSpace α
inst✝¹ : PseudoMetricSpace β
inst✝ : PseudoMetricSpace γ
K : ℝ≥0
f✝ : α → β
x✝ y : α
r : ℝ
f : α → α
hf : LipschitzWith K f
x : α
n : ℕ
⊢ dist (f^[n] x) ((f^[n] ∘ f) x) ≤ ↑K ^ n * dist x (f x)
state_after: no goals
Theorem: lineMap_mono_right
File: Mathlib/LinearAlgebra/AffineSpace/Ordered.lean

tactic: simp only [lineMap_apply_module]
state_before: k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r r' : k
hb : b ≤ b'
hr : 0 ≤ r
⊢ (lineMap a b) r ≤ (lineMap a b') r
state_after: k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r r' : k
hb : b ≤ b'
hr : 0 ≤ r
⊢ (1 - r) • a + r • b ≤ (1 - r) • a + r • b'

tactic: exact add_le_add_left (smul_le_smul_of_nonneg_left hb hr) _
state_before: k : Type u_1
E : Type u_2
PE : Type u_3
inst✝³ : OrderedRing k
inst✝² : OrderedAddCommGroup E
inst✝¹ : Module k E
inst✝ : OrderedSMul k E
a a' b b' : E
r r' : k
hb : b ≤ b'
hr : 0 ≤ r
⊢ (1 - r) • a + r • b ≤ (1 - r) • a + r • b'
state_after: no goals
Theorem: Real.iInf_of_isEmpty
File: Mathlib/Data/Real/Archimedean.lean

tactic: rw [iInf_of_isEmpty, sInf_empty]
state_before: α : Sort u_1
inst✝ : IsEmpty α
f : α → ℝ
⊢ ⨅ i, f i = 0
state_after: no goals
Theorem: Int.eq_one_or_neg_one_of_mul_eq_neg_one'
File: Mathlib/Algebra/Group/Int.lean

tactic: obtain rfl | rfl := isUnit_eq_one_or (IsUnit.mul_iff.mp (Int.isUnit_iff.mpr (Or.inr h))).1
state_before: u v : ℤ
h : u * v = -1
⊢ u = 1 ∧ v = -1 ∨ u = -1 ∧ v = 1
state_after: case inl
v : ℤ
h : 1 * v = -1
⊢ 1 = 1 ∧ v = -1 ∨ 1 = -1 ∧ v = 1

case inr
v : ℤ
h : -1 * v = -1
⊢ -1 = 1 ∧ v = -1 ∨ -1 = -1 ∧ v = 1

tactic: exact Or.inl ⟨rfl, one_mul v ▸ h⟩
state_before: case inl
v : ℤ
h : 1 * v = -1
⊢ 1 = 1 ∧ v = -1 ∨ 1 = -1 ∧ v = 1
state_after: no goals

tactic: simpa [Int.neg_mul] using h
state_before: case inr
v : ℤ
h : -1 * v = -1
⊢ -1 = 1 ∧ v = -1 ∨ -1 = -1 ∧ v = 1
state_after: no goals