tasksource/leandojo huggingface dataset:
Theorem: List.chain_cons
File: Std/Data/List/Lemmas.lean

tactic: cases p with | cons n p => exact ⟨n, p⟩
state_before: α : Type u_1
R : α → α → Prop
a b : α
l : List α
p : Chain R a (b :: l)
⊢ R a b ∧ Chain R b l

tactic: exact ⟨n, p⟩
state_before: case cons
α : Type u_1
R : α → α → Prop
a b : α
l : List α
n : R a b
p : Chain R b l
⊢ R a b ∧ Chain R b l
Theorem: Equiv.Perm.isCycleOn_swap
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: simp
state_before: ι : Type ?u.1649642
α : Type u_1
β : Type ?u.1649648
f g : Perm α
s t : Set α
a b x y : α
inst✝ : DecidableEq α
hab : a ≠ b
⊢ a ∈ {a, b}

tactic: simp
state_before: ι : Type ?u.1649642
α : Type u_1
β : Type ?u.1649648
f g : Perm α
s t : Set α
a b x y : α
inst✝ : DecidableEq α
hab : a ≠ b
⊢ b ∈ {a, b}

tactic: rw [Set.mem_insert_iff, Set.mem_singleton_iff] at hx hy
state_before: ι : Type ?u.1649642
α : Type u_1
β : Type ?u.1649648
f g : Perm α
s t : Set α
a b x✝ y✝ : α
inst✝ : DecidableEq α
hab : a ≠ b
x : α
hx : x ∈ {a, b}
y : α
hy : y ∈ {a, b}
⊢ SameCycle (swap a b) x y

tactic: obtain rfl | rfl := hx <;> obtain rfl | rfl := hy
state_before: ι : Type ?u.1649642
α : Type u_1
β : Type ?u.1649648
f g : Perm α
s t : Set α
a b x✝ y✝ : α
inst✝ : DecidableEq α
hab : a ≠ b
x : α
hx : x = a ∨ x = b
y : α
hy : y = a ∨ y = b
⊢ SameCycle (swap a b) x y

tactic: exact ⟨0, by rw [zpow_zero, coe_one, id.def]⟩
state_before: case inl.inl
ι : Type ?u.1649642
α : Type u_1
β : Type ?u.1649648
f g : Perm α
s t : Set α
b x y✝ : α
inst✝ : DecidableEq α
y : α
hab : y ≠ b
⊢ SameCycle (swap y b) y y

tactic: rw [zpow_zero, coe_one, id.def]
state_before: ι : Type ?u.1649642
α : Type u_1
β : Type ?u.1649648
f g : Perm α
s t : Set α
b x y✝ : α
inst✝ : DecidableEq α
y : α
hab : y ≠ b
⊢ ↑(swap y b ^ 0) y = y

tactic: exact ⟨1, by rw [zpow_one, swap_apply_left]⟩
state_before: case inl.inr
ι : Type ?u.1649642
α : Type u_1
β : Type ?u.1649648
f g : Perm α
s t : Set α
x✝ y✝ : α
inst✝ : DecidableEq α
x y : α
hab : x ≠ y
⊢ SameCycle (swap x y) x y

tactic: rw [zpow_one, swap_apply_left]
state_before: ι : Type ?u.1649642
α : Type u_1
β : Type ?u.1649648
f g : Perm α
s t : Set α
x✝ y✝ : α
inst✝ : DecidableEq α
x y : α
hab : x ≠ y
⊢ ↑(swap x y ^ 1) x = y

tactic: exact ⟨1, by rw [zpow_one, swap_apply_right]⟩
state_before: case inr.inl
ι : Type ?u.1649642
α : Type u_1
β : Type ?u.1649648
f g : Perm α
s t : Set α
x✝ y✝ : α
inst✝ : DecidableEq α
x y : α
hab : y ≠ x
⊢ SameCycle (swap y x) x y

tactic: rw [zpow_one, swap_apply_right]
state_before: ι : Type ?u.1649642
α : Type u_1
β : Type ?u.1649648
f g : Perm α
s t : Set α
x✝ y✝ : α
inst✝ : DecidableEq α
x y : α
hab : y ≠ x
⊢ ↑(swap y x ^ 1) x = y

tactic: exact ⟨0, by rw [zpow_zero, coe_one, id.def]⟩
state_before: case inr.inr
ι : Type ?u.1649642
α : Type u_1
β : Type ?u.1649648
f g : Perm α
s t : Set α
a x y✝ : α
inst✝ : DecidableEq α
y : α
hab : a ≠ y
⊢ SameCycle (swap a y) y y

tactic: rw [zpow_zero, coe_one, id.def]
state_before: ι : Type ?u.1649642
α : Type u_1
β : Type ?u.1649648
f g : Perm α
s t : Set α
a x y✝ : α
inst✝ : DecidableEq α
y : α
hab : a ≠ y
⊢ ↑(swap a y ^ 0) y = y
Theorem: Matrix.cramer_transpose_apply
File: Mathlib/LinearAlgebra/Matrix/Adjugate.lean

tactic: rw [cramer_apply, updateColumn_transpose, det_transpose]
state_before: m : Type u
n : Type v
α : Type w
inst✝⁴ : DecidableEq n
inst✝³ : Fintype n
inst✝² : DecidableEq m
inst✝¹ : Fintype m
inst✝ : CommRing α
A : Matrix n n α
b : n → α
i : n
⊢ ↑(cramer Aᵀ) b i = det (updateRow A i b)
Theorem: MeasureTheory.measurePreserving_mul_prod_inv
File: Mathlib/MeasureTheory/Group/Prod.lean

tactic: convert (measurePreserving_prod_inv_mul_swap ν μ).comp (measurePreserving_prod_mul_swap μ ν)
  using 1
state_before: G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s : Set G
inst✝² : MeasurableInv G
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulLeftInvariant ν
⊢ MeasurePreserving fun z => (z.snd * z.fst, z.fst⁻¹)

tactic: ext1 ⟨x, y⟩
state_before: case h.e'_5
G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s : Set G
inst✝² : MeasurableInv G
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulLeftInvariant ν
⊢ (fun z => (z.snd * z.fst, z.fst⁻¹)) = (fun z => (z.snd, z.snd⁻¹ * z.fst)) ∘ fun z => (z.snd, z.snd * z.fst)

tactic: simp_rw [Function.comp_apply, mul_inv_rev, inv_mul_cancel_right]
state_before: case h.e'_5.h.mk
G : Type u_1
inst✝⁷ : MeasurableSpace G
inst✝⁶ : Group G
inst✝⁵ : MeasurableMul₂ G
μ ν : Measure G
inst✝⁴ : SigmaFinite ν
inst✝³ : SigmaFinite μ
s : Set G
inst✝² : MeasurableInv G
inst✝¹ : IsMulLeftInvariant μ
inst✝ : IsMulLeftInvariant ν
x y : G
⊢ ((x, y).snd * (x, y).fst, (x, y).fst⁻¹) =
    ((fun z => (z.snd, z.snd⁻¹ * z.fst)) ∘ fun z => (z.snd, z.snd * z.fst)) (x, y)
Theorem: lcm_mul_left
File: Mathlib/Algebra/GCDMonoid/Basic.lean

tactic: rintro rfl
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
a b c : α
⊢ a = 0 → lcm (a * b) (a * c) = ↑normalize a * lcm b c

tactic: simp only [zero_mul, lcm_zero_left, normalize_zero]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
b c : α
⊢ lcm (0 * b) (0 * c) = ↑normalize 0 * lcm b c

tactic: simpa
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
a b c : α
ha : a ≠ 0
this : lcm (a * b) (a * c) = ↑normalize (a * lcm b c)
⊢ lcm (a * b) (a * c) = ↑normalize a * lcm b c
Theorem: Metric.Bounded.thickening
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: rcases E.eq_empty_or_nonempty with rfl | ⟨x, hx⟩
state_before: ι : Sort ?u.97539
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
δ✝ : ℝ
s : Set α
x : α
X : Type u
inst✝ : PseudoMetricSpace X
δ : ℝ
E : Set X
h : Bounded E
⊢ Bounded (thickening δ E)

tactic: simp
state_before: case inl
ι : Sort ?u.97539
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
δ✝ : ℝ
s : Set α
x : α
X : Type u
inst✝ : PseudoMetricSpace X
δ : ℝ
h : Bounded ∅
⊢ Bounded (thickening δ ∅)

tactic: refine (bounded_iff_subset_ball x).2 ⟨δ + diam E, fun y hy ↦ ?_⟩
state_before: case inr.intro
ι : Sort ?u.97539
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
δ✝ : ℝ
s : Set α
x✝ : α
X : Type u
inst✝ : PseudoMetricSpace X
δ : ℝ
E : Set X
h : Bounded E
x : X
hx : x ∈ E
⊢ Bounded (thickening δ E)

tactic: calc
  dist y x ≤ infDist y E + diam E := dist_le_infDist_add_diam (x := y) h hx
  _ ≤ δ + diam E := add_le_add_right ((mem_thickening_iff_infDist_lt ⟨x, hx⟩).1 hy).le _
state_before: case inr.intro
ι : Sort ?u.97539
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
δ✝ : ℝ
s : Set α
x✝ : α
X : Type u
inst✝ : PseudoMetricSpace X
δ : ℝ
E : Set X
h : Bounded E
x : X
hx : x ∈ E
y : X
hy : y ∈ thickening δ E
⊢ y ∈ closedBall x (δ + diam E)
Theorem: WithTop.iSup_coe_eq_top
File: Mathlib/Order/ConditionallyCompleteLattice/Basic.lean

tactic: rw [iSup_eq_top, not_bddAbove_iff]
state_before: α✝ : Type ?u.130874
β : Type ?u.130877
γ : Type ?u.130880
ι✝ : Sort ?u.130883
ι : Sort u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
⊢ (⨆ (x : ι), ↑(f x)) = ⊤ ↔ ¬BddAbove (range f)

tactic: refine' ⟨fun hf r => _, fun hf a ha => _⟩
state_before: α✝ : Type ?u.130874
β : Type ?u.130877
γ : Type ?u.130880
ι✝ : Sort ?u.130883
ι : Sort u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
⊢ (∀ (b : WithTop α), b < ⊤ → ∃ i, b < ↑(f i)) ↔ ∀ (x : α), ∃ y, y ∈ range f ∧ x < y

tactic: rcases hf r (WithTop.coe_lt_top r) with ⟨i, hi⟩
state_before: case refine'_1
α✝ : Type ?u.130874
β : Type ?u.130877
γ : Type ?u.130880
ι✝ : Sort ?u.130883
ι : Sort u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
hf : ∀ (b : WithTop α), b < ⊤ → ∃ i, b < ↑(f i)
r : α
⊢ ∃ y, y ∈ range f ∧ r < y

tactic: exact ⟨f i, ⟨i, rfl⟩, WithTop.coe_lt_coe.mp hi⟩
state_before: case refine'_1.intro
α✝ : Type ?u.130874
β : Type ?u.130877
γ : Type ?u.130880
ι✝ : Sort ?u.130883
ι : Sort u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
hf : ∀ (b : WithTop α), b < ⊤ → ∃ i, b < ↑(f i)
r : α
i : ι
hi : ↑r < ↑(f i)
⊢ ∃ y, y ∈ range f ∧ r < y

tactic: rcases hf (a.untop ha.ne) with ⟨-, ⟨i, rfl⟩, hi⟩
state_before: case refine'_2
α✝ : Type ?u.130874
β : Type ?u.130877
γ : Type ?u.130880
ι✝ : Sort ?u.130883
ι : Sort u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
hf : ∀ (x : α), ∃ y, y ∈ range f ∧ x < y
a : WithTop α
ha : a < ⊤
⊢ ∃ i, a < ↑(f i)

tactic: exact ⟨i, by simpa only [WithTop.coe_untop _ ha.ne] using WithTop.coe_lt_coe.mpr hi⟩
state_before: case refine'_2.intro.intro.intro
α✝ : Type ?u.130874
β : Type ?u.130877
γ : Type ?u.130880
ι✝ : Sort ?u.130883
ι : Sort u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
hf : ∀ (x : α), ∃ y, y ∈ range f ∧ x < y
a : WithTop α
ha : a < ⊤
i : ι
hi : untop a (_ : a ≠ ⊤) < f i
⊢ ∃ i, a < ↑(f i)

tactic: simpa only [WithTop.coe_untop _ ha.ne] using WithTop.coe_lt_coe.mpr hi
state_before: α✝ : Type ?u.130874
β : Type ?u.130877
γ : Type ?u.130880
ι✝ : Sort ?u.130883
ι : Sort u_1
α : Type u_2
inst✝ : ConditionallyCompleteLinearOrderBot α
f : ι → α
hf : ∀ (x : α), ∃ y, y ∈ range f ∧ x < y
a : WithTop α
ha : a < ⊤
i : ι
hi : untop a (_ : a ≠ ⊤) < f i
⊢ a < ↑(f i)
Theorem: ENNReal.rpow_add_rpow_le
File: Mathlib/Analysis/MeanInequalitiesPow.lean

tactic: have h_rpow : ∀ a : ℝ≥0∞, a ^ q = (a ^ p) ^ (q / p) := fun a => by
  rw [← ENNReal.rpow_mul, _root_.mul_div_cancel' _ hp_pos.ne']
state_before: ι : Type u
s : Finset ι
p q : ℝ
a b : ℝ≥0∞
hp_pos : 0 < p
hpq : p ≤ q
⊢ (a ^ q + b ^ q) ^ (1 / q) ≤ (a ^ p + b ^ p) ^ (1 / p)

tactic: have h_rpow_add_rpow_le_add :
  ((a ^ p) ^ (q / p) + (b ^ p) ^ (q / p)) ^ (1 / (q / p)) ≤ a ^ p + b ^ p := by
  refine' rpow_add_rpow_le_add (a ^ p) (b ^ p) _
  rwa [one_le_div hp_pos]
state_before: ι : Type u
s : Finset ι
p q : ℝ
a b : ℝ≥0∞
hp_pos : 0 < p
hpq : p ≤ q
h_rpow : ∀ (a : ℝ≥0∞), a ^ q = (a ^ p) ^ (q / p)
⊢ (a ^ q + b ^ q) ^ (1 / q) ≤ (a ^ p + b ^ p) ^ (1 / p)

tactic: rw [h_rpow a, h_rpow b, ENNReal.le_rpow_one_div_iff hp_pos, ← ENNReal.rpow_mul, mul_comm,
  mul_one_div]
state_before: ι : Type u
s : Finset ι
p q : ℝ
a b : ℝ≥0∞
hp_pos : 0 < p
hpq : p ≤ q
h_rpow : ∀ (a : ℝ≥0∞), a ^ q = (a ^ p) ^ (q / p)
h_rpow_add_rpow_le_add : ((a ^ p) ^ (q / p) + (b ^ p) ^ (q / p)) ^ (1 / (q / p)) ≤ a ^ p + b ^ p
⊢ (a ^ q + b ^ q) ^ (1 / q) ≤ (a ^ p + b ^ p) ^ (1 / p)

tactic: rwa [one_div_div] at h_rpow_add_rpow_le_add
state_before: ι : Type u
s : Finset ι
p q : ℝ
a b : ℝ≥0∞
hp_pos : 0 < p
hpq : p ≤ q
h_rpow : ∀ (a : ℝ≥0∞), a ^ q = (a ^ p) ^ (q / p)
h_rpow_add_rpow_le_add : ((a ^ p) ^ (q / p) + (b ^ p) ^ (q / p)) ^ (1 / (q / p)) ≤ a ^ p + b ^ p
⊢ ((a ^ p) ^ (q / p) + (b ^ p) ^ (q / p)) ^ (p / q) ≤ a ^ p + b ^ p

tactic: rw [← ENNReal.rpow_mul, _root_.mul_div_cancel' _ hp_pos.ne']
state_before: ι : Type u
s : Finset ι
p q : ℝ
a✝ b : ℝ≥0∞
hp_pos : 0 < p
hpq : p ≤ q
a : ℝ≥0∞
⊢ a ^ q = (a ^ p) ^ (q / p)

tactic: refine' rpow_add_rpow_le_add (a ^ p) (b ^ p) _
state_before: ι : Type u
s : Finset ι
p q : ℝ
a b : ℝ≥0∞
hp_pos : 0 < p
hpq : p ≤ q
h_rpow : ∀ (a : ℝ≥0∞), a ^ q = (a ^ p) ^ (q / p)
⊢ ((a ^ p) ^ (q / p) + (b ^ p) ^ (q / p)) ^ (1 / (q / p)) ≤ a ^ p + b ^ p

tactic: rwa [one_le_div hp_pos]
state_before: ι : Type u
s : Finset ι
p q : ℝ
a b : ℝ≥0∞
hp_pos : 0 < p
hpq : p ≤ q
h_rpow : ∀ (a : ℝ≥0∞), a ^ q = (a ^ p) ^ (q / p)
⊢ 1 ≤ q / p
Theorem: ContinuousLinearMap.IsPositive.add
File: Mathlib/Analysis/InnerProductSpace/Positive.lean

tactic: refine' ⟨hT.isSelfAdjoint.add hS.isSelfAdjoint, fun x => _⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.147588
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T S : E →L[𝕜] E
hT : IsPositive T
hS : IsPositive S
⊢ IsPositive (T + S)

tactic: rw [reApplyInnerSelf, add_apply, inner_add_left, map_add]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.147588
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T S : E →L[𝕜] E
hT : IsPositive T
hS : IsPositive S
x : E
⊢ 0 ≤ reApplyInnerSelf (T + S) x

tactic: exact add_nonneg (hT.inner_nonneg_left x) (hS.inner_nonneg_left x)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.147588
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T S : E →L[𝕜] E
hT : IsPositive T
hS : IsPositive S
x : E
⊢ 0 ≤ ↑re (inner (↑T x) x) + ↑re (inner (↑S x) x)
Theorem: MonoidHom.closure_preimage_le
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: rw [SetLike.mem_coe, mem_comap]
state_before: G : Type u_1
G' : Type ?u.550439
inst✝⁴ : Group G
inst✝³ : Group G'
A : Type ?u.550448
inst✝² : AddGroup A
N : Type u_2
P : Type ?u.550457
inst✝¹ : Group N
inst✝ : Group P
K : Subgroup G
f : G →* N
s : Set N
x : G
hx : x ∈ ↑f ⁻¹' s
⊢ x ∈ ↑(comap f (closure s))

tactic: exact subset_closure hx
state_before: G : Type u_1
G' : Type ?u.550439
inst✝⁴ : Group G
inst✝³ : Group G'
A : Type ?u.550448
inst✝² : AddGroup A
N : Type u_2
P : Type ?u.550457
inst✝¹ : Group N
inst✝ : Group P
K : Subgroup G
f : G →* N
s : Set N
x : G
hx : x ∈ ↑f ⁻¹' s
⊢ ↑f x ∈ closure s
Theorem: Finset.compl_erase
File: Mathlib/Data/Fintype/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type ?u.11642
γ : Type ?u.11645
inst✝¹ : Fintype α
s t : Finset α
inst✝ : DecidableEq α
a : α
⊢ erase s aᶜ = insert a (sᶜ)

tactic: simp only [or_iff_not_imp_left, mem_insert, not_and, mem_compl, mem_erase]
state_before: case a
α : Type u_1
β : Type ?u.11642
γ : Type ?u.11645
inst✝¹ : Fintype α
s t : Finset α
inst✝ : DecidableEq α
a a✝ : α
⊢ a✝ ∈ erase s aᶜ ↔ a✝ ∈ insert a (sᶜ)
Theorem: MeasureTheory.extend_eq_top
File: Mathlib/MeasureTheory/Measure/OuterMeasure.lean

tactic: simp [extend, h]
state_before: α : Type u_1
P : α → Prop
m : (s : α) → P s → ℝ≥0∞
s : α
h : ¬P s
⊢ extend m s = ⊤
Theorem: Int.neg_add_le_of_le_add
File: Std/Data/Int/Lemmas.lean

tactic: have h := Int.add_le_add_left h (-b)
state_before: a b c : Int
h : a ≤ b + c
⊢ -b + a ≤ c

tactic: rwa [Int.neg_add_cancel_left] at h
state_before: a b c : Int
h✝ : a ≤ b + c
h : -b + a ≤ -b + (b + c)
⊢ -b + a ≤ c
Theorem: Set.bounded_le_inter_le
File: Mathlib/Order/Bounded.lean

tactic: refine' ⟨_, Bounded.mono (Set.inter_subset_left s _)⟩
state_before: α : Type u_1
r : α → α → Prop
s t : Set α
inst✝ : LinearOrder α
a : α
⊢ Bounded (fun x x_1 => x ≤ x_1) (s ∩ {b | a ≤ b}) ↔ Bounded (fun x x_1 => x ≤ x_1) s

tactic: rw [← @bounded_le_inter_lt _ s _ a]
state_before: α : Type u_1
r : α → α → Prop
s t : Set α
inst✝ : LinearOrder α
a : α
⊢ Bounded (fun x x_1 => x ≤ x_1) (s ∩ {b | a ≤ b}) → Bounded (fun x x_1 => x ≤ x_1) s

tactic: exact Bounded.mono fun x ⟨hx, hx'⟩ => ⟨hx, le_of_lt hx'⟩
state_before: α : Type u_1
r : α → α → Prop
s t : Set α
inst✝ : LinearOrder α
a : α
⊢ Bounded (fun x x_1 => x ≤ x_1) (s ∩ {b | a ≤ b}) → Bounded (fun x x_1 => x ≤ x_1) (s ∩ {b | a < b})
Theorem: PGame.le_zero_lf
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [le_iff_forall_lf]
state_before: x : PGame
⊢ x ≤ 0 ↔ ∀ (i : LeftMoves x), moveLeft x i ⧏ 0

tactic: simp
state_before: x : PGame
⊢ ((∀ (i : LeftMoves x), moveLeft x i ⧏ 0) ∧ ∀ (j : RightMoves 0), x ⧏ moveRight 0 j) ↔
    ∀ (i : LeftMoves x), moveLeft x i ⧏ 0
Theorem: rootsOfUnity.coe_pow
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: rw [Subgroup.coe_pow, Units.val_pow_eq_pow_val]
state_before: M : Type ?u.368159
N : Type ?u.368162
G : Type ?u.368165
R : Type u_1
S : Type ?u.368171
F : Type ?u.368174
inst✝³ : CommMonoid M
inst✝² : CommMonoid N
inst✝¹ : DivisionCommMonoid G
k l : ℕ+
inst✝ : CommMonoid R
ζ : { x // x ∈ rootsOfUnity k R }
m : ℕ
⊢ ↑↑(ζ ^ m) = ↑↑ζ ^ m
Theorem: List.destutter'_cons_pos
File: Mathlib/Data/List/Destutter.lean

tactic: rw [destutter', if_pos h]
state_before: α : Type u_1
l : List α
R : α → α → Prop
inst✝ : DecidableRel R
a b : α
h : R b a
⊢ destutter' R b (a :: l) = b :: destutter' R a l
Theorem: List.prod_eq_foldr
File: Mathlib/Data/List/BigOperators/Basic.lean

tactic: rw [prod_cons, foldr_cons, prod_eq_foldr]
state_before: ι : Type ?u.12132
α : Type ?u.12135
M : Type u_1
N : Type ?u.12141
P : Type ?u.12144
M₀ : Type ?u.12147
G : Type ?u.12150
R : Type ?u.12153
inst✝² : Monoid M
inst✝¹ : Monoid N
inst✝ : Monoid P
l✝ l₁ l₂ : List M
a✝ a : M
l : List M
⊢ prod (a :: l) = foldr (fun x x_1 => x * x_1) 1 (a :: l)
Theorem: Set.image_image2_antidistrib_left
File: Mathlib/Data/Set/NAry.lean

tactic: rw [image_id']
state_before: α : Type u_3
α' : Type ?u.47893
β : Type u_4
β' : Type u_5
γ : Type u_2
γ' : Type ?u.47905
δ : Type u_1
δ' : Type ?u.47911
ε : Type ?u.47914
ε' : Type ?u.47917
ζ : Type ?u.47920
ζ' : Type ?u.47923
ν : Type ?u.47926
f f'✝ : α → β → γ
g✝ g'✝ : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
g : γ → δ
f' : β' → α → δ
g' : β → β'
h_antidistrib : ∀ (a : α) (b : β), g (f a b) = f' (g' b) a
⊢ image2 f' ((fun b => g' b) '' t) ((fun a => a) '' s) = image2 f' (g' '' t) s
Theorem: MonoidHom.eq_iff
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: constructor <;> intro h
state_before: G : Type u_1
G' : Type ?u.513580
inst✝⁵ : Group G
inst✝⁴ : Group G'
A : Type ?u.513589
inst✝³ : AddGroup A
N : Type ?u.513595
P : Type ?u.513598
inst✝² : Group N
inst✝¹ : Group P
K : Subgroup G
M : Type u_2
inst✝ : MulOneClass M
f : G →* M
x y : G
⊢ ↑f x = ↑f y ↔ y⁻¹ * x ∈ ker f

tactic: rw [mem_ker, map_mul, h, ← map_mul, inv_mul_self, map_one]
state_before: case mp
G : Type u_1
G' : Type ?u.513580
inst✝⁵ : Group G
inst✝⁴ : Group G'
A : Type ?u.513589
inst✝³ : AddGroup A
N : Type ?u.513595
P : Type ?u.513598
inst✝² : Group N
inst✝¹ : Group P
K : Subgroup G
M : Type u_2
inst✝ : MulOneClass M
f : G →* M
x y : G
h : ↑f x = ↑f y
⊢ y⁻¹ * x ∈ ker f

tactic: rw [← one_mul x, ← mul_inv_self y, mul_assoc, map_mul, f.mem_ker.1 h, mul_one]
state_before: case mpr
G : Type u_1
G' : Type ?u.513580
inst✝⁵ : Group G
inst✝⁴ : Group G'
A : Type ?u.513589
inst✝³ : AddGroup A
N : Type ?u.513595
P : Type ?u.513598
inst✝² : Group N
inst✝¹ : Group P
K : Subgroup G
M : Type u_2
inst✝ : MulOneClass M
f : G →* M
x y : G
h : y⁻¹ * x ∈ ker f
⊢ ↑f x = ↑f y
Theorem: CategoryTheory.Limits.limit.lift_extend
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

tactic: aesop_cat
state_before: J : Type u₁
inst✝³ : Category J
K : Type u₂
inst✝² : Category K
C : Type u
inst✝¹ : Category C
F✝ F : J ⥤ C
inst✝ : HasLimit F
c : Cone F
X : C
f : X ⟶ c.pt
⊢ lift F (Cone.extend c f) = f ≫ lift F c
Theorem: HomologicalComplex.image_eq_image
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: rw [← eqToHom_comp_d C r r']
state_before: ι : Type u_1
V : Type u
inst✝³ : Category V
inst✝² : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
inst✝¹ : HasImages V
inst✝ : HasEqualizers V
i i' j : ι
r : ComplexShape.Rel c i j
r' : ComplexShape.Rel c i' j
⊢ imageSubobject (d C i j) = imageSubobject (d C i' j)

tactic: apply imageSubobject_iso_comp
state_before: ι : Type u_1
V : Type u
inst✝³ : Category V
inst✝² : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
inst✝¹ : HasImages V
inst✝ : HasEqualizers V
i i' j : ι
r : ComplexShape.Rel c i j
r' : ComplexShape.Rel c i' j
⊢ imageSubobject (eqToHom (_ : X C i = X C i') ≫ d C i' j) = imageSubobject (d C i' j)
Theorem: Convex.isPathConnected
File: Mathlib/Analysis/Convex/Topology.lean

tactic: refine' isPathConnected_iff.mpr ⟨hne, _⟩
state_before: ι : Type ?u.191359
𝕜 : Type ?u.191362
E : Type u_1
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
s : Set E
hconv : Convex ℝ s
hne : Set.Nonempty s
⊢ IsPathConnected s

tactic: intro x x_in y y_in
state_before: ι : Type ?u.191359
𝕜 : Type ?u.191362
E : Type u_1
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
s : Set E
hconv : Convex ℝ s
hne : Set.Nonempty s
⊢ ∀ (x : E), x ∈ s → ∀ (y : E), y ∈ s → JoinedIn s x y

tactic: have H := hconv.segment_subset x_in y_in
state_before: ι : Type ?u.191359
𝕜 : Type ?u.191362
E : Type u_1
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
s : Set E
hconv : Convex ℝ s
hne : Set.Nonempty s
x : E
x_in : x ∈ s
y : E
y_in : y ∈ s
⊢ JoinedIn s x y

tactic: rw [segment_eq_image_lineMap] at H
state_before: ι : Type ?u.191359
𝕜 : Type ?u.191362
E : Type u_1
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
s : Set E
hconv : Convex ℝ s
hne : Set.Nonempty s
x : E
x_in : x ∈ s
y : E
y_in : y ∈ s
H : [x-[ℝ]y] ⊆ s
⊢ JoinedIn s x y

tactic: exact
  JoinedIn.ofLine AffineMap.lineMap_continuous.continuousOn (lineMap_apply_zero _ _)
    (lineMap_apply_one _ _) H
state_before: ι : Type ?u.191359
𝕜 : Type ?u.191362
E : Type u_1
inst✝⁴ : AddCommGroup E
inst✝³ : Module ℝ E
inst✝² : TopologicalSpace E
inst✝¹ : TopologicalAddGroup E
inst✝ : ContinuousSMul ℝ E
s : Set E
hconv : Convex ℝ s
hne : Set.Nonempty s
x : E
x_in : x ∈ s
y : E
y_in : y ∈ s
H : ↑(lineMap x y) '' Icc 0 1 ⊆ s
⊢ JoinedIn s x y
Theorem: FG_adjoin_of_finite
File: Mathlib/RingTheory/IntegralClosure.lean

tactic: erw [Algebra.adjoin_empty, Finset.coe_singleton, ← one_eq_span, one_eq_range,
  LinearMap.mem_range, Algebra.mem_bot]
state_before: R : Type u_2
A : Type u_1
B : Type ?u.318888
S : Type ?u.318891
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
s : Set A
hfs : Set.Finite s
his : ∀ (x : A), x ∈ s → IsIntegral R x
x✝ : ∀ (x : A), x ∈ ∅ → IsIntegral R x
x : A
⊢ x ∈ span R ↑{1} ↔ x ∈ ↑Subalgebra.toSubmodule (Algebra.adjoin R ∅)

tactic: rfl
state_before: R : Type u_2
A : Type u_1
B : Type ?u.318888
S : Type ?u.318891
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
s : Set A
hfs : Set.Finite s
his : ∀ (x : A), x ∈ s → IsIntegral R x
x✝ : ∀ (x : A), x ∈ ∅ → IsIntegral R x
x : A
⊢ (∃ y, ↑(Algebra.linearMap R A) y = x) ↔ x ∈ Set.range ↑(algebraMap R A)

tactic: rw [← Set.union_singleton, Algebra.adjoin_union_coe_submodule]
state_before: R : Type u_2
A : Type u_1
B : Type ?u.318888
S : Type ?u.318891
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
s✝ : Set A
hfs : Set.Finite s✝
his✝ : ∀ (x : A), x ∈ s✝ → IsIntegral R x
a : A
s : Set A
x✝¹ : ¬a ∈ s
x✝ : Set.Finite s
ih : (∀ (x : A), x ∈ s → IsIntegral R x) → FG (↑Subalgebra.toSubmodule (Algebra.adjoin R s))
his : ∀ (x : A), x ∈ insert a s → IsIntegral R x
⊢ FG (↑Subalgebra.toSubmodule (Algebra.adjoin R (insert a s)))

tactic: exact
  FG.mul (ih fun i hi => his i <| Set.mem_insert_of_mem a hi)
    (FG_adjoin_singleton_of_integral _ <| his a <| Set.mem_insert a s)
state_before: R : Type u_2
A : Type u_1
B : Type ?u.318888
S : Type ?u.318891
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : CommRing B
inst✝² : CommRing S
inst✝¹ : Algebra R A
inst✝ : Algebra R B
f : R →+* S
s✝ : Set A
hfs : Set.Finite s✝
his✝ : ∀ (x : A), x ∈ s✝ → IsIntegral R x
a : A
s : Set A
x✝¹ : ¬a ∈ s
x✝ : Set.Finite s
ih : (∀ (x : A), x ∈ s → IsIntegral R x) → FG (↑Subalgebra.toSubmodule (Algebra.adjoin R s))
his : ∀ (x : A), x ∈ insert a s → IsIntegral R x
⊢ FG (↑Subalgebra.toSubmodule (Algebra.adjoin R s) * ↑Subalgebra.toSubmodule (Algebra.adjoin R {a}))