tasksource/leandojo huggingface dataset:
Theorem: HahnSeries.SummableFamily.embDomain_succ_smul_powers
File: Mathlib/RingTheory/HahnSeries.lean

tactic: apply SummableFamily.ext
state_before: Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
⊢ embDomain (x • powers x hx) { toFun := Nat.succ, inj' := Nat.succ_injective } =
    powers x hx - ofFinsupp (Finsupp.single 0 1)

tactic: rintro (_ | n)
state_before: case h
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
⊢ ∀ (a : ℕ),
    toFun (embDomain (x • powers x hx) { toFun := Nat.succ, inj' := Nat.succ_injective }) a =
      toFun (powers x hx - ofFinsupp (Finsupp.single 0 1)) a

tactic: rw [embDomain_notin_range, sub_apply, coe_powers, pow_zero, coe_ofFinsupp,
  Finsupp.single_eq_same, sub_self]
state_before: case h.zero
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
⊢ toFun (embDomain (x • powers x hx) { toFun := Nat.succ, inj' := Nat.succ_injective }) Nat.zero =
    toFun (powers x hx - ofFinsupp (Finsupp.single 0 1)) Nat.zero

tactic: rw [Set.mem_range, not_exists]
state_before: case h.zero.h
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
⊢ ¬Nat.zero ∈ Set.range ↑{ toFun := Nat.succ, inj' := Nat.succ_injective }

tactic: exact Nat.succ_ne_zero
state_before: case h.zero.h
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
⊢ ∀ (x : ℕ), ¬↑{ toFun := Nat.succ, inj' := Nat.succ_injective } x = Nat.zero

tactic: refine' Eq.trans (embDomain_image _ ⟨Nat.succ, Nat.succ_injective⟩) _
state_before: case h.succ
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
n : ℕ
⊢ toFun (embDomain (x • powers x hx) { toFun := Nat.succ, inj' := Nat.succ_injective }) (Nat.succ n) =
    toFun (powers x hx - ofFinsupp (Finsupp.single 0 1)) (Nat.succ n)

tactic: simp only [pow_succ, coe_powers, coe_sub, smul_apply, coe_ofFinsupp, Pi.sub_apply]
state_before: case h.succ
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
n : ℕ
⊢ toFun (x • powers x hx) n = toFun (powers x hx - ofFinsupp (Finsupp.single 0 1)) (Nat.succ n)

tactic: rw [Finsupp.single_eq_of_ne n.succ_ne_zero.symm, sub_zero]
state_before: case h.succ
Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < ↑(addVal Γ R) x
n : ℕ
⊢ x * x ^ n = x * x ^ n - ↑(Finsupp.single 0 1) (Nat.succ n)
Theorem: Set.prod_sInter
File: Mathlib/Data/Set/Lattice.lean

tactic: rw [← sInter_singleton s, sInter_prod_sInter (singleton_nonempty s) hT, sInter_singleton]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.241940
ι : Sort ?u.241943
ι' : Sort ?u.241946
ι₂ : Sort ?u.241949
κ : ι → Sort ?u.241954
κ₁ : ι → Sort ?u.241959
κ₂ : ι → Sort ?u.241964
κ' : ι' → Sort ?u.241969
T : Set (Set β)
hT : Set.Nonempty T
s : Set α
⊢ s ×ˢ ⋂₀ T = ⋂ (t : Set β) (_ : t ∈ T), s ×ˢ t

tactic: simp_rw [singleton_prod, mem_image, iInter_exists, biInter_and', iInter_iInter_eq_right]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.241940
ι : Sort ?u.241943
ι' : Sort ?u.241946
ι₂ : Sort ?u.241949
κ : ι → Sort ?u.241954
κ₁ : ι → Sort ?u.241959
κ₂ : ι → Sort ?u.241964
κ' : ι' → Sort ?u.241969
T : Set (Set β)
hT : Set.Nonempty T
s : Set α
⊢ (⋂ (r : Set α × Set β) (_ : r ∈ {s} ×ˢ T), r.fst ×ˢ r.snd) = ⋂ (t : Set β) (_ : t ∈ T), s ×ˢ t
Theorem: IsPGroup.cyclic_center_quotient_of_card_eq_prime_sq
File: Mathlib/GroupTheory/PGroup.lean

tactic: rcases card_center_eq_prime_pow hG zero_lt_two with ⟨k, hk0, hk⟩
state_before: p : ℕ
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hG : card G = p ^ 2
⊢ IsCyclic (G ⧸ center G)

tactic: rw [card_eq_card_quotient_mul_card_subgroup (center G), mul_comm, hk] at hG
state_before: case intro.intro
p : ℕ
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
hG : card G = p ^ 2
k : ℕ
hk0 : k > 0
hk : card { x // x ∈ center G } = p ^ k
⊢ IsCyclic (G ⧸ center G)

tactic: have hk2 := (Nat.pow_dvd_pow_iff_le_right (Fact.out (p := p.Prime)).one_lt).1 ⟨_, hG.symm⟩
state_before: case intro.intro
p : ℕ
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
k : ℕ
hG : p ^ k * card (G ⧸ center G) = p ^ 2
hk0 : k > 0
hk : card { x // x ∈ center G } = p ^ k
⊢ IsCyclic (G ⧸ center G)

tactic: interval_cases k
state_before: case intro.intro
p : ℕ
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
k : ℕ
hG : p ^ k * card (G ⧸ center G) = p ^ 2
hk0 : k > 0
hk : card { x // x ∈ center G } = p ^ k
hk2 : k ≤ 2
⊢ IsCyclic (G ⧸ center G)

tactic: rw [sq, pow_one, mul_right_inj' (Fact.out (p := p.Prime)).ne_zero] at hG
state_before: case intro.intro.«1»
p : ℕ
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
k : ℕ
hG : p ^ 1 * card (G ⧸ center G) = p ^ 2
hk0 : 1 > 0
hk : card { x // x ∈ center G } = p ^ 1
hk2 : 1 ≤ 2
⊢ IsCyclic (G ⧸ center G)

tactic: exact isCyclic_of_prime_card hG
state_before: case intro.intro.«1»
p : ℕ
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
k : ℕ
hG : card (G ⧸ center G) = p
hk0 : 1 > 0
hk : card { x // x ∈ center G } = p ^ 1
hk2 : 1 ≤ 2
⊢ IsCyclic (G ⧸ center G)

tactic: exact
  @isCyclic_of_subsingleton _ _
    ⟨Fintype.card_le_one_iff.1
        (mul_right_injective₀ (pow_ne_zero 2 (NeZero.ne p))
            (hG.trans (mul_one (p ^ 2)).symm)).le⟩
state_before: case intro.intro.«2»
p : ℕ
G : Type u_1
inst✝² : Group G
inst✝¹ : Fintype G
inst✝ : Fact (Nat.Prime p)
n : ℕ
hGpn : card G = p ^ n
k : ℕ
hG : p ^ 2 * card (G ⧸ center G) = p ^ 2
hk0 : 2 > 0
hk : card { x // x ∈ center G } = p ^ 2
hk2 : 2 ≤ 2
⊢ IsCyclic (G ⧸ center G)
Theorem: HasDerivWithinAt.cpow
File: Mathlib/Analysis/SpecialFunctions/Pow/Deriv.lean

tactic: simpa only [aux] using (hf.hasFDerivWithinAt.cpow hg h0).hasDerivWithinAt
state_before: f g : ℂ → ℂ
s : Set ℂ
f' g' x c : ℂ
hf : HasDerivWithinAt f f' s x
hg : HasDerivWithinAt g g' s x
h0 : 0 < (f x).re ∨ (f x).im ≠ 0
⊢ HasDerivWithinAt (fun x => f x ^ g x) (g x * f x ^ (g x - 1) * f' + f x ^ g x * Complex.log (f x) * g') s x
Theorem: Pmf.mem_support_bindOnSupport_iff
File: Mathlib/Probability/ProbabilityMassFunction/Monad.lean

tactic: simp only [support_bindOnSupport, Set.mem_setOf_eq, Set.mem_iUnion]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.107281
p : Pmf α
f : (a : α) → a ∈ support p → Pmf β
b : β
⊢ b ∈ support (bindOnSupport p f) ↔ ∃ a h, b ∈ support (f a h)
Theorem: LinearMap.toMatrix'_algebraMap
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: simp [Module.algebraMap_end_eq_smul_id]
state_before: R : Type u_1
inst✝² : CommSemiring R
k : Type ?u.932592
l : Type ?u.932595
m : Type ?u.932598
n : Type u_2
inst✝¹ : Fintype n
inst✝ : DecidableEq n
x : R
⊢ ↑toMatrix' (↑(algebraMap R (Module.End R (n → R))) x) = ↑(scalar n) x
Theorem: PosNum.bit_to_nat
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases b <;> rfl
state_before: α : Type ?u.357130
b : Bool
n : PosNum
⊢ ↑(bit b n) = Nat.bit b ↑n
Theorem: Int.ediv_mul_le
File: Mathlib/Data/Int/Order/Basic.lean

tactic: rw [mul_comm, ← emod_def]
state_before: a✝ b✝ : ℤ
n : ℕ
a b : ℤ
H : b ≠ 0
⊢ 0 ≤ a - a / b * b

tactic: apply emod_nonneg _ H
state_before: a✝ b✝ : ℤ
n : ℕ
a b : ℤ
H : b ≠ 0
⊢ 0 ≤ a % b
Theorem: CategoryTheory.shift_shiftFunctorCompIsoId_add_neg_self_hom_app
File: Mathlib/CategoryTheory/Shift/Basic.lean

tactic: apply shift_shiftFunctorCompIsoId_hom_app
state_before: C : Type u
A : Type u_1
inst✝² : Category C
inst✝¹ : AddGroup A
inst✝ : HasShift C A
X✝ Y : C
f : X✝ ⟶ Y
n : A
X : C
⊢ (shiftFunctor C n).map ((shiftFunctorCompIsoId C n (-n) (_ : n + -n = 0)).hom.app X) =
    (shiftFunctorCompIsoId C (-n) n (_ : -n + n = 0)).hom.app ((shiftFunctor C n).obj X)
Theorem: RatFunc.laurent_injective
File: Mathlib/FieldTheory/Laurent.lean

tactic: simpa [laurent_laurent] using congr_arg (laurent (-r)) h
state_before: R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f x✝¹ x✝ : RatFunc R
h : ↑(laurent r) x✝¹ = ↑(laurent r) x✝
⊢ x✝¹ = x✝
Theorem: LieModule.toModuleHom_apply
File: Mathlib/Algebra/Lie/TensorProduct.lean

tactic: simp only [toModuleHom, TensorProduct.LieModule.liftLie_apply, LieModuleHom.coe_mk,
  LinearMap.coe_mk, LinearMap.coe_toAddHom, LieHom.coe_toLinearMap, toEndomorphism_apply_apply]
state_before: R : Type u
inst✝⁶ : CommRing R
L : Type v
M : Type w
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
x : L
m : M
⊢ ↑(toModuleHom R L M) (x ⊗ₜ[R] m) = ⁅x, m⁆
Theorem: BooleanRing.inf_sup_self
File: Mathlib/Algebra/Ring/BooleanRing.lean

tactic: rw [mul_add, mul_add, mul_self, ← mul_assoc, mul_self, add_assoc, add_self, add_zero]
state_before: α : Type u_1
β : Type ?u.14539
γ : Type ?u.14542
inst✝² : BooleanRing α
inst✝¹ : BooleanRing β
inst✝ : BooleanRing γ
a b : α
⊢ a * (a + b + a * b) = a
Theorem: Order.IsSuccLimit.isMax
File: Mathlib/Order/SuccPred/Limit.lean

tactic: by_contra H
state_before: α : Type u_1
inst✝¹ : Preorder α
a : α
inst✝ : SuccOrder α
h : IsSuccLimit (succ a)
⊢ IsMax a

tactic: exact h a (covby_succ_of_not_isMax H)
state_before: α : Type u_1
inst✝¹ : Preorder α
a : α
inst✝ : SuccOrder α
h : IsSuccLimit (succ a)
H : ¬IsMax a
⊢ False
Theorem: Finset.Icc_subset_Ico_right
File: Mathlib/Data/Finset/LocallyFinite.lean

tactic: rw [← coe_subset, coe_Icc, coe_Ico]
state_before: ι : Type ?u.23148
α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
h : b₁ < b₂
⊢ Icc a b₁ ⊆ Ico a b₂

tactic: exact Set.Icc_subset_Ico_right h
state_before: ι : Type ?u.23148
α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
h : b₁ < b₂
⊢ Set.Icc a b₁ ⊆ Set.Ico a b₂
Theorem: Nat.coprime_factors_disjoint
File: Mathlib/Data/Nat/Factors.lean

tactic: intro q hqa hqb
state_before: a b : ℕ
hab : coprime a b
⊢ List.Disjoint (factors a) (factors b)

tactic: apply not_prime_one
state_before: a b : ℕ
hab : coprime a b
q : ℕ
hqa : q ∈ factors a
hqb : q ∈ factors b
⊢ False

tactic: rw [← eq_one_of_dvd_coprimes hab (dvd_of_mem_factors hqa) (dvd_of_mem_factors hqb)]
state_before: a b : ℕ
hab : coprime a b
q : ℕ
hqa : q ∈ factors a
hqb : q ∈ factors b
⊢ Prime 1

tactic: exact prime_of_mem_factors hqa
state_before: a b : ℕ
hab : coprime a b
q : ℕ
hqa : q ∈ factors a
hqb : q ∈ factors b
⊢ Prime q
Theorem: MulOpposite.semiconjBy_op
File: Mathlib/Algebra/Group/Opposite.lean

tactic: simp only [SemiconjBy, ← op_mul, op_inj, eq_comm]
state_before: α : Type u
inst✝ : Mul α
a x y : α
⊢ SemiconjBy (op a) (op y) (op x) ↔ SemiconjBy a x y
Theorem: Finset.card_eq_iff_eq_univ
File: Mathlib/Data/Fintype/Card.lean

tactic: rintro rfl
state_before: α : Type u_1
β : Type ?u.8142
γ : Type ?u.8145
inst✝ : Fintype α
s : Finset α
⊢ s = univ → card s = Fintype.card α

tactic: exact Finset.card_univ
state_before: α : Type u_1
β : Type ?u.8142
γ : Type ?u.8145
inst✝ : Fintype α
⊢ card univ = Fintype.card α
Theorem: Ordinal.apply_lt_nfpBFamily_iff
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: haveI := out_nonempty_iff_ne_zero.2 ho
state_before: o : Ordinal
f : (b : Ordinal) → b < o → Ordinal → Ordinal
ho : o ≠ 0
H : ∀ (i : Ordinal) (hi : i < o), IsNormal (f i hi)
a : Ordinal
b : Ordinal
h : ∀ (i : Ordinal) (hi : i < o), f i hi b < nfpBFamily o f a
⊢ b < nfpBFamily o f a

tactic: refine' (apply_lt_nfpFamily_iff.{u, v} _).1 fun _ => h _ _
state_before: o : Ordinal
f : (b : Ordinal) → b < o → Ordinal → Ordinal
ho : o ≠ 0
H : ∀ (i : Ordinal) (hi : i < o), IsNormal (f i hi)
a : Ordinal
b : Ordinal
h : ∀ (i : Ordinal) (hi : i < o), f i hi b < nfpBFamily o f a
this : Nonempty (Quotient.out o).α
⊢ b < nfpBFamily o f a

tactic: exact fun _ => H _ _
state_before: o : Ordinal
f : (b : Ordinal) → b < o → Ordinal → Ordinal
ho : o ≠ 0
H : ∀ (i : Ordinal) (hi : i < o), IsNormal (f i hi)
a : Ordinal
b : Ordinal
h : ∀ (i : Ordinal) (hi : i < o), f i hi b < nfpBFamily o f a
this : Nonempty (Quotient.out o).α
⊢ ∀ (i : (Quotient.out o).α), IsNormal (familyOfBFamily o f i)
Theorem: Ultrafilter.eventually_imp
File: Mathlib/Order/Filter/Ultrafilter.lean

tactic: simp only [imp_iff_not_or, eventually_or, eventually_not]
state_before: α : Type u
β : Type v
γ : Type ?u.12644
f g : Ultrafilter α
s t : Set α
p q : α → Prop
⊢ (∀ᶠ (x : α) in ↑f, p x → q x) ↔ (∀ᶠ (x : α) in ↑f, p x) → ∀ᶠ (x : α) in ↑f, q x
Theorem: LinearEquiv.coord_self
File: Mathlib/LinearAlgebra/Span.lean

tactic: rw [← toSpanNonzeroSingleton_one R M x h, LinearEquiv.symm_apply_apply]
state_before: R : Type u_1
R₂ : Type ?u.393929
K : Type ?u.393932
M : Type u_2
M₂ : Type ?u.393938
V : Type ?u.393941
S : Type ?u.393944
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : NoZeroSMulDivisors R M
x : M
h : x ≠ 0
⊢ ↑(coord R M x h) { val := x, property := (_ : x ∈ Submodule.span R {x}) } = 1
Theorem: SimpleGraph.Walk.toSubgraph_map
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction p <;> simp [*, Subgraph.map_sup]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w : V
f : G →g G'
p : Walk G u v
⊢ Walk.toSubgraph (Walk.map f p) = Subgraph.map f (Walk.toSubgraph p)
Theorem: geom_sum_inv
File: Mathlib/Algebra/GeomSum.lean

tactic: have h₁ : x⁻¹ ≠ 1 := by rwa [inv_eq_one_div, Ne.def, div_eq_iff_mul_eq hx0, one_mul]
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx1 : x ≠ 1
hx0 : x ≠ 0
n : ℕ
⊢ ∑ i in range n, x⁻¹ ^ i = (x - 1)⁻¹ * (x - x⁻¹ ^ n * x)

tactic: have h₂ : x⁻¹ - 1 ≠ 0 := mt sub_eq_zero.1 h₁
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx1 : x ≠ 1
hx0 : x ≠ 0
n : ℕ
h₁ : x⁻¹ ≠ 1
⊢ ∑ i in range n, x⁻¹ ^ i = (x - 1)⁻¹ * (x - x⁻¹ ^ n * x)

tactic: have h₃ : x - 1 ≠ 0 := mt sub_eq_zero.1 hx1
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx1 : x ≠ 1
hx0 : x ≠ 0
n : ℕ
h₁ : x⁻¹ ≠ 1
h₂ : x⁻¹ - 1 ≠ 0
⊢ ∑ i in range n, x⁻¹ ^ i = (x - 1)⁻¹ * (x - x⁻¹ ^ n * x)

tactic: have h₄ : x * (x ^ n)⁻¹ = (x ^ n)⁻¹ * x :=
  Nat.recOn n (by simp) fun n h => by
    rw [pow_succ, mul_inv_rev, ← mul_assoc, h, mul_assoc, mul_inv_cancel hx0, mul_assoc,
      inv_mul_cancel hx0]
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx1 : x ≠ 1
hx0 : x ≠ 0
n : ℕ
h₁ : x⁻¹ ≠ 1
h₂ : x⁻¹ - 1 ≠ 0
h₃ : x - 1 ≠ 0
⊢ ∑ i in range n, x⁻¹ ^ i = (x - 1)⁻¹ * (x - x⁻¹ ^ n * x)

tactic: rw [geom_sum_eq h₁, div_eq_iff_mul_eq h₂, ← mul_right_inj' h₃, ← mul_assoc, ← mul_assoc,
  mul_inv_cancel h₃]
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx1 : x ≠ 1
hx0 : x ≠ 0
n : ℕ
h₁ : x⁻¹ ≠ 1
h₂ : x⁻¹ - 1 ≠ 0
h₃ : x - 1 ≠ 0
h₄ : x * (x ^ n)⁻¹ = (x ^ n)⁻¹ * x
⊢ ∑ i in range n, x⁻¹ ^ i = (x - 1)⁻¹ * (x - x⁻¹ ^ n * x)

tactic: simp [mul_add, add_mul, mul_inv_cancel hx0, mul_assoc, h₄, sub_eq_add_neg, add_comm,
  add_left_comm]
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx1 : x ≠ 1
hx0 : x ≠ 0
n : ℕ
h₁ : x⁻¹ ≠ 1
h₂ : x⁻¹ - 1 ≠ 0
h₃ : x - 1 ≠ 0
h₄ : x * (x ^ n)⁻¹ = (x ^ n)⁻¹ * x
⊢ 1 * (x - x⁻¹ ^ n * x) * (x⁻¹ - 1) = (x - 1) * (x⁻¹ ^ n - 1)

tactic: rw [add_comm _ (-x), add_assoc, add_assoc _ _ 1]
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx1 : x ≠ 1
hx0 : x ≠ 0
n : ℕ
h₁ : x⁻¹ ≠ 1
h₂ : x⁻¹ - 1 ≠ 0
h₃ : x - 1 ≠ 0
h₄ : x * (x ^ n)⁻¹ = (x ^ n)⁻¹ * x
⊢ (x ^ n)⁻¹ * x + -x + (-(x ^ n)⁻¹ + 1) = -x + ((x ^ n)⁻¹ * x + -(x ^ n)⁻¹ + 1)

tactic: rwa [inv_eq_one_div, Ne.def, div_eq_iff_mul_eq hx0, one_mul]
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx1 : x ≠ 1
hx0 : x ≠ 0
n : ℕ
⊢ x⁻¹ ≠ 1

tactic: simp
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx1 : x ≠ 1
hx0 : x ≠ 0
n : ℕ
h₁ : x⁻¹ ≠ 1
h₂ : x⁻¹ - 1 ≠ 0
h₃ : x - 1 ≠ 0
⊢ x * (x ^ Nat.zero)⁻¹ = (x ^ Nat.zero)⁻¹ * x

tactic: rw [pow_succ, mul_inv_rev, ← mul_assoc, h, mul_assoc, mul_inv_cancel hx0, mul_assoc,
  inv_mul_cancel hx0]
state_before: α : Type u
inst✝ : DivisionRing α
x : α
hx1 : x ≠ 1
hx0 : x ≠ 0
n✝ : ℕ
h₁ : x⁻¹ ≠ 1
h₂ : x⁻¹ - 1 ≠ 0
h₃ : x - 1 ≠ 0
n : ℕ
h : x * (x ^ n)⁻¹ = (x ^ n)⁻¹ * x
⊢ x * (x ^ Nat.succ n)⁻¹ = (x ^ Nat.succ n)⁻¹ * x
Theorem: Filter.map_eq_of_inverse
File: Mathlib/Order/Filter/Basic.lean

tactic: refine' le_antisymm hφ (le_trans _ (map_mono hψ))
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.313560
ι : Sort x
f : Filter α
g : Filter β
φ : α → β
ψ : β → α
eq : φ ∘ ψ = id
hφ : Tendsto φ f g
hψ : Tendsto ψ g f
⊢ map φ f = g

tactic: rw [map_map, eq, map_id]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.313560
ι : Sort x
f : Filter α
g : Filter β
φ : α → β
ψ : β → α
eq : φ ∘ ψ = id
hφ : Tendsto φ f g
hψ : Tendsto ψ g f
⊢ g ≤ map φ (map ψ g)
Theorem: Finpartition.isUniformOne
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean

tactic: rw [IsUniform, mul_one, Nat.cast_le]
state_before: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
⊢ IsUniform P G 1

tactic: refine' (card_filter_le _
  (fun uv => ¬SimpleGraph.IsUniform G 1 (Prod.fst uv) (Prod.snd uv))).trans _
state_before: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
⊢ card (nonUniforms P G 1) ≤ card P.parts * (card P.parts - 1)

tactic: rw [offDiag_card, Nat.mul_sub_left_distrib, mul_one]
state_before: α : Type u_1
𝕜 : Type u_2
inst✝² : LinearOrderedField 𝕜
inst✝¹ : DecidableEq α
A : Finset α
P : Finpartition A
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
⊢ card (offDiag P.parts) ≤ card P.parts * (card P.parts - 1)
Theorem: smul_pow
File: Mathlib/Algebra/GroupPower/Lemmas.lean

tactic: induction' p with p IH
state_before: α : Type ?u.64314
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝⁶ : Monoid M
inst✝⁵ : Monoid N
inst✝⁴ : AddMonoid A
inst✝³ : AddMonoid B
inst✝² : MulAction M N
inst✝¹ : IsScalarTower M N N
inst✝ : SMulCommClass M N N
k : M
x : N
p : ℕ
⊢ (k • x) ^ p = k ^ p • x ^ p

tactic: simp
state_before: case zero
α : Type ?u.64314
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝⁶ : Monoid M
inst✝⁵ : Monoid N
inst✝⁴ : AddMonoid A
inst✝³ : AddMonoid B
inst✝² : MulAction M N
inst✝¹ : IsScalarTower M N N
inst✝ : SMulCommClass M N N
k : M
x : N
⊢ (k • x) ^ Nat.zero = k ^ Nat.zero • x ^ Nat.zero

tactic: rw [pow_succ', IH, smul_mul_smul, ← pow_succ', ← pow_succ']
state_before: case succ
α : Type ?u.64314
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝⁶ : Monoid M
inst✝⁵ : Monoid N
inst✝⁴ : AddMonoid A
inst✝³ : AddMonoid B
inst✝² : MulAction M N
inst✝¹ : IsScalarTower M N N
inst✝ : SMulCommClass M N N
k : M
x : N
p : ℕ
IH : (k • x) ^ p = k ^ p • x ^ p
⊢ (k • x) ^ Nat.succ p = k ^ Nat.succ p • x ^ Nat.succ p
Theorem: Set.isCoatom_iff
File: Mathlib/Order/Atoms.lean

tactic: rw [isCompl_compl.isCoatom_iff_isAtom, isAtom_iff]
state_before: α : Type u_1
β : Type ?u.81807
s : Set α
⊢ IsCoatom s ↔ ∃ x, s = {x}ᶜ

tactic: simp_rw [@eq_comm _ s, compl_eq_comm]
state_before: α : Type u_1
β : Type ?u.81807
s : Set α
⊢ (∃ x, sᶜ = {x}) ↔ ∃ x, s = {x}ᶜ
Theorem: MeasureTheory.AECover.integrable_of_lintegral_nnnorm_tendsto
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

tactic: refine' hφ.integrable_of_lintegral_nnnorm_bounded (max 1 (I + 1)) hfm _
state_before: α : Type u_2
ι : Type u_1
E : Type u_3
inst✝³ : MeasurableSpace α
μ : Measure α
l : Filter ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NeBot l
inst✝ : IsCountablyGenerated l
φ : ι → Set α
hφ : AECover μ l φ
f : α → E
I : ℝ
hfm : AEStronglyMeasurable f μ
htendsto : Tendsto (fun i => ∫⁻ (x : α) in φ i, ↑‖f x‖₊ ∂μ) l (𝓝 (ENNReal.ofReal I))
⊢ Integrable f

tactic: refine' htendsto.eventually (ge_mem_nhds _)
state_before: α : Type u_2
ι : Type u_1
E : Type u_3
inst✝³ : MeasurableSpace α
μ : Measure α
l : Filter ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NeBot l
inst✝ : IsCountablyGenerated l
φ : ι → Set α
hφ : AECover μ l φ
f : α → E
I : ℝ
hfm : AEStronglyMeasurable f μ
htendsto : Tendsto (fun i => ∫⁻ (x : α) in φ i, ↑‖f x‖₊ ∂μ) l (𝓝 (ENNReal.ofReal I))
⊢ ∀ᶠ (i : ι) in l, (∫⁻ (x : α) in φ i, ↑‖f x‖₊ ∂μ) ≤ ENNReal.ofReal (max 1 (I + 1))

tactic: refine' (ENNReal.ofReal_lt_ofReal_iff (lt_max_of_lt_left zero_lt_one)).2 _
state_before: α : Type u_2
ι : Type u_1
E : Type u_3
inst✝³ : MeasurableSpace α
μ : Measure α
l : Filter ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NeBot l
inst✝ : IsCountablyGenerated l
φ : ι → Set α
hφ : AECover μ l φ
f : α → E
I : ℝ
hfm : AEStronglyMeasurable f μ
htendsto : Tendsto (fun i => ∫⁻ (x : α) in φ i, ↑‖f x‖₊ ∂μ) l (𝓝 (ENNReal.ofReal I))
⊢ ENNReal.ofReal I < ENNReal.ofReal (max 1 (I + 1))

tactic: exact lt_max_of_lt_right (lt_add_one I)
state_before: α : Type u_2
ι : Type u_1
E : Type u_3
inst✝³ : MeasurableSpace α
μ : Measure α
l : Filter ι
inst✝² : NormedAddCommGroup E
inst✝¹ : NeBot l
inst✝ : IsCountablyGenerated l
φ : ι → Set α
hφ : AECover μ l φ
f : α → E
I : ℝ
hfm : AEStronglyMeasurable f μ
htendsto : Tendsto (fun i => ∫⁻ (x : α) in φ i, ↑‖f x‖₊ ∂μ) l (𝓝 (ENNReal.ofReal I))
⊢ I < max 1 (I + 1)