1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Matrix.mul_add
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype n
L : Matrix m n α
M N : Matrix n o α
⊢ L * (M + N) = L * M + L * N
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype n
L : Matrix m n α
M N : Matrix n o α
i✝ : m
j✝ : o
⊢ (L * (M + N)) i✝ j✝ = (L * M + L * N) i✝ j✝

tactic: apply dotProduct_add
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype n
L : Matrix m n α
M N : Matrix n o α
i✝ : m
j✝ : o
⊢ (L * (M + N)) i✝ j✝ = (L * M + L * N) i✝ j✝
state_after: no goals
Theorem: Stream'.Seq1.bind_ret
File: Mathlib/Data/Seq/Seq.lean

tactic: dsimp [bind, map]
state_before: α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ bind (a, s) (ret ∘ f) = map f (a, s)
state_after: α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ join (ret (f a), Seq.map (ret ∘ f) s) = (f a, Seq.map f s)

tactic: rw [map_comp, ret]
state_before: α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ join (ret (f a), Seq.map (ret ∘ f) s) = (f a, Seq.map f s)
state_after: α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ join ((f a, nil), Seq.map ret (Seq.map f s)) = (f a, Seq.map f s)

tactic: simp
state_before: α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ join ((f a, nil), Seq.map ret (Seq.map f s)) = (f a, Seq.map f s)
state_after: no goals
Theorem: CircleDeg1Lift.units_apply_inv_apply
File: Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean

tactic: simp only [← mul_apply, f.mul_inv, coe_one, id]
state_before: f✝ g : CircleDeg1Lift
f : CircleDeg1Liftˣ
x : ℝ
⊢ ↑f (↑f⁻¹ x) = x
state_after: no goals
Theorem: Pi.lex_desc
File: Mathlib/Order/PiLex.lean

tactic: simpa only [Pi.toLex_apply, Function.comp_apply, Equiv.swap_apply_left] using h₂
state_before: ι : Type u_1
β : ι → Type u_2
r : ι → ι → Prop
s : {i : ι} → β i → β i → Prop
α : Type u_3
inst✝² : Preorder ι
inst✝¹ : DecidableEq ι
inst✝ : Preorder α
f : ι → α
i j : ι
h₁ : i ≤ j
h₂ : f j < f i
⊢ (fun x x_1 x_2 => x_1 < x_2) i (toLex (f ∘ ⇑(Equiv.swap i j)) i) (toLex f i)
state_after: no goals
Theorem: FGModuleCat.evaluation_coevaluation
File: Mathlib/Algebra/Category/FGModuleCat/Basic.lean

tactic: apply contractLeft_assoc_coevaluation' K V
state_before: K : Type u
inst✝ : Field K
V W : FGModuleCat K
⊢ FGModuleCatCoevaluation K V ▷ V ≫ (α_ V (FGModuleCatDual K V) V).hom ≫ V ◁ FGModuleCatEvaluation K V =
    (λ_ V).hom ≫ (ρ_ V).inv
state_after: no goals
Theorem: CategoryTheory.coevaluation_comp_leftAdjointMate
File: Mathlib/CategoryTheory/Monoidal/Rigid/Basic.lean

tactic: apply_fun (tensorRightHomEquiv _ (ᘁY) Y _).symm
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
⊢ η_ (ᘁY) Y ≫ (ᘁf) ▷ Y = η_ (ᘁX) X ≫ ᘁX ◁ f
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
⊢ (tensorRightHomEquiv (𝟙_ C) (ᘁY) Y ᘁX).symm (η_ (ᘁY) Y ≫ (ᘁf) ▷ Y) =
    (tensorRightHomEquiv (𝟙_ C) (ᘁY) Y ᘁX).symm (η_ (ᘁX) X ≫ ᘁX ◁ f)

tactic: simp
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
⊢ (tensorRightHomEquiv (𝟙_ C) (ᘁY) Y ᘁX).symm (η_ (ᘁY) Y ≫ (ᘁf) ▷ Y) =
    (tensorRightHomEquiv (𝟙_ C) (ᘁY) Y ᘁX).symm (η_ (ᘁX) X ≫ ᘁX ◁ f)
state_after: no goals
Theorem: MeasureTheory.map_div_right_eq_self
File: Mathlib/MeasureTheory/Group/Measure.lean

tactic: simp_rw [div_eq_mul_inv, map_mul_right_eq_self μ g⁻¹]
state_before: 𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSpace H
inst✝¹ : DivInvMonoid G
μ : Measure G
inst✝ : μ.IsMulRightInvariant
g : G
⊢ Measure.map (fun x => x / g) μ = μ
state_after: no goals
Theorem: CochainComplex.mappingCone.δ_snd
File: Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean

tactic: ext p q hpq
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
⊢ δ 0 1 (snd φ) = -(↑(fst φ)).comp (Cochain.ofHom φ) ⋯
state_after: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
p q : ℤ
hpq : p + 1 = q
⊢ (δ 0 1 (snd φ)).v p q hpq = (-(↑(fst φ)).comp (Cochain.ofHom φ) ⋯).v p q hpq

tactic: simp [d_snd_v φ p q hpq]
state_before: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
p q : ℤ
hpq : p + 1 = q
⊢ (δ 0 1 (snd φ)).v p q hpq = (-(↑(fst φ)).comp (Cochain.ofHom φ) ⋯).v p q hpq
state_after: no goals
Theorem: zpow_add₀
File: Mathlib/Algebra/GroupWithZero/Basic.lean

tactic: induction' n using Int.induction_on with n ihn n ihn
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : GroupWithZero G₀
a b c : G₀
ha : a ≠ 0
m n : ℤ
⊢ a ^ (m + n) = a ^ m * a ^ n
state_after: case hz
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : GroupWithZero G₀
a b c : G₀
ha : a ≠ 0
m : ℤ
⊢ a ^ (m + 0) = a ^ m * a ^ 0

case hp
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : GroupWithZero G₀
a b c : G₀
ha : a ≠ 0
m : ℤ
n : ℕ
ihn : a ^ (m + ↑n) = a ^ m * a ^ ↑n
⊢ a ^ (m + (↑n + 1)) = a ^ m * a ^ (↑n + 1)

case hn
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : GroupWithZero G₀
a b c : G₀
ha : a ≠ 0
m : ℤ
n : ℕ
ihn : a ^ (m + -↑n) = a ^ m * a ^ (-↑n)
⊢ a ^ (m + (-↑n - 1)) = a ^ m * a ^ (-↑n - 1)

tactic: simp
state_before: case hz
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : GroupWithZero G₀
a b c : G₀
ha : a ≠ 0
m : ℤ
⊢ a ^ (m + 0) = a ^ m * a ^ 0
state_after: no goals

tactic: simp only [← Int.add_assoc, zpow_add_one₀ ha, ihn, mul_assoc]
state_before: case hp
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : GroupWithZero G₀
a b c : G₀
ha : a ≠ 0
m : ℤ
n : ℕ
ihn : a ^ (m + ↑n) = a ^ m * a ^ ↑n
⊢ a ^ (m + (↑n + 1)) = a ^ m * a ^ (↑n + 1)
state_after: no goals

tactic: rw [zpow_sub_one₀ ha, ← mul_assoc, ← ihn, ← zpow_sub_one₀ ha, Int.add_sub_assoc]
state_before: case hn
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : GroupWithZero G₀
a b c : G₀
ha : a ≠ 0
m : ℤ
n : ℕ
ihn : a ^ (m + -↑n) = a ^ m * a ^ (-↑n)
⊢ a ^ (m + (-↑n - 1)) = a ^ m * a ^ (-↑n - 1)
state_after: no goals
Theorem: LocallyConstant.piecewise'_apply_right
File: Mathlib/Topology/LocallyConstant/Basic.lean

tactic: letI : ∀ j : C₀, Decidable (j ∈ Subtype.val ⁻¹' C₁) := fun j ↦ decidable_of_iff (↑j ∈ C₁) Iff.rfl
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
C₀ C₁ C₂ : Set X
h₀ : C₀ ⊆ C₁ ∪ C₂
h₁ : IsClosed C₁
h₂ : IsClosed C₂
f₁ : LocallyConstant (↑C₁) Z
f₂ : LocallyConstant (↑C₂) Z
inst✝ : DecidablePred fun x => x ∈ C₁
hf : ∀ (x : X) (hx : x ∈ C₁ ∩ C₂), f₁ ⟨x, ⋯⟩ = f₂ ⟨x, ⋯⟩
x : ↑C₀
hx : ↑x ∈ C₂
⊢ (piecewise' h₀ h₁ h₂ f₁ f₂ hf) x = f₂ ⟨↑x, hx⟩
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
C₀ C₁ C₂ : Set X
h₀ : C₀ ⊆ C₁ ∪ C₂
h₁ : IsClosed C₁
h₂ : IsClosed C₂
f₁ : LocallyConstant (↑C₁) Z
f₂ : LocallyConstant (↑C₂) Z
inst✝ : DecidablePred fun x => x ∈ C₁
hf : ∀ (x : X) (hx : x ∈ C₁ ∩ C₂), f₁ ⟨x, ⋯⟩ = f₂ ⟨x, ⋯⟩
x : ↑C₀
hx : ↑x ∈ C₂
this : (j : ↑C₀) → Decidable (j ∈ Subtype.val ⁻¹' C₁) := fun j => decidable_of_iff (↑j ∈ C₁) ⋯
⊢ (piecewise' h₀ h₁ h₂ f₁ f₂ hf) x = f₂ ⟨↑x, hx⟩

tactic: rw [piecewise', piecewise_apply_right (f := (f₁.comap
  ⟨(restrictPreimage C₁ ((↑) : C₀ → X)), continuous_subtype_val.restrictPreimage⟩))
  (hx := hx)]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
C₀ C₁ C₂ : Set X
h₀ : C₀ ⊆ C₁ ∪ C₂
h₁ : IsClosed C₁
h₂ : IsClosed C₂
f₁ : LocallyConstant (↑C₁) Z
f₂ : LocallyConstant (↑C₂) Z
inst✝ : DecidablePred fun x => x ∈ C₁
hf : ∀ (x : X) (hx : x ∈ C₁ ∩ C₂), f₁ ⟨x, ⋯⟩ = f₂ ⟨x, ⋯⟩
x : ↑C₀
hx : ↑x ∈ C₂
this : (j : ↑C₀) → Decidable (j ∈ Subtype.val ⁻¹' C₁) := fun j => decidable_of_iff (↑j ∈ C₁) ⋯
⊢ (piecewise' h₀ h₁ h₂ f₁ f₂ hf) x = f₂ ⟨↑x, hx⟩
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
C₀ C₁ C₂ : Set X
h₀ : C₀ ⊆ C₁ ∪ C₂
h₁ : IsClosed C₁
h₂ : IsClosed C₂
f₁ : LocallyConstant (↑C₁) Z
f₂ : LocallyConstant (↑C₂) Z
inst✝ : DecidablePred fun x => x ∈ C₁
hf : ∀ (x : X) (hx : x ∈ C₁ ∩ C₂), f₁ ⟨x, ⋯⟩ = f₂ ⟨x, ⋯⟩
x : ↑C₀
hx : ↑x ∈ C₂
this : (j : ↑C₀) → Decidable (j ∈ Subtype.val ⁻¹' C₁) := fun j => decidable_of_iff (↑j ∈ C₁) ⋯
⊢ (comap { toFun := C₂.restrictPreimage Subtype.val, continuous_toFun := ⋯ } f₂) ⟨x, hx⟩ = f₂ ⟨↑x, hx⟩

tactic: rfl
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
C₀ C₁ C₂ : Set X
h₀ : C₀ ⊆ C₁ ∪ C₂
h₁ : IsClosed C₁
h₂ : IsClosed C₂
f₁ : LocallyConstant (↑C₁) Z
f₂ : LocallyConstant (↑C₂) Z
inst✝ : DecidablePred fun x => x ∈ C₁
hf : ∀ (x : X) (hx : x ∈ C₁ ∩ C₂), f₁ ⟨x, ⋯⟩ = f₂ ⟨x, ⋯⟩
x : ↑C₀
hx : ↑x ∈ C₂
this : (j : ↑C₀) → Decidable (j ∈ Subtype.val ⁻¹' C₁) := fun j => decidable_of_iff (↑j ∈ C₁) ⋯
⊢ (comap { toFun := C₂.restrictPreimage Subtype.val, continuous_toFun := ⋯ } f₂) ⟨x, hx⟩ = f₂ ⟨↑x, hx⟩
state_after: no goals
Theorem: Subgroup.conj_smul_subgroupOf
File: Mathlib/Algebra/Group/Subgroup/Pointwise.lean

tactic: refine le_antisymm ?_ ?_
state_before: α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝³ : Group G
inst✝² : AddGroup A
s : Set G
inst✝¹ : Monoid α
inst✝ : MulDistribMulAction α G
P H : Subgroup G
hP : P ≤ H
h : ↥H
⊢ MulAut.conj h • P.subgroupOf H = (MulAut.conj ↑h • P).subgroupOf H
state_after: case refine_1
α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝³ : Group G
inst✝² : AddGroup A
s : Set G
inst✝¹ : Monoid α
inst✝ : MulDistribMulAction α G
P H : Subgroup G
hP : P ≤ H
h : ↥H
⊢ MulAut.conj h • P.subgroupOf H ≤ (MulAut.conj ↑h • P).subgroupOf H

case refine_2
α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝³ : Group G
inst✝² : AddGroup A
s : Set G
inst✝¹ : Monoid α
inst✝ : MulDistribMulAction α G
P H : Subgroup G
hP : P ≤ H
h : ↥H
⊢ (MulAut.conj ↑h • P).subgroupOf H ≤ MulAut.conj h • P.subgroupOf H

tactic: rintro - ⟨g, hg, rfl⟩
state_before: case refine_1
α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝³ : Group G
inst✝² : AddGroup A
s : Set G
inst✝¹ : Monoid α
inst✝ : MulDistribMulAction α G
P H : Subgroup G
hP : P ≤ H
h : ↥H
⊢ MulAut.conj h • P.subgroupOf H ≤ (MulAut.conj ↑h • P).subgroupOf H
state_after: case refine_1.intro.intro
α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝³ : Group G
inst✝² : AddGroup A
s : Set G
inst✝¹ : Monoid α
inst✝ : MulDistribMulAction α G
P H : Subgroup G
hP : P ≤ H
h g : ↥H
hg : g ∈ ↑(P.subgroupOf H)
⊢ ((MulDistribMulAction.toMonoidEnd (MulAut ↥H) ↥H) (MulAut.conj h)) g ∈ (MulAut.conj ↑h • P).subgroupOf H

tactic: exact ⟨g, hg, rfl⟩
state_before: case refine_1.intro.intro
α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝³ : Group G
inst✝² : AddGroup A
s : Set G
inst✝¹ : Monoid α
inst✝ : MulDistribMulAction α G
P H : Subgroup G
hP : P ≤ H
h g : ↥H
hg : g ∈ ↑(P.subgroupOf H)
⊢ ((MulDistribMulAction.toMonoidEnd (MulAut ↥H) ↥H) (MulAut.conj h)) g ∈ (MulAut.conj ↑h • P).subgroupOf H
state_after: no goals

tactic: rintro p ⟨g, hg, hp⟩
state_before: case refine_2
α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝³ : Group G
inst✝² : AddGroup A
s : Set G
inst✝¹ : Monoid α
inst✝ : MulDistribMulAction α G
P H : Subgroup G
hP : P ≤ H
h : ↥H
⊢ (MulAut.conj ↑h • P).subgroupOf H ≤ MulAut.conj h • P.subgroupOf H
state_after: case refine_2.intro.intro
α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝³ : Group G
inst✝² : AddGroup A
s : Set G
inst✝¹ : Monoid α
inst✝ : MulDistribMulAction α G
P H : Subgroup G
hP : P ≤ H
h p : ↥H
g : G
hg : g ∈ ↑P
hp : ((MulDistribMulAction.toMonoidEnd (MulAut G) G) (MulAut.conj ↑h)) g = H.subtype p
⊢ p ∈ MulAut.conj h • P.subgroupOf H

tactic: exact ⟨⟨g, hP hg⟩, hg, Subtype.ext hp⟩
state_before: case refine_2.intro.intro
α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝³ : Group G
inst✝² : AddGroup A
s : Set G
inst✝¹ : Monoid α
inst✝ : MulDistribMulAction α G
P H : Subgroup G
hP : P ≤ H
h p : ↥H
g : G
hg : g ∈ ↑P
hp : ((MulDistribMulAction.toMonoidEnd (MulAut G) G) (MulAut.conj ↑h)) g = H.subtype p
⊢ p ∈ MulAut.conj h • P.subgroupOf H
state_after: no goals
Theorem: CoheytingHom.cancel_left
File: Mathlib/Order/Heyting/Hom.lean

tactic: rw [← comp_apply, h, comp_apply]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁴ : FunLike F α β
inst✝³ : CoheytingAlgebra α
inst✝² : CoheytingAlgebra β
inst✝¹ : CoheytingAlgebra γ
inst✝ : CoheytingAlgebra δ
f f₁ f₂ : CoheytingHom α β
g g₁ g₂ : CoheytingHom β γ
hg : Injective ⇑g
h : g.comp f₁ = g.comp f₂
a : α
⊢ g (f₁ a) = g (f₂ a)
state_after: no goals
Theorem: WellFounded.wellFounded_iff_has_min
File: Mathlib/Order/WellFounded.lean

tactic: refine ⟨fun h => h.has_min, fun h => ⟨fun x => ?_⟩⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r' r : α → α → Prop
⊢ WellFounded r ↔ ∀ (s : Set α), s.Nonempty → ∃ m ∈ s, ∀ x ∈ s, ¬r x m
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r' r : α → α → Prop
h : ∀ (s : Set α), s.Nonempty → ∃ m ∈ s, ∀ x ∈ s, ¬r x m
x : α
⊢ Acc r x

tactic: by_contra hx
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r' r : α → α → Prop
h : ∀ (s : Set α), s.Nonempty → ∃ m ∈ s, ∀ x ∈ s, ¬r x m
x : α
⊢ Acc r x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r' r : α → α → Prop
h : ∀ (s : Set α), s.Nonempty → ∃ m ∈ s, ∀ x ∈ s, ¬r x m
x : α
hx : ¬Acc r x
⊢ False

tactic: obtain ⟨m, hm, hm'⟩ := h {x | ¬Acc r x} ⟨x, hx⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r' r : α → α → Prop
h : ∀ (s : Set α), s.Nonempty → ∃ m ∈ s, ∀ x ∈ s, ¬r x m
x : α
hx : ¬Acc r x
⊢ False
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r' r : α → α → Prop
h : ∀ (s : Set α), s.Nonempty → ∃ m ∈ s, ∀ x ∈ s, ¬r x m
x : α
hx : ¬Acc r x
m : α
hm : m ∈ {x | ¬Acc r x}
hm' : ∀ x ∈ {x | ¬Acc r x}, ¬r x m
⊢ False

tactic: refine hm ⟨_, fun y hy => ?_⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r' r : α → α → Prop
h : ∀ (s : Set α), s.Nonempty → ∃ m ∈ s, ∀ x ∈ s, ¬r x m
x : α
hx : ¬Acc r x
m : α
hm : m ∈ {x | ¬Acc r x}
hm' : ∀ x ∈ {x | ¬Acc r x}, ¬r x m
⊢ False
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r' r : α → α → Prop
h : ∀ (s : Set α), s.Nonempty → ∃ m ∈ s, ∀ x ∈ s, ¬r x m
x : α
hx : ¬Acc r x
m : α
hm : m ∈ {x | ¬Acc r x}
hm' : ∀ x ∈ {x | ¬Acc r x}, ¬r x m
y : α
hy : r y m
⊢ Acc r y

tactic: by_contra hy'
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r' r : α → α → Prop
h : ∀ (s : Set α), s.Nonempty → ∃ m ∈ s, ∀ x ∈ s, ¬r x m
x : α
hx : ¬Acc r x
m : α
hm : m ∈ {x | ¬Acc r x}
hm' : ∀ x ∈ {x | ¬Acc r x}, ¬r x m
y : α
hy : r y m
⊢ Acc r y
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r' r : α → α → Prop
h : ∀ (s : Set α), s.Nonempty → ∃ m ∈ s, ∀ x ∈ s, ¬r x m
x : α
hx : ¬Acc r x
m : α
hm : m ∈ {x | ¬Acc r x}
hm' : ∀ x ∈ {x | ¬Acc r x}, ¬r x m
y : α
hy : r y m
hy' : ¬Acc r y
⊢ False

tactic: exact hm' y hy' hy
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r✝ r' r : α → α → Prop
h : ∀ (s : Set α), s.Nonempty → ∃ m ∈ s, ∀ x ∈ s, ¬r x m
x : α
hx : ¬Acc r x
m : α
hm : m ∈ {x | ¬Acc r x}
hm' : ∀ x ∈ {x | ¬Acc r x}, ¬r x m
y : α
hy : r y m
hy' : ¬Acc r y
⊢ False
state_after: no goals
Theorem: Mathlib.Tactic.Ring.one_pow
File: Mathlib/Tactic/Ring/Basic.lean

tactic: simp
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
b : ℕ
⊢ Nat.rawCast 1 ^ b = Nat.rawCast 1
state_after: no goals
Theorem: MeasureTheory.Integrable.left_of_add_measure
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: rw [← memℒp_one_iff_integrable] at h ⊢
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → β
h : Integrable f (μ + ν)
⊢ Integrable f μ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → β
h : Memℒp f 1 (μ + ν)
⊢ Memℒp f 1 μ

tactic: exact h.left_of_add_measure
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → β
h : Memℒp f 1 (μ + ν)
⊢ Memℒp f 1 μ
state_after: no goals
Theorem: Inducing.isLindelof_preimage
File: Mathlib/Topology/Compactness/Lindelof.lean

tactic: replace hK := hK.inter_right hf'
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : X → Y
hf : Inducing f
hf' : IsClosed (range f)
K : Set Y
hK : IsLindelof K
⊢ IsLindelof (f ⁻¹' K)
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : X → Y
hf : Inducing f
hf' : IsClosed (range f)
K : Set Y
hK : IsLindelof (K ∩ range f)
⊢ IsLindelof (f ⁻¹' K)

tactic: rwa [hf.isLindelof_iff, image_preimage_eq_inter_range]
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : X → Y
hf : Inducing f
hf' : IsClosed (range f)
K : Set Y
hK : IsLindelof (K ∩ range f)
⊢ IsLindelof (f ⁻¹' K)
state_after: no goals
Theorem: Cubic.natDegree_of_b_ne_zero
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [of_a_eq_zero ha, natDegree_quadratic hb]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
ha : P.a = 0
hb : P.b ≠ 0
⊢ P.toPoly.natDegree = 2
state_after: no goals
Theorem: Function.Periodic.sub_eq
File: Mathlib/Algebra/Periodic.lean

tactic: simpa only [sub_add_cancel] using (h (x - c)).symm
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x✝ : α
inst✝ : AddGroup α
h : Periodic f c
x : α
⊢ f (x - c) = f x
state_after: no goals
Theorem: measurableSet_range_inr
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

tactic: rw [← image_univ]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
m : MeasurableSpace α
mβ : MeasurableSpace β
inst✝ : MeasurableSpace α
⊢ MeasurableSet (range Sum.inr)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
m : MeasurableSpace α
mβ : MeasurableSpace β
inst✝ : MeasurableSpace α
⊢ MeasurableSet (Sum.inr '' univ)

tactic: exact MeasurableSet.univ.inr_image
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
m : MeasurableSpace α
mβ : MeasurableSpace β
inst✝ : MeasurableSpace α
⊢ MeasurableSet (Sum.inr '' univ)
state_after: no goals
Theorem: Nat.count_eq_card_filter_range
File: Mathlib/Data/Nat/Count.lean

tactic: rw [count, List.countP_eq_length_filter]
state_before: p : ℕ → Prop
inst✝ : DecidablePred p
n : ℕ
⊢ count p n = (filter p (range n)).card
state_after: p : ℕ → Prop
inst✝ : DecidablePred p
n : ℕ
⊢ (List.filter (fun b => decide (p b)) (List.range n)).length = (filter p (range n)).card

tactic: rfl
state_before: p : ℕ → Prop
inst✝ : DecidablePred p
n : ℕ
⊢ (List.filter (fun b => decide (p b)) (List.range n)).length = (filter p (range n)).card
state_after: no goals
Theorem: BoundedContinuousFunction.abs_diff_coe_le_dist
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: rw [dist_eq_norm]
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝¹ : TopologicalSpace α
inst✝ : SeminormedAddCommGroup β
f g : α →ᵇ β
x : α
C : ℝ
⊢ ‖f x - g x‖ ≤ dist f g
state_after: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝¹ : TopologicalSpace α
inst✝ : SeminormedAddCommGroup β
f g : α →ᵇ β
x : α
C : ℝ
⊢ ‖f x - g x‖ ≤ ‖f - g‖

tactic: exact (f - g).norm_coe_le_norm x
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝¹ : TopologicalSpace α
inst✝ : SeminormedAddCommGroup β
f g : α →ᵇ β
x : α
C : ℝ
⊢ ‖f x - g x‖ ≤ ‖f - g‖
state_after: no goals
Theorem: mul_nonneg_iff_pos_imp_nonneg
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: refine mul_nonneg_iff.trans ?_
state_before: α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
⊢ 0 ≤ a * b ↔ (0 < a → 0 ≤ b) ∧ (0 < b → 0 ≤ a)
state_after: α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
⊢ 0 ≤ a ∧ 0 ≤ b ∨ a ≤ 0 ∧ b ≤ 0 ↔ (0 < a → 0 ≤ b) ∧ (0 < b → 0 ≤ a)

tactic: simp_rw [← not_le, ← or_iff_not_imp_left]
state_before: α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
⊢ 0 ≤ a ∧ 0 ≤ b ∨ a ≤ 0 ∧ b ≤ 0 ↔ (0 < a → 0 ≤ b) ∧ (0 < b → 0 ≤ a)
state_after: α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
⊢ 0 ≤ a ∧ 0 ≤ b ∨ a ≤ 0 ∧ b ≤ 0 ↔ (a ≤ 0 ∨ 0 ≤ b) ∧ (b ≤ 0 ∨ 0 ≤ a)

tactic: have := le_total a 0
state_before: α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
⊢ 0 ≤ a ∧ 0 ≤ b ∨ a ≤ 0 ∧ b ≤ 0 ↔ (a ≤ 0 ∨ 0 ≤ b) ∧ (b ≤ 0 ∨ 0 ≤ a)
state_after: α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
this : a ≤ 0 ∨ 0 ≤ a
⊢ 0 ≤ a ∧ 0 ≤ b ∨ a ≤ 0 ∧ b ≤ 0 ↔ (a ≤ 0 ∨ 0 ≤ b) ∧ (b ≤ 0 ∨ 0 ≤ a)

tactic: have := le_total b 0
state_before: α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
this : a ≤ 0 ∨ 0 ≤ a
⊢ 0 ≤ a ∧ 0 ≤ b ∨ a ≤ 0 ∧ b ≤ 0 ↔ (a ≤ 0 ∨ 0 ≤ b) ∧ (b ≤ 0 ∨ 0 ≤ a)
state_after: α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
this✝ : a ≤ 0 ∨ 0 ≤ a
this : b ≤ 0 ∨ 0 ≤ b
⊢ 0 ≤ a ∧ 0 ≤ b ∨ a ≤ 0 ∧ b ≤ 0 ↔ (a ≤ 0 ∨ 0 ≤ b) ∧ (b ≤ 0 ∨ 0 ≤ a)

tactic: tauto
state_before: α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
this✝ : a ≤ 0 ∨ 0 ≤ a
this : b ≤ 0 ∨ 0 ≤ b
⊢ 0 ≤ a ∧ 0 ≤ b ∨ a ≤ 0 ∧ b ≤ 0 ↔ (a ≤ 0 ∨ 0 ≤ b) ∧ (b ≤ 0 ∨ 0 ≤ a)
state_after: no goals
Theorem: Nat.lcm_mul_right
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: rw [mul_comm, mul_comm k n, lcm_mul_left, mul_comm]
state_before: m n k : ℕ
⊢ (m * n).lcm (k * n) = m.lcm k * n
state_after: no goals
Theorem: AlgEquiv.algebraMap_eq_apply
File: Mathlib/Algebra/Algebra/Equiv.lean

tactic: simpa using e.symm.toAlgHom.algebraMap_eq_apply h
state_before: R : Type uR
A₁ : Type uA₁
A₂ : Type uA₂
A₃ : Type uA₃
A₁' : Type uA₁'
A₂' : Type uA₂'
A₃' : Type uA₃'
inst✝¹² : CommSemiring R
inst✝¹¹ : Semiring A₁
inst✝¹⁰ : Semiring A₂
inst✝⁹ : Semiring A₃
inst✝⁸ : Semiring A₁'
inst✝⁷ : Semiring A₂'
inst✝⁶ : Semiring A₃'
inst✝⁵ : Algebra R A₁
inst✝⁴ : Algebra R A₂
inst✝³ : Algebra R A₃
inst✝² : Algebra R A₁'
inst✝¹ : Algebra R A₂'
inst✝ : Algebra R A₃'
e✝ e : A₁ ≃ₐ[R] A₂
y : R
x : A₁
h : (algebraMap R A₂) y = e x
⊢ (algebraMap R A₁) y = x
state_after: no goals
Theorem: odd_add_one_self'
File: Mathlib/Algebra/Ring/Parity.lean

tactic: simp [add_comm 1 a]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
inst✝¹ : Semiring α
inst✝ : Semiring β
a b : α
m n : ℕ
⊢ Odd (a + (1 + a))
state_after: no goals