tasksource/leandojo huggingface dataset:
Theorem: IsSubgroup.mem_norm_comm
File: Mathlib/Deprecated/Subgroup.lean

tactic: have h : a⁻¹ * (a * b) * a⁻¹⁻¹ ∈ s := hs.normal (a * b) hab a⁻¹
state_before: G : Type u_1
H : Type ?u.22432
A : Type ?u.22435
a✝ a₁ a₂ b✝ c : G
inst✝ : Group G
s : Set G
hs : IsNormalSubgroup s
a b : G
hab : a * b ∈ s
⊢ b * a ∈ s

tactic: simp at h
state_before: G : Type u_1
H : Type ?u.22432
A : Type ?u.22435
a✝ a₁ a₂ b✝ c : G
inst✝ : Group G
s : Set G
hs : IsNormalSubgroup s
a b : G
hab : a * b ∈ s
h : a⁻¹ * (a * b) * a⁻¹⁻¹ ∈ s
⊢ b * a ∈ s

tactic: exact h
state_before: G : Type u_1
H : Type ?u.22432
A : Type ?u.22435
a✝ a₁ a₂ b✝ c : G
inst✝ : Group G
s : Set G
hs : IsNormalSubgroup s
a b : G
hab : a * b ∈ s
h : b * a ∈ s
⊢ b * a ∈ s
Theorem: List.dedup_cons_of_not_mem'
File: Mathlib/Data/List/Dedup.lean

tactic: simpa only [forall_mem_ne] using h
state_before: α : Type u
inst✝ : DecidableEq α
a : α
l : List α
h : ¬a ∈ dedup l
⊢ ∀ (b : α), b ∈ pwFilter (fun x x_1 => x ≠ x_1) l → a ≠ b
Theorem: CategoryTheory.Limits.bicone_ι_π_ne
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

tactic: simpa [h] using B.ι_π j j'
state_before: J : Type w
C : Type u
inst✝¹ : Category C
inst✝ : HasZeroMorphisms C
F : J → C
B : Bicone F
j j' : J
h : j ≠ j'
⊢ Bicone.ι B j ≫ Bicone.π B j' = 0
Theorem: Polynomial.mem_rootSet'
File: Mathlib/Data/Polynomial/RingDivision.lean

tactic: rw [rootSet, Finset.mem_coe, mem_toFinset, mem_roots', IsRoot.def, ← eval₂_eq_eval_map,
  aeval_def]
state_before: R : Type u
S✝ : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝⁵ : CommRing R
inst✝⁴ : IsDomain R
p✝ q : R[X]
inst✝³ : CommRing T
p : T[X]
S : Type u_1
inst✝² : CommRing S
inst✝¹ : IsDomain S
inst✝ : Algebra T S
a : S
⊢ a ∈ rootSet p S ↔ map (algebraMap T S) p ≠ 0 ∧ ↑(aeval a) p = 0
Theorem: lp.norm_const_smul
File: Mathlib/Analysis/NormedSpace/lpSpace.lean

tactic: obtain rfl | hc := eq_or_ne c 0
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝³ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type u_3
inst✝² : NormedDivisionRing 𝕜
inst✝¹ : (i : α) → Module 𝕜 (E i)
inst✝ : ∀ (i : α), BoundedSMul 𝕜 (E i)
hp : p ≠ 0
c : 𝕜
f : { x // x ∈ lp E p }
⊢ ‖c • f‖ = ‖c‖ * ‖f‖

tactic: refine' le_antisymm (norm_const_smul_le hp c f) _
state_before: case inr
α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝³ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type u_3
inst✝² : NormedDivisionRing 𝕜
inst✝¹ : (i : α) → Module 𝕜 (E i)
inst✝ : ∀ (i : α), BoundedSMul 𝕜 (E i)
hp : p ≠ 0
c : 𝕜
f : { x // x ∈ lp E p }
hc : c ≠ 0
⊢ ‖c • f‖ = ‖c‖ * ‖f‖

tactic: have := mul_le_mul_of_nonneg_left (norm_const_smul_le hp c⁻¹ (c • f)) (norm_nonneg c)
state_before: case inr
α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝³ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type u_3
inst✝² : NormedDivisionRing 𝕜
inst✝¹ : (i : α) → Module 𝕜 (E i)
inst✝ : ∀ (i : α), BoundedSMul 𝕜 (E i)
hp : p ≠ 0
c : 𝕜
f : { x // x ∈ lp E p }
hc : c ≠ 0
⊢ ‖c‖ * ‖f‖ ≤ ‖c • f‖

tactic: rwa [inv_smul_smul₀ hc, norm_inv, mul_inv_cancel_left₀ (norm_ne_zero_iff.mpr hc)] at this
state_before: case inr
α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝³ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type u_3
inst✝² : NormedDivisionRing 𝕜
inst✝¹ : (i : α) → Module 𝕜 (E i)
inst✝ : ∀ (i : α), BoundedSMul 𝕜 (E i)
hp : p ≠ 0
c : 𝕜
f : { x // x ∈ lp E p }
hc : c ≠ 0
this : ‖c‖ * ‖c⁻¹ • c • f‖ ≤ ‖c‖ * (‖c⁻¹‖ * ‖c • f‖)
⊢ ‖c‖ * ‖f‖ ≤ ‖c • f‖

tactic: simp
state_before: case inl
α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝³ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type u_3
inst✝² : NormedDivisionRing 𝕜
inst✝¹ : (i : α) → Module 𝕜 (E i)
inst✝ : ∀ (i : α), BoundedSMul 𝕜 (E i)
hp : p ≠ 0
f : { x // x ∈ lp E p }
⊢ ‖0 • f‖ = ‖0‖ * ‖f‖
Theorem: Nat.squarefree_pow_iff
File: Mathlib/Data/Nat/Squarefree.lean

tactic: refine' ⟨fun h => _, by rintro ⟨hn, rfl⟩; simpa⟩
state_before: n k : ℕ
hn : n ≠ 1
hk : k ≠ 0
⊢ Squarefree (n ^ k) ↔ Squarefree n ∧ k = 1

tactic: rcases eq_or_ne n 0 with (rfl | -)
state_before: n k : ℕ
hn : n ≠ 1
hk : k ≠ 0
h : Squarefree (n ^ k)
⊢ Squarefree n ∧ k = 1

tactic: refine' ⟨h.squarefree_of_dvd (dvd_pow_self _ hk), by_contradiction fun h₁ => _⟩
state_before: case inr
n k : ℕ
hn : n ≠ 1
hk : k ≠ 0
h : Squarefree (n ^ k)
⊢ Squarefree n ∧ k = 1

tactic: have : 2 ≤ k := k.two_le_iff.mpr ⟨hk, h₁⟩
state_before: case inr
n k : ℕ
hn : n ≠ 1
hk : k ≠ 0
h : Squarefree (n ^ k)
h₁ : ¬k = 1
⊢ False

tactic: apply hn (Nat.isUnit_iff.1 (h _ _))
state_before: case inr
n k : ℕ
hn : n ≠ 1
hk : k ≠ 0
h : Squarefree (n ^ k)
h₁ : ¬k = 1
this : 2 ≤ k
⊢ False

tactic: rw [← sq]
state_before: n k : ℕ
hn : n ≠ 1
hk : k ≠ 0
h : Squarefree (n ^ k)
h₁ : ¬k = 1
this : 2 ≤ k
⊢ n * n ∣ n ^ k

tactic: exact pow_dvd_pow _ this
state_before: n k : ℕ
hn : n ≠ 1
hk : k ≠ 0
h : Squarefree (n ^ k)
h₁ : ¬k = 1
this : 2 ≤ k
⊢ n ^ 2 ∣ n ^ k

tactic: rintro ⟨hn, rfl⟩
state_before: n k : ℕ
hn : n ≠ 1
hk : k ≠ 0
⊢ Squarefree n ∧ k = 1 → Squarefree (n ^ k)

tactic: simpa
state_before: case intro
n : ℕ
hn✝ : n ≠ 1
hn : Squarefree n
hk : 1 ≠ 0
⊢ Squarefree (n ^ 1)

tactic: simp [zero_pow hk.bot_lt] at h
state_before: case inl
k : ℕ
hk : k ≠ 0
hn : 0 ≠ 1
h : Squarefree (0 ^ k)
⊢ Squarefree 0 ∧ k = 1
Theorem: Nat.size_pow
File: Mathlib/Data/Nat/Size.lean

tactic: decide
state_before: n : ℕ
⊢ 1 < 2
Theorem: Set.finite_coe_iff
File: Mathlib/Data/Set/Finite.lean

tactic: rw [finite_iff_nonempty_fintype, finite_def]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s : Set α
⊢ Finite ↑s ↔ Set.Finite s
Theorem: Cardinal.aleph0_mul_nat
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [mul_comm, nat_mul_aleph0 hn]
state_before: α β : Type u
n : ℕ
hn : n ≠ 0
⊢ ℵ₀ * ↑n = ℵ₀
Theorem: continuous_of_le_add_edist
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: refine continuous_iff_continuousAt.2 fun x => ENNReal.tendsto_nhds_of_Icc fun ε ε0 => ?_
state_before: α : Type u_1
β : Type ?u.419875
γ : Type ?u.419878
inst✝ : PseudoEMetricSpace α
f : α → ℝ≥0∞
C : ℝ≥0∞
hC : C ≠ ⊤
h : ∀ (x y : α), f x ≤ f y + C * edist x y
⊢ Continuous f

tactic: rcases ENNReal.exists_nnreal_pos_mul_lt hC ε0.ne' with ⟨δ, δ0, hδ⟩
state_before: α : Type u_1
β : Type ?u.419875
γ : Type ?u.419878
inst✝ : PseudoEMetricSpace α
f : α → ℝ≥0∞
C : ℝ≥0∞
hC : C ≠ ⊤
h : ∀ (x y : α), f x ≤ f y + C * edist x y
x : α
ε : ℝ≥0∞
ε0 : ε > 0
⊢ ∀ᶠ (x_1 : α) in 𝓝 x, f x_1 ∈ Icc (f x - ε) (f x + ε)

tactic: rw [mul_comm] at hδ
state_before: case intro.intro
α : Type u_1
β : Type ?u.419875
γ : Type ?u.419878
inst✝ : PseudoEMetricSpace α
f : α → ℝ≥0∞
C : ℝ≥0∞
hC : C ≠ ⊤
h : ∀ (x y : α), f x ≤ f y + C * edist x y
x : α
ε : ℝ≥0∞
ε0 : ε > 0
δ : ℝ≥0
δ0 : δ > 0
hδ : ↑δ * C < ε
⊢ ∀ᶠ (x_1 : α) in 𝓝 x, f x_1 ∈ Icc (f x - ε) (f x + ε)

tactic: filter_upwards [EMetric.closedBall_mem_nhds x (ENNReal.coe_pos.2 δ0)] with y hy
state_before: case intro.intro
α : Type u_1
β : Type ?u.419875
γ : Type ?u.419878
inst✝ : PseudoEMetricSpace α
f : α → ℝ≥0∞
C : ℝ≥0∞
hC : C ≠ ⊤
h : ∀ (x y : α), f x ≤ f y + C * edist x y
x : α
ε : ℝ≥0∞
ε0 : ε > 0
δ : ℝ≥0
δ0 : δ > 0
hδ : C * ↑δ < ε
⊢ ∀ᶠ (x_1 : α) in 𝓝 x, f x_1 ∈ Icc (f x - ε) (f x + ε)

tactic: refine ⟨tsub_le_iff_right.2 <| (h x y).trans ?_, (h y x).trans ?_⟩ <;>
  refine add_le_add_left (le_trans (mul_le_mul_left' ?_ _) hδ.le) _
state_before: case h
α : Type u_1
β : Type ?u.419875
γ : Type ?u.419878
inst✝ : PseudoEMetricSpace α
f : α → ℝ≥0∞
C : ℝ≥0∞
hC : C ≠ ⊤
h : ∀ (x y : α), f x ≤ f y + C * edist x y
x : α
ε : ℝ≥0∞
ε0 : ε > 0
δ : ℝ≥0
δ0 : δ > 0
hδ : C * ↑δ < ε
y : α
hy : y ∈ EMetric.closedBall x ↑δ
⊢ f y ∈ Icc (f x - ε) (f x + ε)

tactic: exacts [EMetric.mem_closedBall'.1 hy, EMetric.mem_closedBall.1 hy]
state_before: case h.refine_1
α : Type u_1
β : Type ?u.419875
γ : Type ?u.419878
inst✝ : PseudoEMetricSpace α
f : α → ℝ≥0∞
C : ℝ≥0∞
hC : C ≠ ⊤
h : ∀ (x y : α), f x ≤ f y + C * edist x y
x : α
ε : ℝ≥0∞
ε0 : ε > 0
δ : ℝ≥0
δ0 : δ > 0
hδ : C * ↑δ < ε
y : α
hy : y ∈ EMetric.closedBall x ↑δ
⊢ edist x y ≤ ↑δ

case h.refine_2
α : Type u_1
β : Type ?u.419875
γ : Type ?u.419878
inst✝ : PseudoEMetricSpace α
f : α → ℝ≥0∞
C : ℝ≥0∞
hC : C ≠ ⊤
h : ∀ (x y : α), f x ≤ f y + C * edist x y
x : α
ε : ℝ≥0∞
ε0 : ε > 0
δ : ℝ≥0
δ0 : δ > 0
hδ : C * ↑δ < ε
y : α
hy : y ∈ EMetric.closedBall x ↑δ
⊢ edist y x ≤ ↑δ
Theorem: Nat.Ico_succ_right_eq_insert_Ico
File: Mathlib/Data/Nat/Interval.lean

tactic: rw [Ico_succ_right, ← Ico_insert_right h]
state_before: a b c : ℕ
h : a ≤ b
⊢ Ico a (b + 1) = insert b (Ico a b)
Theorem: Matrix.isUnit_det_zpow_iff
File: Mathlib/LinearAlgebra/Matrix/ZPow.lean

tactic: induction' z using Int.induction_on with z _ z _
state_before: n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
z : ℤ
⊢ IsUnit (det (A ^ z)) ↔ IsUnit (det A) ∨ z = 0

tactic: simp
state_before: case hz
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
⊢ IsUnit (det (A ^ 0)) ↔ IsUnit (det A) ∨ 0 = 0

tactic: rw [← Int.ofNat_succ, zpow_ofNat, det_pow, isUnit_pow_succ_iff, ← Int.ofNat_zero, Int.ofNat_inj]
state_before: case hp
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
z : ℕ
a✝ : IsUnit (det (A ^ ↑z)) ↔ IsUnit (det A) ∨ ↑z = 0
⊢ IsUnit (det (A ^ (↑z + 1))) ↔ IsUnit (det A) ∨ ↑z + 1 = 0

tactic: simp
state_before: case hp
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
z : ℕ
a✝ : IsUnit (det (A ^ ↑z)) ↔ IsUnit (det A) ∨ ↑z = 0
⊢ IsUnit (det A) ↔ IsUnit (det A) ∨ Nat.succ z = 0

tactic: rw [← neg_add', ← Int.ofNat_succ, zpow_neg_coe_nat, isUnit_nonsing_inv_det_iff, det_pow,
  isUnit_pow_succ_iff, neg_eq_zero, ← Int.ofNat_zero, Int.ofNat_inj]
state_before: case hn
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
z : ℕ
a✝ : IsUnit (det (A ^ (-↑z))) ↔ IsUnit (det A) ∨ -↑z = 0
⊢ IsUnit (det (A ^ (-↑z - 1))) ↔ IsUnit (det A) ∨ -↑z - 1 = 0

tactic: simp
state_before: case hn
n' : Type u_1
inst✝² : DecidableEq n'
inst✝¹ : Fintype n'
R : Type u_2
inst✝ : CommRing R
A : M
z : ℕ
a✝ : IsUnit (det (A ^ (-↑z))) ↔ IsUnit (det A) ∨ -↑z = 0
⊢ IsUnit (det A) ↔ IsUnit (det A) ∨ Nat.succ z = 0
Theorem: Nat.factorization_eq_of_coprime_right
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: rw [mul_comm]
state_before: p a b : ℕ
hab : coprime a b
hpb : p ∈ factors b
⊢ ↑(factorization (a * b)) p = ↑(factorization b) p

tactic: exact factorization_eq_of_coprime_left (coprime_comm.mp hab) hpb
state_before: p a b : ℕ
hab : coprime a b
hpb : p ∈ factors b
⊢ ↑(factorization (b * a)) p = ↑(factorization b) p
Theorem: Sym2.other_invol'
File: Mathlib/Data/Sym/Sym2.lean

tactic: induction z using Sym2.ind
state_before: α : Type u_1
β : Type ?u.105892
γ : Type ?u.105895
inst✝ : DecidableEq α
a : α
z : Sym2 α
ha : a ∈ z
hb : Mem.other' ha ∈ z
⊢ Mem.other' hb = a

tactic: aesop (rule_sets [Sym2]) (add norm unfold [Quotient.rec, Quot.rec])
state_before: case h
α : Type u_1
β : Type ?u.105892
γ : Type ?u.105895
inst✝ : DecidableEq α
a x✝ y✝ : α
ha : a ∈ Quotient.mk (Rel.setoid α) (x✝, y✝)
hb : Mem.other' ha ∈ Quotient.mk (Rel.setoid α) (x✝, y✝)
⊢ Mem.other' hb = a
Theorem: SimpleGraph.colorable_chromaticNumber
File: Mathlib/Combinatorics/SimpleGraph/Coloring.lean

tactic: classical
dsimp only [chromaticNumber]
rw [Nat.sInf_def]
apply Nat.find_spec
exact colorable_set_nonempty_of_colorable hc
state_before: V : Type u
G : SimpleGraph V
α : Type v
C : Coloring G α
m : ℕ
hc : Colorable G m
⊢ Colorable G (chromaticNumber G)

tactic: dsimp only [chromaticNumber]
state_before: V : Type u
G : SimpleGraph V
α : Type v
C : Coloring G α
m : ℕ
hc : Colorable G m
⊢ Colorable G (chromaticNumber G)

tactic: rw [Nat.sInf_def]
state_before: V : Type u
G : SimpleGraph V
α : Type v
C : Coloring G α
m : ℕ
hc : Colorable G m
⊢ Colorable G (sInf {n | Colorable G n})

tactic: apply Nat.find_spec
state_before: V : Type u
G : SimpleGraph V
α : Type v
C : Coloring G α
m : ℕ
hc : Colorable G m
⊢ Colorable G (Nat.find ?m.133011)

V : Type u
G : SimpleGraph V
α : Type v
C : Coloring G α
m : ℕ
hc : Colorable G m
⊢ Set.Nonempty {n | Colorable G n}

tactic: exact colorable_set_nonempty_of_colorable hc
state_before: V : Type u
G : SimpleGraph V
α : Type v
C : Coloring G α
m : ℕ
hc : Colorable G m
⊢ Set.Nonempty {n | Colorable G n}
Theorem: Int.floor_zero
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [← cast_zero, floor_intCast]
state_before: F : Type ?u.127990
α : Type u_1
β : Type ?u.127996
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
⊢ ⌊0⌋ = 0
Theorem: CauSeq.Completion.inv_zero
File: Mathlib/Data/Real/CauSeqCompletion.lean

tactic: rw [dif_pos] <;> [rfl; exact zero_limZero]
state_before: α : Type u_2
inst✝² : LinearOrderedField α
β : Type u_1
inst✝¹ : DivisionRing β
abv : β → α
inst✝ : IsAbsoluteValue abv
⊢ (if h : LimZero (const abv 0) then 0 else inv (const abv 0) h) = const abv 0
Theorem: mul_boole
File: Mathlib/Algebra/Ring/Defs.lean

tactic: simp
state_before: α✝ : Type u
β : Type v
γ : Type w
R : Type x
α : Type u_1
inst✝¹ : MulZeroOneClass α
P : Prop
inst✝ : Decidable P
a : α
⊢ (a * if P then 1 else 0) = if P then a else 0
Theorem: LinearMap.toMatrix'_id
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: ext
state_before: R : Type u_1
inst✝² : CommSemiring R
k : Type ?u.523416
l : Type ?u.523419
m : Type ?u.523422
n : Type u_2
inst✝¹ : Fintype n
inst✝ : DecidableEq n
⊢ ↑toMatrix' id = 1

tactic: rw [Matrix.one_apply, LinearMap.toMatrix'_apply, id_apply]
state_before: case a.h
R : Type u_1
inst✝² : CommSemiring R
k : Type ?u.523416
l : Type ?u.523419
m : Type ?u.523422
n : Type u_2
inst✝¹ : Fintype n
inst✝ : DecidableEq n
i✝ x✝ : n
⊢ ↑toMatrix' id i✝ x✝ = OfNat.ofNat 1 i✝ x✝
Theorem: Set.bex_insert_iff
File: Mathlib/Data/Set/Basic.lean

tactic: simp [mem_insert_iff, or_and_right, exists_and_left, exists_or]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a✝ b : α
s✝ s₁ s₂ t t₁ t₂ u : Set α
P : α → Prop
a : α
s : Set α
⊢ (∃ x, x ∈ insert a s ∧ P x) ↔ P a ∨ ∃ x, x ∈ s ∧ P x
Theorem: Finsupp.support_inf
File: Mathlib/Data/Finsupp/Order.lean

tactic: ext
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : CanonicallyLinearOrderedAddMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
⊢ (f ⊓ g).support = f.support ∩ g.support

tactic: simp only [inf_apply, mem_support_iff, Ne.def, Finset.mem_union, Finset.mem_filter,
  Finset.mem_inter]
state_before: case a
ι : Type u_1
α : Type u_2
inst✝¹ : CanonicallyLinearOrderedAddMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
a✝ : ι
⊢ a✝ ∈ (f ⊓ g).support ↔ a✝ ∈ f.support ∩ g.support

tactic: simp only [inf_eq_min, ← nonpos_iff_eq_zero, min_le_iff, not_or]
state_before: case a
ι : Type u_1
α : Type u_2
inst✝¹ : CanonicallyLinearOrderedAddMonoid α
inst✝ : DecidableEq ι
f g : ι →₀ α
a✝ : ι
⊢ ¬↑f a✝ ⊓ ↑g a✝ = 0 ↔ ¬↑f a✝ = 0 ∧ ¬↑g a✝ = 0
Theorem: Submonoid.prod_eq_bot_iff
File: Mathlib/GroupTheory/Submonoid/Operations.lean

tactic: simp only [eq_bot_iff, prod_le_iff, (gc_map_comap _).le_iff_le, comap_bot', mker_inl, mker_inr]
state_before: M : Type u_1
N : Type u_2
P : Type ?u.153934
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type ?u.153955
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
s : Submonoid M
t : Submonoid N
⊢ prod s t = ⊥ ↔ s = ⊥ ∧ t = ⊥
Theorem: MeasureTheory.snorm_trim
File: Mathlib/MeasureTheory/Function/LpSeminorm.lean

tactic: by_cases h0 : p = 0
state_before: α : Type u_1
E : Type u_2
F : Type ?u.3172842
G : Type ?u.3172845
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
hm : m ≤ m0
f : α → E
hf : StronglyMeasurable f
⊢ snorm f p (Measure.trim ν hm) = snorm f p ν

tactic: by_cases h_top : p = ∞
state_before: case neg
α : Type u_1
E : Type u_2
F : Type ?u.3172842
G : Type ?u.3172845
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
hm : m ≤ m0
f : α → E
hf : StronglyMeasurable f
h0 : ¬p = 0
⊢ snorm f p (Measure.trim ν hm) = snorm f p ν

tactic: simpa only [snorm_eq_snorm' h0 h_top] using snorm'_trim hm hf
state_before: case neg
α : Type u_1
E : Type u_2
F : Type ?u.3172842
G : Type ?u.3172845
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
hm : m ≤ m0
f : α → E
hf : StronglyMeasurable f
h0 : ¬p = 0
h_top : ¬p = ⊤
⊢ snorm f p (Measure.trim ν hm) = snorm f p ν

tactic: simp [h0]
state_before: case pos
α : Type u_1
E : Type u_2
F : Type ?u.3172842
G : Type ?u.3172845
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
hm : m ≤ m0
f : α → E
hf : StronglyMeasurable f
h0 : p = 0
⊢ snorm f p (Measure.trim ν hm) = snorm f p ν

tactic: simpa only [h_top, snorm_exponent_top] using snormEssSup_trim hm hf
state_before: case pos
α : Type u_1
E : Type u_2
F : Type ?u.3172842
G : Type ?u.3172845
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
hm : m ≤ m0
f : α → E
hf : StronglyMeasurable f
h0 : ¬p = 0
h_top : p = ⊤
⊢ snorm f p (Measure.trim ν hm) = snorm f p ν
Theorem: Asymptotics.SuperpolynomialDecay.param_pow_mul
File: Mathlib/Analysis/Asymptotics/SuperpolynomialDecay.lean

tactic: induction' n with n hn
state_before: α : Type u_1
β : Type u_2
l : Filter α
k f g g' : α → β
inst✝¹ : TopologicalSpace β
inst✝ : CommSemiring β
hf : SuperpolynomialDecay l k f
n : ℕ
⊢ SuperpolynomialDecay l k (k ^ n * f)

tactic: simpa only [Nat.zero_eq, one_mul, pow_zero] using hf
state_before: case zero
α : Type u_1
β : Type u_2
l : Filter α
k f g g' : α → β
inst✝¹ : TopologicalSpace β
inst✝ : CommSemiring β
hf : SuperpolynomialDecay l k f
⊢ SuperpolynomialDecay l k (k ^ Nat.zero * f)

tactic: simpa only [pow_succ, mul_assoc] using hn.param_mul
state_before: case succ
α : Type u_1
β : Type u_2
l : Filter α
k f g g' : α → β
inst✝¹ : TopologicalSpace β
inst✝ : CommSemiring β
hf : SuperpolynomialDecay l k f
n : ℕ
hn : SuperpolynomialDecay l k (k ^ n * f)
⊢ SuperpolynomialDecay l k (k ^ Nat.succ n * f)
Theorem: Metric.thickening_empty
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp only [thickening, setOf_false, infEdist_empty, not_top_lt]
state_before: ι : Sort ?u.89881
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ : ℝ
s : Set α
x : α
δ : ℝ
⊢ thickening δ ∅ = ∅
Theorem: manyOneReducible_toNat
File: Mathlib/Computability/Reduce.lean

tactic: simp [toNat, setOf]
state_before: α : Type u
inst✝⁵ : Primcodable α
inst✝⁴ : Inhabited α
β : Type v
inst✝³ : Primcodable β
inst✝² : Inhabited β
γ : Type w
inst✝¹ : Primcodable γ
inst✝ : Inhabited γ
p : Set α
⊢ ∀ (a : α), p a ↔ toNat p (Encodable.encode a)
Theorem: Cardinal.continuum_power_aleph0
File: Mathlib/SetTheory/Cardinal/Continuum.lean

tactic: rw [← two_power_aleph0, ← power_mul, mul_eq_left le_rfl le_rfl aleph0_ne_zero]
state_before: ⊢ 𝔠 ^ ℵ₀ = 𝔠
Theorem: NNReal.coe_tsum
File: Mathlib/Topology/Instances/NNReal.lean

tactic: simp [tsum_def, hf, mt summable_coe.1 hf]
state_before: α : Type u_1
f : α → ℝ≥0
hf : ¬Summable f
⊢ ↑(∑' (a : α), f a) = ∑' (a : α), ↑(f a)
Theorem: MeasureTheory.measure_eq_extend
File: Mathlib/MeasureTheory/Measure/MeasureSpaceDef.lean

tactic: rw [extend_eq]
state_before: α : Type u_1
β : Type ?u.12666
γ : Type ?u.12669
δ : Type ?u.12672
ι : Type ?u.12675
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s s₁ s₂ t : Set α
hs : MeasurableSet s
⊢ ↑↑μ s = extend (fun t _ht => ↑↑μ t) s

tactic: exact hs
state_before: case h
α : Type u_1
β : Type ?u.12666
γ : Type ?u.12669
δ : Type ?u.12672
ι : Type ?u.12675
inst✝ : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s s₁ s₂ t : Set α
hs : MeasurableSet s
⊢ MeasurableSet s
Theorem: LocallyFinite.finite_of_compact
File: Mathlib/Topology/SubsetProperties.lean

tactic: simpa only [hne] using hf.finite_nonempty_of_compact
state_before: α : Type u
β : Type v
ι✝ : Type ?u.89316
π : ι✝ → Type ?u.89321
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
ι : Type u_1
inst✝ : CompactSpace α
f : ι → Set α
hf : LocallyFinite f
hne : ∀ (i : ι), Set.Nonempty (f i)
⊢ Set.Finite univ
Theorem: Pmf.bindOnSupport_eq_zero_iff
File: Mathlib/Probability/ProbabilityMassFunction/Monad.lean

tactic: simp only [bindOnSupport_apply, ENNReal.tsum_eq_zero, mul_eq_zero, or_iff_not_imp_left]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.110688
p : Pmf α
f : (a : α) → a ∈ support p → Pmf β
b : β
⊢ ↑(bindOnSupport p f) b = 0 ↔ ∀ (a : α) (ha : ↑p a ≠ 0), ↑(f a ha) b = 0

tactic: exact ⟨fun h a ha => Trans.trans (dif_neg ha).symm (h a ha),
  fun h a ha => Trans.trans (dif_neg ha) (h a ha)⟩
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.110688
p : Pmf α
f : (a : α) → a ∈ support p → Pmf β
b : β
⊢ (∀ (i : α), ¬↑p i = 0 → (if h : ↑p i = 0 then 0 else ↑(f i (_ : ¬↑p i = 0)) b) = 0) ↔
    ∀ (a : α) (ha : ↑p a ≠ 0), ↑(f a ha) b = 0
Theorem: UFModel.Models.setParent
File: Mathlib/Data/UnionFind.lean

tactic: simp [UFModel.setParent, h.symm]
state_before: α : Type u_1
arr : Array (UFNode α)
n : ℕ
m : UFModel n
hm : Models arr m
i j : Fin n
H : rank m ↑i < rank m ↑j
hi : ↑i < Array.size arr
x : UFNode α
hp : x.parent = ↑j
hrk : x.rank = arr[i].rank
k : Fin n
h : ↑k ≠ ↑i
⊢ ↑(parent (UFModel.setParent m i j H) k) = ↑(parent m k)

tactic: simp [UFModel.setParent, hp]
state_before: α : Type u_1
arr : Array (UFNode α)
n : ℕ
m : UFModel n
hm : Models arr m
i j : Fin n
H : rank m ↑i < rank m ↑j
hi : ↑i < Array.size arr
x : UFNode α
hp : x.parent = ↑j
hrk : x.rank = arr[i].rank
h : ↑{ val := ↑i, isLt := hi } < n
⊢ x.parent = ↑(parent (UFModel.setParent m i j H) { val := ↑{ val := ↑i, isLt := hi }, isLt := h })
Theorem: Mathlib.Tactic.Ring.atom_pf'
File: Mathlib/Tactic/Ring/Basic.lean

tactic: simp [*]
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a a' : R
p : a = a'
⊢ a = a' ^ Nat.rawCast 1 * Nat.rawCast 1 + 0
Theorem: FermatPsp.AB_id_helper
File: Mathlib/NumberTheory/FermatPsp.lean

tactic: have q₁ : b - 1 ∣ b ^ p - 1 := by simpa only [one_pow] using nat_sub_dvd_pow_sub_pow b 1 p
state_before: b p : ℕ
x✝ : 2 ≤ b
hp : Odd p
⊢ (b ^ p - 1) / (b - 1) * ((b ^ p + 1) / (b + 1)) = (b ^ (2 * p) - 1) / (b ^ 2 - 1)

tactic: have q₂ : b + 1 ∣ b ^ p + 1 := by simpa only [one_pow] using hp.nat_add_dvd_pow_add_pow b 1
state_before: b p : ℕ
x✝ : 2 ≤ b
hp : Odd p
q₁ : b - 1 ∣ b ^ p - 1
⊢ (b ^ p - 1) / (b - 1) * ((b ^ p + 1) / (b + 1)) = (b ^ (2 * p) - 1) / (b ^ 2 - 1)

tactic: convert Nat.div_mul_div_comm q₁ q₂ using 2 <;> rw [mul_comm (_ - 1), ← Nat.sq_sub_sq]
state_before: b p : ℕ
x✝ : 2 ≤ b
hp : Odd p
q₁ : b - 1 ∣ b ^ p - 1
q₂ : b + 1 ∣ b ^ p + 1
⊢ (b ^ p - 1) / (b - 1) * ((b ^ p + 1) / (b + 1)) = (b ^ (2 * p) - 1) / (b ^ 2 - 1)

tactic: simpa only [one_pow] using nat_sub_dvd_pow_sub_pow b 1 p
state_before: b p : ℕ
x✝ : 2 ≤ b
hp : Odd p
⊢ b - 1 ∣ b ^ p - 1

tactic: simpa only [one_pow] using hp.nat_add_dvd_pow_add_pow b 1
state_before: b p : ℕ
x✝ : 2 ≤ b
hp : Odd p
q₁ : b - 1 ∣ b ^ p - 1
⊢ b + 1 ∣ b ^ p + 1

tactic: ring_nf
state_before: case h.e'_3.h.e'_5
b p : ℕ
x✝ : 2 ≤ b
hp : Odd p
q₁ : b - 1 ∣ b ^ p - 1
q₂ : b + 1 ∣ b ^ p + 1
⊢ b ^ (2 * p) - 1 = (b ^ p) ^ 2 - 1 ^ 2

tactic: simp
state_before: case h.e'_3.h.e'_6
b p : ℕ
x✝ : 2 ≤ b
hp : Odd p
q₁ : b - 1 ∣ b ^ p - 1
q₂ : b + 1 ∣ b ^ p + 1
⊢ b ^ 2 - 1 = b ^ 2 - 1 ^ 2
Theorem: List.toFinset.ext_iff
File: Mathlib/Data/Finset/Basic.lean

tactic: simp only [Finset.ext_iff, mem_toFinset]
state_before: α : Type u_1
β : Type ?u.469108
γ : Type ?u.469111
inst✝ : DecidableEq α
l l' : List α
a✝ : α
a b : List α
⊢ toFinset a = toFinset b ↔ ∀ (x : α), x ∈ a ↔ x ∈ b
Theorem: Real.rpow_eq_zero_iff_of_nonneg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simp only [rpow_def_of_nonneg hx]
state_before: x y : ℝ
hx : 0 ≤ x
⊢ x ^ y = 0 ↔ x = 0 ∧ y ≠ 0

tactic: split_ifs <;> simp [*, exp_ne_zero]
state_before: x y : ℝ
hx : 0 ≤ x
⊢ (if x = 0 then if y = 0 then 1 else 0 else exp (log x * y)) = 0 ↔ x = 0 ∧ y ≠ 0
Theorem: Finmap.lookup_insert
File: Mathlib/Data/Finmap.lean

tactic: simp only [insert_toFinmap, lookup_toFinmap, AList.lookup_insert]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
b : β a
s✝ : Finmap β
s : AList β
⊢ lookup a (insert a b ⟦s⟧) = some b