tasksource/leandojo huggingface dataset:
Theorem: Cardinal.countable_iff_lt_aleph_one
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [← succ_aleph0, lt_succ_iff, le_aleph0_iff_set_countable]
state_before: α : Type u_1
s : Set α
⊢ Set.Countable s ↔ (#↑s) < aleph 1
Theorem: BoxIntegral.Box.exists_seq_mono_tendsto
File: Mathlib/Analysis/BoxIntegral/Box/Basic.lean

tactic: choose a b ha_anti hb_mono ha_mem hb_mem hab ha_tendsto hb_tendsto using
  fun i ↦ exists_seq_strictAnti_strictMono_tendsto (I.lower_lt_upper i)
state_before: ι : Type u_1
I✝ J : Box ι
x y : ι → ℝ
I : Box ι
⊢ ∃ J,
    (∀ (n : ℕ), ↑Box.Icc (↑J n) ⊆ ↑Box.Ioo I) ∧
      Tendsto (lower ∘ ↑J) atTop (𝓝 I.lower) ∧ Tendsto (upper ∘ ↑J) atTop (𝓝 I.upper)

tactic: exact
  ⟨⟨fun k ↦ ⟨flip a k, flip b k, fun i ↦ hab _ _ _⟩, fun k l hkl ↦
      le_iff_bounds.2 ⟨fun i ↦ (ha_anti i).antitone hkl, fun i ↦ (hb_mono i).monotone hkl⟩⟩,
    fun n x hx i _ ↦ ⟨(ha_mem _ _).1.trans_le (hx.1 _), (hx.2 _).trans_lt (hb_mem _ _).2⟩,
    tendsto_pi_nhds.2 ha_tendsto, tendsto_pi_nhds.2 hb_tendsto⟩
state_before: ι : Type u_1
I✝ J : Box ι
x y : ι → ℝ
I : Box ι
a b : ι → ℕ → ℝ
ha_anti : ∀ (i : ι), StrictAnti (a i)
hb_mono : ∀ (i : ι), StrictMono (b i)
ha_mem : ∀ (i : ι) (k : ℕ), a i k ∈ Ioo (lower I i) (upper I i)
hb_mem : ∀ (i : ι) (l : ℕ), b i l ∈ Ioo (lower I i) (upper I i)
hab : ∀ (i : ι) (k l : ℕ), a i k < b i l
ha_tendsto : ∀ (i : ι), Tendsto (a i) atTop (𝓝 (lower I i))
hb_tendsto : ∀ (i : ι), Tendsto (b i) atTop (𝓝 (upper I i))
⊢ ∃ J,
    (∀ (n : ℕ), ↑Box.Icc (↑J n) ⊆ ↑Box.Ioo I) ∧
      Tendsto (lower ∘ ↑J) atTop (𝓝 I.lower) ∧ Tendsto (upper ∘ ↑J) atTop (𝓝 I.upper)
Theorem: MvPFunctor.const.get_mk
File: Mathlib/Data/PFunctor/Multivariate/Basic.lean

tactic: rfl
state_before: n m : ℕ
P : MvPFunctor n
A : Type u
α β : TypeVec n
x : A
⊢ get (mk n x) = x
Theorem: newton_seq_norm_eq
File: Mathlib/NumberTheory/Padics/Hensel.lean

tactic: rw [newton_seq_gen, newton_seq_gen, newton_seq_aux, ih_n]
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
n : ℕ
⊢ ‖newton_seq (n + 1) - newton_seq n‖ =
    ‖Polynomial.eval (newton_seq n) F‖ / ‖Polynomial.eval (newton_seq n) (↑Polynomial.derivative F)‖

tactic: simp [sub_eq_add_neg, add_comm]
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
n : ℕ
⊢ ‖↑(let_fun h1 :=
            (_ :
              ‖↑(Polynomial.eval (↑(newton_seq_aux hnorm n)) F) /
                    ↑(Polynomial.eval (↑(newton_seq_aux hnorm n)) (↑Polynomial.derivative F))‖ ≤
                1);
          let z1 :=
            {
              val :=
                ↑(Polynomial.eval (↑(newton_seq_aux hnorm n)) F) /
                  ↑(Polynomial.eval (↑(newton_seq_aux hnorm n)) (↑Polynomial.derivative F)),
              property := h1 };
          let z' := ↑(newton_seq_aux hnorm n) - z1;
          { val := z', property := (_ : ih_gen (n + 1) z') }) -
        ↑(newton_seq_aux hnorm n)‖ =
    ‖Polynomial.eval (↑(newton_seq_aux hnorm n)) F‖ /
      ‖Polynomial.eval (↑(newton_seq_aux hnorm n)) (↑Polynomial.derivative F)‖
Theorem: HasStrictDerivAt.clm_comp
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

tactic: have := (hc.hasStrictFDerivAt.clm_comp hd.hasStrictFDerivAt).hasStrictDerivAt
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 𝕜
G : Type u_1
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
c : 𝕜 → F →L[𝕜] G
c' : F →L[𝕜] G
d : 𝕜 → E →L[𝕜] F
d' : E →L[𝕜] F
u : 𝕜 → F
u' : F
hc : HasStrictDerivAt c c' x
hd : HasStrictDerivAt d d' x
⊢ HasStrictDerivAt (fun y => comp (c y) (d y)) (comp c' (d x) + comp (c x) d') x

tactic: rwa [add_apply, comp_apply, comp_apply, smulRight_apply, smulRight_apply, one_apply, one_smul,
  one_smul, add_comm] at this
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 𝕜
G : Type u_1
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
c : 𝕜 → F →L[𝕜] G
c' : F →L[𝕜] G
d : 𝕜 → E →L[𝕜] F
d' : E →L[𝕜] F
u : 𝕜 → F
u' : F
hc : HasStrictDerivAt c c' x
hd : HasStrictDerivAt d d' x
this :
  HasStrictDerivAt (fun y => comp (c y) (d y))
    (↑(comp (↑(compL 𝕜 E F G) (c x)) (smulRight 1 d') +
          comp (↑(ContinuousLinearMap.flip (compL 𝕜 E F G)) (d x)) (smulRight 1 c'))
      1)
    x
⊢ HasStrictDerivAt (fun y => comp (c y) (d y)) (comp c' (d x) + comp (c x) d') x
Theorem: Ideal.le_pow_of_le_ramificationIdx
File: Mathlib/NumberTheory/RamificationInertia.lean

tactic: contrapose! hn
state_before: R : Type u
inst✝¹ : CommRing R
S : Type v
inst✝ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
n : ℕ
hn : n ≤ ramificationIdx f p P
⊢ map f p ≤ P ^ n

tactic: exact ramificationIdx_lt hn
state_before: R : Type u
inst✝¹ : CommRing R
S : Type v
inst✝ : CommRing S
f : R →+* S
p : Ideal R
P : Ideal S
n : ℕ
hn : ¬map f p ≤ P ^ n
⊢ ramificationIdx f p P < n
Theorem: LocalEquiv.EqOnSource.restr
File: Mathlib/Logic/Equiv/LocalEquiv.lean

tactic: constructor
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.57579
δ : Type ?u.57582
e✝ : LocalEquiv α β
e'✝ : LocalEquiv β γ
e e' : LocalEquiv α β
he : e ≈ e'
s : Set α
⊢ LocalEquiv.restr e s ≈ LocalEquiv.restr e' s

tactic: simp [he.1]
state_before: case left
α : Type u_1
β : Type u_2
γ : Type ?u.57579
δ : Type ?u.57582
e✝ : LocalEquiv α β
e'✝ : LocalEquiv β γ
e e' : LocalEquiv α β
he : e ≈ e'
s : Set α
⊢ (LocalEquiv.restr e s).source = (LocalEquiv.restr e' s).source

tactic: intro x hx
state_before: case right
α : Type u_1
β : Type u_2
γ : Type ?u.57579
δ : Type ?u.57582
e✝ : LocalEquiv α β
e'✝ : LocalEquiv β γ
e e' : LocalEquiv α β
he : e ≈ e'
s : Set α
⊢ EqOn (↑(LocalEquiv.restr e s)) (↑(LocalEquiv.restr e' s)) (LocalEquiv.restr e s).source

tactic: simp only [mem_inter_iff, restr_source] at hx
state_before: case right
α : Type u_1
β : Type u_2
γ : Type ?u.57579
δ : Type ?u.57582
e✝ : LocalEquiv α β
e'✝ : LocalEquiv β γ
e e' : LocalEquiv α β
he : e ≈ e'
s : Set α
x : α
hx : x ∈ (LocalEquiv.restr e s).source
⊢ ↑(LocalEquiv.restr e s) x = ↑(LocalEquiv.restr e' s) x

tactic: exact he.2 hx.1
state_before: case right
α : Type u_1
β : Type u_2
γ : Type ?u.57579
δ : Type ?u.57582
e✝ : LocalEquiv α β
e'✝ : LocalEquiv β γ
e e' : LocalEquiv α β
he : e ≈ e'
s : Set α
x : α
hx : x ∈ e.source ∧ x ∈ s
⊢ ↑(LocalEquiv.restr e s) x = ↑(LocalEquiv.restr e' s) x
Theorem: MeasureTheory.integrable_map_equiv
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simp_rw [← memℒp_one_iff_integrable]
state_before: α : Type u_1
β : Type u_3
γ : Type ?u.859671
δ : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α ≃ᵐ δ
g : δ → β
⊢ Integrable g ↔ Integrable (g ∘ ↑f)

tactic: exact f.memℒp_map_measure_iff
state_before: α : Type u_1
β : Type u_3
γ : Type ?u.859671
δ : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α ≃ᵐ δ
g : δ → β
⊢ Memℒp g 1 ↔ Memℒp (g ∘ ↑f) 1
Theorem: IsNilpotent.neg
File: Mathlib/RingTheory/Nilpotent.lean

tactic: obtain ⟨n, hn⟩ := h
state_before: R S : Type u
x y : R
inst✝ : Ring R
h : IsNilpotent x
⊢ IsNilpotent (-x)

tactic: use n
state_before: case intro
R S : Type u
x y : R
inst✝ : Ring R
n : ℕ
hn : x ^ n = 0
⊢ IsNilpotent (-x)

tactic: rw [neg_pow, hn, MulZeroClass.mul_zero]
state_before: case intro
R S : Type u
x y : R
inst✝ : Ring R
n : ℕ
hn : x ^ n = 0
⊢ (-x) ^ n = 0
Theorem: AddCommGroup.modEq_iff_toIocMod_eq_right
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: refine' modEq_iff_eq_add_zsmul.trans ⟨_, fun h => ⟨toIocDiv hp a b + 1, _⟩⟩
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a b c : α
n : ℤ
⊢ a ≡ b [PMOD p] ↔ toIocMod hp a b = a + p

tactic: rintro ⟨z, rfl⟩
state_before: case refine'_1
α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a b c : α
n : ℤ
⊢ (∃ z, b = a + z • p) → toIocMod hp a b = a + p

tactic: rw [toIocMod_add_zsmul, toIocMod_apply_left]
state_before: case refine'_1.intro
α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a c : α
n z : ℤ
⊢ toIocMod hp a (a + z • p) = a + p

tactic: rwa [add_one_zsmul, add_left_comm, ← sub_eq_iff_eq_add']
state_before: case refine'_2
α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a b c : α
n : ℤ
h : toIocMod hp a b = a + p
⊢ b = a + (toIocDiv hp a b + 1) • p
Theorem: Ideal.isPrimary_inf
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [radical_inf, hij, inf_idem]
state_before: R : Type u
inst✝ : CommSemiring R
I J : Ideal R
hi : IsPrimary I
hj : IsPrimary J
hij : radical I = radical J
x y : R
x✝ : x * y ∈ I ⊓ J
hxyi : x * y ∈ ↑I
hxyj : x * y ∈ ↑J
⊢ x ∈ I ⊓ J ∨ y ∈ radical (I ⊓ J)

tactic: cases' hi.2 hxyi with hxi hyi
state_before: R : Type u
inst✝ : CommSemiring R
I J : Ideal R
hi : IsPrimary I
hj : IsPrimary J
hij : radical I = radical J
x y : R
x✝ : x * y ∈ I ⊓ J
hxyi : x * y ∈ ↑I
hxyj : x * y ∈ ↑J
⊢ x ∈ I ⊓ J ∨ y ∈ radical J

tactic: cases' hj.2 hxyj with hxj hyj
state_before: case inl
R : Type u
inst✝ : CommSemiring R
I J : Ideal R
hi : IsPrimary I
hj : IsPrimary J
hij : radical I = radical J
x y : R
x✝ : x * y ∈ I ⊓ J
hxyi : x * y ∈ ↑I
hxyj : x * y ∈ ↑J
hxi : x ∈ I
⊢ x ∈ I ⊓ J ∨ y ∈ radical J

case inr
R : Type u
inst✝ : CommSemiring R
I J : Ideal R
hi : IsPrimary I
hj : IsPrimary J
hij : radical I = radical J
x y : R
x✝ : x * y ∈ I ⊓ J
hxyi : x * y ∈ ↑I
hxyj : x * y ∈ ↑J
hyi : y ∈ radical I
⊢ x ∈ I ⊓ J ∨ y ∈ radical J

tactic: exact Or.inl ⟨hxi, hxj⟩
state_before: case inl.inl
R : Type u
inst✝ : CommSemiring R
I J : Ideal R
hi : IsPrimary I
hj : IsPrimary J
hij : radical I = radical J
x y : R
x✝ : x * y ∈ I ⊓ J
hxyi : x * y ∈ ↑I
hxyj : x * y ∈ ↑J
hxi : x ∈ I
hxj : x ∈ J
⊢ x ∈ I ⊓ J ∨ y ∈ radical J

tactic: exact Or.inr hyj
state_before: case inl.inr
R : Type u
inst✝ : CommSemiring R
I J : Ideal R
hi : IsPrimary I
hj : IsPrimary J
hij : radical I = radical J
x y : R
x✝ : x * y ∈ I ⊓ J
hxyi : x * y ∈ ↑I
hxyj : x * y ∈ ↑J
hxi : x ∈ I
hyj : y ∈ radical J
⊢ x ∈ I ⊓ J ∨ y ∈ radical J

tactic: rw [hij] at hyi
state_before: case inr
R : Type u
inst✝ : CommSemiring R
I J : Ideal R
hi : IsPrimary I
hj : IsPrimary J
hij : radical I = radical J
x y : R
x✝ : x * y ∈ I ⊓ J
hxyi : x * y ∈ ↑I
hxyj : x * y ∈ ↑J
hyi : y ∈ radical I
⊢ x ∈ I ⊓ J ∨ y ∈ radical J

tactic: exact Or.inr hyi
state_before: case inr
R : Type u
inst✝ : CommSemiring R
I J : Ideal R
hi : IsPrimary I
hj : IsPrimary J
hij : radical I = radical J
x y : R
x✝ : x * y ∈ I ⊓ J
hxyi : x * y ∈ ↑I
hxyj : x * y ∈ ↑J
hyi : y ∈ radical J
⊢ x ∈ I ⊓ J ∨ y ∈ radical J
Theorem: StructureGroupoid.LocalInvariantProp.liftPropAt_of_liftPropWithinAt
File: Mathlib/Geometry/Manifold/LocalInvariantProperties.lean

tactic: rwa [← univ_inter s, hG.liftPropWithinAt_inter hs] at h
state_before: H : Type u_1
M : Type u_2
H' : Type u_3
M' : Type u_4
X : Type ?u.36556
inst✝⁶ : TopologicalSpace H
inst✝⁵ : TopologicalSpace M
inst✝⁴ : ChartedSpace H M
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
inst✝¹ : ChartedSpace H' M'
inst✝ : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : LocalHomeomorph M H
f f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG : LocalInvariantProp G G' P
h : LiftPropWithinAt P g s x
hs : s ∈ 𝓝 x
⊢ LiftPropAt P g x
Theorem: List.chain_iff_nthLe
File: Mathlib/Data/List/Chain.lean

tactic: rw [chain_iff_get]
state_before: α : Type u
β : Type v
R✝ r : α → α → Prop
l✝ l₁ l₂ : List α
a✝ b : α
R : α → α → Prop
a : α
l : List α
⊢ Chain R a l ↔
    (∀ (h : 0 < length l), R a (nthLe l 0 h)) ∧
      ∀ (i : ℕ) (h : i < length l - 1), R (nthLe l i (_ : i < length l)) (nthLe l (i + 1) (_ : succ i < length l))

tactic: simp [nthLe]
state_before: α : Type u
β : Type v
R✝ r : α → α → Prop
l✝ l₁ l₂ : List α
a✝ b : α
R : α → α → Prop
a : α
l : List α
⊢ ((∀ (h : 0 < length l), R a (get l { val := 0, isLt := h })) ∧
      ∀ (i : ℕ) (h : i < length l - 1),
        R (get l { val := i, isLt := (_ : i < length l) }) (get l { val := i + 1, isLt := (_ : succ i < length l) })) ↔
    (∀ (h : 0 < length l), R a (nthLe l 0 h)) ∧
      ∀ (i : ℕ) (h : i < length l - 1), R (nthLe l i (_ : i < length l)) (nthLe l (i + 1) (_ : succ i < length l))
Theorem: Sym2.map_comp
File: Mathlib/Data/Sym/Sym2.lean

tactic: ext ⟨⟨x, y⟩⟩
state_before: α : Type u_1
β : Type u_3
γ : Type u_2
g : β → γ
f : α → β
⊢ map (g ∘ f) = map g ∘ map f

tactic: rfl
state_before: case h.mk.mk
α : Type u_1
β : Type u_3
γ : Type u_2
g : β → γ
f : α → β
x✝ : Sym2 α
x y : α
⊢ map (g ∘ f) (Quot.mk Setoid.r (x, y)) = (map g ∘ map f) (Quot.mk Setoid.r (x, y))
Theorem: ContinuousMap.spectrum_eq_range
File: Mathlib/Topology/ContinuousFunction/Units.lean

tactic: ext x
state_before: X : Type u_1
M : Type ?u.398751
R : Type ?u.398754
𝕜 : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : NormedField 𝕜
inst✝ : CompleteSpace 𝕜
f : C(X, 𝕜)
⊢ spectrum 𝕜 f = Set.range ↑f

tactic: simp only [spectrum.mem_iff, isUnit_iff_forall_ne_zero, not_forall, coe_sub, Pi.sub_apply,
  algebraMap_apply, Algebra.id.smul_eq_mul, mul_one, Classical.not_not, Set.mem_range,
  sub_eq_zero, @eq_comm _ x _]
state_before: case h
X : Type u_1
M : Type ?u.398751
R : Type ?u.398754
𝕜 : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : NormedField 𝕜
inst✝ : CompleteSpace 𝕜
f : C(X, 𝕜)
x : 𝕜
⊢ x ∈ spectrum 𝕜 f ↔ x ∈ Set.range ↑f
Theorem: Subgroup.toSubmonoid_injective
File: Mathlib/GroupTheory/Subgroup/Basic.lean

tactic: have := SetLike.ext'_iff.1 h
state_before: G : Type u_1
G' : Type ?u.82310
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.82319
inst✝ : AddGroup A
p q : Subgroup G
h : p.toSubmonoid = q.toSubmonoid
⊢ p = q

tactic: rw [coe_toSubmonoid, coe_toSubmonoid] at this
state_before: G : Type u_1
G' : Type ?u.82310
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.82319
inst✝ : AddGroup A
p q : Subgroup G
h : p.toSubmonoid = q.toSubmonoid
this : ↑p.toSubmonoid = ↑q.toSubmonoid
⊢ p = q

tactic: exact SetLike.ext'_iff.2 this
state_before: G : Type u_1
G' : Type ?u.82310
inst✝² : Group G
inst✝¹ : Group G'
A : Type ?u.82319
inst✝ : AddGroup A
p q : Subgroup G
h : p.toSubmonoid = q.toSubmonoid
this : ↑p = ↑q
⊢ p = q
Theorem: Ring.DirectLimit.lift_unique
File: Mathlib/Algebra/DirectLimit.lean

tactic: simp [of_f]
state_before: R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
P : Type u₁
inst✝² : CommRing P
g : (i : ι) → G i →+* P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), ↑(g j) (f i j hij x) = ↑(g i) x
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
F : DirectLimit G f →+* P
x✝ : DirectLimit G f
i j : ι
hij : i ≤ j
x : G i
⊢ ↑((fun i => RingHom.comp F (of G f i)) j) (f i j hij x) = ↑((fun i => RingHom.comp F (of G f i)) i) x

tactic: simp [lift_of]
state_before: R : Type u
inst✝⁵ : Ring R
ι : Type v
dec_ι : DecidableEq ι
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : (i : ι) → CommRing (G i)
f : (i j : ι) → i ≤ j → G i → G j
f' : (i j : ι) → i ≤ j → G i →+* G j
P : Type u₁
inst✝² : CommRing P
g : (i : ι) → G i →+* P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), ↑(g j) (f i j hij x) = ↑(g i) x
inst✝¹ : Nonempty ι
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
F : DirectLimit G f →+* P
x✝ : DirectLimit G f
i : ι
x : G i
⊢ ↑F (↑(of G f i) x) =
    ↑(lift G f P (fun i => RingHom.comp F (of G f i))
          (_ : ∀ (i j : ι) (hij : i ≤ j) (x : G i), ↑F (↑(of G f j) (f i j hij x)) = ↑F (↑(of G f i) x)))
      (↑(of G f i) x)
Theorem: Polynomial.eval_one_map
File: Mathlib/Data/Polynomial/Eval.lean

tactic: induction p using Polynomial.induction_on' with
| h_add p q hp hq =>
  simp only [hp, hq, Polynomial.map_add, RingHom.map_add, eval_add]
| h_monomial n r =>
  simp only [one_pow, mul_one, eval_monomial, map_monomial]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
f✝ f : R →+* S
p : R[X]
⊢ eval 1 (map f p) = ↑f (eval 1 p)

tactic: simp only [hp, hq, Polynomial.map_add, RingHom.map_add, eval_add]
state_before: case h_add
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q✝ r : R[X]
inst✝ : Semiring S
f✝ f : R →+* S
p q : R[X]
hp : eval 1 (map f p) = ↑f (eval 1 p)
hq : eval 1 (map f q) = ↑f (eval 1 q)
⊢ eval 1 (map f (p + q)) = ↑f (eval 1 (p + q))

tactic: simp only [one_pow, mul_one, eval_monomial, map_monomial]
state_before: case h_monomial
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n✝ : ℕ
inst✝¹ : Semiring R
p q r✝ : R[X]
inst✝ : Semiring S
f✝ f : R →+* S
n : ℕ
r : R
⊢ eval 1 (map f (↑(monomial n) r)) = ↑f (eval 1 (↑(monomial n) r))
Theorem: is_simple_module_of_finrank_eq_one
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: haveI := nontrivial_of_finrank_eq_succ h
state_before: K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
A : Type u_1
inst✝³ : Semiring A
inst✝² : Module A V
inst✝¹ : SMul K A
inst✝ : IsScalarTower K A V
h : finrank K V = 1
⊢ IsSimpleOrder (Submodule A V)

tactic: refine' ⟨fun S => or_iff_not_imp_left.2 fun hn => _⟩
state_before: K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
A : Type u_1
inst✝³ : Semiring A
inst✝² : Module A V
inst✝¹ : SMul K A
inst✝ : IsScalarTower K A V
h : finrank K V = 1
this : Nontrivial V
⊢ IsSimpleOrder (Submodule A V)

tactic: rw [← restrictScalars_inj K] at hn⊢
state_before: K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
A : Type u_1
inst✝³ : Semiring A
inst✝² : Module A V
inst✝¹ : SMul K A
inst✝ : IsScalarTower K A V
h : finrank K V = 1
this : Nontrivial V
S : Submodule A V
hn : ¬S = ⊥
⊢ S = ⊤

tactic: haveI : FiniteDimensional _ _ := finiteDimensional_of_finrank_eq_succ h
state_before: K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
A : Type u_1
inst✝³ : Semiring A
inst✝² : Module A V
inst✝¹ : SMul K A
inst✝ : IsScalarTower K A V
h : finrank K V = 1
this : Nontrivial V
S : Submodule A V
hn : ¬restrictScalars K S = restrictScalars K ⊥
⊢ restrictScalars K S = restrictScalars K ⊤

tactic: refine' Submodule.eq_top_of_finrank_eq ((Submodule.finrank_le _).antisymm _)
state_before: K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
A : Type u_1
inst✝³ : Semiring A
inst✝² : Module A V
inst✝¹ : SMul K A
inst✝ : IsScalarTower K A V
h : finrank K V = 1
this✝ : Nontrivial V
S : Submodule A V
hn : ¬restrictScalars K S = restrictScalars K ⊥
this : FiniteDimensional K V
⊢ restrictScalars K S = restrictScalars K ⊤

tactic: simpa only [h, finrank_bot] using Submodule.finrank_strictMono (Ne.bot_lt hn)
state_before: K : Type u
V : Type v
inst✝⁶ : DivisionRing K
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module K V
A : Type u_1
inst✝³ : Semiring A
inst✝² : Module A V
inst✝¹ : SMul K A
inst✝ : IsScalarTower K A V
h : finrank K V = 1
this✝ : Nontrivial V
S : Submodule A V
hn : ¬restrictScalars K S = restrictScalars K ⊥
this : FiniteDimensional K V
⊢ finrank K V ≤ finrank K { x // x ∈ restrictScalars K S }
Theorem: MeasurableSpace.DynkinSystem.has_iUnion
File: Mathlib/MeasureTheory/PiSystem.lean

tactic: cases nonempty_encodable β
state_before: α : Type u_2
d : DynkinSystem α
β : Type u_1
inst✝ : Countable β
f : β → Set α
hd : Pairwise (Disjoint on f)
h : ∀ (i : β), Has d (f i)
⊢ Has d (⋃ (i : β), f i)

tactic: rw [← Encodable.iUnion_decode₂]
state_before: case intro
α : Type u_2
d : DynkinSystem α
β : Type u_1
inst✝ : Countable β
f : β → Set α
hd : Pairwise (Disjoint on f)
h : ∀ (i : β), Has d (f i)
val✝ : Encodable β
⊢ Has d (⋃ (i : β), f i)

tactic: exact
  d.has_iUnion_nat (Encodable.iUnion_decode₂_disjoint_on hd) fun n =>
    Encodable.iUnion_decode₂_cases d.has_empty h
state_before: case intro
α : Type u_2
d : DynkinSystem α
β : Type u_1
inst✝ : Countable β
f : β → Set α
hd : Pairwise (Disjoint on f)
h : ∀ (i : β), Has d (f i)
val✝ : Encodable β
⊢ Has d (⋃ (i : ℕ) (b : β) (_ : b ∈ Encodable.decode₂ β i), f b)
Theorem: Matrix.mulVecᵣ_eq
File: Mathlib/Data/Matrix/Reflection.lean

tactic: simp [mulVecᵣ, Function.comp]
state_before: l m n : ℕ
α : Type u_1
β : Type ?u.43355
inst✝ : NonUnitalNonAssocSemiring α
A : Matrix (Fin l) (Fin m) α
v : Fin m → α
⊢ mulVecᵣ A v = mulVec A v

tactic: rfl
state_before: l m n : ℕ
α : Type u_1
β : Type ?u.43355
inst✝ : NonUnitalNonAssocSemiring α
A : Matrix (Fin l) (Fin m) α
v : Fin m → α
⊢ (fun x => A x ⬝ᵥ v) = mulVec A v
Theorem: MeasurableSpace.measurableSet_iSup
File: Mathlib/MeasureTheory/MeasurableSpaceDef.lean

tactic: simp only [iSup, measurableSet_sSup, exists_range_iff]
state_before: α : Type u_2
β : Type ?u.35582
γ : Type ?u.35585
δ : Type ?u.35588
δ' : Type ?u.35591
ι✝ : Sort ?u.35594
s✝ t u : Set α
ι : Sort u_1
m : ι → MeasurableSpace α
s : Set α
⊢ MeasurableSet s ↔ GenerateMeasurable {s | ∃ i, MeasurableSet s} s
Theorem: bihimp_bihimp_cancel_right
File: Mathlib/Order/SymmDiff.lean

tactic: simp [bihimp_assoc]
state_before: ι : Type ?u.82660
α : Type u_1
β : Type ?u.82666
π : ι → Type ?u.82671
inst✝ : BooleanAlgebra α
a b c d : α
⊢ b ⇔ a ⇔ a = b
Theorem: ball_eq'
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: simp [dist_eq_norm_div]
state_before: 𝓕 : Type ?u.89542
𝕜 : Type ?u.89545
α : Type ?u.89548
ι : Type ?u.89551
κ : Type ?u.89554
E : Type u_1
F : Type ?u.89560
G : Type ?u.89563
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a✝ a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
y : E
ε : ℝ
a : E
⊢ a ∈ ball y ε ↔ a ∈ {x | ‖x / y‖ < ε}
Theorem: Ideal.mem_toCotangent_ker
File: Mathlib/RingTheory/Ideal/Cotangent.lean

tactic: rw [← I.map_toCotangent_ker]
state_before: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
x : { x // x ∈ I }
⊢ x ∈ LinearMap.ker (toCotangent I) ↔ ↑x ∈ I ^ 2

tactic: simp
state_before: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
x : { x // x ∈ I }
⊢ x ∈ LinearMap.ker (toCotangent I) ↔ ↑x ∈ Submodule.map (Submodule.subtype I) (LinearMap.ker (toCotangent I))
Theorem: LocalRing.isLocalRingHom_iff_comap_closedPoint
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: have := (local_hom_TFAE f).out 0 4
state_before: R : Type u
S✝ : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S✝
inst✝² : LocalRing R
S : Type v
inst✝¹ : CommRing S
inst✝ : LocalRing S
f : R →+* S
⊢ IsLocalRingHom f ↔ ↑(PrimeSpectrum.comap f) (closedPoint S) = closedPoint R

tactic: rw [this, PrimeSpectrum.ext_iff]
state_before: R : Type u
S✝ : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S✝
inst✝² : LocalRing R
S : Type v
inst✝¹ : CommRing S
inst✝ : LocalRing S
f : R →+* S
this : IsLocalRingHom f ↔ Ideal.comap f (maximalIdeal S) = maximalIdeal R
⊢ IsLocalRingHom f ↔ ↑(PrimeSpectrum.comap f) (closedPoint S) = closedPoint R

tactic: rfl
state_before: R : Type u
S✝ : Type v
inst✝⁴ : CommRing R
inst✝³ : CommRing S✝
inst✝² : LocalRing R
S : Type v
inst✝¹ : CommRing S
inst✝ : LocalRing S
f : R →+* S
this : IsLocalRingHom f ↔ Ideal.comap f (maximalIdeal S) = maximalIdeal R
⊢ Ideal.comap f (maximalIdeal S) = maximalIdeal R ↔
    (↑(PrimeSpectrum.comap f) (closedPoint S)).asIdeal = (closedPoint R).asIdeal