tasksource/leandojo huggingface dataset:
Theorem: Ideal.map_of_equiv
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: simp [← RingEquiv.toRingHom_eq_coe, map_map]
state_before: R : Type u
S : Type v
F : Type ?u.1386892
inst✝² : Ring R
inst✝¹ : Ring S
inst✝ : RingHomClass F R S
f✝ : F
I✝ I : Ideal R
f : R ≃+* S
⊢ map (↑(RingEquiv.symm f)) (map (↑f) I) = I
Theorem: LipschitzWith.eval
File: Mathlib/Topology/MetricSpace/Lipschitz.lean

tactic: convert edist_le_pi_edist f g i
state_before: α✝ : Type u
β : Type v
γ : Type w
ι : Type x
inst✝⁴ : PseudoEMetricSpace α✝
inst✝³ : PseudoEMetricSpace β
inst✝² : PseudoEMetricSpace γ
K : ℝ≥0
f✝ : α✝ → β
x y : α✝
r : ℝ≥0∞
α : ι → Type u
inst✝¹ : (i : ι) → PseudoEMetricSpace (α i)
inst✝ : Fintype ι
i : ι
f g : (x : ι) → α x
⊢ edist (eval i f) (eval i g) ≤ edist f g
Theorem: AlternatingMap.map_swap_add
File: Mathlib/LinearAlgebra/Alternating.lean

tactic: rw [Equiv.comp_swap_eq_update]
state_before: R : Type u_4
inst✝¹⁵ : Semiring R
M : Type u_3
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
N : Type u_2
inst✝¹² : AddCommMonoid N
inst✝¹¹ : Module R N
P : Type ?u.417280
inst✝¹⁰ : AddCommMonoid P
inst✝⁹ : Module R P
M' : Type ?u.417310
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M'
N' : Type ?u.417698
inst✝⁶ : AddCommGroup N'
inst✝⁵ : Module R N'
ι : Type u_1
ι' : Type ?u.418089
ι'' : Type ?u.418092
M₂ : Type ?u.418095
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R M₂
M₃ : Type ?u.418125
inst✝² : AddCommMonoid M₃
inst✝¹ : Module R M₃
f f' : AlternatingMap R M N ι
g g₂ : AlternatingMap R M N' ι
g' : AlternatingMap R M' N' ι
v : ι → M
v' : ι → M'
inst✝ : DecidableEq ι
i j : ι
hij : i ≠ j
⊢ ↑f (v ∘ ↑(Equiv.swap i j)) + ↑f v = 0

tactic: convert f.map_update_update v hij (v i + v j)
state_before: R : Type u_4
inst✝¹⁵ : Semiring R
M : Type u_3
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
N : Type u_2
inst✝¹² : AddCommMonoid N
inst✝¹¹ : Module R N
P : Type ?u.417280
inst✝¹⁰ : AddCommMonoid P
inst✝⁹ : Module R P
M' : Type ?u.417310
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M'
N' : Type ?u.417698
inst✝⁶ : AddCommGroup N'
inst✝⁵ : Module R N'
ι : Type u_1
ι' : Type ?u.418089
ι'' : Type ?u.418092
M₂ : Type ?u.418095
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R M₂
M₃ : Type ?u.418125
inst✝² : AddCommMonoid M₃
inst✝¹ : Module R M₃
f f' : AlternatingMap R M N ι
g g₂ : AlternatingMap R M N' ι
g' : AlternatingMap R M' N' ι
v : ι → M
v' : ι → M'
inst✝ : DecidableEq ι
i j : ι
hij : i ≠ j
⊢ ↑f (update (update v j (v i)) i (v j)) + ↑f v = 0

tactic: simp [f.map_update_self _ hij, f.map_update_self _ hij.symm,
  Function.update_comm hij (v i + v j) (v _) v, Function.update_comm hij.symm (v i) (v i) v]
state_before: case h.e'_2
R : Type u_4
inst✝¹⁵ : Semiring R
M : Type u_3
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
N : Type u_2
inst✝¹² : AddCommMonoid N
inst✝¹¹ : Module R N
P : Type ?u.417280
inst✝¹⁰ : AddCommMonoid P
inst✝⁹ : Module R P
M' : Type ?u.417310
inst✝⁸ : AddCommGroup M'
inst✝⁷ : Module R M'
N' : Type ?u.417698
inst✝⁶ : AddCommGroup N'
inst✝⁵ : Module R N'
ι : Type u_1
ι' : Type ?u.418089
ι'' : Type ?u.418092
M₂ : Type ?u.418095
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R M₂
M₃ : Type ?u.418125
inst✝² : AddCommMonoid M₃
inst✝¹ : Module R M₃
f f' : AlternatingMap R M N ι
g g₂ : AlternatingMap R M N' ι
g' : AlternatingMap R M' N' ι
v : ι → M
v' : ι → M'
inst✝ : DecidableEq ι
i j : ι
hij : i ≠ j
⊢ ↑f (update (update v j (v i)) i (v j)) + ↑f v = ↑f (update (update v i (v i + v j)) j (v i + v j))
Theorem: List.Ico.succ_singleton
File: Mathlib/Data/List/Intervals.lean

tactic: dsimp [Ico]
state_before: n : ℕ
⊢ Ico n (n + 1) = [n]

tactic: simp [range', add_tsub_cancel_left]
state_before: n : ℕ
⊢ range' n (n + 1 - n) = [n]
Theorem: LinearMap.associated_det_of_eq_comp
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: suffices Associated (LinearMap.det (f' ∘ₗ ↑e)) (LinearMap.det f') by
  convert this using 2
  ext x
  exact h x
state_before: R : Type u_1
inst✝⁶ : CommRing R
M : Type u_2
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type ?u.2104049
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
ι : Type ?u.2104591
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
e✝ : Basis ι R M
e : M ≃ₗ[R] M
f f' : M →ₗ[R] M
h : ∀ (x : M), ↑f x = ↑f' (↑e x)
⊢ Associated (↑LinearMap.det f) (↑LinearMap.det f')

tactic: rw [← mul_one (LinearMap.det f'), LinearMap.det_comp]
state_before: R : Type u_1
inst✝⁶ : CommRing R
M : Type u_2
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type ?u.2104049
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
ι : Type ?u.2104591
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
e✝ : Basis ι R M
e : M ≃ₗ[R] M
f f' : M →ₗ[R] M
h : ∀ (x : M), ↑f x = ↑f' (↑e x)
⊢ Associated (↑LinearMap.det (comp f' ↑e)) (↑LinearMap.det f')

tactic: exact Associated.mul_left _ (associated_one_iff_isUnit.mpr e.isUnit_det')
state_before: R : Type u_1
inst✝⁶ : CommRing R
M : Type u_2
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type ?u.2104049
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
ι : Type ?u.2104591
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
e✝ : Basis ι R M
e : M ≃ₗ[R] M
f f' : M →ₗ[R] M
h : ∀ (x : M), ↑f x = ↑f' (↑e x)
⊢ Associated (↑LinearMap.det f' * ↑LinearMap.det ↑e) (↑LinearMap.det f' * 1)

tactic: convert this using 2
state_before: R : Type u_1
inst✝⁶ : CommRing R
M : Type u_2
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type ?u.2104049
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
ι : Type ?u.2104591
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
e✝ : Basis ι R M
e : M ≃ₗ[R] M
f f' : M →ₗ[R] M
h : ∀ (x : M), ↑f x = ↑f' (↑e x)
this : Associated (↑LinearMap.det (comp f' ↑e)) (↑LinearMap.det f')
⊢ Associated (↑LinearMap.det f) (↑LinearMap.det f')

tactic: ext x
state_before: case h.e'_3.h.e'_6
R : Type u_1
inst✝⁶ : CommRing R
M : Type u_2
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type ?u.2104049
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
ι : Type ?u.2104591
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
e✝ : Basis ι R M
e : M ≃ₗ[R] M
f f' : M →ₗ[R] M
h : ∀ (x : M), ↑f x = ↑f' (↑e x)
this : Associated (↑LinearMap.det (comp f' ↑e)) (↑LinearMap.det f')
⊢ f = comp f' ↑e

tactic: exact h x
state_before: case h.e'_3.h.e'_6.h
R : Type u_1
inst✝⁶ : CommRing R
M : Type u_2
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type ?u.2104049
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
ι : Type ?u.2104591
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
e✝ : Basis ι R M
e : M ≃ₗ[R] M
f f' : M →ₗ[R] M
h : ∀ (x : M), ↑f x = ↑f' (↑e x)
this : Associated (↑LinearMap.det (comp f' ↑e)) (↑LinearMap.det f')
x : M
⊢ ↑f x = ↑(comp f' ↑e) x
Theorem: zpow_two
File: Mathlib/Algebra/GroupPower/Basic.lean

tactic: convert pow_two a using 1
state_before: α : Type ?u.55852
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✝ : DivInvMonoid G
a : G
⊢ a ^ 2 = a * a

tactic: exact zpow_ofNat a 2
state_before: case h.e'_2
α : Type ?u.55852
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✝ : DivInvMonoid G
a : G
⊢ a ^ 2 = a ^ 2
Theorem: ContinuousMultilinearMap.uncurry_curryRight
File: Mathlib/Analysis/NormedSpace/Multilinear.lean

tactic: ext m
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
⊢ uncurryRight (curryRight f) = f

tactic: simp
state_before: case H
𝕜 : Type u
ι : Type v
ι' : Type v'
n : ℕ
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
Ei : Fin (Nat.succ n) → Type wEi
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → NormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → NormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → NormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : (i : Fin (Nat.succ n)) → NormedAddCommGroup (Ei i)
inst✝⁴ : (i : Fin (Nat.succ n)) → NormedSpace 𝕜 (Ei i)
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f : ContinuousMultilinearMap 𝕜 Ei G
m : (i : Fin (Nat.succ n)) → Ei i
⊢ ↑(uncurryRight (curryRight f)) m = ↑f m
Theorem: Metric.thickening_thickening_subset
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: obtain hε | hε := le_total ε 0
state_before: ι : Sort ?u.153954
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε✝ : ℝ
s✝ t : Set α
x : α
ε δ : ℝ
s : Set α
⊢ thickening ε (thickening δ s) ⊆ thickening (ε + δ) s

tactic: obtain hδ | hδ := le_total δ 0
state_before: case inr
ι : Sort ?u.153954
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε✝ : ℝ
s✝ t : Set α
x : α
ε δ : ℝ
s : Set α
hε : 0 ≤ ε
⊢ thickening ε (thickening δ s) ⊆ thickening (ε + δ) s

tactic: intro x
state_before: case inr.inr
ι : Sort ?u.153954
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε✝ : ℝ
s✝ t : Set α
x : α
ε δ : ℝ
s : Set α
hε : 0 ≤ ε
hδ : 0 ≤ δ
⊢ thickening ε (thickening δ s) ⊆ thickening (ε + δ) s

tactic: simp_rw [mem_thickening_iff_exists_edist_lt, ENNReal.ofReal_add hε hδ]
state_before: case inr.inr
ι : Sort ?u.153954
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε✝ : ℝ
s✝ t : Set α
x✝ : α
ε δ : ℝ
s : Set α
hε : 0 ≤ ε
hδ : 0 ≤ δ
x : α
⊢ x ∈ thickening ε (thickening δ s) → x ∈ thickening (ε + δ) s

tactic: exact fun ⟨y, ⟨z, hz, hy⟩, hx⟩ =>
  ⟨z, hz, (edist_triangle _ _ _).trans_lt <| ENNReal.add_lt_add hx hy⟩
state_before: case inr.inr
ι : Sort ?u.153954
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε✝ : ℝ
s✝ t : Set α
x✝ : α
ε δ : ℝ
s : Set α
hε : 0 ≤ ε
hδ : 0 ≤ δ
x : α
⊢ (∃ z, (∃ z_1, z_1 ∈ s ∧ edist z z_1 < ENNReal.ofReal δ) ∧ edist x z < ENNReal.ofReal ε) →
    ∃ z, z ∈ s ∧ edist x z < ENNReal.ofReal ε + ENNReal.ofReal δ

tactic: simp only [thickening_of_nonpos hε, empty_subset]
state_before: case inl
ι : Sort ?u.153954
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε✝ : ℝ
s✝ t : Set α
x : α
ε δ : ℝ
s : Set α
hε : ε ≤ 0
⊢ thickening ε (thickening δ s) ⊆ thickening (ε + δ) s

tactic: simp only [thickening_of_nonpos hδ, thickening_empty, empty_subset]
state_before: case inr.inl
ι : Sort ?u.153954
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε✝ : ℝ
s✝ t : Set α
x : α
ε δ : ℝ
s : Set α
hε : 0 ≤ ε
hδ : δ ≤ 0
⊢ thickening ε (thickening δ s) ⊆ thickening (ε + δ) s
Theorem: Composition.eq_ones_iff_length
File: Mathlib/Combinatorics/Composition.lean

tactic: constructor
state_before: n : ℕ
c✝ c : Composition n
⊢ c = ones n ↔ length c = n

tactic: rintro rfl
state_before: case mp
n : ℕ
c✝ c : Composition n
⊢ c = ones n → length c = n

tactic: exact ones_length n
state_before: case mp
n : ℕ
c : Composition n
⊢ length (ones n) = n

tactic: contrapose
state_before: case mpr
n : ℕ
c✝ c : Composition n
⊢ length c = n → c = ones n

tactic: intro H length_n
state_before: case mpr
n : ℕ
c✝ c : Composition n
⊢ ¬c = ones n → ¬length c = n

tactic: apply lt_irrefl n
state_before: case mpr
n : ℕ
c✝ c : Composition n
H : ¬c = ones n
length_n : length c = n
⊢ False

tactic: calc
  n = ∑ i : Fin c.length, 1 := by simp [length_n]
  _ < ∑ i : Fin c.length, c.blocksFun i := by
    {
    obtain ⟨i, hi, i_blocks⟩ : ∃ i ∈ c.blocks, 1 < i := ne_ones_iff.1 H
    rw [← ofFn_blocksFun, mem_ofFn c.blocksFun, Set.mem_range] at hi
    obtain ⟨j : Fin c.length, hj : c.blocksFun j = i⟩ := hi
    rw [← hj] at i_blocks
    exact Finset.sum_lt_sum (fun i _ => by simp [blocksFun]) ⟨j, Finset.mem_univ _, i_blocks⟩
    }
  _ = n := c.sum_blocksFun
state_before: case mpr
n : ℕ
c✝ c : Composition n
H : ¬c = ones n
length_n : length c = n
⊢ n < n

tactic: simp [length_n]
state_before: n : ℕ
c✝ c : Composition n
H : ¬c = ones n
length_n : length c = n
⊢ n = ∑ i : Fin (length c), 1

tactic: simp [blocksFun]
state_before: n : ℕ
c✝ c : Composition n
H : ¬c = ones n
length_n : length c = n
i✝ : ℕ
j : Fin (length c)
i_blocks : 1 < blocksFun c j
hj : blocksFun c j = i✝
i : Fin (length c)
x✝ : i ∈ Finset.univ
⊢ 1 ≤ blocksFun c i
Theorem: Prod.fst_eq_iff
File: Mathlib/Data/Prod/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.5233
δ : Type ?u.5236
a : α
b : β
x : α
⊢ (a, b).fst = x ↔ (a, b) = (x, (a, b).snd)
Theorem: StarConvex.add_smul_mem
File: Mathlib/Analysis/Convex/Star.lean

tactic: have h : x + t • y = (1 - t) • x + t • (x + y) := by
  rw [smul_add, ← add_assoc, ← add_smul, sub_add_cancel, one_smul]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.100004
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
s t✝ : Set E
hs : StarConvex 𝕜 x s
hy : x + y ∈ s
t : 𝕜
ht₀ : 0 ≤ t
ht₁ : t ≤ 1
⊢ x + t • y ∈ s

tactic: rw [h]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.100004
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
s t✝ : Set E
hs : StarConvex 𝕜 x s
hy : x + y ∈ s
t : 𝕜
ht₀ : 0 ≤ t
ht₁ : t ≤ 1
h : x + t • y = (1 - t) • x + t • (x + y)
⊢ x + t • y ∈ s

tactic: exact hs hy (sub_nonneg_of_le ht₁) ht₀ (sub_add_cancel _ _)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.100004
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
s t✝ : Set E
hs : StarConvex 𝕜 x s
hy : x + y ∈ s
t : 𝕜
ht₀ : 0 ≤ t
ht₁ : t ≤ 1
h : x + t • y = (1 - t) • x + t • (x + y)
⊢ (1 - t) • x + t • (x + y) ∈ s

tactic: rw [smul_add, ← add_assoc, ← add_smul, sub_add_cancel, one_smul]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.100004
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
s t✝ : Set E
hs : StarConvex 𝕜 x s
hy : x + y ∈ s
t : 𝕜
ht₀ : 0 ≤ t
ht₁ : t ≤ 1
⊢ x + t • y = (1 - t) • x + t • (x + y)
Theorem: PosNum.cast_to_num
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← cast_to_nat, ← of_to_nat n]
state_before: α : Type ?u.355613
n : PosNum
⊢ ↑n = pos n
Theorem: multiplicity.ne_top_iff_finite
File: Mathlib/RingTheory/Multiplicity.lean

tactic: rw [Ne.def, eq_top_iff_not_finite, Classical.not_not]
state_before: α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
⊢ multiplicity a b ≠ ⊤ ↔ Finite a b
Theorem: List.length_finRange
File: Mathlib/Data/List/Range.lean

tactic: rw [finRange, length_pmap, length_range]
state_before: α : Type u
n : ℕ
⊢ length (finRange n) = n
Theorem: mul_self_mul_inv
File: Mathlib/Algebra/GroupWithZero/Basic.lean

tactic: by_cases h : a = 0
state_before: α : Type ?u.24169
M₀ : Type ?u.24172
G₀ : Type u_1
M₀' : Type ?u.24178
G₀' : Type ?u.24181
F : Type ?u.24184
F' : Type ?u.24187
inst✝ : GroupWithZero G₀
a✝ b c a : G₀
⊢ a * a * a⁻¹ = a

tactic: rw [h, inv_zero, mul_zero]
state_before: case pos
α : Type ?u.24169
M₀ : Type ?u.24172
G₀ : Type u_1
M₀' : Type ?u.24178
G₀' : Type ?u.24181
F : Type ?u.24184
F' : Type ?u.24187
inst✝ : GroupWithZero G₀
a✝ b c a : G₀
h : a = 0
⊢ a * a * a⁻¹ = a

tactic: rw [mul_assoc, mul_inv_cancel h, mul_one]
state_before: case neg
α : Type ?u.24169
M₀ : Type ?u.24172
G₀ : Type u_1
M₀' : Type ?u.24178
G₀' : Type ?u.24181
F : Type ?u.24184
F' : Type ?u.24187
inst✝ : GroupWithZero G₀
a✝ b c a : G₀
h : ¬a = 0
⊢ a * a * a⁻¹ = a
Theorem: Metric.hausdorffDist_empty'
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp [hausdorffDist_comm]
state_before: ι : Sort ?u.75311
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
⊢ hausdorffDist ∅ s = 0
Theorem: CategoryTheory.Limits.Cofork.ofCocone_ι
File: Mathlib/CategoryTheory/Limits/Shapes/Equalizers.lean

tactic: aesop
state_before: C : Type u
inst✝ : Category C
X Y : C
f g : X ⟶ Y
F : WalkingParallelPair ⥤ C
t : Cocone F
j : WalkingParallelPair
⊢ (parallelPair (F.map left) (F.map right)).obj j = F.obj j
Theorem: exists_unique_const
File: Mathlib/Logic/Basic.lean

tactic: simp
state_before: ι : Sort ?u.15425
α✝ : Sort ?u.15430
κ : ι → Sort ?u.15427
p q : α✝ → Prop
b : Prop
α : Sort u_1
i : Nonempty α
inst✝ : Subsingleton α
⊢ (∃! x, b) ↔ b
Theorem: Nat.dvd_refl
File: Std/Data/Nat/Lemmas.lean

tactic: simp
state_before: a : Nat
⊢ a = a * 1
Theorem: Real.Angle.sign_pi_sub
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: simp [sign_antiperiodic.sub_eq']
state_before: θ : Angle
⊢ sign (↑π - θ) = sign θ
Theorem: t2_iff_ultrafilter
File: Mathlib/Topology/Separation.lean

tactic: simp only [← exists_ultrafilter_iff, and_imp, le_inf_iff, exists_imp]
state_before: α : Type u
β : Type v
inst✝ : TopologicalSpace α
⊢ (∀ {x y : α}, NeBot (𝓝 x ⊓ 𝓝 y) → x = y) ↔ ∀ {x y : α} (f : Ultrafilter α), ↑f ≤ 𝓝 x → ↑f ≤ 𝓝 y → x = y
Theorem: prod_mk_prod
File: Mathlib/Algebra/BigOperators/Pi.lean

tactic: simp (config := { contextual := true }) [Prod.ext_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : CommMonoid α
inst✝ : CommMonoid β
s : Finset γ
f : γ → α
g : γ → β
this : DecidableEq γ
⊢ ∀ ⦃a : γ⦄ {s : Finset γ},
    ¬a ∈ s →
      (∏ x in s, f x, ∏ x in s, g x) = ∏ x in s, (f x, g x) →
        (∏ x in insert a s, f x, ∏ x in insert a s, g x) = ∏ x in insert a s, (f x, g x)
Theorem: Int.le_of_neg_le_neg
File: Std/Data/Int/Lemmas.lean

tactic: simp [Int.neg_neg] at this
state_before: a b : Int
h : -b ≤ -a
this : - -a ≤ - -b
⊢ a ≤ b

tactic: assumption
state_before: a b : Int
h : -b ≤ -a
this : a ≤ b
⊢ a ≤ b
Theorem: ENNReal.toNNReal_sInf
File: Mathlib/Data/Real/ENNReal.lean

tactic: have hf : ∀ i, ((↑) : s → ℝ≥0∞) i ≠ ∞ := fun ⟨r, rs⟩ => hs r rs
state_before: α : Type ?u.839566
β : Type ?u.839569
a b c d : ℝ≥0∞
r p q : ℝ≥0
ι : Sort ?u.839586
f g : ι → ℝ≥0∞
s : Set ℝ≥0∞
hs : ∀ (r : ℝ≥0∞), r ∈ s → r ≠ ⊤
⊢ ENNReal.toNNReal (sInf s) = sInf (ENNReal.toNNReal '' s)

tactic: simpa only [← sInf_range, ← image_eq_range, Subtype.range_coe_subtype] using (toNNReal_iInf hf)
state_before: α : Type ?u.839566
β : Type ?u.839569
a b c d : ℝ≥0∞
r p q : ℝ≥0
ι : Sort ?u.839586
f g : ι → ℝ≥0∞
s : Set ℝ≥0∞
hs : ∀ (r : ℝ≥0∞), r ∈ s → r ≠ ⊤
hf : ∀ (i : { x // x ∈ s }), ↑i ≠ ⊤
⊢ ENNReal.toNNReal (sInf s) = sInf (ENNReal.toNNReal '' s)
Theorem: IsClosed.analyticSet
File: Mathlib/MeasureTheory/Constructions/Polish.lean

tactic: haveI : PolishSpace s := hs.polishSpace
state_before: α : Type u_1
inst✝¹ : TopologicalSpace α
ι : Type ?u.62127
inst✝ : PolishSpace α
s : Set α
hs : IsClosed s
⊢ AnalyticSet s

tactic: rw [← @Subtype.range_val α s]
state_before: α : Type u_1
inst✝¹ : TopologicalSpace α
ι : Type ?u.62127
inst✝ : PolishSpace α
s : Set α
hs : IsClosed s
this : PolishSpace ↑s
⊢ AnalyticSet s

tactic: exact analyticSet_range_of_polishSpace continuous_subtype_val
state_before: α : Type u_1
inst✝¹ : TopologicalSpace α
ι : Type ?u.62127
inst✝ : PolishSpace α
s : Set α
hs : IsClosed s
this : PolishSpace ↑s
⊢ AnalyticSet (range Subtype.val)
Theorem: tsum_neg
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: by_cases hf : Summable f
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.442177
δ : Type ?u.442180
inst✝³ : AddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalAddGroup α
f g : β → α
a a₁ a₂ : α
inst✝ : T2Space α
⊢ (∑' (b : β), -f b) = -∑' (b : β), f b

tactic: exact hf.hasSum.neg.tsum_eq
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type ?u.442177
δ : Type ?u.442180
inst✝³ : AddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalAddGroup α
f g : β → α
a a₁ a₂ : α
inst✝ : T2Space α
hf : Summable f
⊢ (∑' (b : β), -f b) = -∑' (b : β), f b

tactic: simp [tsum_eq_zero_of_not_summable hf, tsum_eq_zero_of_not_summable (mt Summable.of_neg hf)]
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type ?u.442177
δ : Type ?u.442180
inst✝³ : AddCommGroup α
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalAddGroup α
f g : β → α
a a₁ a₂ : α
inst✝ : T2Space α
hf : ¬Summable f
⊢ (∑' (b : β), -f b) = -∑' (b : β), f b
Theorem: Nat.pow_succ_le_ascFactorial
File: Mathlib/Data/Nat/Factorial/Basic.lean

tactic: rw [ascFactorial_zero, pow_zero]
state_before: n : ℕ
⊢ (n + 1) ^ 0 ≤ ascFactorial n 0

tactic: rw [pow_succ, mul_comm]
state_before: n k : ℕ
⊢ (n + 1) ^ (k + 1) ≤ ascFactorial n (k + 1)

tactic: exact Nat.mul_le_mul (Nat.add_le_add_right le_self_add _) (pow_succ_le_ascFactorial _ k)
state_before: n k : ℕ
⊢ (n + 1) * (n + 1) ^ k ≤ ascFactorial n (k + 1)
Theorem: Polynomial.degreeLTEquiv_eq_zero_iff_eq_zero
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: rw [LinearEquiv.map_eq_zero_iff, Submodule.mk_eq_zero]
state_before: R : Type u
S : Type ?u.28643
inst✝ : Semiring R
n : ℕ
p : R[X]
hp : p ∈ degreeLT R n
⊢ ↑(degreeLTEquiv R n) { val := p, property := hp } = 0 ↔ p = 0
Theorem: invOf_mul_eq_iff_eq_mul_left
File: Mathlib/Algebra/Invertible.lean

tactic: rw [← mul_left_inj_of_invertible (c := c), mul_invOf_self_assoc]
state_before: α : Type u
c a b : α
inst✝¹ : Monoid α
inst✝ : Invertible c
⊢ ⅟c * a = b ↔ a = c * b
Theorem: List.exists_perm_sublist
File: Mathlib/Data/List/Perm.lean

tactic: exact ⟨[], eq_nil_of_sublist_nil s ▸ Perm.refl _, nil_sublist _⟩
state_before: case nil
α : Type uu
β : Type vv
l₁✝ l₂✝ l₂ l₂' l₁ : List α
s : l₁ <+ []
⊢ ∃ l₁' x, l₁' <+ []

tactic: cases' s with _ _ _ s l₁ _ _ s
state_before: case cons
α : Type uu
β : Type vv
l₁✝¹ l₂✝¹ l₂ l₂' : List α
x : α
l₁✝ l₂✝ : List α
a✝ : l₁✝ ~ l₂✝
IH : ∀ {l₁ : List α}, l₁ <+ l₁✝ → ∃ l₁' x, l₁' <+ l₂✝
l₁ : List α
s : l₁ <+ x :: l₁✝
⊢ ∃ l₁' x_1, l₁' <+ x :: l₂✝

tactic: exact
  let ⟨l₁', p', s'⟩ := IH s
  ⟨l₁', p', s'.cons _⟩
state_before: case cons.cons
α : Type uu
β : Type vv
l₁✝¹ l₂✝¹ l₂ l₂' : List α
x : α
l₁✝ l₂✝ : List α
a✝ : l₁✝ ~ l₂✝
IH : ∀ {l₁ : List α}, l₁ <+ l₁✝ → ∃ l₁' x, l₁' <+ l₂✝
l₁ : List α
s : l₁ <+ l₁✝
⊢ ∃ l₁' x_1, l₁' <+ x :: l₂✝

tactic: exact
  let ⟨l₁', p', s'⟩ := IH s
  ⟨x :: l₁', p'.cons x, s'.cons₂ _⟩
state_before: case cons.cons₂
α : Type uu
β : Type vv
l₁✝¹ l₂✝¹ l₂ l₂' : List α
x : α
l₁✝ l₂✝ : List α
a✝ : l₁✝ ~ l₂✝
IH : ∀ {l₁ : List α}, l₁ <+ l₁✝ → ∃ l₁' x, l₁' <+ l₂✝
l₁ : List α
s : l₁ <+ l₁✝
⊢ ∃ l₁' x_1, l₁' <+ x :: l₂✝

tactic: cases' s with _ _ _ s l₁ _ _ s <;> cases' s with _ _ _ s l₁ _ _ s
state_before: case swap
α : Type uu
β : Type vv
l₁✝ l₂✝ l₂ l₂' : List α
x y : α
l✝ l₁ : List α
s : l₁ <+ y :: x :: l✝
⊢ ∃ l₁' x_1, l₁' <+ x :: y :: l✝

tactic: exact ⟨l₁, Perm.refl _, (s.cons _).cons _⟩
state_before: case swap.cons.cons
α : Type uu
β : Type vv
l₁✝ l₂✝ l₂ l₂' : List α
x y : α
l✝ l₁ : List α
s : l₁ <+ l✝
⊢ ∃ l₁' x_1, l₁' <+ x :: y :: l✝

tactic: exact ⟨x :: l₁, Perm.refl _, (s.cons _).cons₂ _⟩
state_before: case swap.cons.cons₂
α : Type uu
β : Type vv
l₁✝ l₂✝ l₂ l₂' : List α
x y : α
l✝ l₁ : List α
s : l₁ <+ l✝
⊢ ∃ l₁' x_1, l₁' <+ x :: y :: l✝

tactic: exact ⟨y :: l₁, Perm.refl _, (s.cons₂ _).cons _⟩
state_before: case swap.cons₂.cons
α : Type uu
β : Type vv
l₁✝ l₂✝ l₂ l₂' : List α
x y : α
l✝ l₁ : List α
s : l₁ <+ l✝
⊢ ∃ l₁' x_1, l₁' <+ x :: y :: l✝

tactic: exact ⟨x :: y :: l₁, Perm.swap _ _ _, (s.cons₂ _).cons₂ _⟩
state_before: case swap.cons₂.cons₂
α : Type uu
β : Type vv
l₁✝ l₂✝ l₂ l₂' : List α
x y : α
l✝ l₁ : List α
s : l₁ <+ l✝
⊢ ∃ l₁' x_1, l₁' <+ x :: y :: l✝

tactic: exact
  let ⟨m₁, pm, sm⟩ := IH₁ s
  let ⟨r₁, pr, sr⟩ := IH₂ sm
  ⟨r₁, pr.trans pm, sr⟩
state_before: case trans
α : Type uu
β : Type vv
l₁✝¹ l₂✝¹ l₂ l₂' l₁✝ l₂✝ l₃✝ : List α
a✝¹ : l₁✝ ~ l₂✝
a✝ : l₂✝ ~ l₃✝
IH₁ : ∀ {l₁ : List α}, l₁ <+ l₁✝ → ∃ l₁' x, l₁' <+ l₂✝
IH₂ : ∀ {l₁ : List α}, l₁ <+ l₂✝ → ∃ l₁' x, l₁' <+ l₃✝
l₁ : List α
s : l₁ <+ l₁✝
⊢ ∃ l₁' x, l₁' <+ l₃✝