1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Matrix.StdBasisMatrix.trace_zero
File: Mathlib/Data/Matrix/Basis.lean

tactic: simp [trace, -diag_apply, h]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
R : Type u_4
α : Type u_5
inst✝⁴ : DecidableEq l
inst✝³ : DecidableEq m
inst✝² : DecidableEq n
inst✝¹ : Semiring α
i j : n
c : α
i' j' : n
inst✝ : Fintype n
h : j ≠ i
⊢ (stdBasisMatrix i j c).trace = 0
state_after: no goals
Theorem: IsLocalization.AtPrime.prime_unique_of_minimal
File: Mathlib/RingTheory/Ideal/MinimalPrime.lean

tactic: rw [minimalPrimes_eq_minimals] at hMin
state_before: R : Type u_1
inst✝⁵ : CommSemiring R
I : Ideal R
hI : I.IsPrime
hMin : I ∈ minimalPrimes R
S : Type u_2
inst✝⁴ : CommSemiring S
inst✝³ : Algebra R S
inst✝² : IsLocalization.AtPrime S I
J K : Ideal S
inst✝¹ : J.IsPrime
inst✝ : K.IsPrime
i₁ i₂ : { i // i.IsPrime ∧ i ≤ I }
⊢ ↑i₁ = ↑i₂
state_after: R : Type u_1
inst✝⁵ : CommSemiring R
I : Ideal R
hI : I.IsPrime
hMin : I ∈ minimals (fun x x_1 => x ≤ x_1) (setOf Ideal.IsPrime)
S : Type u_2
inst✝⁴ : CommSemiring S
inst✝³ : Algebra R S
inst✝² : IsLocalization.AtPrime S I
J K : Ideal S
inst✝¹ : J.IsPrime
inst✝ : K.IsPrime
i₁ i₂ : { i // i.IsPrime ∧ i ≤ I }
⊢ ↑i₁ = ↑i₂

tactic: rw [← eq_of_mem_minimals hMin i₁.2.1 i₁.2.2, ← eq_of_mem_minimals hMin i₂.2.1 i₂.2.2]
state_before: R : Type u_1
inst✝⁵ : CommSemiring R
I : Ideal R
hI : I.IsPrime
hMin : I ∈ minimals (fun x x_1 => x ≤ x_1) (setOf Ideal.IsPrime)
S : Type u_2
inst✝⁴ : CommSemiring S
inst✝³ : Algebra R S
inst✝² : IsLocalization.AtPrime S I
J K : Ideal S
inst✝¹ : J.IsPrime
inst✝ : K.IsPrime
i₁ i₂ : { i // i.IsPrime ∧ i ≤ I }
⊢ ↑i₁ = ↑i₂
state_after: no goals
Theorem: PowerBasis.ofGenMemAdjoin'_gen
File: Mathlib/FieldTheory/Minpoly/IsIntegrallyClosed.lean

tactic: simp [PowerBasis.ofGenMemAdjoin']
state_before: R : Type u_1
S : Type u_2
inst✝⁶ : CommRing R
inst✝⁵ : CommRing S
inst✝⁴ : IsDomain R
inst✝³ : Algebra R S
inst✝² : IsDomain S
inst✝¹ : NoZeroSMulDivisors R S
inst✝ : IsIntegrallyClosed R
x : S
B : PowerBasis R S
hint : IsIntegral R x
hx : B.gen ∈ adjoin R {x}
⊢ (B.ofGenMemAdjoin' hint hx).gen = x
state_after: no goals
Theorem: exists_eq_right'
File: Mathlib/Logic/Basic.lean

tactic: simp [@eq_comm _ a']
state_before: α : Sort u_1
β : Sort u_2
p q : α → Prop
a' : α
⊢ (∃ a, p a ∧ a' = a) ↔ p a'
state_after: no goals
Theorem: SameRay.refl
File: Mathlib/LinearAlgebra/Ray.lean

tactic: nontriviality R
state_before: R : Type u_1
inst✝⁵ : StrictOrderedCommSemiring R
M : Type u_2
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type u_3
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type u_4
inst✝ : DecidableEq ι
x✝ y z x : M
⊢ SameRay R x x
state_after: R : Type u_1
inst✝⁶ : StrictOrderedCommSemiring R
M : Type u_2
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
N : Type u_3
inst✝³ : AddCommMonoid N
inst✝² : Module R N
ι : Type u_4
inst✝¹ : DecidableEq ι
x✝ y z x : M
inst✝ : Nontrivial R
⊢ SameRay R x x

tactic: exact Or.inr (Or.inr <| ⟨1, 1, zero_lt_one, zero_lt_one, rfl⟩)
state_before: R : Type u_1
inst✝⁶ : StrictOrderedCommSemiring R
M : Type u_2
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
N : Type u_3
inst✝³ : AddCommMonoid N
inst✝² : Module R N
ι : Type u_4
inst✝¹ : DecidableEq ι
x✝ y z x : M
inst✝ : Nontrivial R
⊢ SameRay R x x
state_after: no goals
Theorem: Matroid.loopyOn_basis_iff
File: Mathlib/Data/Matroid/Constructions.lean

tactic: rintro ⟨rfl, hX⟩
state_before: α : Type u_1
M : Matroid α
E B I X R J : Set α
⊢ I = ∅ ∧ X ⊆ E → (loopyOn E).Basis I X
state_after: case intro
α : Type u_1
M : Matroid α
E B X R J : Set α
hX : X ⊆ E
⊢ (loopyOn E).Basis ∅ X

tactic: rw [basis_iff]
state_before: case intro
α : Type u_1
M : Matroid α
E B X R J : Set α
hX : X ⊆ E
⊢ (loopyOn E).Basis ∅ X
state_after: case intro
α : Type u_1
M : Matroid α
E B X R J : Set α
hX : X ⊆ E
⊢ (loopyOn E).Indep ∅ ∧ ∅ ⊆ X ∧ ∀ (J : Set α), (loopyOn E).Indep J → ∅ ⊆ J → J ⊆ X → ∅ = J

tactic: simp
state_before: case intro
α : Type u_1
M : Matroid α
E B X R J : Set α
hX : X ⊆ E
⊢ (loopyOn E).Indep ∅ ∧ ∅ ⊆ X ∧ ∀ (J : Set α), (loopyOn E).Indep J → ∅ ⊆ J → J ⊆ X → ∅ = J
state_after: no goals
Theorem: Profinite.NobelingProof.GoodProducts.linearIndependent_iff_smaller
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

tactic: rw [GoodProducts.linearIndependent_iff_range,
  ← LinearMap.linearIndependent_iff (πs C o)
  (LinearMap.ker_eq_bot_of_injective (injective_πs _ _)), ← smaller_factorization C o]
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
⊢ LinearIndependent ℤ (eval (π C fun x => ord I x < o)) ↔ LinearIndependent ℤ fun (p : ↑(smaller C o)) => ↑p
state_after: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
⊢ LinearIndependent (ι := ↑(range (π C fun x => ord I x < o))) ℤ ((fun p => ↑p) ∘ (range_equiv_smaller C o).toFun) ↔
    LinearIndependent ℤ fun (p : ↑(smaller C o)) => ↑p

tactic: exact linearIndependent_equiv _
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
o : Ordinal.{u}
⊢ LinearIndependent (ι := ↑(range (π C fun x => ord I x < o))) ℤ ((fun p => ↑p) ∘ (range_equiv_smaller C o).toFun) ↔
    LinearIndependent ℤ fun (p : ↑(smaller C o)) => ↑p
state_after: no goals
Theorem: Polynomial.isNilpotent_aeval_sub_of_isNilpotent_sub
File: Mathlib/RingTheory/Polynomial/Nilpotent.lean

tactic: simp only [← eval_map_algebraMap]
state_before: R✝ : Type u_1
r : R✝
R : Type u_2
S : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : R[X]
a b : S
h : IsNilpotent (a - b)
⊢ IsNilpotent ((aeval a) P - (aeval b) P)
state_after: R✝ : Type u_1
r : R✝
R : Type u_2
S : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : R[X]
a b : S
h : IsNilpotent (a - b)
⊢ IsNilpotent (eval a (map (algebraMap R S) P) - eval b (map (algebraMap R S) P))

tactic: have ⟨c, hc⟩ := evalSubFactor (map (algebraMap R S) P) a b
state_before: R✝ : Type u_1
r : R✝
R : Type u_2
S : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : R[X]
a b : S
h : IsNilpotent (a - b)
⊢ IsNilpotent (eval a (map (algebraMap R S) P) - eval b (map (algebraMap R S) P))
state_after: R✝ : Type u_1
r : R✝
R : Type u_2
S : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : R[X]
a b : S
h : IsNilpotent (a - b)
c : S
hc : eval a (map (algebraMap R S) P) - eval b (map (algebraMap R S) P) = c * (a - b)
⊢ IsNilpotent (eval a (map (algebraMap R S) P) - eval b (map (algebraMap R S) P))

tactic: exact hc ▸ (Commute.all _ _).isNilpotent_mul_right h
state_before: R✝ : Type u_1
r : R✝
R : Type u_2
S : Type u_3
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
P : R[X]
a b : S
h : IsNilpotent (a - b)
c : S
hc : eval a (map (algebraMap R S) P) - eval b (map (algebraMap R S) P) = c * (a - b)
⊢ IsNilpotent (eval a (map (algebraMap R S) P) - eval b (map (algebraMap R S) P))
state_after: no goals
Theorem: Ideal.prod_sup_eq_top
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [sup_comm, sup_prod_eq_top]
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J✝ K L : Ideal R
s : Finset ι
J : ι → Ideal R
h : ∀ i ∈ s, J i ⊔ I = ⊤
⊢ (∏ i ∈ s, J i) ⊔ I = ⊤
state_after: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J✝ K L : Ideal R
s : Finset ι
J : ι → Ideal R
h : ∀ i ∈ s, J i ⊔ I = ⊤
⊢ ∀ i ∈ s, I ⊔ J i = ⊤

tactic: intro i hi
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J✝ K L : Ideal R
s : Finset ι
J : ι → Ideal R
h : ∀ i ∈ s, J i ⊔ I = ⊤
⊢ ∀ i ∈ s, I ⊔ J i = ⊤
state_after: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J✝ K L : Ideal R
s : Finset ι
J : ι → Ideal R
h : ∀ i ∈ s, J i ⊔ I = ⊤
i : ι
hi : i ∈ s
⊢ I ⊔ J i = ⊤

tactic: rw [sup_comm, h i hi]
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J✝ K L : Ideal R
s : Finset ι
J : ι → Ideal R
h : ∀ i ∈ s, J i ⊔ I = ⊤
i : ι
hi : i ∈ s
⊢ I ⊔ J i = ⊤
state_after: no goals
Theorem: Complex.sin_neg
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [sin, sub_eq_add_neg, exp_neg, (neg_div _ _).symm, add_mul]
state_before: x y : ℂ
⊢ sin (-x) = -sin x
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.negAddY_of_X_eq
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rw [addU, neg_neg, div_pow, ← negAddY_of_X_eq' hP hQ hx,
  mul_div_cancel_right₀ _ <| pow_ne_zero 3 <| mul_ne_zero hPz hQz]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → F
hP : W.Equation P
hQ : W.Equation Q
hPz : P z ≠ 0
hQz : Q z ≠ 0
hx : P x * Q z ^ 2 = Q x * P z ^ 2
⊢ W.negAddY P Q = (-addU P Q) ^ 3
state_after: no goals
Theorem: SimpleGraph.TripartiteFromTriangles.Graph.in₀₂_iff'
File: Mathlib/Combinatorics/SimpleGraph/Triangle/Tripartite.lean

tactic: rintro ⟨⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
⊢ (graph t).Adj (in₀ a) (in₂ c) → ∃ x ∈ t, x.1 = a ∧ x.2.2 = c
state_after: case in₀₂
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
b✝ : β
a✝ : (a, b✝, c) ∈ t
⊢ ∃ x ∈ t, x.1 = a ∧ x.2.2 = c

tactic: exact ⟨_, ‹_›, by simp⟩
state_before: case in₀₂
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
b✝ : β
a✝ : (a, b✝, c) ∈ t
⊢ ∃ x ∈ t, x.1 = a ∧ x.2.2 = c
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
b✝ : β
a✝ : (a, b✝, c) ∈ t
⊢ (a, b✝, c).1 = a ∧ (a, b✝, c).2.2 = c
state_after: no goals

tactic: rintro ⟨⟨a, b, c⟩, h, rfl, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
⊢ (∃ x ∈ t, x.1 = a ∧ x.2.2 = c) → (graph t).Adj (in₀ a) (in₂ c)
state_after: case intro.mk.mk.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a' : α
b✝ b' : β
c' : γ
x : α × β × γ
ε : 𝕜
a : α
b : β
c : γ
h : (a, b, c) ∈ t
⊢ (graph t).Adj (in₀ (a, b, c).1) (in₂ (a, b, c).2.2)

tactic: constructor
state_before: case intro.mk.mk.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a' : α
b✝ b' : β
c' : γ
x : α × β × γ
ε : 𝕜
a : α
b : β
c : γ
h : (a, b, c) ∈ t
⊢ (graph t).Adj (in₀ (a, b, c).1) (in₂ (a, b, c).2.2)
state_after: case intro.mk.mk.intro.intro.a
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a' : α
b✝ b' : β
c' : γ
x : α × β × γ
ε : 𝕜
a : α
b : β
c : γ
h : (a, b, c) ∈ t
⊢ ((a, b, c).1, ?intro.mk.mk.intro.intro.b, (a, b, c).2.2) ∈ t

case intro.mk.mk.intro.intro.b
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a' : α
b✝ b' : β
c' : γ
x : α × β × γ
ε : 𝕜
a : α
b : β
c : γ
h : (a, b, c) ∈ t
⊢ β

tactic: assumption
state_before: case intro.mk.mk.intro.intro.a
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a' : α
b✝ b' : β
c' : γ
x : α × β × γ
ε : 𝕜
a : α
b : β
c : γ
h : (a, b, c) ∈ t
⊢ ((a, b, c).1, ?intro.mk.mk.intro.intro.b, (a, b, c).2.2) ∈ t

case intro.mk.mk.intro.intro.b
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a' : α
b✝ b' : β
c' : γ
x : α × β × γ
ε : 𝕜
a : α
b : β
c : γ
h : (a, b, c) ∈ t
⊢ β
state_after: no goals
Theorem: MeasureTheory.lmarginal_erase'
File: Mathlib/MeasureTheory/Integral/Marginal.lean

tactic: simpa [insert_erase hi] using lmarginal_insert' _ hf (not_mem_erase i s)
state_before: δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s t : Finset δ
f✝ g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i✝ : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
i : δ
hi : i ∈ s
⊢ ∫⋯∫⁻_s, f ∂μ = ∫⋯∫⁻_s.erase i, fun x => ∫⁻ (xᵢ : π i), f (update x i xᵢ) ∂μ i ∂μ
state_after: no goals
Theorem: Real.exp_strictMono
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← sub_add_cancel y x, Real.exp_add]
state_before: x✝ y✝ x y : ℝ
h : x < y
⊢ rexp x < rexp y
state_after: x✝ y✝ x y : ℝ
h : x < y
⊢ rexp x < rexp (y - x) * rexp x

tactic: exact (lt_mul_iff_one_lt_left (exp_pos _)).2
    (lt_of_lt_of_le (by linarith) (add_one_le_exp_of_nonneg (by linarith)))
state_before: x✝ y✝ x y : ℝ
h : x < y
⊢ rexp x < rexp (y - x) * rexp x
state_after: no goals

tactic: linarith
state_before: x✝ y✝ x y : ℝ
h : x < y
⊢ 1 < y - x + 1
state_after: no goals

tactic: linarith
state_before: x✝ y✝ x y : ℝ
h : x < y
⊢ 0 ≤ y - x
state_after: no goals
Theorem: toIntermediateField_toSubalgebra
File: Mathlib/FieldTheory/IntermediateField.lean

tactic: ext
state_before: K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S✝ S : IntermediateField K L
⊢ S.toIntermediateField ⋯ = S
state_after: case h
K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S✝ S : IntermediateField K L
x✝ : L
⊢ x✝ ∈ S.toIntermediateField ⋯ ↔ x✝ ∈ S

tactic: rfl
state_before: case h
K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S✝ S : IntermediateField K L
x✝ : L
⊢ x✝ ∈ S.toIntermediateField ⋯ ↔ x✝ ∈ S
state_after: no goals
Theorem: Nat.smoothNumbers_succ
File: Mathlib/NumberTheory/SmoothNumbers.lean

tactic: simp only [smoothNumbers_eq_factoredNumbers, Finset.range_succ, factoredNumbers_insert _ hN]
state_before: N : ℕ
hN : ¬Prime N
⊢ N.succ.smoothNumbers = N.smoothNumbers
state_after: no goals
Theorem: CategoryTheory.Functor.mem_homologicalKernel_iff
File: Mathlib/CategoryTheory/Triangulated/HomologicalFunctor.lean

tactic: simp only [← fun (n : ℤ) => Iso.isZero_iff ((F.isoShift n).app X)]
state_before: C : Type u_1
D : Type u_2
A : Type u_3
inst✝¹⁶ : Category.{u_4, u_1} C
inst✝¹⁵ : HasZeroObject C
inst✝¹⁴ : HasShift C ℤ
inst✝¹³ : Preadditive C
inst✝¹² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹¹ : Pretriangulated C
inst✝¹⁰ : Category.{?u.18451, u_2} D
inst✝⁹ : HasZeroObject D
inst✝⁸ : HasShift D ℤ
inst✝⁷ : Preadditive D
inst✝⁶ : ∀ (n : ℤ), (shiftFunctor D n).Additive
inst✝⁵ : Pretriangulated D
inst✝⁴ : Category.{u_5, u_3} A
inst✝³ : Abelian A
F : C ⥤ A
inst✝² inst✝¹ : F.IsHomological
inst✝ : F.ShiftSequence ℤ
X : C
⊢ F.homologicalKernel.P X ↔ ∀ (n : ℤ), IsZero ((F.shift n).obj X)
state_after: C : Type u_1
D : Type u_2
A : Type u_3
inst✝¹⁶ : Category.{u_4, u_1} C
inst✝¹⁵ : HasZeroObject C
inst✝¹⁴ : HasShift C ℤ
inst✝¹³ : Preadditive C
inst✝¹² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹¹ : Pretriangulated C
inst✝¹⁰ : Category.{?u.18451, u_2} D
inst✝⁹ : HasZeroObject D
inst✝⁸ : HasShift D ℤ
inst✝⁷ : Preadditive D
inst✝⁶ : ∀ (n : ℤ), (shiftFunctor D n).Additive
inst✝⁵ : Pretriangulated D
inst✝⁴ : Category.{u_5, u_3} A
inst✝³ : Abelian A
F : C ⥤ A
inst✝² inst✝¹ : F.IsHomological
inst✝ : F.ShiftSequence ℤ
X : C
⊢ F.homologicalKernel.P X ↔ ∀ (n : ℤ), IsZero ((shiftFunctor C n ⋙ F).obj X)

tactic: rfl
state_before: C : Type u_1
D : Type u_2
A : Type u_3
inst✝¹⁶ : Category.{u_4, u_1} C
inst✝¹⁵ : HasZeroObject C
inst✝¹⁴ : HasShift C ℤ
inst✝¹³ : Preadditive C
inst✝¹² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹¹ : Pretriangulated C
inst✝¹⁰ : Category.{?u.18451, u_2} D
inst✝⁹ : HasZeroObject D
inst✝⁸ : HasShift D ℤ
inst✝⁷ : Preadditive D
inst✝⁶ : ∀ (n : ℤ), (shiftFunctor D n).Additive
inst✝⁵ : Pretriangulated D
inst✝⁴ : Category.{u_5, u_3} A
inst✝³ : Abelian A
F : C ⥤ A
inst✝² inst✝¹ : F.IsHomological
inst✝ : F.ShiftSequence ℤ
X : C
⊢ F.homologicalKernel.P X ↔ ∀ (n : ℤ), IsZero ((shiftFunctor C n ⋙ F).obj X)
state_after: no goals
Theorem: Lagrange.eval_interpolate_not_at_node
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: simp_rw [interpolate_apply, mul_sum, eval_finset_sum, eval_mul, eval_C]
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s : Finset ι
v r : ι → F
i : ι
x : F
hx : ∀ i ∈ s, x ≠ v i
⊢ eval x ((interpolate s v) r) = eval x (nodal s v) * ∑ i ∈ s, nodalWeight s v i * (x - v i)⁻¹ * r i
state_after: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s : Finset ι
v r : ι → F
i : ι
x : F
hx : ∀ i ∈ s, x ≠ v i
⊢ ∑ x_1 ∈ s, r x_1 * eval x (Lagrange.basis s v x_1) =
    ∑ i ∈ s, eval x (nodal s v) * (nodalWeight s v i * (x - v i)⁻¹ * r i)

tactic: refine sum_congr rfl fun i hi => ?_
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s : Finset ι
v r : ι → F
i : ι
x : F
hx : ∀ i ∈ s, x ≠ v i
⊢ ∑ x_1 ∈ s, r x_1 * eval x (Lagrange.basis s v x_1) =
    ∑ i ∈ s, eval x (nodal s v) * (nodalWeight s v i * (x - v i)⁻¹ * r i)
state_after: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s : Finset ι
v r : ι → F
i✝ : ι
x : F
hx : ∀ i ∈ s, x ≠ v i
i : ι
hi : i ∈ s
⊢ r i * eval x (Lagrange.basis s v i) = eval x (nodal s v) * (nodalWeight s v i * (x - v i)⁻¹ * r i)

tactic: rw [← mul_assoc, mul_comm, eval_basis_not_at_node hi (hx _ hi)]
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s : Finset ι
v r : ι → F
i✝ : ι
x : F
hx : ∀ i ∈ s, x ≠ v i
i : ι
hi : i ∈ s
⊢ r i * eval x (Lagrange.basis s v i) = eval x (nodal s v) * (nodalWeight s v i * (x - v i)⁻¹ * r i)
state_after: no goals
Theorem: FirstOrder.Language.exists_elementaryEmbedding_card_eq
File: Mathlib/ModelTheory/Satisfiability.lean

tactic: cases le_or_gt (lift.{w'} κ) (Cardinal.lift.{w} #M) with
| inl h =>
  obtain ⟨N, hN1, hN2⟩ := exists_elementaryEmbedding_card_eq_of_le L M κ h1 h2 h
  exact ⟨N, Or.inl hN1, hN2⟩
| inr h =>
  obtain ⟨N, hN1, hN2⟩ := exists_elementaryEmbedding_card_eq_of_ge L M κ h2 (le_of_lt h)
  exact ⟨N, Or.inr hN1, hN2⟩
state_before: L : Language
T : L.Theory
α : Type w
n : ℕ
M : Type w'
inst✝ : L.Structure M
iM : Infinite M
κ : Cardinal.{w}
h1 : ℵ₀ ≤ κ
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} κ
⊢ ∃ N, (Nonempty (↑N ↪ₑ[L] M) ∨ Nonempty (M ↪ₑ[L] ↑N)) ∧ #↑N = κ
state_after: no goals

tactic: obtain ⟨N, hN1, hN2⟩ := exists_elementaryEmbedding_card_eq_of_le L M κ h1 h2 h
state_before: case inl
L : Language
T : L.Theory
α : Type w
n : ℕ
M : Type w'
inst✝ : L.Structure M
iM : Infinite M
κ : Cardinal.{w}
h1 : ℵ₀ ≤ κ
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} κ
h : lift.{w', w} κ ≤ lift.{w, w'} #M
⊢ ∃ N, (Nonempty (↑N ↪ₑ[L] M) ∨ Nonempty (M ↪ₑ[L] ↑N)) ∧ #↑N = κ
state_after: case inl.intro.intro
L : Language
T : L.Theory
α : Type w
n : ℕ
M : Type w'
inst✝ : L.Structure M
iM : Infinite M
κ : Cardinal.{w}
h1 : ℵ₀ ≤ κ
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} κ
h : lift.{w', w} κ ≤ lift.{w, w'} #M
N : Bundled L.Structure
hN1 : Nonempty (↑N ↪ₑ[L] M)
hN2 : #↑N = κ
⊢ ∃ N, (Nonempty (↑N ↪ₑ[L] M) ∨ Nonempty (M ↪ₑ[L] ↑N)) ∧ #↑N = κ

tactic: exact ⟨N, Or.inl hN1, hN2⟩
state_before: case inl.intro.intro
L : Language
T : L.Theory
α : Type w
n : ℕ
M : Type w'
inst✝ : L.Structure M
iM : Infinite M
κ : Cardinal.{w}
h1 : ℵ₀ ≤ κ
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} κ
h : lift.{w', w} κ ≤ lift.{w, w'} #M
N : Bundled L.Structure
hN1 : Nonempty (↑N ↪ₑ[L] M)
hN2 : #↑N = κ
⊢ ∃ N, (Nonempty (↑N ↪ₑ[L] M) ∨ Nonempty (M ↪ₑ[L] ↑N)) ∧ #↑N = κ
state_after: no goals

tactic: obtain ⟨N, hN1, hN2⟩ := exists_elementaryEmbedding_card_eq_of_ge L M κ h2 (le_of_lt h)
state_before: case inr
L : Language
T : L.Theory
α : Type w
n : ℕ
M : Type w'
inst✝ : L.Structure M
iM : Infinite M
κ : Cardinal.{w}
h1 : ℵ₀ ≤ κ
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} κ
h : lift.{w', w} κ > lift.{w, w'} #M
⊢ ∃ N, (Nonempty (↑N ↪ₑ[L] M) ∨ Nonempty (M ↪ₑ[L] ↑N)) ∧ #↑N = κ
state_after: case inr.intro.intro
L : Language
T : L.Theory
α : Type w
n : ℕ
M : Type w'
inst✝ : L.Structure M
iM : Infinite M
κ : Cardinal.{w}
h1 : ℵ₀ ≤ κ
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} κ
h : lift.{w', w} κ > lift.{w, w'} #M
N : Bundled L.Structure
hN1 : Nonempty (M ↪ₑ[L] ↑N)
hN2 : #↑N = κ
⊢ ∃ N, (Nonempty (↑N ↪ₑ[L] M) ∨ Nonempty (M ↪ₑ[L] ↑N)) ∧ #↑N = κ

tactic: exact ⟨N, Or.inr hN1, hN2⟩
state_before: case inr.intro.intro
L : Language
T : L.Theory
α : Type w
n : ℕ
M : Type w'
inst✝ : L.Structure M
iM : Infinite M
κ : Cardinal.{w}
h1 : ℵ₀ ≤ κ
h2 : lift.{w, max u v} L.card ≤ lift.{max u v, w} κ
h : lift.{w', w} κ > lift.{w, w'} #M
N : Bundled L.Structure
hN1 : Nonempty (M ↪ₑ[L] ↑N)
hN2 : #↑N = κ
⊢ ∃ N, (Nonempty (↑N ↪ₑ[L] M) ∨ Nonempty (M ↪ₑ[L] ↑N)) ∧ #↑N = κ
state_after: no goals
Theorem: Nat.cast_bit1
File: Mathlib/Data/Nat/Cast/Defs.lean

tactic: rw [bit1, cast_add_one, cast_bit0]
state_before: R : Type u_1
inst✝ : AddMonoidWithOne R
n : ℕ
⊢ ↑(bit1 n) = bit1 ↑n
state_after: R : Type u_1
inst✝ : AddMonoidWithOne R
n : ℕ
⊢ bit0 ↑n + 1 = bit1 ↑n

tactic: rfl
state_before: R : Type u_1
inst✝ : AddMonoidWithOne R
n : ℕ
⊢ bit0 ↑n + 1 = bit1 ↑n
state_after: no goals
Theorem: Ordinal.toPGame_le_iff
File: Mathlib/SetTheory/Game/Ordinal.lean

tactic: contrapose
state_before: a b : Ordinal.{u_1}
⊢ a.toPGame ≤ b.toPGame → a ≤ b
state_after: a b : Ordinal.{u_1}
⊢ ¬a ≤ b → ¬a.toPGame ≤ b.toPGame

tactic: rw [not_le, PGame.not_le]
state_before: a b : Ordinal.{u_1}
⊢ ¬a ≤ b → ¬a.toPGame ≤ b.toPGame
state_after: a b : Ordinal.{u_1}
⊢ b < a → b.toPGame ⧏ a.toPGame

tactic: exact toPGame_lf
state_before: a b : Ordinal.{u_1}
⊢ b < a → b.toPGame ⧏ a.toPGame
state_after: no goals
Theorem: MeasureTheory.setIntegral_trim
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

tactic: rwa [integral_trim hm hf_meas, restrict_trim hm μ]
state_before: X✝ : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace X✝
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f✝ g : X✝ → E
s✝ t : Set X✝
μ✝ ν : Measure X✝
l l' : Filter X✝
X : Type u_5
m m0 : MeasurableSpace X
μ : Measure X
hm : m ≤ m0
f : X → E
hf_meas : StronglyMeasurable f
s : Set X
hs : MeasurableSet s
⊢ ∫ (x : X) in s, f x ∂μ = ∫ (x : X) in s, f x ∂μ.trim hm
state_after: no goals