1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MeasureTheory.withDensity_mul₀
File: Mathlib/MeasureTheory/Measure/WithDensity.lean

tactic: ext1 s hs
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f g : α → ℝ≥0∞
hf : AEMeasurable f μ
hg : AEMeasurable g μ
⊢ μ.withDensity (f * g) = (μ.withDensity f).withDensity g
state_after: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f g : α → ℝ≥0∞
hf : AEMeasurable f μ
hg : AEMeasurable g μ
s : Set α
hs : MeasurableSet s
⊢ (μ.withDensity (f * g)) s = ((μ.withDensity f).withDensity g) s

tactic: rw [withDensity_apply _ hs, withDensity_apply _ hs, restrict_withDensity hs,
  lintegral_withDensity_eq_lintegral_mul₀ hf.restrict hg.restrict]
state_before: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f g : α → ℝ≥0∞
hf : AEMeasurable f μ
hg : AEMeasurable g μ
s : Set α
hs : MeasurableSet s
⊢ (μ.withDensity (f * g)) s = ((μ.withDensity f).withDensity g) s
state_after: no goals
Theorem: Monoid.le_minOrder_iff_forall_subgroup
File: Mathlib/GroupTheory/Order/Min.lean

tactic: rw [le_minOrder]
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
n✝ : ℕ
n : ℕ∞
⊢ n ≤ minOrder α ↔ ∀ ⦃s : Subgroup α⦄, s ≠ ⊥ → (↑s).Finite → n ≤ ↑(Nat.card ↥s)
state_after: α : Type u_1
inst✝ : Group α
s : Subgroup α
n✝ : ℕ
n : ℕ∞
⊢ (∀ ⦃a : α⦄, a ≠ 1 → IsOfFinOrder a → n ≤ ↑(orderOf a)) ↔ ∀ ⦃s : Subgroup α⦄, s ≠ ⊥ → (↑s).Finite → n ≤ ↑(Nat.card ↥s)

tactic: refine ⟨fun h s hs hs' ↦ ?_, fun h a ha ha' ↦ ?_⟩
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
n✝ : ℕ
n : ℕ∞
⊢ (∀ ⦃a : α⦄, a ≠ 1 → IsOfFinOrder a → n ≤ ↑(orderOf a)) ↔ ∀ ⦃s : Subgroup α⦄, s ≠ ⊥ → (↑s).Finite → n ≤ ↑(Nat.card ↥s)
state_after: case refine_1
α : Type u_1
inst✝ : Group α
s✝ : Subgroup α
n✝ : ℕ
n : ℕ∞
h : ∀ ⦃a : α⦄, a ≠ 1 → IsOfFinOrder a → n ≤ ↑(orderOf a)
s : Subgroup α
hs : s ≠ ⊥
hs' : (↑s).Finite
⊢ n ≤ ↑(Nat.card ↥s)

case refine_2
α : Type u_1
inst✝ : Group α
s : Subgroup α
n✝ : ℕ
n : ℕ∞
h : ∀ ⦃s : Subgroup α⦄, s ≠ ⊥ → (↑s).Finite → n ≤ ↑(Nat.card ↥s)
a : α
ha : a ≠ 1
ha' : IsOfFinOrder a
⊢ n ≤ ↑(orderOf a)

tactic: obtain ⟨a, has, ha⟩ := s.bot_or_exists_ne_one.resolve_left hs
state_before: case refine_1
α : Type u_1
inst✝ : Group α
s✝ : Subgroup α
n✝ : ℕ
n : ℕ∞
h : ∀ ⦃a : α⦄, a ≠ 1 → IsOfFinOrder a → n ≤ ↑(orderOf a)
s : Subgroup α
hs : s ≠ ⊥
hs' : (↑s).Finite
⊢ n ≤ ↑(Nat.card ↥s)
state_after: case refine_1.intro.intro
α : Type u_1
inst✝ : Group α
s✝ : Subgroup α
n✝ : ℕ
n : ℕ∞
h : ∀ ⦃a : α⦄, a ≠ 1 → IsOfFinOrder a → n ≤ ↑(orderOf a)
s : Subgroup α
hs : s ≠ ⊥
hs' : (↑s).Finite
a : α
has : a ∈ s
ha : a ≠ 1
⊢ n ≤ ↑(Nat.card ↥s)

tactic: exact
  (h ha <| finite_zpowers.1 <| hs'.subset <| zpowers_le.2 has).trans
    (WithTop.coe_le_coe.2 <| s.orderOf_le_card hs' has)
state_before: case refine_1.intro.intro
α : Type u_1
inst✝ : Group α
s✝ : Subgroup α
n✝ : ℕ
n : ℕ∞
h : ∀ ⦃a : α⦄, a ≠ 1 → IsOfFinOrder a → n ≤ ↑(orderOf a)
s : Subgroup α
hs : s ≠ ⊥
hs' : (↑s).Finite
a : α
has : a ∈ s
ha : a ≠ 1
⊢ n ≤ ↑(Nat.card ↥s)
state_after: no goals

tactic: simpa using h (zpowers_ne_bot.2 ha) ha'.finite_zpowers
state_before: case refine_2
α : Type u_1
inst✝ : Group α
s : Subgroup α
n✝ : ℕ
n : ℕ∞
h : ∀ ⦃s : Subgroup α⦄, s ≠ ⊥ → (↑s).Finite → n ≤ ↑(Nat.card ↥s)
a : α
ha : a ≠ 1
ha' : IsOfFinOrder a
⊢ n ≤ ↑(orderOf a)
state_after: no goals
Theorem: Nat.max_log_padicValNat_succ_eq_log_succ
File: Mathlib/NumberTheory/Padics/PadicVal.lean

tactic: apply le_antisymm (max_le (le_log_of_pow_le one_lt_two (pow_log_le_add_one 2 n))
  (padicValNat_le_nat_log (n + 1)))
state_before: p n : ℕ
⊢ max (log 2 n) (padicValNat 2 (n + 1)) = log 2 (n + 1)
state_after: p n : ℕ
⊢ log 2 (n + 1) ≤ max (log 2 n) (padicValNat 2 (n + 1))

tactic: rw [le_max_iff, or_iff_not_imp_left, not_le]
state_before: p n : ℕ
⊢ log 2 (n + 1) ≤ max (log 2 n) (padicValNat 2 (n + 1))
state_after: p n : ℕ
⊢ log 2 n < log 2 (n + 1) → log 2 (n + 1) ≤ padicValNat 2 (n + 1)

tactic: intro h
state_before: p n : ℕ
⊢ log 2 n < log 2 (n + 1) → log 2 (n + 1) ≤ padicValNat 2 (n + 1)
state_after: p n : ℕ
h : log 2 n < log 2 (n + 1)
⊢ log 2 (n + 1) ≤ padicValNat 2 (n + 1)

tactic: replace h := le_antisymm (add_one_le_iff.mpr (lt_pow_of_log_lt one_lt_two h))
  (pow_log_le_self 2 n.succ_ne_zero)
state_before: p n : ℕ
h : log 2 n < log 2 (n + 1)
⊢ log 2 (n + 1) ≤ padicValNat 2 (n + 1)
state_after: p n : ℕ
h : n + 1 = 2 ^ log 2 (n + 1)
⊢ log 2 (n + 1) ≤ padicValNat 2 (n + 1)

tactic: rw [h, padicValNat.prime_pow, ← h]
state_before: p n : ℕ
h : n + 1 = 2 ^ log 2 (n + 1)
⊢ log 2 (n + 1) ≤ padicValNat 2 (n + 1)
state_after: no goals
Theorem: Finpartition.IsEquipartition.filter_ne_average_add_one_eq_average
File: Mathlib/Order/Partition/Equipartition.lean

tactic: ext p
state_before: α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
P : Finpartition s
hP : P.IsEquipartition
⊢ filter (fun p => ¬p.card = s.card / P.parts.card + 1) P.parts =
    filter (fun p => p.card = s.card / P.parts.card) P.parts
state_after: case a
α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
P : Finpartition s
hP : P.IsEquipartition
p : Finset α
⊢ p ∈ filter (fun p => ¬p.card = s.card / P.parts.card + 1) P.parts ↔
    p ∈ filter (fun p => p.card = s.card / P.parts.card) P.parts

tactic: simp only [mem_filter, and_congr_right_iff]
state_before: case a
α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
P : Finpartition s
hP : P.IsEquipartition
p : Finset α
⊢ p ∈ filter (fun p => ¬p.card = s.card / P.parts.card + 1) P.parts ↔
    p ∈ filter (fun p => p.card = s.card / P.parts.card) P.parts
state_after: case a
α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
P : Finpartition s
hP : P.IsEquipartition
p : Finset α
⊢ p ∈ P.parts → (¬p.card = s.card / P.parts.card + 1 ↔ p.card = s.card / P.parts.card)

tactic: exact fun hp ↦ (hP.card_part_eq_average_iff hp).symm
state_before: case a
α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
P : Finpartition s
hP : P.IsEquipartition
p : Finset α
⊢ p ∈ P.parts → (¬p.card = s.card / P.parts.card + 1 ↔ p.card = s.card / P.parts.card)
state_after: no goals
Theorem: Matroid.Base.eq_of_subset_indep
File: Mathlib/Data/Matroid/Basic.lean

tactic: rwa [hB.eq_of_subset_base hB' (hBI.trans hB'I)]
state_before: α : Type u_1
M : Matroid α
B I : Set α
hB : M.Base B
hI : M.Indep I
hBI : B ⊆ I
B' : Set α
hB' : M.Base B'
hB'I : I ⊆ B'
⊢ I ⊆ B
state_after: no goals
Theorem: MeasureTheory.Conservative.ae_mem_imp_frequently_image_mem
File: Mathlib/Dynamics/Ergodic/Conservative.lean

tactic: simp only [frequently_atTop, @forall_swap (_ ∈ s), ae_all_iff]
state_before: ι : Type u_1
α : Type u_2
inst✝ : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Conservative f μ
hs : MeasurableSet s
⊢ ∀ᵐ (x : α) ∂μ, x ∈ s → ∃ᶠ (n : ℕ) in atTop, f^[n] x ∈ s
state_after: ι : Type u_1
α : Type u_2
inst✝ : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Conservative f μ
hs : MeasurableSet s
⊢ ∀ (i : ℕ), ∀ᵐ (a : α) ∂μ, a ∈ s → ∃ b ≥ i, f^[b] a ∈ s

tactic: intro n
state_before: ι : Type u_1
α : Type u_2
inst✝ : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Conservative f μ
hs : MeasurableSet s
⊢ ∀ (i : ℕ), ∀ᵐ (a : α) ∂μ, a ∈ s → ∃ b ≥ i, f^[b] a ∈ s
state_after: ι : Type u_1
α : Type u_2
inst✝ : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Conservative f μ
hs : MeasurableSet s
n : ℕ
⊢ ∀ᵐ (a : α) ∂μ, a ∈ s → ∃ b ≥ n, f^[b] a ∈ s

tactic: filter_upwards [measure_zero_iff_ae_nmem.1 (hf.measure_mem_forall_ge_image_not_mem_eq_zero hs n)]
state_before: ι : Type u_1
α : Type u_2
inst✝ : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Conservative f μ
hs : MeasurableSet s
n : ℕ
⊢ ∀ᵐ (a : α) ∂μ, a ∈ s → ∃ b ≥ n, f^[b] a ∈ s
state_after: case h
ι : Type u_1
α : Type u_2
inst✝ : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Conservative f μ
hs : MeasurableSet s
n : ℕ
⊢ ∀ (a : α), ¬(a ∈ s ∧ ∀ m ≥ n, f^[m] a ∉ s) → a ∈ s → ∃ b ≥ n, f^[b] a ∈ s

tactic: simp
state_before: case h
ι : Type u_1
α : Type u_2
inst✝ : MeasurableSpace α
f : α → α
s : Set α
μ : Measure α
hf : Conservative f μ
hs : MeasurableSet s
n : ℕ
⊢ ∀ (a : α), ¬(a ∈ s ∧ ∀ m ≥ n, f^[m] a ∉ s) → a ∈ s → ∃ b ≥ n, f^[b] a ∈ s
state_after: no goals
Theorem: Primrec.beq
File: Mathlib/Computability/Primrec.lean

tactic: simp [le_antisymm_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
σ : Type u_5
inst✝⁵ : Primcodable α
inst✝⁴ : Primcodable β
inst✝³ : Primcodable γ
inst✝² : Primcodable δ
inst✝¹ : Primcodable σ
inst✝ : DecidableEq α
a : ℕ × ℕ
⊢ (fun x x_1 => x ≤ x_1) a.1 a.2 ∧ (fun x x_1 => x ≤ x_1) a.2 a.1 ↔ (fun a b => a = b) a.1 a.2
state_after: no goals
Theorem: MvQPF.supp_eq
File: Mathlib/Data/QPF/Multivariate/Basic.lean

tactic: ext
state_before: n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
i : Fin2 n
x : F α
⊢ supp x i = {u | ∀ (a : (P F).A) (f : (P F).B a ⟹ α), abs ⟨a, f⟩ = x → u ∈ f i '' univ}
state_after: case h
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
i : Fin2 n
x : F α
x✝ : α i
⊢ x✝ ∈ supp x i ↔ x✝ ∈ {u | ∀ (a : (P F).A) (f : (P F).B a ⟹ α), abs ⟨a, f⟩ = x → u ∈ f i '' univ}

tactic: apply mem_supp
state_before: case h
n : ℕ
F : TypeVec.{u} n → Type u_1
q : MvQPF F
α : TypeVec.{u} n
i : Fin2 n
x : F α
x✝ : α i
⊢ x✝ ∈ supp x i ↔ x✝ ∈ {u | ∀ (a : (P F).A) (f : (P F).B a ⟹ α), abs ⟨a, f⟩ = x → u ∈ f i '' univ}
state_after: no goals
Theorem: LieModule.weightSpaceChain_neg
File: Mathlib/Algebra/Lie/Weights/Chain.lean

tactic: let e : ℤ ≃ ℤ := neg_involutive.toPerm
state_before: R : Type u_1
L : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
inst✝ : LieAlgebra.IsNilpotent R L
χ₁ χ₂ : L → R
p q : ℤ
⊢ weightSpaceChain M (-χ₁) χ₂ (-q) (-p) = weightSpaceChain M χ₁ χ₂ p q
state_after: R : Type u_1
L : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
inst✝ : LieAlgebra.IsNilpotent R L
χ₁ χ₂ : L → R
p q : ℤ
e : ℤ ≃ ℤ := Involutive.toPerm Neg.neg ⋯
⊢ weightSpaceChain M (-χ₁) χ₂ (-q) (-p) = weightSpaceChain M χ₁ χ₂ p q

tactic: simp_rw [weightSpaceChain, ← e.biSup_comp (Ioo p q)]
state_before: R : Type u_1
L : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
inst✝ : LieAlgebra.IsNilpotent R L
χ₁ χ₂ : L → R
p q : ℤ
e : ℤ ≃ ℤ := Involutive.toPerm Neg.neg ⋯
⊢ weightSpaceChain M (-χ₁) χ₂ (-q) (-p) = weightSpaceChain M χ₁ χ₂ p q
state_after: R : Type u_1
L : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
inst✝ : LieAlgebra.IsNilpotent R L
χ₁ χ₂ : L → R
p q : ℤ
e : ℤ ≃ ℤ := Involutive.toPerm Neg.neg ⋯
⊢ ⨆ k ∈ Ioo (-q) (-p), weightSpace M (k • -χ₁ + χ₂) = ⨆ i ∈ ⇑e.symm '' Ioo p q, weightSpace M (e i • χ₁ + χ₂)

tactic: simp [e, -mem_Ioo, neg_mem_Ioo_iff]
state_before: R : Type u_1
L : Type u_2
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
M : Type u_3
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : LieRingModule L M
inst✝¹ : LieModule R L M
inst✝ : LieAlgebra.IsNilpotent R L
χ₁ χ₂ : L → R
p q : ℤ
e : ℤ ≃ ℤ := Involutive.toPerm Neg.neg ⋯
⊢ ⨆ k ∈ Ioo (-q) (-p), weightSpace M (k • -χ₁ + χ₂) = ⨆ i ∈ ⇑e.symm '' Ioo p q, weightSpace M (e i • χ₁ + χ₂)
state_after: no goals
Theorem: PiTensorProduct.mul_comm
File: Mathlib/RingTheory/PiTensorProduct.lean

tactic: suffices mul (R := R) (A := A) = mul.flip from
  DFunLike.congr_fun (DFunLike.congr_fun this x) y
state_before: ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝² : CommSemiring R
inst✝¹ : (i : ι) → CommSemiring (A i)
inst✝ : (i : ι) → Algebra R (A i)
x y : ⨂[R] (i : ι), A i
⊢ (mul x) y = (mul y) x
state_after: ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝² : CommSemiring R
inst✝¹ : (i : ι) → CommSemiring (A i)
inst✝ : (i : ι) → Algebra R (A i)
x y : ⨂[R] (i : ι), A i
⊢ mul = mul.flip

tactic: ext x y
state_before: ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝² : CommSemiring R
inst✝¹ : (i : ι) → CommSemiring (A i)
inst✝ : (i : ι) → Algebra R (A i)
x y : ⨂[R] (i : ι), A i
⊢ mul = mul.flip
state_after: case H.H.H.H
ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝² : CommSemiring R
inst✝¹ : (i : ι) → CommSemiring (A i)
inst✝ : (i : ι) → Algebra R (A i)
x✝ y✝ : ⨂[R] (i : ι), A i
x y : (i : ι) → A i
⊢ (((mul.compMultilinearMap (tprod R)) x).compMultilinearMap (tprod R)) y =
    (((mul.flip.compMultilinearMap (tprod R)) x).compMultilinearMap (tprod R)) y

tactic: dsimp
state_before: case H.H.H.H
ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝² : CommSemiring R
inst✝¹ : (i : ι) → CommSemiring (A i)
inst✝ : (i : ι) → Algebra R (A i)
x✝ y✝ : ⨂[R] (i : ι), A i
x y : (i : ι) → A i
⊢ (((mul.compMultilinearMap (tprod R)) x).compMultilinearMap (tprod R)) y =
    (((mul.flip.compMultilinearMap (tprod R)) x).compMultilinearMap (tprod R)) y
state_after: case H.H.H.H
ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝² : CommSemiring R
inst✝¹ : (i : ι) → CommSemiring (A i)
inst✝ : (i : ι) → Algebra R (A i)
x✝ y✝ : ⨂[R] (i : ι), A i
x y : (i : ι) → A i
⊢ (mul ((tprod R) x)) ((tprod R) y) = (mul ((tprod R) y)) ((tprod R) x)

tactic: simp only [mul_tprod_tprod, mul_tprod_tprod, mul_comm x y]
state_before: case H.H.H.H
ι : Type u_1
R' : Type u_2
R : Type u_3
A : ι → Type u_4
inst✝² : CommSemiring R
inst✝¹ : (i : ι) → CommSemiring (A i)
inst✝ : (i : ι) → Algebra R (A i)
x✝ y✝ : ⨂[R] (i : ι), A i
x y : (i : ι) → A i
⊢ (mul ((tprod R) x)) ((tprod R) y) = (mul ((tprod R) y)) ((tprod R) x)
state_after: no goals
Theorem: left_lt_lineMap_iff_lt
File: Mathlib/LinearAlgebra/AffineSpace/Ordered.lean

tactic: rw [lineMap_apply_zero]
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
h : 0 < r
⊢ a < (lineMap a b) r ↔ (lineMap a b) 0 < (lineMap a b) r
state_after: no goals
Theorem: CategoryTheory.Limits.hasLimitsOfShape_of_equivalence
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

tactic: constructor
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 : J ⥤ C
J' : Type u₂
inst✝¹ : Category.{v₂, u₂} J'
e : J ≌ J'
inst✝ : HasLimitsOfShape J C
⊢ HasLimitsOfShape J' C
state_after: case has_limit
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 : J ⥤ C
J' : Type u₂
inst✝¹ : Category.{v₂, u₂} J'
e : J ≌ J'
inst✝ : HasLimitsOfShape J C
⊢ autoParam (∀ (F : J' ⥤ C), HasLimit F) _auto✝

tactic: intro F
state_before: case has_limit
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 : J ⥤ C
J' : Type u₂
inst✝¹ : Category.{v₂, u₂} J'
e : J ≌ J'
inst✝ : HasLimitsOfShape J C
⊢ autoParam (∀ (F : J' ⥤ C), HasLimit F) _auto✝
state_after: case has_limit
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✝ : J ⥤ C
J' : Type u₂
inst✝¹ : Category.{v₂, u₂} J'
e : J ≌ J'
inst✝ : HasLimitsOfShape J C
F : J' ⥤ C
⊢ HasLimit F

tactic: apply hasLimitOfEquivalenceComp e
state_before: case has_limit
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✝ : J ⥤ C
J' : Type u₂
inst✝¹ : Category.{v₂, u₂} J'
e : J ≌ J'
inst✝ : HasLimitsOfShape J C
F : J' ⥤ C
⊢ HasLimit F
state_after: no goals
Theorem: Finset.erase_insert_eq_erase
File: Mathlib/Data/Finset/Basic.lean

tactic: simp (config := { contextual := true }) only [mem_erase, mem_insert, and_congr_right_iff,
  false_or_iff, iff_self_iff, imp_true_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a✝ b : α
s : Finset α
a x : α
⊢ x ∈ (insert a s).erase a ↔ x ∈ s.erase a
state_after: no goals
Theorem: Matrix.det_smul_adjugate_adjugate
File: Mathlib/LinearAlgebra/Matrix/Adjugate.lean

tactic: have : A * (A.adjugate * A.adjugate.adjugate) =
    A * (A.det ^ (Fintype.card n - 1) • (1 : Matrix n n α)) := by
  rw [← adjugate_mul_distrib, adjugate_mul, adjugate_smul, adjugate_one]
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
⊢ A.det • A.adjugate.adjugate = A.det ^ (Fintype.card n - 1) • A
state_after: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
this : A * (A.adjugate * A.adjugate.adjugate) = A * A.det ^ (Fintype.card n - 1) • 1
⊢ A.det • A.adjugate.adjugate = A.det ^ (Fintype.card n - 1) • A

tactic: rwa [← Matrix.mul_assoc, mul_adjugate, Matrix.mul_smul, Matrix.mul_one, Matrix.smul_mul,
  Matrix.one_mul] at this
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
this : A * (A.adjugate * A.adjugate.adjugate) = A * A.det ^ (Fintype.card n - 1) • 1
⊢ A.det • A.adjugate.adjugate = A.det ^ (Fintype.card n - 1) • A
state_after: no goals

tactic: rw [← adjugate_mul_distrib, adjugate_mul, adjugate_smul, adjugate_one]
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
⊢ A * (A.adjugate * A.adjugate.adjugate) = A * A.det ^ (Fintype.card n - 1) • 1
state_after: no goals
Theorem: RatFunc.laurent_C
File: Mathlib/FieldTheory/Laurent.lean

tactic: rw [← algebraMap_C, laurent_algebraMap, taylor_C]
state_before: R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
x : R
⊢ (laurent r) (C x) = C x
state_after: no goals
Theorem: Finset.truncatedInf_union_left
File: Mathlib/Combinatorics/SetFamily/AhlswedeZhang.lean

tactic: simp only [mem_upperClosure, mem_coe, exists_prop, not_exists, not_and] at ht
state_before: α : Type u_1
β : Type u_2
inst✝⁶ : SemilatticeInf α
inst✝⁵ : BoundedOrder α
inst✝⁴ : DecidableRel fun x x_1 => x ≤ x_1
inst✝³ : SemilatticeInf β
inst✝² : BoundedOrder β
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
inst✝ : DecidableEq α
hs : a ∈ upperClosure ↑s
ht : a ∉ upperClosure ↑t
⊢ (s ∪ t).truncatedInf a = s.truncatedInf a
state_after: α : Type u_1
β : Type u_2
inst✝⁶ : SemilatticeInf α
inst✝⁵ : BoundedOrder α
inst✝⁴ : DecidableRel fun x x_1 => x ≤ x_1
inst✝³ : SemilatticeInf β
inst✝² : BoundedOrder β
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
inst✝ : DecidableEq α
hs : a ∈ upperClosure ↑s
ht : ∀ x ∈ t, ¬x ≤ a
⊢ (s ∪ t).truncatedInf a = s.truncatedInf a

tactic: simp only [truncatedInf_of_mem, hs, filter_union, filter_false_of_mem ht, union_empty,
  upper_aux.2 (Or.inl hs), ht]
state_before: α : Type u_1
β : Type u_2
inst✝⁶ : SemilatticeInf α
inst✝⁵ : BoundedOrder α
inst✝⁴ : DecidableRel fun x x_1 => x ≤ x_1
inst✝³ : SemilatticeInf β
inst✝² : BoundedOrder β
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a : α
inst✝ : DecidableEq α
hs : a ∈ upperClosure ↑s
ht : ∀ x ∈ t, ¬x ≤ a
⊢ (s ∪ t).truncatedInf a = s.truncatedInf a
state_after: no goals
Theorem: Turing.Tape.write_self
File: Mathlib/Computability/TuringMachine.lean

tactic: rintro ⟨⟩
state_before: Γ : Type u_1
inst✝ : Inhabited Γ
⊢ ∀ (T : Tape Γ), write T.head T = T
state_after: case mk
Γ : Type u_1
inst✝ : Inhabited Γ
head✝ : Γ
left✝ right✝ : ListBlank Γ
⊢ write { head := head✝, left := left✝, right := right✝ }.head { head := head✝, left := left✝, right := right✝ } =
    { head := head✝, left := left✝, right := right✝ }

tactic: rfl
state_before: case mk
Γ : Type u_1
inst✝ : Inhabited Γ
head✝ : Γ
left✝ right✝ : ListBlank Γ
⊢ write { head := head✝, left := left✝, right := right✝ }.head { head := head✝, left := left✝, right := right✝ } =
    { head := head✝, left := left✝, right := right✝ }
state_after: no goals
Theorem: ProbabilityTheory.cgf_undef
File: Mathlib/Probability/Moments.lean

tactic: simp only [cgf, mgf_undef hX, log_zero]
state_before: Ω : Type u_1
ι : Type u_2
m : MeasurableSpace Ω
X : Ω → ℝ
p : ℕ
μ : Measure Ω
t : ℝ
hX : ¬Integrable (fun ω => rexp (t * X ω)) μ
⊢ cgf X μ t = 0
state_after: no goals
Theorem: Set.subsingleton_or_nontrivial
File: Mathlib/Data/Set/Subsingleton.lean

tactic: simp [or_iff_not_imp_right]
state_before: α : Type u
a : α
s✝ t s : Set α
⊢ s.Subsingleton ∨ s.Nontrivial
state_after: no goals
Theorem: sup_himp_self_left
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [sup_himp_distrib, himp_self, top_inf_eq]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedHeytingAlgebra α
a✝ b✝ c d a b : α
⊢ a ⊔ b ⇨ a = b ⇨ a
state_after: no goals
Theorem: preimage_find_eq_disjointed
File: Mathlib/Order/Disjointed.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
s : ℕ → Set α
H : ∀ (x : α), ∃ n, x ∈ s n
inst✝ : (x : α) → (n : ℕ) → Decidable (x ∈ s n)
n : ℕ
⊢ (fun x => Nat.find ⋯) ⁻¹' {n} = disjointed s n
state_after: case h
α : Type u_1
β : Type u_2
s : ℕ → Set α
H : ∀ (x : α), ∃ n, x ∈ s n
inst✝ : (x : α) → (n : ℕ) → Decidable (x ∈ s n)
n : ℕ
x : α
⊢ x ∈ (fun x => Nat.find ⋯) ⁻¹' {n} ↔ x ∈ disjointed s n

tactic: simp [Nat.find_eq_iff, disjointed_eq_inter_compl]
state_before: case h
α : Type u_1
β : Type u_2
s : ℕ → Set α
H : ∀ (x : α), ∃ n, x ∈ s n
inst✝ : (x : α) → (n : ℕ) → Decidable (x ∈ s n)
n : ℕ
x : α
⊢ x ∈ (fun x => Nat.find ⋯) ⁻¹' {n} ↔ x ∈ disjointed s n
state_after: no goals
Theorem: iteratedFDerivWithin_apply_eq_iteratedDerivWithin_mul_prod
File: Mathlib/Analysis/Calculus/IteratedDeriv/Defs.lean

tactic: rw [iteratedDerivWithin_eq_iteratedFDerivWithin, ← ContinuousMultilinearMap.map_smul_univ]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n : ℕ
f : 𝕜 → F
s : Set 𝕜
x : 𝕜
m : Fin n → 𝕜
⊢ (iteratedFDerivWithin 𝕜 n f s x) m = (∏ i : Fin n, m i) • iteratedDerivWithin n f s x
state_after: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n : ℕ
f : 𝕜 → F
s : Set 𝕜
x : 𝕜
m : Fin n → 𝕜
⊢ (iteratedFDerivWithin 𝕜 n f s x) m = (iteratedFDerivWithin 𝕜 n f s x) fun i => m i • 1

tactic: simp
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
n : ℕ
f : 𝕜 → F
s : Set 𝕜
x : 𝕜
m : Fin n → 𝕜
⊢ (iteratedFDerivWithin 𝕜 n f s x) m = (iteratedFDerivWithin 𝕜 n f s x) fun i => m i • 1
state_after: no goals
Theorem: CategoryTheory.NonPreadditiveAbelian.lift_map
File: Mathlib/CategoryTheory/Abelian/NonPreadditive.lean

tactic: simp
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
f : X ⟶ Y
⊢ prod.lift (𝟙 X) 0 ≫ prod.map f f = f ≫ prod.lift (𝟙 Y) 0
state_after: no goals
Theorem: Order.Ioc_pred_left_of_not_isMin
File: Mathlib/Order/SuccPred/Basic.lean

tactic: rw [← Ioi_inter_Iic, Ioi_pred_of_not_isMin ha, Ici_inter_Iic]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : PredOrder α
a b : α
ha : ¬IsMin a
⊢ Ioc (pred a) b = Icc a b
state_after: no goals