tasksource/leandojo huggingface dataset:
Theorem: measurable_of_Iic
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Basic.lean

tactic: apply measurable_of_Ioi
state_before: α : Type u_2
β : Type ?u.1088754
γ : Type ?u.1088757
γ₂ : Type ?u.1088760
δ : Type u_1
ι : Sort y
s t u : Set α
inst✝¹² : TopologicalSpace α
inst✝¹¹ : MeasurableSpace α
inst✝¹⁰ : BorelSpace α
inst✝⁹ : TopologicalSpace β
inst✝⁸ : MeasurableSpace β
inst✝⁷ : BorelSpace β
inst✝⁶ : TopologicalSpace γ
inst✝⁵ : MeasurableSpace γ
inst✝⁴ : BorelSpace γ
inst✝³ : MeasurableSpace δ
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : SecondCountableTopology α
f : δ → α
hf : ∀ (x : α), MeasurableSet (f ⁻¹' Iic x)
⊢ Measurable f

tactic: simp_rw [← compl_Iic, preimage_compl, MeasurableSet.compl_iff]
state_before: case hf
α : Type u_2
β : Type ?u.1088754
γ : Type ?u.1088757
γ₂ : Type ?u.1088760
δ : Type u_1
ι : Sort y
s t u : Set α
inst✝¹² : TopologicalSpace α
inst✝¹¹ : MeasurableSpace α
inst✝¹⁰ : BorelSpace α
inst✝⁹ : TopologicalSpace β
inst✝⁸ : MeasurableSpace β
inst✝⁷ : BorelSpace β
inst✝⁶ : TopologicalSpace γ
inst✝⁵ : MeasurableSpace γ
inst✝⁴ : BorelSpace γ
inst✝³ : MeasurableSpace δ
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : SecondCountableTopology α
f : δ → α
hf : ∀ (x : α), MeasurableSet (f ⁻¹' Iic x)
⊢ ∀ (x : α), MeasurableSet (f ⁻¹' Ioi x)

tactic: assumption
state_before: case hf
α : Type u_2
β : Type ?u.1088754
γ : Type ?u.1088757
γ₂ : Type ?u.1088760
δ : Type u_1
ι : Sort y
s t u : Set α
inst✝¹² : TopologicalSpace α
inst✝¹¹ : MeasurableSpace α
inst✝¹⁰ : BorelSpace α
inst✝⁹ : TopologicalSpace β
inst✝⁸ : MeasurableSpace β
inst✝⁷ : BorelSpace β
inst✝⁶ : TopologicalSpace γ
inst✝⁵ : MeasurableSpace γ
inst✝⁴ : BorelSpace γ
inst✝³ : MeasurableSpace δ
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : SecondCountableTopology α
f : δ → α
hf : ∀ (x : α), MeasurableSet (f ⁻¹' Iic x)
⊢ ∀ (x : α), MeasurableSet (f ⁻¹' Iic x)
Theorem: orderOf_dvd_iff_pow_eq_one
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: rw [pow_eq_mod_orderOf, Nat.mod_eq_zero_of_dvd h, _root_.pow_zero]
state_before: G : Type u
A : Type v
x y : G
a b : A
n✝ m : ℕ
inst✝¹ : Monoid G
inst✝ : AddMonoid A
n : ℕ
h : orderOf x ∣ n
⊢ x ^ n = 1
Theorem: Nat.ascFactorial_eq_factorial_mul_choose
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: rw [mul_comm]
state_before: n k : ℕ
⊢ ascFactorial n k = k ! * choose (n + k) k

tactic: apply mul_right_cancel₀ (factorial_ne_zero (n + k - k))
state_before: n k : ℕ
⊢ ascFactorial n k = choose (n + k) k * k !

tactic: rw [choose_mul_factorial_mul_factorial, add_tsub_cancel_right, ← factorial_mul_ascFactorial,
  mul_comm]
state_before: n k : ℕ
⊢ ascFactorial n k * (n + k - k)! = choose (n + k) k * k ! * (n + k - k)!

tactic: exact Nat.le_add_left k n
state_before: n k : ℕ
⊢ k ≤ n + k
Theorem: Mathlib.Tactic.RingNF.nat_rawCast_0
File: Mathlib/Tactic/Ring/RingNF.lean

tactic: simp
state_before: R : Type u_1
inst✝ : CommSemiring R
⊢ Nat.rawCast 0 = 0
Theorem: MeasureTheory.not_isFiniteMeasure_iff
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: refine' ⟨fun h => _, fun h => fun h' => h'.measure_univ_lt_top.ne h⟩
state_before: α : Type u_1
β : Type ?u.604437
γ : Type ?u.604440
δ : Type ?u.604443
ι : Type ?u.604446
R : Type ?u.604449
R' : Type ?u.604452
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
⊢ ¬IsFiniteMeasure μ ↔ ↑↑μ univ = ⊤

tactic: by_contra h'
state_before: α : Type u_1
β : Type ?u.604437
γ : Type ?u.604440
δ : Type ?u.604443
ι : Type ?u.604446
R : Type ?u.604449
R' : Type ?u.604452
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
h : ¬IsFiniteMeasure μ
⊢ ↑↑μ univ = ⊤

tactic: exact h ⟨lt_top_iff_ne_top.mpr h'⟩
state_before: α : Type u_1
β : Type ?u.604437
γ : Type ?u.604440
δ : Type ?u.604443
ι : Type ?u.604446
R : Type ?u.604449
R' : Type ?u.604452
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
h : ¬IsFiniteMeasure μ
h' : ¬↑↑μ univ = ⊤
⊢ False
Theorem: CauSeq.mul_inv_cancel
File: Mathlib/Data/Real/CauSeq.lean

tactic: simpa [(abv_pos abv).1 (lt_of_lt_of_le K0 (H _ ij)), abv_zero abv] using ε0
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : DivisionRing β
abv : β → α
inst✝ : IsAbsoluteValue abv
f : CauSeq β abv
hf : ¬LimZero f
ε : α
ε0 : ε > 0
K : α
K0 : K > 0
i : ℕ
H : ∀ (j : ℕ), j ≥ i → K ≤ abv (↑f j)
j : ℕ
ij : j ≥ i
⊢ abv (↑(f * inv f hf - 1) j) < ε
Theorem: ContinuousLinearMap.op_norm_neg
File: Mathlib/Analysis/NormedSpace/OperatorNorm.lean

tactic: simp only [norm_def, neg_apply, norm_neg]
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕜₃ : Type ?u.285603
E : Type u_3
Eₗ : Type ?u.285609
F : Type u_4
Fₗ : Type ?u.285615
G : Type ?u.285618
Gₗ : Type ?u.285621
𝓕 : Type ?u.285624
inst✝¹⁵ : SeminormedAddCommGroup E
inst✝¹⁴ : SeminormedAddCommGroup Eₗ
inst✝¹³ : SeminormedAddCommGroup F
inst✝¹² : SeminormedAddCommGroup Fₗ
inst✝¹¹ : SeminormedAddCommGroup G
inst✝¹⁰ : SeminormedAddCommGroup Gₗ
inst✝⁹ : NontriviallyNormedField 𝕜
inst✝⁸ : NontriviallyNormedField 𝕜₂
inst✝⁷ : NontriviallyNormedField 𝕜₃
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedSpace 𝕜 Eₗ
inst✝⁴ : NormedSpace 𝕜₂ F
inst✝³ : NormedSpace 𝕜 Fₗ
inst✝² : NormedSpace 𝕜₃ G
inst✝¹ : NormedSpace 𝕜 Gₗ
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
σ₁₃ : 𝕜 →+* 𝕜₃
inst✝ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
f : E →SL[σ₁₂] F
⊢ ‖-f‖ = ‖f‖
Theorem: Multiset.union_add_distrib
File: Mathlib/Data/Multiset/Basic.lean

tactic: rw [add_comm t, tsub_add_eq_tsub_tsub, add_tsub_cancel_right]
state_before: α : Type u_1
β : Type ?u.179823
γ : Type ?u.179826
inst✝ : DecidableEq α
s✝ t✝ u✝ : Multiset α
a b : α
s t u : Multiset α
⊢ s + u - (t + u) = s - t
Theorem: Set.list_prod_mem_list_prod
File: Mathlib/Data/Set/Pointwise/BigOperators.lean

tactic: induction' t with h tl ih
state_before: ι : Type u_1
α : Type u_2
β : Type ?u.67083
F : Type ?u.67086
inst✝² : CommMonoid α
inst✝¹ : CommMonoid β
inst✝ : MonoidHomClass F α β
t : List ι
f : ι → Set α
g : ι → α
hg : ∀ (i : ι), i ∈ t → g i ∈ f i
⊢ List.prod (List.map g t) ∈ List.prod (List.map f t)

tactic: simp_rw [List.map_nil, List.prod_nil, Set.mem_one]
state_before: case nil
ι : Type u_1
α : Type u_2
β : Type ?u.67083
F : Type ?u.67086
inst✝² : CommMonoid α
inst✝¹ : CommMonoid β
inst✝ : MonoidHomClass F α β
t : List ι
f : ι → Set α
g : ι → α
hg✝ : ∀ (i : ι), i ∈ t → g i ∈ f i
hg : ∀ (i : ι), i ∈ [] → g i ∈ f i
⊢ List.prod (List.map g []) ∈ List.prod (List.map f [])

tactic: simp_rw [List.map_cons, List.prod_cons]
state_before: case cons
ι : Type u_1
α : Type u_2
β : Type ?u.67083
F : Type ?u.67086
inst✝² : CommMonoid α
inst✝¹ : CommMonoid β
inst✝ : MonoidHomClass F α β
t : List ι
f : ι → Set α
g : ι → α
hg✝ : ∀ (i : ι), i ∈ t → g i ∈ f i
h : ι
tl : List ι
ih : (∀ (i : ι), i ∈ tl → g i ∈ f i) → List.prod (List.map g tl) ∈ List.prod (List.map f tl)
hg : ∀ (i : ι), i ∈ h :: tl → g i ∈ f i
⊢ List.prod (List.map g (h :: tl)) ∈ List.prod (List.map f (h :: tl))

tactic: exact mul_mem_mul (hg h <| List.mem_cons_self _ _)
  (ih fun i hi ↦ hg i <| List.mem_cons_of_mem _ hi)
state_before: case cons
ι : Type u_1
α : Type u_2
β : Type ?u.67083
F : Type ?u.67086
inst✝² : CommMonoid α
inst✝¹ : CommMonoid β
inst✝ : MonoidHomClass F α β
t : List ι
f : ι → Set α
g : ι → α
hg✝ : ∀ (i : ι), i ∈ t → g i ∈ f i
h : ι
tl : List ι
ih : (∀ (i : ι), i ∈ tl → g i ∈ f i) → List.prod (List.map g tl) ∈ List.prod (List.map f tl)
hg : ∀ (i : ι), i ∈ h :: tl → g i ∈ f i
⊢ g h * List.prod (List.map g tl) ∈ f h * List.prod (List.map f tl)
Theorem: ENNReal.sub_half
File: Mathlib/Data/Real/ENNReal.lean

tactic: lift a to ℝ≥0 using h
state_before: α : Type ?u.327971
β : Type ?u.327974
a b c d : ℝ≥0∞
r p q : ℝ≥0
h : a ≠ ⊤
⊢ a - a / 2 = a / 2

tactic: exact sub_eq_of_add_eq (mul_ne_top coe_ne_top <| by simp) (ENNReal.add_halves a)
state_before: case intro
α : Type ?u.327971
β : Type ?u.327974
b c d : ℝ≥0∞
r p q a : ℝ≥0
⊢ ↑a - ↑a / 2 = ↑a / 2

tactic: simp
state_before: α : Type ?u.327971
β : Type ?u.327974
b c d : ℝ≥0∞
r p q a : ℝ≥0
⊢ 2⁻¹ ≠ ⊤
Theorem: CategoryTheory.CartesianClosed.curry_id_eq_coev
File: Mathlib/CategoryTheory/Closed/Cartesian.lean

tactic: rw [curry_eq, (exp A).map_id (A ⨯ _)]
state_before: C : Type u
inst✝³ : Category C
A✝ B X✝ X' Y Y' Z : C
inst✝² : HasFiniteProducts C
inst✝¹ : Exponentiable A✝
A X : C
inst✝ : Exponentiable A
⊢ curry (𝟙 (A ⨯ (𝟭 C).obj X)) = (exp.coev A).app X

tactic: apply comp_id
state_before: C : Type u
inst✝³ : Category C
A✝ B X✝ X' Y Y' Z : C
inst✝² : HasFiniteProducts C
inst✝¹ : Exponentiable A✝
A X : C
inst✝ : Exponentiable A
⊢ (exp.coev A).app ((𝟭 C).obj X) ≫ 𝟙 (A ⟹ A ⨯ (𝟭 C).obj X) = (exp.coev A).app X
Theorem: Rat.normalize_zero
File: Std/Data/Rat/Lemmas.lean

tactic: simp [normalize, Int.zero_div, Int.natAbs_zero, Nat.div_self (Nat.pos_of_ne_zero nz)]
state_before: d : Nat
nz : d ≠ 0
⊢ normalize 0 d = 0

tactic: rfl
state_before: d : Nat
nz : d ≠ 0
⊢ mk' 0 1 = 0
Theorem: Stream'.Seq.map_id
File: Mathlib/Data/Seq/Seq.lean

tactic: apply Subtype.eq
state_before: α : Type u
β : Type v
γ : Type w
s : Stream' (Option α)
al : IsSeq s
⊢ map id { val := s, property := al } = { val := s, property := al }

tactic: dsimp [map]
state_before: case a
α : Type u
β : Type v
γ : Type w
s : Stream' (Option α)
al : IsSeq s
⊢ ↑(map id { val := s, property := al }) = ↑{ val := s, property := al }

tactic: rw [Option.map_id, Stream'.map_id]
state_before: case a
α : Type u
β : Type v
γ : Type w
s : Stream' (Option α)
al : IsSeq s
⊢ Stream'.map (Option.map id) s = s
Theorem: Nat.coprime_prod_right
File: Mathlib/Data/Nat/GCD/BigOperators.lean

tactic: simp
state_before: ι : Type u_1
x : ℕ
s : ι → ℕ
t : Finset ι
⊢ (fun y => coprime x y) 1
Theorem: Rat.inv_coe_int_num
File: Mathlib/Data/Rat/Lemmas.lean

tactic: induction a using Int.induction_on <;>
  simp [← Int.negSucc_coe', Int.negSucc_coe, -neg_add_rev, Rat.inv_neg, Int.ofNat_add_one_out,
    -Nat.cast_succ, inv_coe_nat_num_of_pos, -Int.cast_negSucc, @eq_comm ℤ 1,
    Int.sign_eq_one_of_pos, ofInt_eq_cast]
state_before: a : ℤ
⊢ (↑a)⁻¹.num = Int.sign a
Theorem: Polynomial.Monic.ne_zero_of_ne
File: Mathlib/Data/Polynomial/Degree/Definitions.lean

tactic: nontriviality R
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ q : R[X]
ι : Type ?u.646647
h : 0 ≠ 1
p : R[X]
hp : Monic p
⊢ p ≠ 0

tactic: exact hp.ne_zero
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝¹ : Semiring R
p✝ q : R[X]
ι : Type ?u.646647
h : 0 ≠ 1
p : R[X]
hp : Monic p
inst✝ : Nontrivial R
⊢ p ≠ 0
Theorem: ZMod.prime_ne_zero
File: Mathlib/Data/ZMod/Basic.lean

tactic: rwa [← Nat.cast_zero, Ne.def, eq_iff_modEq_nat, Nat.modEq_zero_iff_dvd, ←
  hp.1.coprime_iff_not_dvd, Nat.coprime_primes hp.1 hq.1]
state_before: p q : ℕ
hp : Fact (Nat.Prime p)
hq : Fact (Nat.Prime q)
hpq : p ≠ q
⊢ ↑q ≠ 0
Theorem: Nat.coprime_self
File: Std/Data/Nat/Gcd.lean

tactic: simp [coprime]
state_before: n : Nat
⊢ coprime n n ↔ n = 1
Theorem: SimpleGraph.IsUniform.symm
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean

tactic: rw [edgeDensity_comm _ t', edgeDensity_comm _ t]
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s✝ t✝ : Finset α
a b : α
s t : Finset α
h : IsUniform G ε s t
t' : Finset α
ht' : t' ⊆ t
s' : Finset α
hs' : s' ⊆ s
ht : ↑(card t) * ε ≤ ↑(card t')
hs : ↑(card s) * ε ≤ ↑(card s')
⊢ abs (↑(edgeDensity G t' s') - ↑(edgeDensity G t s)) < ε

tactic: exact h hs' ht' hs ht
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s✝ t✝ : Finset α
a b : α
s t : Finset α
h : IsUniform G ε s t
t' : Finset α
ht' : t' ⊆ t
s' : Finset α
hs' : s' ⊆ s
ht : ↑(card t) * ε ≤ ↑(card t')
hs : ↑(card s) * ε ≤ ↑(card s')
⊢ abs (↑(edgeDensity G s' t') - ↑(edgeDensity G s t)) < ε
Theorem: SameRay.map
File: Mathlib/LinearAlgebra/Ray.lean

tactic: rw [hx, map_zero]
state_before: R : Type u_1
inst✝⁵ : StrictOrderedCommSemiring R
M : Type u_2
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type u_3
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type ?u.37832
inst✝ : DecidableEq ι
x y z : M
f : M →ₗ[R] N
h : SameRay R x y
hx : x = 0
⊢ ↑f x = 0

tactic: rw [hy, map_zero]
state_before: R : Type u_1
inst✝⁵ : StrictOrderedCommSemiring R
M : Type u_2
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type u_3
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type ?u.37832
inst✝ : DecidableEq ι
x y z : M
f : M →ₗ[R] N
h : SameRay R x y
hy : y = 0
⊢ ↑f y = 0

tactic: rw [← f.map_smul, ← f.map_smul, h]
state_before: R : Type u_1
inst✝⁵ : StrictOrderedCommSemiring R
M : Type u_2
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type u_3
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type ?u.37832
inst✝ : DecidableEq ι
x y z : M
f : M →ₗ[R] N
h✝ : SameRay R x y
x✝ : ∃ r₁ r₂, 0 < r₁ ∧ 0 < r₂ ∧ r₁ • x = r₂ • y
r₁ r₂ : R
hr₁ : 0 < r₁
hr₂ : 0 < r₂
h : r₁ • x = r₂ • y
⊢ r₁ • ↑f x = r₂ • ↑f y
Theorem: Equiv.Perm.IsCycleOn.exists_pow_eq'
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: lift s to Finset α using id hs
state_before: ι : Type ?u.1917955
α : Type u_1
β : Type ?u.1917961
f g : Perm α
s t : Set α
a b x y : α
hs : Set.Finite s
hf : IsCycleOn f s
ha : a ∈ s
hb : b ∈ s
⊢ ∃ n, ↑(f ^ n) a = b

tactic: obtain ⟨n, -, hn⟩ := hf.exists_pow_eq ha hb
state_before: case intro
ι : Type ?u.1917955
α : Type u_1
β : Type ?u.1917961
f g : Perm α
t : Set α
a b x y : α
s : Finset α
hs : Set.Finite ↑s
hf : IsCycleOn f ↑s
ha : a ∈ ↑s
hb : b ∈ ↑s
⊢ ∃ n, ↑(f ^ n) a = b

tactic: exact ⟨n, hn⟩
state_before: case intro.intro.intro
ι : Type ?u.1917955
α : Type u_1
β : Type ?u.1917961
f g : Perm α
t : Set α
a b x y : α
s : Finset α
hs : Set.Finite ↑s
hf : IsCycleOn f ↑s
ha : a ∈ ↑s
hb : b ∈ ↑s
n : ℕ
hn : ↑(f ^ n) a = b
⊢ ∃ n, ↑(f ^ n) a = b
Theorem: Polynomial.Chebyshev.T_eq_X_mul_T_sub_pol_U
File: Mathlib/RingTheory/Polynomial/Chebyshev.lean

tactic: simp only [T, U]
state_before: R : Type u_1
S : Type ?u.22740
inst✝¹ : CommRing R
inst✝ : CommRing S
⊢ T R (0 + 2) = X * T R (0 + 1) - (1 - X ^ 2) * U R 0

tactic: ring
state_before: R : Type u_1
S : Type ?u.22740
inst✝¹ : CommRing R
inst✝ : CommRing S
⊢ 2 * X * X - 1 = X * X - (1 - X ^ 2) * 1

tactic: simp only [T, U]
state_before: R : Type u_1
S : Type ?u.22740
inst✝¹ : CommRing R
inst✝ : CommRing S
⊢ T R (1 + 2) = X * T R (1 + 1) - (1 - X ^ 2) * U R 1

tactic: ring
state_before: R : Type u_1
S : Type ?u.22740
inst✝¹ : CommRing R
inst✝ : CommRing S
⊢ 2 * X * (2 * X * X - 1) - X = X * (2 * X * X - 1) - (1 - X ^ 2) * (2 * X)

tactic: simp only [T_eq_X_mul_T_sub_pol_U]
state_before: R : Type u_1
S : Type ?u.22740
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
⊢ 2 * X * T R (n + 2 + 1) - T R (n + 2) =
    2 * X * (X * T R (n + 2) - (1 - X ^ 2) * U R (n + 1)) - (X * T R (n + 1) - (1 - X ^ 2) * U R n)

tactic: ring
state_before: R : Type u_1
S : Type ?u.22740
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
⊢ 2 * X * (X * T R (n + 2) - (1 - X ^ 2) * U R (n + 1)) - (X * T R (n + 1) - (1 - X ^ 2) * U R n) =
    X * (2 * X * T R (n + 2) - T R (n + 1)) - (1 - X ^ 2) * (2 * X * U R (n + 1) - U R n)

tactic: rw [T_add_two _ (n + 1), U_add_two]
state_before: R : Type u_1
S : Type ?u.22740
inst✝¹ : CommRing R
inst✝ : CommRing S
n : ℕ
⊢ X * (2 * X * T R (n + 2) - T R (n + 1)) - (1 - X ^ 2) * (2 * X * U R (n + 1) - U R n) =
    X * T R (n + 2 + 1) - (1 - X ^ 2) * U R (n + 2)
Theorem: List.perm_dlookup
File: Mathlib/Data/List/Sigma.lean

tactic: ext b
state_before: α : Type u
β : α → Type v
l l₁✝ l₂✝ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l₁ l₂ : List (Sigma β)
nd₁ : NodupKeys l₁
nd₂ : NodupKeys l₂
p : l₁ ~ l₂
⊢ dlookup a l₁ = dlookup a l₂

tactic: simp only [mem_dlookup_iff nd₁, mem_dlookup_iff nd₂]
state_before: case a
α : Type u
β : α → Type v
l l₁✝ l₂✝ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l₁ l₂ : List (Sigma β)
nd₁ : NodupKeys l₁
nd₂ : NodupKeys l₂
p : l₁ ~ l₂
b : β a
⊢ b ∈ dlookup a l₁ ↔ b ∈ dlookup a l₂

tactic: exact p.mem_iff
state_before: case a
α : Type u
β : α → Type v
l l₁✝ l₂✝ : List (Sigma β)
inst✝ : DecidableEq α
a : α
l₁ l₂ : List (Sigma β)
nd₁ : NodupKeys l₁
nd₂ : NodupKeys l₂
p : l₁ ~ l₂
b : β a
⊢ { fst := a, snd := b } ∈ l₁ ↔ { fst := a, snd := b } ∈ l₂
Theorem: List.modify_get?_length
File: Std/Data/List/Lemmas.lean

tactic: cases l <;> rfl
state_before: α : Type u_1
f : α → α
l : List α
⊢ length (modifyHead f l) = length l
Theorem: LieIdeal.map_coeSubmodule
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [SetLike.ext'_iff, LieSubmodule.coe_toSubmodule, h, Submodule.map_coe]
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I I₂ : LieIdeal R L
J : LieIdeal R L'
h : ↑(map f I) = ↑f '' ↑I
⊢ ↑(map f I) = Submodule.map ↑f ↑I

tactic: rfl
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I I₂ : LieIdeal R L
J : LieIdeal R L'
h : ↑(map f I) = ↑f '' ↑I
⊢ ↑f '' ↑I = ↑↑f '' ↑↑I
Theorem: Set.sUnion_iUnion
File: Mathlib/Data/Set/Lattice.lean

tactic: simp only [sUnion_eq_biUnion, biUnion_iUnion]
state_before: α : Type u_1
β : Type ?u.178747
γ : Type ?u.178750
ι : Sort u_2
ι' : Sort ?u.178756
ι₂ : Sort ?u.178759
κ : ι → Sort ?u.178764
κ₁ : ι → Sort ?u.178769
κ₂ : ι → Sort ?u.178774
κ' : ι' → Sort ?u.178779
s : ι → Set (Set α)
⊢ (⋃₀ ⋃ (i : ι), s i) = ⋃ (i : ι), ⋃₀ s i
Theorem: QuotientGroup.equivQuotientZPowOfEquiv_refl
File: Mathlib/GroupTheory/QuotientGroup.lean

tactic: ext x
state_before: G : Type u
inst✝⁴ : Group G
N : Subgroup G
nN : Subgroup.Normal N
H : Type v
inst✝³ : Group H
φ : G →* H
A B C : Type u
inst✝² : CommGroup A
inst✝¹ : CommGroup B
inst✝ : CommGroup C
f : A →* B
g : B →* A
e : A ≃* B
d : B ≃* C
n : ℤ
⊢ MulEquiv.refl (A ⧸ range (zpowGroupHom n)) = equivQuotientZPowOfEquiv (MulEquiv.refl A) n

tactic: rw [← Quotient.out_eq' x]
state_before: case h
G : Type u
inst✝⁴ : Group G
N : Subgroup G
nN : Subgroup.Normal N
H : Type v
inst✝³ : Group H
φ : G →* H
A B C : Type u
inst✝² : CommGroup A
inst✝¹ : CommGroup B
inst✝ : CommGroup C
f : A →* B
g : B →* A
e : A ≃* B
d : B ≃* C
n : ℤ
x : A ⧸ range (zpowGroupHom n)
⊢ ↑(MulEquiv.refl (A ⧸ range (zpowGroupHom n))) x = ↑(equivQuotientZPowOfEquiv (MulEquiv.refl A) n) x

tactic: rfl
state_before: case h
G : Type u
inst✝⁴ : Group G
N : Subgroup G
nN : Subgroup.Normal N
H : Type v
inst✝³ : Group H
φ : G →* H
A B C : Type u
inst✝² : CommGroup A
inst✝¹ : CommGroup B
inst✝ : CommGroup C
f : A →* B
g : B →* A
e : A ≃* B
d : B ≃* C
n : ℤ
x : A ⧸ range (zpowGroupHom n)
⊢ ↑(MulEquiv.refl (A ⧸ range (zpowGroupHom n))) (Quotient.mk'' (Quotient.out' x)) =
    ↑(equivQuotientZPowOfEquiv (MulEquiv.refl A) n) (Quotient.mk'' (Quotient.out' x))
Theorem: SemidirectProduct.map_inl
File: Mathlib/GroupTheory/SemidirectProduct.lean

tactic: simp [map]
state_before: N : Type u_3
G : Type u_4
H : Type ?u.240686
inst✝⁴ : Group N
inst✝³ : Group G
inst✝² : Group H
φ : G →* MulAut N
N₁ : Type u_1
G₁ : Type u_2
inst✝¹ : Group N₁
inst✝ : Group G₁
φ₁ : G₁ →* MulAut N₁
f₁ : N →* N₁
f₂ : G →* G₁
h : ∀ (g : G), MonoidHom.comp f₁ (MulEquiv.toMonoidHom (↑φ g)) = MonoidHom.comp (MulEquiv.toMonoidHom (↑φ₁ (↑f₂ g))) f₁
n : N
⊢ ↑(map f₁ f₂ h) (↑inl n) = ↑inl (↑f₁ n)
Theorem: CategoryTheory.pre_map
File: Mathlib/CategoryTheory/Closed/Cartesian.lean

tactic: rw [pre, pre, pre, transferNatTransSelf_comp, prod.functor.map_comp]
state_before: C : Type u
inst✝⁵ : Category C
A B X X' Y Y' Z : C
inst✝⁴ : HasFiniteProducts C
inst✝³ : Exponentiable A
A₁ A₂ A₃ : C
inst✝² : Exponentiable A₁
inst✝¹ : Exponentiable A₂
inst✝ : Exponentiable A₃
f : A₁ ⟶ A₂
g : A₂ ⟶ A₃
⊢ pre (f ≫ g) = pre g ≫ pre f
Theorem: HahnSeries.order_mul
File: Mathlib/RingTheory/HahnSeries.lean

tactic: apply le_antisymm
state_before: Γ✝ : Type ?u.1293056
R : Type u_2
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_1
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : NonUnitalNonAssocSemiring R
inst✝ : NoZeroDivisors R
x y : HahnSeries Γ R
hx : x ≠ 0
hy : y ≠ 0
⊢ order (x * y) = order x + order y

tactic: apply order_le_of_coeff_ne_zero
state_before: case a
Γ✝ : Type ?u.1293056
R : Type u_2
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_1
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : NonUnitalNonAssocSemiring R
inst✝ : NoZeroDivisors R
x y : HahnSeries Γ R
hx : x ≠ 0
hy : y ≠ 0
⊢ order (x * y) ≤ order x + order y

tactic: rw [mul_coeff_order_add_order x y]
state_before: case a.h
Γ✝ : Type ?u.1293056
R : Type u_2
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_1
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : NonUnitalNonAssocSemiring R
inst✝ : NoZeroDivisors R
x y : HahnSeries Γ R
hx : x ≠ 0
hy : y ≠ 0
⊢ coeff (x * y) (order x + order y) ≠ 0

tactic: exact mul_ne_zero (coeff_order_ne_zero hx) (coeff_order_ne_zero hy)
state_before: case a.h
Γ✝ : Type ?u.1293056
R : Type u_2
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_1
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : NonUnitalNonAssocSemiring R
inst✝ : NoZeroDivisors R
x y : HahnSeries Γ R
hx : x ≠ 0
hy : y ≠ 0
⊢ coeff x (order x) * coeff y (order y) ≠ 0

tactic: rw [order_of_ne hx, order_of_ne hy, order_of_ne (mul_ne_zero hx hy), ← Set.IsWf.min_add]
state_before: case a
Γ✝ : Type ?u.1293056
R : Type u_2
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_1
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : NonUnitalNonAssocSemiring R
inst✝ : NoZeroDivisors R
x y : HahnSeries Γ R
hx : x ≠ 0
hy : y ≠ 0
⊢ order x + order y ≤ order (x * y)

tactic: exact Set.IsWf.min_le_min_of_subset support_mul_subset_add_support
state_before: case a
Γ✝ : Type ?u.1293056
R : Type u_2
inst✝³ : OrderedCancelAddCommMonoid Γ✝
Γ : Type u_1
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : NonUnitalNonAssocSemiring R
inst✝ : NoZeroDivisors R
x y : HahnSeries Γ R
hx : x ≠ 0
hy : y ≠ 0
⊢ Set.IsWf.min (_ : Set.IsWf (support x + support y)) (_ : Set.Nonempty (support x + support y)) ≤
    Set.IsWf.min (_ : Set.IsWf (support (x * y))) (_ : Set.Nonempty (support (x * y)))
Theorem: integral_exp_Iic
File: Mathlib/Analysis/SpecialFunctions/ImproperIntegrals.lean

tactic: refine'
  tendsto_nhds_unique
    (intervalIntegral_tendsto_integral_Iic _ (integrableOn_exp_Iic _) tendsto_id) _
state_before: c : ℝ
⊢ (∫ (x : ℝ) in Iic c, exp x) = exp c

tactic: simp_rw [integral_exp, show 𝓝 (exp c) = 𝓝 (exp c - 0) by rw [sub_zero]]
state_before: c : ℝ
⊢ Tendsto (fun i => ∫ (x : ℝ) in id i..c, exp x) atBot (𝓝 (exp c))

tactic: exact tendsto_exp_atBot.const_sub _
state_before: c : ℝ
⊢ Tendsto (fun i => exp c - exp (id i)) atBot (𝓝 (exp c - 0))

tactic: rw [sub_zero]
state_before: c : ℝ
⊢ 𝓝 (exp c) = 𝓝 (exp c - 0)
Theorem: IsROrC.smul_im
File: Mathlib/Data/IsROrC/Basic.lean

tactic: rw [real_smul_eq_coe_mul, ofReal_mul_im]
state_before: K : Type u_1
E : Type ?u.2153398
inst✝ : IsROrC K
r : ℝ
z : K
⊢ ↑im (r • z) = r * ↑im z
Theorem: Units.dvd_mul_left
File: Mathlib/Algebra/Divisibility/Units.lean

tactic: rw [mul_comm]
state_before: α : Type u_1
inst✝ : CommMonoid α
a b : α
u : αˣ
⊢ a ∣ ↑u * b ↔ a ∣ b

tactic: apply dvd_mul_right
state_before: α : Type u_1
inst✝ : CommMonoid α
a b : α
u : αˣ
⊢ a ∣ b * ↑u ↔ a ∣ b
Theorem: Int.bit_negSucc
File: Mathlib/Data/Int/Bitwise.lean

tactic: rw [bit_val, Nat.bit_val]
state_before: b : Bool
n : ℕ
⊢ bit b -[n+1] = -[Nat.bit (!b) n+1]

tactic: cases b <;> rfl
state_before: b : Bool
n : ℕ
⊢ (2 * -[n+1] + bif b then 1 else 0) = -[2 * n + bif !b then 1 else 0+1]