tasksource/leandojo huggingface dataset:
Theorem: Polynomial.trailingDegree_C_mul_X_pow
File: Mathlib/Data/Polynomial/Degree/TrailingDegree.lean

tactic: rw [C_mul_X_pow_eq_monomial, trailingDegree_monomial ha]
state_before: R : Type u
S : Type v
a b : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
n : ℕ
ha : a ≠ 0
⊢ trailingDegree (↑C a * X ^ n) = ↑n
Theorem: Finset.preimage_union
File: Mathlib/Data/Finset/Preimage.lean

tactic: simp
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
f : α → β
s t : Finset β
hst : InjOn f (f ⁻¹' ↑(s ∪ t))
⊢ ↑(preimage (s ∪ t) f hst) =
    ↑(preimage s f (_ : ∀ (x₁ : α), x₁ ∈ f ⁻¹' ↑s → ∀ (x₂ : α), x₂ ∈ f ⁻¹' ↑s → f x₁ = f x₂ → x₁ = x₂) ∪
        preimage t f (_ : ∀ (x₁ : α), x₁ ∈ f ⁻¹' ↑t → ∀ (x₂ : α), x₂ ∈ f ⁻¹' ↑t → f x₁ = f x₂ → x₁ = x₂))
Theorem: Part.map_map
File: Mathlib/Data/Part.lean

tactic: erw [← bind_some_eq_map, bind_map, bind_some_eq_map]
state_before: α : Type u_1
β : Type u_3
γ : Type u_2
g : β → γ
f : α → β
o : Part α
⊢ map g (map f o) = map (g ∘ f) o
Theorem: Nat.succ_mul_choose_eq
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: decide
state_before: ⊢ succ 0 * choose 0 0 = choose (succ 0) (succ 0) * succ 0

tactic: simp [choose]
state_before: k : ℕ
⊢ succ 0 * choose 0 (k + 1) = choose (succ 0) (succ (k + 1)) * succ (k + 1)

tactic: simp [choose, mul_succ, succ_eq_add_one, add_comm]
state_before: n : ℕ
⊢ succ (n + 1) * choose (n + 1) 0 = choose (succ (n + 1)) (succ 0) * succ 0

tactic: rw [choose_succ_succ (succ n) (succ k), add_mul, ← succ_mul_choose_eq n, mul_succ, ←
  succ_mul_choose_eq n, add_right_comm, ← mul_add, ← choose_succ_succ, ← succ_mul]
state_before: n k : ℕ
⊢ succ (n + 1) * choose (n + 1) (k + 1) = choose (succ (n + 1)) (succ (k + 1)) * succ (k + 1)
Theorem: List.get?_drop
File: Mathlib/Data/List/Basic.lean

tactic: ext
state_before: ι : Type ?u.214450
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ L : List α
i j : ℕ
⊢ get? (drop i L) j = get? L (i + j)

tactic: simp only [get?_eq_some, get_drop', Option.mem_def]
state_before: case a
ι : Type ?u.214450
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ L : List α
i j : ℕ
a✝ : α
⊢ a✝ ∈ get? (drop i L) j ↔ a✝ ∈ get? L (i + j)

tactic: constructor <;> exact fun ⟨h, ha⟩ => ⟨by simpa [lt_tsub_iff_left] using h, ha⟩
state_before: case a
ι : Type ?u.214450
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ L : List α
i j : ℕ
a✝ : α
⊢ (∃ h, get L { val := i + j, isLt := (_ : i + ↑{ val := j, isLt := (_ : j < length (drop i L)) } < length L) } = a✝) ↔
    ∃ h, get L { val := i + j, isLt := h } = a✝

tactic: simpa [lt_tsub_iff_left] using h
state_before: ι : Type ?u.214450
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ L : List α
i j : ℕ
a✝ : α
x✝ : ∃ h, get L { val := i + j, isLt := h } = a✝
h : i + j < length L
ha : get L { val := i + j, isLt := h } = a✝
⊢ j < length (drop i L)
Theorem: Nat.fib_add_two_sub_fib_add_one
File: Mathlib/Data/Nat/Fib.lean

tactic: rw [fib_add_two, add_tsub_cancel_right]
state_before: n : ℕ
⊢ fib (n + 2) - fib (n + 1) = fib n
Theorem: cauchy_iff
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: simp only [subset_def, Prod.forall, mem_prod_eq, and_imp, id, ball_mem_comm]
state_before: α : Type u
β : Type v
inst✝ : UniformSpace α
f : Filter α
⊢ (NeBot f ∧ ∀ (s : Set (α × α)), s ∈ 𝓤 α → ∃ t, t ∈ f ∧ ∀ (x : α), x ∈ t → ∀ (y : α), y ∈ t → (x, y) ∈ s) ↔
    NeBot f ∧ ∀ (s : Set (α × α)), s ∈ 𝓤 α → ∃ t, t ∈ f ∧ t ×ˢ t ⊆ s
Theorem: hasSum_sum_disjoint
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: simp_rw [hasSum_subtype_iff_indicator] at *
state_before: α : Type u_3
β : Type u_2
γ : Type ?u.254025
δ : Type ?u.254028
inst✝² : AddCommMonoid α
inst✝¹ : TopologicalSpace α
f g : β → α
a✝ b : α
s✝ : Finset β
inst✝ : ContinuousAdd α
ι : Type u_1
s : Finset ι
t : ι → Set β
a : ι → α
hs : Set.Pairwise (↑s) (Disjoint on t)
hf : ∀ (i : ι), i ∈ s → HasSum (f ∘ Subtype.val) (a i)
⊢ HasSum (f ∘ Subtype.val) (∑ i in s, a i)

tactic: rw [Set.indicator_finset_biUnion _ _ hs]
state_before: α : Type u_3
β : Type u_2
γ : Type ?u.254025
δ : Type ?u.254028
inst✝² : AddCommMonoid α
inst✝¹ : TopologicalSpace α
f g : β → α
a✝ b : α
s✝ : Finset β
inst✝ : ContinuousAdd α
ι : Type u_1
s : Finset ι
t : ι → Set β
a : ι → α
hs : Set.Pairwise (↑s) (Disjoint on t)
hf : ∀ (i : ι), i ∈ s → HasSum (Set.indicator (t i) f) (a i)
⊢ HasSum (Set.indicator (⋃ (i : ι) (_ : i ∈ s), t i) f) (∑ i in s, a i)

tactic: exact hasSum_sum hf
state_before: α : Type u_3
β : Type u_2
γ : Type ?u.254025
δ : Type ?u.254028
inst✝² : AddCommMonoid α
inst✝¹ : TopologicalSpace α
f g : β → α
a✝ b : α
s✝ : Finset β
inst✝ : ContinuousAdd α
ι : Type u_1
s : Finset ι
t : ι → Set β
a : ι → α
hs : Set.Pairwise (↑s) (Disjoint on t)
hf : ∀ (i : ι), i ∈ s → HasSum (Set.indicator (t i) f) (a i)
⊢ HasSum (fun a => ∑ i in s, Set.indicator (t i) f a) (∑ i in s, a i)
Theorem: SimpleGraph.neighborSet_snd_subgraphOfAdj
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: rw [subgraphOfAdj_symm hvw.symm]
state_before: ι : Sort ?u.223778
V : Type u
W : Type v
G : SimpleGraph V
G' : SimpleGraph W
v w : V
hvw : Adj G v w
⊢ Subgraph.neighborSet (subgraphOfAdj G hvw) w = {v}

tactic: exact neighborSet_fst_subgraphOfAdj hvw.symm
state_before: ι : Sort ?u.223778
V : Type u
W : Type v
G : SimpleGraph V
G' : SimpleGraph W
v w : V
hvw : Adj G v w
⊢ Subgraph.neighborSet (subgraphOfAdj G (_ : Adj G w v)) w = {v}
Theorem: Rat.le_toNNRat_iff_coe_le
File: Mathlib/Data/Rat/NNRat.lean

tactic: rw [← coe_le_coe, Rat.coe_toNNRat p hp]
state_before: p q✝ : ℚ
q : ℚ≥0
hp : 0 ≤ p
⊢ q ≤ toNNRat p ↔ ↑q ≤ p
Theorem: Complex.comap_exp_nhdsWithin_zero
File: Mathlib/Analysis/SpecialFunctions/Exp.lean

tactic: have : (exp ⁻¹' {0})ᶜ = Set.univ := eq_univ_of_forall exp_ne_zero
state_before: ⊢ comap exp (𝓝[{0}ᶜ] 0) = comap re atBot

tactic: simp [nhdsWithin, comap_exp_nhds_zero, this]
state_before: this : (exp ⁻¹' {0})ᶜ = Set.univ
⊢ comap exp (𝓝[{0}ᶜ] 0) = comap re atBot
Theorem: continuousSMul_sInf
File: Mathlib/Topology/Algebra/MulAction.lean

tactic: rw [← (@sInf_singleton _ _ ‹TopologicalSpace M›:)]
state_before: ι : Sort ?u.29067
M : Type u_2
X : Type u_1
inst✝¹ : TopologicalSpace M
inst✝ : SMul M X
ts : Set (TopologicalSpace X)
h : ∀ (t : TopologicalSpace X), t ∈ ts → ContinuousSMul M X
⊢ Continuous fun p => p.fst • p.snd

tactic: exact
  continuous_sInf_rng.2 fun t ht =>
    continuous_sInf_dom₂ (Eq.refl _) ht
      (@ContinuousSMul.continuous_smul _ _ _ _ t (h t ht))
state_before: ι : Sort ?u.29067
M : Type u_2
X : Type u_1
inst✝¹ : TopologicalSpace M
inst✝ : SMul M X
ts : Set (TopologicalSpace X)
h : ∀ (t : TopologicalSpace X), t ∈ ts → ContinuousSMul M X
⊢ Continuous fun p => p.fst • p.snd
Theorem: Int.gcd_neg_right
File: Mathlib/Data/Int/GCD.lean

tactic: rw [Int.gcd, Int.gcd, natAbs_neg]
state_before: x y : ℤ
⊢ gcd x (-y) = gcd x y
Theorem: Stream'.Seq1.bind_ret
File: Mathlib/Data/Seq/Seq.lean

tactic: dsimp [bind, map]
state_before: α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ bind (a, s) (ret ∘ f) = map f (a, s)

tactic: rw [map_comp, ret]
state_before: α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ join (ret (f a), Seq.map (ret ∘ f) s) = (f a, Seq.map f s)

tactic: simp
state_before: α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Seq α
⊢ join ((f a, nil), Seq.map ret (Seq.map f s)) = (f a, Seq.map f s)
Theorem: Real.volume_preimage_mul_left
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: rw [map_volume_mul_left h]
state_before: ι : Type ?u.2206531
inst✝ : Fintype ι
a : ℝ
h : a ≠ 0
s : Set ℝ
⊢ ↑↑(Measure.map (fun x => a * x) volume) s = ofReal (abs a⁻¹) * ↑↑volume s

tactic: rfl
state_before: ι : Type ?u.2206531
inst✝ : Fintype ι
a : ℝ
h : a ≠ 0
s : Set ℝ
⊢ ↑↑(ofReal (abs a⁻¹) • volume) s = ofReal (abs a⁻¹) * ↑↑volume s
Theorem: NormedAddGroupHom.ext_iff
File: Mathlib/Analysis/Normed/Group/Hom.lean

tactic: rintro rfl x
state_before: V : Type ?u.110454
V₁ : Type u_1
V₂ : Type u_2
V₃ : Type ?u.110463
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
⊢ f = g → ∀ (x : V₁), ↑f x = ↑g x

tactic: rfl
state_before: V : Type ?u.110454
V₁ : Type u_1
V₂ : Type u_2
V₃ : Type ?u.110463
inst✝³ : SeminormedAddCommGroup V
inst✝² : SeminormedAddCommGroup V₁
inst✝¹ : SeminormedAddCommGroup V₂
inst✝ : SeminormedAddCommGroup V₃
f : NormedAddGroupHom V₁ V₂
x : V₁
⊢ ↑f x = ↑f x
Theorem: Filter.eventually_smallSets_eventually
File: Mathlib/Order/Filter/SmallSets.lean

tactic: simp only [eventually_iff_exists_mem]
state_before: α : Type u_1
β : Type ?u.4511
ι : Sort ?u.4514
l l' la : Filter α
lb : Filter β
p : α → Prop
⊢ (∃ s, s ∈ l ∧ ∀ᶠ (x : α) in l', x ∈ s → p x) ↔ ∃ s, s ∈ l ∧ ∃ t, t ∈ l' ∧ ∀ (x : α), x ∈ t → x ∈ s → p x

tactic: simp only [eventually_inf, and_comm, mem_inter_iff, ← and_imp]
state_before: α : Type u_1
β : Type ?u.4511
ι : Sort ?u.4514
l l' la : Filter α
lb : Filter β
p : α → Prop
⊢ (∃ s, s ∈ l ∧ ∃ t, t ∈ l' ∧ ∀ (x : α), x ∈ t → x ∈ s → p x) ↔ ∀ᶠ (x : α) in l ⊓ l', p x
Theorem: MeasureTheory.lintegral_countable
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [biUnion_of_singleton]
state_before: α : Type u_1
β : Type ?u.1730339
γ : Type ?u.1730342
δ : Type ?u.1730345
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
s : Set α
hs : Set.Countable s
⊢ (∫⁻ (a : α) in s, f a ∂μ) = ∫⁻ (a : α) in ⋃ (x : α) (_ : x ∈ s), {x}, f a ∂μ

tactic: simp only [lintegral_singleton]
state_before: α : Type u_1
β : Type ?u.1730339
γ : Type ?u.1730342
δ : Type ?u.1730345
m : MeasurableSpace α
μ ν : Measure α
inst✝ : MeasurableSingletonClass α
f : α → ℝ≥0∞
s : Set α
hs : Set.Countable s
⊢ (∑' (a : ↑s), ∫⁻ (x : α) in {↑a}, f x ∂μ) = ∑' (a : ↑s), f ↑a * ↑↑μ {↑a}
Theorem: FreeGroup.Red.Step.invRev
File: Mathlib/GroupTheory/FreeGroup.lean

tactic: cases' h with a b x y
state_before: α : Type u
L L₁✝ L₂✝ L₃ L₄ L₁ L₂ : List (α × Bool)
h : Step L₁ L₂
⊢ Step (FreeGroup.invRev L₁) (FreeGroup.invRev L₂)

tactic: simp [FreeGroup.invRev]
state_before: case not
α : Type u
L L₁ L₂ L₃ L₄ a b : List (α × Bool)
x : α
y : Bool
⊢ Step (FreeGroup.invRev (a ++ (x, y) :: (x, !y) :: b)) (FreeGroup.invRev (a ++ b))
Theorem: Commute.sq_sub_sq
File: Mathlib/Algebra/GroupPower/Ring.lean

tactic: rw [sq, sq, h.mul_self_sub_mul_self_eq]
state_before: R : Type u_1
S : Type ?u.117642
M : Type ?u.117645
inst✝ : Ring R
a b : R
h : Commute a b
⊢ a ^ 2 - b ^ 2 = (a + b) * (a - b)
Theorem: Complex.cos_add_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simp [cos_add]
state_before: x : ℂ
⊢ cos (x + ↑π / 2) = -sin x
Theorem: Ordinal.opow_succ
File: Mathlib/SetTheory/Ordinal/Exponential.lean

tactic: subst a
state_before: a b : Ordinal
h : a = 0
⊢ a ^ succ b = a ^ b * a

tactic: simp only [zero_opow (succ_ne_zero _), mul_zero]
state_before: b : Ordinal
⊢ 0 ^ succ b = 0 ^ b * 0

tactic: simp only [opow_def, limitRecOn_succ, if_neg h]
state_before: a b : Ordinal
h : ¬a = 0
⊢ a ^ succ b = a ^ b * a
Theorem: BilinForm.congr_symm
File: Mathlib/LinearAlgebra/BilinearForm.lean

tactic: ext
state_before: R : Type ?u.598553
M : Type ?u.598556
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.598592
M₁ : Type ?u.598595
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type u_2
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.599394
M₃ : Type ?u.599397
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.599985
K : Type ?u.599988
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type u_3
M₂'' : Type ?u.601205
inst✝³ : AddCommMonoid M₂'
inst✝² : AddCommMonoid M₂''
inst✝¹ : Module R₂ M₂'
inst✝ : Module R₂ M₂''
e : M₂ ≃ₗ[R₂] M₂'
⊢ LinearEquiv.symm (congr e) = congr (LinearEquiv.symm e)

tactic: simp only [congr_apply, LinearEquiv.symm_symm]
state_before: case h.H
R : Type ?u.598553
M : Type ?u.598556
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.598592
M₁ : Type ?u.598595
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type u_2
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.599394
M₃ : Type ?u.599397
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.599985
K : Type ?u.599988
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type u_3
M₂'' : Type ?u.601205
inst✝³ : AddCommMonoid M₂'
inst✝² : AddCommMonoid M₂''
inst✝¹ : Module R₂ M₂'
inst✝ : Module R₂ M₂''
e : M₂ ≃ₗ[R₂] M₂'
x✝¹ : BilinForm R₂ M₂'
x✝ y✝ : M₂
⊢ bilin (↑(LinearEquiv.symm (congr e)) x✝¹) x✝ y✝ = bilin (↑(congr (LinearEquiv.symm e)) x✝¹) x✝ y✝

tactic: rfl
state_before: case h.H
R : Type ?u.598553
M : Type ?u.598556
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M
inst✝¹⁶ : Module R M
R₁ : Type ?u.598592
M₁ : Type ?u.598595
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_1
M₂ : Type u_2
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.599394
M₃ : Type ?u.599397
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.599985
K : Type ?u.599988
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
M₂' : Type u_3
M₂'' : Type ?u.601205
inst✝³ : AddCommMonoid M₂'
inst✝² : AddCommMonoid M₂''
inst✝¹ : Module R₂ M₂'
inst✝ : Module R₂ M₂''
e : M₂ ≃ₗ[R₂] M₂'
x✝¹ : BilinForm R₂ M₂'
x✝ y✝ : M₂
⊢ bilin (↑(LinearEquiv.symm (congr e)) x✝¹) x✝ y✝ = bilin x✝¹ (↑e x✝) (↑e y✝)
Theorem: Fin.max_val
File: Mathlib/Data/Fin/Basic.lean

tactic: simp
state_before: n m : ℕ
a : Fin n
⊢ max (↑a) n = n
Theorem: NeZero.not_char_dvd
File: Mathlib/Algebra/CharP/Basic.lean

tactic: rwa [← CharP.cast_eq_zero_iff R p k, ← Ne.def, ← neZero_iff]
state_before: R : Type u_1
inst✝¹ : AddMonoidWithOne R
r : R
n p✝ : ℕ
a : ℕ+
p : ℕ
inst✝ : CharP R p
k : ℕ
h : NeZero ↑k
⊢ ¬p ∣ k
Theorem: finrank_eq_one_iff_of_nonzero'
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: rw [finrank_eq_one_iff_of_nonzero v nz]
state_before: K : Type u
V : Type v
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : V
nz : v ≠ 0
⊢ finrank K V = 1 ↔ ∀ (w : V), ∃ c, c • v = w

tactic: apply span_singleton_eq_top_iff
state_before: K : Type u
V : Type v
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : V
nz : v ≠ 0
⊢ span K {v} = ⊤ ↔ ∀ (w : V), ∃ c, c • v = w
Theorem: List.filterMap_some
File: Std/Data/List/Lemmas.lean

tactic: erw [filterMap_eq_map, map_id]
state_before: α : Type u_1
l : List α
⊢ filterMap some l = l
Theorem: LinearMap.range_le_iff_comap
File: Mathlib/LinearAlgebra/Basic.lean

tactic: rw [range_eq_map, map_le_iff_le_comap, eq_top_iff]
state_before: R : Type u_1
R₁ : Type ?u.1095879
R₂ : Type u_2
R₃ : Type ?u.1095885
R₄ : Type ?u.1095888
S : Type ?u.1095891
K : Type ?u.1095894
K₂ : Type ?u.1095897
M : Type u_4
M' : Type ?u.1095903
M₁ : Type ?u.1095906
M₂ : Type u_3
M₃ : Type ?u.1095912
M₄ : Type ?u.1095915
N : Type ?u.1095918
N₂ : Type ?u.1095921
ι : Type ?u.1095924
V : Type ?u.1095927
V₂ : Type ?u.1095930
inst✝¹¹ : Semiring R
inst✝¹⁰ : Semiring R₂
inst✝⁹ : Semiring R₃
inst✝⁸ : AddCommMonoid M
inst✝⁷ : AddCommMonoid M₂
inst✝⁶ : AddCommMonoid M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
inst✝⁵ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝⁴ : Module R M
inst✝³ : Module R₂ M₂
inst✝² : Module R₃ M₃
σ₂₁ : R₂ →+* R
τ₁₂ : R →+* R₂
τ₂₃ : R₂ →+* R₃
τ₁₃ : R →+* R₃
inst✝¹ : RingHomCompTriple τ₁₂ τ₂₃ τ₁₃
F : Type u_5
sc : SemilinearMapClass F τ₁₂ M M₂
inst✝ : RingHomSurjective τ₁₂
f : F
p : Submodule R₂ M₂
⊢ range f ≤ p ↔ comap f p = ⊤
Theorem: NNReal.pi_pos
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: exact_mod_cast Real.pi_pos
state_before: ⊢ 0 < pi
Theorem: Complex.eq_of_isMaxOn_of_ball_subset
File: Mathlib/Analysis/Complex/AbsMax.lean

tactic: simp only [H₂, SameRay.rfl.norm_add, H₁]
state_before: E : Type u
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
F : Type v
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℂ F
inst✝ : StrictConvexSpace ℝ F
f : E → F
s : Set E
z w : E
hd : DiffContOnCl ℂ f s
hz : IsMaxOn (norm ∘ f) s z
hsub : ball z (dist w z) ⊆ s
H₁ : ‖f w‖ = ‖f z‖
H₂ : ‖f w + f z‖ = ‖f z + f z‖
⊢ ‖f w + f z‖ = ‖f w‖ + ‖f z‖
Theorem: FreeAlgebra.star_ι
File: Mathlib/Algebra/Star/Free.lean

tactic: simp [star, Star.star]
state_before: R : Type u_1
inst✝ : CommSemiring R
X : Type u_2
x : X
⊢ star (ι R x) = ι R x
Theorem: List.drop_eq_nil_iff_le
File: Mathlib/Data/List/Basic.lean

tactic: refine' ⟨fun h => _, drop_eq_nil_of_le⟩
state_before: ι : Type ?u.198909
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l : List α
k : ℕ
⊢ drop k l = [] ↔ length l ≤ k

tactic: induction' k with k hk generalizing l
state_before: ι : Type ?u.198909
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l : List α
k : ℕ
h : drop k l = []
⊢ length l ≤ k

tactic: simp only [drop] at h
state_before: case zero
ι : Type ?u.198909
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l✝ : List α
k : ℕ
h✝ : drop k l✝ = []
l : List α
h : drop zero l = []
⊢ length l ≤ zero

tactic: simp [h]
state_before: case zero
ι : Type ?u.198909
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l✝ : List α
k : ℕ
h✝ : drop k l✝ = []
l : List α
h : l = []
⊢ length l ≤ zero

tactic: cases l
state_before: case succ
ι : Type ?u.198909
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l✝ : List α
k✝ : ℕ
h✝ : drop k✝ l✝ = []
k : ℕ
hk : ∀ {l : List α}, drop k l = [] → length l ≤ k
l : List α
h : drop (succ k) l = []
⊢ length l ≤ succ k

tactic: simp
state_before: case succ.nil
ι : Type ?u.198909
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l : List α
k✝ : ℕ
h✝ : drop k✝ l = []
k : ℕ
hk : ∀ {l : List α}, drop k l = [] → length l ≤ k
h : drop (succ k) [] = []
⊢ length [] ≤ succ k

tactic: simp only [drop] at h
state_before: case succ.cons
ι : Type ?u.198909
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l : List α
k✝ : ℕ
h✝ : drop k✝ l = []
k : ℕ
hk : ∀ {l : List α}, drop k l = [] → length l ≤ k
head✝ : α
tail✝ : List α
h : drop (succ k) (head✝ :: tail✝) = []
⊢ length (head✝ :: tail✝) ≤ succ k

tactic: simpa [Nat.succ_le_succ_iff] using hk h
state_before: case succ.cons
ι : Type ?u.198909
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l : List α
k✝ : ℕ
h✝ : drop k✝ l = []
k : ℕ
hk : ∀ {l : List α}, drop k l = [] → length l ≤ k
head✝ : α
tail✝ : List α
h : drop k tail✝ = []
⊢ length (head✝ :: tail✝) ≤ succ k
Theorem: pochhammer_succ_eval
File: Mathlib/RingTheory/Polynomial/Pochhammer.lean

tactic: rw [pochhammer_succ_right, mul_add, eval_add, eval_mul_X, ← Nat.cast_comm, ← C_eq_nat_cast,
  eval_C_mul, Nat.cast_comm, ← mul_add]
state_before: S✝ : Type u
inst✝¹ : Semiring S✝
S : Type u_1
inst✝ : Semiring S
n : ℕ
k : S
⊢ eval k (pochhammer S (n + 1)) = eval k (pochhammer S n) * (k + ↑n)
Theorem: CategoryTheory.Limits.prodComparison_natural
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

tactic: rw [prodComparison, prodComparison, prod.lift_map, ← F.map_comp, ← F.map_comp, prod.comp_lift, ←
  F.map_comp, prod.map_fst, ← F.map_comp, prod.map_snd]
state_before: C : Type u
inst✝⁵ : Category C
X Y : C
D : Type u₂
inst✝⁴ : Category D
F : C ⥤ D
A A' B B' : C
inst✝³ : HasBinaryProduct A B
inst✝² : HasBinaryProduct A' B'
inst✝¹ : HasBinaryProduct (F.obj A) (F.obj B)
inst✝ : HasBinaryProduct (F.obj A') (F.obj B')
f : A ⟶ A'
g : B ⟶ B'
⊢ F.map (prod.map f g) ≫ prodComparison F A' B' = prodComparison F A B ≫ prod.map (F.map f) (F.map g)
Theorem: MeasureTheory.AEEqFun.comp₂Measurable_eq_mk
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

tactic: rw [comp₂Measurable_eq_pair, pair_eq_mk, compMeasurable_mk]
state_before: α : Type u_4
β : Type u_2
γ : Type u_1
δ : Type u_3
inst✝¹⁵ : MeasurableSpace α
μ ν : Measure α
inst✝¹⁴ : TopologicalSpace β
inst✝¹³ : TopologicalSpace γ
inst✝¹² : TopologicalSpace δ
inst✝¹¹ : MeasurableSpace β
inst✝¹⁰ : PseudoMetrizableSpace β
inst✝⁹ : BorelSpace β
inst✝⁸ : SecondCountableTopology β
inst✝⁷ : MeasurableSpace γ
inst✝⁶ : PseudoMetrizableSpace γ
inst✝⁵ : BorelSpace γ
inst✝⁴ : SecondCountableTopology γ
inst✝³ : MeasurableSpace δ
inst✝² : PseudoMetrizableSpace δ
inst✝¹ : OpensMeasurableSpace δ
inst✝ : SecondCountableTopology δ
g : β → γ → δ
hg : Measurable (uncurry g)
f₁ : α →ₘ[μ] β
f₂ : α →ₘ[μ] γ
⊢ comp₂Measurable g hg f₁ f₂ =
    mk (fun a => g (↑f₁ a) (↑f₂ a)) (_ : AEStronglyMeasurable (uncurry g ∘ fun x => (↑f₁ x, ↑f₂ x)) μ)

tactic: rfl
state_before: α : Type u_4
β : Type u_2
γ : Type u_1
δ : Type u_3
inst✝¹⁵ : MeasurableSpace α
μ ν : Measure α
inst✝¹⁴ : TopologicalSpace β
inst✝¹³ : TopologicalSpace γ
inst✝¹² : TopologicalSpace δ
inst✝¹¹ : MeasurableSpace β
inst✝¹⁰ : PseudoMetrizableSpace β
inst✝⁹ : BorelSpace β
inst✝⁸ : SecondCountableTopology β
inst✝⁷ : MeasurableSpace γ
inst✝⁶ : PseudoMetrizableSpace γ
inst✝⁵ : BorelSpace γ
inst✝⁴ : SecondCountableTopology γ
inst✝³ : MeasurableSpace δ
inst✝² : PseudoMetrizableSpace δ
inst✝¹ : OpensMeasurableSpace δ
inst✝ : SecondCountableTopology δ
g : β → γ → δ
hg : Measurable (uncurry g)
f₁ : α →ₘ[μ] β
f₂ : α →ₘ[μ] γ
⊢ mk (uncurry g ∘ fun x => (↑f₁ x, ↑f₂ x)) (_ : AEStronglyMeasurable (uncurry g ∘ fun x => (↑f₁ x, ↑f₂ x)) μ) =
    mk (fun a => g (↑f₁ a) (↑f₂ a)) (_ : AEStronglyMeasurable (uncurry g ∘ fun x => (↑f₁ x, ↑f₂ x)) μ)
Theorem: NormedField.exists_lt_nnnorm_lt
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: exact_mod_cast exists_lt_norm_lt α r₁.prop h
state_before: α : Type u_1
β : Type ?u.377356
γ : Type ?u.377359
ι : Type ?u.377362
inst✝ : DenselyNormedField α
r₁ r₂ : ℝ≥0
h : r₁ < r₂
⊢ ∃ x, r₁ < ‖x‖₊ ∧ ‖x‖₊ < r₂
Theorem: List.bind_eq_nil
File: Mathlib/Data/List/Join.lean

tactic: simp only [mem_map, forall_exists_index, and_imp, forall_apply_eq_imp_iff₂]
state_before: α : Type u_1
β : Type u_2
l : List α
f : α → List β
⊢ (∀ (l_1 : List β), l_1 ∈ map f l → l_1 = []) ↔ ∀ (x : α), x ∈ l → f x = []