tasksource/leandojo huggingface dataset:
Theorem: IsPrimitiveRoot.eq_pow_of_pow_eq_one
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: lift ζ to Rˣ using h.isUnit h0
state_before: M : Type ?u.3458904
N : Type ?u.3458907
G : Type ?u.3458910
R : Type u_1
S : Type ?u.3458916
F : Type ?u.3458919
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k✝ l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k✝
inst✝ : IsDomain R
k : ℕ
ζ ξ : R
h : IsPrimitiveRoot ζ k
hξ : ξ ^ k = 1
h0 : 0 < k
⊢ ∃ i, i < k ∧ ζ ^ i = ξ

tactic: lift ξ to Rˣ using isUnit_ofPowEqOne hξ h0.ne'
state_before: case intro
M : Type ?u.3458904
N : Type ?u.3458907
G : Type ?u.3458910
R : Type u_1
S : Type ?u.3458916
F : Type ?u.3458919
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k✝ l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k✝
inst✝ : IsDomain R
k : ℕ
ξ : R
hξ : ξ ^ k = 1
h0 : 0 < k
ζ : Rˣ
h : IsPrimitiveRoot (↑ζ) k
⊢ ∃ i, i < k ∧ ↑ζ ^ i = ξ

tactic: lift k to ℕ+ using h0
state_before: case intro.intro
M : Type ?u.3458904
N : Type ?u.3458907
G : Type ?u.3458910
R : Type u_1
S : Type ?u.3458916
F : Type ?u.3458919
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k✝ l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k✝
inst✝ : IsDomain R
k : ℕ
h0 : 0 < k
ζ : Rˣ
h : IsPrimitiveRoot (↑ζ) k
ξ : Rˣ
hξ : ↑ξ ^ k = 1
⊢ ∃ i, i < k ∧ ↑ζ ^ i = ↑ξ

tactic: simp only [← Units.val_pow_eq_pow_val, ← Units.ext_iff]
state_before: case intro.intro.intro
M : Type ?u.3458904
N : Type ?u.3458907
G : Type ?u.3458910
R : Type u_1
S : Type ?u.3458916
F : Type ?u.3458919
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k✝ l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k✝
inst✝ : IsDomain R
ζ ξ : Rˣ
k : ℕ+
h : IsPrimitiveRoot ↑ζ ↑k
hξ : ↑ξ ^ ↑k = 1
⊢ ∃ i, i < ↑k ∧ ↑ζ ^ i = ↑ξ

tactic: rw [coe_units_iff] at h
state_before: case intro.intro.intro
M : Type ?u.3458904
N : Type ?u.3458907
G : Type ?u.3458910
R : Type u_1
S : Type ?u.3458916
F : Type ?u.3458919
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k✝ l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k✝
inst✝ : IsDomain R
ζ ξ : Rˣ
k : ℕ+
h : IsPrimitiveRoot ↑ζ ↑k
hξ : ↑ξ ^ ↑k = 1
⊢ ∃ i, i < ↑k ∧ ζ ^ i = ξ

tactic: apply h.eq_pow_of_mem_rootsOfUnity
state_before: case intro.intro.intro
M : Type ?u.3458904
N : Type ?u.3458907
G : Type ?u.3458910
R : Type u_1
S : Type ?u.3458916
F : Type ?u.3458919
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k✝ l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k✝
inst✝ : IsDomain R
ζ ξ : Rˣ
k : ℕ+
h : IsPrimitiveRoot ζ ↑k
hξ : ↑ξ ^ ↑k = 1
⊢ ∃ i, i < ↑k ∧ ζ ^ i = ξ

tactic: rw [mem_rootsOfUnity, Units.ext_iff, Units.val_pow_eq_pow_val, hξ, Units.val_one]
state_before: case intro.intro.intro
M : Type ?u.3458904
N : Type ?u.3458907
G : Type ?u.3458910
R : Type u_1
S : Type ?u.3458916
F : Type ?u.3458919
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k✝ l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k✝
inst✝ : IsDomain R
ζ ξ : Rˣ
k : ℕ+
h : IsPrimitiveRoot ζ ↑k
hξ : ↑ξ ^ ↑k = 1
⊢ ξ ∈ rootsOfUnity k R
Theorem: MeasureTheory.OuterMeasure.sInf_apply
File: Mathlib/MeasureTheory/Measure/OuterMeasure.lean

tactic: simp_rw [sInf_eq_boundedBy_sInfGen, boundedBy_apply, iSup_sInfGen_nonempty h]
state_before: α : Type u_1
m : Set (OuterMeasure α)
s : Set α
h : Set.Nonempty m
⊢ ↑(sInf m) s = ⨅ (t : ℕ → Set α) (_ : s ⊆ iUnion t), ∑' (n : ℕ), ⨅ (μ : OuterMeasure α) (_ : μ ∈ m), ↑μ (t n)
Theorem: PadicInt.valuation_p
File: Mathlib/NumberTheory/Padics/PadicIntegers.lean

tactic: simp [valuation]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
⊢ valuation ↑p = 1
Theorem: Filter.frequently_bot
File: Mathlib/Order/Filter/Basic.lean

tactic: simp
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.169823
ι : Sort x
p : α → Prop
⊢ ¬∃ᶠ (x : α) in ⊥, p x
Theorem: Finset.subset_powersetLen_univ_iff
File: Mathlib/Data/Finset/Slice.lean

tactic: rw [mem_powerset_len_univ_iff, mem_coe]
state_before: α : Type u_1
ι : Sort ?u.3644
κ : ι → Sort ?u.3649
inst✝ : Fintype α
𝒜 : Finset (Finset α)
s : Finset α
r : ℕ
A : Finset α
⊢ A ∈ 𝒜 → A ∈ powersetLen r univ ↔ A ∈ ↑𝒜 → card A = r
Theorem: deriv.lhopital_zero_atBot_on_Iio
File: Mathlib/Analysis/Calculus/LHopital.lean

tactic: have hdf : ∀ x ∈ Iio a, DifferentiableAt ℝ f x := fun x hx =>
  (hdf x hx).differentiableAt (Iio_mem_nhds hx)
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf : DifferentiableOn ℝ f (Iio a)
hg' : ∀ (x : ℝ), x ∈ Iio a → deriv g x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atBot l
⊢ Tendsto (fun x => f x / g x) atBot l

tactic: have hdg : ∀ x ∈ Iio a, DifferentiableAt ℝ g x := fun x hx =>
  by_contradiction fun h => hg' x hx (deriv_zero_of_not_differentiableAt h)
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Iio a)
hg' : ∀ (x : ℝ), x ∈ Iio a → deriv g x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atBot l
hdf : ∀ (x : ℝ), x ∈ Iio a → DifferentiableAt ℝ f x
⊢ Tendsto (fun x => f x / g x) atBot l

tactic: exact HasDerivAt.lhopital_zero_atBot_on_Iio (fun x hx => (hdf x hx).hasDerivAt)
  (fun x hx => (hdg x hx).hasDerivAt) hg' hfbot hgbot hdiv
state_before: a b : ℝ
hab : a < b
l : Filter ℝ
f f' g g' : ℝ → ℝ
hdf✝ : DifferentiableOn ℝ f (Iio a)
hg' : ∀ (x : ℝ), x ∈ Iio a → deriv g x ≠ 0
hfbot : Tendsto f atBot (𝓝 0)
hgbot : Tendsto g atBot (𝓝 0)
hdiv : Tendsto (fun x => deriv f x / deriv g x) atBot l
hdf : ∀ (x : ℝ), x ∈ Iio a → DifferentiableAt ℝ f x
hdg : ∀ (x : ℝ), x ∈ Iio a → DifferentiableAt ℝ g x
⊢ Tendsto (fun x => f x / g x) atBot l
Theorem: Matrix.SpecialLinearGroup.det_ne_zero
File: Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.lean

tactic: rw [g.det_coe]
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
A B : SpecialLinearGroup n R
inst✝ : Nontrivial R
g : SpecialLinearGroup n R
⊢ det ↑g ≠ 0

tactic: norm_num
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
A B : SpecialLinearGroup n R
inst✝ : Nontrivial R
g : SpecialLinearGroup n R
⊢ 1 ≠ 0
Theorem: inf_eq_bot_of_coprime
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: refine' (H ⊓ K).eq_bot_iff_forall.mpr fun x hx => _
state_before: G✝ : Type u
A : Type v
x y : G✝
a b : A
n m : ℕ
inst✝⁵ : Group G✝
inst✝⁴ : AddGroup A
inst✝³ : Fintype G✝
G : Type u_1
inst✝² : Group G
H K : Subgroup G
inst✝¹ : Fintype { x // x ∈ H }
inst✝ : Fintype { x // x ∈ K }
h : coprime (Fintype.card { x // x ∈ H }) (Fintype.card { x // x ∈ K })
⊢ H ⊓ K = ⊥

tactic: rw [← orderOf_eq_one_iff, ← Nat.dvd_one, ← h.gcd_eq_one, Nat.dvd_gcd_iff]
state_before: G✝ : Type u
A : Type v
x✝ y : G✝
a b : A
n m : ℕ
inst✝⁵ : Group G✝
inst✝⁴ : AddGroup A
inst✝³ : Fintype G✝
G : Type u_1
inst✝² : Group G
H K : Subgroup G
inst✝¹ : Fintype { x // x ∈ H }
inst✝ : Fintype { x // x ∈ K }
h : coprime (Fintype.card { x // x ∈ H }) (Fintype.card { x // x ∈ K })
x : G
hx : x ∈ H ⊓ K
⊢ x = 1
Theorem: Set.Finite.finite_subsets
File: Mathlib/Data/Set/Finite.lean

tactic: simpa [← @exists_finite_iff_finset α fun t => t ⊆ a ∧ t = s, Finite.subset_toFinset, ←
  and_assoc, Finset.coeEmb] using h.subset
state_before: α✝ : Type u
β : Type v
ι : Sort w
γ : Type x
α : Type u
a : Set α
h : Set.Finite a
s : Set α
⊢ s ∈ Finset.map Finset.coeEmb.toEmbedding (Finset.powerset (Finite.toFinset h)) ↔ s ∈ {b | b ⊆ a}
Theorem: AddCircle.coe_image_Ioc_eq
File: Mathlib/Topology/Instances/AddCircle.lean

tactic: rw [image_eq_range]
state_before: 𝕜 : Type u_1
B : Type ?u.105763
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
⊢ QuotientAddGroup.mk '' Ioc a (a + p) = univ

tactic: exact (equivIoc p a).symm.range_eq_univ
state_before: 𝕜 : Type u_1
B : Type ?u.105763
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p : 𝕜
hp : Fact (0 < p)
a : 𝕜
inst✝ : Archimedean 𝕜
⊢ (range fun x => ↑↑x) = univ
Theorem: CategoryTheory.Functor.mono_map_iff_mono
File: Mathlib/CategoryTheory/Functor/EpiMono.lean

tactic: constructor
state_before: C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
E : Type u₃
inst✝ : Category E
F : C ⥤ D
X Y : C
f : X ⟶ Y
hF₁ : PreservesMonomorphisms F
hF₂ : ReflectsMonomorphisms F
⊢ Mono (F.map f) ↔ Mono f

tactic: exact F.mono_of_mono_map
state_before: case mp
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
E : Type u₃
inst✝ : Category E
F : C ⥤ D
X Y : C
f : X ⟶ Y
hF₁ : PreservesMonomorphisms F
hF₂ : ReflectsMonomorphisms F
⊢ Mono (F.map f) → Mono f

tactic: intro h
state_before: case mpr
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
E : Type u₃
inst✝ : Category E
F : C ⥤ D
X Y : C
f : X ⟶ Y
hF₁ : PreservesMonomorphisms F
hF₂ : ReflectsMonomorphisms F
⊢ Mono f → Mono (F.map f)

tactic: exact F.map_mono f
state_before: case mpr
C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
E : Type u₃
inst✝ : Category E
F : C ⥤ D
X Y : C
f : X ⟶ Y
hF₁ : PreservesMonomorphisms F
hF₂ : ReflectsMonomorphisms F
h : Mono f
⊢ Mono (F.map f)
Theorem: CategoryTheory.essentiallySmall_iff_of_thin
File: Mathlib/CategoryTheory/EssentiallySmall.lean

tactic: simp [essentiallySmall_iff, CategoryTheory.locallySmall_of_thin]
state_before: C✝ : Type u
inst✝² : Category C✝
C : Type u
inst✝¹ : Category C
inst✝ : Quiver.IsThin C
⊢ EssentiallySmall C ↔ Small (Skeleton C)
Theorem: WithOne.map_map
File: Mathlib/Algebra/Group/WithOne/Basic.lean

tactic: induction x using WithOne.cases_on <;> rfl
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : Mul α
inst✝¹ : Mul β
inst✝ : Mul γ
f : α →ₙ* β
g : β →ₙ* γ
x : WithOne α
⊢ ↑(map g) (↑(map f) x) = ↑(map (MulHom.comp g f)) x
Theorem: multiplicity.neg
File: Mathlib/RingTheory/Multiplicity.lean

tactic: simp only [multiplicity, PartENat.find, dvd_neg]
state_before: α : Type u_1
inst✝¹ : Ring α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
⊢ (multiplicity a (-b)).Dom ↔ (multiplicity a b).Dom

tactic: rw [PartENat.natCast_get]
state_before: α : Type u_1
inst✝¹ : Ring α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
h₁ : (multiplicity a (-b)).Dom
h₂ : (multiplicity a b).Dom
⊢ ↑(Part.get (multiplicity a (-b)) h₁) = ↑(Part.get (multiplicity a b) h₂)

tactic: exact Eq.symm
        (unique (pow_multiplicity_dvd _).neg_right
          (mt dvd_neg.1 (is_greatest' _ (lt_succ_self _))))
state_before: α : Type u_1
inst✝¹ : Ring α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
h₁ : (multiplicity a (-b)).Dom
h₂ : (multiplicity a b).Dom
⊢ multiplicity a (-b) = ↑(Part.get (multiplicity a b) h₂)
Theorem: Finset.card_congr
File: Mathlib/Data/Finset/Card.lean

tactic: classical calc
    s.card = s.attach.card := card_attach.symm
    _ = (s.attach.image fun a : { a // a ∈ s } => f a.1 a.2).card :=
      Eq.symm ((card_image_of_injective _) fun a b h => Subtype.eq <| h₂ _ _ _ _ h)
    _ = t.card :=
      congr_arg card
        (Finset.ext fun b =>
          ⟨fun h =>
            let ⟨a, _, ha₂⟩ := mem_image.1 h
            ha₂ ▸ h₁ _ _,
            fun h =>
            let ⟨a, ha₁, ha₂⟩ := h₃ b h
            mem_image.2 ⟨⟨a, ha₁⟩, by simp [ha₂]⟩⟩)
state_before: α : Type u_2
β : Type u_1
s t✝ : Finset α
f✝ : α → β
n : ℕ
t : Finset β
f : (a : α) → a ∈ s → β
h₁ : ∀ (a : α) (ha : a ∈ s), f a ha ∈ t
h₂ : ∀ (a b : α) (ha : a ∈ s) (hb : b ∈ s), f a ha = f b hb → a = b
h₃ : ∀ (b : β), b ∈ t → ∃ a ha, f a ha = b
⊢ card s = card t

tactic: calc
s.card = s.attach.card := card_attach.symm
_ = (s.attach.image fun a : { a // a ∈ s } => f a.1 a.2).card :=
Eq.symm ((card_image_of_injective _) fun a b h => Subtype.eq <| h₂ _ _ _ _ h)
_ = t.card :=
congr_arg card
(Finset.ext fun b =>
⟨fun h =>
  let ⟨a, _, ha₂⟩ := mem_image.1 h
  ha₂ ▸ h₁ _ _,
  fun h =>
  let ⟨a, ha₁, ha₂⟩ := h₃ b h
  mem_image.2 ⟨⟨a, ha₁⟩, by simp [ha₂]⟩⟩)
state_before: α : Type u_2
β : Type u_1
s t✝ : Finset α
f✝ : α → β
n : ℕ
t : Finset β
f : (a : α) → a ∈ s → β
h₁ : ∀ (a : α) (ha : a ∈ s), f a ha ∈ t
h₂ : ∀ (a b : α) (ha : a ∈ s) (hb : b ∈ s), f a ha = f b hb → a = b
h₃ : ∀ (b : β), b ∈ t → ∃ a ha, f a ha = b
⊢ card s = card t

tactic: simp [ha₂]
state_before: α : Type u_2
β : Type u_1
s t✝ : Finset α
f✝ : α → β
n : ℕ
t : Finset β
f : (a : α) → a ∈ s → β
h₁ : ∀ (a : α) (ha : a ∈ s), f a ha ∈ t
h₂ : ∀ (a b : α) (ha : a ∈ s) (hb : b ∈ s), f a ha = f b hb → a = b
h₃ : ∀ (b : β), b ∈ t → ∃ a ha, f a ha = b
b : β
h : b ∈ t
a : α
ha₁ : a ∈ s
ha₂ : f a ha₁ = b
⊢ { val := a, property := ha₁ } ∈ attach s ∧
    f ↑{ val := a, property := ha₁ } (_ : ↑{ val := a, property := ha₁ } ∈ s) = b
Theorem: CategoryTheory.Limits.limit.isoLimitCone_hom_π
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

tactic: dsimp [limit.isoLimitCone, IsLimit.conePointUniqueUpToIso]
state_before: J : Type u₁
inst✝³ : Category J
K : Type u₂
inst✝² : Category K
C : Type u
inst✝¹ : Category C
F✝ F : J ⥤ C
inst✝ : HasLimit F
t : LimitCone F
j : J
⊢ (isoLimitCone t).hom ≫ t.cone.π.app j = π F j

tactic: aesop_cat
state_before: J : Type u₁
inst✝³ : Category J
K : Type u₂
inst✝² : Category K
C : Type u
inst✝¹ : Category C
F✝ F : J ⥤ C
inst✝ : HasLimit F
t : LimitCone F
j : J
⊢ IsLimit.lift t.isLimit (cone F) ≫ t.cone.π.app j = π F j
Theorem: List.head?_append
File: Mathlib/Data/List/Basic.lean

tactic: cases s
state_before: ι : Type ?u.42760
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ s t : List α
x : α
h : x ∈ head? s
⊢ x ∈ head? (s ++ t)

tactic: contradiction
state_before: case nil
ι : Type ?u.42760
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ t : List α
x : α
h : x ∈ head? []
⊢ x ∈ head? ([] ++ t)

case cons
ι : Type ?u.42760
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ t : List α
x head✝ : α
tail✝ : List α
h : x ∈ head? (head✝ :: tail✝)
⊢ x ∈ head? (head✝ :: tail✝ ++ t)

tactic: exact h
state_before: case cons
ι : Type ?u.42760
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ t : List α
x head✝ : α
tail✝ : List α
h : x ∈ head? (head✝ :: tail✝)
⊢ x ∈ head? (head✝ :: tail✝ ++ t)
Theorem: Real.rpow_one
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simp [rpow_def]
state_before: x : ℝ
⊢ x ^ 1 = x
Theorem: QuotientGroup.rightRel_r_eq_rightCosetEquivalence
File: Mathlib/GroupTheory/Coset.lean

tactic: ext
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
⊢ Setoid.r = RightCosetEquivalence ↑s

tactic: rw [rightRel_eq]
state_before: case h.h.a
α : Type u_1
inst✝ : Group α
s : Subgroup α
x✝¹ x✝ : α
⊢ Setoid.r x✝¹ x✝ ↔ RightCosetEquivalence (↑s) x✝¹ x✝

tactic: exact (rightCoset_eq_iff s).symm
state_before: case h.h.a
α : Type u_1
inst✝ : Group α
s : Subgroup α
x✝¹ x✝ : α
⊢ (fun x y => y * x⁻¹ ∈ s) x✝¹ x✝ ↔ RightCosetEquivalence (↑s) x✝¹ x✝
Theorem: Ordinal.nfp_lt_ord
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: simpa using Cardinal.one_lt_aleph0.trans hc
state_before: α : Type ?u.35734
r : α → α → Prop
f : Ordinal → Ordinal
c : Ordinal
hc : ℵ₀ < cof c
hf : ∀ (i : Ordinal), i < c → f i < c
a : Ordinal
⊢ Cardinal.lift (#Unit) < cof c
Theorem: IsConformalMap.injective
File: Mathlib/Analysis/NormedSpace/ConformalLinearMap.lean

tactic: rcases h with ⟨c, hc, li, rfl⟩
state_before: R : Type u_1
M : Type ?u.238550
N : Type u_3
G : Type ?u.238556
M' : Type u_2
inst✝⁸ : NormedField R
inst✝⁷ : SeminormedAddCommGroup M
inst✝⁶ : SeminormedAddCommGroup N
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace R M
inst✝³ : NormedSpace R N
inst✝² : NormedSpace R G
inst✝¹ : NormedAddCommGroup M'
inst✝ : NormedSpace R M'
f✝ : M →L[R] N
g : N →L[R] G
c : R
f : M' →L[R] N
h : IsConformalMap f
⊢ Injective ↑f

tactic: exact (smul_right_injective _ hc).comp li.injective
state_before: case intro.intro.intro
R : Type u_1
M : Type ?u.238550
N : Type u_3
G : Type ?u.238556
M' : Type u_2
inst✝⁸ : NormedField R
inst✝⁷ : SeminormedAddCommGroup M
inst✝⁶ : SeminormedAddCommGroup N
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace R M
inst✝³ : NormedSpace R N
inst✝² : NormedSpace R G
inst✝¹ : NormedAddCommGroup M'
inst✝ : NormedSpace R M'
f : M →L[R] N
g : N →L[R] G
c✝ c : R
hc : c ≠ 0
li : M' →ₗᵢ[R] N
⊢ Injective ↑(c • toContinuousLinearMap li)
Theorem: newton_seq_succ_dist
File: Mathlib/NumberTheory/Padics/Hensel.lean

tactic: rw [newton_seq_deriv_norm]
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 : ℕ
⊢ ‖Polynomial.eval (newton_seq n) F‖ / ‖Polynomial.eval (newton_seq n) (↑Polynomial.derivative F)‖ =
    ‖Polynomial.eval (newton_seq n) F‖ / ‖Polynomial.eval a (↑Polynomial.derivative F)‖
Theorem: Real.Angle.two_zsmul_eq_zero_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: simp_rw [two_zsmul, ← two_nsmul, two_nsmul_eq_zero_iff]
state_before: θ : Angle
⊢ 2 • θ = 0 ↔ θ = 0 ∨ θ = ↑π
Theorem: Int.natAbs_lt_iff_mul_self_lt
File: Mathlib/Data/Int/Order/Lemmas.lean

tactic: rw [← abs_lt_iff_mul_self_lt, abs_eq_natAbs, abs_eq_natAbs]
state_before: a✝ b✝ : ℤ
n : ℕ
a b : ℤ
⊢ natAbs a < natAbs b ↔ a * a < b * b

tactic: exact Int.ofNat_lt.symm
state_before: a✝ b✝ : ℤ
n : ℕ
a b : ℤ
⊢ natAbs a < natAbs b ↔ ↑(natAbs a) < ↑(natAbs b)
Theorem: PFunctor.fst_map
File: Mathlib/Data/PFunctor/Univariate/Basic.lean

tactic: cases x
state_before: P : PFunctor
α✝ β✝ α β : Type u
x : Obj P α
f : α → β
⊢ (f <$> x).fst = x.fst

tactic: rfl
state_before: case mk
P : PFunctor
α✝ β✝ α β : Type u
f : α → β
fst✝ : P.A
snd✝ : B P fst✝ → α
⊢ (f <$> { fst := fst✝, snd := snd✝ }).fst = { fst := fst✝, snd := snd✝ }.fst
Theorem: NormedAddGroupHom.completion_comp
File: Mathlib/Analysis/Normed/Group/HomCompletion.lean

tactic: ext x
state_before: G : Type u_1
inst✝² : SeminormedAddCommGroup G
H : Type u_2
inst✝¹ : SeminormedAddCommGroup H
K : Type u_3
inst✝ : SeminormedAddCommGroup K
f : NormedAddGroupHom G H
g : NormedAddGroupHom H K
⊢ NormedAddGroupHom.comp (completion g) (completion f) = completion (NormedAddGroupHom.comp g f)

tactic: rw [NormedAddGroupHom.coe_comp, NormedAddGroupHom.completion_def,
  NormedAddGroupHom.completion_coe_to_fun, NormedAddGroupHom.completion_coe_to_fun,
  Completion.map_comp g.uniformContinuous f.uniformContinuous]
state_before: case H
G : Type u_1
inst✝² : SeminormedAddCommGroup G
H : Type u_2
inst✝¹ : SeminormedAddCommGroup H
K : Type u_3
inst✝ : SeminormedAddCommGroup K
f : NormedAddGroupHom G H
g : NormedAddGroupHom H K
x : Completion G
⊢ ↑(NormedAddGroupHom.comp (completion g) (completion f)) x = ↑(completion (NormedAddGroupHom.comp g f)) x

tactic: rfl
state_before: case H
G : Type u_1
inst✝² : SeminormedAddCommGroup G
H : Type u_2
inst✝¹ : SeminormedAddCommGroup H
K : Type u_3
inst✝ : SeminormedAddCommGroup K
f : NormedAddGroupHom G H
g : NormedAddGroupHom H K
x : Completion G
⊢ Completion.map (↑g ∘ ↑f) x = Completion.map (↑(NormedAddGroupHom.comp g f)) x
Theorem: lt_of_tsub_lt_tsub_right_of_le
File: Mathlib/Algebra/Order/Sub/Canonical.lean

tactic: refine' ((tsub_le_tsub_iff_right h).mp h2.le).lt_of_ne _
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 : α
h : c ≤ b
h2 : a - c < b - c
⊢ a < b

tactic: rintro rfl
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 : α
h : c ≤ b
h2 : a - c < b - c
⊢ a ≠ b

tactic: exact h2.false
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 c d : α
h : c ≤ a
h2 : a - c < a - c
⊢ False
Theorem: Equiv.Perm.sign_extendDomain
File: Mathlib/GroupTheory/Perm/Sign.lean

tactic: simp only [Equiv.Perm.extendDomain, sign_subtypeCongr, sign_permCongr, sign_refl, mul_one]
state_before: α : Type u
β : Type v
inst✝⁴ : DecidableEq α
inst✝³ : Fintype α
inst✝² : DecidableEq β
inst✝¹ : Fintype β
e : Perm α
p : β → Prop
inst✝ : DecidablePred p
f : α ≃ Subtype p
⊢ ↑sign (extendDomain e f) = ↑sign e
Theorem: mem_extremePoints_iff_extreme_singleton
File: Mathlib/Analysis/Convex/Extreme.lean

tactic: refine' ⟨_, fun hx ↦ ⟨singleton_subset_iff.1 hx.1, fun x₁ hx₁ x₂ hx₂ ↦ hx.2 hx₁ hx₂ rfl⟩⟩
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.5166
ι : Type ?u.5169
π : ι → Type ?u.5174
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMul 𝕜 E
A B C : Set E
x : E
⊢ x ∈ extremePoints 𝕜 A ↔ IsExtreme 𝕜 A {x}

tactic: rintro ⟨hxA, hAx⟩
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.5166
ι : Type ?u.5169
π : ι → Type ?u.5174
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMul 𝕜 E
A B C : Set E
x : E
⊢ x ∈ extremePoints 𝕜 A → IsExtreme 𝕜 A {x}

tactic: use singleton_subset_iff.2 hxA
state_before: case intro
𝕜 : Type u_2
E : Type u_1
F : Type ?u.5166
ι : Type ?u.5169
π : ι → Type ?u.5174
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMul 𝕜 E
A B C : Set E
x : E
hxA : x ∈ A
hAx : ∀ ⦃x₁ : E⦄, x₁ ∈ A → ∀ ⦃x₂ : E⦄, x₂ ∈ A → x ∈ openSegment 𝕜 x₁ x₂ → x₁ = x ∧ x₂ = x
⊢ IsExtreme 𝕜 A {x}

tactic: rintro x₁ hx₁A x₂ hx₂A y (rfl : y = x)
state_before: case intro
𝕜 : Type u_2
E : Type u_1
F : Type ?u.5166
ι : Type ?u.5169
π : ι → Type ?u.5174
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMul 𝕜 E
A B C : Set E
x : E
hxA : x ∈ A
hAx : ∀ ⦃x₁ : E⦄, x₁ ∈ A → ∀ ⦃x₂ : E⦄, x₂ ∈ A → x ∈ openSegment 𝕜 x₁ x₂ → x₁ = x ∧ x₂ = x
⊢ ∀ ⦃x₁ : E⦄, x₁ ∈ A → ∀ ⦃x₂ : E⦄, x₂ ∈ A → ∀ ⦃x_1 : E⦄, x_1 ∈ {x} → x_1 ∈ openSegment 𝕜 x₁ x₂ → x₁ ∈ {x} ∧ x₂ ∈ {x}

tactic: exact hAx hx₁A hx₂A
state_before: case intro
𝕜 : Type u_2
E : Type u_1
F : Type ?u.5166
ι : Type ?u.5169
π : ι → Type ?u.5174
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMul 𝕜 E
A B C : Set E
x₁ : E
hx₁A : x₁ ∈ A
x₂ : E
hx₂A : x₂ ∈ A
y : E
hxA : y ∈ A
hAx : ∀ ⦃x₁ : E⦄, x₁ ∈ A → ∀ ⦃x₂ : E⦄, x₂ ∈ A → y ∈ openSegment 𝕜 x₁ x₂ → x₁ = y ∧ x₂ = y
⊢ y ∈ openSegment 𝕜 x₁ x₂ → x₁ ∈ {y} ∧ x₂ ∈ {y}
Theorem: Polynomial.integralNormalization_support
File: Mathlib/Data/Polynomial/IntegralNormalization.lean

tactic: intro
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
f : R[X]
⊢ support (integralNormalization f) ⊆ support f

tactic: simp (config := { contextual := true }) [integralNormalization, coeff_monomial, mem_support_iff]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
f : R[X]
a✝ : ℕ
⊢ a✝ ∈ support (integralNormalization f) → a✝ ∈ support f
Theorem: nnnorm_prod_le
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: push_cast
state_before: 𝓕 : Type ?u.1102940
𝕜 : Type ?u.1102943
α : Type ?u.1102946
ι : Type u_1
κ : Type ?u.1102952
E : Type u_2
F : Type ?u.1102958
G : Type ?u.1102961
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
s : Finset ι
f : ι → E
⊢ ↑‖∏ a in s, f a‖₊ ≤ ↑(∑ a in s, ‖f a‖₊)

tactic: exact norm_prod_le _ _
state_before: 𝓕 : Type ?u.1102940
𝕜 : Type ?u.1102943
α : Type ?u.1102946
ι : Type u_1
κ : Type ?u.1102952
E : Type u_2
F : Type ?u.1102958
G : Type ?u.1102961
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
s : Finset ι
f : ι → E
⊢ ‖∏ a in s, f a‖ ≤ ∑ x in s, ‖f x‖
Theorem: Rat.num_pos_iff_pos
File: Mathlib/Data/Rat/Order.lean

tactic: simpa [(by cases a; rfl : (-a).num = -a.num)] using @num_nonneg_iff_zero_le (-a)
state_before: a✝ b c a : ℚ
⊢ a.num ≤ 0 ↔ a ≤ 0

tactic: cases a
state_before: a✝ b c a : ℚ
⊢ (-a).num = -a.num

tactic: rfl
state_before: case mk'
a b c : ℚ
num✝ : ℤ
den✝ : ℕ
den_nz✝ : den✝ ≠ 0
reduced✝ : Nat.coprime (Int.natAbs num✝) den✝
⊢ (-mk' num✝ den✝).num = -(mk' num✝ den✝).num
Theorem: eq_one_div_of_mul_eq_one_left
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [eq_inv_of_mul_eq_one_left h, one_div]
state_before: α : Type u_1
β : Type ?u.21993
G : Type ?u.21996
inst✝ : DivisionMonoid α
a b c : α
h : b * a = 1
⊢ b = 1 / a