tasksource/leandojo huggingface dataset:
Theorem: CategoryTheory.ColimitAdj.restrictYonedaHomEquiv_natural
File: Mathlib/CategoryTheory/Limits/Presheaf.lean

tactic: ext x X
state_before: C : Type u₁
inst✝¹ : SmallCategory C
ℰ : Type u₂
inst✝ : Category ℰ
A : C ⥤ ℰ
P : Cᵒᵖ ⥤ Type u₁
E₁ E₂ : ℰ
g : E₁ ⟶ E₂
c : Cocone ((CategoryOfElements.π P).leftOp ⋙ A)
t : IsColimit c
k : c.pt ⟶ E₁
⊢ ↑(restrictYonedaHomEquiv A P E₂ t) (k ≫ g) = ↑(restrictYonedaHomEquiv A P E₁ t) k ≫ (restrictedYoneda A).map g

tactic: apply (assoc _ _ _).symm
state_before: case w.h.h
C : Type u₁
inst✝¹ : SmallCategory C
ℰ : Type u₂
inst✝ : Category ℰ
A : C ⥤ ℰ
P : Cᵒᵖ ⥤ Type u₁
E₁ E₂ : ℰ
g : E₁ ⟶ E₂
c : Cocone ((CategoryOfElements.π P).leftOp ⋙ A)
t : IsColimit c
k : c.pt ⟶ E₁
x : Cᵒᵖ
X : P.obj x
⊢ (↑(restrictYonedaHomEquiv A P E₂ t) (k ≫ g)).app x X =
    (↑(restrictYonedaHomEquiv A P E₁ t) k ≫ (restrictedYoneda A).map g).app x X
Theorem: convex_Iio
File: Mathlib/Analysis/Convex/Basic.lean

tactic: intro x hx y hy a b ha hb hab
state_before: 𝕜 : Type u_1
E : Type ?u.86645
F : Type ?u.86648
β : Type u_2
inst✝⁷ : OrderedSemiring 𝕜
inst✝⁶ : AddCommMonoid E
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕜 F
s : Set E
x : E
inst✝² : OrderedCancelAddCommMonoid β
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
r : β
⊢ Convex 𝕜 (Iio r)

tactic: obtain rfl | ha' := ha.eq_or_lt
state_before: 𝕜 : Type u_1
E : Type ?u.86645
F : Type ?u.86648
β : Type u_2
inst✝⁷ : OrderedSemiring 𝕜
inst✝⁶ : AddCommMonoid E
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕜 F
s : Set E
x✝ : E
inst✝² : OrderedCancelAddCommMonoid β
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
r x : β
hx : x ∈ Iio r
y : β
hy : y ∈ Iio r
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • x + b • y ∈ Iio r

tactic: rw [mem_Iio] at hx hy
state_before: case inr
𝕜 : Type u_1
E : Type ?u.86645
F : Type ?u.86648
β : Type u_2
inst✝⁷ : OrderedSemiring 𝕜
inst✝⁶ : AddCommMonoid E
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕜 F
s : Set E
x✝ : E
inst✝² : OrderedCancelAddCommMonoid β
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
r x : β
hx : x ∈ Iio r
y : β
hy : y ∈ Iio r
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
ha' : 0 < a
⊢ a • x + b • y ∈ Iio r

tactic: calc
  a • x + b • y < a • r + b • r :=
    add_lt_add_of_lt_of_le (smul_lt_smul_of_pos hx ha') (smul_le_smul_of_nonneg hy.le hb)
  _ = r := Convex.combo_self hab _
state_before: case inr
𝕜 : Type u_1
E : Type ?u.86645
F : Type ?u.86648
β : Type u_2
inst✝⁷ : OrderedSemiring 𝕜
inst✝⁶ : AddCommMonoid E
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕜 F
s : Set E
x✝ : E
inst✝² : OrderedCancelAddCommMonoid β
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
r x : β
hx : x < r
y : β
hy : y < r
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
ha' : 0 < a
⊢ a • x + b • y ∈ Iio r

tactic: rw [zero_add] at hab
state_before: case inl
𝕜 : Type u_1
E : Type ?u.86645
F : Type ?u.86648
β : Type u_2
inst✝⁷ : OrderedSemiring 𝕜
inst✝⁶ : AddCommMonoid E
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕜 F
s : Set E
x✝ : E
inst✝² : OrderedCancelAddCommMonoid β
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
r x : β
hx : x ∈ Iio r
y : β
hy : y ∈ Iio r
b : 𝕜
hb : 0 ≤ b
ha : 0 ≤ 0
hab : 0 + b = 1
⊢ 0 • x + b • y ∈ Iio r

tactic: rwa [zero_smul, zero_add, hab, one_smul]
state_before: case inl
𝕜 : Type u_1
E : Type ?u.86645
F : Type ?u.86648
β : Type u_2
inst✝⁷ : OrderedSemiring 𝕜
inst✝⁶ : AddCommMonoid E
inst✝⁵ : AddCommMonoid F
inst✝⁴ : Module 𝕜 E
inst✝³ : Module 𝕜 F
s : Set E
x✝ : E
inst✝² : OrderedCancelAddCommMonoid β
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
r x : β
hx : x ∈ Iio r
y : β
hy : y ∈ Iio r
b : 𝕜
hb : 0 ≤ b
ha : 0 ≤ 0
hab : b = 1
⊢ 0 • x + b • y ∈ Iio r
Theorem: List.split_cons_of_eq
File: Mathlib/Data/List/Sort.lean

tactic: rw [split, h]
state_before: α : Type uu
r : α → α → Prop
inst✝ : DecidableRel r
a : α
l l₁ l₂ : List α
h : split l = (l₁, l₂)
⊢ split (a :: l) = (a :: l₂, l₁)
Theorem: Polynomial.trailingDegree_eq_top
File: Mathlib/Data/Polynomial/Degree/TrailingDegree.lean

tactic: simp [h]
state_before: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p = 0
⊢ trailingDegree p = ⊤
Theorem: MeasureTheory.SimpleFunc.setToSimpleFunc_smul_left
File: Mathlib/MeasureTheory/Integral/SetToL1.lean

tactic: simp_rw [setToSimpleFunc, ContinuousLinearMap.smul_apply, smul_sum]
state_before: α : Type u_1
E : Type ?u.241077
F : Type u_2
F' : Type u_3
G : Type ?u.241086
𝕜 : Type ?u.241089
p : ℝ≥0∞
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : NormedAddCommGroup F'
inst✝¹ : NormedSpace ℝ F'
inst✝ : NormedAddCommGroup G
m✝ : MeasurableSpace α
μ : Measure α
m : MeasurableSpace α
T : Set α → F →L[ℝ] F'
c : ℝ
f : α →ₛ F
⊢ setToSimpleFunc (fun s => c • T s) f = c • setToSimpleFunc T f
Theorem: Ordinal.opow_mul_add_lt_opow_succ
File: Mathlib/SetTheory/Ordinal/Exponential.lean

tactic: convert (opow_mul_add_lt_opow_mul_succ v hw).trans_le (mul_le_mul_left' (succ_le_of_lt hvb) _)
  using 1
state_before: b u v w : Ordinal
hvb : v < b
hw : w < b ^ u
⊢ b ^ u * v + w < b ^ succ u

tactic: exact opow_succ b u
state_before: case h.e'_4
b u v w : Ordinal
hvb : v < b
hw : w < b ^ u
⊢ b ^ succ u = b ^ u * b
Theorem: Monoid.IsTorsion.torsion_eq_top
File: Mathlib/GroupTheory/Torsion.lean

tactic: ext
state_before: G : Type u_1
H : Type ?u.193982
inst✝ : CommMonoid G
tG : IsTorsion G
⊢ torsion G = ⊤

tactic: tauto
state_before: case h
G : Type u_1
H : Type ?u.193982
inst✝ : CommMonoid G
tG : IsTorsion G
x✝ : G
⊢ x✝ ∈ torsion G ↔ x✝ ∈ ⊤
Theorem: List.rotate'_mod
File: Mathlib/Data/List/Rotate.lean

tactic: rw [rotate'_length_mul]
state_before: α : Type u
l : List α
n : ℕ
⊢ rotate' l (n % length l) = rotate' (rotate' l (n % length l)) (length (rotate' l (n % length l)) * (n / length l))

tactic: rw [rotate'_rotate', length_rotate', Nat.mod_add_div]
state_before: α : Type u
l : List α
n : ℕ
⊢ rotate' (rotate' l (n % length l)) (length (rotate' l (n % length l)) * (n / length l)) = rotate' l n
Theorem: Set.star_inv
File: Mathlib/Algebra/Star/Pointwise.lean

tactic: ext
state_before: α : Type u_1
s✝ t : Set α
a : α
inst✝¹ : Group α
inst✝ : StarSemigroup α
s : Set α
⊢ s⁻¹⋆ = s⋆⁻¹

tactic: simp only [mem_star, mem_inv, star_inv]
state_before: case h
α : Type u_1
s✝ t : Set α
a : α
inst✝¹ : Group α
inst✝ : StarSemigroup α
s : Set α
x✝ : α
⊢ x✝ ∈ s⁻¹⋆ ↔ x✝ ∈ s⋆⁻¹
Theorem: MeasureTheory.Integrable.simpleFunc_mul'
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

tactic: rw [← SimpleFunc.coe_toLargerSpace_eq hm g]
state_before: α : Type ?u.5138263
β : Type u_1
E : Type ?u.5138269
F : Type ?u.5138272
inst✝¹ : MeasurableSpace α
ι : Type ?u.5138278
inst✝ : NormedAddCommGroup E
f : β → ℝ
m m0 : MeasurableSpace β
μ : Measure β
hm : m ≤ m0
g : SimpleFunc β ℝ
hf : Integrable f
⊢ Integrable (↑g * f)

tactic: exact hf.simpleFunc_mul (g.toLargerSpace hm)
state_before: α : Type ?u.5138263
β : Type u_1
E : Type ?u.5138269
F : Type ?u.5138272
inst✝¹ : MeasurableSpace α
ι : Type ?u.5138278
inst✝ : NormedAddCommGroup E
f : β → ℝ
m m0 : MeasurableSpace β
μ : Measure β
hm : m ≤ m0
g : SimpleFunc β ℝ
hf : Integrable f
⊢ Integrable (↑(SimpleFunc.toLargerSpace hm g) * f)
Theorem: inv_goldConj
File: Mathlib/Data/Real/GoldenRatio.lean

tactic: rw [inv_eq_iff_eq_inv, ← neg_inv, ← neg_eq_iff_eq_neg]
state_before: ⊢ ψ⁻¹ = -φ

tactic: exact inv_gold.symm
state_before: ⊢ -ψ = φ⁻¹
Theorem: CanonicallyOrderedCommSemiring.mul_pos
File: Mathlib/Algebra/Order/Ring/Canonical.lean

tactic: simp only [pos_iff_ne_zero, ne_eq, mul_eq_zero, not_or]
state_before: α : Type u
β : Type ?u.21641
inst✝ : CanonicallyOrderedCommSemiring α
a b : α
⊢ 0 < a * b ↔ 0 < a ∧ 0 < b
Theorem: CategoryTheory.Functor.congr_inv_of_congr_hom
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: rw [hX]
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
F G : C ⥤ D
X Y : C
e : X ≅ Y
hX : F.obj X = G.obj X
hY : F.obj Y = G.obj Y
⊢ F.obj X = G.obj X

tactic: rw [hY]
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
F G : C ⥤ D
X Y : C
e : X ≅ Y
hX : F.obj X = G.obj X
hY : F.obj Y = G.obj Y
⊢ G.obj Y = F.obj Y

tactic: rw [hY]
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
F G : C ⥤ D
X Y : C
e : X ≅ Y
hX : F.obj X = G.obj X
hY : F.obj Y = G.obj Y
h₂ : F.map e.hom = eqToHom (_ : F.obj X = G.obj X) ≫ G.map e.hom ≫ eqToHom (_ : G.obj Y = F.obj Y)
⊢ F.obj Y = G.obj Y

tactic: rw [hX]
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
F G : C ⥤ D
X Y : C
e : X ≅ Y
hX : F.obj X = G.obj X
hY : F.obj Y = G.obj Y
h₂ : F.map e.hom = eqToHom (_ : F.obj X = G.obj X) ≫ G.map e.hom ≫ eqToHom (_ : G.obj Y = F.obj Y)
⊢ G.obj X = F.obj X

tactic: simp only [← IsIso.Iso.inv_hom e, Functor.map_inv, h₂, IsIso.inv_comp, inv_eqToHom,
  Category.assoc]
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
F G : C ⥤ D
X Y : C
e : X ≅ Y
hX : F.obj X = G.obj X
hY : F.obj Y = G.obj Y
h₂ : F.map e.hom = eqToHom (_ : F.obj X = G.obj X) ≫ G.map e.hom ≫ eqToHom (_ : G.obj Y = F.obj Y)
⊢ F.map e.inv = eqToHom (_ : F.obj Y = G.obj Y) ≫ G.map e.inv ≫ eqToHom (_ : G.obj X = F.obj X)
Theorem: Multiset.prod_toEnumFinset
File: Mathlib/Data/Multiset/Fintype.lean

tactic: rw [Fintype.prod_equiv m.coeEquiv (fun x ↦ f x x.2) fun x ↦ f x.1.1 x.1.2]
state_before: α : Type u_2
inst✝¹ : DecidableEq α
m✝ : Multiset α
β : Type u_1
inst✝ : CommMonoid β
m : Multiset α
f : α → ℕ → β
⊢ ∏ x in toEnumFinset m, f x.fst x.snd = ∏ x : ToType m, f x.fst ↑x.snd

tactic: rw [← m.toEnumFinset.prod_coe_sort fun x ↦ f x.1 x.2]
state_before: α : Type u_2
inst✝¹ : DecidableEq α
m✝ : Multiset α
β : Type u_1
inst✝ : CommMonoid β
m : Multiset α
f : α → ℕ → β
⊢ ∏ x in toEnumFinset m, f x.fst x.snd = ∏ x : { x // x ∈ toEnumFinset m }, f (↑x).fst (↑x).snd

tactic: intro x
state_before: α : Type u_2
inst✝¹ : DecidableEq α
m✝ : Multiset α
β : Type u_1
inst✝ : CommMonoid β
m : Multiset α
f : α → ℕ → β
⊢ ∀ (x : ToType m), f x.fst ↑x.snd = f (↑(↑(coeEquiv m) x)).fst (↑(↑(coeEquiv m) x)).snd

tactic: rfl
state_before: α : Type u_2
inst✝¹ : DecidableEq α
m✝ : Multiset α
β : Type u_1
inst✝ : CommMonoid β
m : Multiset α
f : α → ℕ → β
x : ToType m
⊢ f x.fst ↑x.snd = f (↑(↑(coeEquiv m) x)).fst (↑(↑(coeEquiv m) x)).snd
Theorem: Finset.image_uncurry_product
File: Mathlib/Data/Finset/NAry.lean

tactic: rw [← image₂_curry, curry_uncurry]
state_before: α : Type u_1
α' : Type ?u.67520
β : Type u_2
β' : Type ?u.67526
γ : Type u_3
γ' : Type ?u.67532
δ : Type ?u.67535
δ' : Type ?u.67538
ε : Type ?u.67541
ε' : Type ?u.67544
ζ : Type ?u.67547
ζ' : Type ?u.67550
ν : Type ?u.67553
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f✝ f' : α → β → γ
g g' : α → β → γ → δ
s✝ s' : Finset α
t✝ t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
f : α → β → γ
s : Finset α
t : Finset β
⊢ image (uncurry f) (s ×ˢ t) = image₂ f s t
Theorem: Polynomial.degree_X_sub_C
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: rw [sub_eq_add_neg, ← map_neg C a, degree_X_add_C]
state_before: R : Type u
S : Type v
a✝ b c d : R
n m : ℕ
inst✝¹ : Ring R
inst✝ : Nontrivial R
a : R
⊢ degree (X - ↑C a) = 1
Theorem: Nat.testBit_two_pow_self
File: Mathlib/Data/Nat/Bitwise.lean

tactic: rw [testBit, shiftr_eq_div_pow, Nat.div_self (pow_pos (α := ℕ) zero_lt_two n), bodd_one]
state_before: n : ℕ
⊢ testBit (2 ^ n) n = true
Theorem: Nat.count_le_card
File: Mathlib/Data/Nat/Count.lean

tactic: rw [count_eq_card_filter_range]
state_before: p : ℕ → Prop
inst✝ : DecidablePred p
hp : Set.Finite (setOf p)
n : ℕ
⊢ count p n ≤ card (Set.Finite.toFinset hp)

tactic: exact Finset.card_mono fun x hx ↦ hp.mem_toFinset.2 (mem_filter.1 hx).2
state_before: p : ℕ → Prop
inst✝ : DecidablePred p
hp : Set.Finite (setOf p)
n : ℕ
⊢ card (filter p (range n)) ≤ card (Set.Finite.toFinset hp)
Theorem: Cardinal.add_eq_max'
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [add_comm, max_comm, add_eq_max ha]
state_before: a b : Cardinal
ha : ℵ₀ ≤ b
⊢ a + b = max a b
Theorem: Finpartition.IsUniform.mono
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean

tactic: gcongr
state_before: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε✝ ε ε' : 𝕜
hP : IsUniform P G ε
h : ε ≤ ε'
⊢ ↑(card P.parts * (card P.parts - 1)) * ε ≤ ↑(card P.parts * (card P.parts - 1)) * ε'
Theorem: InnerProductSpace.Core.inner_neg_left
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [← neg_one_smul 𝕜 x, inner_smul_left]
state_before: 𝕜 : Type u_1
E : Type ?u.582097
F : Type u_2
inst✝² : IsROrC 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x y : F
⊢ inner (-x) y = -inner x y

tactic: simp
state_before: 𝕜 : Type u_1
E : Type ?u.582097
F : Type u_2
inst✝² : IsROrC 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x y : F
⊢ ↑(starRingEnd 𝕜) (-1) * inner x y = -inner x y
Theorem: Nat.odd_mul_odd
File: Mathlib/Data/Nat/ModEq.lean

tactic: simpa [Nat.ModEq] using @ModEq.mul 2 n 1 m 1
state_before: m✝ n✝ a b c d n m : ℕ
⊢ n % 2 = 1 → m % 2 = 1 → n * m % 2 = 1
Theorem: List.splitOnP_eq_single
File: Mathlib/Data/List/Basic.lean

tactic: induction xs with
| nil => rfl
| cons hd tl ih =>
  simp only [splitOnP_cons, h hd (mem_cons_self hd tl), if_neg]
  rw [ih <| forall_mem_of_forall_mem_cons h]
  rfl
state_before: ι : Type ?u.302293
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
xs ys : List α
ls : List (List α)
f : List α → List α
h : ∀ (x : α), x ∈ xs → ¬p x = true
⊢ splitOnP p xs = [xs]

tactic: rfl
state_before: case nil
ι : Type ?u.302293
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
xs ys : List α
ls : List (List α)
f : List α → List α
h : ∀ (x : α), x ∈ [] → ¬p x = true
⊢ splitOnP p [] = [[]]

tactic: simp only [splitOnP_cons, h hd (mem_cons_self hd tl), if_neg]
state_before: case cons
ι : Type ?u.302293
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
xs ys : List α
ls : List (List α)
f : List α → List α
hd : α
tl : List α
ih : (∀ (x : α), x ∈ tl → ¬p x = true) → splitOnP p tl = [tl]
h : ∀ (x : α), x ∈ hd :: tl → ¬p x = true
⊢ splitOnP p (hd :: tl) = [hd :: tl]

tactic: rw [ih <| forall_mem_of_forall_mem_cons h]
state_before: case cons
ι : Type ?u.302293
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
xs ys : List α
ls : List (List α)
f : List α → List α
hd : α
tl : List α
ih : (∀ (x : α), x ∈ tl → ¬p x = true) → splitOnP p tl = [tl]
h : ∀ (x : α), x ∈ hd :: tl → ¬p x = true
⊢ modifyHead (cons hd) (splitOnP p tl) = [hd :: tl]

tactic: rfl
state_before: case cons
ι : Type ?u.302293
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
xs ys : List α
ls : List (List α)
f : List α → List α
hd : α
tl : List α
ih : (∀ (x : α), x ∈ tl → ¬p x = true) → splitOnP p tl = [tl]
h : ∀ (x : α), x ∈ hd :: tl → ¬p x = true
⊢ modifyHead (cons hd) [tl] = [hd :: tl]
Theorem: set_has_maximal_iff_noetherian
File: Mathlib/RingTheory/Noetherian.lean

tactic: rw [isNoetherian_iff_wellFounded, WellFounded.wellFounded_iff_has_min]
state_before: R : Type u_2
M : Type u_1
P : Type ?u.118511
N : Type w
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid N
inst✝² : Module R N
inst✝¹ : AddCommMonoid P
inst✝ : Module R P
⊢ (∀ (a : Set (Submodule R M)), Set.Nonempty a → ∃ M', M' ∈ a ∧ ∀ (I : Submodule R M), I ∈ a → ¬M' < I) ↔
    IsNoetherian R M
Theorem: Path.extend_one
File: Mathlib/Topology/PathConnected.lean

tactic: simp
state_before: X : Type u_1
Y : Type ?u.157058
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type ?u.157073
γ : Path x y
⊢ extend γ 1 = y
Theorem: integrableOn_Icc_iff_integrableOn_Ico
File: Mathlib/MeasureTheory/Integral/IntegrableOn.lean

tactic: rw [measure_singleton]
state_before: α : Type u_1
β : Type ?u.4109768
E : Type u_2
F : Type ?u.4109774
inst✝⁴ : MeasurableSpace α
inst✝³ : NormedAddCommGroup E
inst✝² : PartialOrder α
inst✝¹ : MeasurableSingletonClass α
f : α → E
μ : MeasureTheory.Measure α
a b : α
inst✝ : NoAtoms μ
⊢ ↑↑μ {b} ≠ ⊤

tactic: exact ENNReal.zero_ne_top
state_before: α : Type u_1
β : Type ?u.4109768
E : Type u_2
F : Type ?u.4109774
inst✝⁴ : MeasurableSpace α
inst✝³ : NormedAddCommGroup E
inst✝² : PartialOrder α
inst✝¹ : MeasurableSingletonClass α
f : α → E
μ : MeasureTheory.Measure α
a b : α
inst✝ : NoAtoms μ
⊢ 0 ≠ ⊤
Theorem: toIocDiv_zsmul_sub_toIocMod
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [add_comm, toIocMod_add_toIocDiv_zsmul]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIocDiv hp a b • p + toIocMod hp a b = b
Theorem: pow_sub
File: Mathlib/Algebra/GroupPower/Basic.lean

tactic: rw [← pow_add, Nat.sub_add_cancel h]
state_before: α : Type ?u.95648
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝³ : Group G
inst✝² : Group H
inst✝¹ : AddGroup A
inst✝ : AddGroup B
a : G
m n : ℕ
h : n ≤ m
⊢ a ^ (m - n) * a ^ n = a ^ m
Theorem: MonoidHom.cancel_left
File: Mathlib/Algebra/Hom/Group.lean

tactic: rw [← MonoidHom.comp_apply, h, MonoidHom.comp_apply]
state_before: α : Type ?u.169579
β : Type ?u.169582
M : Type u_1
N : Type u_2
P : Type u_3
G : Type ?u.169594
H : Type ?u.169597
F : Type ?u.169600
inst✝² : MulOneClass M
inst✝¹ : MulOneClass N
inst✝ : MulOneClass P
g : N →* P
f₁ f₂ : M →* N
hg : Function.Injective ↑g
h : comp g f₁ = comp g f₂
x : M
⊢ ↑g (↑f₁ x) = ↑g (↑f₂ x)
Theorem: Cardinal.mk_le_mk_mul_of_mk_preimage_le
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simpa only [← mk_congr (@Equiv.sigmaFiberEquiv α β f), mk_sigma, ← sum_const'] using
  sum_le_sum _ _ hf
state_before: α β : Type u
c : Cardinal
f : α → β
hf : ∀ (b : β), (#↑(f ⁻¹' {b})) ≤ c
⊢ (#α) ≤ (#β) * c
Theorem: Function.Surjective.iSup_comp
File: Mathlib/Order/CompleteLattice.lean

tactic: simp [iSup]
state_before: α : Type u_3
β : Type ?u.60572
β₂ : Type ?u.60575
γ : Type ?u.60578
ι : Sort u_1
ι' : Sort u_2
κ : ι → Sort ?u.60589
κ' : ι' → Sort ?u.60594
inst✝ : SupSet α
f✝ g✝ : ι → α
f : ι → ι'
hf : Surjective f
g : ι' → α
⊢ (⨆ (x : ι), g (f x)) = ⨆ (y : ι'), g y

tactic: congr
state_before: α : Type u_3
β : Type ?u.60572
β₂ : Type ?u.60575
γ : Type ?u.60578
ι : Sort u_1
ι' : Sort u_2
κ : ι → Sort ?u.60589
κ' : ι' → Sort ?u.60594
inst✝ : SupSet α
f✝ g✝ : ι → α
f : ι → ι'
hf : Surjective f
g : ι' → α
⊢ sSup (range fun x => g (f x)) = sSup (range fun y => g y)

tactic: exact hf.range_comp g
state_before: case e_a
α : Type u_3
β : Type ?u.60572
β₂ : Type ?u.60575
γ : Type ?u.60578
ι : Sort u_1
ι' : Sort u_2
κ : ι → Sort ?u.60589
κ' : ι' → Sort ?u.60594
inst✝ : SupSet α
f✝ g✝ : ι → α
f : ι → ι'
hf : Surjective f
g : ι' → α
⊢ (range fun x => g (f x)) = range fun y => g y
Theorem: Ordnode.Bounded.dual_iff
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: have := Bounded.dual h
state_before: α : Type u_1
inst✝ : Preorder α
t : Ordnode α
o₁ : WithBot α
o₂ : WithTop α
h : Bounded (Ordnode.dual t) o₂ o₁
⊢ Bounded t o₁ o₂

tactic: rwa [dual_dual, OrderDual.Preorder.dual_dual] at this
state_before: α : Type u_1
inst✝ : Preorder α
t : Ordnode α
o₁ : WithBot α
o₂ : WithTop α
h : Bounded (Ordnode.dual t) o₂ o₁
this : Bounded (Ordnode.dual (Ordnode.dual t)) o₁ o₂
⊢ Bounded t o₁ o₂
Theorem: LinearMap.toMatrixAlgEquiv_toLinAlgEquiv
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: rw [← Matrix.toLinAlgEquiv_symm, AlgEquiv.symm_apply_apply]
state_before: R : Type u_2
inst✝⁹ : CommSemiring R
l : Type ?u.2299745
m : Type ?u.2299748
n : Type u_1
inst✝⁸ : Fintype n
inst✝⁷ : Fintype m
inst✝⁶ : DecidableEq n
M₁ : Type u_3
M₂ : Type ?u.2299772
inst✝⁵ : AddCommMonoid M₁
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R M₁
inst✝² : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
M₃ : Type ?u.2300274
inst✝¹ : AddCommMonoid M₃
inst✝ : Module R M₃
v₃ : Basis l R M₃
M : Matrix n n R
⊢ ↑(toMatrixAlgEquiv v₁) (↑(toLinAlgEquiv v₁) M) = M
Theorem: FirstOrder.Language.BoundedFormula.IsPrenex.relabel
File: Mathlib/ModelTheory/Syntax.lean

tactic: simp [h.all]
state_before: L : Language
L' : Language
M : Type w
N : Type ?u.115821
P : Type ?u.115824
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.115852
n l : ℕ
φ✝¹ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v : α → M
xs : Fin l → M
m : ℕ
φ : BoundedFormula L α m
h✝ : IsPrenex φ
f : α → β ⊕ Fin n
n✝ : ℕ
φ✝ : BoundedFormula L α (n✝ + 1)
x✝ : IsPrenex φ✝
h : IsPrenex (BoundedFormula.relabel f φ✝)
⊢ IsPrenex (BoundedFormula.relabel f (BoundedFormula.all φ✝))

tactic: simp [h.ex]
state_before: L : Language
L' : Language
M : Type w
N : Type ?u.115821
P : Type ?u.115824
inst✝² : Structure L M
inst✝¹ : Structure L N
inst✝ : Structure L P
α : Type u'
β : Type v'
γ : Type ?u.115852
n l : ℕ
φ✝¹ ψ : BoundedFormula L α l
θ : BoundedFormula L α (Nat.succ l)
v : α → M
xs : Fin l → M
m : ℕ
φ : BoundedFormula L α m
h✝ : IsPrenex φ
f : α → β ⊕ Fin n
n✝ : ℕ
φ✝ : BoundedFormula L α (n✝ + 1)
x✝ : IsPrenex φ✝
h : IsPrenex (BoundedFormula.relabel f φ✝)
⊢ IsPrenex (BoundedFormula.relabel f (BoundedFormula.ex φ✝))
Theorem: Cardinal.three_le
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: have : ↑(3 : ℕ) ≤ (#α)
state_before: α✝ β : Type u
α : Type u_1
h : 3 ≤ (#α)
x y : α
⊢ ∃ z, z ≠ x ∧ z ≠ y

tactic: simpa using h
state_before: case this
α✝ β : Type u
α : Type u_1
h : 3 ≤ (#α)
x y : α
⊢ ↑3 ≤ (#α)

α✝ β : Type u
α : Type u_1
h : 3 ≤ (#α)
x y : α
this : ↑3 ≤ (#α)
⊢ ∃ z, z ≠ x ∧ z ≠ y

tactic: have : ↑(2 : ℕ) < (#α)
state_before: α✝ β : Type u
α : Type u_1
h : 3 ≤ (#α)
x y : α
this : ↑3 ≤ (#α)
⊢ ∃ z, z ≠ x ∧ z ≠ y

tactic: rwa [← succ_le_iff, ← Cardinal.nat_succ]
state_before: case this
α✝ β : Type u
α : Type u_1
h : 3 ≤ (#α)
x y : α
this : ↑3 ≤ (#α)
⊢ ↑2 < (#α)

α✝ β : Type u
α : Type u_1
h : 3 ≤ (#α)
x y : α
this✝ : ↑3 ≤ (#α)
this : ↑2 < (#α)
⊢ ∃ z, z ≠ x ∧ z ≠ y

tactic: have := exists_not_mem_of_length_lt [x, y] this
state_before: α✝ β : Type u
α : Type u_1
h : 3 ≤ (#α)
x y : α
this✝ : ↑3 ≤ (#α)
this : ↑2 < (#α)
⊢ ∃ z, z ≠ x ∧ z ≠ y

tactic: simpa [not_or] using this
state_before: α✝ β : Type u
α : Type u_1
h : 3 ≤ (#α)
x y : α
this✝¹ : ↑3 ≤ (#α)
this✝ : ↑2 < (#α)
this : ∃ z, ¬z ∈ [x, y]
⊢ ∃ z, z ≠ x ∧ z ≠ y
Theorem: Set.image_perm
File: Mathlib/Data/Set/Image.lean

tactic: ext i
state_before: α : Type u_1
β : Type ?u.57571
γ : Type ?u.57574
ι : Sort ?u.57577
ι' : Sort ?u.57580
f : α → β
s✝ t s : Set α
σ : Equiv.Perm α
hs : {a | ↑σ a ≠ a} ⊆ s
⊢ ↑σ '' s = s

tactic: obtain hi | hi := eq_or_ne (σ i) i
state_before: case h
α : Type u_1
β : Type ?u.57571
γ : Type ?u.57574
ι : Sort ?u.57577
ι' : Sort ?u.57580
f : α → β
s✝ t s : Set α
σ : Equiv.Perm α
hs : {a | ↑σ a ≠ a} ⊆ s
i : α
⊢ i ∈ ↑σ '' s ↔ i ∈ s

tactic: refine' ⟨_, fun h => ⟨i, h, hi⟩⟩
state_before: case h.inl
α : Type u_1
β : Type ?u.57571
γ : Type ?u.57574
ι : Sort ?u.57577
ι' : Sort ?u.57580
f : α → β
s✝ t s : Set α
σ : Equiv.Perm α
hs : {a | ↑σ a ≠ a} ⊆ s
i : α
hi : ↑σ i = i
⊢ i ∈ ↑σ '' s ↔ i ∈ s

tactic: rintro ⟨j, hj, h⟩
state_before: case h.inl
α : Type u_1
β : Type ?u.57571
γ : Type ?u.57574
ι : Sort ?u.57577
ι' : Sort ?u.57580
f : α → β
s✝ t s : Set α
σ : Equiv.Perm α
hs : {a | ↑σ a ≠ a} ⊆ s
i : α
hi : ↑σ i = i
⊢ i ∈ ↑σ '' s → i ∈ s

tactic: rwa [σ.injective (hi.trans h.symm)]
state_before: case h.inl.intro.intro
α : Type u_1
β : Type ?u.57571
γ : Type ?u.57574
ι : Sort ?u.57577
ι' : Sort ?u.57580
f : α → β
s✝ t s : Set α
σ : Equiv.Perm α
hs : {a | ↑σ a ≠ a} ⊆ s
i : α
hi : ↑σ i = i
j : α
hj : j ∈ s
h : ↑σ j = i
⊢ i ∈ s

tactic: refine' iff_of_true ⟨σ.symm i, hs fun h => hi _, σ.apply_symm_apply _⟩ (hs hi)
state_before: case h.inr
α : Type u_1
β : Type ?u.57571
γ : Type ?u.57574
ι : Sort ?u.57577
ι' : Sort ?u.57580
f : α → β
s✝ t s : Set α
σ : Equiv.Perm α
hs : {a | ↑σ a ≠ a} ⊆ s
i : α
hi : ↑σ i ≠ i
⊢ i ∈ ↑σ '' s ↔ i ∈ s

tactic: convert congr_arg σ h <;> exact (σ.apply_symm_apply _).symm
state_before: case h.inr
α : Type u_1
β : Type ?u.57571
γ : Type ?u.57574
ι : Sort ?u.57577
ι' : Sort ?u.57580
f : α → β
s✝ t s : Set α
σ : Equiv.Perm α
hs : {a | ↑σ a ≠ a} ⊆ s
i : α
hi : ↑σ i ≠ i
h : ↑σ (↑σ.symm i) = ↑σ.symm i
⊢ ↑σ i = i