tasksource/leandojo huggingface dataset:
Theorem: Zsqrtd.norm_eq_one_iff_mem_unitary
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: rw [unitary.mem_iff_self_mul_star, ← norm_eq_mul_conj]
state_before: R : Type
inst✝ : CommRing R
d : ℤ
a : ℤ√d
⊢ norm a = 1 ↔ a ∈ unitary (ℤ√d)

tactic: norm_cast
state_before: R : Type
inst✝ : CommRing R
d : ℤ
a : ℤ√d
⊢ norm a = 1 ↔ ↑(norm a) = 1
Theorem: YoungDiagram.mem_col_iff
File: Mathlib/Combinatorics/Young/YoungDiagram.lean

tactic: simp [col]
state_before: μ : YoungDiagram
j : ℕ
c : ℕ × ℕ
⊢ c ∈ col μ j ↔ c ∈ μ ∧ c.snd = j
Theorem: IsLocalization.isDomain_of_le_nonZeroDivisors
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: apply @NoZeroDivisors.to_isDomain _ _ (id _) (id _)
state_before: R : Type ?u.3159419
inst✝¹⁰ : CommRing R
M✝ : Submonoid R
S : Type u_2
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Type ?u.3159848
inst✝⁷ : CommRing P
K : Type ?u.3159854
inst✝⁶ : IsLocalization M✝ S
Q : Type ?u.3160035
inst✝⁵ : CommRing Q
g : R →+* P
inst✝⁴ : Algebra P Q
A : Type u_1
inst✝³ : CommRing A
inst✝² : IsDomain A
inst✝¹ : Algebra A S
M : Submonoid A
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors A
⊢ IsDomain S

tactic: exact
  ⟨⟨(algebraMap A S) 0, (algebraMap A S) 1, fun h =>
      zero_ne_one (IsLocalization.injective S hM h)⟩⟩
state_before: R : Type ?u.3159419
inst✝¹⁰ : CommRing R
M✝ : Submonoid R
S : Type u_2
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Type ?u.3159848
inst✝⁷ : CommRing P
K : Type ?u.3159854
inst✝⁶ : IsLocalization M✝ S
Q : Type ?u.3160035
inst✝⁵ : CommRing Q
g : R →+* P
inst✝⁴ : Algebra P Q
A : Type u_1
inst✝³ : CommRing A
inst✝² : IsDomain A
inst✝¹ : Algebra A S
M : Submonoid A
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors A
⊢ Nontrivial S

tactic: exact noZeroDivisors_of_le_nonZeroDivisors _ hM
state_before: R : Type ?u.3159419
inst✝¹⁰ : CommRing R
M✝ : Submonoid R
S : Type u_2
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
P : Type ?u.3159848
inst✝⁷ : CommRing P
K : Type ?u.3159854
inst✝⁶ : IsLocalization M✝ S
Q : Type ?u.3160035
inst✝⁵ : CommRing Q
g : R →+* P
inst✝⁴ : Algebra P Q
A : Type u_1
inst✝³ : CommRing A
inst✝² : IsDomain A
inst✝¹ : Algebra A S
M : Submonoid A
inst✝ : IsLocalization M S
hM : M ≤ nonZeroDivisors A
⊢ NoZeroDivisors S
Theorem: AffineIndependent.finrank_vectorSpan
File: Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean

tactic: rw [← Finset.card_univ] at hc
state_before: k : Type u_2
V : Type u_3
P : Type u_4
ι : Type u_1
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Fintype ι
p : ι → P
hi : AffineIndependent k p
n : ℕ
hc : Fintype.card ι = n + 1
⊢ finrank k { x // x ∈ vectorSpan k (Set.range p) } = n

tactic: rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image]
state_before: k : Type u_2
V : Type u_3
P : Type u_4
ι : Type u_1
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Fintype ι
p : ι → P
hi : AffineIndependent k p
n : ℕ
hc : Finset.card Finset.univ = n + 1
⊢ finrank k { x // x ∈ vectorSpan k (Set.range p) } = n

tactic: exact hi.finrank_vectorSpan_image_finset hc
state_before: k : Type u_2
V : Type u_3
P : Type u_4
ι : Type u_1
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Fintype ι
p : ι → P
hi : AffineIndependent k p
n : ℕ
hc : Finset.card Finset.univ = n + 1
⊢ finrank k { x // x ∈ vectorSpan k ↑(Finset.image p Finset.univ) } = n
Theorem: List.Chain'.infix
File: Mathlib/Data/List/Chain.lean

tactic: rcases h' with ⟨l₂, l₃, rfl⟩
state_before: α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a b : α
h : Chain' R l
h' : l₁ <:+: l
⊢ Chain' R l₁

tactic: exact h.left_of_append.right_of_append
state_before: case intro.intro
α : Type u
β : Type v
R r : α → α → Prop
l₁ l₂✝ : List α
a b : α
l₂ l₃ : List α
h : Chain' R (l₂ ++ l₁ ++ l₃)
⊢ Chain' R l₁
Theorem: Filter.le_map_of_right_inverse
File: Mathlib/Order/Filter/Basic.lean

tactic: rw [← @map_id _ g, ← map_congr h₁, ← map_map]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.308339
ι : Sort x
mab : α → β
mba : β → α
f : Filter α
g : Filter β
h₁ : mab ∘ mba =ᶠ[g] id
h₂ : Tendsto mba g f
⊢ g ≤ map mab f

tactic: exact map_mono h₂
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.308339
ι : Sort x
mab : α → β
mba : β → α
f : Filter α
g : Filter β
h₁ : mab ∘ mba =ᶠ[g] id
h₂ : Tendsto mba g f
⊢ map mab (map mba g) ≤ map mab f
Theorem: addSalemSpencer_frontier
File: Mathlib/Combinatorics/Additive/SalemSpencer.lean

tactic: intro a b c ha hb hc habc
state_before: F : Type ?u.111497
α : Type ?u.111500
β : Type ?u.111503
𝕜 : Type u_1
E : Type u_2
inst✝³ : LinearOrderedField 𝕜
inst✝² : TopologicalSpace E
inst✝¹ : AddCommMonoid E
inst✝ : Module 𝕜 E
s : Set E
hs₀ : IsClosed s
hs₁ : StrictConvex 𝕜 s
⊢ AddSalemSpencer (frontier s)

tactic: obtain rfl : (1 / 2 : 𝕜) • a + (1 / 2 : 𝕜) • b = c := by
  rwa [← smul_add, one_div, inv_smul_eq_iff₀ (show (2 : 𝕜) ≠ 0 by norm_num), two_smul]
state_before: F : Type ?u.111497
α : Type ?u.111500
β : Type ?u.111503
𝕜 : Type u_1
E : Type u_2
inst✝³ : LinearOrderedField 𝕜
inst✝² : TopologicalSpace E
inst✝¹ : AddCommMonoid E
inst✝ : Module 𝕜 E
s : Set E
hs₀ : IsClosed s
hs₁ : StrictConvex 𝕜 s
a b c : E
ha : a ∈ frontier s
hb : b ∈ frontier s
hc : c ∈ frontier s
habc : a + b = c + c
⊢ a = b

tactic: exact
  hs₁.eq (hs₀.frontier_subset ha) (hs₀.frontier_subset hb) one_half_pos one_half_pos
    (add_halves _) hc.2
state_before: F : Type ?u.111497
α : Type ?u.111500
β : Type ?u.111503
𝕜 : Type u_1
E : Type u_2
inst✝³ : LinearOrderedField 𝕜
inst✝² : TopologicalSpace E
inst✝¹ : AddCommMonoid E
inst✝ : Module 𝕜 E
s : Set E
hs₀ : IsClosed s
hs₁ : StrictConvex 𝕜 s
a b : E
ha : a ∈ frontier s
hb : b ∈ frontier s
hc : (1 / 2) • a + (1 / 2) • b ∈ frontier s
habc : a + b = (1 / 2) • a + (1 / 2) • b + ((1 / 2) • a + (1 / 2) • b)
⊢ a = b

tactic: rwa [← smul_add, one_div, inv_smul_eq_iff₀ (show (2 : 𝕜) ≠ 0 by norm_num), two_smul]
state_before: F : Type ?u.111497
α : Type ?u.111500
β : Type ?u.111503
𝕜 : Type u_1
E : Type u_2
inst✝³ : LinearOrderedField 𝕜
inst✝² : TopologicalSpace E
inst✝¹ : AddCommMonoid E
inst✝ : Module 𝕜 E
s : Set E
hs₀ : IsClosed s
hs₁ : StrictConvex 𝕜 s
a b c : E
ha : a ∈ frontier s
hb : b ∈ frontier s
hc : c ∈ frontier s
habc : a + b = c + c
⊢ (1 / 2) • a + (1 / 2) • b = c

tactic: norm_num
state_before: F : Type ?u.111497
α : Type ?u.111500
β : Type ?u.111503
𝕜 : Type u_1
E : Type u_2
inst✝³ : LinearOrderedField 𝕜
inst✝² : TopologicalSpace E
inst✝¹ : AddCommMonoid E
inst✝ : Module 𝕜 E
s : Set E
hs₀ : IsClosed s
hs₁ : StrictConvex 𝕜 s
a b c : E
ha : a ∈ frontier s
hb : b ∈ frontier s
hc : c ∈ frontier s
habc : a + b = c + c
⊢ 2 ≠ 0
Theorem: Nat.ModEq.add
File: Mathlib/Data/Nat/ModEq.lean

tactic: rw [modEq_iff_dvd, Int.ofNat_add, Int.ofNat_add, add_sub_add_comm]
state_before: m n a b c d : ℕ
h₁ : a ≡ b [MOD n]
h₂ : c ≡ d [MOD n]
⊢ a + c ≡ b + d [MOD n]

tactic: exact dvd_add h₁.dvd h₂.dvd
state_before: m n a b c d : ℕ
h₁ : a ≡ b [MOD n]
h₂ : c ≡ d [MOD n]
⊢ ↑n ∣ ↑b - ↑a + (↑d - ↑c)
Theorem: CategoryTheory.isCodetecting_unop_iff
File: Mathlib/CategoryTheory/Generator.lean

tactic: rw [← isDetecting_op_iff, Set.unop_op]
state_before: C : Type u₁
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
𝒢 : Set Cᵒᵖ
⊢ IsCodetecting (Set.unop 𝒢) ↔ IsDetecting 𝒢
Theorem: Pmf.toMeasure_eq_iff_eq_toPmf
File: Mathlib/Probability/ProbabilityMassFunction/Basic.lean

tactic: rw [← toMeasure_inj, Measure.toPmf_toMeasure]
state_before: α : Type u_1
β : Type ?u.246280
γ : Type ?u.246283
inst✝⁴ : Countable α
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSingletonClass α
p : Pmf α
μ✝ : MeasureTheory.Measure α
inst✝¹ : IsProbabilityMeasure μ✝
μ : MeasureTheory.Measure α
inst✝ : IsProbabilityMeasure μ
⊢ toMeasure p = μ ↔ p = Measure.toPmf μ
Theorem: LinearMap.map_le_map_iff'
File: Mathlib/LinearAlgebra/Span.lean

tactic: rw [LinearMap.map_le_map_iff, hf, sup_bot_eq]
state_before: R : Type u_2
R₂ : Type u_3
K : Type ?u.313356
M : Type u_1
M₂ : Type u_4
V : Type ?u.313365
S : Type ?u.313368
inst✝⁶ : Semiring R
inst✝⁵ : Semiring R₂
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup M₂
inst✝² : Module R M
inst✝¹ : Module R₂ M₂
τ₁₂ : R →+* R₂
inst✝ : RingHomSurjective τ₁₂
F : Type u_5
sc : SemilinearMapClass F τ₁₂ M M₂
f : F
hf : ker f = ⊥
p p' : Submodule R M
⊢ map f p ≤ map f p' ↔ p ≤ p'
Theorem: Set.ncard_add_ncard_compl
File: Mathlib/Data/Set/Ncard.lean

tactic: rw [← ncard_univ, ← ncard_union_eq (@disjoint_compl_right _ _ s) hs hsc, union_compl_self]
state_before: α : Type u_1
β : Type ?u.130552
s✝ t : Set α
a b x y : α
f : α → β
s : Set α
hs : autoParam (Set.Finite s) _auto✝
hsc : autoParam (Set.Finite (sᶜ)) _auto✝
⊢ ncard s + ncard (sᶜ) = Nat.card α
Theorem: Set.range_piecewise
File: Mathlib/Data/Set/Function.lean

tactic: ext y
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.95004
ι : Sort ?u.95007
π : α → Type ?u.95012
δ : α → Sort ?u.95017
s : Set α
f✝ g✝ : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
f g : α → β
⊢ range (piecewise s f g) = f '' s ∪ g '' sᶜ

tactic: constructor
state_before: case h
α : Type u_2
β : Type u_1
γ : Type ?u.95004
ι : Sort ?u.95007
π : α → Type ?u.95012
δ : α → Sort ?u.95017
s : Set α
f✝ g✝ : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
f g : α → β
y : β
⊢ y ∈ range (piecewise s f g) ↔ y ∈ f '' s ∪ g '' sᶜ

tactic: rintro ⟨x, rfl⟩
state_before: case h.mp
α : Type u_2
β : Type u_1
γ : Type ?u.95004
ι : Sort ?u.95007
π : α → Type ?u.95012
δ : α → Sort ?u.95017
s : Set α
f✝ g✝ : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
f g : α → β
y : β
⊢ y ∈ range (piecewise s f g) → y ∈ f '' s ∪ g '' sᶜ

tactic: by_cases h : x ∈ s <;> [left; right] <;> use x <;> simp [h]
state_before: case h.mp.intro
α : Type u_2
β : Type u_1
γ : Type ?u.95004
ι : Sort ?u.95007
π : α → Type ?u.95012
δ : α → Sort ?u.95017
s : Set α
f✝ g✝ : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
f g : α → β
x : α
⊢ piecewise s f g x ∈ f '' s ∪ g '' sᶜ

tactic: rintro (⟨x, hx, rfl⟩ | ⟨x, hx, rfl⟩) <;> use x <;> simp_all
state_before: case h.mpr
α : Type u_2
β : Type u_1
γ : Type ?u.95004
ι : Sort ?u.95007
π : α → Type ?u.95012
δ : α → Sort ?u.95017
s : Set α
f✝ g✝ : (i : α) → δ i
inst✝ : (j : α) → Decidable (j ∈ s)
f g : α → β
y : β
⊢ y ∈ f '' s ∪ g '' sᶜ → y ∈ range (piecewise s f g)
Theorem: Besicovitch.ae_tendsto_measure_inter_div_of_measurableSet
File: Mathlib/MeasureTheory/Covering/Besicovitch.lean

tactic: filter_upwards [VitaliFamily.ae_tendsto_measure_inter_div_of_measurableSet
    (Besicovitch.vitaliFamily μ) hs]
state_before: α : Type ?u.1286254
inst✝¹⁰ : MetricSpace α
β : Type u
inst✝⁹ : SecondCountableTopology α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : OpensMeasurableSpace α
inst✝⁶ : HasBesicovitchCovering α
inst✝⁵ : MetricSpace β
inst✝⁴ : MeasurableSpace β
inst✝³ : BorelSpace β
inst✝² : SecondCountableTopology β
inst✝¹ : HasBesicovitchCovering β
μ : MeasureTheory.Measure β
inst✝ : IsLocallyFiniteMeasure μ
s : Set β
hs : MeasurableSet s
⊢ ∀ᵐ (x : β) ∂μ, Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 (indicator s 1 x))

tactic: intro x hx
state_before: case h
α : Type ?u.1286254
inst✝¹⁰ : MetricSpace α
β : Type u
inst✝⁹ : SecondCountableTopology α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : OpensMeasurableSpace α
inst✝⁶ : HasBesicovitchCovering α
inst✝⁵ : MetricSpace β
inst✝⁴ : MeasurableSpace β
inst✝³ : BorelSpace β
inst✝² : SecondCountableTopology β
inst✝¹ : HasBesicovitchCovering β
μ : MeasureTheory.Measure β
inst✝ : IsLocallyFiniteMeasure μ
s : Set β
hs : MeasurableSet s
⊢ ∀ (a : β),
    Tendsto (fun a => ↑↑μ (s ∩ a) / ↑↑μ a) (VitaliFamily.filterAt (Besicovitch.vitaliFamily μ) a)
        (𝓝 (indicator s 1 a)) →
      Tendsto (fun r => ↑↑μ (s ∩ closedBall a r) / ↑↑μ (closedBall a r)) (𝓝[Ioi 0] 0) (𝓝 (indicator s 1 a))

tactic: exact hx.comp (tendsto_filterAt μ x)
state_before: case h
α : Type ?u.1286254
inst✝¹⁰ : MetricSpace α
β : Type u
inst✝⁹ : SecondCountableTopology α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : OpensMeasurableSpace α
inst✝⁶ : HasBesicovitchCovering α
inst✝⁵ : MetricSpace β
inst✝⁴ : MeasurableSpace β
inst✝³ : BorelSpace β
inst✝² : SecondCountableTopology β
inst✝¹ : HasBesicovitchCovering β
μ : MeasureTheory.Measure β
inst✝ : IsLocallyFiniteMeasure μ
s : Set β
hs : MeasurableSet s
x : β
hx : Tendsto (fun a => ↑↑μ (s ∩ a) / ↑↑μ a) (VitaliFamily.filterAt (Besicovitch.vitaliFamily μ) x) (𝓝 (indicator s 1 x))
⊢ Tendsto (fun r => ↑↑μ (s ∩ closedBall x r) / ↑↑μ (closedBall x r)) (𝓝[Ioi 0] 0) (𝓝 (indicator s 1 x))
Theorem: List.rotate_eq_iff
File: Mathlib/Data/List/Rotate.lean

tactic: rw [← @rotate_eq_rotate _ l _ n, rotate_rotate, ← rotate_mod l', add_mod]
state_before: α : Type u
l l' : List α
n : ℕ
⊢ rotate l n = l' ↔ l = rotate l' (length l' - n % length l')

tactic: cases' l'.length.zero_le.eq_or_lt with hl hl
state_before: α : Type u
l l' : List α
n : ℕ
⊢ rotate l n = l' ↔ rotate l n = rotate l' (((length l' - n % length l') % length l' + n % length l') % length l')

tactic: rw [eq_nil_of_length_eq_zero hl.symm, rotate_nil, rotate_eq_nil_iff]
state_before: case inl
α : Type u
l l' : List α
n : ℕ
hl : 0 = length l'
⊢ rotate l n = l' ↔ rotate l n = rotate l' (((length l' - n % length l') % length l' + n % length l') % length l')

tactic: cases' (Nat.zero_le (n % l'.length)).eq_or_lt with hn hn
state_before: case inr
α : Type u
l l' : List α
n : ℕ
hl : 0 < length l'
⊢ rotate l n = l' ↔ rotate l n = rotate l' (((length l' - n % length l') % length l' + n % length l') % length l')

tactic: simp [← hn]
state_before: case inr.inl
α : Type u
l l' : List α
n : ℕ
hl : 0 < length l'
hn : 0 = n % length l'
⊢ rotate l n = l' ↔ rotate l n = rotate l' (((length l' - n % length l') % length l' + n % length l') % length l')

tactic: rw [mod_eq_of_lt (tsub_lt_self hl hn), tsub_add_cancel_of_le, mod_self, rotate_zero]
state_before: case inr.inr
α : Type u
l l' : List α
n : ℕ
hl : 0 < length l'
hn : 0 < n % length l'
⊢ rotate l n = l' ↔ rotate l n = rotate l' (((length l' - n % length l') % length l' + n % length l') % length l')

tactic: exact (Nat.mod_lt _ hl).le
state_before: case inr.inr
α : Type u
l l' : List α
n : ℕ
hl : 0 < length l'
hn : 0 < n % length l'
⊢ n % length l' ≤ length l'
Theorem: intervalIntegral.integral_deriv_comp_mul_deriv
File: Mathlib/MeasureTheory/Integral/FundThmCalculus.lean

tactic: simpa [mul_comm] using integral_deriv_comp_smul_deriv hf hg hf' hg'
state_before: ι : Type ?u.1960831
𝕜 : Type ?u.1960834
E : Type ?u.1960837
F : Type ?u.1960840
A : Type ?u.1960843
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
f✝¹ : ℝ → E
g'✝ g✝ φ : ℝ → ℝ
f✝ f'✝ : ℝ → E
a b : ℝ
f f' g g' : ℝ → ℝ
hf : ∀ (x : ℝ), x ∈ [[a, b]] → HasDerivAt f (f' x) x
hg : ∀ (x : ℝ), x ∈ [[a, b]] → HasDerivAt g (g' (f x)) (f x)
hf' : ContinuousOn f' [[a, b]]
hg' : Continuous g'
⊢ (∫ (x : ℝ) in a..b, (g' ∘ f) x * f' x) = (g ∘ f) b - (g ∘ f) a
Theorem: RingQuot.mul_quot
File: Mathlib/Algebra/RingQuot.lean

tactic: show mul r _ _ = _
state_before: R : Type u₁
inst✝³ : Semiring R
S : Type u₂
inst✝² : CommSemiring S
A : Type u₃
inst✝¹ : Semiring A
inst✝ : Algebra S A
r : R → R → Prop
a b : R
⊢ { toQuot := Quot.mk (Rel r) a } * { toQuot := Quot.mk (Rel r) b } = { toQuot := Quot.mk (Rel r) (a * b) }

tactic: rw [mul_def]
state_before: R : Type u₁
inst✝³ : Semiring R
S : Type u₂
inst✝² : CommSemiring S
A : Type u₃
inst✝¹ : Semiring A
inst✝ : Algebra S A
r : R → R → Prop
a b : R
⊢ RingQuot.mul r { toQuot := Quot.mk (Rel r) a } { toQuot := Quot.mk (Rel r) b } = { toQuot := Quot.mk (Rel r) (a * b) }

tactic: rfl
state_before: R : Type u₁
inst✝³ : Semiring R
S : Type u₂
inst✝² : CommSemiring S
A : Type u₃
inst✝¹ : Semiring A
inst✝ : Algebra S A
r : R → R → Prop
a b : R
⊢ (match { toQuot := Quot.mk (Rel r) a }, { toQuot := Quot.mk (Rel r) b } with
    | { toQuot := a }, { toQuot := b } =>
      {
        toQuot :=
          Quot.map₂ (fun x x_1 => x * x_1) (_ : ∀ ⦃a b c : R⦄, Rel r b c → Rel r (a * b) (a * c))
            (_ : ∀ ⦃a b c : R⦄, Rel r a b → Rel r (a * c) (b * c)) a b }) =
    { toQuot := Quot.mk (Rel r) (a * b) }
Theorem: List.rotate'_nil
File: Mathlib/Data/List/Rotate.lean

tactic: cases n <;> rfl
state_before: α : Type u
n : ℕ
⊢ rotate' [] n = []
Theorem: Filter.HasBasis.forall_mem_mem
File: Mathlib/Order/Filter/Bases.lean

tactic: simp only [h.mem_iff, exists_imp, and_imp]
state_before: α : Type u_1
β : Type ?u.66654
γ : Type ?u.66657
ι : Sort u_2
ι' : Sort ?u.66663
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
h : HasBasis l p s
x : α
⊢ (∀ (t : Set α), t ∈ l → x ∈ t) ↔ ∀ (i : ι), p i → x ∈ s i

tactic: exact ⟨fun h i hi => h (s i) i hi Subset.rfl, fun h t i hi ht => ht (h i hi)⟩
state_before: α : Type u_1
β : Type ?u.66654
γ : Type ?u.66657
ι : Sort u_2
ι' : Sort ?u.66663
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
h : HasBasis l p s
x : α
⊢ (∀ (t : Set α) (x_1 : ι), p x_1 → s x_1 ⊆ t → x ∈ t) ↔ ∀ (i : ι), p i → x ∈ s i
Theorem: exists_Icc_mem_subset_of_mem_nhdsWithin_Iic
File: Mathlib/Topology/Order/Basic.lean

tactic: simpa only [dual_Icc, toDual.surjective.exists] using
  @exists_Icc_mem_subset_of_mem_nhdsWithin_Ici αᵒᵈ _ _ _ (toDual a) _ hs
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : LinearOrder α
inst✝ : OrderTopology α
a : α
s : Set α
hs : s ∈ 𝓝[Iic a] a
⊢ ∃ b, b ≤ a ∧ Icc b a ∈ 𝓝[Iic a] a ∧ Icc b a ⊆ s
Theorem: tsum_op
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: by_cases h : Summable f
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.806829
δ : Type ?u.806832
inst✝² : AddCommMonoid α
inst✝¹ : TopologicalSpace α
f : β → α
a : α
inst✝ : T2Space α
⊢ (∑' (x : β), op (f x)) = op (∑' (x : β), f x)

tactic: exact h.hasSum.op.tsum_eq
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type ?u.806829
δ : Type ?u.806832
inst✝² : AddCommMonoid α
inst✝¹ : TopologicalSpace α
f : β → α
a : α
inst✝ : T2Space α
h : Summable f
⊢ (∑' (x : β), op (f x)) = op (∑' (x : β), f x)

tactic: have ho := summable_op.not.mpr h
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type ?u.806829
δ : Type ?u.806832
inst✝² : AddCommMonoid α
inst✝¹ : TopologicalSpace α
f : β → α
a : α
inst✝ : T2Space α
h : ¬Summable f
⊢ (∑' (x : β), op (f x)) = op (∑' (x : β), f x)

tactic: rw [tsum_eq_zero_of_not_summable h, tsum_eq_zero_of_not_summable ho, MulOpposite.op_zero]
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type ?u.806829
δ : Type ?u.806832
inst✝² : AddCommMonoid α
inst✝¹ : TopologicalSpace α
f : β → α
a : α
inst✝ : T2Space α
h : ¬Summable f
ho : ¬Summable fun a => op (f a)
⊢ (∑' (x : β), op (f x)) = op (∑' (x : β), f x)
Theorem: circleIntegral.integral_sub_inv_smul_sub_smul
File: Mathlib/MeasureTheory/Integral/CircleIntegral.lean

tactic: rcases eq_or_ne R 0 with (rfl | hR)
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c w : ℂ
R : ℝ
⊢ (∮ (z : ℂ) in C(c, R), (z - w)⁻¹ • (z - w) • f z) = ∮ (z : ℂ) in C(c, R), f z

tactic: have : (circleMap c R ⁻¹' {w}).Countable := (countable_singleton _).preimage_circleMap c hR
state_before: case inr
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c w : ℂ
R : ℝ
hR : R ≠ 0
⊢ (∮ (z : ℂ) in C(c, R), (z - w)⁻¹ • (z - w) • f z) = ∮ (z : ℂ) in C(c, R), f z

tactic: refine' intervalIntegral.integral_congr_ae ((this.ae_not_mem _).mono fun θ hθ _' => _)
state_before: case inr
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c w : ℂ
R : ℝ
hR : R ≠ 0
this : Set.Countable (circleMap c R ⁻¹' {w})
⊢ (∮ (z : ℂ) in C(c, R), (z - w)⁻¹ • (z - w) • f z) = ∮ (z : ℂ) in C(c, R), f z

tactic: change circleMap c R θ ≠ w at hθ
state_before: case inr
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c w : ℂ
R : ℝ
hR : R ≠ 0
this : Set.Countable (circleMap c R ⁻¹' {w})
θ : ℝ
hθ : ¬θ ∈ circleMap c R ⁻¹' {w}
_' : θ ∈ Ι 0 (2 * π)
⊢ deriv (circleMap c R) θ • (fun z => (z - w)⁻¹ • (z - w) • f z) (circleMap c R θ) =
    deriv (circleMap c R) θ • (fun z => f z) (circleMap c R θ)

tactic: simp only [inv_smul_smul₀ (sub_ne_zero.2 <| hθ)]
state_before: case inr
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c w : ℂ
R : ℝ
hR : R ≠ 0
this : Set.Countable (circleMap c R ⁻¹' {w})
θ : ℝ
_' : θ ∈ Ι 0 (2 * π)
hθ : circleMap c R θ ≠ w
⊢ deriv (circleMap c R) θ • (fun z => (z - w)⁻¹ • (z - w) • f z) (circleMap c R θ) =
    deriv (circleMap c R) θ • (fun z => f z) (circleMap c R θ)

tactic: simp only [integral_radius_zero]
state_before: case inl
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
inst✝ : CompleteSpace E
f : ℂ → E
c w : ℂ
⊢ (∮ (z : ℂ) in C(c, 0), (z - w)⁻¹ • (z - w) • f z) = ∮ (z : ℂ) in C(c, 0), f z
Theorem: Composition.toCompositionAsSet_length
File: Mathlib/Combinatorics/Composition.lean

tactic: simp [Composition.toCompositionAsSet, CompositionAsSet.length, c.card_boundaries_eq_succ_length]
state_before: n : ℕ
c : Composition n
⊢ CompositionAsSet.length (toCompositionAsSet c) = length c
Theorem: CategoryTheory.Abelian.factorThruImage_comp_coimageIsoImage'_inv
File: Mathlib/CategoryTheory/Abelian/Basic.lean

tactic: simp only [IsImage.isoExt_inv, image.isImage_lift, image.fac_lift,
  coimageStrongEpiMonoFactorisation_e]
state_before: C : Type u
inst✝¹ : Category C
inst✝ : Abelian C
X Y : C
f : X ⟶ Y
⊢ factorThruImage f ≫ (coimageIsoImage' f).inv = cokernel.π (kernel.ι f)
Theorem: MulChar.inv_mul
File: Mathlib/NumberTheory/LegendreSymbol/MulCharacter.lean

tactic: ext x
state_before: R : Type u
inst✝¹ : CommMonoid R
R' : Type v
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
⊢ χ⁻¹ * χ = 1

tactic: rw [coeToFun_mul, Pi.mul_apply, inv_apply_eq_inv]
state_before: case h
R : Type u
inst✝¹ : CommMonoid R
R' : Type v
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
x : Rˣ
⊢ ↑(χ⁻¹ * χ) ↑x = ↑1 ↑x

tactic: erw [Ring.inverse_mul_cancel _ (IsUnit.map χ x.isUnit)]
state_before: case h
R : Type u
inst✝¹ : CommMonoid R
R' : Type v
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
x : Rˣ
⊢ Ring.inverse (↑χ ↑x) * ↑χ ↑x = ↑1 ↑x

tactic: rw [one_apply_coe]
state_before: case h
R : Type u
inst✝¹ : CommMonoid R
R' : Type v
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
x : Rˣ
⊢ 1 = ↑1 ↑x
Theorem: SimpleGraph.Subgraph.verts_iInf
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: simp [iInf]
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : Subgraph G
a b : V
f : ι → Subgraph G
⊢ (⨅ (i : ι), f i).verts = ⋂ (i : ι), (f i).verts
Theorem: CategoryTheory.Arrow.left_hom_inv_right
File: Mathlib/CategoryTheory/Arrow.lean

tactic: simp only [← Category.assoc, IsIso.comp_inv_eq, w]
state_before: T : Type u
inst✝¹ : Category T
f g : Arrow T
sq : f ⟶ g
inst✝ : IsIso sq
⊢ sq.left ≫ g.hom ≫ inv sq.right = f.hom
Theorem: Algebra.pushoutDesc_right
File: Mathlib/RingTheory/IsTensorProduct.lean

tactic: rw [f.map_smul, smul_mul_assoc]
state_before: R : Type u_1
M : Type v₁
N : Type v₂
S : Type v₃
inst✝³³ : AddCommMonoid M
inst✝³² : AddCommMonoid N
inst✝³¹ : CommRing R
inst✝³⁰ : CommRing S
inst✝²⁹ : Algebra R S
inst✝²⁸ : Module R M
inst✝²⁷ : Module R N
inst✝²⁶ : Module S N
inst✝²⁵ : IsScalarTower R S N
f✝ : M →ₗ[R] N
h : IsBaseChange S f✝
P : Type ?u.1417145
Q : Type ?u.1417148
inst✝²⁴ : AddCommMonoid P
inst✝²³ : Module R P
inst✝²² : AddCommMonoid Q
inst✝²¹ : Module S Q
T : Type ?u.1417463
O : Type ?u.1417466
inst✝²⁰ : CommRing T
inst✝¹⁹ : Algebra R T
inst✝¹⁸ : Algebra S T
inst✝¹⁷ : IsScalarTower R S T
inst✝¹⁶ : AddCommMonoid O
inst✝¹⁵ : Module R O
inst✝¹⁴ : Module S O
inst✝¹³ : Module T O
inst✝¹² : IsScalarTower S T O
inst✝¹¹ : IsScalarTower R S O
inst✝¹⁰ : IsScalarTower R T O
R' : Type u_2
S' : Type u_3
inst✝⁹ : CommRing R'
inst✝⁸ : CommRing S'
inst✝⁷ : Algebra R R'
inst✝⁶ : Algebra S S'
inst✝⁵ : Algebra R' S'
inst✝⁴ : Algebra R S'
inst✝³ : IsScalarTower R R' S'
inst✝² : IsScalarTower R S S'
H✝ : IsPushout R S R' S'
A : Type u_4
inst✝¹ : Semiring A
inst✝ : Algebra R A
f : S →ₐ[R] A
g : R' →ₐ[R] A
H : ∀ (x : S) (y : R'), ↑f x * ↑g y = ↑g y * ↑f x
x : R'
this : Module S A := Module.compHom A ↑f
r : R
s : S
a : A
⊢ ↑f (r • s) * a = r • (↑f s * a)