tasksource/leandojo huggingface dataset:
Theorem: TopologicalSpace.OpenNhds.op_map_id_obj
File: Mathlib/Topology/Category/TopCat/OpenNhds.lean

tactic: simp
state_before: X Y : TopCat
f : X ⟶ Y
x : ↑X
U : (OpenNhds x)ᵒᵖ
⊢ (Functor.op (map (𝟙 X) x)).obj U = U
Theorem: convexHull_empty_iff
File: Mathlib/Analysis/Convex/Hull.lean

tactic: constructor
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.17174
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
⊢ ↑(convexHull 𝕜).toOrderHom s = ∅ ↔ s = ∅

tactic: intro h
state_before: case mp
𝕜 : Type u_2
E : Type u_1
F : Type ?u.17174
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
⊢ ↑(convexHull 𝕜).toOrderHom s = ∅ → s = ∅

tactic: rw [← Set.subset_empty_iff, ← h]
state_before: case mp
𝕜 : Type u_2
E : Type u_1
F : Type ?u.17174
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
h : ↑(convexHull 𝕜).toOrderHom s = ∅
⊢ s = ∅

tactic: exact subset_convexHull 𝕜 _
state_before: case mp
𝕜 : Type u_2
E : Type u_1
F : Type ?u.17174
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
h : ↑(convexHull 𝕜).toOrderHom s = ∅
⊢ s ⊆ ↑(convexHull 𝕜).toOrderHom s

tactic: rintro rfl
state_before: case mpr
𝕜 : Type u_2
E : Type u_1
F : Type ?u.17174
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
s t : Set E
x y : E
⊢ s = ∅ → ↑(convexHull 𝕜).toOrderHom s = ∅

tactic: exact convexHull_empty
state_before: case mpr
𝕜 : Type u_2
E : Type u_1
F : Type ?u.17174
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
t : Set E
x y : E
⊢ ↑(convexHull 𝕜).toOrderHom ∅ = ∅
Theorem: BooleanRing.le_sup_inf_aux
File: Mathlib/Algebra/Ring/BooleanRing.lean

tactic: ring
state_before: α : Type u_1
β : Type ?u.15500
γ : Type ?u.15503
inst✝² : BooleanRing α
inst✝¹ : BooleanRing β
inst✝ : BooleanRing γ
a b c : α
⊢ (a + b + a * b) * (a + c + a * c) =
    a * a + b * c + a * (b * c) + (a * b + a * a * b) + (a * c + a * a * c) + (a * b * c + a * a * b * c)

tactic: simp only [mul_self, add_self, add_zero]
state_before: α : Type u_1
β : Type ?u.15500
γ : Type ?u.15503
inst✝² : BooleanRing α
inst✝¹ : BooleanRing β
inst✝ : BooleanRing γ
a b c : α
⊢ a * a + b * c + a * (b * c) + (a * b + a * a * b) + (a * c + a * a * c) + (a * b * c + a * a * b * c) =
    a + b * c + a * (b * c)
Theorem: Finset.Int.gcd_div_eq_one
File: Mathlib/Algebra/GCDMonoid/Div.lean

tactic: obtain ⟨g, he, hg⟩ := Finset.extract_gcd f ⟨x, hx⟩
state_before: β : Type u_1
f : β → ℤ
s : Finset β
x : β
hx : x ∈ s
hfz : f x ≠ 0
⊢ (gcd s fun b => f b / gcd s f) = 1

tactic: refine' (Finset.gcd_congr rfl fun a ha => _).trans hg
state_before: case intro.intro
β : Type u_1
f : β → ℤ
s : Finset β
x : β
hx : x ∈ s
hfz : f x ≠ 0
g : β → ℤ
he : ∀ (b : β), b ∈ s → f b = gcd s f * g b
hg : gcd s g = 1
⊢ (gcd s fun b => f b / gcd s f) = 1

tactic: rw [he a ha, Int.mul_ediv_cancel_left]
state_before: case intro.intro
β : Type u_1
f : β → ℤ
s : Finset β
x : β
hx : x ∈ s
hfz : f x ≠ 0
g : β → ℤ
he : ∀ (b : β), b ∈ s → f b = gcd s f * g b
hg : gcd s g = 1
a : β
ha : a ∈ s
⊢ f a / gcd s f = g a

tactic: exact mt Finset.gcd_eq_zero_iff.1 fun h => hfz <| h x hx
state_before: case intro.intro.H
β : Type u_1
f : β → ℤ
s : Finset β
x : β
hx : x ∈ s
hfz : f x ≠ 0
g : β → ℤ
he : ∀ (b : β), b ∈ s → f b = gcd s f * g b
hg : gcd s g = 1
a : β
ha : a ∈ s
⊢ gcd s f ≠ 0
Theorem: PrimeSpectrum.zeroLocus_empty_of_one_mem
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [Set.eq_empty_iff_forall_not_mem]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
s : Set R
h : 1 ∈ s
⊢ zeroLocus s = ∅

tactic: intro x hx
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
s : Set R
h : 1 ∈ s
⊢ ∀ (x : PrimeSpectrum R), ¬x ∈ zeroLocus s

tactic: rw [mem_zeroLocus] at hx
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : x ∈ zeroLocus s
⊢ False

tactic: have x_prime : x.asIdeal.IsPrime := by infer_instance
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
⊢ False

tactic: have eq_top : x.asIdeal = ⊤ := by
  rw [Ideal.eq_top_iff_one]
  exact hx h
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
x_prime : Ideal.IsPrime x.asIdeal
⊢ False

tactic: apply x_prime.ne_top eq_top
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
x_prime : Ideal.IsPrime x.asIdeal
eq_top : x.asIdeal = ⊤
⊢ False

tactic: infer_instance
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
⊢ Ideal.IsPrime x.asIdeal

tactic: rw [Ideal.eq_top_iff_one]
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
x_prime : Ideal.IsPrime x.asIdeal
⊢ x.asIdeal = ⊤

tactic: exact hx h
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
x_prime : Ideal.IsPrime x.asIdeal
⊢ 1 ∈ x.asIdeal
Theorem: Finset.exists_eq_insert_iff
File: Mathlib/Data/Finset/Card.lean

tactic: constructor
state_before: α : Type u_1
β : Type ?u.47438
s✝ t✝ : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s t : Finset α
⊢ (∃ a x, insert a s = t) ↔ s ⊆ t ∧ card s + 1 = card t

tactic: rintro ⟨a, ha, rfl⟩
state_before: case mp
α : Type u_1
β : Type ?u.47438
s✝ t✝ : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s t : Finset α
⊢ (∃ a x, insert a s = t) → s ⊆ t ∧ card s + 1 = card t

tactic: exact ⟨subset_insert _ _, (card_insert_of_not_mem ha).symm⟩
state_before: case mp.intro.intro
α : Type u_1
β : Type ?u.47438
s✝ t : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s : Finset α
a : α
ha : ¬a ∈ s
⊢ s ⊆ insert a s ∧ card s + 1 = card (insert a s)

tactic: rintro ⟨hst, h⟩
state_before: case mpr
α : Type u_1
β : Type ?u.47438
s✝ t✝ : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s t : Finset α
⊢ s ⊆ t ∧ card s + 1 = card t → ∃ a x, insert a s = t

tactic: obtain ⟨a, ha⟩ : ∃ a, t \ s = {a} :=
  card_eq_one.1 (by rw [card_sdiff hst, ← h, add_tsub_cancel_left])
state_before: case mpr.intro
α : Type u_1
β : Type ?u.47438
s✝ t✝ : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s t : Finset α
hst : s ⊆ t
h : card s + 1 = card t
⊢ ∃ a x, insert a s = t

tactic: refine'
  ⟨a, fun hs => (_ : a ∉ {a}) <| mem_singleton_self _, by
    rw [insert_eq, ← ha, sdiff_union_of_subset hst]⟩
state_before: case mpr.intro.intro
α : Type u_1
β : Type ?u.47438
s✝ t✝ : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s t : Finset α
hst : s ⊆ t
h : card s + 1 = card t
a : α
ha : t \ s = {a}
⊢ ∃ a x, insert a s = t

tactic: rw [← ha]
state_before: case mpr.intro.intro
α : Type u_1
β : Type ?u.47438
s✝ t✝ : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s t : Finset α
hst : s ⊆ t
h : card s + 1 = card t
a : α
ha : t \ s = {a}
hs : a ∈ s
⊢ ¬a ∈ {a}

tactic: exact not_mem_sdiff_of_mem_right hs
state_before: case mpr.intro.intro
α : Type u_1
β : Type ?u.47438
s✝ t✝ : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s t : Finset α
hst : s ⊆ t
h : card s + 1 = card t
a : α
ha : t \ s = {a}
hs : a ∈ s
⊢ ¬a ∈ t \ s

tactic: rw [card_sdiff hst, ← h, add_tsub_cancel_left]
state_before: α : Type u_1
β : Type ?u.47438
s✝ t✝ : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s t : Finset α
hst : s ⊆ t
h : card s + 1 = card t
⊢ card (t \ s) = 1

tactic: rw [insert_eq, ← ha, sdiff_union_of_subset hst]
state_before: α : Type u_1
β : Type ?u.47438
s✝ t✝ : Finset α
f : α → β
n : ℕ
inst✝ : DecidableEq α
s t : Finset α
hst : s ⊆ t
h : card s + 1 = card t
a : α
ha : t \ s = {a}
⊢ insert a s = t
Theorem: ModelWithCorners.symm_map_nhdsWithin_range
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rw [← I.map_nhds_eq, map_map, I.symm_comp_self, map_id]
state_before: 𝕜 : Type u_3
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_1
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
x : H
⊢ map (↑(ModelWithCorners.symm I)) (𝓝[range ↑I] ↑I x) = 𝓝 x
Theorem: vectorSpan_pair_rev
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: rw [pair_comm, vectorSpan_pair]
state_before: k : Type u_2
V : Type u_1
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type ?u.361753
p₁ p₂ : P
⊢ vectorSpan k {p₁, p₂} = Submodule.span k {p₂ -ᵥ p₁}
Theorem: Equiv.Perm.signAux_one
File: Mathlib/GroupTheory/Perm/Sign.lean

tactic: unfold signAux
state_before: α : Type u
β : Type v
inst✝ : DecidableEq α
n : ℕ
⊢ signAux 1 = 1

tactic: conv => rhs; rw [← @Finset.prod_const_one ℤˣ _ (finPairsLT n)]
state_before: α : Type u
β : Type v
inst✝ : DecidableEq α
n : ℕ
⊢ (∏ x in finPairsLT n, if ↑1 x.fst ≤ ↑1 x.snd then -1 else 1) = 1

tactic: exact Finset.prod_congr rfl fun a ha => if_neg (mem_finPairsLT.1 ha).not_le
state_before: α : Type u
β : Type v
inst✝ : DecidableEq α
n : ℕ
⊢ (∏ x in finPairsLT n, if ↑1 x.fst ≤ ↑1 x.snd then -1 else 1) = ∏ _x in finPairsLT n, 1
Theorem: Nat.max_le
File: Std/Data/Nat/Lemmas.lean

tactic: rw [Nat.max_def]
state_before: a b c : Nat
x✝ : a ≤ c ∧ b ≤ c
h₁ : a ≤ c
h₂ : b ≤ c
⊢ max a b ≤ c

tactic: split <;> assumption
state_before: a b c : Nat
x✝ : a ≤ c ∧ b ≤ c
h₁ : a ≤ c
h₂ : b ≤ c
⊢ (if a ≤ b then b else a) ≤ c
Theorem: CategoryTheory.id_of_comp_left_id
File: Mathlib/CategoryTheory/Category/Basic.lean

tactic: convert w (𝟙 X)
state_before: C : Type u
inst✝ : Category C
X Y Z : C
f : X ⟶ X
w : ∀ {Y : C} (g : X ⟶ Y), f ≫ g = g
⊢ f = 𝟙 X

tactic: aesop
state_before: case h.e'_2
C : Type u
inst✝ : Category C
X Y Z : C
f : X ⟶ X
w : ∀ {Y : C} (g : X ⟶ Y), f ≫ g = g
⊢ f = f ≫ 𝟙 X
Theorem: Set.MulAntidiagonal.fst_eq_fst_iff_snd_eq_snd
File: Mathlib/Data/Set/MulAntidiagonal.lean

tactic: rw [← h]
state_before: α : Type u_1
inst✝ : CancelCommMonoid α
s t : Set α
a : α
x y : ↑(mulAntidiagonal s t a)
h : (↑x).fst = (↑y).fst
⊢ a = (↑y).fst * (↑x).snd

tactic: exact x.2.2.2.symm
state_before: α : Type u_1
inst✝ : CancelCommMonoid α
s t : Set α
a : α
x y : ↑(mulAntidiagonal s t a)
h : (↑x).fst = (↑y).fst
⊢ a = (↑x).fst * (↑x).snd

tactic: rw [← h]
state_before: α : Type u_1
inst✝ : CancelCommMonoid α
s t : Set α
a : α
x y : ↑(mulAntidiagonal s t a)
h : (↑x).snd = (↑y).snd
⊢ a = (↑x).fst * (↑y).snd

tactic: exact x.2.2.2.symm
state_before: α : Type u_1
inst✝ : CancelCommMonoid α
s t : Set α
a : α
x y : ↑(mulAntidiagonal s t a)
h : (↑x).snd = (↑y).snd
⊢ a = (↑x).fst * (↑x).snd
Theorem: Submodule.linearProjOfIsCompl_apply_left
File: Mathlib/LinearAlgebra/Projection.lean

tactic: simp [linearProjOfIsCompl]
state_before: R : Type u_2
inst✝⁹ : Ring R
E : Type u_1
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type ?u.129385
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.129901
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
p q : Submodule R E
S : Type ?u.130864
inst✝² : Semiring S
M : Type ?u.130870
inst✝¹ : AddCommMonoid M
inst✝ : Module S M
m : Submodule S M
h : IsCompl p q
x : { x // x ∈ p }
⊢ ↑(linearProjOfIsCompl p q h) ↑x = x
Theorem: MeasureTheory.VectorMeasure.MutuallySingular.mk
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: refine' ⟨s, hs, fun t hst => _, fun t hst => _⟩ <;> by_cases ht : MeasurableSet t
state_before: α : Type u_1
β : Type ?u.656315
m : MeasurableSpace α
L : Type ?u.656321
M : Type u_2
N : Type u_3
inst✝⁵ : AddCommMonoid L
inst✝⁴ : TopologicalSpace L
inst✝³ : AddCommMonoid M
inst✝² : TopologicalSpace M
inst✝¹ : AddCommMonoid N
inst✝ : TopologicalSpace N
v v₁ v₂ : VectorMeasure α M
w w₁ w₂ : VectorMeasure α N
s : Set α
hs : MeasurableSet s
h₁ : ∀ (t : Set α), t ⊆ s → MeasurableSet t → ↑v t = 0
h₂ : ∀ (t : Set α), t ⊆ sᶜ → MeasurableSet t → ↑w t = 0
⊢ v ⟂ᵥ w

tactic: exact h₁ t hst ht
state_before: case pos
α : Type u_1
β : Type ?u.656315
m : MeasurableSpace α
L : Type ?u.656321
M : Type u_2
N : Type u_3
inst✝⁵ : AddCommMonoid L
inst✝⁴ : TopologicalSpace L
inst✝³ : AddCommMonoid M
inst✝² : TopologicalSpace M
inst✝¹ : AddCommMonoid N
inst✝ : TopologicalSpace N
v v₁ v₂ : VectorMeasure α M
w w₁ w₂ : VectorMeasure α N
s : Set α
hs : MeasurableSet s
h₁ : ∀ (t : Set α), t ⊆ s → MeasurableSet t → ↑v t = 0
h₂ : ∀ (t : Set α), t ⊆ sᶜ → MeasurableSet t → ↑w t = 0
t : Set α
hst : t ⊆ s
ht : MeasurableSet t
⊢ ↑v t = 0

tactic: exact not_measurable v ht
state_before: case neg
α : Type u_1
β : Type ?u.656315
m : MeasurableSpace α
L : Type ?u.656321
M : Type u_2
N : Type u_3
inst✝⁵ : AddCommMonoid L
inst✝⁴ : TopologicalSpace L
inst✝³ : AddCommMonoid M
inst✝² : TopologicalSpace M
inst✝¹ : AddCommMonoid N
inst✝ : TopologicalSpace N
v v₁ v₂ : VectorMeasure α M
w w₁ w₂ : VectorMeasure α N
s : Set α
hs : MeasurableSet s
h₁ : ∀ (t : Set α), t ⊆ s → MeasurableSet t → ↑v t = 0
h₂ : ∀ (t : Set α), t ⊆ sᶜ → MeasurableSet t → ↑w t = 0
t : Set α
hst : t ⊆ s
ht : ¬MeasurableSet t
⊢ ↑v t = 0

tactic: exact h₂ t hst ht
state_before: case pos
α : Type u_1
β : Type ?u.656315
m : MeasurableSpace α
L : Type ?u.656321
M : Type u_2
N : Type u_3
inst✝⁵ : AddCommMonoid L
inst✝⁴ : TopologicalSpace L
inst✝³ : AddCommMonoid M
inst✝² : TopologicalSpace M
inst✝¹ : AddCommMonoid N
inst✝ : TopologicalSpace N
v v₁ v₂ : VectorMeasure α M
w w₁ w₂ : VectorMeasure α N
s : Set α
hs : MeasurableSet s
h₁ : ∀ (t : Set α), t ⊆ s → MeasurableSet t → ↑v t = 0
h₂ : ∀ (t : Set α), t ⊆ sᶜ → MeasurableSet t → ↑w t = 0
t : Set α
hst : t ⊆ sᶜ
ht : MeasurableSet t
⊢ ↑w t = 0

tactic: exact not_measurable w ht
state_before: case neg
α : Type u_1
β : Type ?u.656315
m : MeasurableSpace α
L : Type ?u.656321
M : Type u_2
N : Type u_3
inst✝⁵ : AddCommMonoid L
inst✝⁴ : TopologicalSpace L
inst✝³ : AddCommMonoid M
inst✝² : TopologicalSpace M
inst✝¹ : AddCommMonoid N
inst✝ : TopologicalSpace N
v v₁ v₂ : VectorMeasure α M
w w₁ w₂ : VectorMeasure α N
s : Set α
hs : MeasurableSet s
h₁ : ∀ (t : Set α), t ⊆ s → MeasurableSet t → ↑v t = 0
h₂ : ∀ (t : Set α), t ⊆ sᶜ → MeasurableSet t → ↑w t = 0
t : Set α
hst : t ⊆ sᶜ
ht : ¬MeasurableSet t
⊢ ↑w t = 0
Theorem: Std.RBNode.Stream.foldr_eq_foldr_toList
File: Std/Data/RBMap/Lemmas.lean

tactic: induction s <;> simp [-List.foldr] <;> simp [*, RBNode.foldr_eq_foldr_toList]
state_before: α : Type u_1
α✝ : Type u_2
f : α → α✝ → α✝
init : α✝
s : RBNode.Stream α
⊢ foldr f s init = List.foldr f init (toList s)
Theorem: Nat.leRecOn_succ_left
File: Mathlib/Data/Nat/Basic.lean

tactic: rw [Subsingleton.elim h1 (le_trans (le_succ n) h2), leRecOn_trans (le_succ n) h2, leRecOn_succ']
state_before: m✝ n✝ k : ℕ
C : ℕ → Sort u
n m : ℕ
h1 : n ≤ m
h2 : n + 1 ≤ m
next : {k : ℕ} → C k → C (k + 1)
x : C n
⊢ leRecOn h2 (fun {k} => next) (next x) = leRecOn h1 (fun {k} => next) x
Theorem: Associates.eq_of_prod_eq_prod
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: classical
  have : a.prod.factors = b.prod.factors := by rw [h]
  rwa [prod_factors, prod_factors] at this
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Nontrivial α
a b : FactorSet α
h : FactorSet.prod a = FactorSet.prod b
⊢ a = b

tactic: have : a.prod.factors = b.prod.factors := by rw [h]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Nontrivial α
a b : FactorSet α
h : FactorSet.prod a = FactorSet.prod b
⊢ a = b

tactic: rwa [prod_factors, prod_factors] at this
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Nontrivial α
a b : FactorSet α
h : FactorSet.prod a = FactorSet.prod b
this : factors (FactorSet.prod a) = factors (FactorSet.prod b)
⊢ a = b

tactic: rw [h]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Nontrivial α
a b : FactorSet α
h : FactorSet.prod a = FactorSet.prod b
⊢ factors (FactorSet.prod a) = factors (FactorSet.prod b)
Theorem: Submodule.exists_sum_mem_mem_orthogonal
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: have h_mem : v ∈ K ⊔ Kᗮ := by simp [Submodule.sup_orthogonal_of_completeSpace]
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.771484
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
⊢ ∃ y, y ∈ K ∧ ∃ z, z ∈ Kᗮ ∧ v = y + z

tactic: obtain ⟨y, hy, z, hz, hyz⟩ := Submodule.mem_sup.mp h_mem
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.771484
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
h_mem : v ∈ K ⊔ Kᗮ
⊢ ∃ y, y ∈ K ∧ ∃ z, z ∈ Kᗮ ∧ v = y + z

tactic: exact ⟨y, hy, z, hz, hyz.symm⟩
state_before: case intro.intro.intro.intro
𝕜 : Type u_2
E : Type u_1
F : Type ?u.771484
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
h_mem : v ∈ K ⊔ Kᗮ
y : E
hy : y ∈ K
z : E
hz : z ∈ Kᗮ
hyz : y + z = v
⊢ ∃ y, y ∈ K ∧ ∃ z, z ∈ Kᗮ ∧ v = y + z

tactic: simp [Submodule.sup_orthogonal_of_completeSpace]
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.771484
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
⊢ v ∈ K ⊔ Kᗮ
Theorem: Asymptotics.isBigO_congr
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simp only [IsBigO_def]
state_before: α : Type u_1
β : Type ?u.58706
E : Type u_2
F : Type u_3
G : Type ?u.58715
E' : Type ?u.58718
F' : Type ?u.58721
G' : Type ?u.58724
E'' : Type ?u.58727
F'' : Type ?u.58730
G'' : Type ?u.58733
R : Type ?u.58736
R' : Type ?u.58739
𝕜 : Type ?u.58742
𝕜' : Type ?u.58745
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f₁ f₂ : α → E
g₁ g₂ : α → F
hf : f₁ =ᶠ[l] f₂
hg : g₁ =ᶠ[l] g₂
⊢ f₁ =O[l] g₁ ↔ f₂ =O[l] g₂

tactic: exact exists_congr fun c => isBigOWith_congr rfl hf hg
state_before: α : Type u_1
β : Type ?u.58706
E : Type u_2
F : Type u_3
G : Type ?u.58715
E' : Type ?u.58718
F' : Type ?u.58721
G' : Type ?u.58724
E'' : Type ?u.58727
F'' : Type ?u.58730
G'' : Type ?u.58733
R : Type ?u.58736
R' : Type ?u.58739
𝕜 : Type ?u.58742
𝕜' : Type ?u.58745
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f₁ f₂ : α → E
g₁ g₂ : α → F
hf : f₁ =ᶠ[l] f₂
hg : g₁ =ᶠ[l] g₂
⊢ (∃ c, IsBigOWith c l f₁ g₁) ↔ ∃ c, IsBigOWith c l f₂ g₂
Theorem: Polynomial.mem_frange_iff
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: simp [frange, eq_comm]
state_before: R : Type u
S : Type ?u.43142
inst✝ : Semiring R
p : R[X]
c : R
⊢ c ∈ frange p ↔ ∃ n, n ∈ support p ∧ c = coeff p n
Theorem: LinearMap.toMatrixAlgEquiv'_apply
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: simp [LinearMap.toMatrixAlgEquiv']
state_before: R : Type u_1
inst✝² : CommSemiring R
k : Type ?u.1190163
l : Type ?u.1190166
m : Type ?u.1190169
n : Type u_2
inst✝¹ : Fintype n
inst✝ : DecidableEq n
f : (n → R) →ₗ[R] n → R
i j : n
⊢ ↑toMatrixAlgEquiv' f i j = ↑f (fun j' => if j' = j then 1 else 0) i
Theorem: List.pairwise_reverse
File: Std/Data/List/Lemmas.lean

tactic: induction l <;> simp [*, pairwise_append, and_comm]
state_before: α : Type u_1
R : α → α → Prop
l : List α
⊢ Pairwise R (reverse l) ↔ Pairwise (fun a b => R b a) l
Theorem: CategoryTheory.MonoidalFunctor.mapAction_μ_inv_hom
File: Mathlib/RepresentationTheory/Action.lean

tactic: rw [← cancel_mono (F.μ X.V Y.V), IsIso.inv_hom_id, ← F.mapAction_toLaxMonoidalFunctor_μ_hom G,
  ← Action.comp_hom, IsIso.inv_hom_id, Action.id_hom]
state_before: V : Type (u + 1)
inst✝³ : LargeCategory V
W : Type (u + 1)
inst✝² : LargeCategory W
inst✝¹ : MonoidalCategory V
inst✝ : MonoidalCategory W
F : MonoidalFunctor V W
G : MonCat
X Y : Action V G
⊢ (inv (LaxMonoidalFunctor.μ (mapAction F G).toLaxMonoidalFunctor X Y)).hom =
    inv (LaxMonoidalFunctor.μ F.toLaxMonoidalFunctor X.V Y.V)
Theorem: FirstOrder.Language.Hom.range_eq_map
File: Mathlib/ModelTheory/Substructures.lean

tactic: ext
state_before: L : Language
M : Type w
N : Type u_1
P : Type ?u.835752
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
S : Substructure L M
f : M →[L] N
⊢ range f = Substructure.map f ⊤

tactic: simp
state_before: case h
L : Language
M : Type w
N : Type u_1
P : Type ?u.835752
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
S : Substructure L M
f : M →[L] N
x✝ : N
⊢ x✝ ∈ range f ↔ x✝ ∈ Substructure.map f ⊤
Theorem: AlgEquiv.autCongr_refl
File: Mathlib/Algebra/Algebra/Equiv.lean

tactic: ext
state_before: R : Type u
A₁ : Type v
A₂ : Type w
A₃ : Type u₁
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A₁
inst✝⁴ : Semiring A₂
inst✝³ : Semiring A₃
inst✝² : Algebra R A₁
inst✝¹ : Algebra R A₂
inst✝ : Algebra R A₃
e : A₁ ≃ₐ[R] A₂
⊢ autCongr refl = MulEquiv.refl (A₁ ≃ₐ[R] A₁)

tactic: rfl
state_before: case h.h
R : Type u
A₁ : Type v
A₂ : Type w
A₃ : Type u₁
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A₁
inst✝⁴ : Semiring A₂
inst✝³ : Semiring A₃
inst✝² : Algebra R A₁
inst✝¹ : Algebra R A₂
inst✝ : Algebra R A₃
e : A₁ ≃ₐ[R] A₂
x✝ : A₁ ≃ₐ[R] A₁
a✝ : A₁
⊢ ↑(↑(autCongr refl) x✝) a✝ = ↑(↑(MulEquiv.refl (A₁ ≃ₐ[R] A₁)) x✝) a✝