tasksource/leandojo huggingface dataset:
Theorem: Polynomial.disjoint_ker_aeval_of_coprime
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: rw [disjoint_iff_inf_le]
state_before: R : Type u
S : Type ?u.672918
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
p q : R[X]
hpq : IsCoprime p q
⊢ Disjoint (LinearMap.ker (↑(aeval f) p)) (LinearMap.ker (↑(aeval f) q))

tactic: intro v hv
state_before: R : Type u
S : Type ?u.672918
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
p q : R[X]
hpq : IsCoprime p q
⊢ LinearMap.ker (↑(aeval f) p) ⊓ LinearMap.ker (↑(aeval f) q) ≤ ⊥

tactic: rcases hpq with ⟨p', q', hpq'⟩
state_before: R : Type u
S : Type ?u.672918
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
p q : R[X]
hpq : IsCoprime p q
v : M
hv : v ∈ LinearMap.ker (↑(aeval f) p) ⊓ LinearMap.ker (↑(aeval f) q)
⊢ v ∈ ⊥

tactic: simpa [LinearMap.mem_ker.1 (Submodule.mem_inf.1 hv).1,
  LinearMap.mem_ker.1 (Submodule.mem_inf.1 hv).2] using
  congr_arg (fun p : R[X] => aeval f p v) hpq'.symm
state_before: case intro.intro
R : Type u
S : Type ?u.672918
σ : Type v
M : Type w
inst✝³ : CommRing R
inst✝² : CommRing S
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : M →ₗ[R] M
p q : R[X]
v : M
hv : v ∈ LinearMap.ker (↑(aeval f) p) ⊓ LinearMap.ker (↑(aeval f) q)
p' q' : R[X]
hpq' : p' * p + q' * q = 1
⊢ v ∈ ⊥
Theorem: PFun.fix_stop
File: Mathlib/Data/PFun.lean

tactic: rw [PFun.mem_fix_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.29782
δ : Type ?u.29785
ε : Type ?u.29788
ι : Type ?u.29791
f : α →. β ⊕ α
b : β
a : α
hb : Sum.inl b ∈ f a
⊢ b ∈ fix f a

tactic: exact Or.inl hb
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.29782
δ : Type ?u.29785
ε : Type ?u.29788
ι : Type ?u.29791
f : α →. β ⊕ α
b : β
a : α
hb : Sum.inl b ∈ f a
⊢ Sum.inl b ∈ f a ∨ ∃ a', Sum.inr a' ∈ f a ∧ b ∈ fix f a'
Theorem: smul_iterate
File: Mathlib/Algebra/Hom/Iterate.lean

tactic: rw [iterate_zero, id.def, pow_zero, one_smul]
state_before: M : Type ?u.55417
N : Type ?u.55420
G : Type u_1
H : Type u_2
inst✝¹ : Monoid G
a : G
n : ℕ
inst✝ : MulAction G H
b : H
⊢ ((fun x => a • x)^[Nat.zero]) b = a ^ Nat.zero • b

tactic: rw [iterate_succ', comp_apply, ih, pow_succ, mul_smul]
state_before: M : Type ?u.55417
N : Type ?u.55420
G : Type u_1
H : Type u_2
inst✝¹ : Monoid G
a : G
n✝ : ℕ
inst✝ : MulAction G H
b : H
n : ℕ
ih : ((fun x => a • x)^[n]) b = a ^ n • b
⊢ ((fun x => a • x)^[Nat.succ n]) b = a ^ Nat.succ n • b
Theorem: Int.ceil_add_one
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [←ceil_add_int a (1 : ℤ), cast_one]
state_before: F : Type ?u.213806
α : Type u_1
β : Type ?u.213812
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a : α
⊢ ⌈a + 1⌉ = ⌈a⌉ + 1
Theorem: AList.insert_union
File: Mathlib/Data/List/AList.lean

tactic: ext
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
b : β a
s₁ s₂ : AList β
⊢ insert a b (s₁ ∪ s₂) = insert a b s₁ ∪ s₂

tactic: simp
state_before: case a.a.a
α : Type u
β : α → Type v
inst✝ : DecidableEq α
a : α
b : β a
s₁ s₂ : AList β
n✝ : ℕ
a✝ : Sigma β
⊢ a✝ ∈ get? (insert a b (s₁ ∪ s₂)).entries n✝ ↔ a✝ ∈ get? (insert a b s₁ ∪ s₂).entries n✝
Theorem: ZNum.cast_succ
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← add_one, cast_add, cast_one]
state_before: α : Type u_1
inst✝ : AddGroupWithOne α
n : ZNum
⊢ ↑(succ n) = ↑n + 1
Theorem: NNReal.mul_le_iff_le_inv
File: Mathlib/Data/Real/NNReal.lean

tactic: have : 0 < r := lt_of_le_of_ne (zero_le r) hr.symm
state_before: a b r : ℝ≥0
hr : r ≠ 0
⊢ r * a ≤ b ↔ a ≤ r⁻¹ * b

tactic: rw [← mul_le_mul_left (inv_pos.mpr this), ← mul_assoc, inv_mul_cancel hr, one_mul]
state_before: a b r : ℝ≥0
hr : r ≠ 0
this : 0 < r
⊢ r * a ≤ b ↔ a ≤ r⁻¹ * b
Theorem: continuous_le_dom
File: Mathlib/Topology/Order.lean

tactic: rw [continuous_iff_le_induced] at h₂ ⊢
state_before: α : Type u
β : Type v
γ : Type ?u.37692
f : α → β
ι : Sort ?u.37699
t₁ t₂ : TopologicalSpace α
t₃ : TopologicalSpace β
h₁ : t₂ ≤ t₁
h₂ : Continuous f
⊢ Continuous f

tactic: exact le_trans h₁ h₂
state_before: α : Type u
β : Type v
γ : Type ?u.37692
f : α → β
ι : Sort ?u.37699
t₁ t₂ : TopologicalSpace α
t₃ : TopologicalSpace β
h₁ : t₂ ≤ t₁
h₂ : t₁ ≤ induced f t₃
⊢ t₂ ≤ induced f t₃
Theorem: convex_iff_pointwise_add_subset
File: Mathlib/Analysis/Convex/Basic.lean

tactic: rintro hA a b ha hb hab w ⟨au, bv, ⟨u, hu, rfl⟩, ⟨v, hv, rfl⟩, rfl⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1834
β : Type ?u.1837
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x : E
⊢ Convex 𝕜 s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → a • s + b • s ⊆ s

tactic: exact hA hu hv ha hb hab
state_before: case intro.intro.intro.intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type ?u.1834
β : Type ?u.1837
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
s : Set E
x : E
hA : Convex 𝕜 s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
u : E
hu : u ∈ s
v : E
hv : v ∈ s
⊢ (fun x x_1 => x + x_1) ((fun x => a • x) u) ((fun x => b • x) v) ∈ s
Theorem: map_nhds_subtype_coe_eq_nhds
File: Mathlib/Topology/Constructions.lean

tactic: rw [Subtype.range_val]
state_before: α : Type u
β : Type v
γ : Type ?u.159306
δ : Type ?u.159309
ε : Type ?u.159312
ζ : Type ?u.159315
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
p : α → Prop
a : α
ha : p a
h : ∀ᶠ (x : α) in 𝓝 a, p x
⊢ range Subtype.val ∈ 𝓝 ↑{ val := a, property := ha }

tactic: exact h
state_before: α : Type u
β : Type v
γ : Type ?u.159306
δ : Type ?u.159309
ε : Type ?u.159312
ζ : Type ?u.159315
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
p : α → Prop
a : α
ha : p a
h : ∀ᶠ (x : α) in 𝓝 a, p x
⊢ (fun x => p x) ∈ 𝓝 ↑{ val := a, property := ha }
Theorem: MeasureTheory.Lp.simpleFunc.norm_toSimpleFunc
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

tactic: simpa [toLp_toSimpleFunc] using norm_toLp (toSimpleFunc f) (simpleFunc.memℒp f)
state_before: α : Type u_1
β : Type ?u.1613274
ι : Type ?u.1613277
E : Type u_2
F : Type ?u.1613283
𝕜 : Type ?u.1613286
inst✝⁶ : MeasurableSpace α
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
p : ℝ≥0∞
μ : Measure α
inst✝³ : NormedRing 𝕜
inst✝² : Module 𝕜 E
inst✝¹ : BoundedSMul 𝕜 E
inst✝ : Fact (1 ≤ p)
f : { x // x ∈ simpleFunc E p μ }
⊢ ‖f‖ = ENNReal.toReal (snorm (↑(toSimpleFunc f)) p μ)
Theorem: continuousWithinAt_Ioo_iff_Ioi
File: Mathlib/Topology/Order/Basic.lean

tactic: simp only [ContinuousWithinAt, nhdsWithin_Ioo_eq_nhdsWithin_Ioi h]
state_before: α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : LinearOrder α
inst✝² : OrderClosedTopology α
a✝ b✝ : α
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace β
a b : α
f : α → β
h : a < b
⊢ ContinuousWithinAt f (Ioo a b) a ↔ ContinuousWithinAt f (Ioi a) a
Theorem: Subgroup.pi_bot
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: simp only [mem_pi, mem_bot] at *
state_before: G : Type ?u.321013
G' : Type ?u.321016
inst✝⁵ : Group G
inst✝⁴ : Group G'
A : Type ?u.321025
inst✝³ : AddGroup A
H K : Subgroup G
k : Set G
N : Type ?u.321046
inst✝² : Group N
P : Type ?u.321052
inst✝¹ : Group P
η : Type u_1
f : η → Type u_2
inst✝ : (i : η) → Group (f i)
p : (i : η) → f i
hp : p ∈ pi univ fun i => ⊥
⊢ p = 1

tactic: ext j
state_before: G : Type ?u.321013
G' : Type ?u.321016
inst✝⁵ : Group G
inst✝⁴ : Group G'
A : Type ?u.321025
inst✝³ : AddGroup A
H K : Subgroup G
k : Set G
N : Type ?u.321046
inst✝² : Group N
P : Type ?u.321052
inst✝¹ : Group P
η : Type u_1
f : η → Type u_2
inst✝ : (i : η) → Group (f i)
p : (i : η) → f i
hp : ∀ (i : η), i ∈ univ → p i = 1
⊢ p = 1

tactic: exact hp j trivial
state_before: case h
G : Type ?u.321013
G' : Type ?u.321016
inst✝⁵ : Group G
inst✝⁴ : Group G'
A : Type ?u.321025
inst✝³ : AddGroup A
H K : Subgroup G
k : Set G
N : Type ?u.321046
inst✝² : Group N
P : Type ?u.321052
inst✝¹ : Group P
η : Type u_1
f : η → Type u_2
inst✝ : (i : η) → Group (f i)
p : (i : η) → f i
hp : ∀ (i : η), i ∈ univ → p i = 1
j : η
⊢ p j = OfNat.ofNat 1 j
Theorem: List.disjoint_singleton
File: Std/Data/List/Lemmas.lean

tactic: rw [disjoint_comm, singleton_disjoint]
state_before: α✝ : Type u_1
l : List α✝
a : α✝
⊢ Disjoint l [a] ↔ ¬a ∈ l
Theorem: omegaLimit_eq_iInter_inter
File: Mathlib/Dynamics/OmegaLimit.lean

tactic: rw [omegaLimit_eq_biInter_inter _ _ _ hv]
state_before: τ : Type u_1
α : Type u_3
β : Type u_2
ι : Type ?u.36686
inst✝ : TopologicalSpace β
f : Filter τ
ϕ : τ → α → β
s s₁ s₂ : Set α
v : Set τ
hv : v ∈ f
⊢ ω f ϕ s = ⋂ (u : ↑f.sets), closure (image2 ϕ (↑u ∩ v) s)

tactic: apply biInter_eq_iInter
state_before: τ : Type u_1
α : Type u_3
β : Type u_2
ι : Type ?u.36686
inst✝ : TopologicalSpace β
f : Filter τ
ϕ : τ → α → β
s s₁ s₂ : Set α
v : Set τ
hv : v ∈ f
⊢ (⋂ (u : Set τ) (_ : u ∈ f), closure (image2 ϕ (u ∩ v) s)) = ⋂ (u : ↑f.sets), closure (image2 ϕ (↑u ∩ v) s)
Theorem: ContinuousOn.isSeparable_image
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: rw [image_eq_range, ← image_univ]
state_before: α : Type u
β : Type v
X : Type ?u.308958
ι : Type ?u.308961
inst✝¹ : PseudoMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ
s✝ : Set α
inst✝ : TopologicalSpace β
f : α → β
s : Set α
hf : ContinuousOn f s
hs : IsSeparable s
⊢ IsSeparable (f '' s)

tactic: exact (isSeparable_univ_iff.2 hs.separableSpace).image hf.restrict
state_before: α : Type u
β : Type v
X : Type ?u.308958
ι : Type ?u.308961
inst✝¹ : PseudoMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ
s✝ : Set α
inst✝ : TopologicalSpace β
f : α → β
s : Set α
hf : ContinuousOn f s
hs : IsSeparable s
⊢ IsSeparable ((fun x => f ↑x) '' univ)
Theorem: Pmf.toOuterMeasure_caratheodory
File: Mathlib/Probability/ProbabilityMassFunction/Basic.lean

tactic: refine' eq_top_iff.2 <| le_trans (le_sInf fun x hx => _) (le_sum_caratheodory _)
state_before: α : Type u_1
β : Type ?u.22040
γ : Type ?u.22043
p : Pmf α
s t : Set α
⊢ OuterMeasure.caratheodory (toOuterMeasure p) = ⊤

tactic: have ⟨y, hy⟩ := hx
state_before: α : Type u_1
β : Type ?u.22040
γ : Type ?u.22043
p : Pmf α
s t : Set α
x : MeasurableSpace α
hx : x ∈ Set.range fun i => OuterMeasure.caratheodory (↑p i • dirac i)
⊢ ⊤ ≤ x

tactic: exact
  ((le_of_eq (dirac_caratheodory y).symm).trans (le_smul_caratheodory _ _)).trans (le_of_eq hy)
state_before: α : Type u_1
β : Type ?u.22040
γ : Type ?u.22043
p : Pmf α
s t : Set α
x : MeasurableSpace α
hx : x ∈ Set.range fun i => OuterMeasure.caratheodory (↑p i • dirac i)
y : α
hy : (fun i => OuterMeasure.caratheodory (↑p i • dirac i)) y = x
⊢ ⊤ ≤ x
Theorem: Multiset.card_toEnumFinset
File: Mathlib/Data/Multiset/Fintype.lean

tactic: rw [Finset.card, ←Multiset.card_map Prod.fst m.toEnumFinset.val]
state_before: α : Type u_1
inst✝ : DecidableEq α
m✝ m : Multiset α
⊢ Finset.card (toEnumFinset m) = ↑card m

tactic: congr
state_before: α : Type u_1
inst✝ : DecidableEq α
m✝ m : Multiset α
⊢ ↑card (map Prod.fst (toEnumFinset m).val) = ↑card m

tactic: exact m.map_toEnumFinset_fst
state_before: case h.e_6.h
α : Type u_1
inst✝ : DecidableEq α
m✝ m : Multiset α
⊢ map Prod.fst (toEnumFinset m).val = m
Theorem: beq_iff_eq
File: src/lean/Init/Core.lean

tactic: intro h
state_before: a✝ b✝ c d : Prop
α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a b : α
⊢ a = b → (a == b) = true

tactic: subst h
state_before: a✝ b✝ c d : Prop
α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a b : α
h : a = b
⊢ (a == b) = true

tactic: exact LawfulBEq.rfl
state_before: a✝ b c d : Prop
α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
⊢ (a == a) = true
Theorem: Ideal.span_pair_add_mul_left
File: Mathlib/RingTheory/Ideal/Basic.lean

tactic: ext
state_before: α : Type u
β : Type v
inst✝¹ : Semiring α
I : Ideal α
a b : α
R : Type u
inst✝ : CommRing R
x y z : R
⊢ span {x + y * z, y} = span {x, y}

tactic: rw [mem_span_pair, mem_span_pair]
state_before: case h
α : Type u
β : Type v
inst✝¹ : Semiring α
I : Ideal α
a b : α
R : Type u
inst✝ : CommRing R
x y z x✝ : R
⊢ x✝ ∈ span {x + y * z, y} ↔ x✝ ∈ span {x, y}

tactic: exact
  ⟨fun ⟨a, b, h⟩ =>
    ⟨a, b + a * z, by
      rw [← h]
      ring1⟩,
    fun ⟨a, b, h⟩ =>
    ⟨a, b - a * z, by
      rw [← h]
      ring1⟩⟩
state_before: case h
α : Type u
β : Type v
inst✝¹ : Semiring α
I : Ideal α
a b : α
R : Type u
inst✝ : CommRing R
x y z x✝ : R
⊢ (∃ a b, a * (x + y * z) + b * y = x✝) ↔ ∃ a b, a * x + b * y = x✝

tactic: rw [← h]
state_before: α : Type u
β : Type v
inst✝¹ : Semiring α
I : Ideal α
a✝ b✝ : α
R : Type u
inst✝ : CommRing R
x y z x✝¹ : R
x✝ : ∃ a b, a * (x + y * z) + b * y = x✝¹
a b : R
h : a * (x + y * z) + b * y = x✝¹
⊢ a * x + (b + a * z) * y = x✝¹

tactic: ring1
state_before: α : Type u
β : Type v
inst✝¹ : Semiring α
I : Ideal α
a✝ b✝ : α
R : Type u
inst✝ : CommRing R
x y z x✝¹ : R
x✝ : ∃ a b, a * (x + y * z) + b * y = x✝¹
a b : R
h : a * (x + y * z) + b * y = x✝¹
⊢ a * x + (b + a * z) * y = a * (x + y * z) + b * y

tactic: rw [← h]
state_before: α : Type u
β : Type v
inst✝¹ : Semiring α
I : Ideal α
a✝ b✝ : α
R : Type u
inst✝ : CommRing R
x y z x✝¹ : R
x✝ : ∃ a b, a * x + b * y = x✝¹
a b : R
h : a * x + b * y = x✝¹
⊢ a * (x + y * z) + (b - a * z) * y = x✝¹

tactic: ring1
state_before: α : Type u
β : Type v
inst✝¹ : Semiring α
I : Ideal α
a✝ b✝ : α
R : Type u
inst✝ : CommRing R
x y z x✝¹ : R
x✝ : ∃ a b, a * x + b * y = x✝¹
a b : R
h : a * x + b * y = x✝¹
⊢ a * (x + y * z) + (b - a * z) * y = a * x + b * y
Theorem: Real.logb_nonneg_of_base_lt_one
File: Mathlib/Analysis/SpecialFunctions/Log/Base.lean

tactic: rw [logb_nonneg_iff_of_base_lt_one b_pos b_lt_one hx]
state_before: b x y : ℝ
b_pos : 0 < b
b_lt_one : b < 1
hx : 0 < x
hx' : x ≤ 1
⊢ 0 ≤ logb b x

tactic: exact hx'
state_before: b x y : ℝ
b_pos : 0 < b
b_lt_one : b < 1
hx : 0 < x
hx' : x ≤ 1
⊢ x ≤ 1
Theorem: Multiset.sum_int_mod
File: Mathlib/Algebra/BigOperators/Multiset/Basic.lean

tactic: induction s using Multiset.induction <;> simp [Int.add_emod, *]
state_before: ι : Type ?u.171528
α : Type ?u.171531
β : Type ?u.171534
γ : Type ?u.171537
s : Multiset ℤ
n : ℤ
⊢ sum s % n = sum (map (fun x => x % n) s) % n
Theorem: ContinuousLinearMap.toSpanSingleton_smul'
File: Mathlib/Analysis/NormedSpace/ContinuousLinearMap.lean

tactic: ext1
state_before: 𝕜 : Type u_3
𝕜₂ : Type ?u.392830
E : Type u_2
F : Type ?u.392836
G : Type ?u.392839
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedField 𝕜₂
inst✝⁴ : SeminormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' E
inst✝ : SMulCommClass 𝕜 𝕜' E
c : 𝕜'
x : E
⊢ toSpanSingleton 𝕜 (c • x) = c • toSpanSingleton 𝕜 x

tactic: rw [toSpanSingleton_apply, smul_apply, toSpanSingleton_apply, smul_comm]
state_before: case h
𝕜 : Type u_3
𝕜₂ : Type ?u.392830
E : Type u_2
F : Type ?u.392836
G : Type ?u.392839
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedField 𝕜₂
inst✝⁴ : SeminormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
𝕜' : Type u_1
inst✝² : NormedField 𝕜'
inst✝¹ : NormedSpace 𝕜' E
inst✝ : SMulCommClass 𝕜 𝕜' E
c : 𝕜'
x : E
⊢ ↑(toSpanSingleton 𝕜 (c • x)) 1 = ↑(c • toSpanSingleton 𝕜 x) 1
Theorem: LocalEquiv.eq_of_eq_on_source_univ
File: Mathlib/Logic/Equiv/LocalEquiv.lean

tactic: refine LocalEquiv.ext (fun x => ?_) (fun x => ?_) h.1
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.59180
δ : Type ?u.59183
e✝ : LocalEquiv α β
e'✝ : LocalEquiv β γ
e e' : LocalEquiv α β
h : e ≈ e'
s : e.source = univ
t : e.target = univ
⊢ e = e'

tactic: apply h.2
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type ?u.59180
δ : Type ?u.59183
e✝ : LocalEquiv α β
e'✝ : LocalEquiv β γ
e e' : LocalEquiv α β
h : e ≈ e'
s : e.source = univ
t : e.target = univ
x : α
⊢ ↑e x = ↑e' x

tactic: rw [s]
state_before: case refine_1.a
α : Type u_1
β : Type u_2
γ : Type ?u.59180
δ : Type ?u.59183
e✝ : LocalEquiv α β
e'✝ : LocalEquiv β γ
e e' : LocalEquiv α β
h : e ≈ e'
s : e.source = univ
t : e.target = univ
x : α
⊢ x ∈ e.source

tactic: exact mem_univ _
state_before: case refine_1.a
α : Type u_1
β : Type u_2
γ : Type ?u.59180
δ : Type ?u.59183
e✝ : LocalEquiv α β
e'✝ : LocalEquiv β γ
e e' : LocalEquiv α β
h : e ≈ e'
s : e.source = univ
t : e.target = univ
x : α
⊢ x ∈ univ

tactic: apply h.symm'.2
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type ?u.59180
δ : Type ?u.59183
e✝ : LocalEquiv α β
e'✝ : LocalEquiv β γ
e e' : LocalEquiv α β
h : e ≈ e'
s : e.source = univ
t : e.target = univ
x : β
⊢ ↑(LocalEquiv.symm e) x = ↑(LocalEquiv.symm e') x

tactic: rw [symm_source, t]
state_before: case refine_2.a
α : Type u_1
β : Type u_2
γ : Type ?u.59180
δ : Type ?u.59183
e✝ : LocalEquiv α β
e'✝ : LocalEquiv β γ
e e' : LocalEquiv α β
h : e ≈ e'
s : e.source = univ
t : e.target = univ
x : β
⊢ x ∈ (LocalEquiv.symm e).source

tactic: exact mem_univ _
state_before: case refine_2.a
α : Type u_1
β : Type u_2
γ : Type ?u.59180
δ : Type ?u.59183
e✝ : LocalEquiv α β
e'✝ : LocalEquiv β γ
e e' : LocalEquiv α β
h : e ≈ e'
s : e.source = univ
t : e.target = univ
x : β
⊢ x ∈ univ
Theorem: Polynomial.degree_scaleRoots
File: Mathlib/RingTheory/Polynomial/ScaleRoots.lean

tactic: haveI := Classical.propDecidable
state_before: A : Type ?u.34124
K : Type ?u.34127
R : Type u_1
S : Type ?u.34133
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Field K
inst✝¹ : CommRing R
inst✝ : CommRing S
M : Submonoid A
p : R[X]
s : R
⊢ degree (scaleRoots p s) = degree p

tactic: by_cases hp : p = 0
state_before: A : Type ?u.34124
K : Type ?u.34127
R : Type u_1
S : Type ?u.34133
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Field K
inst✝¹ : CommRing R
inst✝ : CommRing S
M : Submonoid A
p : R[X]
s : R
this : (a : Prop) → Decidable a
⊢ degree (scaleRoots p s) = degree p

tactic: refine' le_antisymm (Finset.sup_mono (support_scaleRoots_le p s)) (degree_le_degree _)
state_before: case neg
A : Type ?u.34124
K : Type ?u.34127
R : Type u_1
S : Type ?u.34133
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Field K
inst✝¹ : CommRing R
inst✝ : CommRing S
M : Submonoid A
p : R[X]
s : R
this : (a : Prop) → Decidable a
hp : ¬p = 0
⊢ degree (scaleRoots p s) = degree p

tactic: rw [coeff_scaleRoots_natDegree]
state_before: case neg
A : Type ?u.34124
K : Type ?u.34127
R : Type u_1
S : Type ?u.34133
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Field K
inst✝¹ : CommRing R
inst✝ : CommRing S
M : Submonoid A
p : R[X]
s : R
this : (a : Prop) → Decidable a
hp : ¬p = 0
⊢ coeff (scaleRoots p s) (natDegree p) ≠ 0

tactic: intro h
state_before: case neg
A : Type ?u.34124
K : Type ?u.34127
R : Type u_1
S : Type ?u.34133
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Field K
inst✝¹ : CommRing R
inst✝ : CommRing S
M : Submonoid A
p : R[X]
s : R
this : (a : Prop) → Decidable a
hp : ¬p = 0
⊢ leadingCoeff p ≠ 0

tactic: have := leadingCoeff_eq_zero.mp h
state_before: case neg
A : Type ?u.34124
K : Type ?u.34127
R : Type u_1
S : Type ?u.34133
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Field K
inst✝¹ : CommRing R
inst✝ : CommRing S
M : Submonoid A
p : R[X]
s : R
this : (a : Prop) → Decidable a
hp : ¬p = 0
h : leadingCoeff p = 0
⊢ False

tactic: contradiction
state_before: case neg
A : Type ?u.34124
K : Type ?u.34127
R : Type u_1
S : Type ?u.34133
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Field K
inst✝¹ : CommRing R
inst✝ : CommRing S
M : Submonoid A
p : R[X]
s : R
this✝ : (a : Prop) → Decidable a
hp : ¬p = 0
h : leadingCoeff p = 0
this : p = 0
⊢ False

tactic: rw [hp, zero_scaleRoots]
state_before: case pos
A : Type ?u.34124
K : Type ?u.34127
R : Type u_1
S : Type ?u.34133
inst✝⁴ : CommRing A
inst✝³ : IsDomain A
inst✝² : Field K
inst✝¹ : CommRing R
inst✝ : CommRing S
M : Submonoid A
p : R[X]
s : R
this : (a : Prop) → Decidable a
hp : p = 0
⊢ degree (scaleRoots p s) = degree p
Theorem: RingSubgroupsBasis.hasBasis_nhds_zero
File: Mathlib/Topology/Algebra/Nonarchimedean/Bases.lean

tactic: intro s
state_before: A : Type u_1
ι : Type u_2
inst✝¹ : Ring A
inst✝ : Nonempty ι
B : ι → AddSubgroup A
hB : RingSubgroupsBasis B
⊢ ∀ (t : Set A), t ∈ 𝓝 0 ↔ ∃ i, True ∧ ↑(B i) ⊆ t

tactic: rw [hB.toRingFilterBasis.toAddGroupFilterBasis.nhds_zero_hasBasis.mem_iff]
state_before: A : Type u_1
ι : Type u_2
inst✝¹ : Ring A
inst✝ : Nonempty ι
B : ι → AddSubgroup A
hB : RingSubgroupsBasis B
s : Set A
⊢ s ∈ 𝓝 0 ↔ ∃ i, True ∧ ↑(B i) ⊆ s

tactic: constructor
state_before: A : Type u_1
ι : Type u_2
inst✝¹ : Ring A
inst✝ : Nonempty ι
B : ι → AddSubgroup A
hB : RingSubgroupsBasis B
s : Set A
⊢ (∃ i, i ∈ RingFilterBasis.toAddGroupFilterBasis ∧ id i ⊆ s) ↔ ∃ i, True ∧ ↑(B i) ⊆ s

tactic: rintro ⟨-, ⟨i, rfl⟩, hi⟩
state_before: case mp
A : Type u_1
ι : Type u_2
inst✝¹ : Ring A
inst✝ : Nonempty ι
B : ι → AddSubgroup A
hB : RingSubgroupsBasis B
s : Set A
⊢ (∃ i, i ∈ RingFilterBasis.toAddGroupFilterBasis ∧ id i ⊆ s) → ∃ i, True ∧ ↑(B i) ⊆ s

tactic: exact ⟨i, trivial, hi⟩
state_before: case mp.intro.intro.intro
A : Type u_1
ι : Type u_2
inst✝¹ : Ring A
inst✝ : Nonempty ι
B : ι → AddSubgroup A
hB : RingSubgroupsBasis B
s : Set A
i : ι
hi : id ↑(B i) ⊆ s
⊢ ∃ i, True ∧ ↑(B i) ⊆ s

tactic: rintro ⟨i, -, hi⟩
state_before: case mpr
A : Type u_1
ι : Type u_2
inst✝¹ : Ring A
inst✝ : Nonempty ι
B : ι → AddSubgroup A
hB : RingSubgroupsBasis B
s : Set A
⊢ (∃ i, True ∧ ↑(B i) ⊆ s) → ∃ i, i ∈ RingFilterBasis.toAddGroupFilterBasis ∧ id i ⊆ s

tactic: exact ⟨B i, ⟨i, rfl⟩, hi⟩
state_before: case mpr.intro.intro
A : Type u_1
ι : Type u_2
inst✝¹ : Ring A
inst✝ : Nonempty ι
B : ι → AddSubgroup A
hB : RingSubgroupsBasis B
s : Set A
i : ι
hi : ↑(B i) ⊆ s
⊢ ∃ i, i ∈ RingFilterBasis.toAddGroupFilterBasis ∧ id i ⊆ s
Theorem: Function.Bijective.existsUnique_iff
File: Mathlib/Logic/Function/Basic.lean

tactic: simpa [hx]
state_before: α : Sort u_1
β : Sort u_2
γ : Sort ?u.7730
f✝ f : α → β
hf : Bijective f
p : β → Prop
x✝ : ∃! y, p y
y : β
hpy : (fun y => p y) y
hy : ∀ (y_1 : β), (fun y => p y) y_1 → y_1 = y
x : α
hx : f x = y
⊢ (fun x => p (f x)) x

tactic: simpa [hz]
state_before: α : Sort u_1
β : Sort u_2
γ : Sort ?u.7730
f✝ f : α → β
hf : Bijective f
p : β → Prop
x✝ : ∃! x, p (f x)
x : α
hpx : (fun x => p (f x)) x
hx : ∀ (y : α), (fun x => p (f x)) y → y = x
y : β
hy : (fun y => p y) y
z : α
hz : f z = y
⊢ (fun x => p (f x)) z
Theorem: Polynomial.le_trailingDegree_X_pow
File: Mathlib/Data/Polynomial/Degree/TrailingDegree.lean

tactic: simpa only [C_1, one_mul] using le_trailingDegree_C_mul_X_pow n (1 : R)
state_before: R : Type u
S : Type v
a b : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
n : ℕ
⊢ ↑n ≤ trailingDegree (X ^ n)
Theorem: HasFTaylorSeriesUpTo.continuous
File: Mathlib/Analysis/Calculus/ContDiffDef.lean

tactic: rw [← hasFTaylorSeriesUpToOn_univ_iff] at h
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
h : HasFTaylorSeriesUpTo n f p
⊢ Continuous f

tactic: rw [continuous_iff_continuousOn_univ]
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
h : HasFTaylorSeriesUpToOn n f p univ
⊢ Continuous f

tactic: exact h.continuousOn
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
h : HasFTaylorSeriesUpToOn n f p univ
⊢ ContinuousOn f univ