1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Nat.eq_zero_of_le_div
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [Nat.mul_comm]
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hn : 2 ≤ n
h : m ≤ m / n
⊢ n * m ≤ m
state_after: a b c d m n k : ℕ
p q : ℕ → Prop
hn : 2 ≤ n
h : m ≤ m / n
⊢ m * n ≤ m

tactic: exact (Nat.le_div_iff_mul_le' (Nat.lt_of_lt_of_le (by decide) hn)).1 h
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hn : 2 ≤ n
h : m ≤ m / n
⊢ m * n ≤ m
state_after: no goals

tactic: decide
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hn : 2 ≤ n
h : m ≤ m / n
⊢ 0 < 2
state_after: no goals
Theorem: LieSubmodule.normalizer_inf
File: Mathlib/Algebra/Lie/Normalizer.lean

tactic: ext
state_before: R : Type u_1
L : Type u_2
M : Type u_3
M' : Type u_4
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
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
N N₁ N₂ : LieSubmodule R L M
⊢ (N₁ ⊓ N₂).normalizer = N₁.normalizer ⊓ N₂.normalizer
state_after: case h
R : Type u_1
L : Type u_2
M : Type u_3
M' : Type u_4
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
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
N N₁ N₂ : LieSubmodule R L M
m✝ : M
⊢ m✝ ∈ (N₁ ⊓ N₂).normalizer ↔ m✝ ∈ N₁.normalizer ⊓ N₂.normalizer

tactic: simp [← forall_and]
state_before: case h
R : Type u_1
L : Type u_2
M : Type u_3
M' : Type u_4
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
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
N N₁ N₂ : LieSubmodule R L M
m✝ : M
⊢ m✝ ∈ (N₁ ⊓ N₂).normalizer ↔ m✝ ∈ N₁.normalizer ⊓ N₂.normalizer
state_after: no goals
Theorem: Rel.image_top
File: Mathlib/Data/Rel.lean

tactic: simp [h.some_mem, Top.top]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
s : Set α
h : s.Nonempty
x : β
⊢ h.some ∈ s ∧ ⊤ h.some x
state_after: no goals
Theorem: Batteries.HashMap.Imp.WF.out
File: .lake/packages/batteries/Batteries/Data/HashMap/WF.lean

tactic: induction h with
| mk h₁ h₂ => exact ⟨h₁, h₂⟩
| @empty' _ h => exact ⟨(Buckets.mk_size h).symm, .mk' h⟩
| insert _ ih => exact ⟨insert_size ih.1, insert_WF ih.2⟩
| erase _ ih => exact ⟨erase_size ih.1, erase_WF ih.2⟩
| modify _ ih => exact ⟨modify_size ih.1, modify_WF ih.2⟩
state_before: α : Type u_1
β : Type u_2
inst✝¹ : BEq α
inst✝ : Hashable α
m : Imp α β
h : m.WF
⊢ m.size = m.buckets.size ∧ m.buckets.WF
state_after: no goals

tactic: exact ⟨h₁, h₂⟩
state_before: case mk
α : Type u_1
β : Type u_2
inst✝¹ : BEq α
inst✝ : Hashable α
m m✝ : Imp α β
h₁ : m✝.size = m✝.buckets.size
h₂ : m✝.buckets.WF
⊢ m✝.size = m✝.buckets.size ∧ m✝.buckets.WF
state_after: no goals

tactic: exact ⟨(Buckets.mk_size h).symm, .mk' h⟩
state_before: case empty'
α : Type u_1
β : Type u_2
inst✝¹ : BEq α
inst✝ : Hashable α
m : Imp α β
n✝ : Nat
h : 0 < n✝
⊢ (Imp.empty' n✝ h).size = (Imp.empty' n✝ h).buckets.size ∧ (Imp.empty' n✝ h).buckets.WF
state_after: no goals

tactic: exact ⟨insert_size ih.1, insert_WF ih.2⟩
state_before: case insert
α : Type u_1
β : Type u_2
inst✝¹ : BEq α
inst✝ : Hashable α
m m✝ : Imp α β
a✝¹ : α
b✝ : β
a✝ : m✝.WF
ih : m✝.size = m✝.buckets.size ∧ m✝.buckets.WF
⊢ (m✝.insert a✝¹ b✝).size = (m✝.insert a✝¹ b✝).buckets.size ∧ (m✝.insert a✝¹ b✝).buckets.WF
state_after: no goals

tactic: exact ⟨erase_size ih.1, erase_WF ih.2⟩
state_before: case erase
α : Type u_1
β : Type u_2
inst✝¹ : BEq α
inst✝ : Hashable α
m m✝ : Imp α β
a✝¹ : α
a✝ : m✝.WF
ih : m✝.size = m✝.buckets.size ∧ m✝.buckets.WF
⊢ (m✝.erase a✝¹).size = (m✝.erase a✝¹).buckets.size ∧ (m✝.erase a✝¹).buckets.WF
state_after: no goals

tactic: exact ⟨modify_size ih.1, modify_WF ih.2⟩
state_before: case modify
α : Type u_1
β : Type u_2
inst✝¹ : BEq α
inst✝ : Hashable α
m m✝ : Imp α β
a✝¹ : α
f✝ : α → β → β
a✝ : m✝.WF
ih : m✝.size = m✝.buckets.size ∧ m✝.buckets.WF
⊢ (m✝.modify a✝¹ f✝).size = (m✝.modify a✝¹ f✝).buckets.size ∧ (m✝.modify a✝¹ f✝).buckets.WF
state_after: no goals
Theorem: exterior_singleton_eq_ker_nhds
File: Mathlib/Topology/AlexandrovDiscrete.lean

tactic: simp [exterior]
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s t : Set α
a✝ x y a : α
⊢ exterior {a} = (𝓝 a).ker
state_after: no goals
Theorem: CategoryTheory.Limits.HasZeroObject.zeroIsoInitial_inv
File: Mathlib/CategoryTheory/Limits/Shapes/ZeroMorphisms.lean

tactic: ext
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
D : Type u'
inst✝³ : Category.{v', u'} D
inst✝² : HasZeroObject C
inst✝¹ : HasZeroMorphisms C
inst✝ : HasInitial C
⊢ zeroIsoInitial.inv = 0
state_after: no goals
Theorem: sup_eq_half_smul_add_add_abs_sub
File: Mathlib/Algebra/Order/Module/OrderedSMul.lean

tactic: rw [← two_nsmul_sup_eq_add_add_abs_sub x y, two_smul, ← two_smul α,
  smul_smul, invOf_mul_self, one_smul]
state_before: ι : Type u_1
α✝ : Type u_2
β✝ : Type u_3
γ : Type u_4
𝕜 : Type u_5
R : Type u_6
M : Type u_7
N : Type u_8
α : Type u_9
β : Type u_10
inst✝⁵ : Semiring α
inst✝⁴ : Invertible 2
inst✝³ : Lattice β
inst✝² : AddCommGroup β
inst✝¹ : Module α β
inst✝ : CovariantClass β β (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
x y : β
⊢ x ⊔ y = ⅟2 • (x + y + |y - x|)
state_after: no goals
Theorem: Polynomial.degree_pos_of_not_isUnit_of_dvd_monic
File: Mathlib/Algebra/Polynomial/RingDivision.lean

tactic: contrapose! ha with h
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommSemiring R
a p : R[X]
hp : p.Monic
ha : ¬IsUnit a
hap : a ∣ p
⊢ 0 < a.degree
state_after: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommSemiring R
a p : R[X]
hp : p.Monic
hap : a ∣ p
h : a.degree ≤ 0
⊢ IsUnit a

tactic: rw [Polynomial.eq_C_of_degree_le_zero h] at hap ⊢
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommSemiring R
a p : R[X]
hp : p.Monic
hap : a ∣ p
h : a.degree ≤ 0
⊢ IsUnit a
state_after: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommSemiring R
a p : R[X]
hp : p.Monic
hap : C (a.coeff 0) ∣ p
h : a.degree ≤ 0
⊢ IsUnit (C (a.coeff 0))

tactic: simpa [hp.C_dvd_iff_isUnit, isUnit_C] using hap
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝ : CommSemiring R
a p : R[X]
hp : p.Monic
hap : C (a.coeff 0) ∣ p
h : a.degree ≤ 0
⊢ IsUnit (C (a.coeff 0))
state_after: no goals
Theorem: Part.map_none
File: Mathlib/Data/Part.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
a : β
⊢ a ∉ map f none
state_after: no goals
Theorem: ContinuousLinearMap.coe_ofIsClosedGraph
File: Mathlib/Analysis/NormedSpace/Banach.lean

tactic: ext
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
⊢ ↑(ofIsClosedGraph hg) = g
state_after: case h
𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
x✝ : E
⊢ ↑(ofIsClosedGraph hg) x✝ = g x✝

tactic: rfl
state_before: case h
𝕜 : Type u_1
𝕜' : Type u_2
inst✝¹⁴ : NontriviallyNormedField 𝕜
inst✝¹³ : NontriviallyNormedField 𝕜'
σ : 𝕜 →+* 𝕜'
σ' : 𝕜' →+* 𝕜
inst✝¹² : RingHomInvPair σ σ'
inst✝¹¹ : RingHomInvPair σ' σ
inst✝¹⁰ : RingHomIsometric σ
inst✝⁹ : RingHomIsometric σ'
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace 𝕜 E
F✝ : Type u_4
inst✝⁶ : NormedAddCommGroup F✝
inst✝⁵ : NormedSpace 𝕜' F✝
f : E →SL[σ] F✝
inst✝⁴ : CompleteSpace F✝
inst✝³ : CompleteSpace E
F : Type u_5
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace 𝕜 F
inst✝ : CompleteSpace F
g : E →ₗ[𝕜] F
hg : IsClosed ↑g.graph
x✝ : E
⊢ ↑(ofIsClosedGraph hg) x✝ = g x✝
state_after: no goals
Theorem: Trivialization.Prod.right_inv
File: Mathlib/Topology/FiberBundle/Constructions.lean

tactic: obtain ⟨x, w₁, w₂⟩ := x
state_before: B : Type u_1
inst✝⁶ : TopologicalSpace B
F₁ : Type u_2
inst✝⁵ : TopologicalSpace F₁
E₁ : B → Type u_3
inst✝⁴ : TopologicalSpace (TotalSpace F₁ E₁)
F₂ : Type u_4
inst✝³ : TopologicalSpace F₂
E₂ : B → Type u_5
inst✝² : TopologicalSpace (TotalSpace F₂ E₂)
e₁ : Trivialization F₁ TotalSpace.proj
e₂ : Trivialization F₂ TotalSpace.proj
inst✝¹ : (x : B) → Zero (E₁ x)
inst✝ : (x : B) → Zero (E₂ x)
x : B × F₁ × F₂
h : x ∈ (e₁.baseSet ∩ e₂.baseSet) ×ˢ univ
⊢ toFun' e₁ e₂ (invFun' e₁ e₂ x) = x
state_after: case mk.mk
B : Type u_1
inst✝⁶ : TopologicalSpace B
F₁ : Type u_2
inst✝⁵ : TopologicalSpace F₁
E₁ : B → Type u_3
inst✝⁴ : TopologicalSpace (TotalSpace F₁ E₁)
F₂ : Type u_4
inst✝³ : TopologicalSpace F₂
E₂ : B → Type u_5
inst✝² : TopologicalSpace (TotalSpace F₂ E₂)
e₁ : Trivialization F₁ TotalSpace.proj
e₂ : Trivialization F₂ TotalSpace.proj
inst✝¹ : (x : B) → Zero (E₁ x)
inst✝ : (x : B) → Zero (E₂ x)
x : B
w₁ : F₁
w₂ : F₂
h : (x, w₁, w₂) ∈ (e₁.baseSet ∩ e₂.baseSet) ×ˢ univ
⊢ toFun' e₁ e₂ (invFun' e₁ e₂ (x, w₁, w₂)) = (x, w₁, w₂)

tactic: obtain ⟨⟨h₁ : x ∈ e₁.baseSet, h₂ : x ∈ e₂.baseSet⟩, -⟩ := h
state_before: case mk.mk
B : Type u_1
inst✝⁶ : TopologicalSpace B
F₁ : Type u_2
inst✝⁵ : TopologicalSpace F₁
E₁ : B → Type u_3
inst✝⁴ : TopologicalSpace (TotalSpace F₁ E₁)
F₂ : Type u_4
inst✝³ : TopologicalSpace F₂
E₂ : B → Type u_5
inst✝² : TopologicalSpace (TotalSpace F₂ E₂)
e₁ : Trivialization F₁ TotalSpace.proj
e₂ : Trivialization F₂ TotalSpace.proj
inst✝¹ : (x : B) → Zero (E₁ x)
inst✝ : (x : B) → Zero (E₂ x)
x : B
w₁ : F₁
w₂ : F₂
h : (x, w₁, w₂) ∈ (e₁.baseSet ∩ e₂.baseSet) ×ˢ univ
⊢ toFun' e₁ e₂ (invFun' e₁ e₂ (x, w₁, w₂)) = (x, w₁, w₂)
state_after: case mk.mk.intro.intro
B : Type u_1
inst✝⁶ : TopologicalSpace B
F₁ : Type u_2
inst✝⁵ : TopologicalSpace F₁
E₁ : B → Type u_3
inst✝⁴ : TopologicalSpace (TotalSpace F₁ E₁)
F₂ : Type u_4
inst✝³ : TopologicalSpace F₂
E₂ : B → Type u_5
inst✝² : TopologicalSpace (TotalSpace F₂ E₂)
e₁ : Trivialization F₁ TotalSpace.proj
e₂ : Trivialization F₂ TotalSpace.proj
inst✝¹ : (x : B) → Zero (E₁ x)
inst✝ : (x : B) → Zero (E₂ x)
x : B
w₁ : F₁
w₂ : F₂
h₁ : x ∈ e₁.baseSet
h₂ : x ∈ e₂.baseSet
⊢ toFun' e₁ e₂ (invFun' e₁ e₂ (x, w₁, w₂)) = (x, w₁, w₂)

tactic: simp only [Prod.toFun', Prod.invFun', apply_mk_symm, h₁, h₂]
state_before: case mk.mk.intro.intro
B : Type u_1
inst✝⁶ : TopologicalSpace B
F₁ : Type u_2
inst✝⁵ : TopologicalSpace F₁
E₁ : B → Type u_3
inst✝⁴ : TopologicalSpace (TotalSpace F₁ E₁)
F₂ : Type u_4
inst✝³ : TopologicalSpace F₂
E₂ : B → Type u_5
inst✝² : TopologicalSpace (TotalSpace F₂ E₂)
e₁ : Trivialization F₁ TotalSpace.proj
e₂ : Trivialization F₂ TotalSpace.proj
inst✝¹ : (x : B) → Zero (E₁ x)
inst✝ : (x : B) → Zero (E₂ x)
x : B
w₁ : F₁
w₂ : F₂
h₁ : x ∈ e₁.baseSet
h₂ : x ∈ e₂.baseSet
⊢ toFun' e₁ e₂ (invFun' e₁ e₂ (x, w₁, w₂)) = (x, w₁, w₂)
state_after: no goals
Theorem: Real.tan_zero
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [tan]
state_before: x y : ℝ
⊢ tan 0 = 0
state_after: no goals
Theorem: CoxeterSystem.IsReflection.isReflection_inv
File: Mathlib/GroupTheory/Coxeter/Inversion.lean

tactic: rwa [ht.inv]
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
t : W
ht : cs.IsReflection t
⊢ cs.IsReflection t⁻¹
state_after: no goals
Theorem: Set.ncard_eq_two
File: Mathlib/Data/Set/Card.lean

tactic: rw [← encard_eq_two, ncard_def, ← Nat.cast_inj (R := ℕ∞), Nat.cast_ofNat]
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
⊢ s.ncard = 2 ↔ ∃ x y, x ≠ y ∧ s = {x, y}
state_after: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
⊢ ↑s.encard.toNat = 2 ↔ s.encard = 2

tactic: refine ⟨fun h ↦ ?_, fun h ↦ ?_⟩
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
⊢ ↑s.encard.toNat = 2 ↔ s.encard = 2
state_after: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 2
⊢ s.encard = 2

case refine_2
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : s.encard = 2
⊢ ↑s.encard.toNat = 2

tactic: rw [h]
state_before: case refine_2
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : s.encard = 2
⊢ ↑s.encard.toNat = 2
state_after: case refine_2
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : s.encard = 2
⊢ ↑(ENat.toNat 2) = 2

tactic: rfl
state_before: case refine_2
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : s.encard = 2
⊢ ↑(ENat.toNat 2) = 2
state_after: no goals

tactic: rwa [ENat.coe_toNat] at h
state_before: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 2
⊢ s.encard = 2
state_after: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 2
⊢ s.encard ≠ ⊤

tactic: rintro h'
state_before: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 2
⊢ s.encard ≠ ⊤
state_after: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 2
h' : s.encard = ⊤
⊢ False

tactic: simp [h'] at h
state_before: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
f : α → β
h : ↑s.encard.toNat = 2
h' : s.encard = ⊤
⊢ False
state_after: no goals
Theorem: Batteries.PairingHeapImp.Heap.size_tail?_lt
File: .lake/packages/batteries/Batteries/Data/PairingHeap.lean

tactic: simp only [Heap.tail?]
state_before: α : Type u_1
le : α → α → Bool
s' s : Heap α
⊢ tail? le s = some s' → s'.size < s.size
state_after: α : Type u_1
le : α → α → Bool
s' s : Heap α
⊢ Option.map (fun x => x.snd) (deleteMin le s) = some s' → s'.size < s.size

tactic: intro eq
state_before: α : Type u_1
le : α → α → Bool
s' s : Heap α
⊢ Option.map (fun x => x.snd) (deleteMin le s) = some s' → s'.size < s.size
state_after: α : Type u_1
le : α → α → Bool
s' s : Heap α
eq : Option.map (fun x => x.snd) (deleteMin le s) = some s'
⊢ s'.size < s.size

tactic: match eq₂ : s.deleteMin le, eq with
| some (a, tl), rfl => exact size_deleteMin_lt eq₂
state_before: α : Type u_1
le : α → α → Bool
s' s : Heap α
eq : Option.map (fun x => x.snd) (deleteMin le s) = some s'
⊢ s'.size < s.size
state_after: no goals

tactic: exact size_deleteMin_lt eq₂
state_before: α : Type u_1
le : α → α → Bool
s' s : Heap α
eq : Option.map (fun x => x.snd) (deleteMin le s) = some s'
a : α
tl : Heap α
eq₂ : deleteMin le s = some (a, tl)
⊢ ((fun x => x.snd) (a, tl)).size < s.size
state_after: no goals
Theorem: QuaternionAlgebra.mul_star_eq_coe
File: Mathlib/Algebra/Quaternion.lean

tactic: rw [← star_comm_self']
state_before: S : Type u_1
T : Type u_2
R : Type u_3
inst✝ : CommRing R
c₁ c₂ r x y z : R
a b c : ℍ[R,c₁,c₂]
⊢ a * star a = ↑(a * star a).re
state_after: S : Type u_1
T : Type u_2
R : Type u_3
inst✝ : CommRing R
c₁ c₂ r x y z : R
a b c : ℍ[R,c₁,c₂]
⊢ star a * a = ↑(star a * a).re

tactic: exact a.star_mul_eq_coe
state_before: S : Type u_1
T : Type u_2
R : Type u_3
inst✝ : CommRing R
c₁ c₂ r x y z : R
a b c : ℍ[R,c₁,c₂]
⊢ star a * a = ↑(star a * a).re
state_after: no goals
Theorem: Eq.rec_eq_cast
File: Mathlib/Logic/Basic.lean

tactic: induction h
state_before: α : Sort u_1
P : α → Sort u_2
x y : α
h : x = y
z : P x
⊢ h ▸ z = cast ⋯ z
state_after: case refl
α : Sort u_1
P : α → Sort u_2
x y : α
z : P x
⊢ ⋯ ▸ z = cast ⋯ z

tactic: rfl
state_before: case refl
α : Sort u_1
P : α → Sort u_2
x y : α
z : P x
⊢ ⋯ ▸ z = cast ⋯ z
state_after: no goals
Theorem: MulAction.orbit_smul
File: Mathlib/GroupTheory/GroupAction/Basic.lean

tactic: rw [inv_smul_smul]
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : MulAction G β
g : G
a : α
⊢ orbit G a = orbit G (g⁻¹ • g • a)
state_after: no goals
Theorem: SimpleGraph.Walk.concat_append
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: rw [concat_eq_append, ← append_assoc, cons_nil_append]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x : V
p : G.Walk u v
h : G.Adj v w
q : G.Walk w x
⊢ (p.concat h).append q = p.append (cons h q)
state_after: no goals
Theorem: Subtype.preirreducibleSpace
File: Mathlib/Topology/Irreducible.lean

tactic: rintro _ _ ⟨u, hu, rfl⟩ ⟨v, hv, rfl⟩ ⟨⟨x, hxs⟩, -, hxu⟩ ⟨⟨y, hys⟩, -, hyv⟩
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
h : IsPreirreducible s
⊢ IsPreirreducible univ
state_after: case intro.intro.intro.intro.intro.mk.intro.intro.mk.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
h : IsPreirreducible s
u : Set X
hu : IsOpen u
v : Set X
hv : IsOpen v
x : X
hxs : x ∈ s
hxu : ⟨x, hxs⟩ ∈ val ⁻¹' u
y : X
hys : y ∈ s
hyv : ⟨y, hys⟩ ∈ val ⁻¹' v
⊢ (univ ∩ (val ⁻¹' u ∩ val ⁻¹' v)).Nonempty

tactic: rcases h u v hu hv ⟨x, hxs, hxu⟩ ⟨y, hys, hyv⟩ with ⟨x, hxs, ⟨hxu, hxv⟩⟩
state_before: case intro.intro.intro.intro.intro.mk.intro.intro.mk.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
h : IsPreirreducible s
u : Set X
hu : IsOpen u
v : Set X
hv : IsOpen v
x : X
hxs : x ∈ s
hxu : ⟨x, hxs⟩ ∈ val ⁻¹' u
y : X
hys : y ∈ s
hyv : ⟨y, hys⟩ ∈ val ⁻¹' v
⊢ (univ ∩ (val ⁻¹' u ∩ val ⁻¹' v)).Nonempty
state_after: case intro.intro.intro.intro.intro.mk.intro.intro.mk.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
h : IsPreirreducible s
u : Set X
hu : IsOpen u
v : Set X
hv : IsOpen v
x✝ : X
hxs✝ : x✝ ∈ s
hxu✝ : ⟨x✝, hxs✝⟩ ∈ val ⁻¹' u
y : X
hys : y ∈ s
hyv : ⟨y, hys⟩ ∈ val ⁻¹' v
x : X
hxs : x ∈ s
hxu : x ∈ u
hxv : x ∈ v
⊢ (univ ∩ (val ⁻¹' u ∩ val ⁻¹' v)).Nonempty

tactic: exact ⟨⟨x, hxs⟩, ⟨Set.mem_univ _, ⟨hxu, hxv⟩⟩⟩
state_before: case intro.intro.intro.intro.intro.mk.intro.intro.mk.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
h : IsPreirreducible s
u : Set X
hu : IsOpen u
v : Set X
hv : IsOpen v
x✝ : X
hxs✝ : x✝ ∈ s
hxu✝ : ⟨x✝, hxs✝⟩ ∈ val ⁻¹' u
y : X
hys : y ∈ s
hyv : ⟨y, hys⟩ ∈ val ⁻¹' v
x : X
hxs : x ∈ s
hxu : x ∈ u
hxv : x ∈ v
⊢ (univ ∩ (val ⁻¹' u ∩ val ⁻¹' v)).Nonempty
state_after: no goals
Theorem: HilbertBasis.hasSum_repr
File: Mathlib/Analysis/InnerProductSpace/l2Space.lean

tactic: simpa using b.hasSum_repr_symm (b.repr x)
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : RCLike 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x : E
⊢ HasSum (fun i => ↑(b.repr x) i • (fun i => b.repr.symm (lp.single 2 i 1)) i) x
state_after: no goals
Theorem: TensorProduct.dualDistribInvOfBasis_apply
File: Mathlib/LinearAlgebra/Dual.lean

tactic: simp [dualDistribInvOfBasis]
state_before: R : Type u_1
A : Type u_2
M : Type u_3
N : Type u_4
ι : Type u_5
κ : Type u_6
inst✝⁸ : DecidableEq ι
inst✝⁷ : DecidableEq κ
inst✝⁶ : Fintype ι
inst✝⁵ : Fintype κ
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
b : Basis ι R M
c : Basis κ R N
f : Dual R (M ⊗[R] N)
⊢ (dualDistribInvOfBasis b c) f = ∑ i : ι, ∑ j : κ, f (b i ⊗ₜ[R] c j) • b.dualBasis i ⊗ₜ[R] c.dualBasis j
state_after: no goals
Theorem: CategoryTheory.Limits.imageSubobject_factors_comp_self
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
f : X ⟶ Y
inst✝ : HasImage f
W : C
k : W ⟶ X
⊢ (k ≫ factorThruImage f) ≫ (MonoOver.mk' (image.ι f)).arrow = k ≫ f
state_after: no goals
Theorem: vectorSpan_eq_span_vsub_set_left_ne
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: conv_lhs =>
  rw [vectorSpan_eq_span_vsub_set_left k hp, ← Set.insert_eq_of_mem hp, ←
    Set.insert_diff_singleton, Set.image_insert_eq]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
s : Set P
p : P
hp : p ∈ s
⊢ vectorSpan k s = Submodule.span k ((fun x => p -ᵥ x) '' (s \ {p}))
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
s : Set P
p : P
hp : p ∈ s
⊢ Submodule.span k (insert (p -ᵥ p) ((fun x => p -ᵥ x) '' (s \ {p}))) =
    Submodule.span k ((fun x => p -ᵥ x) '' (s \ {p}))

tactic: simp [Submodule.span_insert_eq_span]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
s : Set P
p : P
hp : p ∈ s
⊢ Submodule.span k (insert (p -ᵥ p) ((fun x => p -ᵥ x) '' (s \ {p}))) =
    Submodule.span k ((fun x => p -ᵥ x) '' (s \ {p}))
state_after: no goals
Theorem: AList.insert_entries_of_neg
File: Mathlib/Data/List/AList.lean

tactic: rw [insert_entries, kerase_of_not_mem_keys h]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
b : β a
s : AList β
h : a ∉ s
⊢ (insert a b s).entries = ⟨a, b⟩ :: s.entries
state_after: no goals