1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: WeakDual.CharacterSpace.union_zero
File: Mathlib/Topology/Algebra/Module/CharacterSpace.lean

tactic: rintro φ (hφ | rfl)
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : CommSemiring 𝕜
inst✝⁵ : TopologicalSpace 𝕜
inst✝⁴ : ContinuousAdd 𝕜
inst✝³ : ContinuousConstSMul 𝕜 𝕜
inst✝² : NonUnitalNonAssocSemiring A
inst✝¹ : TopologicalSpace A
inst✝ : Module 𝕜 A
⊢ characterSpace 𝕜 A ∪ {0} ≤ {φ | ∀ (x y : A), φ (x * y) = φ x * φ y}
state_after: case inl
𝕜 : Type u_1
A : Type u_2
inst✝⁶ : CommSemiring 𝕜
inst✝⁵ : TopologicalSpace 𝕜
inst✝⁴ : ContinuousAdd 𝕜
inst✝³ : ContinuousConstSMul 𝕜 𝕜
inst✝² : NonUnitalNonAssocSemiring A
inst✝¹ : TopologicalSpace A
inst✝ : Module 𝕜 A
φ : WeakDual 𝕜 A
hφ : φ ∈ characterSpace 𝕜 A
⊢ φ ∈ {φ | ∀ (x y : A), φ (x * y) = φ x * φ y}

case inr
𝕜 : Type u_1
A : Type u_2
inst✝⁶ : CommSemiring 𝕜
inst✝⁵ : TopologicalSpace 𝕜
inst✝⁴ : ContinuousAdd 𝕜
inst✝³ : ContinuousConstSMul 𝕜 𝕜
inst✝² : NonUnitalNonAssocSemiring A
inst✝¹ : TopologicalSpace A
inst✝ : Module 𝕜 A
⊢ 0 ∈ {φ | ∀ (x y : A), φ (x * y) = φ x * φ y}

tactic: exact hφ.2
state_before: case inl
𝕜 : Type u_1
A : Type u_2
inst✝⁶ : CommSemiring 𝕜
inst✝⁵ : TopologicalSpace 𝕜
inst✝⁴ : ContinuousAdd 𝕜
inst✝³ : ContinuousConstSMul 𝕜 𝕜
inst✝² : NonUnitalNonAssocSemiring A
inst✝¹ : TopologicalSpace A
inst✝ : Module 𝕜 A
φ : WeakDual 𝕜 A
hφ : φ ∈ characterSpace 𝕜 A
⊢ φ ∈ {φ | ∀ (x y : A), φ (x * y) = φ x * φ y}
state_after: no goals

tactic: exact fun _ _ => by exact (zero_mul (0 : 𝕜)).symm
state_before: case inr
𝕜 : Type u_1
A : Type u_2
inst✝⁶ : CommSemiring 𝕜
inst✝⁵ : TopologicalSpace 𝕜
inst✝⁴ : ContinuousAdd 𝕜
inst✝³ : ContinuousConstSMul 𝕜 𝕜
inst✝² : NonUnitalNonAssocSemiring A
inst✝¹ : TopologicalSpace A
inst✝ : Module 𝕜 A
⊢ 0 ∈ {φ | ∀ (x y : A), φ (x * y) = φ x * φ y}
state_after: no goals

tactic: exact (zero_mul (0 : 𝕜)).symm
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁶ : CommSemiring 𝕜
inst✝⁵ : TopologicalSpace 𝕜
inst✝⁴ : ContinuousAdd 𝕜
inst✝³ : ContinuousConstSMul 𝕜 𝕜
inst✝² : NonUnitalNonAssocSemiring A
inst✝¹ : TopologicalSpace A
inst✝ : Module 𝕜 A
x✝¹ x✝ : A
⊢ 0 (x✝¹ * x✝) = 0 x✝¹ * 0 x✝
state_after: no goals
Theorem: Set.wellFoundedLT_of_chainHeight_ne_top
File: Mathlib/Order/Height.lean

tactic: rwa [chainHeight_dual]
state_before: α : Type u_1
β : Type u_2
s✝ t : Set α
inst✝ : Preorder α
s : Set α
hs : s.chainHeight ≠ ⊤
⊢ (⇑ofDual ⁻¹' s).chainHeight ≠ ⊤
state_after: no goals
Theorem: Finset.Ico_erase_left
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: simp [← coe_inj]
state_before: ι : Type u_1
α : Type u_2
inst✝² : PartialOrder α
inst✝¹ : LocallyFiniteOrder α
a✝ b✝ c : α
inst✝ : DecidableEq α
a b : α
⊢ (Ico a b).erase a = Ioo a b
state_after: no goals
Theorem: MeasureTheory.VectorMeasure.zero_le_restrict_not_measurable
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: rw [restrict_zero, restrict_not_measurable _ hi]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
M : Type u_3
inst✝¹ : TopologicalSpace M
inst✝ : OrderedAddCommMonoid M
v w : VectorMeasure α M
i j : Set α
hi : ¬MeasurableSet i
⊢ restrict 0 i ≤ v.restrict i
state_after: no goals
Theorem: iSup_sup
File: Mathlib/Order/CompleteLattice.lean

tactic: rw [iSup_sup_eq, iSup_const]
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✝ : Nonempty ι
f : ι → α
a : α
⊢ (⨆ x, f x) ⊔ a = ⨆ x, f x ⊔ a
state_after: no goals
Theorem: CategoryTheory.Sieve.ofArrows_eq_ofObjects
File: Mathlib/CategoryTheory/Sites/Sieves.lean

tactic: refine le_antisymm (ofArrows_le_ofObjects Y f) (fun W g => ?_)
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z : C
f✝ : Y✝ ⟶ X✝
S R : Sieve X✝
X : C
hX : IsTerminal X
I : Type u_1
Y : I → C
f : (i : I) → Y i ⟶ X
⊢ ofArrows Y f = ofObjects Y X
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z : C
f✝ : Y✝ ⟶ X✝
S R : Sieve X✝
X : C
hX : IsTerminal X
I : Type u_1
Y : I → C
f : (i : I) → Y i ⟶ X
W : C
g : W ⟶ X
⊢ (ofObjects Y X).arrows g → (ofArrows Y f).arrows g

tactic: rw [mem_ofArrows_iff, mem_ofObjects_iff]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z : C
f✝ : Y✝ ⟶ X✝
S R : Sieve X✝
X : C
hX : IsTerminal X
I : Type u_1
Y : I → C
f : (i : I) → Y i ⟶ X
W : C
g : W ⟶ X
⊢ (ofObjects Y X).arrows g → (ofArrows Y f).arrows g
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z : C
f✝ : Y✝ ⟶ X✝
S R : Sieve X✝
X : C
hX : IsTerminal X
I : Type u_1
Y : I → C
f : (i : I) → Y i ⟶ X
W : C
g : W ⟶ X
⊢ (∃ i, Nonempty (W ⟶ Y i)) → ∃ i a, g = a ≫ f i

tactic: rintro ⟨i, ⟨h⟩⟩
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z : C
f✝ : Y✝ ⟶ X✝
S R : Sieve X✝
X : C
hX : IsTerminal X
I : Type u_1
Y : I → C
f : (i : I) → Y i ⟶ X
W : C
g : W ⟶ X
⊢ (∃ i, Nonempty (W ⟶ Y i)) → ∃ i a, g = a ≫ f i
state_after: case intro.intro
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z : C
f✝ : Y✝ ⟶ X✝
S R : Sieve X✝
X : C
hX : IsTerminal X
I : Type u_1
Y : I → C
f : (i : I) → Y i ⟶ X
W : C
g : W ⟶ X
i : I
h : W ⟶ Y i
⊢ ∃ i a, g = a ≫ f i

tactic: exact ⟨i, h, hX.hom_ext _ _⟩
state_before: case intro.intro
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
X✝ Y✝ Z : C
f✝ : Y✝ ⟶ X✝
S R : Sieve X✝
X : C
hX : IsTerminal X
I : Type u_1
Y : I → C
f : (i : I) → Y i ⟶ X
W : C
g : W ⟶ X
i : I
h : W ⟶ Y i
⊢ ∃ i a, g = a ≫ f i
state_after: no goals
Theorem: UpperSet.compl_sSup
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp only [coe_compl, coe_sSup, compl_iInter₂, LowerSet.coe_iSup₂]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : LE α
s t : UpperSet α
a : α
S : Set (UpperSet α)
⊢ ↑(sSup S).compl = ↑(⨆ s ∈ S, s.compl)
state_after: no goals
Theorem: mem_measurableAtom_self
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

tactic: simp (config := {contextual := true}) [measurableAtom]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
inst✝ : MeasurableSpace β
x : β
⊢ x ∈ measurableAtom x
state_after: no goals
Theorem: Nat.primeFactors_one
File: Mathlib/Data/Nat/PrimeFin.lean

tactic: ext
state_before: a b k m n p : ℕ
⊢ primeFactors 1 = ∅
state_after: case a
a b k m n p a✝ : ℕ
⊢ a✝ ∈ primeFactors 1 ↔ a✝ ∈ ∅

tactic: simpa using Prime.ne_one
state_before: case a
a b k m n p a✝ : ℕ
⊢ a✝ ∈ primeFactors 1 ↔ a✝ ∈ ∅
state_after: no goals
Theorem: Complex.conj_eq_iff_re
File: Mathlib/Data/Complex/Basic.lean

tactic: rintro ⟨r, rfl⟩
state_before: z : ℂ
⊢ (∃ r, z = ↑r) → ↑z.re = z
state_after: case intro
r : ℝ
⊢ ↑(↑r).re = ↑r

tactic: simp [ofReal']
state_before: case intro
r : ℝ
⊢ ↑(↑r).re = ↑r
state_after: no goals
Theorem: CategoryTheory.Pretriangulated.Opposite.rotate_distinguished_triangle
File: Mathlib/CategoryTheory/Triangulated/Opposite.lean

tactic: simp only [mem_distinguishedTriangles_iff, Pretriangulated.rotate_distinguished_triangle
  ((triangleOpEquivalence C).inverse.obj (T.rotate)).unop]
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
T : Triangle Cᵒᵖ
⊢ T ∈ distinguishedTriangles C ↔ T.rotate ∈ distinguishedTriangles C
state_after: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
T : Triangle Cᵒᵖ
⊢ ((triangleOpEquivalence C).inverse.obj T).unop ∈ Pretriangulated.distinguishedTriangles ↔
    ((triangleOpEquivalence C).inverse.obj T.rotate).unop.rotate ∈ Pretriangulated.distinguishedTriangles

tactic: exact distinguished_iff_of_iso (rotateTriangleOpEquivalenceInverseObjRotateUnopIso T).symm
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasShift C ℤ
inst✝³ : HasZeroObject C
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
T : Triangle Cᵒᵖ
⊢ ((triangleOpEquivalence C).inverse.obj T).unop ∈ Pretriangulated.distinguishedTriangles ↔
    ((triangleOpEquivalence C).inverse.obj T.rotate).unop.rotate ∈ Pretriangulated.distinguishedTriangles
state_after: no goals
Theorem: List.isRotated_iff_mod
File: Mathlib/Data/List/Rotate.lean

tactic: refine ⟨fun h => ?_, fun ⟨n, _, h⟩ => ⟨n, h⟩⟩
state_before: α : Type u
l l' : List α
⊢ l ~r l' ↔ ∃ n ≤ l.length, l.rotate n = l'
state_after: α : Type u
l l' : List α
h : l ~r l'
⊢ ∃ n ≤ l.length, l.rotate n = l'

tactic: obtain ⟨n, rfl⟩ := h
state_before: α : Type u
l l' : List α
h : l ~r l'
⊢ ∃ n ≤ l.length, l.rotate n = l'
state_after: case intro
α : Type u
l : List α
n : ℕ
⊢ ∃ n_1 ≤ l.length, l.rotate n_1 = l.rotate n

tactic: cases' l with hd tl
state_before: case intro
α : Type u
l : List α
n : ℕ
⊢ ∃ n_1 ≤ l.length, l.rotate n_1 = l.rotate n
state_after: case intro.nil
α : Type u
n : ℕ
⊢ ∃ n_1 ≤ [].length, [].rotate n_1 = [].rotate n

case intro.cons
α : Type u
n : ℕ
hd : α
tl : List α
⊢ ∃ n_1 ≤ (hd :: tl).length, (hd :: tl).rotate n_1 = (hd :: tl).rotate n

tactic: simp
state_before: case intro.nil
α : Type u
n : ℕ
⊢ ∃ n_1 ≤ [].length, [].rotate n_1 = [].rotate n
state_after: no goals

tactic: refine ⟨n % (hd :: tl).length, ?_, rotate_mod _ _⟩
state_before: case intro.cons
α : Type u
n : ℕ
hd : α
tl : List α
⊢ ∃ n_1 ≤ (hd :: tl).length, (hd :: tl).rotate n_1 = (hd :: tl).rotate n
state_after: case intro.cons
α : Type u
n : ℕ
hd : α
tl : List α
⊢ n % (hd :: tl).length ≤ (hd :: tl).length

tactic: refine (Nat.mod_lt _ ?_).le
state_before: case intro.cons
α : Type u
n : ℕ
hd : α
tl : List α
⊢ n % (hd :: tl).length ≤ (hd :: tl).length
state_after: case intro.cons
α : Type u
n : ℕ
hd : α
tl : List α
⊢ (hd :: tl).length > 0

tactic: simp
state_before: case intro.cons
α : Type u
n : ℕ
hd : α
tl : List α
⊢ (hd :: tl).length > 0
state_after: no goals
Theorem: Ordinal.eq_enumOrd
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: constructor
state_before: S : Set Ordinal.{u}
f : Ordinal.{u} → Ordinal.{u}
hS : Unbounded (fun x x_1 => x < x_1) S
⊢ StrictMono f ∧ range f = S ↔ f = enumOrd S
state_after: case mp
S : Set Ordinal.{u}
f : Ordinal.{u} → Ordinal.{u}
hS : Unbounded (fun x x_1 => x < x_1) S
⊢ StrictMono f ∧ range f = S → f = enumOrd S

case mpr
S : Set Ordinal.{u}
f : Ordinal.{u} → Ordinal.{u}
hS : Unbounded (fun x x_1 => x < x_1) S
⊢ f = enumOrd S → StrictMono f ∧ range f = S

tactic: rintro ⟨h₁, h₂⟩
state_before: case mp
S : Set Ordinal.{u}
f : Ordinal.{u} → Ordinal.{u}
hS : Unbounded (fun x x_1 => x < x_1) S
⊢ StrictMono f ∧ range f = S → f = enumOrd S
state_after: case mp.intro
S : Set Ordinal.{u}
f : Ordinal.{u} → Ordinal.{u}
hS : Unbounded (fun x x_1 => x < x_1) S
h₁ : StrictMono f
h₂ : range f = S
⊢ f = enumOrd S

tactic: rwa [← lt_wf.eq_strictMono_iff_eq_range h₁ (enumOrd_strictMono hS), range_enumOrd hS]
state_before: case mp.intro
S : Set Ordinal.{u}
f : Ordinal.{u} → Ordinal.{u}
hS : Unbounded (fun x x_1 => x < x_1) S
h₁ : StrictMono f
h₂ : range f = S
⊢ f = enumOrd S
state_after: no goals

tactic: rintro rfl
state_before: case mpr
S : Set Ordinal.{u}
f : Ordinal.{u} → Ordinal.{u}
hS : Unbounded (fun x x_1 => x < x_1) S
⊢ f = enumOrd S → StrictMono f ∧ range f = S
state_after: case mpr
S : Set Ordinal.{u}
hS : Unbounded (fun x x_1 => x < x_1) S
⊢ StrictMono (enumOrd S) ∧ range (enumOrd S) = S

tactic: exact ⟨enumOrd_strictMono hS, range_enumOrd hS⟩
state_before: case mpr
S : Set Ordinal.{u}
hS : Unbounded (fun x x_1 => x < x_1) S
⊢ StrictMono (enumOrd S) ∧ range (enumOrd S) = S
state_after: no goals
Theorem: SimpleGraph.Iso.card_edgeFinset_eq
File: Mathlib/Combinatorics/SimpleGraph/Operations.lean

tactic: apply Finset.card_eq_of_equiv
state_before: V : Type u_1
inst✝² : DecidableEq V
G : SimpleGraph V
s t : V
W : Type u_2
G' : SimpleGraph W
f : G ≃g G'
inst✝¹ : Fintype ↑G.edgeSet
inst✝ : Fintype ↑G'.edgeSet
⊢ G.edgeFinset.card = G'.edgeFinset.card
state_after: case i
V : Type u_1
inst✝² : DecidableEq V
G : SimpleGraph V
s t : V
W : Type u_2
G' : SimpleGraph W
f : G ≃g G'
inst✝¹ : Fintype ↑G.edgeSet
inst✝ : Fintype ↑G'.edgeSet
⊢ { x // x ∈ G.edgeFinset } ≃ { x // x ∈ G'.edgeFinset }

tactic: simp only [Set.mem_toFinset]
state_before: case i
V : Type u_1
inst✝² : DecidableEq V
G : SimpleGraph V
s t : V
W : Type u_2
G' : SimpleGraph W
f : G ≃g G'
inst✝¹ : Fintype ↑G.edgeSet
inst✝ : Fintype ↑G'.edgeSet
⊢ { x // x ∈ G.edgeFinset } ≃ { x // x ∈ G'.edgeFinset }
state_after: case i
V : Type u_1
inst✝² : DecidableEq V
G : SimpleGraph V
s t : V
W : Type u_2
G' : SimpleGraph W
f : G ≃g G'
inst✝¹ : Fintype ↑G.edgeSet
inst✝ : Fintype ↑G'.edgeSet
⊢ { x // x ∈ G.edgeSet } ≃ { x // x ∈ G'.edgeSet }

tactic: exact f.mapEdgeSet
state_before: case i
V : Type u_1
inst✝² : DecidableEq V
G : SimpleGraph V
s t : V
W : Type u_2
G' : SimpleGraph W
f : G ≃g G'
inst✝¹ : Fintype ↑G.edgeSet
inst✝ : Fintype ↑G'.edgeSet
⊢ { x // x ∈ G.edgeSet } ≃ { x // x ∈ G'.edgeSet }
state_after: no goals
Theorem: comap_prime
File: Mathlib/Algebra/Associated.lean

tactic: simp [h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoidWithZero α
inst✝⁴ : CommMonoidWithZero β
F : Type u_5
G : Type u_6
inst✝³ : FunLike F α β
inst✝² : MonoidWithZeroHomClass F α β
inst✝¹ : FunLike G β α
inst✝ : MulHomClass G β α
f : F
g : G
p : α
hinv : ∀ (a : α), g (f a) = a
hp : Prime (f p)
h : p = 0
⊢ f p = 0
state_after: no goals

tactic: convert map_dvd f h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoidWithZero α
inst✝⁴ : CommMonoidWithZero β
F : Type u_5
G : Type u_6
inst✝³ : FunLike F α β
inst✝² : MonoidWithZeroHomClass F α β
inst✝¹ : FunLike G β α
inst✝ : MulHomClass G β α
f : F
g : G
p : α
hinv : ∀ (a : α), g (f a) = a
hp : Prime (f p)
a b : α
h : p ∣ a * b
⊢ f p ∣ f a * f b
state_after: case h.e'_4
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoidWithZero α
inst✝⁴ : CommMonoidWithZero β
F : Type u_5
G : Type u_6
inst✝³ : FunLike F α β
inst✝² : MonoidWithZeroHomClass F α β
inst✝¹ : FunLike G β α
inst✝ : MulHomClass G β α
f : F
g : G
p : α
hinv : ∀ (a : α), g (f a) = a
hp : Prime (f p)
a b : α
h : p ∣ a * b
⊢ f a * f b = f (a * b)

tactic: simp
state_before: case h.e'_4
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoidWithZero α
inst✝⁴ : CommMonoidWithZero β
F : Type u_5
G : Type u_6
inst✝³ : FunLike F α β
inst✝² : MonoidWithZeroHomClass F α β
inst✝¹ : FunLike G β α
inst✝ : MulHomClass G β α
f : F
g : G
p : α
hinv : ∀ (a : α), g (f a) = a
hp : Prime (f p)
a b : α
h : p ∣ a * b
⊢ f a * f b = f (a * b)
state_after: no goals

tactic: intro h
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoidWithZero α
inst✝⁴ : CommMonoidWithZero β
F : Type u_5
G : Type u_6
inst✝³ : FunLike F α β
inst✝² : MonoidWithZeroHomClass F α β
inst✝¹ : FunLike G β α
inst✝ : MulHomClass G β α
f : F
g : G
p : α
hinv : ∀ (a : α), g (f a) = a
hp : Prime (f p)
a b : α
h : p ∣ a * b
⊢ f p ∣ f b → p ∣ b
state_after: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoidWithZero α
inst✝⁴ : CommMonoidWithZero β
F : Type u_5
G : Type u_6
inst✝³ : FunLike F α β
inst✝² : MonoidWithZeroHomClass F α β
inst✝¹ : FunLike G β α
inst✝ : MulHomClass G β α
f : F
g : G
p : α
hinv : ∀ (a : α), g (f a) = a
hp : Prime (f p)
a b : α
h✝ : p ∣ a * b
h : f p ∣ f b
⊢ p ∣ b

tactic: convert ← map_dvd g h <;> apply hinv
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : CommMonoidWithZero α
inst✝⁴ : CommMonoidWithZero β
F : Type u_5
G : Type u_6
inst✝³ : FunLike F α β
inst✝² : MonoidWithZeroHomClass F α β
inst✝¹ : FunLike G β α
inst✝ : MulHomClass G β α
f : F
g : G
p : α
hinv : ∀ (a : α), g (f a) = a
hp : Prime (f p)
a b : α
h✝ : p ∣ a * b
h : f p ∣ f b
⊢ p ∣ b
state_after: no goals
Theorem: Function.Antiperiodic.sub_eq
File: Mathlib/Algebra/Periodic.lean

tactic: simp only [← neg_eq_iff_eq_neg, ← h (x - c), sub_add_cancel]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x✝ : α
inst✝¹ : AddGroup α
inst✝ : InvolutiveNeg β
h : Antiperiodic f c
x : α
⊢ f (x - c) = -f x
state_after: no goals
Theorem: sdiff_unique
File: Mathlib/Order/BooleanAlgebra.lean

tactic: conv_rhs at s => rw [← sup_inf_sdiff x y, sup_comm]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
s : x ⊓ y ⊔ z = x
i : x ⊓ y ⊓ z = ⊥
⊢ x \ y = z
state_after: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
s : x ⊓ y ⊔ z = x \ y ⊔ x ⊓ y
i : x ⊓ y ⊓ z = ⊥
⊢ x \ y = z

tactic: rw [sup_comm] at s
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
s : x ⊓ y ⊔ z = x \ y ⊔ x ⊓ y
i : x ⊓ y ⊓ z = ⊥
⊢ x \ y = z
state_after: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
s : z ⊔ x ⊓ y = x \ y ⊔ x ⊓ y
i : x ⊓ y ⊓ z = ⊥
⊢ x \ y = z

tactic: conv_rhs at i => rw [← inf_inf_sdiff x y, inf_comm]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
s : z ⊔ x ⊓ y = x \ y ⊔ x ⊓ y
i : x ⊓ y ⊓ z = ⊥
⊢ x \ y = z
state_after: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
s : z ⊔ x ⊓ y = x \ y ⊔ x ⊓ y
i : x ⊓ y ⊓ z = x \ y ⊓ (x ⊓ y)
⊢ x \ y = z

tactic: rw [inf_comm] at i
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
s : z ⊔ x ⊓ y = x \ y ⊔ x ⊓ y
i : x ⊓ y ⊓ z = x \ y ⊓ (x ⊓ y)
⊢ x \ y = z
state_after: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
s : z ⊔ x ⊓ y = x \ y ⊔ x ⊓ y
i : z ⊓ (x ⊓ y) = x \ y ⊓ (x ⊓ y)
⊢ x \ y = z

tactic: exact (eq_of_inf_eq_sup_eq i s).symm
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
s : z ⊔ x ⊓ y = x \ y ⊔ x ⊓ y
i : z ⊓ (x ⊓ y) = x \ y ⊓ (x ⊓ y)
⊢ x \ y = z
state_after: no goals
Theorem: Ordnode.Valid'.node4L_lemma₃
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: omega
state_before: α : Type u_1
inst✝ : Preorder α
b c d : ℕ
mr₁ : 2 * d ≤ b + c + 1
mm₁ : b ≤ 3 * c
⊢ d ≤ 3 * c
state_after: no goals
Theorem: Fin.pred_castSucc_lt_iff
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [pred_lt_iff, castSucc_lt_succ_iff]
state_before: n m : ℕ
a b : Fin (n + 1)
ha : a.castSucc ≠ 0
⊢ a.castSucc.pred ha < b ↔ a ≤ b
state_after: no goals
Theorem: Module.Ray.units_smul_of_neg
File: Mathlib/LinearAlgebra/Ray.lean

tactic: rw [← neg_inj, neg_neg, ← neg_units_smul, units_smul_of_pos]
state_before: R : Type u_1
inst✝⁴ : StrictOrderedCommRing R
M : Type u_2
N : Type u_3
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
x y : M
u : Rˣ
hu : ↑u < 0
v : Ray R M
⊢ u • v = -v
state_after: case hu
R : Type u_1
inst✝⁴ : StrictOrderedCommRing R
M : Type u_2
N : Type u_3
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
x y : M
u : Rˣ
hu : ↑u < 0
v : Ray R M
⊢ 0 < ↑(-u)

tactic: rwa [Units.val_neg, Right.neg_pos_iff]
state_before: case hu
R : Type u_1
inst✝⁴ : StrictOrderedCommRing R
M : Type u_2
N : Type u_3
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
x y : M
u : Rˣ
hu : ↑u < 0
v : Ray R M
⊢ 0 < ↑(-u)
state_after: no goals
Theorem: MvPolynomial.IsHomogeneous.funext
File: Mathlib/RingTheory/MvPolynomial/Homogeneous.lean

tactic: apply funext_of_le_card hF hG h
state_before: σ✝ : Type u_1
τ : Type u_2
R✝ : Type u_3
S : Type u_4
inst✝⁵ inst✝⁴ : CommSemiring R✝
inst✝³ : CommSemiring S
φ ψ : MvPolynomial σ✝ R✝
m n✝¹ : ℕ
R : Type u_5
σ : Type u_6
inst✝² : CommRing R
inst✝¹ : IsDomain R
F✝ G✝ : MvPolynomial σ R
n✝ : ℕ
inst✝ : Infinite R
F G : MvPolynomial σ R
n : ℕ
hF : F.IsHomogeneous n
hG : G.IsHomogeneous n
h : ∀ (r : σ → R), (eval r) F = (eval r) G
⊢ F = G
state_after: σ✝ : Type u_1
τ : Type u_2
R✝ : Type u_3
S : Type u_4
inst✝⁵ inst✝⁴ : CommSemiring R✝
inst✝³ : CommSemiring S
φ ψ : MvPolynomial σ✝ R✝
m n✝¹ : ℕ
R : Type u_5
σ : Type u_6
inst✝² : CommRing R
inst✝¹ : IsDomain R
F✝ G✝ : MvPolynomial σ R
n✝ : ℕ
inst✝ : Infinite R
F G : MvPolynomial σ R
n : ℕ
hF : F.IsHomogeneous n
hG : G.IsHomogeneous n
h : ∀ (r : σ → R), (eval r) F = (eval r) G
⊢ ↑n ≤ #R

tactic: exact (Cardinal.nat_lt_aleph0 _).le.trans <| Cardinal.infinite_iff.mp ‹Infinite R›
state_before: σ✝ : Type u_1
τ : Type u_2
R✝ : Type u_3
S : Type u_4
inst✝⁵ inst✝⁴ : CommSemiring R✝
inst✝³ : CommSemiring S
φ ψ : MvPolynomial σ✝ R✝
m n✝¹ : ℕ
R : Type u_5
σ : Type u_6
inst✝² : CommRing R
inst✝¹ : IsDomain R
F✝ G✝ : MvPolynomial σ R
n✝ : ℕ
inst✝ : Infinite R
F G : MvPolynomial σ R
n : ℕ
hF : F.IsHomogeneous n
hG : G.IsHomogeneous n
h : ∀ (r : σ → R), (eval r) F = (eval r) G
⊢ ↑n ≤ #R
state_after: no goals
Theorem: Inducing.regularSpace
File: Mathlib/Topology/Separation.lean

tactic: rw [hf.nhds_eq_comap b]
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : RegularSpace X
x : X
s : Set X
inst✝ : TopologicalSpace Y
f : Y → X
hf : Inducing f
b : Y
⊢ (𝓝 b).HasBasis (?m.182939 b) (?m.182940 b)
state_after: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : RegularSpace X
x : X
s : Set X
inst✝ : TopologicalSpace Y
f : Y → X
hf : Inducing f
b : Y
⊢ (comap f (𝓝 (f b))).HasBasis (?m.182939 b) (?m.182940 b)

tactic: exact (closed_nhds_basis _).comap _
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : RegularSpace X
x : X
s : Set X
inst✝ : TopologicalSpace Y
f : Y → X
hf : Inducing f
b : Y
⊢ (comap f (𝓝 (f b))).HasBasis (?m.182939 b) (?m.182940 b)
state_after: no goals

tactic: exact hs.2.preimage hf.continuous
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : RegularSpace X
x : X
s✝ : Set X
inst✝ : TopologicalSpace Y
f : Y → X
hf : Inducing f
b : Y
s : Set X
hs : s ∈ 𝓝 (f b) ∧ IsClosed s
⊢ IsClosed (f ⁻¹' id s)
state_after: no goals
Theorem: Finsupp.card_Ioo
File: Mathlib/Data/Finsupp/Interval.lean

tactic: rw [card_Ioo_eq_card_Icc_sub_two, card_Icc]
state_before: ι : Type u_1
α : Type u_2
inst✝² : PartialOrder α
inst✝¹ : Zero α
inst✝ : LocallyFiniteOrder α
f g : ι →₀ α
⊢ (Ioo f g).card = ∏ i ∈ f.support ∪ g.support, (Icc (f i) (g i)).card - 2
state_after: no goals
Theorem: Complex.arg_cos_add_sin_mul_I_sub
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: rw [← one_mul (_ + _), ← ofReal_one, arg_mul_cos_add_sin_mul_I_sub zero_lt_one]
state_before: a x z : ℂ
θ : ℝ
⊢ (cos ↑θ + sin ↑θ * I).arg - θ = 2 * π * ↑⌊(π - θ) / (2 * π)⌋
state_after: no goals
Theorem: Real.natCastle_toNNReal'
File: Mathlib/Data/NNReal/Basic.lean

tactic: simpa [n.cast_nonneg.le_iff_eq] using toNNReal_le_toNNReal_iff' (r := n)
state_before: n : ℕ
r : ℝ
⊢ ↑n ≤ r.toNNReal ↔ ↑n ≤ r ∨ n = 0
state_after: no goals
Theorem: hasBasis_nhdsSet_Iic_Iic
File: Mathlib/Topology/Order/NhdsSet.lean

tactic: have : Nonempty (Ioi a) :=
  (Filter.nonempty_of_mem (self_mem_nhdsWithin : Ioi a ∈ 𝓝[>] a)).to_subtype
state_before: α : Type u_1
inst✝³ : LinearOrder α
inst✝² : TopologicalSpace α
inst✝¹ : OrderTopology α
a : α
inst✝ : (𝓝[>] a).NeBot
⊢ (𝓝ˢ (Iic a)).HasBasis (fun x => a < x) Iic
state_after: α : Type u_1
inst✝³ : LinearOrder α
inst✝² : TopologicalSpace α
inst✝¹ : OrderTopology α
a : α
inst✝ : (𝓝[>] a).NeBot
this : Nonempty ↑(Ioi a)
⊢ (𝓝ˢ (Iic a)).HasBasis (fun x => a < x) Iic

tactic: refine (hasBasis_nhdsSet_Iic_Iio _).to_hasBasis
  (fun c hc ↦ ?_) (fun _ h ↦ ⟨_, h, Iio_subset_Iic_self⟩)
state_before: α : Type u_1
inst✝³ : LinearOrder α
inst✝² : TopologicalSpace α
inst✝¹ : OrderTopology α
a : α
inst✝ : (𝓝[>] a).NeBot
this : Nonempty ↑(Ioi a)
⊢ (𝓝ˢ (Iic a)).HasBasis (fun x => a < x) Iic
state_after: α : Type u_1
inst✝³ : LinearOrder α
inst✝² : TopologicalSpace α
inst✝¹ : OrderTopology α
a : α
inst✝ : (𝓝[>] a).NeBot
this : Nonempty ↑(Ioi a)
c : α
hc : a < c
⊢ ∃ i', a < i' ∧ Iic i' ⊆ Iio c

tactic: simpa only [Iic_subset_Iio] using (Filter.nonempty_of_mem <| Ioo_mem_nhdsWithin_Ioi' hc)
state_before: α : Type u_1
inst✝³ : LinearOrder α
inst✝² : TopologicalSpace α
inst✝¹ : OrderTopology α
a : α
inst✝ : (𝓝[>] a).NeBot
this : Nonempty ↑(Ioi a)
c : α
hc : a < c
⊢ ∃ i', a < i' ∧ Iic i' ⊆ Iio c
state_after: no goals