tasksource/leandojo huggingface dataset:
Theorem: Associates.factors'_cong
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: obtain rfl | hb := eq_or_ne b 0
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a b : α
h : a ~ᵤ b
⊢ factors' a = factors' b

tactic: have ha : a ≠ 0 := by
  contrapose! hb with ha
  rw [← associated_zero_iff_eq_zero, ← ha]
  exact h.symm
state_before: case inr
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a b : α
h : a ~ᵤ b
hb : b ≠ 0
⊢ factors' a = factors' b

tactic: rw [← Multiset.map_eq_map Subtype.coe_injective, map_subtype_coe_factors',
  map_subtype_coe_factors', ← rel_associated_iff_map_eq_map]
state_before: case inr
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a b : α
h : a ~ᵤ b
hb : b ≠ 0
ha : a ≠ 0
⊢ factors' a = factors' b

tactic: exact
  factors_unique irreducible_of_factor irreducible_of_factor
    ((factors_prod ha).trans <| h.trans <| (factors_prod hb).symm)
state_before: case inr
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a b : α
h : a ~ᵤ b
hb : b ≠ 0
ha : a ≠ 0
⊢ Rel Associated (factors a) (factors b)

tactic: rw [associated_zero_iff_eq_zero] at h
state_before: case inl
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a : α
h : a ~ᵤ 0
⊢ factors' a = factors' 0

tactic: rw [h]
state_before: case inl
α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a : α
h : a = 0
⊢ factors' a = factors' 0

tactic: contrapose! hb with ha
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a b : α
h : a ~ᵤ b
hb : b ≠ 0
⊢ a ≠ 0

tactic: rw [← associated_zero_iff_eq_zero, ← ha]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a b : α
h : a ~ᵤ b
ha : a = 0
⊢ b = 0

tactic: exact h.symm
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a b : α
h : a ~ᵤ b
ha : a = 0
⊢ b ~ᵤ a
Theorem: Matrix.toBilin'_comp
File: Mathlib/LinearAlgebra/Matrix/BilinearForm.lean

tactic: simp only [BilinForm.toMatrix'_comp, BilinForm.toMatrix'_toBilin', toMatrix'_toLin']
state_before: R : Type ?u.971905
M✝ : Type ?u.971908
inst✝¹⁸ : Semiring R
inst✝¹⁷ : AddCommMonoid M✝
inst✝¹⁶ : Module R M✝
R₁ : Type ?u.971944
M₁ : Type ?u.971947
inst✝¹⁵ : Ring R₁
inst✝¹⁴ : AddCommGroup M₁
inst✝¹³ : Module R₁ M₁
R₂ : Type u_2
M₂ : Type ?u.972559
inst✝¹² : CommSemiring R₂
inst✝¹¹ : AddCommMonoid M₂
inst✝¹⁰ : Module R₂ M₂
R₃ : Type ?u.972746
M₃ : Type ?u.972749
inst✝⁹ : CommRing R₃
inst✝⁸ : AddCommGroup M₃
inst✝⁷ : Module R₃ M₃
V : Type ?u.973337
K : Type ?u.973340
inst✝⁶ : Field K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
B : BilinForm R M✝
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_1
o : Type u_3
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : DecidableEq n
inst✝ : DecidableEq o
M : Matrix n n R₂
P Q : Matrix n o R₂
⊢ ↑BilinForm.toMatrix' (BilinForm.comp (↑toBilin' M) (↑toLin' P) (↑toLin' Q)) =
    ↑BilinForm.toMatrix' (↑toBilin' (Pᵀ ⬝ M ⬝ Q))
Theorem: SimpleGraph.Walk.map_eq_of_eq
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: subst_vars
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
f✝ : G →g G'
f'✝ : G' →g G''
u v u' v' : V
p : Walk G u v
f f' : G →g G'
h : f = f'
⊢ Walk.map f p = Walk.copy (Walk.map f' p) (_ : ↑f' u = ↑f u) (_ : ↑f' v = ↑f v)

tactic: rfl
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
f : G →g G'
f'✝ : G' →g G''
u v u' v' : V
p : Walk G u v
f' : G →g G'
⊢ Walk.map f' p = Walk.copy (Walk.map f' p) (_ : ↑f' u = ↑f' u) (_ : ↑f' v = ↑f' v)
Theorem: ContinuousMap.continuous_curry'
File: Mathlib/Topology/CompactOpen.lean

tactic: ext
state_before: α : Type u_2
β : Type u_1
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : C(α × β, γ)
⊢ curry' f = comp f ∘ coev β α

tactic: rfl
state_before: case h.h
α : Type u_2
β : Type u_1
γ : Type u_3
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
f : C(α × β, γ)
x✝ : α
a✝ : β
⊢ ↑(curry' f x✝) a✝ = ↑((comp f ∘ coev β α) x✝) a✝
Theorem: Complex.arg_one
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: simp [arg, zero_le_one]
state_before: ⊢ arg 1 = 0
Theorem: CartanMatrix.Relations.adE_of_eq_eq_zero
File: Mathlib/Algebra/Lie/CartanMatrix.lean

tactic: have h' : (-2 : ℤ).toNat = 0 := by rfl
state_before: R : Type u
B : Type v
inst✝² : CommRing R
inst✝¹ : DecidableEq B
inst✝ : Fintype B
A : Matrix B B ℤ
i : B
h : A i i = 2
⊢ adE R A (i, i) = 0

tactic: simp [adE, h, h']
state_before: R : Type u
B : Type v
inst✝² : CommRing R
inst✝¹ : DecidableEq B
inst✝ : Fintype B
A : Matrix B B ℤ
i : B
h : A i i = 2
h' : Int.toNat (-2) = 0
⊢ adE R A (i, i) = 0

tactic: rfl
state_before: R : Type u
B : Type v
inst✝² : CommRing R
inst✝¹ : DecidableEq B
inst✝ : Fintype B
A : Matrix B B ℤ
i : B
h : A i i = 2
⊢ Int.toNat (-2) = 0
Theorem: Set.div_mem_centralizer
File: Mathlib/GroupTheory/Subsemigroup/Centralizer.lean

tactic: rw [div_eq_mul_inv]
state_before: M : Type u_1
S T : Set M
a b : M
inst✝ : Group M
ha : a ∈ centralizer S
hb : b ∈ centralizer S
⊢ a / b ∈ centralizer S

tactic: exact mul_mem_centralizer ha (inv_mem_centralizer hb)
state_before: M : Type u_1
S T : Set M
a b : M
inst✝ : Group M
ha : a ∈ centralizer S
hb : b ∈ centralizer S
⊢ a * b⁻¹ ∈ centralizer S
Theorem: EuclideanGeometry.dist_reflection_eq_of_mem
File: Mathlib/Geometry/Euclidean/Basic.lean

tactic: rw [← reflection_eq_self_iff p₁] at hp₁
state_before: V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty { x // x ∈ s }
inst✝ : CompleteSpace { x // x ∈ direction s }
p₁ : P
hp₁ : p₁ ∈ s
p₂ : P
⊢ dist p₁ (↑(reflection s) p₂) = dist p₁ p₂

tactic: convert(reflection s).dist_map p₁ p₂
state_before: V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty { x // x ∈ s }
inst✝ : CompleteSpace { x // x ∈ direction s }
p₁ : P
hp₁✝ : p₁ ∈ s
hp₁ : ↑(reflection s) p₁ = p₁
p₂ : P
⊢ dist p₁ (↑(reflection s) p₂) = dist p₁ p₂

tactic: rw [hp₁]
state_before: case h.e'_2.h.e'_3
V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty { x // x ∈ s }
inst✝ : CompleteSpace { x // x ∈ direction s }
p₁ : P
hp₁✝ : p₁ ∈ s
hp₁ : ↑(reflection s) p₁ = p₁
p₂ : P
⊢ p₁ = ↑(reflection s) p₁
Theorem: MeasureTheory.lintegral_eq_lintegral_meas_le
File: Mathlib/MeasureTheory/Integral/Layercake.lean

tactic: set cst := fun t : ℝ => (1 : ℝ)
state_before: α : Type u_1
inst✝¹ : MeasurableSpace α
f : α → ℝ
g : ℝ → ℝ
s : Set α
μ : Measure α
inst✝ : SigmaFinite μ
f_nn : 0 ≤ f
f_mble : Measurable f
⊢ (∫⁻ (ω : α), ENNReal.ofReal (f ω) ∂μ) = ∫⁻ (t : ℝ) in Ioi 0, ↑↑μ {a | t ≤ f a}

tactic: have cst_intble : ∀ t > 0, IntervalIntegrable cst volume 0 t := fun _ _ =>
  intervalIntegrable_const
state_before: α : Type u_1
inst✝¹ : MeasurableSpace α
f : α → ℝ
g : ℝ → ℝ
s : Set α
μ : Measure α
inst✝ : SigmaFinite μ
f_nn : 0 ≤ f
f_mble : Measurable f
cst : ℝ → ℝ := fun t => 1
⊢ (∫⁻ (ω : α), ENNReal.ofReal (f ω) ∂μ) = ∫⁻ (t : ℝ) in Ioi 0, ↑↑μ {a | t ≤ f a}

tactic: have key :=
  lintegral_comp_eq_lintegral_meas_le_mul μ f_nn f_mble cst_intble
    (eventually_of_forall fun _ => zero_le_one)
state_before: α : Type u_1
inst✝¹ : MeasurableSpace α
f : α → ℝ
g : ℝ → ℝ
s : Set α
μ : Measure α
inst✝ : SigmaFinite μ
f_nn : 0 ≤ f
f_mble : Measurable f
cst : ℝ → ℝ := fun t => 1
cst_intble : ∀ (t : ℝ), t > 0 → IntervalIntegrable cst volume 0 t
⊢ (∫⁻ (ω : α), ENNReal.ofReal (f ω) ∂μ) = ∫⁻ (t : ℝ) in Ioi 0, ↑↑μ {a | t ≤ f a}

tactic: simp_rw [ENNReal.ofReal_one, mul_one] at key
state_before: α : Type u_1
inst✝¹ : MeasurableSpace α
f : α → ℝ
g : ℝ → ℝ
s : Set α
μ : Measure α
inst✝ : SigmaFinite μ
f_nn : 0 ≤ f
f_mble : Measurable f
cst : ℝ → ℝ := fun t => 1
cst_intble : ∀ (t : ℝ), t > 0 → IntervalIntegrable cst volume 0 t
key :
  (∫⁻ (ω : α), ENNReal.ofReal (∫ (t : ℝ) in 0 ..f ω, cst t) ∂μ) =
    ∫⁻ (t : ℝ) in Ioi 0, ↑↑μ {a | t ≤ f a} * ENNReal.ofReal (cst t)
⊢ (∫⁻ (ω : α), ENNReal.ofReal (f ω) ∂μ) = ∫⁻ (t : ℝ) in Ioi 0, ↑↑μ {a | t ≤ f a}

tactic: rw [← key]
state_before: α : Type u_1
inst✝¹ : MeasurableSpace α
f : α → ℝ
g : ℝ → ℝ
s : Set α
μ : Measure α
inst✝ : SigmaFinite μ
f_nn : 0 ≤ f
f_mble : Measurable f
cst : ℝ → ℝ := fun t => 1
cst_intble : ∀ (t : ℝ), t > 0 → IntervalIntegrable cst volume 0 t
key : (∫⁻ (ω : α), ENNReal.ofReal (∫ (t : ℝ) in 0 ..f ω, 1) ∂μ) = ∫⁻ (t : ℝ) in Ioi 0, ↑↑μ {a | t ≤ f a}
⊢ (∫⁻ (ω : α), ENNReal.ofReal (f ω) ∂μ) = ∫⁻ (t : ℝ) in Ioi 0, ↑↑μ {a | t ≤ f a}

tactic: congr with ω
state_before: α : Type u_1
inst✝¹ : MeasurableSpace α
f : α → ℝ
g : ℝ → ℝ
s : Set α
μ : Measure α
inst✝ : SigmaFinite μ
f_nn : 0 ≤ f
f_mble : Measurable f
cst : ℝ → ℝ := fun t => 1
cst_intble : ∀ (t : ℝ), t > 0 → IntervalIntegrable cst volume 0 t
key : (∫⁻ (ω : α), ENNReal.ofReal (∫ (t : ℝ) in 0 ..f ω, 1) ∂μ) = ∫⁻ (t : ℝ) in Ioi 0, ↑↑μ {a | t ≤ f a}
⊢ (∫⁻ (ω : α), ENNReal.ofReal (f ω) ∂μ) = ∫⁻ (ω : α), ENNReal.ofReal (∫ (t : ℝ) in 0 ..f ω, 1) ∂μ

tactic: simp only [intervalIntegral.integral_const, sub_zero, Algebra.id.smul_eq_mul, mul_one]
state_before: case e_f.h
α : Type u_1
inst✝¹ : MeasurableSpace α
f : α → ℝ
g : ℝ → ℝ
s : Set α
μ : Measure α
inst✝ : SigmaFinite μ
f_nn : 0 ≤ f
f_mble : Measurable f
cst : ℝ → ℝ := fun t => 1
cst_intble : ∀ (t : ℝ), t > 0 → IntervalIntegrable cst volume 0 t
key : (∫⁻ (ω : α), ENNReal.ofReal (∫ (t : ℝ) in 0 ..f ω, 1) ∂μ) = ∫⁻ (t : ℝ) in Ioi 0, ↑↑μ {a | t ≤ f a}
ω : α
⊢ ENNReal.ofReal (f ω) = ENNReal.ofReal (∫ (t : ℝ) in 0 ..f ω, 1)
Theorem: midpoint_comm
File: Mathlib/LinearAlgebra/AffineSpace/Midpoint.lean

tactic: rw [midpoint, ← lineMap_apply_one_sub, one_sub_invOf_two, midpoint]
state_before: R : Type u_2
V : Type u_3
V' : Type ?u.23288
P : Type u_1
P' : Type ?u.23294
inst✝⁷ : Ring R
inst✝⁶ : Invertible 2
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x✝ y✝ z x y : P
⊢ midpoint R x y = midpoint R y x
Theorem: AddLECancellable.tsub_tsub_tsub_cancel_left
File: Mathlib/Algebra/Order/Sub/Canonical.lean

tactic: rw [tsub_right_comm, hab.tsub_tsub_cancel_of_le h]
state_before: α : Type u_1
inst✝⁵ : AddCommSemigroup α
inst✝⁴ : PartialOrder α
inst✝³ : ExistsAddOfLE α
inst✝² : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
hab : AddLECancellable (a - b)
h : b ≤ a
⊢ a - c - (a - b) = b - c
Theorem: ih_0
File: Mathlib/NumberTheory/Padics/Hensel.lean

tactic: simp [T_def, mul_div_cancel' _ (ne_of_gt (deriv_sq_norm_pos hnorm))]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (↑Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
⊢ ‖Polynomial.eval a F‖ ≤ ‖Polynomial.eval a (↑Polynomial.derivative F)‖ ^ 2 * T_gen p F a ^ 2 ^ 0
Theorem: List.eq_replicate_of_mem
File: Std/Data/List/Lemmas.lean

tactic: let ⟨rfl, H₂⟩ := forall_mem_cons.1 H
state_before: α : Type u_1
a b : α
l : List α
H : ∀ (b_1 : α), b_1 ∈ b :: l → b_1 = a
⊢ b :: l = replicate (length (b :: l)) a

tactic: rw [length_cons, replicate, ← eq_replicate_of_mem H₂]
state_before: α : Type u_1
b : α
l : List α
H₂ : ∀ (x : α), x ∈ l → x = b
H : ∀ (b_1 : α), b_1 ∈ b :: l → b_1 = b
⊢ b :: l = replicate (length (b :: l)) b
Theorem: Set.EqOn.of_subset_closure
File: Mathlib/Topology/Separation.lean

tactic: intro x hx
state_before: α : Type u
β : Type v
inst✝³ : TopologicalSpace α
γ : Type ?u.126302
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : T2Space α
s t : Set β
f g : β → α
h : EqOn f g s
hf : ContinuousOn f t
hg : ContinuousOn g t
hst : s ⊆ t
hts : t ⊆ closure s
⊢ EqOn f g t

tactic: have : (𝓝[s] x).NeBot := mem_closure_iff_clusterPt.mp (hts hx)
state_before: α : Type u
β : Type v
inst✝³ : TopologicalSpace α
γ : Type ?u.126302
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : T2Space α
s t : Set β
f g : β → α
h : EqOn f g s
hf : ContinuousOn f t
hg : ContinuousOn g t
hst : s ⊆ t
hts : t ⊆ closure s
x : β
hx : x ∈ t
⊢ f x = g x

tactic: exact
  tendsto_nhds_unique_of_eventuallyEq ((hf x hx).mono_left <| nhdsWithin_mono _ hst)
    ((hg x hx).mono_left <| nhdsWithin_mono _ hst) (h.eventuallyEq_of_mem self_mem_nhdsWithin)
state_before: α : Type u
β : Type v
inst✝³ : TopologicalSpace α
γ : Type ?u.126302
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : T2Space α
s t : Set β
f g : β → α
h : EqOn f g s
hf : ContinuousOn f t
hg : ContinuousOn g t
hst : s ⊆ t
hts : t ⊆ closure s
x : β
hx : x ∈ t
this : NeBot (𝓝[s] x)
⊢ f x = g x
Theorem: MvPolynomial.eval₂_rename
File: Mathlib/Data/MvPolynomial/Rename.lean

tactic: intros
state_before: case h_X
σ : Type u_4
τ : Type u_3
α : Type ?u.416607
R : Type u_2
S : Type u_1
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : R →+* S
k : σ → τ
g : τ → S
p : MvPolynomial σ R
⊢ ∀ (p : MvPolynomial σ R) (n : σ),
    eval₂ f g (↑(rename k) p) = eval₂ f (g ∘ k) p → eval₂ f g (↑(rename k) (p * X n)) = eval₂ f (g ∘ k) (p * X n)

tactic: simp [*]
state_before: case h_X
σ : Type u_4
τ : Type u_3
α : Type ?u.416607
R : Type u_2
S : Type u_1
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : R →+* S
k : σ → τ
g : τ → S
p p✝ : MvPolynomial σ R
n✝ : σ
a✝ : eval₂ f g (↑(rename k) p✝) = eval₂ f (g ∘ k) p✝
⊢ eval₂ f g (↑(rename k) (p✝ * X n✝)) = eval₂ f (g ∘ k) (p✝ * X n✝)
Theorem: Num.cast_lt
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← cast_to_nat m, ← cast_to_nat n, Nat.cast_lt (α := α), lt_to_nat]
state_before: α : Type u_1
inst✝ : LinearOrderedSemiring α
m n : Num
⊢ ↑m < ↑n ↔ m < n
Theorem: Fin.append_left_nil
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: rw [hu, zero_add]
state_before: m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y : α✝ (succ i)
z : α✝ 0
α : Type ?u.32634
u : Fin m → α
v : Fin n → α
hu : m = 0
⊢ m + n = n

tactic: refine' funext (Fin.addCases (fun l => _) fun r => _)
state_before: m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y : α✝ (succ i)
z : α✝ 0
α : Type u_1
u : Fin m → α
v : Fin n → α
hu : m = 0
⊢ append u v = v ∘ ↑(cast (_ : m + n = n))

tactic: exact (Fin.cast hu l).elim0'
state_before: case refine'_1
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y : α✝ (succ i)
z : α✝ 0
α : Type u_1
u : Fin m → α
v : Fin n → α
hu : m = 0
l : Fin m
⊢ append u v (↑(castAdd n) l) = (v ∘ ↑(cast (_ : m + n = n))) (↑(castAdd n) l)

tactic: rw [append_right, Function.comp_apply]
state_before: case refine'_2
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y : α✝ (succ i)
z : α✝ 0
α : Type u_1
u : Fin m → α
v : Fin n → α
hu : m = 0
r : Fin n
⊢ append u v (↑(natAdd m) r) = (v ∘ ↑(cast (_ : m + n = n))) (↑(natAdd m) r)

tactic: refine' congr_arg v (Fin.ext _)
state_before: case refine'_2
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y : α✝ (succ i)
z : α✝ 0
α : Type u_1
u : Fin m → α
v : Fin n → α
hu : m = 0
r : Fin n
⊢ v r = v (↑(cast (_ : m + n = n)) (↑(natAdd m) r))

tactic: simp [hu]
state_before: case refine'_2
m n : ℕ
α✝ : Fin (n + 1) → Type u
x : α✝ 0
q : (i : Fin (n + 1)) → α✝ i
p : (i : Fin n) → α✝ (succ i)
i : Fin n
y : α✝ (succ i)
z : α✝ 0
α : Type u_1
u : Fin m → α
v : Fin n → α
hu : m = 0
r : Fin n
⊢ ↑r = ↑(↑(cast (_ : m + n = n)) (↑(natAdd m) r))
Theorem: Behrend.roth_lower_bound
File: Mathlib/Combinatorics/Additive/Behrend.lean

tactic: obtain rfl | hN := Nat.eq_zero_or_pos N
state_before: α : Type ?u.916813
β : Type ?u.916816
n d k N : ℕ
x : Fin n → ℕ
⊢ ↑N * exp (-4 * Real.sqrt (log ↑N)) ≤ ↑(↑rothNumberNat N)

tactic: obtain h₁ | h₁ := le_or_lt 4096 N
state_before: case inr
α : Type ?u.916813
β : Type ?u.916816
n d k N : ℕ
x : Fin n → ℕ
hN : N > 0
⊢ ↑N * exp (-4 * Real.sqrt (log ↑N)) ≤ ↑(↑rothNumberNat N)

tactic: norm_num
state_before: case inl
α : Type ?u.916813
β : Type ?u.916816
n d k : ℕ
x : Fin n → ℕ
⊢ ↑0 * exp (-4 * Real.sqrt (log ↑0)) ≤ ↑(↑rothNumberNat 0)

tactic: exact (roth_lower_bound_explicit h₁).le
state_before: case inr.inl
α : Type ?u.916813
β : Type ?u.916816
n d k N : ℕ
x : Fin n → ℕ
hN : N > 0
h₁ : 4096 ≤ N
⊢ ↑N * exp (-4 * Real.sqrt (log ↑N)) ≤ ↑(↑rothNumberNat N)

tactic: apply (lower_bound_le_one hN h₁.le).trans
state_before: case inr.inr
α : Type ?u.916813
β : Type ?u.916816
n d k N : ℕ
x : Fin n → ℕ
hN : N > 0
h₁ : N < 4096
⊢ ↑N * exp (-4 * Real.sqrt (log ↑N)) ≤ ↑(↑rothNumberNat N)

tactic: simpa using rothNumberNat.monotone hN
state_before: case inr.inr
α : Type ?u.916813
β : Type ?u.916816
n d k N : ℕ
x : Fin n → ℕ
hN : N > 0
h₁ : N < 4096
⊢ 1 ≤ ↑(↑rothNumberNat N)
Theorem: Finset.sigma_preimage_mk_of_subset
File: Mathlib/Data/Finset/Preimage.lean

tactic: rw [sigma_preimage_mk, filter_true_of_mem <| image_subset_iff.1 ht]
state_before: α : Type u
β✝ : Type v
ι : Sort w
γ : Type x
β : α → Type u_1
inst✝ : DecidableEq α
s : Finset ((a : α) × β a)
t : Finset α
ht : image Sigma.fst s ⊆ t
⊢ (Finset.sigma t fun a => preimage s (Sigma.mk a) (_ : InjOn (Sigma.mk a) (Sigma.mk a ⁻¹' ↑s))) = s
Theorem: List.get_range'
File: Std/Data/List/Lemmas.lean

tactic: simpa using H
state_before: n m step i : Nat
H : i < length (range' n m step)
⊢ i < m
Theorem: LocalHomeomorph.map_extend_symm_nhdsWithin
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rw [← map_extend_nhdsWithin f I hy, map_map, Filter.map_congr, map_id]
state_before: 𝕜 : Type u_4
E : Type u_3
M : Type u_1
H : Type u_2
E' : Type ?u.155042
M' : Type ?u.155045
H' : Type ?u.155048
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x : M
s t : Set M
y : M
hy : y ∈ f.source
⊢ map (↑(LocalEquiv.symm (extend f I))) (𝓝[↑(LocalEquiv.symm (extend f I)) ⁻¹' s ∩ range ↑I] ↑(extend f I) y) = 𝓝[s] y

tactic: exact (f.extend I).leftInvOn.eqOn.eventuallyEq_of_mem (extend_source_mem_nhdsWithin _ _ hy)
state_before: 𝕜 : Type u_4
E : Type u_3
M : Type u_1
H : Type u_2
E' : Type ?u.155042
M' : Type ?u.155045
H' : Type ?u.155048
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x : M
s t : Set M
y : M
hy : y ∈ f.source
⊢ ↑(LocalEquiv.symm (extend f I)) ∘ ↑(extend f I) =ᶠ[𝓝[s] y] id
Theorem: Ideal.Filtration.pow_smul_le
File: Mathlib/RingTheory/Filtration.lean

tactic: induction' i with _ ih
state_before: R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : Filtration I M
i j : ℕ
⊢ I ^ i • N F j ≤ N F (i + j)

tactic: simp
state_before: case zero
R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : Filtration I M
j : ℕ
⊢ I ^ Nat.zero • N F j ≤ N F (Nat.zero + j)

tactic: rw [pow_succ, mul_smul, Nat.succ_eq_add_one, add_assoc, add_comm 1, ← add_assoc]
state_before: case succ
R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : Filtration I M
j n✝ : ℕ
ih : I ^ n✝ • N F j ≤ N F (n✝ + j)
⊢ I ^ Nat.succ n✝ • N F j ≤ N F (Nat.succ n✝ + j)

tactic: exact (Submodule.smul_mono_right ih).trans (F.smul_le _)
state_before: case succ
R M : Type u
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
I : Ideal R
F F' : Filtration I M
j n✝ : ℕ
ih : I ^ n✝ • N F j ≤ N F (n✝ + j)
⊢ I • I ^ n✝ • N F j ≤ N F (n✝ + j + 1)
Theorem: deriv_const_mul_field
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

tactic: simp only [mul_comm u, deriv_mul_const_field]
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_1
𝔸 : Type ?u.277216
inst✝³ : NormedField 𝕜'
inst✝² : NormedRing 𝔸
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormedAlgebra 𝕜 𝔸
c d : 𝕜 → 𝔸
c' d' : 𝔸
u✝ v : 𝕜 → 𝕜'
u : 𝕜'
⊢ deriv (fun y => u * v y) x = u * deriv v x
Theorem: TopologicalSpace.IsTopologicalBasis.continuous
File: Mathlib/Topology/Bases.lean

tactic: rw [hB.eq_generateFrom]
state_before: α : Type u
t : TopologicalSpace α
β : Type u_1
inst✝ : TopologicalSpace β
B : Set (Set β)
hB : IsTopologicalBasis B
f : α → β
hf : ∀ (s : Set β), s ∈ B → IsOpen (f ⁻¹' s)
⊢ Continuous f

tactic: exact continuous_generateFrom hf
state_before: α : Type u
t : TopologicalSpace α
β : Type u_1
inst✝ : TopologicalSpace β
B : Set (Set β)
hB : IsTopologicalBasis B
f : α → β
hf : ∀ (s : Set β), s ∈ B → IsOpen (f ⁻¹' s)
⊢ Continuous f