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

tactic: have := rootMultiplicity_mul_X_sub_C_pow (a := a) (n := n) C.map_one_ne_zero
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n✝ : ℕ
inst✝¹ : CommRing R
inst✝ : Nontrivial R
a : R
n : ℕ
⊢ rootMultiplicity a ((X - C a) ^ n) = n
state_after: R : Type u
S : Type v
T : Type w
a✝ b : R
n✝ : ℕ
inst✝¹ : CommRing R
inst✝ : Nontrivial R
a : R
n : ℕ
this : rootMultiplicity a (C 1 * (X - C a) ^ n) = rootMultiplicity a (C 1) + n
⊢ rootMultiplicity a ((X - C a) ^ n) = n

tactic: rwa [rootMultiplicity_C, map_one, one_mul, zero_add] at this
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n✝ : ℕ
inst✝¹ : CommRing R
inst✝ : Nontrivial R
a : R
n : ℕ
this : rootMultiplicity a (C 1 * (X - C a) ^ n) = rootMultiplicity a (C 1) + n
⊢ rootMultiplicity a ((X - C a) ^ n) = n
state_after: no goals
Theorem: MeasureTheory.Measure.sum_apply₀
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: apply le_antisymm ?_ (le_sum_apply _ _)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f✝ : α → β
f : ι → Measure α
s : Set α
hs : NullMeasurableSet s (sum f)
⊢ (sum f) s = ∑' (i : ι), (f i) s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f✝ : α → β
f : ι → Measure α
s : Set α
hs : NullMeasurableSet s (sum f)
⊢ (sum f) s ≤ ∑' (i : ι), (f i) s

tactic: rcases hs.exists_measurable_subset_ae_eq  with ⟨t, ts, t_meas, ht⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f✝ : α → β
f : ι → Measure α
s : Set α
hs : NullMeasurableSet s (sum f)
⊢ (sum f) s ≤ ∑' (i : ι), (f i) s
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
f✝ : α → β
f : ι → Measure α
s : Set α
hs : NullMeasurableSet s (sum f)
t : Set α
ts : t ⊆ s
t_meas : MeasurableSet t
ht : t =ᶠ[ae (sum f)] s
⊢ (sum f) s ≤ ∑' (i : ι), (f i) s

tactic: calc
sum f s = sum f t := measure_congr ht.symm
_ = ∑' i, f i t := sum_apply _ t_meas
_ ≤ ∑' i, f i s := ENNReal.tsum_le_tsum fun i ↦ measure_mono ts
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
f✝ : α → β
f : ι → Measure α
s : Set α
hs : NullMeasurableSet s (sum f)
t : Set α
ts : t ⊆ s
t_meas : MeasurableSet t
ht : t =ᶠ[ae (sum f)] s
⊢ (sum f) s ≤ ∑' (i : ι), (f i) s
state_after: no goals
Theorem: QuaternionGroup.xa_sq
File: Mathlib/GroupTheory/SpecificGroups/Quaternion.lean

tactic: simp [sq]
state_before: n : ℕ
i : ZMod (2 * n)
⊢ xa i ^ 2 = a ↑n
state_after: no goals
Theorem: ArithmeticFunction.moebius_apply_isPrimePow_not_prime
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: obtain ⟨p, k, hp, hk, rfl⟩ := (isPrimePow_nat_iff _).1 hn
state_before: R : Type u_1
n : ℕ
hn : IsPrimePow n
hn' : ¬Nat.Prime n
⊢ μ n = 0
state_after: case intro.intro.intro.intro
R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : 0 < k
hn : IsPrimePow (p ^ k)
hn' : ¬Nat.Prime (p ^ k)
⊢ μ (p ^ k) = 0

tactic: rw [moebius_apply_prime_pow hp hk.ne', if_neg]
state_before: case intro.intro.intro.intro
R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : 0 < k
hn : IsPrimePow (p ^ k)
hn' : ¬Nat.Prime (p ^ k)
⊢ μ (p ^ k) = 0
state_after: case intro.intro.intro.intro.hnc
R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : 0 < k
hn : IsPrimePow (p ^ k)
hn' : ¬Nat.Prime (p ^ k)
⊢ ¬k = 1

tactic: rintro rfl
state_before: case intro.intro.intro.intro.hnc
R : Type u_1
p k : ℕ
hp : Nat.Prime p
hk : 0 < k
hn : IsPrimePow (p ^ k)
hn' : ¬Nat.Prime (p ^ k)
⊢ ¬k = 1
state_after: case intro.intro.intro.intro.hnc
R : Type u_1
p : ℕ
hp : Nat.Prime p
hk : 0 < 1
hn : IsPrimePow (p ^ 1)
hn' : ¬Nat.Prime (p ^ 1)
⊢ False

tactic: exact hn' (by simpa)
state_before: case intro.intro.intro.intro.hnc
R : Type u_1
p : ℕ
hp : Nat.Prime p
hk : 0 < 1
hn : IsPrimePow (p ^ 1)
hn' : ¬Nat.Prime (p ^ 1)
⊢ False
state_after: no goals

tactic: simpa
state_before: R : Type u_1
p : ℕ
hp : Nat.Prime p
hk : 0 < 1
hn : IsPrimePow (p ^ 1)
hn' : ¬Nat.Prime (p ^ 1)
⊢ Nat.Prime (p ^ 1)
state_after: no goals
Theorem: Matrix.Represents.zero
File: Mathlib/LinearAlgebra/Matrix/Charpoly/LinearMap.lean

tactic: delta Matrix.Represents
state_before: ι : Type u_1
inst✝⁴ : Fintype ι
M : Type u_2
inst✝³ : AddCommGroup M
R : Type u_3
inst✝² : CommRing R
inst✝¹ : Module R M
I : Ideal R
b : ι → M
hb : Submodule.span R (Set.range b) = ⊤
inst✝ : DecidableEq ι
⊢ Represents b 0 0
state_after: ι : Type u_1
inst✝⁴ : Fintype ι
M : Type u_2
inst✝³ : AddCommGroup M
R : Type u_3
inst✝² : CommRing R
inst✝¹ : Module R M
I : Ideal R
b : ι → M
hb : Submodule.span R (Set.range b) = ⊤
inst✝ : DecidableEq ι
⊢ (PiToModule.fromMatrix R b) 0 = (PiToModule.fromEnd R b) 0

tactic: rw [map_zero, map_zero]
state_before: ι : Type u_1
inst✝⁴ : Fintype ι
M : Type u_2
inst✝³ : AddCommGroup M
R : Type u_3
inst✝² : CommRing R
inst✝¹ : Module R M
I : Ideal R
b : ι → M
hb : Submodule.span R (Set.range b) = ⊤
inst✝ : DecidableEq ι
⊢ (PiToModule.fromMatrix R b) 0 = (PiToModule.fromEnd R b) 0
state_after: no goals
Theorem: Set.Finite.toFinset_symmDiff
File: Mathlib/Data/Set/Finite.lean

tactic: ext
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs✝ : s.Finite
ht✝ : t.Finite
inst✝ : DecidableEq α
hs : s.Finite
ht : t.Finite
h : (s ∆ t).Finite
⊢ h.toFinset = hs.toFinset ∆ ht.toFinset
state_after: case a
α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs✝ : s.Finite
ht✝ : t.Finite
inst✝ : DecidableEq α
hs : s.Finite
ht : t.Finite
h : (s ∆ t).Finite
a✝ : α
⊢ a✝ ∈ h.toFinset ↔ a✝ ∈ hs.toFinset ∆ ht.toFinset

tactic: simp [mem_symmDiff, Finset.mem_symmDiff]
state_before: case a
α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
a : α
hs✝ : s.Finite
ht✝ : t.Finite
inst✝ : DecidableEq α
hs : s.Finite
ht : t.Finite
h : (s ∆ t).Finite
a✝ : α
⊢ a✝ ∈ h.toFinset ↔ a✝ ∈ hs.toFinset ∆ ht.toFinset
state_after: no goals
Theorem: PiLp.infty_equiv_isometry
File: Mathlib/Analysis/NormedSpace/PiLp.lean

tactic: simpa only [ENNReal.coe_one, one_mul] using lipschitzWith_equiv ∞ β x y
state_before: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝² : Fact (1 ≤ p)
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
x y : WithLp ⊤ ((i : ι) → β i)
⊢ edist ((WithLp.equiv ⊤ ((i : ι) → β i)) x) ((WithLp.equiv ⊤ ((i : ι) → β i)) y) ≤ edist x y
state_after: no goals

tactic: simpa only [ENNReal.div_top, ENNReal.zero_toReal, NNReal.rpow_zero, ENNReal.coe_one,
  one_mul] using antilipschitzWith_equiv ∞ β x y
state_before: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝² : Fact (1 ≤ p)
inst✝¹ : Fintype ι
inst✝ : (i : ι) → PseudoEMetricSpace (β i)
x y : WithLp ⊤ ((i : ι) → β i)
⊢ edist x y ≤ edist ((WithLp.equiv ⊤ ((i : ι) → β i)) x) ((WithLp.equiv ⊤ ((i : ι) → β i)) y)
state_after: no goals
Theorem: wittStructureRat_rec
File: Mathlib/RingTheory/WittVector/StructurePolynomial.lean

tactic: calc
  wittStructureRat p Φ n = C (1 / (p : ℚ) ^ n) * (wittStructureRat p Φ n * C ((p : ℚ) ^ n)) := ?_
  _ = _ := by rw [wittStructureRat_rec_aux]
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
n : ℕ
⊢ wittStructureRat p Φ n =
    C (1 / ↑p ^ n) *
      ((bind₁ fun b => (rename fun i => (b, i)) (W_ ℚ n)) Φ -
        ∑ i ∈ Finset.range n, C (↑p ^ i) * wittStructureRat p Φ i ^ p ^ (n - i))
state_after: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
n : ℕ
⊢ wittStructureRat p Φ n = C (1 / ↑p ^ n) * (wittStructureRat p Φ n * C (↑p ^ n))

tactic: rw [mul_left_comm, ← C_mul, div_mul_cancel₀, C_1, mul_one]
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
n : ℕ
⊢ wittStructureRat p Φ n = C (1 / ↑p ^ n) * (wittStructureRat p Φ n * C (↑p ^ n))
state_after: case h
p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
n : ℕ
⊢ ↑p ^ n ≠ 0

tactic: exact pow_ne_zero _ (Nat.cast_ne_zero.2 hp.1.ne_zero)
state_before: case h
p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
n : ℕ
⊢ ↑p ^ n ≠ 0
state_after: no goals

tactic: rw [wittStructureRat_rec_aux]
state_before: p : ℕ
R : Type u_1
idx : Type u_2
inst✝ : CommRing R
hp : Fact (Nat.Prime p)
Φ : MvPolynomial idx ℚ
n : ℕ
⊢ C (1 / ↑p ^ n) * (wittStructureRat p Φ n * C (↑p ^ n)) =
    C (1 / ↑p ^ n) *
      ((bind₁ fun b => (rename fun i => (b, i)) (W_ ℚ n)) Φ -
        ∑ i ∈ Finset.range n, C (↑p ^ i) * wittStructureRat p Φ i ^ p ^ (n - i))
state_after: no goals
Theorem: Matrix.rank_le_card_height
File: Mathlib/Data/Matrix/Rank.lean

tactic: haveI : Module.Finite R (m → R) := Module.Finite.pi
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝⁴ : Fintype n
inst✝³ : Fintype o
inst✝² : CommRing R
inst✝¹ : Fintype m
inst✝ : StrongRankCondition R
A : Matrix m n R
⊢ A.rank ≤ Fintype.card m
state_after: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝⁴ : Fintype n
inst✝³ : Fintype o
inst✝² : CommRing R
inst✝¹ : Fintype m
inst✝ : StrongRankCondition R
A : Matrix m n R
this : Module.Finite R (m → R)
⊢ A.rank ≤ Fintype.card m

tactic: haveI : Module.Free R (m → R) := Module.Free.pi _ _
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝⁴ : Fintype n
inst✝³ : Fintype o
inst✝² : CommRing R
inst✝¹ : Fintype m
inst✝ : StrongRankCondition R
A : Matrix m n R
this : Module.Finite R (m → R)
⊢ A.rank ≤ Fintype.card m
state_after: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝⁴ : Fintype n
inst✝³ : Fintype o
inst✝² : CommRing R
inst✝¹ : Fintype m
inst✝ : StrongRankCondition R
A : Matrix m n R
this✝ : Module.Finite R (m → R)
this : Module.Free R (m → R)
⊢ A.rank ≤ Fintype.card m

tactic: exact (Submodule.finrank_le _).trans (finrank_pi R).le
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
inst✝⁴ : Fintype n
inst✝³ : Fintype o
inst✝² : CommRing R
inst✝¹ : Fintype m
inst✝ : StrongRankCondition R
A : Matrix m n R
this✝ : Module.Finite R (m → R)
this : Module.Free R (m → R)
⊢ A.rank ≤ Fintype.card m
state_after: no goals
Theorem: FirstOrder.Language.Equiv.comp_right_injective
File: Mathlib/ModelTheory/Basic.lean

tactic: intro f g hfg
state_before: L : Language
L' : Language
M : Type w
N : Type w'
inst✝³ : L.Structure M
inst✝² : L.Structure N
P : Type u_1
inst✝¹ : L.Structure P
Q : Type u_2
inst✝ : L.Structure Q
h : M ≃[L] N
⊢ Function.Injective fun f => f.comp h
state_after: L : Language
L' : Language
M : Type w
N : Type w'
inst✝³ : L.Structure M
inst✝² : L.Structure N
P : Type u_1
inst✝¹ : L.Structure P
Q : Type u_2
inst✝ : L.Structure Q
h : M ≃[L] N
f g : N ≃[L] P
hfg : (fun f => f.comp h) f = (fun f => f.comp h) g
⊢ f = g

tactic: convert (congr_arg (fun r : (M ≃[L] P) ↦ r.comp h.symm) hfg) <;>
  rw [comp_assoc, self_comp_symm, comp_refl]
state_before: L : Language
L' : Language
M : Type w
N : Type w'
inst✝³ : L.Structure M
inst✝² : L.Structure N
P : Type u_1
inst✝¹ : L.Structure P
Q : Type u_2
inst✝ : L.Structure Q
h : M ≃[L] N
f g : N ≃[L] P
hfg : (fun f => f.comp h) f = (fun f => f.comp h) g
⊢ f = g
state_after: no goals
Theorem: CategoryTheory.IsPushout.of_isColimit
File: Mathlib/CategoryTheory/Limits/Shapes/CommSq.lean

tactic: aesop_cat
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
Z X Y P : C
f : Z ⟶ X
g : Z ⟶ Y
inl : X ⟶ P
inr : Y ⟶ P
c : PushoutCocone f g
h : IsColimit c
⊢ c.inl ≫ (Iso.refl c.pt).hom = (PushoutCocone.mk c.inl c.inr ⋯).inl
state_after: no goals

tactic: aesop_cat
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
Z X Y P : C
f : Z ⟶ X
g : Z ⟶ Y
inl : X ⟶ P
inr : Y ⟶ P
c : PushoutCocone f g
h : IsColimit c
⊢ c.inr ≫ (Iso.refl c.pt).hom = (PushoutCocone.mk c.inl c.inr ⋯).inr
state_after: no goals
Theorem: Finset.pairwiseDisjoint_map_sigmaMk
File: Mathlib/Data/Finset/Sigma.lean

tactic: intro i _ j _ hij
state_before: ι : Type u_1
α : ι → Type u_2
β : Type u_3
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
⊢ (↑s).PairwiseDisjoint fun i => map (Embedding.sigmaMk i) (t i)
state_after: ι : Type u_1
α : ι → Type u_2
β : Type u_3
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
i : ι
a✝¹ : i ∈ ↑s
j : ι
a✝ : j ∈ ↑s
hij : i ≠ j
⊢ (_root_.Disjoint on fun i => map (Embedding.sigmaMk i) (t i)) i j

tactic: rw [Function.onFun, disjoint_left]
state_before: ι : Type u_1
α : ι → Type u_2
β : Type u_3
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
i : ι
a✝¹ : i ∈ ↑s
j : ι
a✝ : j ∈ ↑s
hij : i ≠ j
⊢ (_root_.Disjoint on fun i => map (Embedding.sigmaMk i) (t i)) i j
state_after: ι : Type u_1
α : ι → Type u_2
β : Type u_3
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
i : ι
a✝¹ : i ∈ ↑s
j : ι
a✝ : j ∈ ↑s
hij : i ≠ j
⊢ ∀ ⦃a : (x : ι) × α x⦄, a ∈ map (Embedding.sigmaMk i) (t i) → a ∉ map (Embedding.sigmaMk j) (t j)

tactic: simp_rw [mem_map, Function.Embedding.sigmaMk_apply]
state_before: ι : Type u_1
α : ι → Type u_2
β : Type u_3
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
i : ι
a✝¹ : i ∈ ↑s
j : ι
a✝ : j ∈ ↑s
hij : i ≠ j
⊢ ∀ ⦃a : (x : ι) × α x⦄, a ∈ map (Embedding.sigmaMk i) (t i) → a ∉ map (Embedding.sigmaMk j) (t j)
state_after: ι : Type u_1
α : ι → Type u_2
β : Type u_3
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
i : ι
a✝¹ : i ∈ ↑s
j : ι
a✝ : j ∈ ↑s
hij : i ≠ j
⊢ ∀ ⦃a : (x : ι) × α x⦄, (∃ a_1 ∈ t i, ⟨i, a_1⟩ = a) → ¬∃ a_2 ∈ t j, ⟨j, a_2⟩ = a

tactic: rintro _ ⟨y, _, rfl⟩ ⟨z, _, hz'⟩
state_before: ι : Type u_1
α : ι → Type u_2
β : Type u_3
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
i : ι
a✝¹ : i ∈ ↑s
j : ι
a✝ : j ∈ ↑s
hij : i ≠ j
⊢ ∀ ⦃a : (x : ι) × α x⦄, (∃ a_1 ∈ t i, ⟨i, a_1⟩ = a) → ¬∃ a_2 ∈ t j, ⟨j, a_2⟩ = a
state_after: case intro.intro.intro.intro
ι : Type u_1
α : ι → Type u_2
β : Type u_3
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
i : ι
a✝¹ : i ∈ ↑s
j : ι
a✝ : j ∈ ↑s
hij : i ≠ j
y : α i
left✝¹ : y ∈ t i
z : α j
left✝ : z ∈ t j
hz' : ⟨j, z⟩ = ⟨i, y⟩
⊢ False

tactic: exact hij (congr_arg Sigma.fst hz'.symm)
state_before: case intro.intro.intro.intro
ι : Type u_1
α : ι → Type u_2
β : Type u_3
s s₁ s₂ : Finset ι
t t₁ t₂ : (i : ι) → Finset (α i)
i : ι
a✝¹ : i ∈ ↑s
j : ι
a✝ : j ∈ ↑s
hij : i ≠ j
y : α i
left✝¹ : y ∈ t i
z : α j
left✝ : z ∈ t j
hz' : ⟨j, z⟩ = ⟨i, y⟩
⊢ False
state_after: no goals
Theorem: Nat.Prime.properDivisors
File: Mathlib/NumberTheory/Divisors.lean

tactic: rw [← erase_insert properDivisors.not_self_mem, insert_self_properDivisors pp.ne_zero,
  pp.divisors, pair_comm, erase_insert fun con => pp.ne_one (mem_singleton.1 con)]
state_before: n p : ℕ
pp : Prime p
⊢ p.properDivisors = {1}
state_after: no goals
Theorem: Real.mk_le
File: Mathlib/Data/Real/Basic.lean

tactic: simp only [le_def', mk_lt, mk_eq]
state_before: x y : ℝ
f g : CauSeq ℚ abs
⊢ mk f ≤ mk g ↔ f ≤ g
state_after: x y : ℝ
f g : CauSeq ℚ abs
⊢ f < g ∨ f ≈ g ↔ f ≤ g

tactic: rfl
state_before: x y : ℝ
f g : CauSeq ℚ abs
⊢ f < g ∨ f ≈ g ↔ f ≤ g
state_after: no goals
Theorem: Multiset.filter_singleton
File: Mathlib/Data/Multiset/Basic.lean

tactic: simp only [singleton, filter_cons, filter_zero, add_zero, empty_eq_zero]
state_before: α : Type u_1
β : Type v
γ : Type u_2
p✝ : α → Prop
inst✝¹ : DecidablePred p✝
a : α
p : α → Prop
inst✝ : DecidablePred p
⊢ filter p {a} = if p a then {a} else ∅
state_after: no goals
Theorem: List.tail_drop
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp
state_before: case nil
α : Type u_1
n : Nat
⊢ (drop n []).tail = drop (n + 1) []
state_after: no goals

tactic: cases n
state_before: case cons
α : Type u_1
hd : α
tl : List α
hl : ∀ (n : Nat), (drop n tl).tail = drop (n + 1) tl
n : Nat
⊢ (drop n (hd :: tl)).tail = drop (n + 1) (hd :: tl)
state_after: case cons.zero
α : Type u_1
hd : α
tl : List α
hl : ∀ (n : Nat), (drop n tl).tail = drop (n + 1) tl
⊢ (drop 0 (hd :: tl)).tail = drop (0 + 1) (hd :: tl)

case cons.succ
α : Type u_1
hd : α
tl : List α
hl : ∀ (n : Nat), (drop n tl).tail = drop (n + 1) tl
n✝ : Nat
⊢ (drop (n✝ + 1) (hd :: tl)).tail = drop (n✝ + 1 + 1) (hd :: tl)

tactic: simp
state_before: case cons.zero
α : Type u_1
hd : α
tl : List α
hl : ∀ (n : Nat), (drop n tl).tail = drop (n + 1) tl
⊢ (drop 0 (hd :: tl)).tail = drop (0 + 1) (hd :: tl)
state_after: no goals

tactic: simp [hl]
state_before: case cons.succ
α : Type u_1
hd : α
tl : List α
hl : ∀ (n : Nat), (drop n tl).tail = drop (n + 1) tl
n✝ : Nat
⊢ (drop (n✝ + 1) (hd :: tl)).tail = drop (n✝ + 1 + 1) (hd :: tl)
state_after: no goals
Theorem: eq_iff_eq_of_div_eq_div
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [← div_eq_one, H, div_eq_one]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Group G
a b c d : G
n : ℤ
H : a / b = c / d
⊢ a = b ↔ c = d
state_after: no goals
Theorem: MvPolynomial.sum_def
File: Mathlib/Algebra/MvPolynomial/Basic.lean

tactic: simp [support, Finsupp.sum, coeff]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
inst✝¹ : CommSemiring S₁
p✝ q : MvPolynomial σ R
A : Type u_2
inst✝ : AddCommMonoid A
p : MvPolynomial σ R
b : (σ →₀ ℕ) → R → A
⊢ sum p b = ∑ m ∈ p.support, b m (coeff m p)
state_after: no goals
Theorem: Finsupp.equivMapDomain_single
File: Mathlib/Data/Finsupp/Basic.lean

tactic: classical
  ext x
  simp only [single_apply, Equiv.apply_eq_iff_eq_symm_apply, equivMapDomain_apply]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ≃ β
a : α
b : M
⊢ equivMapDomain f (single a b) = single (f a) b
state_after: no goals

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ≃ β
a : α
b : M
⊢ equivMapDomain f (single a b) = single (f a) b
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ≃ β
a : α
b : M
x : β
⊢ (equivMapDomain f (single a b)) x = (single (f a) b) x

tactic: simp only [single_apply, Equiv.apply_eq_iff_eq_symm_apply, equivMapDomain_apply]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : Zero M
f : α ≃ β
a : α
b : M
x : β
⊢ (equivMapDomain f (single a b)) x = (single (f a) b) x
state_after: no goals
Theorem: List.Chain.imp'
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: constructor
state_before: case nil
α : Type u_1
R S : α → α → Prop
HRS : ∀ ⦃a b : α⦄, R a b → S a b
a : α
l : List α
a✝ b : α
Hab : ∀ ⦃c : α⦄, R a✝ c → S b c
⊢ Chain S b []
state_after: no goals

tactic: constructor
state_before: case cons
α : Type u_1
R S : α → α → Prop
HRS : ∀ ⦃a b : α⦄, R a b → S a b
a : α
l : List α
a✝¹ b✝ : α
l✝ : List α
r : R a✝¹ b✝
a✝ : Chain R b✝ l✝
ih : ∀ {b : α}, (∀ ⦃c : α⦄, R b✝ c → S b c) → Chain S b l✝
b : α
Hab : ∀ ⦃c : α⦄, R a✝¹ c → S b c
⊢ Chain S b (b✝ :: l✝)
state_after: case cons.a
α : Type u_1
R S : α → α → Prop
HRS : ∀ ⦃a b : α⦄, R a b → S a b
a : α
l : List α
a✝¹ b✝ : α
l✝ : List α
r : R a✝¹ b✝
a✝ : Chain R b✝ l✝
ih : ∀ {b : α}, (∀ ⦃c : α⦄, R b✝ c → S b c) → Chain S b l✝
b : α
Hab : ∀ ⦃c : α⦄, R a✝¹ c → S b c
⊢ S b b✝

case cons.a
α : Type u_1
R S : α → α → Prop
HRS : ∀ ⦃a b : α⦄, R a b → S a b
a : α
l : List α
a✝¹ b✝ : α
l✝ : List α
r : R a✝¹ b✝
a✝ : Chain R b✝ l✝
ih : ∀ {b : α}, (∀ ⦃c : α⦄, R b✝ c → S b c) → Chain S b l✝
b : α
Hab : ∀ ⦃c : α⦄, R a✝¹ c → S b c
⊢ Chain S b✝ l✝

tactic: exact Hab r
state_before: case cons.a
α : Type u_1
R S : α → α → Prop
HRS : ∀ ⦃a b : α⦄, R a b → S a b
a : α
l : List α
a✝¹ b✝ : α
l✝ : List α
r : R a✝¹ b✝
a✝ : Chain R b✝ l✝
ih : ∀ {b : α}, (∀ ⦃c : α⦄, R b✝ c → S b c) → Chain S b l✝
b : α
Hab : ∀ ⦃c : α⦄, R a✝¹ c → S b c
⊢ S b b✝
state_after: no goals

tactic: exact ih (@HRS _)
state_before: case cons.a
α : Type u_1
R S : α → α → Prop
HRS : ∀ ⦃a b : α⦄, R a b → S a b
a : α
l : List α
a✝¹ b✝ : α
l✝ : List α
r : R a✝¹ b✝
a✝ : Chain R b✝ l✝
ih : ∀ {b : α}, (∀ ⦃c : α⦄, R b✝ c → S b c) → Chain S b l✝
b : α
Hab : ∀ ⦃c : α⦄, R a✝¹ c → S b c
⊢ Chain S b✝ l✝
state_after: no goals
Theorem: Matrix.det_isEmpty
File: Mathlib/LinearAlgebra/Matrix/Determinant/Basic.lean

tactic: simp [det_apply]
state_before: m : Type u_1
n : Type u_2
inst✝⁵ : DecidableEq n
inst✝⁴ : Fintype n
inst✝³ : DecidableEq m
inst✝² : Fintype m
R : Type v
inst✝¹ : CommRing R
inst✝ : IsEmpty n
A : Matrix n n R
⊢ A.det = 1
state_after: no goals
Theorem: Ctop.Realizer.isClosed_iff
File: Mathlib/Data/Analysis/Topology.lean

tactic: haveI := Classical.propDecidable
state_before: α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
inst✝ : TopologicalSpace α
F : Realizer α
s : Set α
a : α
⊢ (a ∉ s → ∃ b, a ∈ F.F.f b ∧ ∀ z ∈ F.F.f b, z ∉ s) ↔ (∀ (b : F.σ), a ∈ F.F.f b → ∃ z, z ∈ F.F.f b ∩ s) → a ∈ s
state_after: α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
inst✝ : TopologicalSpace α
F : Realizer α
s : Set α
a : α
this : (a : Prop) → Decidable a
⊢ (a ∉ s → ∃ b, a ∈ F.F.f b ∧ ∀ z ∈ F.F.f b, z ∉ s) ↔ (∀ (b : F.σ), a ∈ F.F.f b → ∃ z, z ∈ F.F.f b ∩ s) → a ∈ s

tactic: rw [not_imp_comm]
state_before: α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
inst✝ : TopologicalSpace α
F : Realizer α
s : Set α
a : α
this : (a : Prop) → Decidable a
⊢ (a ∉ s → ∃ b, a ∈ F.F.f b ∧ ∀ z ∈ F.F.f b, z ∉ s) ↔ (∀ (b : F.σ), a ∈ F.F.f b → ∃ z, z ∈ F.F.f b ∩ s) → a ∈ s
state_after: α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
inst✝ : TopologicalSpace α
F : Realizer α
s : Set α
a : α
this : (a : Prop) → Decidable a
⊢ (¬∃ b, a ∈ F.F.f b ∧ ∀ z ∈ F.F.f b, z ∉ s) → a ∈ s ↔ (∀ (b : F.σ), a ∈ F.F.f b → ∃ z, z ∈ F.F.f b ∩ s) → a ∈ s

tactic: simp [not_exists, not_and, not_forall, and_comm]
state_before: α : Type u_1
β : Type u_2
σ : Type u_3
τ : Type u_4
inst✝ : TopologicalSpace α
F : Realizer α
s : Set α
a : α
this : (a : Prop) → Decidable a
⊢ (¬∃ b, a ∈ F.F.f b ∧ ∀ z ∈ F.F.f b, z ∉ s) → a ∈ s ↔ (∀ (b : F.σ), a ∈ F.F.f b → ∃ z, z ∈ F.F.f b ∩ s) → a ∈ s
state_after: no goals