1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Polynomial.natDegree_eraseLead_add_one
File: Mathlib/Algebra/Polynomial/EraseLead.lean

tactic: rw [natDegree_eraseLead h, tsub_add_cancel_of_le]
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f.nextCoeff ≠ 0
⊢ f.eraseLead.natDegree + 1 = f.natDegree
state_after: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f.nextCoeff ≠ 0
⊢ 1 ≤ f.natDegree

tactic: exact natDegree_pos_of_nextCoeff_ne_zero h
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f.nextCoeff ≠ 0
⊢ 1 ≤ f.natDegree
state_after: no goals
Theorem: Finset.mem_shadow_iff_exists_sdiff
File: Mathlib/Combinatorics/SetFamily/Shadow.lean

tactic: simp_rw [mem_shadow_iff, ← covBy_iff_card_sdiff_eq_one, covBy_iff_exists_erase]
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t : Finset α
a : α
k r : ℕ
⊢ t ∈ ∂ 𝒜 ↔ ∃ s ∈ 𝒜, t ⊆ s ∧ (s \ t).card = 1
state_after: no goals
Theorem: Cardinal.eq_of_add_eq_add_right
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [add_comm a b, add_comm c b] at h
state_before: a b c : Cardinal.{u_1}
h : a + b = c + b
hb : b < ℵ₀
⊢ a = c
state_after: a b c : Cardinal.{u_1}
h : b + a = b + c
hb : b < ℵ₀
⊢ a = c

tactic: exact Cardinal.eq_of_add_eq_add_left h hb
state_before: a b c : Cardinal.{u_1}
h : b + a = b + c
hb : b < ℵ₀
⊢ a = c
state_after: no goals
Theorem: IntermediateField.finInsepDegree_top
File: Mathlib/FieldTheory/SeparableClosure.lean

tactic: rw [finInsepDegree_def', insepDegree_top, ← finInsepDegree_def']
state_before: F : Type u
E : Type v
inst✝⁶ : Field F
inst✝⁵ : Field E
inst✝⁴ : Algebra F E
K : Type w
inst✝³ : Field K
inst✝² : Algebra F K
inst✝¹ : Algebra E K
inst✝ : IsScalarTower F E K
⊢ finInsepDegree F ↥⊤ = finInsepDegree F K
state_after: no goals
Theorem: Polynomial.prime_C_iff
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: have := hr.1
state_before: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
⊢ Prime (C r)
state_after: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
this : r ≠ 0
⊢ Prime (C r)

tactic: rw [← Ideal.span_singleton_prime] at hr ⊢
state_before: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
this : r ≠ 0
⊢ Prime (C r)
state_after: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : (Ideal.span {r}).IsPrime
this : r ≠ 0
⊢ (Ideal.span {C r}).IsPrime

R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : (Ideal.span {r}).IsPrime
this : r ≠ 0
⊢ C r ≠ 0

R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
this : r ≠ 0
⊢ r ≠ 0

tactic: rw [← Set.image_singleton, ← Ideal.map_span]
state_before: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : (Ideal.span {r}).IsPrime
this : r ≠ 0
⊢ (Ideal.span {C r}).IsPrime
state_after: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : (Ideal.span {r}).IsPrime
this : r ≠ 0
⊢ (Ideal.map C (Ideal.span {r})).IsPrime

tactic: apply Ideal.isPrime_map_C_of_isPrime hr
state_before: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : (Ideal.span {r}).IsPrime
this : r ≠ 0
⊢ (Ideal.map C (Ideal.span {r})).IsPrime
state_after: no goals

tactic: intro h
state_before: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : (Ideal.span {r}).IsPrime
this : r ≠ 0
⊢ C r ≠ 0
state_after: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : (Ideal.span {r}).IsPrime
this : r ≠ 0
h : C r = 0
⊢ False

tactic: apply (this (C_eq_zero.mp h))
state_before: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : (Ideal.span {r}).IsPrime
this : r ≠ 0
h : C r = 0
⊢ False
state_after: no goals

tactic: assumption
state_before: R : Type u
S : Type u_1
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r : R
hr : Prime r
this : r ≠ 0
⊢ r ≠ 0
state_after: no goals
Theorem: Finset.centerMass_singleton
File: Mathlib/Analysis/Convex/Combination.lean

tactic: rw [centerMass, sum_singleton, sum_singleton, ← mul_smul, inv_mul_cancel hw, one_smul]
state_before: R : Type u_1
R' : Type u_2
E : Type u_3
F : Type u_4
ι : Type u_5
ι' : Type u_6
α : Type u_7
inst✝⁸ : LinearOrderedField R
inst✝⁷ : LinearOrderedField R'
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
hw : w i ≠ 0
⊢ {i}.centerMass w z = z i
state_after: no goals
Theorem: Cardinal.one_le_iff_pos
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [← succ_zero, succ_le_iff]
state_before: α β : Type u
c : Cardinal.{u_1}
⊢ 1 ≤ c ↔ 0 < c
state_after: no goals
Theorem: MeasureTheory.Integrable.add'
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: exact mod_cast nnnorm_add_le _ _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f g : α → β
hf : Integrable f μ
hg : Integrable g μ
a : α
⊢ ↑‖f a + g a‖₊ ≤ ↑‖f a‖₊ + ↑‖g a‖₊
state_after: no goals
Theorem: ciSup_mono
File: Mathlib/Order/ConditionallyCompleteLattice/Basic.lean

tactic: cases isEmpty_or_nonempty ι
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLattice α
s t : Set α
a b : α
f g : ι → α
B : BddAbove (range g)
H : ∀ (x : ι), f x ≤ g x
⊢ iSup f ≤ iSup g
state_after: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLattice α
s t : Set α
a b : α
f g : ι → α
B : BddAbove (range g)
H : ∀ (x : ι), f x ≤ g x
h✝ : IsEmpty ι
⊢ iSup f ≤ iSup g

case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLattice α
s t : Set α
a b : α
f g : ι → α
B : BddAbove (range g)
H : ∀ (x : ι), f x ≤ g x
h✝ : Nonempty ι
⊢ iSup f ≤ iSup g

tactic: rw [iSup_of_empty', iSup_of_empty']
state_before: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLattice α
s t : Set α
a b : α
f g : ι → α
B : BddAbove (range g)
H : ∀ (x : ι), f x ≤ g x
h✝ : IsEmpty ι
⊢ iSup f ≤ iSup g
state_after: no goals

tactic: exact ciSup_le fun x => le_ciSup_of_le B x (H x)
state_before: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLattice α
s t : Set α
a b : α
f g : ι → α
B : BddAbove (range g)
H : ∀ (x : ι), f x ≤ g x
h✝ : Nonempty ι
⊢ iSup f ≤ iSup g
state_after: no goals
Theorem: geom_sum_eq_zero_iff_neg_one
File: Mathlib/Algebra/GeomSum.lean

tactic: refine ⟨fun h => ?_, @fun ⟨h, hn⟩ => by simp only [h, hn, neg_one_geom_sum, if_true]⟩
state_before: α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
⊢ ∑ i ∈ range n, x ^ i = 0 ↔ x = -1 ∧ Even n
state_after: α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
h : ∑ i ∈ range n, x ^ i = 0
⊢ x = -1 ∧ Even n

tactic: contrapose! h
state_before: α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
h : ∑ i ∈ range n, x ^ i = 0
⊢ x = -1 ∧ Even n
state_after: α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
h : x = -1 → ¬Even n
⊢ ∑ i ∈ range n, x ^ i ≠ 0

tactic: have hx := eq_or_ne x (-1)
state_before: α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
h : x = -1 → ¬Even n
⊢ ∑ i ∈ range n, x ^ i ≠ 0
state_after: α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
h : x = -1 → ¬Even n
hx : x = -1 ∨ x ≠ -1
⊢ ∑ i ∈ range n, x ^ i ≠ 0

tactic: cases' hx with hx hx
state_before: α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
h : x = -1 → ¬Even n
hx : x = -1 ∨ x ≠ -1
⊢ ∑ i ∈ range n, x ^ i ≠ 0
state_after: case inl
α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
h : x = -1 → ¬Even n
hx : x = -1
⊢ ∑ i ∈ range n, x ^ i ≠ 0

case inr
α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
h : x = -1 → ¬Even n
hx : x ≠ -1
⊢ ∑ i ∈ range n, x ^ i ≠ 0

tactic: simp only [h, hn, neg_one_geom_sum, if_true]
state_before: α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn✝ : n ≠ 0
x✝ : x = -1 ∧ Even n
h : x = -1
hn : Even n
⊢ ∑ i ∈ range n, x ^ i = 0
state_after: no goals

tactic: rw [hx, neg_one_geom_sum]
state_before: case inl
α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
h : x = -1 → ¬Even n
hx : x = -1
⊢ ∑ i ∈ range n, x ^ i ≠ 0
state_after: case inl
α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
h : x = -1 → ¬Even n
hx : x = -1
⊢ (if Even n then 0 else 1) ≠ 0

tactic: simp only [h hx, ite_false, ne_eq, one_ne_zero, not_false_eq_true]
state_before: case inl
α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
h : x = -1 → ¬Even n
hx : x = -1
⊢ (if Even n then 0 else 1) ≠ 0
state_after: no goals

tactic: exact geom_sum_ne_zero hx hn
state_before: case inr
α : Type u
β : Type u_1
n : ℕ
x : α
inst✝ : LinearOrderedRing α
hn : n ≠ 0
h : x = -1 → ¬Even n
hx : x ≠ -1
⊢ ∑ i ∈ range n, x ^ i ≠ 0
state_after: no goals
Theorem: IsSl2Triple.e_ne_zero
File: Mathlib/Algebra/Lie/Sl2.lean

tactic: have := t.h_ne_zero
state_before: R : Type u_1
L : Type u_2
M : Type u_3
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
h e f : L
t : IsSl2Triple h e f
⊢ e ≠ 0
state_after: R : Type u_1
L : Type u_2
M : Type u_3
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
h e f : L
t : IsSl2Triple h e f
this : h ≠ 0
⊢ e ≠ 0

tactic: contrapose! this
state_before: R : Type u_1
L : Type u_2
M : Type u_3
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
h e f : L
t : IsSl2Triple h e f
this : h ≠ 0
⊢ e ≠ 0
state_after: R : Type u_1
L : Type u_2
M : Type u_3
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
h e f : L
t : IsSl2Triple h e f
this : e = 0
⊢ h = 0

tactic: simpa [this] using t.lie_e_f.symm
state_before: R : Type u_1
L : Type u_2
M : Type u_3
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
h e f : L
t : IsSl2Triple h e f
this : e = 0
⊢ h = 0
state_after: no goals
Theorem: TopologicalRing.of_addGroup_of_nhds_zero
File: Mathlib/Topology/Algebra/Ring/Basic.lean

tactic: refine continuous_of_continuousAt_zero₂ (AddMonoidHom.mul (R := R)) ?_ ?_ ?_ <;>
  simpa only [ContinuousAt, mul_zero, zero_mul, nhds_prod_eq, AddMonoidHom.mul_apply]
state_before: α : Type u_1
R : Type u_2
inst✝² : NonUnitalNonAssocRing R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalAddGroup R
hmul : Tendsto (uncurry fun x x_1 => x * x_1) (𝓝 0 ×ˢ 𝓝 0) (𝓝 0)
hmul_left : ∀ (x₀ : R), Tendsto (fun x => x₀ * x) (𝓝 0) (𝓝 0)
hmul_right : ∀ (x₀ : R), Tendsto (fun x => x * x₀) (𝓝 0) (𝓝 0)
⊢ Continuous fun p => p.1 * p.2
state_after: no goals
Theorem: Rat.mul_self_num
File: Mathlib/Data/Rat/Lemmas.lean

tactic: rw [mul_num, Int.natAbs_mul, Nat.Coprime.gcd_eq_one, Int.ofNat_one, Int.ediv_one]
state_before: q : ℚ
⊢ (q * q).num = q.num * q.num
state_after: q : ℚ
⊢ (q.num.natAbs * q.num.natAbs).Coprime (q.den * q.den)

tactic: exact (q.reduced.mul_right q.reduced).mul (q.reduced.mul_right q.reduced)
state_before: q : ℚ
⊢ (q.num.natAbs * q.num.natAbs).Coprime (q.den * q.den)
state_after: no goals
Theorem: AlgEquiv.comp_symm
File: Mathlib/Algebra/Algebra/Equiv.lean

tactic: ext
state_before: R : Type uR
A₁ : Type uA₁
A₂ : Type uA₂
A₃ : Type uA₃
A₁' : Type uA₁'
A₂' : Type uA₂'
A₃' : Type uA₃'
inst✝¹² : CommSemiring R
inst✝¹¹ : Semiring A₁
inst✝¹⁰ : Semiring A₂
inst✝⁹ : Semiring A₃
inst✝⁸ : Semiring A₁'
inst✝⁷ : Semiring A₂'
inst✝⁶ : Semiring A₃'
inst✝⁵ : Algebra R A₁
inst✝⁴ : Algebra R A₂
inst✝³ : Algebra R A₃
inst✝² : Algebra R A₁'
inst✝¹ : Algebra R A₂'
inst✝ : Algebra R A₃'
e✝ e : A₁ ≃ₐ[R] A₂
⊢ (↑e).comp ↑e.symm = AlgHom.id R A₂
state_after: case H
R : Type uR
A₁ : Type uA₁
A₂ : Type uA₂
A₃ : Type uA₃
A₁' : Type uA₁'
A₂' : Type uA₂'
A₃' : Type uA₃'
inst✝¹² : CommSemiring R
inst✝¹¹ : Semiring A₁
inst✝¹⁰ : Semiring A₂
inst✝⁹ : Semiring A₃
inst✝⁸ : Semiring A₁'
inst✝⁷ : Semiring A₂'
inst✝⁶ : Semiring A₃'
inst✝⁵ : Algebra R A₁
inst✝⁴ : Algebra R A₂
inst✝³ : Algebra R A₃
inst✝² : Algebra R A₁'
inst✝¹ : Algebra R A₂'
inst✝ : Algebra R A₃'
e✝ e : A₁ ≃ₐ[R] A₂
x✝ : A₂
⊢ ((↑e).comp ↑e.symm) x✝ = (AlgHom.id R A₂) x✝

tactic: simp
state_before: case H
R : Type uR
A₁ : Type uA₁
A₂ : Type uA₂
A₃ : Type uA₃
A₁' : Type uA₁'
A₂' : Type uA₂'
A₃' : Type uA₃'
inst✝¹² : CommSemiring R
inst✝¹¹ : Semiring A₁
inst✝¹⁰ : Semiring A₂
inst✝⁹ : Semiring A₃
inst✝⁸ : Semiring A₁'
inst✝⁷ : Semiring A₂'
inst✝⁶ : Semiring A₃'
inst✝⁵ : Algebra R A₁
inst✝⁴ : Algebra R A₂
inst✝³ : Algebra R A₃
inst✝² : Algebra R A₁'
inst✝¹ : Algebra R A₂'
inst✝ : Algebra R A₃'
e✝ e : A₁ ≃ₐ[R] A₂
x✝ : A₂
⊢ ((↑e).comp ↑e.symm) x✝ = (AlgHom.id R A₂) x✝
state_after: no goals
Theorem: Set.inv_insert
File: Mathlib/Data/Set/Pointwise/Basic.lean

tactic: rw [insert_eq, union_inv, inv_singleton, insert_eq]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : InvolutiveInv α
s✝ t : Set α
a✝ a : α
s : Set α
⊢ (insert a s)⁻¹ = insert a⁻¹ s⁻¹
state_after: no goals
Theorem: finprod_mem_div_distrib
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: simp only [div_eq_mul_inv, finprod_mem_mul_distrib hs, finprod_mem_inv_distrib g hs]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝² : CommMonoid M
inst✝¹ : CommMonoid N
f✝ g✝ : α → M
a b : α
s t : Set α
inst✝ : DivisionCommMonoid G
f g : α → G
hs : s.Finite
⊢ ∏ᶠ (i : α) (_ : i ∈ s), f i / g i = (∏ᶠ (i : α) (_ : i ∈ s), f i) / ∏ᶠ (i : α) (_ : i ∈ s), g i
state_after: no goals
Theorem: FormalMultilinearSeries.order_eq_zero_iff
File: Mathlib/Analysis/Calculus/FormalMultilinearSeries.lean

tactic: simp [order_eq_zero_iff', hp]
state_before: 𝕜 : Type u
𝕜' : Type u'
E : Type v
F : Type w
G : Type x
inst✝¹⁰ : Ring 𝕜
n : ℕ
inst✝⁹ : AddCommGroup E
inst✝⁸ : Module 𝕜 E
inst✝⁷ : TopologicalSpace E
inst✝⁶ : TopologicalAddGroup E
inst✝⁵ : ContinuousConstSMul 𝕜 E
inst✝⁴ : AddCommGroup F
inst✝³ : Module 𝕜 F
inst✝² : TopologicalSpace F
inst✝¹ : TopologicalAddGroup F
inst✝ : ContinuousConstSMul 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
hp : p ≠ 0
⊢ p.order = 0 ↔ p 0 ≠ 0
state_after: no goals
Theorem: CliffordAlgebra.contractLeft_mul_algebraMap
File: Mathlib/LinearAlgebra/CliffordAlgebra/Contraction.lean

tactic: rw [← Algebra.commutes, contractLeft_algebraMap_mul, Algebra.commutes]
state_before: R : Type u1
inst✝² : CommRing R
M : Type u2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
d d' : Module.Dual R M
a : CliffordAlgebra Q
r : R
⊢ (contractLeft d) (a * (algebraMap R (CliffordAlgebra Q)) r) =
    (contractLeft d) a * (algebraMap R (CliffordAlgebra Q)) r
state_after: no goals
Theorem: CategoryTheory.ShortComplex.leftHomologyMap'_op
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

tactic: let γ : LeftHomologyMapData φ h₁ h₂ := leftHomologyMapData φ h₁ h₂
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.LeftHomologyData
⊢ (leftHomologyMap' φ h₁ h₂).op = rightHomologyMap' (opMap φ) h₂.op h₁.op
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.LeftHomologyData
γ : LeftHomologyMapData φ h₁ h₂ := leftHomologyMapData φ h₁ h₂
⊢ (leftHomologyMap' φ h₁ h₂).op = rightHomologyMap' (opMap φ) h₂.op h₁.op

tactic: simp only [γ.leftHomologyMap'_eq, γ.op.rightHomologyMap'_eq,
  LeftHomologyMapData.op_φH]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.LeftHomologyData
γ : LeftHomologyMapData φ h₁ h₂ := leftHomologyMapData φ h₁ h₂
⊢ (leftHomologyMap' φ h₁ h₂).op = rightHomologyMap' (opMap φ) h₂.op h₁.op
state_after: no goals
Theorem: List.Nat.antidiagonal_succ
File: Mathlib/Data/List/NatAntidiagonal.lean

tactic: simp only [antidiagonal, range_succ_eq_map, map_cons, true_and_iff, Nat.add_succ_sub_one,
  Nat.add_zero, id, eq_self_iff_true, Nat.sub_zero, map_map, Prod.map_mk]
state_before: n : ℕ
⊢ antidiagonal (n + 1) = (0, n + 1) :: map (Prod.map succ id) (antidiagonal n)
state_after: n : ℕ
⊢ (0, n + 1) :: (succ 0, n) :: map ((fun i => (i, n + 1 - i)) ∘ succ ∘ succ) (range n) =
    (0, n + 1) :: (succ 0, n) :: map (Prod.map succ id ∘ (fun i => (i, n - i)) ∘ succ) (range n)

tactic: apply congr rfl (congr rfl _)
state_before: n : ℕ
⊢ (0, n + 1) :: (succ 0, n) :: map ((fun i => (i, n + 1 - i)) ∘ succ ∘ succ) (range n) =
    (0, n + 1) :: (succ 0, n) :: map (Prod.map succ id ∘ (fun i => (i, n - i)) ∘ succ) (range n)
state_after: n : ℕ
⊢ map ((fun i => (i, n + 1 - i)) ∘ succ ∘ succ) (range n) =
    map (Prod.map succ id ∘ (fun i => (i, n - i)) ∘ succ) (range n)

tactic: ext
state_before: n : ℕ
⊢ map ((fun i => (i, n + 1 - i)) ∘ succ ∘ succ) (range n) =
    map (Prod.map succ id ∘ (fun i => (i, n - i)) ∘ succ) (range n)
state_after: case h.a
n n✝ : ℕ
a✝ : ℕ × ℕ
⊢ a✝ ∈ (map ((fun i => (i, n + 1 - i)) ∘ succ ∘ succ) (range n))[n✝]? ↔
    a✝ ∈ (map (Prod.map succ id ∘ (fun i => (i, n - i)) ∘ succ) (range n))[n✝]?

tactic: simp
state_before: case h.a
n n✝ : ℕ
a✝ : ℕ × ℕ
⊢ a✝ ∈ (map ((fun i => (i, n + 1 - i)) ∘ succ ∘ succ) (range n))[n✝]? ↔
    a✝ ∈ (map (Prod.map succ id ∘ (fun i => (i, n - i)) ∘ succ) (range n))[n✝]?
state_after: no goals
Theorem: Int.mul_dvd_mul
File: Mathlib/Data/Int/Defs.lean

tactic: simp [he, hf, Int.mul_assoc, Int.mul_left_comm, Nat.mul_comm]
state_before: a b c d m n e : ℤ
he : b = a * e
f : ℤ
hf : d = c * f
⊢ b * d = a * c * (e * f)
state_after: no goals
Theorem: Cardinal.zero_power_le
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: by_cases h : c = 0
state_before: α β : Type u
c : Cardinal.{u}
⊢ 0 ^ c ≤ 1
state_after: case pos
α β : Type u
c : Cardinal.{u}
h : c = 0
⊢ 0 ^ c ≤ 1

case neg
α β : Type u
c : Cardinal.{u}
h : ¬c = 0
⊢ 0 ^ c ≤ 1

tactic: rw [h, power_zero]
state_before: case pos
α β : Type u
c : Cardinal.{u}
h : c = 0
⊢ 0 ^ c ≤ 1
state_after: no goals

tactic: rw [zero_power h]
state_before: case neg
α β : Type u
c : Cardinal.{u}
h : ¬c = 0
⊢ 0 ^ c ≤ 1
state_after: case neg
α β : Type u
c : Cardinal.{u}
h : ¬c = 0
⊢ 0 ≤ 1

tactic: apply zero_le
state_before: case neg
α β : Type u
c : Cardinal.{u}
h : ¬c = 0
⊢ 0 ≤ 1
state_after: no goals
Theorem: Antivary.sum_smul_lt_sum_comp_perm_smul_iff
File: Mathlib/Algebra/Order/Rearrangement.lean

tactic: simp [(hfg.antivaryOn _).sum_smul_lt_sum_comp_perm_smul_iff fun _ _ ↦ mem_univ _]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : LinearOrderedRing α
inst✝³ : LinearOrderedAddCommGroup β
inst✝² : Module α β
inst✝¹ : OrderedSMul α β
s : Finset ι
σ : Perm ι
f : ι → α
g : ι → β
inst✝ : Fintype ι
hfg : Antivary f g
⊢ ∑ i : ι, f i • g i < ∑ i : ι, f (σ i) • g i ↔ ¬Antivary (f ∘ ⇑σ) g
state_after: no goals
Theorem: TypeVec.splitFun_inj
File: Mathlib/Data/TypeVec.lean

tactic: rw [← dropFun_splitFun f g, H, ← lastFun_splitFun f g, H]
state_before: n : ℕ
α : TypeVec.{u_1} (n + 1)
α' : TypeVec.{u_2} (n + 1)
f f' : α.drop ⟹ α'.drop
g g' : α.last → α'.last
H : splitFun f g = splitFun f' g'
⊢ f = f' ∧ g = g'
state_after: n : ℕ
α : TypeVec.{u_1} (n + 1)
α' : TypeVec.{u_2} (n + 1)
f f' : α.drop ⟹ α'.drop
g g' : α.last → α'.last
H : splitFun f g = splitFun f' g'
⊢ dropFun (splitFun f' g') = f' ∧ lastFun (splitFun f' g') = g'

tactic: simp
state_before: n : ℕ
α : TypeVec.{u_1} (n + 1)
α' : TypeVec.{u_2} (n + 1)
f f' : α.drop ⟹ α'.drop
g g' : α.last → α'.last
H : splitFun f g = splitFun f' g'
⊢ dropFun (splitFun f' g') = f' ∧ lastFun (splitFun f' g') = g'
state_after: no goals
Theorem: WithBot.strictMono_map_iff
File: Mathlib/Order/WithBot.lean

tactic: simp [StrictMono, bot_lt_coe]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
a b : α
inst✝¹ : Preorder α
inst✝ : Preorder β
f : α → β
⊢ ((StrictMono fun a => map f ↑a) ∧ ∀ (x : α), map f ⊥ < map f ↑x) ↔ StrictMono f
state_after: no goals
Theorem: NNReal.nhds_zero
File: Mathlib/Topology/Instances/NNReal.lean

tactic: simp only [bot_lt_iff_ne_bot]
state_before: α : Type u_1
⊢ ⨅ l, ⨅ (_ : ⊥ < l), 𝓟 (Set.Iio l) = ⨅ a, ⨅ (_ : a ≠ 0), 𝓟 (Set.Iio a)
state_after: α : Type u_1
⊢ ⨅ l, ⨅ (_ : l ≠ ⊥), 𝓟 (Set.Iio l) = ⨅ a, ⨅ (_ : a ≠ 0), 𝓟 (Set.Iio a)

tactic: rfl
state_before: α : Type u_1
⊢ ⨅ l, ⨅ (_ : l ≠ ⊥), 𝓟 (Set.Iio l) = ⨅ a, ⨅ (_ : a ≠ 0), 𝓟 (Set.Iio a)
state_after: no goals
Theorem: Int.floor_add_one
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [← cast_one, floor_add_int]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a : α
⊢ ⌊a + 1⌋ = ⌊a⌋ + 1
state_after: no goals
Theorem: CategoryTheory.transferNatTransSelf_symm_comm
File: Mathlib/CategoryTheory/Adjunction/Mates.lean

tactic: rw [transferNatTransSelf_symm_comp, gf, transferNatTransSelf_symm_id]
state_before: C : Type u₁
D : Type u₂
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Category.{v₂, u₂} D
L₁ L₂ L₃ : C ⥤ D
R₁ R₂ R₃ : D ⥤ C
adj₁ : L₁ ⊣ R₁
adj₂ : L₂ ⊣ R₂
adj₃ : L₃ ⊣ R₃
f : R₁ ⟶ R₂
g : R₂ ⟶ R₁
gf : g ≫ f = 𝟙 R₂
⊢ (transferNatTransSelf adj₁ adj₂).symm f ≫ (transferNatTransSelf adj₂ adj₁).symm g = 𝟙 L₂
state_after: no goals
Theorem: Units.mul_left_inj
File: Mathlib/Algebra/Group/Units.lean

tactic: simpa only [mul_inv_cancel_right] using congr_arg (fun x : α => x * ↑(a⁻¹ : αˣ)) h
state_before: α : Type u
inst✝ : Monoid α
a✝ b✝ c✝ u a : αˣ
b c : α
h : b * ↑a = c * ↑a
⊢ b = c
state_after: no goals
Theorem: sign_cases_of_C_mul_pow_nonneg
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: have : 0 ≤ a := by simpa only [pow_zero, mul_one] using h 0
state_before: α : Type u
β : Type u_1
inst✝ : LinearOrderedSemiring α
a b c d : α
h : ∀ (n : ℕ), 0 ≤ a * b ^ n
⊢ a = 0 ∨ 0 < a ∧ 0 ≤ b
state_after: α : Type u
β : Type u_1
inst✝ : LinearOrderedSemiring α
a b c d : α
h : ∀ (n : ℕ), 0 ≤ a * b ^ n
this : 0 ≤ a
⊢ a = 0 ∨ 0 < a ∧ 0 ≤ b

tactic: refine this.eq_or_gt.imp_right fun ha ↦ ⟨ha, nonneg_of_mul_nonneg_right ?_ ha⟩
state_before: α : Type u
β : Type u_1
inst✝ : LinearOrderedSemiring α
a b c d : α
h : ∀ (n : ℕ), 0 ≤ a * b ^ n
this : 0 ≤ a
⊢ a = 0 ∨ 0 < a ∧ 0 ≤ b
state_after: α : Type u
β : Type u_1
inst✝ : LinearOrderedSemiring α
a b c d : α
h : ∀ (n : ℕ), 0 ≤ a * b ^ n
this : 0 ≤ a
ha : 0 < a
⊢ 0 ≤ a * b

tactic: simpa only [pow_one] using h 1
state_before: α : Type u
β : Type u_1
inst✝ : LinearOrderedSemiring α
a b c d : α
h : ∀ (n : ℕ), 0 ≤ a * b ^ n
this : 0 ≤ a
ha : 0 < a
⊢ 0 ≤ a * b
state_after: no goals

tactic: simpa only [pow_zero, mul_one] using h 0
state_before: α : Type u
β : Type u_1
inst✝ : LinearOrderedSemiring α
a b c d : α
h : ∀ (n : ℕ), 0 ≤ a * b ^ n
⊢ 0 ≤ a
state_after: no goals