1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: toIcoMod_apply_right
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [toIcoMod_eq_iff hp, Set.left_mem_Ico]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b c : α
n : ℤ
a : α
⊢ toIcoMod hp a (a + p) = a
state_after: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b c : α
n : ℤ
a : α
⊢ a < a + p ∧ ∃ z, a + p = a + z • p

tactic: exact ⟨lt_add_of_pos_right _ hp, 1, by simp⟩
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b c : α
n : ℤ
a : α
⊢ a < a + p ∧ ∃ z, a + p = a + z • p
state_after: no goals

tactic: simp
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b c : α
n : ℤ
a : α
⊢ a + p = a + 1 • p
state_after: no goals
Theorem: CategoryTheory.Limits.bicone_ι_π_self
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

tactic: simpa using B.ι_π j j
state_before: J : Type w
C : Type uC
inst✝³ : Category.{uC', uC} C
inst✝² : HasZeroMorphisms C
D : Type uD
inst✝¹ : Category.{uD', uD} D
inst✝ : HasZeroMorphisms D
F : J → C
B : Bicone F
j : J
⊢ B.ι j ≫ B.π j = 𝟙 (F j)
state_after: no goals
Theorem: Cardinal.mk_finset_of_fintype
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simp [Pow.pow]
state_before: α β : Type u
inst✝ : Fintype α
⊢ #(Finset α) = 2 ^ Fintype.card α
state_after: no goals
Theorem: Metric.preimage_smul_ball
File: Mathlib/Topology/MetricSpace/IsometricSMul.lean

tactic: rw [preimage_smul, smul_ball]
state_before: M : Type u
G : Type v
X : Type w
inst✝³ : PseudoMetricSpace X
inst✝² : Group G
inst✝¹ : MulAction G X
inst✝ : IsometricSMul G X
c : G
x : X
r : ℝ
⊢ (fun x => c • x) ⁻¹' ball x r = ball (c⁻¹ • x) r
state_after: no goals
Theorem: PartitionOfUnity.exists_finset_nhd
File: Mathlib/Topology/PartitionOfUnity.lean

tactic: rcases ρ.exists_finset_nhd' x₀ with ⟨I, H⟩
state_before: ι : Type u
X : Type v
inst✝⁴ : TopologicalSpace X
E : Type u_1
inst✝³ : AddCommMonoid E
inst✝² : SMulWithZero ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set X
f : PartitionOfUnity ι X s
ρ : PartitionOfUnity ι X
x₀ : X
⊢ ∃ I, ∀ᶠ (x : X) in 𝓝 x₀, ∑ i ∈ I, (ρ i) x = 1 ∧ (support fun x_1 => (ρ x_1) x) ⊆ ↑I
state_after: case intro
ι : Type u
X : Type v
inst✝⁴ : TopologicalSpace X
E : Type u_1
inst✝³ : AddCommMonoid E
inst✝² : SMulWithZero ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set X
f : PartitionOfUnity ι X s
ρ : PartitionOfUnity ι X
x₀ : X
I : Finset ι
H : (∀ᶠ (x : X) in 𝓝[univ] x₀, ∑ i ∈ I, (ρ i) x = 1) ∧ ∀ᶠ (x : X) in 𝓝 x₀, (support fun x_1 => (ρ x_1) x) ⊆ ↑I
⊢ ∃ I, ∀ᶠ (x : X) in 𝓝 x₀, ∑ i ∈ I, (ρ i) x = 1 ∧ (support fun x_1 => (ρ x_1) x) ⊆ ↑I

tactic: use I
state_before: case intro
ι : Type u
X : Type v
inst✝⁴ : TopologicalSpace X
E : Type u_1
inst✝³ : AddCommMonoid E
inst✝² : SMulWithZero ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set X
f : PartitionOfUnity ι X s
ρ : PartitionOfUnity ι X
x₀ : X
I : Finset ι
H : (∀ᶠ (x : X) in 𝓝[univ] x₀, ∑ i ∈ I, (ρ i) x = 1) ∧ ∀ᶠ (x : X) in 𝓝 x₀, (support fun x_1 => (ρ x_1) x) ⊆ ↑I
⊢ ∃ I, ∀ᶠ (x : X) in 𝓝 x₀, ∑ i ∈ I, (ρ i) x = 1 ∧ (support fun x_1 => (ρ x_1) x) ⊆ ↑I
state_after: case h
ι : Type u
X : Type v
inst✝⁴ : TopologicalSpace X
E : Type u_1
inst✝³ : AddCommMonoid E
inst✝² : SMulWithZero ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set X
f : PartitionOfUnity ι X s
ρ : PartitionOfUnity ι X
x₀ : X
I : Finset ι
H : (∀ᶠ (x : X) in 𝓝[univ] x₀, ∑ i ∈ I, (ρ i) x = 1) ∧ ∀ᶠ (x : X) in 𝓝 x₀, (support fun x_1 => (ρ x_1) x) ⊆ ↑I
⊢ ∀ᶠ (x : X) in 𝓝 x₀, ∑ i ∈ I, (ρ i) x = 1 ∧ (support fun x_1 => (ρ x_1) x) ⊆ ↑I

tactic: rwa [nhdsWithin_univ, ← eventually_and] at H
state_before: case h
ι : Type u
X : Type v
inst✝⁴ : TopologicalSpace X
E : Type u_1
inst✝³ : AddCommMonoid E
inst✝² : SMulWithZero ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul ℝ E
s : Set X
f : PartitionOfUnity ι X s
ρ : PartitionOfUnity ι X
x₀ : X
I : Finset ι
H : (∀ᶠ (x : X) in 𝓝[univ] x₀, ∑ i ∈ I, (ρ i) x = 1) ∧ ∀ᶠ (x : X) in 𝓝 x₀, (support fun x_1 => (ρ x_1) x) ⊆ ↑I
⊢ ∀ᶠ (x : X) in 𝓝 x₀, ∑ i ∈ I, (ρ i) x = 1 ∧ (support fun x_1 => (ρ x_1) x) ⊆ ↑I
state_after: no goals
Theorem: CategoryTheory.Functor.OfSequence.congr_f
File: Mathlib/CategoryTheory/Functor/OfSequence.lean

tactic: rw [h]
state_before: C : Type u_1
inst✝ : Category.{?u.131, u_1} C
X : ℕ → C
f : (n : ℕ) → X n ⟶ X (n + 1)
i j : ℕ
h : i = j
⊢ X i = X j
state_after: no goals

tactic: rw [h]
state_before: C : Type u_1
inst✝ : Category.{?u.131, u_1} C
X : ℕ → C
f : (n : ℕ) → X n ⟶ X (n + 1)
i j : ℕ
h : i = j
⊢ X (j + 1) = X (i + 1)
state_after: no goals

tactic: subst h
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : ℕ → C
f : (n : ℕ) → X n ⟶ X (n + 1)
i j : ℕ
h : i = j
⊢ f i = eqToHom ⋯ ≫ f j ≫ eqToHom ⋯
state_after: C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : ℕ → C
f : (n : ℕ) → X n ⟶ X (n + 1)
i : ℕ
⊢ f i = eqToHom ⋯ ≫ f i ≫ eqToHom ⋯

tactic: simp
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : ℕ → C
f : (n : ℕ) → X n ⟶ X (n + 1)
i : ℕ
⊢ f i = eqToHom ⋯ ≫ f i ≫ eqToHom ⋯
state_after: no goals
Theorem: List.prod_hom
File: Mathlib/Algebra/BigOperators/Group/List.lean

tactic: simp only [prod, foldl_map, ← map_one f]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝⁴ : Monoid M
inst✝³ : Monoid N
inst✝² : Monoid P
l✝ l₁ l₂ : List M
a : M
l : List M
F : Type u_8
inst✝¹ : FunLike F M N
inst✝ : MonoidHomClass F M N
f : F
⊢ (map (⇑f) l).prod = f l.prod
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝⁴ : Monoid M
inst✝³ : Monoid N
inst✝² : Monoid P
l✝ l₁ l₂ : List M
a : M
l : List M
F : Type u_8
inst✝¹ : FunLike F M N
inst✝ : MonoidHomClass F M N
f : F
⊢ foldl (fun x y => x * f y) (f 1) l = f (foldl (fun x x_1 => x * x_1) 1 l)
Theorem: PartialEquiv.IsImage.symm_apply_mem_iff
File: Mathlib/Logic/Equiv/PartialEquiv.lean

tactic: rw [e.left_inv hx, h hx]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e : PartialEquiv α β
e' : PartialEquiv β γ
s : Set α
t : Set β
x✝ : α
y : β
h : e.IsImage s t
x : α
hx : x ∈ e.source
⊢ ↑e.symm (↑e x) ∈ s ↔ ↑e x ∈ t
state_after: no goals
Theorem: Vector.tail_ofFn
File: Mathlib/Data/Vector/Basic.lean

tactic: congr
state_before: n✝ : ℕ
α : Type u_1
n : ℕ
f : Fin n.succ → α
⊢ ofFn (ofFn f).tail.get = ofFn fun i => f i.succ
state_after: case e_a
n✝ : ℕ
α : Type u_1
n : ℕ
f : Fin n.succ → α
⊢ (ofFn f).tail.get = fun i => f i.succ

tactic: funext i
state_before: case e_a
n✝ : ℕ
α : Type u_1
n : ℕ
f : Fin n.succ → α
⊢ (ofFn f).tail.get = fun i => f i.succ
state_after: case e_a.h
n✝ : ℕ
α : Type u_1
n : ℕ
f : Fin n.succ → α
i : Fin (n.succ - 1)
⊢ (ofFn f).tail.get i = f i.succ

tactic: rw [get_tail, get_ofFn]
state_before: case e_a.h
n✝ : ℕ
α : Type u_1
n : ℕ
f : Fin n.succ → α
i : Fin (n.succ - 1)
⊢ (ofFn f).tail.get i = f i.succ
state_after: case e_a.h
n✝ : ℕ
α : Type u_1
n : ℕ
f : Fin n.succ → α
i : Fin (n.succ - 1)
⊢ f ⟨↑i + 1, ⋯⟩ = f i.succ

tactic: rfl
state_before: case e_a.h
n✝ : ℕ
α : Type u_1
n : ℕ
f : Fin n.succ → α
i : Fin (n.succ - 1)
⊢ f ⟨↑i + 1, ⋯⟩ = f i.succ
state_after: no goals
Theorem: Set.ncard_le_one_of_subsingleton
File: Mathlib/Data/Set/Card.lean

tactic: rw [ncard_eq_toFinset_card]
state_before: α : Type u_1
β : Type u_2
s✝ t : Set α
f : α → β
inst✝ : Subsingleton α
s : Set α
⊢ s.ncard ≤ 1
state_after: α : Type u_1
β : Type u_2
s✝ t : Set α
f : α → β
inst✝ : Subsingleton α
s : Set α
⊢ ⋯.toFinset.card ≤ 1

tactic: exact Finset.card_le_one_of_subsingleton _
state_before: α : Type u_1
β : Type u_2
s✝ t : Set α
f : α → β
inst✝ : Subsingleton α
s : Set α
⊢ ⋯.toFinset.card ≤ 1
state_after: no goals
Theorem: LieSubmodule.iInf_coe
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [iInf, sInf_coe]
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
ι : Sort u_1
p : ι → LieSubmodule R L M
⊢ ↑(⨅ i, p i) = ⋂ i, ↑(p i)
state_after: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
ι : Sort u_1
p : ι → LieSubmodule R L M
⊢ ⋂ s ∈ range fun i => p i, ↑s = ⋂ i, ↑(p i)

tactic: simp only [Set.mem_range, Set.iInter_exists, Set.iInter_iInter_eq']
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
ι : Sort u_1
p : ι → LieSubmodule R L M
⊢ ⋂ s ∈ range fun i => p i, ↑s = ⋂ i, ↑(p i)
state_after: no goals
Theorem: Multiset.pow_count
File: Mathlib/Algebra/BigOperators/Group/Multiset.lean

tactic: rw [filter_eq, prod_replicate]
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝² : CommMonoid α
inst✝¹ : CommMonoid β
s t : Multiset α
a✝ : α
m : Multiset ι
f g : ι → α
inst✝ : DecidableEq α
a : α
⊢ a ^ count a s = (filter (Eq a) s).prod
state_after: no goals
Theorem: SimpleGraph.Walk.dart_snd_mem_support_of_mem_darts
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: simpa using p.reverse.dart_fst_mem_support_of_mem_darts (by simp [h] : d.symm ∈ p.reverse.darts)
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
d : G.Dart
h : d ∈ p.darts
⊢ d.toProd.2 ∈ p.support
state_after: no goals

tactic: simp [h]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
d : G.Dart
h : d ∈ p.darts
⊢ d.symm ∈ p.reverse.darts
state_after: no goals
Theorem: PiTensorProduct.congr_tprod
File: Mathlib/LinearAlgebra/PiTensorProduct.lean

tactic: simp only [congr, LinearEquiv.ofLinear_apply, map_tprod, LinearEquiv.coe_coe]
state_before: ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝¹¹ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝¹⁰ : (i : ι) → AddCommMonoid (s i)
inst✝⁹ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
E : Type u_9
inst✝⁶ : AddCommMonoid E
inst✝⁵ : Module R E
F : Type u_10
inst✝⁴ : AddCommMonoid F
t : ι → Type u_11
t' : ι → Type u_12
inst✝³ : (i : ι) → AddCommMonoid (t i)
inst✝² : (i : ι) → Module R (t i)
inst✝¹ : (i : ι) → AddCommMonoid (t' i)
inst✝ : (i : ι) → Module R (t' i)
g : (i : ι) → t i →ₗ[R] t' i
f✝ : (i : ι) → s i →ₗ[R] t i
f : (i : ι) → s i ≃ₗ[R] t i
m : (i : ι) → s i
⊢ (congr f) ((tprod R) m) = ⨂ₜ[R] (i : ι), (f i) (m i)
state_after: no goals
Theorem: OrderIso.map_sSup
File: Mathlib/Order/CompleteLattice.lean

tactic: simp only [sSup_eq_iSup, OrderIso.map_iSup]
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝¹ : CompleteLattice α
f✝ g s✝ t : ι → α
a b : α
inst✝ : CompleteLattice β
f : α ≃o β
s : Set α
⊢ f (sSup s) = ⨆ a ∈ s, f a
state_after: no goals
Theorem: ADEInequality.lt_six
File: Mathlib/NumberTheory/ADEInequality.lean

tactic: have h6 : (0 : ℚ) < 6 := by norm_num
state_before: r : ℕ+
H : 1 < sumInv {2, 3, r}
⊢ r < 6
state_after: r : ℕ+
H : 1 < sumInv {2, 3, r}
h6 : 0 < 6
⊢ r < 6

tactic: contrapose! H
state_before: r : ℕ+
H : 1 < sumInv {2, 3, r}
h6 : 0 < 6
⊢ r < 6
state_after: r : ℕ+
h6 : 0 < 6
H : 6 ≤ r
⊢ sumInv {2, 3, r} ≤ 1

tactic: rw [sumInv_pqr]
state_before: r : ℕ+
h6 : 0 < 6
H : 6 ≤ r
⊢ sumInv {2, 3, r} ≤ 1
state_after: r : ℕ+
h6 : 0 < 6
H : 6 ≤ r
⊢ (↑↑2)⁻¹ + (↑↑3)⁻¹ + (↑↑r)⁻¹ ≤ 1

tactic: calc
  (2⁻¹ + 3⁻¹ + (r : ℚ)⁻¹ : ℚ) ≤ 2⁻¹ + 3⁻¹ + 6⁻¹ := add_le_add (add_le_add le_rfl le_rfl) hr
  _ = 1 := by norm_num
state_before: r : ℕ+
h6 : 0 < 6
H : 6 ≤ r
hr : (↑↑r)⁻¹ ≤ 6⁻¹
⊢ (↑↑2)⁻¹ + (↑↑3)⁻¹ + (↑↑r)⁻¹ ≤ 1
state_after: no goals

tactic: norm_num
state_before: r : ℕ+
H : 1 < sumInv {2, 3, r}
⊢ 0 < 6
state_after: no goals

tactic: rw [inv_le_inv _ h6]
state_before: r : ℕ+
h6 : 0 < 6
H : 6 ≤ r
⊢ (↑↑r)⁻¹ ≤ 6⁻¹
state_after: r : ℕ+
h6 : 0 < 6
H : 6 ≤ r
⊢ 6 ≤ ↑↑r

r : ℕ+
h6 : 0 < 6
H : 6 ≤ r
⊢ 0 < ↑↑r

tactic: assumption_mod_cast
state_before: r : ℕ+
h6 : 0 < 6
H : 6 ≤ r
⊢ 6 ≤ ↑↑r
state_after: no goals

tactic: norm_num
state_before: r : ℕ+
h6 : 0 < 6
H : 6 ≤ r
⊢ 0 < ↑↑r
state_after: no goals

tactic: norm_num
state_before: r : ℕ+
h6 : 0 < 6
H : 6 ≤ r
hr : (↑↑r)⁻¹ ≤ 6⁻¹
⊢ 2⁻¹ + 3⁻¹ + 6⁻¹ = 1
state_after: no goals
Theorem: SzemerediRegularity.le_stepBound
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Bound.lean

tactic: norm_num
state_before: n : ℕ
⊢ 0 < 4
state_after: no goals
Theorem: geom_sum_mul_add
File: Mathlib/Algebra/GeomSum.lean

tactic: have := (Commute.one_right x).geom_sum₂_mul_add n
state_before: α : Type u
inst✝ : Semiring α
x : α
n : ℕ
⊢ (∑ i ∈ range n, (x + 1) ^ i) * x + 1 = (x + 1) ^ n
state_after: α : Type u
inst✝ : Semiring α
x : α
n : ℕ
this : (∑ i ∈ range n, (x + 1) ^ i * 1 ^ (n - 1 - i)) * x + 1 ^ n = (x + 1) ^ n
⊢ (∑ i ∈ range n, (x + 1) ^ i) * x + 1 = (x + 1) ^ n

tactic: rw [one_pow, geom_sum₂_with_one] at this
state_before: α : Type u
inst✝ : Semiring α
x : α
n : ℕ
this : (∑ i ∈ range n, (x + 1) ^ i * 1 ^ (n - 1 - i)) * x + 1 ^ n = (x + 1) ^ n
⊢ (∑ i ∈ range n, (x + 1) ^ i) * x + 1 = (x + 1) ^ n
state_after: α : Type u
inst✝ : Semiring α
x : α
n : ℕ
this : (∑ i ∈ range n, (x + 1) ^ i) * x + 1 = (x + 1) ^ n
⊢ (∑ i ∈ range n, (x + 1) ^ i) * x + 1 = (x + 1) ^ n

tactic: exact this
state_before: α : Type u
inst✝ : Semiring α
x : α
n : ℕ
this : (∑ i ∈ range n, (x + 1) ^ i) * x + 1 = (x + 1) ^ n
⊢ (∑ i ∈ range n, (x + 1) ^ i) * x + 1 = (x + 1) ^ n
state_after: no goals
Theorem: max_one_div_max_inv_one_eq_self
File: Mathlib/Algebra/Order/Group/MinMax.lean

tactic: rcases le_total a 1 with (h | h) <;> simp [h]
state_before: α : Type u_1
inst✝² : Group α
inst✝¹ : LinearOrder α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ max a 1 / max a⁻¹ 1 = a
state_after: no goals
Theorem: Relation.TransGen.to_reflTransGen
File: Mathlib/Logic/Relation.lean

tactic: induction' h with b h b c _ bc ab
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a✝ b✝ c d a b : α
h : TransGen r a b
⊢ ReflTransGen r a b
state_after: case single
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a✝ b✝¹ c d a b✝ b : α
h : r a b
⊢ ReflTransGen r a b

case tail
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a✝¹ b✝¹ c✝ d a b✝ b c : α
a✝ : TransGen r a b
bc : r b c
ab : ReflTransGen r a b
⊢ ReflTransGen r a c

tactic: exact ReflTransGen.single h
state_before: case single
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a✝ b✝¹ c d a b✝ b : α
h : r a b
⊢ ReflTransGen r a b
state_after: no goals

tactic: exact ReflTransGen.tail ab bc
state_before: case tail
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a✝¹ b✝¹ c✝ d a b✝ b c : α
a✝ : TransGen r a b
bc : r b c
ab : ReflTransGen r a b
⊢ ReflTransGen r a c
state_after: no goals
Theorem: Turing.Tape.map_move
File: Mathlib/Computability/TuringMachine.lean

tactic: cases T
state_before: Γ : Type u_1
Γ' : Type u_2
inst✝¹ : Inhabited Γ
inst✝ : Inhabited Γ'
f : PointedMap Γ Γ'
T : Tape Γ
d : Dir
⊢ map f (move d T) = move d (map f T)
state_after: case mk
Γ : Type u_1
Γ' : Type u_2
inst✝¹ : Inhabited Γ
inst✝ : Inhabited Γ'
f : PointedMap Γ Γ'
d : Dir
head✝ : Γ
left✝ right✝ : ListBlank Γ
⊢ map f (move d { head := head✝, left := left✝, right := right✝ }) =
    move d (map f { head := head✝, left := left✝, right := right✝ })

tactic: cases d <;> simp only [Tape.move, Tape.map, ListBlank.head_map, eq_self_iff_true,
  ListBlank.map_cons, and_self_iff, ListBlank.tail_map]
state_before: case mk
Γ : Type u_1
Γ' : Type u_2
inst✝¹ : Inhabited Γ
inst✝ : Inhabited Γ'
f : PointedMap Γ Γ'
d : Dir
head✝ : Γ
left✝ right✝ : ListBlank Γ
⊢ map f (move d { head := head✝, left := left✝, right := right✝ }) =
    move d (map f { head := head✝, left := left✝, right := right✝ })
state_after: no goals
Theorem: Finset.filter_mem_eq_inter
File: Mathlib/Data/Finset/Basic.lean

tactic: simp [mem_filter, mem_inter]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p q : α → Prop
inst✝³ : DecidablePred p
inst✝² : DecidablePred q
s✝ : Finset α
inst✝¹ : DecidableEq α
s t : Finset α
inst✝ : (i : α) → Decidable (i ∈ t)
i : α
⊢ i ∈ filter (fun i => i ∈ t) s ↔ i ∈ s ∩ t
state_after: no goals
Theorem: divp_divp_eq_divp_mul
File: Mathlib/Algebra/Group/Units.lean

tactic: simp only [divp, mul_inv_rev, Units.val_mul, mul_assoc]
state_before: α : Type u
inst✝ : Monoid α
a b c x : α
u₁ u₂ : αˣ
⊢ x /ₚ u₁ /ₚ u₂ = x /ₚ (u₂ * u₁)
state_after: no goals
Theorem: himp_eq_top_iff
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [← top_le_iff, le_himp_iff, top_inf_eq]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedHeytingAlgebra α
a b c d : α
⊢ a ⇨ b = ⊤ ↔ a ≤ b
state_after: no goals
Theorem: ArithmeticFunction.mul_smul'
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: ext n
state_before: R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
f g : ArithmeticFunction R
h : ArithmeticFunction M
⊢ (f * g) • h = f • g • h
state_after: case h
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
f g : ArithmeticFunction R
h : ArithmeticFunction M
n : ℕ
⊢ ((f * g) • h) n = (f • g • h) n

tactic: simp only [mul_apply, smul_apply, sum_smul, mul_smul, smul_sum, Finset.sum_sigma']
state_before: case h
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
f g : ArithmeticFunction R
h : ArithmeticFunction M
n : ℕ
⊢ ((f * g) • h) n = (f • g • h) n
state_after: case h
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
f g : ArithmeticFunction R
h : ArithmeticFunction M
n : ℕ
⊢ ∑ x ∈ n.divisorsAntidiagonal.sigma fun a => a.1.divisorsAntidiagonal, f x.snd.1 • g x.snd.2 • h x.fst.2 =
    ∑ x ∈ n.divisorsAntidiagonal.sigma fun a => a.2.divisorsAntidiagonal, f x.fst.1 • g x.snd.1 • h x.snd.2

tactic: apply Finset.sum_nbij' (fun ⟨⟨_i, j⟩, ⟨k, l⟩⟩ ↦ ⟨(k, l * j), (l, j)⟩)
  (fun ⟨⟨i, _j⟩, ⟨k, l⟩⟩ ↦ ⟨(i * k, l), (i, k)⟩) <;> aesop (add simp mul_assoc)
state_before: case h
R : Type u_1
M : Type u_2
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
f g : ArithmeticFunction R
h : ArithmeticFunction M
n : ℕ
⊢ ∑ x ∈ n.divisorsAntidiagonal.sigma fun a => a.1.divisorsAntidiagonal, f x.snd.1 • g x.snd.2 • h x.fst.2 =
    ∑ x ∈ n.divisorsAntidiagonal.sigma fun a => a.2.divisorsAntidiagonal, f x.fst.1 • g x.snd.1 • h x.snd.2
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.associator_inv_naturality
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp [tensorHom_def]
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X✝ Y✝ Z✝ X Y Z X' Y' Z' : C
f : X ⟶ X'
g : Y ⟶ Y'
h : Z ⟶ Z'
⊢ (f ⊗ g ⊗ h) ≫ (α_ X' Y' Z').inv = (α_ X Y Z).inv ≫ ((f ⊗ g) ⊗ h)
state_after: no goals
Theorem: List.pair_mem_product
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp only [product, and_imp, mem_map, Prod.mk.injEq,
  exists_eq_right_right, mem_bind, iff_self]
state_before: α : Type u_1
β : Type u_2
xs : List α
ys : List β
x : α
y : β
⊢ (x, y) ∈ xs.product ys ↔ x ∈ xs ∧ y ∈ ys
state_after: no goals
Theorem: geom_series_succ
File: Mathlib/Analysis/SpecificLimits/Normed.lean

tactic: rw [eq_sub_iff_add_eq, tsum_eq_zero_add (NormedRing.summable_geometric_of_norm_lt_one x h),
  pow_zero, add_comm]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
R : Type u_4
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
x : R
h : ‖x‖ < 1
⊢ ∑' (i : ℕ), x ^ (i + 1) = ∑' (i : ℕ), x ^ i - 1
state_after: no goals
Theorem: Polynomial.splits_iff
File: Mathlib/Algebra/Polynomial/Splits.lean

tactic: rw [Splits, map_eq_zero]
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝³ : CommRing R
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f : K[X]
⊢ Splits i f ↔ f = 0 ∨ ∀ {g : L[X]}, Irreducible g → g ∣ map i f → g.degree = 1
state_after: no goals
Theorem: MeasureTheory.MeasurePreserving.measure_preimage_emb
File: Mathlib/Dynamics/Ergodic/MeasurePreserving.lean

tactic: rw [← hf.map_eq, hfe.map_apply]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
μa : Measure α
μb : Measure β
μc : Measure γ
μd : Measure δ
f : α → β
hf : MeasurePreserving f μa μb
hfe : MeasurableEmbedding f
s : Set β
⊢ μa (f ⁻¹' s) = μb s
state_after: no goals
Theorem: Finset.sup'_biUnion
File: Mathlib/Data/Finset/Lattice.lean

tactic: simp [@forall_swap _ β]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : SemilatticeSup α
s✝ : Finset β
H : s✝.Nonempty
f : β → α
inst✝ : DecidableEq β
s : Finset γ
Hs : s.Nonempty
t : γ → Finset β
Ht : ∀ (b : γ), (t b).Nonempty
c : α
⊢ (s.biUnion t).sup' ⋯ f ≤ c ↔ (s.sup' Hs fun b => (t b).sup' ⋯ f) ≤ c
state_after: no goals
Theorem: MeasureTheory.Measure.rnDeriv_restrict
File: Mathlib/MeasureTheory/Decomposition/Lebesgue.lean

tactic: refine (eq_rnDeriv (s := (μ.restrict s).singularPart ν)
  ((measurable_rnDeriv _ _).indicator hs) (mutuallySingular_singularPart _ _) ?_).symm
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : μ.HaveLebesgueDecomposition ν
inst✝ : SigmaFinite ν
s : Set α
hs : MeasurableSet s
⊢ (μ.restrict s).rnDeriv ν =ᶠ[ae ν] s.indicator (μ.rnDeriv ν)
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : μ.HaveLebesgueDecomposition ν
inst✝ : SigmaFinite ν
s : Set α
hs : MeasurableSet s
⊢ μ.restrict s = (μ.restrict s).singularPart ν + ν.withDensity (s.indicator (μ.rnDeriv ν))

tactic: rw [singularPart_restrict _ _ hs, withDensity_indicator hs, ← restrict_withDensity hs,
  ← Measure.restrict_add, ← μ.haveLebesgueDecomposition_add ν]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν✝ μ ν : Measure α
inst✝¹ : μ.HaveLebesgueDecomposition ν
inst✝ : SigmaFinite ν
s : Set α
hs : MeasurableSet s
⊢ μ.restrict s = (μ.restrict s).singularPart ν + ν.withDensity (s.indicator (μ.rnDeriv ν))
state_after: no goals
Theorem: DFinsupp.single_eq_same
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: simp only [single_apply, dite_eq_ite, ite_true]
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i✝ i : ι
b : β i
⊢ (single i b) i = b
state_after: no goals
Theorem: Polynomial.X_pow_add_C_ne_zero
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [degree_X_pow_add_C hn a]
state_before: R : Type u
S : Type v
a✝ b c d : R
n✝ m : ℕ
inst✝¹ : Nontrivial R
inst✝ : Semiring R
n : ℕ
hn : 0 < n
a : R
⊢ (X ^ n + C a).degree ≠ ⊥
state_after: R : Type u
S : Type v
a✝ b c d : R
n✝ m : ℕ
inst✝¹ : Nontrivial R
inst✝ : Semiring R
n : ℕ
hn : 0 < n
a : R
⊢ ↑n ≠ ⊥

tactic: exact WithBot.coe_ne_bot
state_before: R : Type u
S : Type v
a✝ b c d : R
n✝ m : ℕ
inst✝¹ : Nontrivial R
inst✝ : Semiring R
n : ℕ
hn : 0 < n
a : R
⊢ ↑n ≠ ⊥
state_after: no goals