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

tactic: ext
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ (C a * p).divX = C a * p.divX
state_after: case a
R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p q : R[X]
n✝ : ℕ
⊢ (C a * p).divX.coeff n✝ = (C a * p.divX).coeff n✝

tactic: simp
state_before: case a
R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Semiring R
p q : R[X]
n✝ : ℕ
⊢ (C a * p).divX.coeff n✝ = (C a * p.divX).coeff n✝
state_after: no goals
Theorem: NumberField.mixedEmbedding.volume_fundamentalDomain_stdBasis
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/Basic.lean

tactic: rw [fundamentalDomain_stdBasis, volume_eq_prod, prod_prod, volume_pi, volume_pi, pi_pi, pi_pi,
  Complex.volume_preserving_equiv_pi.measure_preimage ?_, volume_pi, pi_pi, Real.volume_Ico,
  sub_zero, ENNReal.ofReal_one, prod_const_one, prod_const_one, prod_const_one, one_mul]
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
⊢ volume (fundamentalDomain (stdBasis K)) = 1
state_after: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
⊢ MeasurableSet (Set.univ.pi fun x => Set.Ico 0 1)

tactic: exact MeasurableSet.pi Set.countable_univ (fun _ _ => measurableSet_Ico)
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
⊢ MeasurableSet (Set.univ.pi fun x => Set.Ico 0 1)
state_after: no goals
Theorem: toIocDiv_eq_sub
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [toIocDiv_sub_eq_toIocDiv_add, zero_add]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIocDiv hp a b = toIocDiv hp 0 (b - a)
state_after: no goals
Theorem: Int.isUnit_eq_one_or
File: Mathlib/Algebra/Group/Int.lean

tactic: simpa only [natAbs_of_isUnit hu] using natAbs_eq u
state_before: u v : ℤ
hu : IsUnit u
⊢ u = 1 ∨ u = -1
state_after: no goals
Theorem: Associates.factors_mk
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: classical
  apply dif_neg
  apply mt mk_eq_zero.1 h
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a : α
h : a ≠ 0
⊢ (Associates.mk a).factors = ↑(factors' a)
state_after: no goals

tactic: apply dif_neg
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a : α
h : a ≠ 0
⊢ (Associates.mk a).factors = ↑(factors' a)
state_after: case hnc
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a : α
h : a ≠ 0
⊢ ¬Associates.mk a = 0

tactic: apply mt mk_eq_zero.1 h
state_before: case hnc
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a : α
h : a ≠ 0
⊢ ¬Associates.mk a = 0
state_after: no goals
Theorem: CategoryTheory.Functor.conj_eqToHom_iff_heq
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: cases h
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
W X Y Z : C
f : W ⟶ X
g : Y ⟶ Z
h : W = Y
h' : X = Z
⊢ f = eqToHom h ≫ g ≫ eqToHom ⋯ ↔ HEq f g
state_after: case refl
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
W X Z : C
f : W ⟶ X
h' : X = Z
g : W ⟶ Z
⊢ f = eqToHom ⋯ ≫ g ≫ eqToHom ⋯ ↔ HEq f g

tactic: cases h'
state_before: case refl
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
W X Z : C
f : W ⟶ X
h' : X = Z
g : W ⟶ Z
⊢ f = eqToHom ⋯ ≫ g ≫ eqToHom ⋯ ↔ HEq f g
state_after: case refl.refl
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
W X : C
f g : W ⟶ X
⊢ f = eqToHom ⋯ ≫ g ≫ eqToHom ⋯ ↔ HEq f g

tactic: simp
state_before: case refl.refl
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
β : Sort u_1
D : Type u₂
inst✝ : Category.{v₂, u₂} D
W X : C
f g : W ⟶ X
⊢ f = eqToHom ⋯ ≫ g ≫ eqToHom ⋯ ↔ HEq f g
state_after: no goals
Theorem: CategoryTheory.Subobject.isIso_arrow_iff_eq_top
File: Mathlib/CategoryTheory/Subobject/Lattice.lean

tactic: rw [isIso_iff_mk_eq_top, mk_arrow]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X Y✝ Z : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
Y : C
P : Subobject Y
⊢ IsIso P.arrow ↔ P = ⊤
state_after: no goals
Theorem: CochainComplex.homologySequenceδ_quotient_mapTriangle_obj
File: Mathlib/Algebra/Homology/HomotopyCategory/ShortExact.lean

tactic: omega
state_before: C : Type u_1
inst✝¹ : Category.{?u.28, u_1} C
inst✝ : Abelian C
T : Triangle (CochainComplex C ℤ)
n₀ n₁ : ℤ
h : n₀ + 1 = n₁
⊢ 1 + n₀ = n₁
state_after: no goals

tactic: apply homologyFunctor_shiftMap
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
T : Triangle (CochainComplex C ℤ)
n₀ n₁ : ℤ
h : n₀ + 1 = n₁
⊢ (homologyFunctor C (up ℤ) 0).homologySequenceδ ((quotient C (up ℤ)).mapTriangle.obj T) n₀ n₁ h =
    (homologyFunctorFactors C (up ℤ) n₀).hom.app T.obj₃ ≫
      (HomologicalComplex.homologyFunctor C (up ℤ) 0).shiftMap T.mor₃ n₀ n₁ ⋯ ≫
        (homologyFunctorFactors C (up ℤ) n₁).inv.app T.obj₁
state_after: no goals
Theorem: Polynomial.prime_X
File: Mathlib/Algebra/Polynomial/RingDivision.lean

tactic: convert prime_X_sub_C (0 : R)
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
⊢ Prime X
state_after: case h.e'_3
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
⊢ X = X - C 0

tactic: simp
state_before: case h.e'_3
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
⊢ X = X - C 0
state_after: no goals
Theorem: groupCohomology.oneCoboundaries_eq_bot_of_isTrivial
File: Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

tactic: simp_rw [oneCoboundaries, dZero_eq_zero]
state_before: k G : Type u
inst✝² : CommRing k
inst✝¹ : Group G
A✝ A : Rep k G
inst✝ : A.IsTrivial
⊢ oneCoboundaries A = ⊥
state_after: k G : Type u
inst✝² : CommRing k
inst✝¹ : Group G
A✝ A : Rep k G
inst✝ : A.IsTrivial
⊢ LinearMap.range (LinearMap.codRestrict (oneCocycles A) 0 ⋯) = ⊥

tactic: exact LinearMap.range_eq_bot.2 rfl
state_before: k G : Type u
inst✝² : CommRing k
inst✝¹ : Group G
A✝ A : Rep k G
inst✝ : A.IsTrivial
⊢ LinearMap.range (LinearMap.codRestrict (oneCocycles A) 0 ⋯) = ⊥
state_after: no goals
Theorem: PEquiv.mem_ofSet_self_iff
File: Mathlib/Data/PEquiv.lean

tactic: dsimp [ofSet]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type x
s✝ : Set α
inst✝¹ : DecidablePred fun x => x ∈ s✝
s : Set α
inst✝ : DecidablePred fun x => x ∈ s
a : α
⊢ a ∈ (ofSet s) a ↔ a ∈ s
state_after: α : Type u
β : Type v
γ : Type w
δ : Type x
s✝ : Set α
inst✝¹ : DecidablePred fun x => x ∈ s✝
s : Set α
inst✝ : DecidablePred fun x => x ∈ s
a : α
⊢ (a ∈ if a ∈ s then some a else none) ↔ a ∈ s

tactic: split_ifs <;> simp [*]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type x
s✝ : Set α
inst✝¹ : DecidablePred fun x => x ∈ s✝
s : Set α
inst✝ : DecidablePred fun x => x ∈ s
a : α
⊢ (a ∈ if a ∈ s then some a else none) ↔ a ∈ s
state_after: no goals
Theorem: Cardinal.nat_lt_aleph0
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [← nat_succ, ← lift_mk_fin, aleph0, lift_mk_le.{u}]
state_before: α β : Type u
n : ℕ
⊢ succ ↑n ≤ ℵ₀
state_after: α β : Type u
n : ℕ
⊢ Nonempty (Fin n.succ ↪ ℕ)

tactic: exact ⟨⟨(↑), fun a b => Fin.ext⟩⟩
state_before: α β : Type u
n : ℕ
⊢ Nonempty (Fin n.succ ↪ ℕ)
state_after: no goals
Theorem: Equiv.symm_trans_self
File: Mathlib/Logic/Equiv/Defs.lean

tactic: simp
state_before: α : Sort u
β : Sort v
γ : Sort w
e : α ≃ β
⊢ ∀ (x : β), (e.symm.trans e) x = (Equiv.refl β) x
state_after: no goals
Theorem: isOpen_lt
File: Mathlib/Topology/Order/OrderClosed.lean

tactic: simpa only [lt_iff_not_le] using (isClosed_le hg hf).isOpen_compl
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderClosedTopology α
inst✝ : TopologicalSpace β
f g : β → α
hf : Continuous f
hg : Continuous g
⊢ IsOpen {b | f b < g b}
state_after: no goals
Theorem: SimpleGraph.sdiff_compl_neighborFinset_inter_eq
File: Mathlib/Combinatorics/SimpleGraph/StronglyRegular.lean

tactic: ext
state_before: V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : G.Adj v w
⊢ ((G.neighborFinset v)ᶜ ∩ (G.neighborFinset w)ᶜ) \ ({w} ∪ {v}) = (G.neighborFinset v)ᶜ ∩ (G.neighborFinset w)ᶜ
state_after: case a
V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : G.Adj v w
a✝ : V
⊢ a✝ ∈ ((G.neighborFinset v)ᶜ ∩ (G.neighborFinset w)ᶜ) \ ({w} ∪ {v}) ↔
    a✝ ∈ (G.neighborFinset v)ᶜ ∩ (G.neighborFinset w)ᶜ

tactic: simp only [and_imp, mem_union, mem_sdiff, mem_compl, and_iff_left_iff_imp, mem_neighborFinset,
  mem_inter, mem_singleton]
state_before: case a
V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : G.Adj v w
a✝ : V
⊢ a✝ ∈ ((G.neighborFinset v)ᶜ ∩ (G.neighborFinset w)ᶜ) \ ({w} ∪ {v}) ↔
    a✝ ∈ (G.neighborFinset v)ᶜ ∩ (G.neighborFinset w)ᶜ
state_after: case a
V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : G.Adj v w
a✝ : V
⊢ ¬G.Adj v a✝ → ¬G.Adj w a✝ → ¬(a✝ = w ∨ a✝ = v)

tactic: rintro hnv hnw (rfl | rfl)
state_before: case a
V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v w : V
h : G.Adj v w
a✝ : V
⊢ ¬G.Adj v a✝ → ¬G.Adj w a✝ → ¬(a✝ = w ∨ a✝ = v)
state_after: case a.inl
V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v a✝ : V
hnv : ¬G.Adj v a✝
h : G.Adj v a✝
hnw : ¬G.Adj a✝ a✝
⊢ False

case a.inr
V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
w a✝ : V
hnw : ¬G.Adj w a✝
h : G.Adj a✝ w
hnv : ¬G.Adj a✝ a✝
⊢ False

tactic: exact hnv h
state_before: case a.inl
V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
v a✝ : V
hnv : ¬G.Adj v a✝
h : G.Adj v a✝
hnw : ¬G.Adj a✝ a✝
⊢ False
state_after: no goals

tactic: apply hnw
state_before: case a.inr
V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
w a✝ : V
hnw : ¬G.Adj w a✝
h : G.Adj a✝ w
hnv : ¬G.Adj a✝ a✝
⊢ False
state_after: case a.inr
V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
w a✝ : V
hnw : ¬G.Adj w a✝
h : G.Adj a✝ w
hnv : ¬G.Adj a✝ a✝
⊢ G.Adj w a✝

tactic: rwa [adj_comm]
state_before: case a.inr
V : Type u
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n k ℓ μ : ℕ
w a✝ : V
hnw : ¬G.Adj w a✝
h : G.Adj a✝ w
hnv : ¬G.Adj a✝ a✝
⊢ G.Adj w a✝
state_after: no goals
Theorem: MeasureTheory.Measure.lintegral_rnDeriv
File: Mathlib/MeasureTheory/Decomposition/RadonNikodym.lean

tactic: rw [← setLIntegral_univ, setLIntegral_rnDeriv' hμν MeasurableSet.univ]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
hμν : μ ≪ ν
⊢ ∫⁻ (x : α), μ.rnDeriv ν x ∂ν = μ Set.univ
state_after: no goals
Theorem: groupCohomology.resolution.diagonalSucc_inv_single_single
File: Mathlib/RepresentationTheory/GroupCohomology/Resolution.lean

tactic: change mapDomain (actionDiagonalSucc G n).inv.hom
  (lcongr (Equiv.refl (G × (Fin n → G))) (TensorProduct.lid k k)
    (finsuppTensorFinsupp k k k k G (Fin n → G) (single g a ⊗ₜ[k] single f b)))
  = single (g • partialProd f) (a * b)
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : Fin n → G
a b : k
⊢ (diagonalSucc k G n).inv.hom (single g a ⊗ₜ[k] single f b) = single (g • partialProd f) (a * b)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : Fin n → G
a b : k
⊢ mapDomain (actionDiagonalSucc G n).inv.hom
      ((lcongr (Equiv.refl (G × (Fin n → G))) (TensorProduct.lid k k))
        ((finsuppTensorFinsupp k k k k G (Fin n → G)) (single g a ⊗ₜ[k] single f b))) =
    single (g • partialProd f) (a * b)

tactic: rw [finsuppTensorFinsupp_single, lcongr_single, mapDomain_single, Equiv.refl_apply,
  actionDiagonalSucc_inv_apply]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : Fin n → G
a b : k
⊢ mapDomain (actionDiagonalSucc G n).inv.hom
      ((lcongr (Equiv.refl (G × (Fin n → G))) (TensorProduct.lid k k))
        ((finsuppTensorFinsupp k k k k G (Fin n → G)) (single g a ⊗ₜ[k] single f b))) =
    single (g • partialProd f) (a * b)
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : Fin n → G
a b : k
⊢ single (g • partialProd f) ((TensorProduct.lid k k) (a ⊗ₜ[k] b)) = single (g • partialProd f) (a * b)

tactic: rfl
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Group G
g : G
f : Fin n → G
a b : k
⊢ single (g • partialProd f) ((TensorProduct.lid k k) (a ⊗ₜ[k] b)) = single (g • partialProd f) (a * b)
state_after: no goals
Theorem: ProbabilityTheory.kernel.sum_comap_seq
File: Mathlib/Probability/Kernel/Composition.lean

tactic: ext a s hs
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : β → γ
g : γ → α
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
hg : Measurable g
⊢ (kernel.sum fun n => comap (seq κ n) g hg) = comap κ g hg
state_after: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : β → γ
g : γ → α
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
hg : Measurable g
a : γ
s : Set β
hs : MeasurableSet s
⊢ ((kernel.sum fun n => comap (seq κ n) g hg) a) s = ((comap κ g hg) a) s

tactic: rw [kernel.sum_apply, comap_apply' κ hg a s, Measure.sum_apply _ hs, ← measure_sum_seq κ,
  Measure.sum_apply _ hs]
state_before: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : β → γ
g : γ → α
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
hg : Measurable g
a : γ
s : Set β
hs : MeasurableSet s
⊢ ((kernel.sum fun n => comap (seq κ n) g hg) a) s = ((comap κ g hg) a) s
state_after: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : β → γ
g : γ → α
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
hg : Measurable g
a : γ
s : Set β
hs : MeasurableSet s
⊢ ∑' (i : ℕ), ((comap (seq κ i) g hg) a) s = ∑' (i : ℕ), ((seq κ i) (g a)) s

tactic: simp_rw [comap_apply' _ hg _ s]
state_before: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : β → γ
g : γ → α
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
hg : Measurable g
a : γ
s : Set β
hs : MeasurableSet s
⊢ ∑' (i : ℕ), ((comap (seq κ i) g hg) a) s = ∑' (i : ℕ), ((seq κ i) (g a)) s
state_after: no goals
Theorem: Int.Matrix.N_le_P_add_one
File: Mathlib/NumberTheory/SiegelsLemma.lean

tactic: calc N i
_ ≤ 0 := by
  apply Finset.sum_nonpos
  intro j _
  simp only [mul_neg, Left.neg_nonpos_iff]
  exact mul_nonneg (Nat.cast_nonneg B) (negPart_nonneg (A i j))
_ ≤ P i + 1 := by
  apply le_trans (Finset.sum_nonneg _) (Int.le_add_one (le_refl P i))
  intro j _
  exact mul_nonneg (Nat.cast_nonneg B) (posPart_nonneg (A i j))
state_before: m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
⊢ N i ≤ P i + 1
state_after: no goals

tactic: apply Finset.sum_nonpos
state_before: m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
⊢ N i ≤ 0
state_after: case h
m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
⊢ ∀ i_1 ∈ univ, ↑B * -(A i i_1)⁻ ≤ 0

tactic: intro j _
state_before: case h
m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
⊢ ∀ i_1 ∈ univ, ↑B * -(A i i_1)⁻ ≤ 0
state_after: case h
m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
j : Fin n
a✝ : j ∈ univ
⊢ ↑B * -(A i j)⁻ ≤ 0

tactic: simp only [mul_neg, Left.neg_nonpos_iff]
state_before: case h
m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
j : Fin n
a✝ : j ∈ univ
⊢ ↑B * -(A i j)⁻ ≤ 0
state_after: case h
m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
j : Fin n
a✝ : j ∈ univ
⊢ 0 ≤ ↑B * (A i j)⁻

tactic: exact mul_nonneg (Nat.cast_nonneg B) (negPart_nonneg (A i j))
state_before: case h
m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
j : Fin n
a✝ : j ∈ univ
⊢ 0 ≤ ↑B * (A i j)⁻
state_after: no goals

tactic: apply le_trans (Finset.sum_nonneg _) (Int.le_add_one (le_refl P i))
state_before: m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
⊢ 0 ≤ P i + 1
state_after: m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
⊢ ∀ i_1 ∈ univ, 0 ≤ ↑B * (A i i_1)⁺

tactic: intro j _
state_before: m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
⊢ ∀ i_1 ∈ univ, 0 ≤ ↑B * (A i i_1)⁺
state_after: m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
j : Fin n
a✝ : j ∈ univ
⊢ 0 ≤ ↑B * (A i j)⁺

tactic: exact mul_nonneg (Nat.cast_nonneg B) (posPart_nonneg (A i j))
state_before: m n : ℕ
A : Matrix (Fin m) (Fin n) ℤ
v : Fin n → ℤ
hn : m < n
hm : 0 < m
i : Fin m
j : Fin n
a✝ : j ∈ univ
⊢ 0 ≤ ↑B * (A i j)⁺
state_after: no goals
Theorem: RingQuot.lift_unique
File: Mathlib/Algebra/RingQuot.lean

tactic: ext
state_before: R : Type uR
inst✝⁴ : Semiring R
S : Type uS
inst✝³ : CommSemiring S
T : Type uT
A : Type uA
inst✝² : Semiring A
inst✝¹ : Algebra S A
r✝ : R → R → Prop
inst✝ : Semiring T
f : R →+* T
r : R → R → Prop
w : ∀ ⦃x y : R⦄, r x y → f x = f y
g : RingQuot r →+* T
h : g.comp (mkRingHom r) = f
⊢ g = lift ⟨f, w⟩
state_after: case w.a
R : Type uR
inst✝⁴ : Semiring R
S : Type uS
inst✝³ : CommSemiring S
T : Type uT
A : Type uA
inst✝² : Semiring A
inst✝¹ : Algebra S A
r✝ : R → R → Prop
inst✝ : Semiring T
f : R →+* T
r : R → R → Prop
w : ∀ ⦃x y : R⦄, r x y → f x = f y
g : RingQuot r →+* T
h : g.comp (mkRingHom r) = f
x✝ : R
⊢ (g.comp (mkRingHom r)) x✝ = ((lift ⟨f, w⟩).comp (mkRingHom r)) x✝

tactic: simp [h]
state_before: case w.a
R : Type uR
inst✝⁴ : Semiring R
S : Type uS
inst✝³ : CommSemiring S
T : Type uT
A : Type uA
inst✝² : Semiring A
inst✝¹ : Algebra S A
r✝ : R → R → Prop
inst✝ : Semiring T
f : R →+* T
r : R → R → Prop
w : ∀ ⦃x y : R⦄, r x y → f x = f y
g : RingQuot r →+* T
h : g.comp (mkRingHom r) = f
x✝ : R
⊢ (g.comp (mkRingHom r)) x✝ = ((lift ⟨f, w⟩).comp (mkRingHom r)) x✝
state_after: no goals
Theorem: LinearMap.aeval_self_charpoly
File: Mathlib/LinearAlgebra/Charpoly/Basic.lean

tactic: apply (LinearEquiv.map_eq_zero_iff (algEquivMatrix (chooseBasis R M)).toLinearEquiv).1
state_before: R : Type u
M : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module.Free R M
inst✝ : Module.Finite R M
f : M →ₗ[R] M
⊢ (aeval f) f.charpoly = 0
state_after: R : Type u
M : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module.Free R M
inst✝ : Module.Finite R M
f : M →ₗ[R] M
⊢ (algEquivMatrix (chooseBasis R M)).toLinearEquiv ((aeval f) f.charpoly) = 0

tactic: rw [AlgEquiv.toLinearEquiv_apply, ← AlgEquiv.coe_algHom, ← Polynomial.aeval_algHom_apply _ _ _,
  charpoly_def]
state_before: R : Type u
M : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module.Free R M
inst✝ : Module.Finite R M
f : M →ₗ[R] M
⊢ (algEquivMatrix (chooseBasis R M)).toLinearEquiv ((aeval f) f.charpoly) = 0
state_after: R : Type u
M : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module.Free R M
inst✝ : Module.Finite R M
f : M →ₗ[R] M
⊢ (aeval (↑(algEquivMatrix (chooseBasis R M)) f)) ((toMatrix (chooseBasis R M) (chooseBasis R M)) f).charpoly = 0

tactic: exact Matrix.aeval_self_charpoly _
state_before: R : Type u
M : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module.Free R M
inst✝ : Module.Finite R M
f : M →ₗ[R] M
⊢ (aeval (↑(algEquivMatrix (chooseBasis R M)) f)) ((toMatrix (chooseBasis R M) (chooseBasis R M)) f).charpoly = 0
state_after: no goals
Theorem: CategoryTheory.Groupoid.Free.freeGroupoidFunctor_comp
File: Mathlib/CategoryTheory/Groupoid/FreeGroupoid.lean

tactic: dsimp only [freeGroupoidFunctor]
state_before: V : Type u
inst✝² : Quiver V
V' : Type u'
inst✝¹ : Quiver V'
V'' : Type u''
inst✝ : Quiver V''
φ : V ⥤q V'
φ' : V' ⥤q V''
⊢ freeGroupoidFunctor (φ ⋙q φ') = freeGroupoidFunctor φ ⋙ freeGroupoidFunctor φ'
state_after: V : Type u
inst✝² : Quiver V
V' : Type u'
inst✝¹ : Quiver V'
V'' : Type u''
inst✝ : Quiver V''
φ : V ⥤q V'
φ' : V' ⥤q V''
⊢ lift (φ ⋙q φ' ⋙q of V'') = lift (φ ⋙q of V') ⋙ lift (φ' ⋙q of V'')

tactic: symm
state_before: V : Type u
inst✝² : Quiver V
V' : Type u'
inst✝¹ : Quiver V'
V'' : Type u''
inst✝ : Quiver V''
φ : V ⥤q V'
φ' : V' ⥤q V''
⊢ lift (φ ⋙q φ' ⋙q of V'') = lift (φ ⋙q of V') ⋙ lift (φ' ⋙q of V'')
state_after: V : Type u
inst✝² : Quiver V
V' : Type u'
inst✝¹ : Quiver V'
V'' : Type u''
inst✝ : Quiver V''
φ : V ⥤q V'
φ' : V' ⥤q V''
⊢ lift (φ ⋙q of V') ⋙ lift (φ' ⋙q of V'') = lift (φ ⋙q φ' ⋙q of V'')

tactic: apply lift_unique
state_before: V : Type u
inst✝² : Quiver V
V' : Type u'
inst✝¹ : Quiver V'
V'' : Type u''
inst✝ : Quiver V''
φ : V ⥤q V'
φ' : V' ⥤q V''
⊢ lift (φ ⋙q of V') ⋙ lift (φ' ⋙q of V'') = lift (φ ⋙q φ' ⋙q of V'')
state_after: case hΦ
V : Type u
inst✝² : Quiver V
V' : Type u'
inst✝¹ : Quiver V'
V'' : Type u''
inst✝ : Quiver V''
φ : V ⥤q V'
φ' : V' ⥤q V''
⊢ of V ⋙q (lift (φ ⋙q of V') ⋙ lift (φ' ⋙q of V'')).toPrefunctor = φ ⋙q φ' ⋙q of V''

tactic: rfl
state_before: case hΦ
V : Type u
inst✝² : Quiver V
V' : Type u'
inst✝¹ : Quiver V'
V'' : Type u''
inst✝ : Quiver V''
φ : V ⥤q V'
φ' : V' ⥤q V''
⊢ of V ⋙q (lift (φ ⋙q of V') ⋙ lift (φ' ⋙q of V'')).toPrefunctor = φ ⋙q φ' ⋙q of V''
state_after: no goals
Theorem: Submodule.span_zero_singleton
File: Mathlib/LinearAlgebra/Span.lean

tactic: ext
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x : M
p p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s t : Set M
⊢ span R {0} = ⊥
state_after: case h
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x : M
p p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s t : Set M
x✝ : M
⊢ x✝ ∈ span R {0} ↔ x✝ ∈ ⊥

tactic: simp [mem_span_singleton, eq_comm]
state_before: case h
R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x : M
p p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s t : Set M
x✝ : M
⊢ x✝ ∈ span R {0} ↔ x✝ ∈ ⊥
state_after: no goals
Theorem: Substring.ValidFor.bsize
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: simp [Substring.bsize, Nat.add_sub_cancel_left]
state_before: l m r : List Char
⊢ { str := { data := l ++ m ++ r }, startPos := { byteIdx := utf8Len l },
        stopPos := { byteIdx := utf8Len l + utf8Len m } }.bsize =
    utf8Len m
state_after: no goals