tasksource/leandojo huggingface dataset:
Theorem: frontier_lt_subset_eq
File: Mathlib/Topology/Order/Basic.lean

tactic: simpa only [← not_lt, ← compl_setOf, frontier_compl, eq_comm] using frontier_le_subset_eq hg hf
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderClosedTopology α
f g : β → α
inst✝ : TopologicalSpace β
hf : Continuous f
hg : Continuous g
⊢ frontier {b | f b < g b} ⊆ {b | f b = g b}
Theorem: Associates.prod_le
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: classical
  exact
    Iff.intro
      (fun h => by
        have : a.prod.factors ≤ b.prod.factors := factors_mono h
        rwa [prod_factors, prod_factors] at this)
      prod_mono
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Nontrivial α
a b : FactorSet α
⊢ FactorSet.prod a ≤ FactorSet.prod b ↔ a ≤ b

tactic: exact
  Iff.intro
    (fun h => by
      have : a.prod.factors ≤ b.prod.factors := factors_mono h
      rwa [prod_factors, prod_factors] at this)
    prod_mono
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Nontrivial α
a b : FactorSet α
⊢ FactorSet.prod a ≤ FactorSet.prod b ↔ a ≤ b

tactic: have : a.prod.factors ≤ b.prod.factors := factors_mono h
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Nontrivial α
a b : FactorSet α
h : FactorSet.prod a ≤ FactorSet.prod b
⊢ a ≤ b

tactic: rwa [prod_factors, prod_factors] at this
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝¹ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
inst✝ : Nontrivial α
a b : FactorSet α
h : FactorSet.prod a ≤ FactorSet.prod b
this : factors (FactorSet.prod a) ≤ factors (FactorSet.prod b)
⊢ a ≤ b
Theorem: Polynomial.X_pow_eq_monomial
File: Mathlib/Data/Polynomial/Basic.lean

tactic: induction' n with n hn
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
⊢ X ^ n = ↑(monomial n) 1

tactic: rw [pow_zero, monomial_zero_one]
state_before: case zero
R : Type u
a b : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
⊢ X ^ Nat.zero = ↑(monomial Nat.zero) 1

tactic: rw [pow_succ', hn, X, monomial_mul_monomial, one_mul]
state_before: case succ
R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
hn : X ^ n = ↑(monomial n) 1
⊢ X ^ Nat.succ n = ↑(monomial (Nat.succ n)) 1
Theorem: inner_eq_zero_symm
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [← inner_conj_symm]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1186924
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
x y : E
⊢ inner x y = 0 ↔ inner y x = 0

tactic: exact star_eq_zero
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1186924
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
x y : E
⊢ ↑(starRingEnd 𝕜) (inner y x) = 0 ↔ inner y x = 0
Theorem: ProjectiveSpectrum.basicOpen_eq_zeroLocus_compl
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Topology.lean

tactic: simp only [Set.mem_compl_iff, mem_zeroLocus, Set.singleton_subset_iff]
state_before: R : Type u_2
A : Type u_1
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
r : A
x : ProjectiveSpectrum 𝒜
⊢ x ∈ ↑(basicOpen 𝒜 r) ↔ x ∈ zeroLocus 𝒜 {r}ᶜ

tactic: rfl
state_before: R : Type u_2
A : Type u_1
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
r : A
x : ProjectiveSpectrum 𝒜
⊢ x ∈ ↑(basicOpen 𝒜 r) ↔ ¬r ∈ ↑x.asHomogeneousIdeal
Theorem: List.all₂_map_iff
File: Mathlib/Data/List/Basic.lean

tactic: induction l <;> simp [*]
state_before: ι : Type ?u.482167
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p✝ q : α → Prop
l : List α
p : β → Prop
f : α → β
⊢ All₂ p (map f l) ↔ All₂ (p ∘ f) l
Theorem: DistribMulActionHom.ext_ring
File: Mathlib/Algebra/Hom/GroupAction.lean

tactic: ext x
state_before: M' : Type u_2
X : Type ?u.188449
inst✝²⁵ : SMul M' X
Y : Type ?u.188456
inst✝²⁴ : SMul M' Y
Z : Type ?u.188463
inst✝²³ : SMul M' Z
M : Type ?u.188470
inst✝²² : Monoid M
A : Type ?u.188476
inst✝²¹ : AddMonoid A
inst✝²⁰ : DistribMulAction M A
A' : Type ?u.188504
inst✝¹⁹ : AddGroup A'
inst✝¹⁸ : DistribMulAction M A'
B : Type ?u.188780
inst✝¹⁷ : AddMonoid B
inst✝¹⁶ : DistribMulAction M B
B' : Type ?u.188806
inst✝¹⁵ : AddGroup B'
inst✝¹⁴ : DistribMulAction M B'
C : Type ?u.189082
inst✝¹³ : AddMonoid C
inst✝¹² : DistribMulAction M C
R : Type u_1
inst✝¹¹ : Semiring R
inst✝¹⁰ : MulSemiringAction M R
R' : Type ?u.189135
inst✝⁹ : Ring R'
inst✝⁸ : MulSemiringAction M R'
S : Type ?u.189331
inst✝⁷ : Semiring S
inst✝⁶ : MulSemiringAction M S
S' : Type ?u.189358
inst✝⁵ : Ring S'
inst✝⁴ : MulSemiringAction M S'
T : Type ?u.189554
inst✝³ : Semiring T
inst✝² : MulSemiringAction M T
inst✝¹ : AddMonoid M'
inst✝ : DistribMulAction R M'
f g : R →+[R] M'
h : ↑f 1 = ↑g 1
⊢ f = g

tactic: rw [← mul_one x, ← smul_eq_mul R, f.map_smul, g.map_smul, h]
state_before: case a
M' : Type u_2
X : Type ?u.188449
inst✝²⁵ : SMul M' X
Y : Type ?u.188456
inst✝²⁴ : SMul M' Y
Z : Type ?u.188463
inst✝²³ : SMul M' Z
M : Type ?u.188470
inst✝²² : Monoid M
A : Type ?u.188476
inst✝²¹ : AddMonoid A
inst✝²⁰ : DistribMulAction M A
A' : Type ?u.188504
inst✝¹⁹ : AddGroup A'
inst✝¹⁸ : DistribMulAction M A'
B : Type ?u.188780
inst✝¹⁷ : AddMonoid B
inst✝¹⁶ : DistribMulAction M B
B' : Type ?u.188806
inst✝¹⁵ : AddGroup B'
inst✝¹⁴ : DistribMulAction M B'
C : Type ?u.189082
inst✝¹³ : AddMonoid C
inst✝¹² : DistribMulAction M C
R : Type u_1
inst✝¹¹ : Semiring R
inst✝¹⁰ : MulSemiringAction M R
R' : Type ?u.189135
inst✝⁹ : Ring R'
inst✝⁸ : MulSemiringAction M R'
S : Type ?u.189331
inst✝⁷ : Semiring S
inst✝⁶ : MulSemiringAction M S
S' : Type ?u.189358
inst✝⁵ : Ring S'
inst✝⁴ : MulSemiringAction M S'
T : Type ?u.189554
inst✝³ : Semiring T
inst✝² : MulSemiringAction M T
inst✝¹ : AddMonoid M'
inst✝ : DistribMulAction R M'
f g : R →+[R] M'
h : ↑f 1 = ↑g 1
x : R
⊢ ↑f x = ↑g x
Theorem: InnerProductGeometry.inner_eq_mul_norm_of_angle_eq_zero
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

tactic: simp [← cos_angle_mul_norm_mul_norm, h]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
h : angle x y = 0
⊢ inner x y = ‖x‖ * ‖y‖
Theorem: Set.inv_Ioo_0_left
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: ext x
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a✝ a : α
ha : 0 < a
⊢ (Ioo 0 a)⁻¹ = Ioi a⁻¹

tactic: exact
  ⟨fun h => inv_inv x ▸ (inv_lt_inv ha h.1).2 h.2, fun h =>
    ⟨inv_pos.2 <| (inv_pos.2 ha).trans h,
      inv_inv a ▸ (inv_lt_inv ((inv_pos.2 ha).trans h) (inv_pos.2 ha)).2 h⟩⟩
state_before: case h
α : Type u_1
inst✝ : LinearOrderedField α
a✝ a : α
ha : 0 < a
x : α
⊢ x ∈ (Ioo 0 a)⁻¹ ↔ x ∈ Ioi a⁻¹
Theorem: bind_pure
File: src/lean/Init/Control/Lawful.lean

tactic: show x >>= (fun a => pure (id a)) = x
state_before: m : Type u_1 → Type u_2
α : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
x : m α
⊢ x >>= pure = x

tactic: rw [bind_pure_comp, id_map]
state_before: m : Type u_1 → Type u_2
α : Type u_1
inst✝¹ : Monad m
inst✝ : LawfulMonad m
x : m α
⊢ (do
      let a ← x
      pure (id a)) =
    x
Theorem: lt_or_lt_of_mul_lt_mul
File: Mathlib/Algebra/Order/Monoid/MinMax.lean

tactic: contrapose!
state_before: α : Type u_1
β : Type ?u.4096
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a₁ a₂ b₁ b₂ : α
⊢ a₁ * b₁ < a₂ * b₂ → a₁ < a₂ ∨ b₁ < b₂

tactic: exact fun h => mul_le_mul' h.1 h.2
state_before: α : Type u_1
β : Type ?u.4096
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a₁ a₂ b₁ b₂ : α
⊢ a₂ ≤ a₁ ∧ b₂ ≤ b₁ → a₂ * b₂ ≤ a₁ * b₁
Theorem: Real.rpow_add_int
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [rpow_def, rpow_def, Complex.ofReal_add,
Complex.cpow_add _ _ (Complex.ofReal_ne_zero.mpr hx), Complex.ofReal_int_cast,
Complex.cpow_int_cast, ← Complex.ofReal_zpow, mul_comm, Complex.ofReal_mul_re, mul_comm]
state_before: x✝ y✝ z x : ℝ
hx : x ≠ 0
y : ℝ
n : ℤ
⊢ x ^ (y + ↑n) = x ^ y * x ^ n
Theorem: AlgebraicTopology.DoldKan.Q_f_0_eq
File: Mathlib/AlgebraicTopology/DoldKan/Projections.lean

tactic: simp only [HomologicalComplex.sub_f_apply, HomologicalComplex.id_f, Q, P_f_0_eq, sub_self]
state_before: C : Type u_2
inst✝¹ : Category C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ HomologicalComplex.Hom.f (Q q) 0 = 0
Theorem: CategoryTheory.MonoidalOfChosenFiniteProducts.tensor_comp
File: Mathlib/CategoryTheory/Monoidal/OfChosenFiniteProducts/Basic.lean

tactic: apply IsLimit.hom_ext (ℬ _ _).isLimit
state_before: C : Type u
inst✝ : Category C
X Y : C
𝒯 : LimitCone (Functor.empty C)
ℬ : (X Y : C) → LimitCone (pair X Y)
X₁ Y₁ Z₁ X₂ Y₂ Z₂ : C
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₂
g₁ : Y₁ ⟶ Z₁
g₂ : Y₂ ⟶ Z₂
⊢ tensorHom ℬ (f₁ ≫ g₁) (f₂ ≫ g₂) = tensorHom ℬ f₁ f₂ ≫ tensorHom ℬ g₁ g₂

tactic: dsimp [tensorHom]
state_before: case mk.right
C : Type u
inst✝ : Category C
X Y : C
𝒯 : LimitCone (Functor.empty C)
ℬ : (X Y : C) → LimitCone (pair X Y)
X₁ Y₁ Z₁ X₂ Y₂ Z₂ : C
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₂
g₁ : Y₁ ⟶ Z₁
g₂ : Y₂ ⟶ Z₂
⊢ tensorHom ℬ (f₁ ≫ g₁) (f₂ ≫ g₂) ≫ (ℬ Z₁ Z₂).cone.π.app { as := WalkingPair.right } =
    (tensorHom ℬ f₁ f₂ ≫ tensorHom ℬ g₁ g₂) ≫ (ℬ Z₁ Z₂).cone.π.app { as := WalkingPair.right }

tactic: simp
state_before: case mk.right
C : Type u
inst✝ : Category C
X Y : C
𝒯 : LimitCone (Functor.empty C)
ℬ : (X Y : C) → LimitCone (pair X Y)
X₁ Y₁ Z₁ X₂ Y₂ Z₂ : C
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₂
g₁ : Y₁ ⟶ Z₁
g₂ : Y₂ ⟶ Z₂
⊢ IsLimit.lift (ℬ Z₁ Z₂).isLimit
        (BinaryFan.mk (BinaryFan.fst (ℬ X₁ X₂).cone ≫ f₁ ≫ g₁) (BinaryFan.snd (ℬ X₁ X₂).cone ≫ f₂ ≫ g₂)) ≫
      BinaryFan.snd (ℬ Z₁ Z₂).cone =
    (IsLimit.lift (ℬ Y₁ Y₂).isLimit
          (BinaryFan.mk (BinaryFan.fst (ℬ X₁ X₂).cone ≫ f₁) (BinaryFan.snd (ℬ X₁ X₂).cone ≫ f₂)) ≫
        IsLimit.lift (ℬ Z₁ Z₂).isLimit
          (BinaryFan.mk (BinaryFan.fst (ℬ Y₁ Y₂).cone ≫ g₁) (BinaryFan.snd (ℬ Y₁ Y₂).cone ≫ g₂))) ≫
      BinaryFan.snd (ℬ Z₁ Z₂).cone
Theorem: inv_mul_le_iff'
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [inv_mul_le_iff h, mul_comm]
state_before: ι : Type ?u.31791
α : Type u_1
β : Type ?u.31797
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h : 0 < b
⊢ b⁻¹ * a ≤ c ↔ a ≤ c * b
Theorem: Complex.tanh_mul_I
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [tanh_eq_sinh_div_cosh, cosh_mul_I, sinh_mul_I, mul_div_right_comm, tan]
state_before: x y : ℂ
⊢ tanh (x * I) = tan x * I
Theorem: Language.kstar_eq_iSup_pow
File: Mathlib/Computability/Language.lean

tactic: ext x
state_before: α : Type u_1
β : Type ?u.98971
γ : Type ?u.98974
l✝ m : Language α
a b x : List α
l : Language α
⊢ l∗ = ⨆ (i : ℕ), l ^ i

tactic: simp only [mem_kstar, mem_iSup, mem_pow]
state_before: case h
α : Type u_1
β : Type ?u.98971
γ : Type ?u.98974
l✝ m : Language α
a b x✝ : List α
l : Language α
x : List α
⊢ x ∈ l∗ ↔ x ∈ ⨆ (i : ℕ), l ^ i

tactic: constructor
state_before: case h
α : Type u_1
β : Type ?u.98971
γ : Type ?u.98974
l✝ m : Language α
a b x✝ : List α
l : Language α
x : List α
⊢ (∃ L, x = join L ∧ ∀ (y : List α), y ∈ L → y ∈ l) ↔ ∃ i S, x = join S ∧ length S = i ∧ ∀ (y : List α), y ∈ S → y ∈ l

tactic: rintro ⟨S, rfl, hS⟩
state_before: case h.mp
α : Type u_1
β : Type ?u.98971
γ : Type ?u.98974
l✝ m : Language α
a b x✝ : List α
l : Language α
x : List α
⊢ (∃ L, x = join L ∧ ∀ (y : List α), y ∈ L → y ∈ l) → ∃ i S, x = join S ∧ length S = i ∧ ∀ (y : List α), y ∈ S → y ∈ l

tactic: exact ⟨_, S, rfl, rfl, hS⟩
state_before: case h.mp.intro.intro
α : Type u_1
β : Type ?u.98971
γ : Type ?u.98974
l✝ m : Language α
a b x : List α
l : Language α
S : List (List α)
hS : ∀ (y : List α), y ∈ S → y ∈ l
⊢ ∃ i S_1, join S = join S_1 ∧ length S_1 = i ∧ ∀ (y : List α), y ∈ S_1 → y ∈ l

tactic: rintro ⟨_, S, rfl, rfl, hS⟩
state_before: case h.mpr
α : Type u_1
β : Type ?u.98971
γ : Type ?u.98974
l✝ m : Language α
a b x✝ : List α
l : Language α
x : List α
⊢ (∃ i S, x = join S ∧ length S = i ∧ ∀ (y : List α), y ∈ S → y ∈ l) → ∃ L, x = join L ∧ ∀ (y : List α), y ∈ L → y ∈ l

tactic: exact ⟨S, rfl, hS⟩
state_before: case h.mpr.intro.intro.intro.intro
α : Type u_1
β : Type ?u.98971
γ : Type ?u.98974
l✝ m : Language α
a b x : List α
l : Language α
S : List (List α)
hS : ∀ (y : List α), y ∈ S → y ∈ l
⊢ ∃ L, join S = join L ∧ ∀ (y : List α), y ∈ L → y ∈ l
Theorem: Finset.preimage_mul_left_one'
File: Mathlib/Data/Finset/Pointwise.lean

tactic: rw [preimage_mul_left_one, inv_inv]
state_before: F : Type ?u.682735
α : Type u_1
β : Type ?u.682741
γ : Type ?u.682744
inst✝ : Group α
s t : Finset α
a b : α
⊢ preimage 1 ((fun x x_1 => x * x_1) a⁻¹)
      (_ : Set.InjOn ((fun x x_1 => x * x_1) a⁻¹) ((fun x x_1 => x * x_1) a⁻¹ ⁻¹' ↑1)) =
    {a}
Theorem: continuousAt_dslope_of_ne
File: Mathlib/Analysis/Calculus/Dslope.lean

tactic: simp only [← continuousWithinAt_univ, continuousWithinAt_dslope_of_ne h]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f : 𝕜 → E
a b : 𝕜
s : Set 𝕜
h : b ≠ a
⊢ ContinuousAt (dslope f a) b ↔ ContinuousAt f b
Theorem: Finset.map_insert
File: Mathlib/Data/Finset/Image.lean

tactic: simp only [insert_eq, map_union, map_singleton]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.40518
f✝ : α ↪ β
s✝ : Finset α
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
f : α ↪ β
a : α
s : Finset α
⊢ map f (insert a s) = insert (↑f a) (map f s)
Theorem: Set.unbounded_le_iff
File: Mathlib/Order/Bounded.lean

tactic: simp only [Unbounded, not_le]
state_before: α : Type u_1
r : α → α → Prop
s t : Set α
inst✝ : LinearOrder α
⊢ Unbounded (fun x x_1 => x ≤ x_1) s ↔ ∀ (a : α), ∃ b, b ∈ s ∧ a < b
Theorem: pow_lt_one
File: Mathlib/Algebra/GroupPower/Order.lean

tactic: rw [pow_succ]
state_before: β : Type ?u.215364
A : Type ?u.215367
G : Type ?u.215370
M : Type ?u.215373
R : Type u_1
inst✝ : OrderedSemiring R
a x y : R
n✝ m : ℕ
h₀ : 0 ≤ a
h₁ : a < 1
n : ℕ
x✝ : n + 1 ≠ 0
⊢ a ^ (n + 1) < 1

tactic: exact mul_lt_one_of_nonneg_of_lt_one_left h₀ h₁ (pow_le_one _ h₀ h₁.le)
state_before: β : Type ?u.215364
A : Type ?u.215367
G : Type ?u.215370
M : Type ?u.215373
R : Type u_1
inst✝ : OrderedSemiring R
a x y : R
n✝ m : ℕ
h₀ : 0 ≤ a
h₁ : a < 1
n : ℕ
x✝ : n + 1 ≠ 0
⊢ a * a ^ n < 1
Theorem: Polynomial.Monic.comp
File: Mathlib/Data/Polynomial/RingDivision.lean

tactic: rw [Monic.def, leadingCoeff_comp h, Monic.def.1 hp, Monic.def.1 hq, one_pow, one_mul]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hp : Monic p
hq : Monic q
h : natDegree q ≠ 0
⊢ Monic (Polynomial.comp p q)
Theorem: Ordinal.lsub_eq_lsub
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [lsub_eq_blsub', lsub_eq_blsub']
state_before: α : Type ?u.347946
β : Type ?u.347949
γ : Type ?u.347952
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι ι' : Type u
r : ι → ι → Prop
r' : ι' → ι' → Prop
inst✝¹ : IsWellOrder ι r
inst✝ : IsWellOrder ι' r'
o : Ordinal
ho : type r = o
ho' : type r' = o
f : (a : Ordinal) → a < o → Ordinal
⊢ lsub (familyOfBFamily' r ho f) = lsub (familyOfBFamily' r' ho' f)
Theorem: PiLp.nndist_eq_of_L2
File: Mathlib/Analysis/NormedSpace/PiLp.lean

tactic: push_cast
state_before: p : ℝ≥0∞
𝕜 : Type ?u.291243
𝕜' : Type ?u.291246
ι : Type u_2
α : ι → Type ?u.291254
β✝ : ι → Type ?u.291259
inst✝² : Fintype ι
inst✝¹ : Fact (1 ≤ p)
β : ι → Type u_1
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
x y : PiLp 2 β
⊢ ↑(nndist x y) = ↑(↑NNReal.sqrt (∑ i : ι, nndist (x i) (y i) ^ 2))

tactic: exact dist_eq_of_L2 _ _
state_before: p : ℝ≥0∞
𝕜 : Type ?u.291243
𝕜' : Type ?u.291246
ι : Type u_2
α : ι → Type ?u.291254
β✝ : ι → Type ?u.291259
inst✝² : Fintype ι
inst✝¹ : Fact (1 ≤ p)
β : ι → Type u_1
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
x y : PiLp 2 β
⊢ dist x y = Real.sqrt (∑ x_1 : ι, dist (x x_1) (y x_1) ^ 2)
Theorem: Filter.Frequently.and_eventually
File: Mathlib/Order/Filter/Basic.lean

tactic: refine' mt (fun h => hq.mp <| h.mono _) hp
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.159948
ι : Sort x
p q : α → Prop
f : Filter α
hp : ∃ᶠ (x : α) in f, p x
hq : ∀ᶠ (x : α) in f, q x
⊢ ∃ᶠ (x : α) in f, p x ∧ q x

tactic: exact fun x hpq hq hp => hpq ⟨hp, hq⟩
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.159948
ι : Sort x
p q : α → Prop
f : Filter α
hp : ∃ᶠ (x : α) in f, p x
hq : ∀ᶠ (x : α) in f, q x
h : ∀ᶠ (x : α) in f, ¬(fun x => p x ∧ q x) x
⊢ ∀ (x : α), ¬(fun x => p x ∧ q x) x → q x → ¬(fun x => p x) x
Theorem: pochhammer_succ_right
File: Mathlib/RingTheory/Polynomial/Pochhammer.lean

tactic: suffices h : pochhammer ℕ (n + 1) = pochhammer ℕ n * (X + (n : ℕ[X]))
state_before: S : Type u
inst✝ : Semiring S
n : ℕ
⊢ pochhammer S (n + 1) = pochhammer S n * (X + ↑n)

tactic: induction' n with n ih
state_before: case h
S : Type u
inst✝ : Semiring S
n : ℕ
⊢ pochhammer ℕ (n + 1) = pochhammer ℕ n * (X + ↑n)

tactic: apply_fun Polynomial.map (algebraMap ℕ S) at h
state_before: S : Type u
inst✝ : Semiring S
n : ℕ
h : pochhammer ℕ (n + 1) = pochhammer ℕ n * (X + ↑n)
⊢ pochhammer S (n + 1) = pochhammer S n * (X + ↑n)

tactic: simpa only [pochhammer_map, Polynomial.map_mul, Polynomial.map_add, map_X,
  Polynomial.map_nat_cast] using h
state_before: S : Type u
inst✝ : Semiring S
n : ℕ
h : map (algebraMap ℕ S) (pochhammer ℕ (n + 1)) = map (algebraMap ℕ S) (pochhammer ℕ n * (X + ↑n))
⊢ pochhammer S (n + 1) = pochhammer S n * (X + ↑n)

tactic: simp
state_before: case h.zero
S : Type u
inst✝ : Semiring S
⊢ pochhammer ℕ (Nat.zero + 1) = pochhammer ℕ Nat.zero * (X + ↑Nat.zero)

tactic: conv_lhs =>
  rw [pochhammer_succ_left, ih, mul_comp, ← mul_assoc, ← pochhammer_succ_left, add_comp, X_comp,
    nat_cast_comp, add_assoc, add_comm (1 : ℕ[X]), ← Nat.cast_succ]
state_before: case h.succ
S : Type u
inst✝ : Semiring S
n : ℕ
ih : pochhammer ℕ (n + 1) = pochhammer ℕ n * (X + ↑n)
⊢ pochhammer ℕ (Nat.succ n + 1) = pochhammer ℕ (Nat.succ n) * (X + ↑(Nat.succ n))
Theorem: Polynomial.of_irreducible_expand_pow
File: Mathlib/Data/Polynomial/Expand.lean

tactic: rwa [pow_zero, expand_one] at hf
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : p ≠ 0
f : R[X]
n : ℕ
hf : Irreducible (↑(expand R (p ^ Nat.zero)) f)
⊢ Irreducible f

tactic: rw [pow_succ] at hf
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : p ≠ 0
f : R[X]
n✝ n : ℕ
ih : Irreducible (↑(expand R (p ^ n)) f) → Irreducible f
hf : Irreducible (↑(expand R (p ^ Nat.succ n)) f)
⊢ Irreducible (↑(expand R p) (↑(expand R (p ^ n)) f))

tactic: rwa [expand_expand]
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : p ≠ 0
f : R[X]
n✝ n : ℕ
ih : Irreducible (↑(expand R (p ^ n)) f) → Irreducible f
hf : Irreducible (↑(expand R (p * p ^ n)) f)
⊢ Irreducible (↑(expand R p) (↑(expand R (p ^ n)) f))
Theorem: Submonoid.leftInvEquiv_symm_eq_inv
File: Mathlib/GroupTheory/Submonoid/Inverses.lean

tactic: rw [← mul_right_inj (x : M), mul_right_inv, mul_leftInvEquiv_symm]
state_before: M : Type u_1
inst✝ : CommGroup M
S : Submonoid M
hS : S ≤ IsUnit.submonoid M
x : { x // x ∈ S }
⊢ ↑(↑(MulEquiv.symm (leftInvEquiv S hS)) x) = (↑x)⁻¹
Theorem: discreteTopology_iff_orderTopology_of_pred_succ'
File: Mathlib/Topology/Instances/Discrete.lean

tactic: refine' ⟨fun h => ⟨_⟩, fun h => ⟨_⟩⟩
state_before: α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
⊢ DiscreteTopology α ↔ OrderTopology α

tactic: rw [h.eq_bot]
state_before: case refine'_1
α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
h : DiscreteTopology α
⊢ inst✝⁵ = generateFrom {s | ∃ a, s = Ioi a ∨ s = Iio a}

tactic: exact bot_topologicalSpace_eq_generateFrom_of_pred_succOrder
state_before: case refine'_1
α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
h : DiscreteTopology α
⊢ ⊥ = generateFrom {s | ∃ a, s = Ioi a ∨ s = Iio a}

tactic: rw [h.topology_eq_generate_intervals]
state_before: case refine'_2
α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
h : OrderTopology α
⊢ inst✝⁵ = ⊥

tactic: exact bot_topologicalSpace_eq_generateFrom_of_pred_succOrder.symm
state_before: case refine'_2
α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
h : OrderTopology α
⊢ generateFrom {s | ∃ a, s = Ioi a ∨ s = Iio a} = ⊥
Theorem: IsUnifLocDoublingMeasure.ae_tendsto_measure_inter_div
File: Mathlib/MeasureTheory/Covering/DensityTheorem.lean

tactic: filter_upwards [(vitaliFamily μ K).ae_tendsto_measure_inter_div S] with x hx ι l w δ δlim
  xmem using hx.comp (tendsto_closedBall_filterAt μ _ _ δlim xmem)
state_before: α : Type u_1
inst✝⁶ : MetricSpace α
inst✝⁵ : MeasurableSpace α
μ : MeasureTheory.Measure α
inst✝⁴ : IsUnifLocDoublingMeasure μ
inst✝³ : SecondCountableTopology α
inst✝² : BorelSpace α
inst✝¹ : IsLocallyFiniteMeasure μ
E : Type ?u.1198936
inst✝ : NormedAddCommGroup E
S : Set α
K : ℝ
⊢ ∀ᵐ (x : α) ∂Measure.restrict μ S,
    ∀ {ι : Type u_2} {l : Filter ι} (w : ι → α) (δ : ι → ℝ),
      Tendsto δ l (𝓝[Ioi 0] 0) →
        (∀ᶠ (j : ι) in l, x ∈ closedBall (w j) (K * δ j)) →
          Tendsto (fun j => ↑↑μ (S ∩ closedBall (w j) (δ j)) / ↑↑μ (closedBall (w j) (δ j))) l (𝓝 1)