tasksource/leandojo huggingface dataset:
Theorem: Polynomial.eval₂_ofFinsupp
File: Mathlib/Data/Polynomial/Eval.lean

tactic: simp only [eval₂_eq_sum, sum, toFinsupp_sum, support, coeff]
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✝ : R →+* S
x✝ : S
inst✝ : Semiring T
f : R →+* S
x : S
p : AddMonoidAlgebra R ℕ
⊢ eval₂ f x { toFinsupp := p } = ↑(liftNC ↑f ↑(↑(powersHom S) x)) p

tactic: rfl
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✝ : R →+* S
x✝ : S
inst✝ : Semiring T
f : R →+* S
x : S
p : AddMonoidAlgebra R ℕ
⊢ ∑ x_1 in p.support, ↑f (↑p x_1) * x ^ x_1 = ↑(liftNC ↑f ↑(↑(powersHom S) x)) p
Theorem: iSup_iInf_ge_nat_add
File: Mathlib/Order/CompleteLattice.lean

tactic: have hf : Monotone fun n => ⨅ i ≥ n, f i := fun n m h => biInf_mono fun i => h.trans
state_before: α : Type u_1
β : Type ?u.178268
β₂ : Type ?u.178271
γ : Type ?u.178274
ι : Sort ?u.178277
ι' : Sort ?u.178280
κ : ι → Sort ?u.178285
κ' : ι' → Sort ?u.178290
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a b : α
f : ℕ → α
k : ℕ
⊢ (⨆ (n : ℕ), ⨅ (i : ℕ) (_ : i ≥ n), f (i + k)) = ⨆ (n : ℕ), ⨅ (i : ℕ) (_ : i ≥ n), f i

tactic: rw [← Monotone.iSup_nat_add hf k]
state_before: α : Type u_1
β : Type ?u.178268
β₂ : Type ?u.178271
γ : Type ?u.178274
ι : Sort ?u.178277
ι' : Sort ?u.178280
κ : ι → Sort ?u.178285
κ' : ι' → Sort ?u.178290
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a b : α
f : ℕ → α
k : ℕ
hf : Monotone fun n => ⨅ (i : ℕ) (_ : i ≥ n), f i
⊢ (⨆ (n : ℕ), ⨅ (i : ℕ) (_ : i ≥ n), f (i + k)) = ⨆ (n : ℕ), ⨅ (i : ℕ) (_ : i ≥ n), f i

tactic: simp_rw [iInf_ge_eq_iInf_nat_add, ← Nat.add_assoc]
state_before: α : Type u_1
β : Type ?u.178268
β₂ : Type ?u.178271
γ : Type ?u.178274
ι : Sort ?u.178277
ι' : Sort ?u.178280
κ : ι → Sort ?u.178285
κ' : ι' → Sort ?u.178290
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a b : α
f : ℕ → α
k : ℕ
hf : Monotone fun n => ⨅ (i : ℕ) (_ : i ≥ n), f i
⊢ (⨆ (n : ℕ), ⨅ (i : ℕ) (_ : i ≥ n), f (i + k)) = ⨆ (n : ℕ), ⨅ (i : ℕ) (_ : i ≥ n + k), f i
Theorem: Nat.coprime_add_mul_right_right
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: rw [coprime, coprime, gcd_add_mul_right_right]
state_before: m n k : ℕ
⊢ coprime m (n + k * m) ↔ coprime m n
Theorem: Associates.dvdNotUnit_of_lt
File: Mathlib/Algebra/Associated.lean

tactic: constructor
state_before: α : Type u_1
β : Type ?u.325963
γ : Type ?u.325966
δ : Type ?u.325969
inst✝ : CommMonoidWithZero α
a b : Associates α
hlt : a < b
⊢ DvdNotUnit a b

tactic: rcases hlt with ⟨⟨x, rfl⟩, ndvd⟩
state_before: case right
α : Type u_1
β : Type ?u.325963
γ : Type ?u.325966
δ : Type ?u.325969
inst✝ : CommMonoidWithZero α
a b : Associates α
hlt : a < b
⊢ ∃ x, ¬IsUnit x ∧ b = a * x

tactic: refine' ⟨x, _, rfl⟩
state_before: case right.intro.intro
α : Type u_1
β : Type ?u.325963
γ : Type ?u.325966
δ : Type ?u.325969
inst✝ : CommMonoidWithZero α
a : Associates α
x : Associates α
ndvd : ¬a * x ∣ a
⊢ ∃ x_1, ¬IsUnit x_1 ∧ a * x = a * x_1

tactic: contrapose! ndvd
state_before: case right.intro.intro
α : Type u_1
β : Type ?u.325963
γ : Type ?u.325966
δ : Type ?u.325969
inst✝ : CommMonoidWithZero α
a : Associates α
x : Associates α
ndvd : ¬a * x ∣ a
⊢ ¬IsUnit x

tactic: rcases ndvd with ⟨u, rfl⟩
state_before: case right.intro.intro
α : Type u_1
β : Type ?u.325963
γ : Type ?u.325966
δ : Type ?u.325969
inst✝ : CommMonoidWithZero α
a : Associates α
x : Associates α
ndvd : IsUnit x
⊢ a * x ∣ a

tactic: simp
state_before: case right.intro.intro.intro
α : Type u_1
β : Type ?u.325963
γ : Type ?u.325966
δ : Type ?u.325969
inst✝ : CommMonoidWithZero α
a : Associates α
u : (Associates α)ˣ
⊢ a * ↑u ∣ a

tactic: rintro rfl
state_before: case left
α : Type u_1
β : Type ?u.325963
γ : Type ?u.325966
δ : Type ?u.325969
inst✝ : CommMonoidWithZero α
a b : Associates α
hlt : a < b
⊢ a ≠ 0

tactic: apply not_lt_of_le _ hlt
state_before: case left
α : Type u_1
β : Type ?u.325963
γ : Type ?u.325966
δ : Type ?u.325969
inst✝ : CommMonoidWithZero α
b : Associates α
hlt : 0 < b
⊢ False

tactic: apply dvd_zero
state_before: α : Type u_1
β : Type ?u.325963
γ : Type ?u.325966
δ : Type ?u.325969
inst✝ : CommMonoidWithZero α
b : Associates α
hlt : 0 < b
⊢ b ≤ 0
Theorem: RingHom.injective_iff_ker_eq_bot
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [SetLike.ext'_iff, ker_eq, Set.ext_iff]
state_before: R : Type u
S : Type v
T : Type w
F : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
rc : RingHomClass F R S
f : F
⊢ Function.Injective ↑f ↔ ker f = ⊥

tactic: exact injective_iff_map_eq_zero' f
state_before: R : Type u
S : Type v
T : Type w
F : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
rc : RingHomClass F R S
f : F
⊢ Function.Injective ↑f ↔ ∀ (x : R), x ∈ ↑f ⁻¹' {0} ↔ x ∈ ↑⊥
Theorem: Polynomial.aeval_algHom
File: Mathlib/Data/Polynomial/AlgebraMap.lean

tactic: simp only [aeval_X, AlgHom.comp_apply]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type ?u.831458
B' : Type ?u.831461
a b : R
n : ℕ
inst✝⁶ : CommSemiring A'
inst✝⁵ : Semiring B'
inst✝⁴ : CommSemiring R
p q : R[X]
inst✝³ : Semiring A
inst✝² : Algebra R A
B : Type u_1
inst✝¹ : Semiring B
inst✝ : Algebra R B
x✝ : A
f : A →ₐ[R] B
x : A
⊢ ↑(aeval (↑f x)) X = ↑(AlgHom.comp f (aeval x)) X
Theorem: LieSubmodule.lie_le_inf
File: Mathlib/Algebra/Lie/IdealOperations.lean

tactic: rw [le_inf_iff]
state_before: R : Type u
L : Type v
M : Type w
M₂ : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
⊢ ⁅I, J⁆ ≤ I ⊓ J

tactic: exact ⟨lie_le_left I J, lie_le_right J I⟩
state_before: R : Type u
L : Type v
M : Type w
M₂ : Type w₁
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M₂
inst✝² : Module R M₂
inst✝¹ : LieRingModule L M₂
inst✝ : LieModule R L M₂
N N' : LieSubmodule R L M
I J : LieIdeal R L
N₂ : LieSubmodule R L M₂
⊢ ⁅I, J⁆ ≤ I ∧ ⁅I, J⁆ ≤ J
Theorem: Disjoint.sdiff_unique
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [← inf_eq_right] at hs
state_before: α : Type u
β : Type ?u.12767
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
hd : Disjoint x z
hz : z ≤ y
hs : y ≤ x ⊔ z
⊢ y ⊓ x ⊔ z = y

tactic: rwa [sup_inf_right, inf_sup_right, @sup_comm _ _ x, inf_sup_self, inf_comm, @sup_comm _ _ z,
  hs, sup_eq_left]
state_before: α : Type u
β : Type ?u.12767
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
hd : Disjoint x z
hz : z ≤ y
hs : (x ⊔ z) ⊓ y = y
⊢ y ⊓ x ⊔ z = y

tactic: rw [inf_assoc, hd.eq_bot, inf_bot_eq]
state_before: α : Type u
β : Type ?u.12767
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
hd : Disjoint x z
hz : z ≤ y
hs : y ≤ x ⊔ z
⊢ y ⊓ x ⊓ z = ⊥
Theorem: MeasureTheory.SimpleFunc.range_const_subset
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: simp
state_before: α✝ : Type ?u.16047
β : Type u_2
γ : Type ?u.16053
δ : Type ?u.16056
inst✝¹ : MeasurableSpace α✝
α : Type u_1
inst✝ : MeasurableSpace α
b : β
⊢ ↑(SimpleFunc.range (const α b)) ⊆ ↑{b}
Theorem: Finsupp.split_apply
File: Mathlib/Data/Finsupp/Basic.lean

tactic: dsimp only [split]
state_before: α : Type ?u.737860
β : Type ?u.737863
γ : Type ?u.737866
ι : Type u_3
M : Type u_1
M' : Type ?u.737875
N : Type ?u.737878
P : Type ?u.737881
G : Type ?u.737884
H : Type ?u.737887
R : Type ?u.737890
S : Type ?u.737893
αs : ι → Type u_2
inst✝ : Zero M
l : (i : ι) × αs i →₀ M
i : ι
x : αs i
⊢ ↑(split l i) x = ↑l { fst := i, snd := x }

tactic: rw [comapDomain_apply]
state_before: α : Type ?u.737860
β : Type ?u.737863
γ : Type ?u.737866
ι : Type u_3
M : Type u_1
M' : Type ?u.737875
N : Type ?u.737878
P : Type ?u.737881
G : Type ?u.737884
H : Type ?u.737887
R : Type ?u.737890
S : Type ?u.737893
αs : ι → Type u_2
inst✝ : Zero M
l : (i : ι) × αs i →₀ M
i : ι
x : αs i
⊢ ↑(comapDomain (Sigma.mk i) l
          (_ :
            ∀ (x : αs i),
              x ∈ Sigma.mk i ⁻¹' ↑l.support →
                ∀ (x_2 : αs i),
                  x_2 ∈ Sigma.mk i ⁻¹' ↑l.support → { fst := i, snd := x } = { fst := i, snd := x_2 } → x = x_2))
      x =
    ↑l { fst := i, snd := x }
Theorem: Submodule.span_singleton_group_smul_eq
File: Mathlib/LinearAlgebra/Span.lean

tactic: refine' le_antisymm (span_singleton_smul_le R g x) _
state_before: R : Type u_2
R₂ : Type ?u.140038
K : Type ?u.140041
M : Type u_3
M₂ : Type ?u.140047
V : Type ?u.140050
S : Type ?u.140053
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
x✝ : M
p p' : Submodule R M
inst✝⁶ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M
G : Type u_1
inst✝³ : Group G
inst✝² : SMul G R
inst✝¹ : MulAction G M
inst✝ : IsScalarTower G R M
g : G
x : M
⊢ span R {g • x} = span R {x}

tactic: convert span_singleton_smul_le R g⁻¹ (g • x)
state_before: R : Type u_2
R₂ : Type ?u.140038
K : Type ?u.140041
M : Type u_3
M₂ : Type ?u.140047
V : Type ?u.140050
S : Type ?u.140053
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
x✝ : M
p p' : Submodule R M
inst✝⁶ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M
G : Type u_1
inst✝³ : Group G
inst✝² : SMul G R
inst✝¹ : MulAction G M
inst✝ : IsScalarTower G R M
g : G
x : M
⊢ span R {x} ≤ span R {g • x}

tactic: exact (inv_smul_smul g x).symm
state_before: case h.e'_3.h.e'_6.h.e'_4
R : Type u_2
R₂ : Type ?u.140038
K : Type ?u.140041
M : Type u_3
M₂ : Type ?u.140047
V : Type ?u.140050
S : Type ?u.140053
inst✝⁹ : Semiring R
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
x✝ : M
p p' : Submodule R M
inst✝⁶ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R₂ M₂
s t : Set M
G : Type u_1
inst✝³ : Group G
inst✝² : SMul G R
inst✝¹ : MulAction G M
inst✝ : IsScalarTower G R M
g : G
x : M
⊢ x = g⁻¹ • g • x
Theorem: Real.Angle.cos_neg
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: induction θ using Real.Angle.induction_on
state_before: θ : Angle
⊢ cos (-θ) = cos θ

tactic: exact Real.cos_neg _
state_before: case h
x✝ : ℝ
⊢ cos (-↑x✝) = cos ↑x✝
Theorem: Int.abs_sub_lt_one_of_floor_eq_floor
File: Mathlib/Algebra/Order/Floor.lean

tactic: have : a < ⌊a⌋ + 1 := lt_floor_add_one a
state_before: F : Type ?u.136653
α✝ : Type ?u.136656
β : Type ?u.136659
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_1
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
⊢ abs (a - b) < 1

tactic: have : b < ⌊b⌋ + 1 := lt_floor_add_one b
state_before: F : Type ?u.136653
α✝ : Type ?u.136656
β : Type ?u.136659
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_1
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this : a < ↑⌊a⌋ + 1
⊢ abs (a - b) < 1

tactic: have : (⌊a⌋ : α) = ⌊b⌋ := Int.cast_inj.2 h
state_before: F : Type ?u.136653
α✝ : Type ?u.136656
β : Type ?u.136659
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_1
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝ : a < ↑⌊a⌋ + 1
this : b < ↑⌊b⌋ + 1
⊢ abs (a - b) < 1

tactic: have : (⌊a⌋ : α) ≤ a := floor_le a
state_before: F : Type ?u.136653
α✝ : Type ?u.136656
β : Type ?u.136659
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_1
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝¹ : a < ↑⌊a⌋ + 1
this✝ : b < ↑⌊b⌋ + 1
this : ↑⌊a⌋ = ↑⌊b⌋
⊢ abs (a - b) < 1

tactic: have : (⌊b⌋ : α) ≤ b := floor_le b
state_before: F : Type ?u.136653
α✝ : Type ?u.136656
β : Type ?u.136659
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_1
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝² : a < ↑⌊a⌋ + 1
this✝¹ : b < ↑⌊b⌋ + 1
this✝ : ↑⌊a⌋ = ↑⌊b⌋
this : ↑⌊a⌋ ≤ a
⊢ abs (a - b) < 1

tactic: exact abs_sub_lt_iff.2 ⟨by linarith, by linarith⟩
state_before: F : Type ?u.136653
α✝ : Type ?u.136656
β : Type ?u.136659
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_1
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝³ : a < ↑⌊a⌋ + 1
this✝² : b < ↑⌊b⌋ + 1
this✝¹ : ↑⌊a⌋ = ↑⌊b⌋
this✝ : ↑⌊a⌋ ≤ a
this : ↑⌊b⌋ ≤ b
⊢ abs (a - b) < 1

tactic: linarith
state_before: F : Type ?u.136653
α✝ : Type ?u.136656
β : Type ?u.136659
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_1
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝³ : a < ↑⌊a⌋ + 1
this✝² : b < ↑⌊b⌋ + 1
this✝¹ : ↑⌊a⌋ = ↑⌊b⌋
this✝ : ↑⌊a⌋ ≤ a
this : ↑⌊b⌋ ≤ b
⊢ a - b < 1

tactic: linarith
state_before: F : Type ?u.136653
α✝ : Type ?u.136656
β : Type ?u.136659
inst✝³ : LinearOrderedRing α✝
inst✝² : FloorRing α✝
z : ℤ
a✝ : α✝
α : Type u_1
inst✝¹ : LinearOrderedCommRing α
inst✝ : FloorRing α
a b : α
h : ⌊a⌋ = ⌊b⌋
this✝³ : a < ↑⌊a⌋ + 1
this✝² : b < ↑⌊b⌋ + 1
this✝¹ : ↑⌊a⌋ = ↑⌊b⌋
this✝ : ↑⌊a⌋ ≤ a
this : ↑⌊b⌋ ≤ b
⊢ b - a < 1
Theorem: Basis.ofVectorSpace_apply_self
File: Mathlib/LinearAlgebra/Basis.lean

tactic: unfold ofVectorSpace
state_before: ι : Type ?u.1145319
ι' : Type ?u.1145322
R : Type ?u.1145325
R₂ : Type ?u.1145328
K : Type u_1
M : Type ?u.1145334
M' : Type ?u.1145337
M'' : Type ?u.1145340
V : Type u
V' : Type ?u.1145345
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x✝ y z : V
x : ↑(ofVectorSpaceIndex K V)
⊢ ↑(ofVectorSpace K V) x = ↑x

tactic: exact Basis.mk_apply _ _ _
state_before: ι : Type ?u.1145319
ι' : Type ?u.1145322
R : Type ?u.1145325
R₂ : Type ?u.1145328
K : Type u_1
M : Type ?u.1145334
M' : Type ?u.1145337
M'' : Type ?u.1145340
V : Type u
V' : Type ?u.1145345
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v : ι → V
s t : Set V
x✝ y z : V
x : ↑(ofVectorSpaceIndex K V)
⊢ ↑(extend (_ : LinearIndependent K fun x => ↑x)) x = ↑x
Theorem: NeZero.of_map
File: Mathlib/Algebra/Hom/Group.lean

tactic: rw [h]
state_before: α : Type ?u.1009
β : Type ?u.1012
M✝ : Type ?u.1015
N : Type ?u.1018
P : Type ?u.1021
G : Type ?u.1024
H : Type ?u.1027
F : Type u_3
R : Type u_1
M : Type u_2
inst✝² : Zero R
inst✝¹ : Zero M
inst✝ : ZeroHomClass F R M
f : F
r : R
neZero : NeZero (↑f r)
h : r = 0
⊢ ↑f r = 0

tactic: exact ZeroHomClass.map_zero f
state_before: α : Type ?u.1009
β : Type ?u.1012
M✝ : Type ?u.1015
N : Type ?u.1018
P : Type ?u.1021
G : Type ?u.1024
H : Type ?u.1027
F : Type u_3
R : Type u_1
M : Type u_2
inst✝² : Zero R
inst✝¹ : Zero M
inst✝ : ZeroHomClass F R M
f : F
r : R
neZero : NeZero (↑f r)
h : r = 0
⊢ ↑f 0 = 0
Theorem: lt_one_of_mul_lt_left
File: Mathlib/Algebra/Order/Monoid/Lemmas.lean

tactic: simpa only [one_mul]
state_before: α : Type u_1
β : Type ?u.24391
inst✝² : MulOneClass α
inst✝¹ : LT α
inst✝ : ContravariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b : α
h : a * b < b
⊢ a * ?m.24757 h < 1 * ?m.24757 h
Theorem: Real.exp_arsinh
File: Mathlib/Analysis/SpecialFunctions/Arsinh.lean

tactic: apply exp_log
state_before: x✝ y x : ℝ
⊢ exp (arsinh x) = x + sqrt (1 + x ^ 2)

tactic: rw [← neg_lt_iff_pos_add']
state_before: case hx
x✝ y x : ℝ
⊢ 0 < x + sqrt (1 + x ^ 2)

tactic: apply lt_sqrt_of_sq_lt
state_before: case hx
x✝ y x : ℝ
⊢ -x < sqrt (1 + x ^ 2)

tactic: simp
state_before: case hx.h
x✝ y x : ℝ
⊢ (-x) ^ 2 < 1 + x ^ 2
Theorem: elementalStarAlgebra.closedEmbedding_coe
File: Mathlib/Topology/Algebra/StarSubalgebra.lean

tactic: convert elementalStarAlgebra.isClosed R x
state_before: R : Type u_2
A : Type u_1
B : Type ?u.308604
inst✝¹² : CommSemiring R
inst✝¹¹ : StarRing R
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : StarRing A
inst✝⁷ : TopologicalSemiring A
inst✝⁶ : ContinuousStar A
inst✝⁵ : Algebra R A
inst✝⁴ : StarModule R A
inst✝³ : TopologicalSpace B
inst✝² : Semiring B
inst✝¹ : StarRing B
inst✝ : Algebra R B
x : A
⊢ IsClosed (range Subtype.val)

tactic: exact
  Set.ext fun y =>
    ⟨by
      rintro ⟨y, rfl⟩
      exact y.prop, fun hy => ⟨⟨y, hy⟩, rfl⟩⟩
state_before: case h.e'_3
R : Type u_2
A : Type u_1
B : Type ?u.308604
inst✝¹² : CommSemiring R
inst✝¹¹ : StarRing R
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : StarRing A
inst✝⁷ : TopologicalSemiring A
inst✝⁶ : ContinuousStar A
inst✝⁵ : Algebra R A
inst✝⁴ : StarModule R A
inst✝³ : TopologicalSpace B
inst✝² : Semiring B
inst✝¹ : StarRing B
inst✝ : Algebra R B
x : A
⊢ range Subtype.val = ↑(elementalStarAlgebra R x)

tactic: rintro ⟨y, rfl⟩
state_before: R : Type u_2
A : Type u_1
B : Type ?u.308604
inst✝¹² : CommSemiring R
inst✝¹¹ : StarRing R
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : StarRing A
inst✝⁷ : TopologicalSemiring A
inst✝⁶ : ContinuousStar A
inst✝⁵ : Algebra R A
inst✝⁴ : StarModule R A
inst✝³ : TopologicalSpace B
inst✝² : Semiring B
inst✝¹ : StarRing B
inst✝ : Algebra R B
x y : A
⊢ y ∈ range Subtype.val → y ∈ ↑(elementalStarAlgebra R x)

tactic: exact y.prop
state_before: case intro
R : Type u_2
A : Type u_1
B : Type ?u.308604
inst✝¹² : CommSemiring R
inst✝¹¹ : StarRing R
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : StarRing A
inst✝⁷ : TopologicalSemiring A
inst✝⁶ : ContinuousStar A
inst✝⁵ : Algebra R A
inst✝⁴ : StarModule R A
inst✝³ : TopologicalSpace B
inst✝² : Semiring B
inst✝¹ : StarRing B
inst✝ : Algebra R B
x : A
y : { x_1 // x_1 ∈ ↑(elementalStarAlgebra R x) }
⊢ ↑y ∈ ↑(elementalStarAlgebra R x)
Theorem: Set.Icc_inter_Icc
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: simp only [Ici_inter_Iic.symm, Ici_inter_Ici.symm, Iic_inter_Iic.symm]
state_before: α : Type u_1
β : Type ?u.182781
inst✝ : Lattice α
a b c a₁ a₂ b₁ b₂ : α
⊢ Icc a₁ b₁ ∩ Icc a₂ b₂ = Icc (a₁ ⊔ a₂) (b₁ ⊓ b₂)

tactic: ac_rfl
state_before: α : Type u_1
β : Type ?u.182781
inst✝ : Lattice α
a b c a₁ a₂ b₁ b₂ : α
⊢ Ici a₁ ∩ Iic b₁ ∩ (Ici a₂ ∩ Iic b₂) = Ici a₁ ∩ Ici a₂ ∩ (Iic b₁ ∩ Iic b₂)
Theorem: hasStrictFDerivAt_iff_hasStrictDerivAt
File: Mathlib/Analysis/Calculus/Deriv/Basic.lean

tactic: simp [HasStrictDerivAt, HasStrictFDerivAt]
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 𝕜
f' : 𝕜 →L[𝕜] F
⊢ HasStrictFDerivAt f f' x ↔ HasStrictDerivAt f (↑f' 1) x
Theorem: Odd.neg_one_pow
File: Mathlib/Algebra/Parity.lean

tactic: rw [h.neg_pow, one_pow]
state_before: F : Type ?u.96735
α : Type u_1
β : Type ?u.96741
R : Type ?u.96744
inst✝¹ : Monoid α
inst✝ : HasDistribNeg α
a : α
n : ℕ
h : Odd n
⊢ (-1) ^ n = -1
Theorem: Subgroup.nat_card_dvd_of_surjective
File: Mathlib/GroupTheory/Index.lean

tactic: rw [← Nat.card_congr (QuotientGroup.quotientKerEquivOfSurjective f hf).toEquiv]
state_before: G✝ : Type ?u.108101
inst✝² : Group G✝
H✝ K L : Subgroup G✝
G : Type u_1
H : Type u_2
inst✝¹ : Group G
inst✝ : Group H
f : G →* H
hf : Function.Surjective ↑f
⊢ Nat.card H ∣ Nat.card G

tactic: exact Dvd.intro_left (Nat.card f.ker) f.ker.card_mul_index
state_before: G✝ : Type ?u.108101
inst✝² : Group G✝
H✝ K L : Subgroup G✝
G : Type u_1
H : Type u_2
inst✝¹ : Group G
inst✝ : Group H
f : G →* H
hf : Function.Surjective ↑f
⊢ Nat.card (G ⧸ MonoidHom.ker f) ∣ Nat.card G
Theorem: ENNReal.exists_frequently_lt_of_liminf_ne_top'
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: by_contra h
state_before: α : Type ?u.186400
β : Type ?u.186403
γ : Type ?u.186406
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
l : Filter ι
x : ι → ℝ
hx : liminf (fun n => ↑(↑Real.nnabs (x n))) l ≠ ⊤
⊢ ∃ R, ∃ᶠ (n : ι) in l, R < x n

tactic: simp_rw [not_exists, not_frequently, not_lt] at h
state_before: α : Type ?u.186400
β : Type ?u.186403
γ : Type ?u.186406
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
l : Filter ι
x : ι → ℝ
hx : liminf (fun n => ↑(↑Real.nnabs (x n))) l ≠ ⊤
h : ¬∃ R, ∃ᶠ (n : ι) in l, R < x n
⊢ False

tactic: refine hx (ENNReal.eq_top_of_forall_nnreal_le fun r => le_limsInf_of_le (by isBoundedDefault) ?_)
state_before: α : Type ?u.186400
β : Type ?u.186403
γ : Type ?u.186406
a b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
l : Filter ι
x : ι → ℝ
hx : liminf (fun n => ↑(↑Real.nnabs (x n))) l ≠ ⊤
h : ∀ (x_1 : ℝ), ∀ᶠ (x_2 : ι) in l, x x_2 ≤ x_1
⊢ False

tactic: simp only [eventually_map, ENNReal.coe_le_coe]
state_before: α : Type ?u.186400
β : Type ?u.186403
γ : Type ?u.186406
a b c d : ℝ≥0∞
r✝ p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
l : Filter ι
x : ι → ℝ
hx : liminf (fun n => ↑(↑Real.nnabs (x n))) l ≠ ⊤
h : ∀ (x_1 : ℝ), ∀ᶠ (x_2 : ι) in l, x x_2 ≤ x_1
r : ℝ≥0
⊢ ∀ᶠ (n : ℝ≥0∞) in map (fun n => ↑(↑Real.nnabs (x n))) l, ↑r ≤ n

tactic: filter_upwards [h (-r)]with i hi using(le_neg.1 hi).trans (neg_le_abs_self _)
state_before: α : Type ?u.186400
β : Type ?u.186403
γ : Type ?u.186406
a b c d : ℝ≥0∞
r✝ p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
l : Filter ι
x : ι → ℝ
hx : liminf (fun n => ↑(↑Real.nnabs (x n))) l ≠ ⊤
h : ∀ (x_1 : ℝ), ∀ᶠ (x_2 : ι) in l, x x_2 ≤ x_1
r : ℝ≥0
⊢ ∀ᶠ (a : ι) in l, r ≤ ↑Real.nnabs (x a)

tactic: isBoundedDefault
state_before: α : Type ?u.186400
β : Type ?u.186403
γ : Type ?u.186406
a b c d : ℝ≥0∞
r✝ p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Type u_1
l : Filter ι
x : ι → ℝ
hx : liminf (fun n => ↑(↑Real.nnabs (x n))) l ≠ ⊤
h : ∀ (x_1 : ℝ), ∀ᶠ (x_2 : ι) in l, x x_2 ≤ x_1
r : ℝ≥0
⊢ IsCobounded (fun x x_1 => x ≥ x_1) (map (fun n => ↑(↑Real.nnabs (x n))) l)
Theorem: Nat.ArithmeticFunction.pmul_zeta
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: ext x
state_before: R : Type u_1
inst✝ : NonAssocSemiring R
f : ArithmeticFunction R
⊢ pmul f ↑ζ = f

tactic: cases x <;> simp [Nat.succ_ne_zero]
state_before: case h
R : Type u_1
inst✝ : NonAssocSemiring R
f : ArithmeticFunction R
x : ℕ
⊢ ↑(pmul f ↑ζ) x = ↑f x
Theorem: CategoryTheory.Limits.BinaryFan.isLimit_iff_isIso_snd
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

tactic: refine' Iff.trans _ (BinaryFan.isLimit_iff_isIso_fst h (BinaryFan.mk c.snd c.fst))
state_before: C : Type u
inst✝ : Category C
X✝ Y✝ X Y : C
h : IsTerminal X
c : BinaryFan X Y
⊢ Nonempty (IsLimit c) ↔ IsIso (snd c)

tactic: exact
  ⟨fun h => ⟨BinaryFan.isLimitFlip h.some⟩, fun h =>
    ⟨(BinaryFan.isLimitFlip h.some).ofIsoLimit (isoBinaryFanMk c).symm⟩⟩
state_before: C : Type u
inst✝ : Category C
X✝ Y✝ X Y : C
h : IsTerminal X
c : BinaryFan X Y
⊢ Nonempty (IsLimit c) ↔ Nonempty (IsLimit (mk (snd c) (fst c)))
Theorem: Set.singleton_pi
File: Mathlib/Data/Set/Prod.lean

tactic: ext
state_before: ι : Type u_2
α : ι → Type u_1
β : ι → Type ?u.134307
s s₁ s₂ : Set ι
t✝ t₁ t₂ : (i : ι) → Set (α i)
i✝ i : ι
t : (i : ι) → Set (α i)
⊢ pi {i} t = eval i ⁻¹' t i

tactic: simp [pi]
state_before: case h
ι : Type u_2
α : ι → Type u_1
β : ι → Type ?u.134307
s s₁ s₂ : Set ι
t✝ t₁ t₂ : (i : ι) → Set (α i)
i✝ i : ι
t : (i : ι) → Set (α i)
x✝ : (i : ι) → α i
⊢ x✝ ∈ pi {i} t ↔ x✝ ∈ eval i ⁻¹' t i
Theorem: zpow_bit1'
File: Mathlib/Algebra/GroupWithZero/Power.lean

tactic: rw [zpow_bit1₀, (Commute.refl a).mul_zpow]
state_before: G₀ : Type u_1
inst✝ : GroupWithZero G₀
a : G₀
n : ℤ
⊢ a ^ bit1 n = (a * a) ^ n * a
Theorem: Nat.modEq_eleven_digits_sum
File: Mathlib/Data/Nat/Digits.lean

tactic: have t := zmodeq_ofDigits_digits 11 10 (-1 : ℤ) (by unfold Int.ModEq; norm_num) n
state_before: n✝ n : ℕ
⊢ ↑n ≡ List.alternatingSum (List.map (fun n => ↑n) (digits 10 n)) [ZMOD 11]

tactic: rwa [ofDigits_neg_one] at t
state_before: n✝ n : ℕ
t : ↑n ≡ ofDigits (-1) (digits 10 n) [ZMOD ↑11]
⊢ ↑n ≡ List.alternatingSum (List.map (fun n => ↑n) (digits 10 n)) [ZMOD 11]

tactic: unfold Int.ModEq
state_before: n✝ n : ℕ
⊢ ↑10 ≡ -1 [ZMOD ↑11]

tactic: norm_num
state_before: n✝ n : ℕ
⊢ ↑10 % ↑11 = -1 % ↑11
Theorem: uniformSpace_comap_id
File: Mathlib/Topology/UniformSpace/Basic.lean

tactic: ext : 2
state_before: α✝ : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.137256
α : Type u_1
⊢ UniformSpace.comap id = id

tactic: rw [uniformity_comap, Prod.map_id, comap_id]
state_before: case h.a
α✝ : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort ?u.137256
α : Type u_1
x✝ : UniformSpace α
⊢ 𝓤 α = 𝓤 α