1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Limits.pullback_diagonal_map_snd_snd_fst
File: Mathlib/CategoryTheory/Limits/Shapes/Diagonal.lean

tactic: simp [condition]
state_before: C : Type u_1
inst✝¹ : Category.{?u.324541, u_1} C
X Y Z : C
inst✝ : HasPullbacks C
U V₁ V₂ : C
f : X ⟶ Y
i : U ⟶ Y
i₁ : V₁ ⟶ pullback f i
i₂ : V₂ ⟶ pullback f i
⊢ (i₁ ≫ snd) ≫ i = (i₁ ≫ fst) ≫ f
state_after: no goals

tactic: simp [condition]
state_before: C : Type u_1
inst✝¹ : Category.{?u.324541, u_1} C
X Y Z : C
inst✝ : HasPullbacks C
U V₁ V₂ : C
f : X ⟶ Y
i : U ⟶ Y
i₁ : V₁ ⟶ pullback f i
i₂ : V₂ ⟶ pullback f i
⊢ (i₂ ≫ snd) ≫ i = (i₂ ≫ fst) ≫ f
state_after: no goals

tactic: conv_rhs => rw [← Category.comp_id pullback.fst]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X Y Z : C
inst✝ : HasPullbacks C
U V₁ V₂ : C
f : X ⟶ Y
i : U ⟶ Y
i₁ : V₁ ⟶ pullback f i
i₂ : V₂ ⟶ pullback f i
⊢ snd ≫ snd ≫ i₂ ≫ fst = fst
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X Y Z : C
inst✝ : HasPullbacks C
U V₁ V₂ : C
f : X ⟶ Y
i : U ⟶ Y
i₁ : V₁ ⟶ pullback f i
i₂ : V₂ ⟶ pullback f i
⊢ snd ≫ snd ≫ i₂ ≫ fst = fst ≫ 𝟙 X

tactic: rw [← diagonal_snd f, pullback.condition_assoc, pullback.lift_snd]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X Y Z : C
inst✝ : HasPullbacks C
U V₁ V₂ : C
f : X ⟶ Y
i : U ⟶ Y
i₁ : V₁ ⟶ pullback f i
i₂ : V₂ ⟶ pullback f i
⊢ snd ≫ snd ≫ i₂ ≫ fst = fst ≫ 𝟙 X
state_after: no goals
Theorem: LinearMap.toMvPolynomial_id
File: Mathlib/Algebra/Module/LinearMap/Polynomial.lean

tactic: unfold toMvPolynomial
state_before: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
ι₁ : Type u_4
ι₂ : Type u_5
inst✝⁷ : CommRing R
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : AddCommGroup M₂
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Fintype ι₁
inst✝¹ : Finite ι₂
inst✝ : DecidableEq ι₁
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
⊢ toMvPolynomial b₁ b₁ id = X
state_after: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
ι₁ : Type u_4
ι₂ : Type u_5
inst✝⁷ : CommRing R
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : AddCommGroup M₂
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Fintype ι₁
inst✝¹ : Finite ι₂
inst✝ : DecidableEq ι₁
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
⊢ (fun i => ((toMatrix b₁ b₁) id).toMvPolynomial i) = X

tactic: simp only [toMatrix_id, Matrix.toMvPolynomial_one]
state_before: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
ι₁ : Type u_4
ι₂ : Type u_5
inst✝⁷ : CommRing R
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : AddCommGroup M₂
inst✝⁴ : Module R M₁
inst✝³ : Module R M₂
inst✝² : Fintype ι₁
inst✝¹ : Finite ι₂
inst✝ : DecidableEq ι₁
b₁ : Basis ι₁ R M₁
b₂ : Basis ι₂ R M₂
⊢ (fun i => ((toMatrix b₁ b₁) id).toMvPolynomial i) = X
state_after: no goals
Theorem: FormalMultilinearSeries.norm_changeOriginSeriesTerm
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: simp only [changeOriginSeriesTerm, LinearIsometryEquiv.norm_map]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
s : Finset (Fin (k + l))
hs : s.card = l
⊢ ‖p.changeOriginSeriesTerm k l s hs‖ = ‖p (k + l)‖
state_after: no goals
Theorem: List.TProd.mk_elim
File: Mathlib/Data/Prod/TProd.lean

tactic: simp [elim_mk]
state_before: ι : Type u
α : ι → Type v
i✝ j : ι
l : List ι
f : (i : ι) → α i
inst✝ : DecidableEq ι
hnd : l.Nodup
h : ∀ (i : ι), i ∈ l
v : TProd α l
i : ι
hi : i ∈ l
⊢ (TProd.mk l (TProd.elim' h v)).elim hi = v.elim hi
state_after: no goals
Theorem: Filter.comap_eval_neBot_iff
File: Mathlib/Order/Filter/Basic.lean

tactic: simp [comap_eval_neBot_iff', *]
state_before: α✝ : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
l f✝ f₁ f₂ : Filter α✝
g g₁ g₂ : Filter β
m : α✝ → β
m' : β → γ
s : Set α✝
t : Set β
ι : Type u_2
α : ι → Type u_3
inst✝ : ∀ (j : ι), Nonempty (α j)
i : ι
f : Filter (α i)
⊢ (comap (eval i) f).NeBot ↔ f.NeBot
state_after: no goals
Theorem: MeasureTheory.exists_mem_forall_mem_nhdsWithin_pos_measure
File: Mathlib/MeasureTheory/OuterMeasure/Basic.lean

tactic: contrapose! hs
state_before: α : Type u_1
ι : Type u_2
F : Type u_3
inst✝³ : FunLike F (Set α) ℝ≥0∞
inst✝² : OuterMeasureClass F α
μ : F
s✝ t : Set α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
s : Set α
hs : μ s ≠ 0
⊢ ∃ x ∈ s, ∀ t ∈ 𝓝[s] x, 0 < μ t
state_after: α : Type u_1
ι : Type u_2
F : Type u_3
inst✝³ : FunLike F (Set α) ℝ≥0∞
inst✝² : OuterMeasureClass F α
μ : F
s✝ t : Set α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
s : Set α
hs : ∀ x ∈ s, ∃ t ∈ 𝓝[s] x, μ t ≤ 0
⊢ μ s = 0

tactic: simp only [nonpos_iff_eq_zero] at hs
state_before: α : Type u_1
ι : Type u_2
F : Type u_3
inst✝³ : FunLike F (Set α) ℝ≥0∞
inst✝² : OuterMeasureClass F α
μ : F
s✝ t : Set α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
s : Set α
hs : ∀ x ∈ s, ∃ t ∈ 𝓝[s] x, μ t ≤ 0
⊢ μ s = 0
state_after: α : Type u_1
ι : Type u_2
F : Type u_3
inst✝³ : FunLike F (Set α) ℝ≥0∞
inst✝² : OuterMeasureClass F α
μ : F
s✝ t : Set α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
s : Set α
hs : ∀ x ∈ s, ∃ t ∈ 𝓝[s] x, μ t = 0
⊢ μ s = 0

tactic: exact measure_null_of_locally_null s hs
state_before: α : Type u_1
ι : Type u_2
F : Type u_3
inst✝³ : FunLike F (Set α) ℝ≥0∞
inst✝² : OuterMeasureClass F α
μ : F
s✝ t : Set α
inst✝¹ : TopologicalSpace α
inst✝ : SecondCountableTopology α
s : Set α
hs : ∀ x ∈ s, ∃ t ∈ 𝓝[s] x, μ t = 0
⊢ μ s = 0
state_after: no goals
Theorem: Finset.Ico_union_Ico'
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: rw [← coe_inj, coe_union, coe_Ico, coe_Ico, coe_Ico, Set.Ico_union_Ico' hcb had]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c d : α
hcb : c ≤ b
had : a ≤ d
⊢ Ico a b ∪ Ico c d = Ico (min a c) (max b d)
state_after: no goals
Theorem: compl_sdiff
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [sdiff_eq, himp_eq, compl_inf, compl_compl, sup_comm]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
⊢ (x \ y)ᶜ = x ⇨ y
state_after: no goals
Theorem: Nat.frequently_atTop_fermatPsp
File: Mathlib/NumberTheory/FermatPsp.lean

tactic: refine Filter.frequently_atTop.2 fun n => ?_
state_before: b : ℕ
h : 1 ≤ b
⊢ ∃ᶠ (n : ℕ) in Filter.atTop, n.FermatPsp b
state_after: b : ℕ
h : 1 ≤ b
n : ℕ
⊢ ∃ b_1 ≥ n, b_1.FermatPsp b

tactic: obtain ⟨p, hp⟩ := exists_infinite_pseudoprimes h n
state_before: b : ℕ
h : 1 ≤ b
n : ℕ
⊢ ∃ b_1 ≥ n, b_1.FermatPsp b
state_after: case intro
b : ℕ
h : 1 ≤ b
n p : ℕ
hp : p.FermatPsp b ∧ n ≤ p
⊢ ∃ b_1 ≥ n, b_1.FermatPsp b

tactic: exact ⟨p, hp.2, hp.1⟩
state_before: case intro
b : ℕ
h : 1 ≤ b
n p : ℕ
hp : p.FermatPsp b ∧ n ≤ p
⊢ ∃ b_1 ≥ n, b_1.FermatPsp b
state_after: no goals
Theorem: PadicInt.appr_mono
File: Mathlib/NumberTheory/Padics/RingHoms.lean

tactic: apply monotone_nat_of_le_succ
state_before: p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
⊢ Monotone x.appr
state_after: case hf
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
⊢ ∀ (n : ℕ), x.appr n ≤ x.appr (n + 1)

tactic: intro n
state_before: case hf
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
⊢ ∀ (n : ℕ), x.appr n ≤ x.appr (n + 1)
state_after: case hf
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
n : ℕ
⊢ x.appr n ≤ x.appr (n + 1)

tactic: dsimp [appr]
state_before: case hf
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
n : ℕ
⊢ x.appr n ≤ x.appr (n + 1)
state_after: case hf
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
n : ℕ
⊢ x.appr n ≤
    if hy : x - ↑(x.appr n) = 0 then x.appr n
    else x.appr n + p ^ n * (toZMod (↑(unitCoeff hy) * ↑p ^ ((x - ↑(x.appr n)).valuation - ↑n).natAbs)).val

tactic: split_ifs
state_before: case hf
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
n : ℕ
⊢ x.appr n ≤
    if hy : x - ↑(x.appr n) = 0 then x.appr n
    else x.appr n + p ^ n * (toZMod (↑(unitCoeff hy) * ↑p ^ ((x - ↑(x.appr n)).valuation - ↑n).natAbs)).val
state_after: case pos
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
n : ℕ
h✝ : x - ↑(x.appr n) = 0
⊢ x.appr n ≤ x.appr n

case neg
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
n : ℕ
h✝ : ¬x - ↑(x.appr n) = 0
⊢ x.appr n ≤ x.appr n + p ^ n * (toZMod (↑(unitCoeff h✝) * ↑p ^ ((x - ↑(x.appr n)).valuation - ↑n).natAbs)).val

tactic: apply Nat.le_add_right
state_before: case neg
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
n : ℕ
h✝ : ¬x - ↑(x.appr n) = 0
⊢ x.appr n ≤ x.appr n + p ^ n * (toZMod (↑(unitCoeff h✝) * ↑p ^ ((x - ↑(x.appr n)).valuation - ↑n).natAbs)).val
state_after: no goals

tactic: rfl
state_before: case pos
p : ℕ
hp_prime : Fact (Nat.Prime p)
r : ℚ
x✝ x : ℤ_[p]
n : ℕ
h✝ : x - ↑(x.appr n) = 0
⊢ x.appr n ≤ x.appr n
state_after: no goals
Theorem: CharP.natCast_eq_natCast
File: Mathlib/Algebra/CharP/Defs.lean

tactic: wlog hle : a ≤ b
state_before: R : Type u_1
inst✝² : AddMonoidWithOne R
p : ℕ
inst✝¹ : CharP R p
a b : ℕ
inst✝ : IsRightCancelAdd R
⊢ ↑a = ↑b ↔ a ≡ b [MOD p]
state_after: case inr
R : Type u_1
inst✝² : AddMonoidWithOne R
p : ℕ
inst✝¹ : CharP R p
a b : ℕ
inst✝ : IsRightCancelAdd R
this :
  ∀ (R : Type u_1) [inst : AddMonoidWithOne R] (p : ℕ) [inst_1 : CharP R p] {a b : ℕ} [inst_2 : IsRightCancelAdd R],
    a ≤ b → (↑a = ↑b ↔ a ≡ b [MOD p])
hle : ¬a ≤ b
⊢ ↑a = ↑b ↔ a ≡ b [MOD p]

R✝ : Type u_1
inst✝³ : AddMonoidWithOne R✝
p✝ a✝ b✝ : ℕ
R : Type u_1
inst✝² : AddMonoidWithOne R
p : ℕ
inst✝¹ : CharP R p
a b : ℕ
inst✝ : IsRightCancelAdd R
hle : a ≤ b
⊢ ↑a = ↑b ↔ a ≡ b [MOD p]

tactic: rw [Nat.modEq_iff_dvd' hle, ← cast_eq_zero_iff R p (b - a),
  ← add_right_cancel_iff (G := R) (a := a) (b := b - a), zero_add, ← Nat.cast_add,
  Nat.sub_add_cancel hle, eq_comm]
state_before: R✝ : Type u_1
inst✝³ : AddMonoidWithOne R✝
p✝ a✝ b✝ : ℕ
R : Type u_1
inst✝² : AddMonoidWithOne R
p : ℕ
inst✝¹ : CharP R p
a b : ℕ
inst✝ : IsRightCancelAdd R
hle : a ≤ b
⊢ ↑a = ↑b ↔ a ≡ b [MOD p]
state_after: no goals

tactic: rw [eq_comm, this R p (le_of_not_le hle), Nat.ModEq.comm]
state_before: case inr
R : Type u_1
inst✝² : AddMonoidWithOne R
p : ℕ
inst✝¹ : CharP R p
a b : ℕ
inst✝ : IsRightCancelAdd R
this :
  ∀ (R : Type u_1) [inst : AddMonoidWithOne R] (p : ℕ) [inst_1 : CharP R p] {a b : ℕ} [inst_2 : IsRightCancelAdd R],
    a ≤ b → (↑a = ↑b ↔ a ≡ b [MOD p])
hle : ¬a ≤ b
⊢ ↑a = ↑b ↔ a ≡ b [MOD p]
state_after: no goals
Theorem: CategoryTheory.Limits.biproduct.map_eq
File: Mathlib/CategoryTheory/Preadditive/Biproducts.lean

tactic: ext
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : Preadditive C
J : Type
inst✝² : Fintype J
f✝ : J → C
inst✝¹ : HasBiproduct f✝
inst✝ : HasFiniteBiproducts C
f g : J → C
h : (j : J) → f j ⟶ g j
⊢ map h = ∑ j : J, π f j ≫ h j ≫ ι g j
state_after: case w.w
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : Preadditive C
J : Type
inst✝² : Fintype J
f✝ : J → C
inst✝¹ : HasBiproduct f✝
inst✝ : HasFiniteBiproducts C
f g : J → C
h : (j : J) → f j ⟶ g j
j✝¹ j✝ : J
⊢ ι f j✝ ≫ map h ≫ π g j✝¹ = ι f j✝ ≫ (∑ j : J, π f j ≫ h j ≫ ι g j) ≫ π g j✝¹

tactic: simp [biproduct.ι_π, biproduct.ι_π_assoc, comp_sum, sum_comp, comp_dite, dite_comp]
state_before: case w.w
C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : Preadditive C
J : Type
inst✝² : Fintype J
f✝ : J → C
inst✝¹ : HasBiproduct f✝
inst✝ : HasFiniteBiproducts C
f g : J → C
h : (j : J) → f j ⟶ g j
j✝¹ j✝ : J
⊢ ι f j✝ ≫ map h ≫ π g j✝¹ = ι f j✝ ≫ (∑ j : J, π f j ≫ h j ≫ ι g j) ≫ π g j✝¹
state_after: no goals
Theorem: Real.isLittleO_pow_log_id_atTop
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rw [Asymptotics.isLittleO_iff_tendsto']
state_before: x y : ℝ
n : ℕ
⊢ (fun x => log x ^ n) =o[atTop] id
state_after: x y : ℝ
n : ℕ
⊢ Tendsto (fun x => log x ^ n / id x) atTop (𝓝 0)

x y : ℝ
n : ℕ
⊢ ∀ᶠ (x : ℝ) in atTop, id x = 0 → log x ^ n = 0

tactic: filter_upwards [eventually_ne_atTop (0 : ℝ)] with x h₁ h₂ using (h₁ h₂).elim
state_before: x y : ℝ
n : ℕ
⊢ ∀ᶠ (x : ℝ) in atTop, id x = 0 → log x ^ n = 0
state_after: no goals

tactic: simpa using tendsto_pow_log_div_mul_add_atTop 1 0 n one_ne_zero
state_before: x y : ℝ
n : ℕ
⊢ Tendsto (fun x => log x ^ n / id x) atTop (𝓝 0)
state_after: no goals
Theorem: Equiv.Perm.pow_apply_eq_self_of_apply_eq_self
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: rw [pow_succ, mul_apply, hfx, pow_apply_eq_self_of_apply_eq_self hfx n]
state_before: α : Type u_1
f g h : Perm α
x : α
hfx : f x = x
n : ℕ
⊢ (f ^ (n + 1)) x = x
state_after: no goals
Theorem: IsPrimitiveRoot.zmodEquivZPowers_apply_coe_nat
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: have : (i : ZMod k) = (i : ℤ) := by norm_cast
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝³ : CommMonoid M
inst✝² : CommMonoid N
inst✝¹ : DivisionCommMonoid G
k l : ℕ
inst✝ : CommRing R
ζ : Rˣ
h : IsPrimitiveRoot ζ k
i : ℕ
⊢ h.zmodEquivZPowers ↑i = Additive.ofMul ⟨ζ ^ i, ⋯⟩
state_after: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝³ : CommMonoid M
inst✝² : CommMonoid N
inst✝¹ : DivisionCommMonoid G
k l : ℕ
inst✝ : CommRing R
ζ : Rˣ
h : IsPrimitiveRoot ζ k
i : ℕ
this : ↑i = ↑↑i
⊢ h.zmodEquivZPowers ↑i = Additive.ofMul ⟨ζ ^ i, ⋯⟩

tactic: simp only [this, zmodEquivZPowers_apply_coe_int, zpow_natCast]
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝³ : CommMonoid M
inst✝² : CommMonoid N
inst✝¹ : DivisionCommMonoid G
k l : ℕ
inst✝ : CommRing R
ζ : Rˣ
h : IsPrimitiveRoot ζ k
i : ℕ
this : ↑i = ↑↑i
⊢ h.zmodEquivZPowers ↑i = Additive.ofMul ⟨ζ ^ i, ⋯⟩
state_after: no goals

tactic: norm_cast
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝³ : CommMonoid M
inst✝² : CommMonoid N
inst✝¹ : DivisionCommMonoid G
k l : ℕ
inst✝ : CommRing R
ζ : Rˣ
h : IsPrimitiveRoot ζ k
i : ℕ
⊢ ↑i = ↑↑i
state_after: no goals
Theorem: Matrix.eval_det_add_X_smul
File: Mathlib/LinearAlgebra/Matrix/Charpoly/Coeff.lean

tactic: simp only [eval_det, map_zero, map_add, eval_add, Algebra.smul_def, _root_.map_mul]
state_before: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
A : Matrix n n R[X]
M : Matrix n n R
⊢ eval 0 (A + X • M.map ⇑C).det = eval 0 A.det
state_after: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
A : Matrix n n R[X]
M : Matrix n n R
⊢ (eval 0 (matPolyEquiv A) +
        eval 0 (matPolyEquiv ((algebraMap R[X] (Matrix n n R[X])) X) * matPolyEquiv (M.map ⇑C))).det =
    (eval 0 (matPolyEquiv A)).det

tactic: simp only [Algebra.algebraMap_eq_smul_one, matPolyEquiv_smul_one, map_X, X_mul, eval_mul_X,
  mul_zero, add_zero]
state_before: R : Type u
inst✝³ : CommRing R
n G : Type v
inst✝² : DecidableEq n
inst✝¹ : Fintype n
α β : Type v
inst✝ : DecidableEq α
M✝ : Matrix n n R
A : Matrix n n R[X]
M : Matrix n n R
⊢ (eval 0 (matPolyEquiv A) +
        eval 0 (matPolyEquiv ((algebraMap R[X] (Matrix n n R[X])) X) * matPolyEquiv (M.map ⇑C))).det =
    (eval 0 (matPolyEquiv A)).det
state_after: no goals
Theorem: PresheafOfModules.restrictionApp_id
File: Mathlib/Algebra/Category/ModuleCat/Presheaf.lean

tactic: aesop
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
R : Cᵒᵖ ⥤ RingCat
M : PresheafOfModules R
X : Cᵒᵖ
⊢ restrictionApp (𝟙 X) M = (ModuleCat.restrictScalarsId' (R.map (𝟙 X)) ⋯).inv.app (M.obj X)
state_after: no goals
Theorem: Option.bnot_comp_isSome
File: Mathlib/Data/Option/Basic.lean

tactic: funext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
⊢ (fun x => !x) ∘ isSome = isNone
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
x✝ : Option α
⊢ ((fun x => !x) ∘ isSome) x✝ = x✝.isNone

tactic: simp
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
x✝ : Option α
⊢ ((fun x => !x) ∘ isSome) x✝ = x✝.isNone
state_after: no goals
Theorem: Real.tendsto_log_atTop
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: simpa only [log_exp] using tendsto_id
state_before: x y : ℝ
⊢ Tendsto (fun x => log (rexp x)) atTop atTop
state_after: no goals
Theorem: div_lt_iff'
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [mul_comm, div_lt_iff hc]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
hc : 0 < c
⊢ b / c < a ↔ b < c * a
state_after: no goals
Theorem: RegularSpace.t3Space_iff_t0Space
File: Mathlib/Topology/Separation.lean

tactic: constructor <;> intro <;> infer_instance
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
⊢ T3Space X ↔ T0Space X
state_after: no goals
Theorem: integrable_cexp_quadratic
File: Mathlib/Analysis/SpecialFunctions/Gaussian/FourierTransform.lean

tactic: have : (-b).re < 0 := by simpa using hb
state_before: b : ℂ
hb : 0 < b.re
c d : ℂ
⊢ Integrable (fun x => cexp (-b * ↑x ^ 2 + c * ↑x + d)) volume
state_after: b : ℂ
hb : 0 < b.re
c d : ℂ
this : (-b).re < 0
⊢ Integrable (fun x => cexp (-b * ↑x ^ 2 + c * ↑x + d)) volume

tactic: exact integrable_cexp_quadratic' this c d
state_before: b : ℂ
hb : 0 < b.re
c d : ℂ
this : (-b).re < 0
⊢ Integrable (fun x => cexp (-b * ↑x ^ 2 + c * ↑x + d)) volume
state_after: no goals

tactic: simpa using hb
state_before: b : ℂ
hb : 0 < b.re
c d : ℂ
⊢ (-b).re < 0
state_after: no goals
Theorem: SimpleGraph.isClique_map_image_iff
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

tactic: rw [isClique_map_iff, f.injective.subsingleton_image_iff]
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t : Set α
a b : α
f : α ↪ β
⊢ (SimpleGraph.map f G).IsClique (⇑f '' s) ↔ G.IsClique s
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t : Set α
a b : α
f : α ↪ β
⊢ (s.Subsingleton ∨ ∃ s_1, G.IsClique s_1 ∧ ⇑f '' s_1 = ⇑f '' s) ↔ G.IsClique s

tactic: obtain (hs | hs) := s.subsingleton_or_nontrivial
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t : Set α
a b : α
f : α ↪ β
⊢ (s.Subsingleton ∨ ∃ s_1, G.IsClique s_1 ∧ ⇑f '' s_1 = ⇑f '' s) ↔ G.IsClique s
state_after: case inl
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t : Set α
a b : α
f : α ↪ β
hs : s.Subsingleton
⊢ (s.Subsingleton ∨ ∃ s_1, G.IsClique s_1 ∧ ⇑f '' s_1 = ⇑f '' s) ↔ G.IsClique s

case inr
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t : Set α
a b : α
f : α ↪ β
hs : s.Nontrivial
⊢ (s.Subsingleton ∨ ∃ s_1, G.IsClique s_1 ∧ ⇑f '' s_1 = ⇑f '' s) ↔ G.IsClique s

tactic: simp [or_iff_right hs.not_subsingleton, Set.image_eq_image f.injective]
state_before: case inr
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t : Set α
a b : α
f : α ↪ β
hs : s.Nontrivial
⊢ (s.Subsingleton ∨ ∃ s_1, G.IsClique s_1 ∧ ⇑f '' s_1 = ⇑f '' s) ↔ G.IsClique s
state_after: no goals

tactic: simp [hs, IsClique.of_subsingleton]
state_before: case inl
α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t : Set α
a b : α
f : α ↪ β
hs : s.Subsingleton
⊢ (s.Subsingleton ∨ ∃ s_1, G.IsClique s_1 ∧ ⇑f '' s_1 = ⇑f '' s) ↔ G.IsClique s
state_after: no goals
Theorem: Cardinal.mk_cardinal
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: simpa only [card_type, card_univ] using congr_arg card type_cardinal
state_before: ⊢ #Cardinal.{u} = univ.{u, u + 1}
state_after: no goals
Theorem: Units.map_id
File: Mathlib/Algebra/Group/Units/Hom.lean

tactic: ext
state_before: α : Type u_1
M : Type u
N : Type v
P : Type w
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
⊢ map (MonoidHom.id M) = MonoidHom.id Mˣ
state_after: case h.a
α : Type u_1
M : Type u
N : Type v
P : Type w
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
x✝ : Mˣ
⊢ ↑((map (MonoidHom.id M)) x✝) = ↑((MonoidHom.id Mˣ) x✝)

tactic: rfl
state_before: case h.a
α : Type u_1
M : Type u
N : Type v
P : Type w
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
x✝ : Mˣ
⊢ ↑((map (MonoidHom.id M)) x✝) = ↑((MonoidHom.id Mˣ) x✝)
state_after: no goals
Theorem: Function.mulSupport_extend_one
File: Mathlib/Algebra/Group/Support.lean

tactic: rintro _ ⟨x, hx, rfl⟩
state_before: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
G : Type u_8
inst✝² : One M
inst✝¹ : One N
inst✝ : One P
f : α → M
g : α → N
hf : Injective f
⊢ f '' mulSupport g ⊆ mulSupport (extend f g 1)
state_after: case intro.intro
α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
G : Type u_8
inst✝² : One M
inst✝¹ : One N
inst✝ : One P
f : α → M
g : α → N
hf : Injective f
x : α
hx : x ∈ mulSupport g
⊢ f x ∈ mulSupport (extend f g 1)

tactic: rwa [mem_mulSupport, hf.extend_apply]
state_before: case intro.intro
α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
G : Type u_8
inst✝² : One M
inst✝¹ : One N
inst✝ : One P
f : α → M
g : α → N
hf : Injective f
x : α
hx : x ∈ mulSupport g
⊢ f x ∈ mulSupport (extend f g 1)
state_after: no goals
Theorem: isClosed_setOf_lipschitzOnWith
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: simp only [LipschitzOnWith, setOf_forall]
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
⊢ IsClosed {f | LipschitzOnWith K f s}
state_after: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
⊢ IsClosed (⋂ i ∈ s, ⋂ i_1 ∈ s, {x | edist (x i) (x i_1) ≤ ↑K * edist i i_1})

tactic: refine isClosed_biInter fun x _ => isClosed_biInter fun y _ => isClosed_le ?_ ?_
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
⊢ IsClosed (⋂ i ∈ s, ⋂ i_1 ∈ s, {x | edist (x i) (x i_1) ≤ ↑K * edist i i_1})
state_after: case refine_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
x : α
x✝¹ : x ∈ s
y : α
x✝ : y ∈ s
⊢ Continuous fun x_1 => edist (x_1 x) (x_1 y)

case refine_2
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
x : α
x✝¹ : x ∈ s
y : α
x✝ : y ∈ s
⊢ Continuous fun x_1 => ↑K * edist x y

tactic: exacts [.edist (continuous_apply x) (continuous_apply y), continuous_const]
state_before: case refine_1
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
x : α
x✝¹ : x ∈ s
y : α
x✝ : y ∈ s
⊢ Continuous fun x_1 => edist (x_1 x) (x_1 y)

case refine_2
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
inst✝² : PseudoEMetricSpace α✝
α : Type u_4
β : Type u_5
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
K : ℝ≥0
s : Set α
x : α
x✝¹ : x ∈ s
y : α
x✝ : y ∈ s
⊢ Continuous fun x_1 => ↑K * edist x y
state_after: no goals
Theorem: continuousWithinAt_Ioo_iff_Iio
File: Mathlib/Topology/Order/OrderClosed.lean

tactic: simp only [ContinuousWithinAt, nhdsWithin_Ioo_eq_nhdsWithin_Iio h]
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : ClosedIicTopology α
inst✝ : TopologicalSpace β
a b c : α
f : α → β
h : a < b
⊢ ContinuousWithinAt f (Ioo a b) b ↔ ContinuousWithinAt f (Iio b) b
state_after: no goals
Theorem: Fin.predAbove_last_of_ne_last
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [← exists_castSucc_eq] at hi
state_before: n m : ℕ
i : Fin (n + 2)
hi : i ≠ last (n + 1)
⊢ (last n).predAbove i = i.castPred hi
state_after: n m : ℕ
i : Fin (n + 2)
hi✝ : i ≠ last (n + 1)
hi : ∃ j, j.castSucc = i
⊢ (last n).predAbove i = i.castPred hi✝

tactic: rcases hi with ⟨y, rfl⟩
state_before: n m : ℕ
i : Fin (n + 2)
hi✝ : i ≠ last (n + 1)
hi : ∃ j, j.castSucc = i
⊢ (last n).predAbove i = i.castPred hi✝
state_after: case intro
n m : ℕ
y : Fin (n + 1)
hi : y.castSucc ≠ last (n + 1)
⊢ (last n).predAbove y.castSucc = y.castSucc.castPred hi

tactic: exact predAbove_last_castSucc
state_before: case intro
n m : ℕ
y : Fin (n + 1)
hi : y.castSucc ≠ last (n + 1)
⊢ (last n).predAbove y.castSucc = y.castSucc.castPred hi
state_after: no goals