tasksource/leandojo huggingface dataset:
Theorem: IsFractionRing.num_mul_den_eq_num_iff_eq
File: Mathlib/RingTheory/Localization/NumDen.lean

tactic: simpa only [mk'_num_den] using eq_mk'_iff_mul_eq.mpr h
state_before: R : Type ?u.59265
inst✝⁹ : CommRing R
M : Submonoid R
S : Type ?u.59471
inst✝⁸ : CommRing S
inst✝⁷ : Algebra R S
P : Type ?u.59725
inst✝⁶ : CommRing P
A : Type u_2
inst✝⁵ : CommRing A
inst✝⁴ : IsDomain A
inst✝³ : UniqueFactorizationMonoid A
K : Type u_1
inst✝² : Field K
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
x y : K
h : x * ↑(algebraMap A K) ↑(den A y) = ↑(algebraMap A K) (num A y)
⊢ x = y

tactic: rw [h, mk'_num_den]
state_before: R : Type ?u.59265
inst✝⁹ : CommRing R
M : Submonoid R
S : Type ?u.59471
inst✝⁸ : CommRing S
inst✝⁷ : Algebra R S
P : Type ?u.59725
inst✝⁶ : CommRing P
A : Type u_2
inst✝⁵ : CommRing A
inst✝⁴ : IsDomain A
inst✝³ : UniqueFactorizationMonoid A
K : Type u_1
inst✝² : Field K
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
x y : K
h : x = y
⊢ x = mk' K (num A y) (den A y)
Theorem: Stream'.Seq.eq_or_mem_of_mem_cons
File: Mathlib/Data/Seq/Seq.lean

tactic: injection h
state_before: α : Type u
β : Type v
γ : Type w
a b : α
f : Stream' (Option α)
al : IsSeq f
h✝ : a ∈ cons b { val := f, property := al }
h : some a = some b
⊢ a = b
Theorem: Polynomial.aeval_eq_sum_range
File: Mathlib/Data/Polynomial/AlgebraMap.lean

tactic: simp_rw [Algebra.smul_def]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type ?u.1271761
B' : Type ?u.1271764
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.1271977
inst✝³ : Semiring B
inst✝² : Algebra R B
x✝ : A
inst✝¹ : Semiring S
f : R →+* S
inst✝ : Algebra R S
p : R[X]
x : S
⊢ ↑(aeval x) p = ∑ i in range (natDegree p + 1), coeff p i • x ^ i

tactic: exact eval₂_eq_sum_range (algebraMap R S) x
state_before: R : Type u
S : Type v
T : Type w
A : Type z
A' : Type ?u.1271761
B' : Type ?u.1271764
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.1271977
inst✝³ : Semiring B
inst✝² : Algebra R B
x✝ : A
inst✝¹ : Semiring S
f : R →+* S
inst✝ : Algebra R S
p : R[X]
x : S
⊢ ↑(aeval x) p = ∑ x_1 in range (natDegree p + 1), ↑(algebraMap R S) (coeff p x_1) * x ^ x_1
Theorem: NormedSpace.isBounded_iff_subset_smul_closedBall
File: Mathlib/Analysis/LocallyConvex/Bounded.lean

tactic: constructor
state_before: 𝕜 : Type u_2
𝕜' : Type ?u.270507
E : Type u_1
E' : Type ?u.270513
F : Type ?u.270516
ι : Type ?u.270519
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsBounded s ↔ ∃ a, s ⊆ a • Metric.closedBall 0 1

tactic: rw [isBounded_iff_subset_smul_ball 𝕜]
state_before: case mp
𝕜 : Type u_2
𝕜' : Type ?u.270507
E : Type u_1
E' : Type ?u.270513
F : Type ?u.270516
ι : Type ?u.270519
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsBounded s → ∃ a, s ⊆ a • Metric.closedBall 0 1

tactic: exact Exists.imp fun a ha => ha.trans <| Set.smul_set_mono <| Metric.ball_subset_closedBall
state_before: case mp
𝕜 : Type u_2
𝕜' : Type ?u.270507
E : Type u_1
E' : Type ?u.270513
F : Type ?u.270516
ι : Type ?u.270519
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ (∃ a, s ⊆ a • Metric.ball 0 1) → ∃ a, s ⊆ a • Metric.closedBall 0 1

tactic: rw [← isVonNBounded_iff 𝕜]
state_before: case mpr
𝕜 : Type u_2
𝕜' : Type ?u.270507
E : Type u_1
E' : Type ?u.270513
F : Type ?u.270516
ι : Type ?u.270519
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ (∃ a, s ⊆ a • Metric.closedBall 0 1) → Bornology.IsBounded s

tactic: rintro ⟨a, ha⟩
state_before: case mpr
𝕜 : Type u_2
𝕜' : Type ?u.270507
E : Type u_1
E' : Type ?u.270513
F : Type ?u.270516
ι : Type ?u.270519
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ (∃ a, s ⊆ a • Metric.closedBall 0 1) → Bornology.IsVonNBounded 𝕜 s

tactic: exact ((isVonNBounded_closedBall 𝕜 E 1).image (a • (1 : E →L[𝕜] E))).subset ha
state_before: case mpr.intro
𝕜 : Type u_2
𝕜' : Type ?u.270507
E : Type u_1
E' : Type ?u.270513
F : Type ?u.270516
ι : Type ?u.270519
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
a : 𝕜
ha : s ⊆ a • Metric.closedBall 0 1
⊢ Bornology.IsVonNBounded 𝕜 s
Theorem: UniqueFactorizationMonoid.normalizedFactors_pos
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: constructor
state_before: α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
hx : x ≠ 0
⊢ 0 < normalizedFactors x ↔ ¬IsUnit x

tactic: intro h hx
state_before: case mp
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
hx : x ≠ 0
⊢ 0 < normalizedFactors x → ¬IsUnit x

tactic: obtain ⟨p, hp⟩ := Multiset.exists_mem_of_ne_zero h.ne'
state_before: case mp
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
hx✝ : x ≠ 0
h : 0 < normalizedFactors x
hx : IsUnit x
⊢ False

tactic: exact
  (prime_of_normalized_factor _ hp).not_unit
    (isUnit_of_dvd_unit (dvd_of_mem_normalizedFactors hp) hx)
state_before: case mp.intro
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
hx✝ : x ≠ 0
h : 0 < normalizedFactors x
hx : IsUnit x
p : α
hp : p ∈ normalizedFactors x
⊢ False

tactic: intro h
state_before: case mpr
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
hx : x ≠ 0
⊢ ¬IsUnit x → 0 < normalizedFactors x

tactic: obtain ⟨p, hp⟩ := exists_mem_normalizedFactors hx h
state_before: case mpr
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
hx : x ≠ 0
h : ¬IsUnit x
⊢ 0 < normalizedFactors x

tactic: exact
  bot_lt_iff_ne_bot.mpr
    (mt Multiset.eq_zero_iff_forall_not_mem.mp (not_forall.mpr ⟨p, not_not.mpr hp⟩))
state_before: case mpr.intro
α : Type u_1
inst✝³ : CancelCommMonoidWithZero α
inst✝² : DecidableEq α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
hx : x ≠ 0
h : ¬IsUnit x
p : α
hp : p ∈ normalizedFactors x
⊢ 0 < normalizedFactors x
Theorem: Dfinsupp.zipWith_neLocus_eq_left
File: Mathlib/Data/Dfinsupp/NeLocus.lean

tactic: ext a
state_before: α : Type u_4
N : α → Type u_1
inst✝⁵ : DecidableEq α
M : α → Type u_3
P : α → Type u_2
inst✝⁴ : (a : α) → Zero (N a)
inst✝³ : (a : α) → Zero (M a)
inst✝² : (a : α) → Zero (P a)
inst✝¹ : (a : α) → DecidableEq (N a)
inst✝ : (a : α) → DecidableEq (P a)
F : (a : α) → M a → N a → P a
F0 : ∀ (a : α), F a 0 0 = 0
f : Π₀ (a : α), M a
g₁ g₂ : Π₀ (a : α), N a
hF : ∀ (a : α) (f : M a), Function.Injective fun g => F a f g
⊢ neLocus (zipWith F F0 f g₁) (zipWith F F0 f g₂) = neLocus g₁ g₂

tactic: simpa only [mem_neLocus] using (hF a _).ne_iff
state_before: case a
α : Type u_4
N : α → Type u_1
inst✝⁵ : DecidableEq α
M : α → Type u_3
P : α → Type u_2
inst✝⁴ : (a : α) → Zero (N a)
inst✝³ : (a : α) → Zero (M a)
inst✝² : (a : α) → Zero (P a)
inst✝¹ : (a : α) → DecidableEq (N a)
inst✝ : (a : α) → DecidableEq (P a)
F : (a : α) → M a → N a → P a
F0 : ∀ (a : α), F a 0 0 = 0
f : Π₀ (a : α), M a
g₁ g₂ : Π₀ (a : α), N a
hF : ∀ (a : α) (f : M a), Function.Injective fun g => F a f g
a : α
⊢ a ∈ neLocus (zipWith F F0 f g₁) (zipWith F F0 f g₂) ↔ a ∈ neLocus g₁ g₂
Theorem: SimpleGraph.card_set_walk_length_eq
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: rw [← Finset.mem_coe, coe_finsetWalkLength_eq]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝¹ : DecidableEq V
inst✝ : LocallyFinite G
u v : V
n : ℕ
p : Walk G u v
⊢ p ∈ finsetWalkLength G n u v ↔ p ∈ {p | Walk.length p = n}
Theorem: Filter.mem_top
File: Mathlib/Order/Filter/Basic.lean

tactic: rw [mem_top_iff_forall, eq_univ_iff_forall]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.57666
ι : Sort x
f g : Filter α
s✝ t s : Set α
⊢ s ∈ ⊤ ↔ s = univ
Theorem: Set.Ici_iSup
File: Mathlib/Data/Set/Lattice.lean

tactic: simp only [mem_Ici, iSup_le_iff, mem_iInter]
state_before: α : Type u_1
β : Type ?u.295226
γ : Type ?u.295229
ι : Sort u_2
ι' : Sort ?u.295235
ι₂ : Sort ?u.295238
κ : ι → Sort ?u.295243
κ₁ : ι → Sort ?u.295248
κ₂ : ι → Sort ?u.295253
κ' : ι' → Sort ?u.295258
inst✝ : CompleteLattice α
f : ι → α
x✝ : α
⊢ x✝ ∈ Ici (⨆ (i : ι), f i) ↔ x✝ ∈ ⋂ (i : ι), Ici (f i)
Theorem: ENNReal.eventuallyEq_of_toReal_eventuallyEq
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: filter_upwards [hfi, hgi, hfg]with _ hfx hgx _
state_before: α : Type u_1
β : Type ?u.27073
γ : Type ?u.27076
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
l : Filter α
f g : α → ℝ≥0∞
hfi : ∀ᶠ (x : α) in l, f x ≠ ⊤
hgi : ∀ᶠ (x : α) in l, g x ≠ ⊤
hfg : (fun x => ENNReal.toReal (f x)) =ᶠ[l] fun x => ENNReal.toReal (g x)
⊢ f =ᶠ[l] g

tactic: rwa [← ENNReal.toReal_eq_toReal hfx hgx]
state_before: case h
α : Type u_1
β : Type ?u.27073
γ : Type ?u.27076
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
l : Filter α
f g : α → ℝ≥0∞
hfi : ∀ᶠ (x : α) in l, f x ≠ ⊤
hgi : ∀ᶠ (x : α) in l, g x ≠ ⊤
hfg : (fun x => ENNReal.toReal (f x)) =ᶠ[l] fun x => ENNReal.toReal (g x)
a✝¹ : α
hfx : f a✝¹ ≠ ⊤
hgx : g a✝¹ ≠ ⊤
a✝ : ENNReal.toReal (f a✝¹) = ENNReal.toReal (g a✝¹)
⊢ f a✝¹ = g a✝¹
Theorem: zpow_strictMono_right
File: Mathlib/Algebra/GroupPower/Lemmas.lean

tactic: rw [← zpow_add]
state_before: α : Type u_1
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✝ : OrderedCommGroup α
m✝ n✝ : ℤ
a b : α
ha : 1 < a
m n : ℤ
h : m < n
⊢ a ^ m * a ^ (n - m) = a ^ n

tactic: simp
state_before: α : Type u_1
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✝ : OrderedCommGroup α
m✝ n✝ : ℤ
a b : α
ha : 1 < a
m n : ℤ
h : m < n
⊢ a ^ (m + (n - m)) = a ^ n
Theorem: List.any_iff_exists
File: Mathlib/Data/Bool/AllAny.lean

tactic: induction' l with a l ih
state_before: α : Type u_1
p✝ : α → Prop
inst✝ : DecidablePred p✝
l : List α
a : α
p : α → Bool
⊢ any l p = true ↔ ∃ a, a ∈ l ∧ p a = true

tactic: simp only [any_cons, Bool.or_coe_iff, ih, exists_mem_cons_iff]
state_before: case cons
α : Type u_1
p✝ : α → Prop
inst✝ : DecidablePred p✝
l✝ : List α
a✝ : α
p : α → Bool
a : α
l : List α
ih : any l p = true ↔ ∃ a, a ∈ l ∧ p a = true
⊢ any (a :: l) p = true ↔ ∃ a_1, a_1 ∈ a :: l ∧ p a_1 = true

tactic: exact iff_of_false Bool.not_false' (not_exists_mem_nil _)
state_before: case nil
α : Type u_1
p✝ : α → Prop
inst✝ : DecidablePred p✝
l : List α
a : α
p : α → Bool
⊢ any [] p = true ↔ ∃ a, a ∈ [] ∧ p a = true
Theorem: PiLp.nnnorm_eq_sum
File: Mathlib/Analysis/NormedSpace/PiLp.lean

tactic: ext
state_before: p✝ : ℝ≥0∞
𝕜 : Type ?u.229074
𝕜' : Type ?u.229077
ι : Type u_2
α : ι → Type ?u.229085
β✝ : ι → Type ?u.229090
inst✝³ : Fintype ι
inst✝² : Fact (1 ≤ p✝)
p : ℝ≥0∞
inst✝¹ : Fact (1 ≤ p)
β : ι → Type u_1
hp : p ≠ ⊤
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
f : PiLp p β
⊢ ‖f‖₊ = (∑ i : ι, ‖f i‖₊ ^ ENNReal.toReal p) ^ (1 / ENNReal.toReal p)

tactic: simp [NNReal.coe_sum, norm_eq_sum (p.toReal_pos_iff_ne_top.mpr hp)]
state_before: case a
p✝ : ℝ≥0∞
𝕜 : Type ?u.229074
𝕜' : Type ?u.229077
ι : Type u_2
α : ι → Type ?u.229085
β✝ : ι → Type ?u.229090
inst✝³ : Fintype ι
inst✝² : Fact (1 ≤ p✝)
p : ℝ≥0∞
inst✝¹ : Fact (1 ≤ p)
β : ι → Type u_1
hp : p ≠ ⊤
inst✝ : (i : ι) → SeminormedAddCommGroup (β i)
f : PiLp p β
⊢ ↑‖f‖₊ = ↑((∑ i : ι, ‖f i‖₊ ^ ENNReal.toReal p) ^ (1 / ENNReal.toReal p))
Theorem: Int.lnot_bit
File: Mathlib/Data/Int/Bitwise.lean

tactic: simp [lnot]
state_before: b : Bool
n : ℕ
⊢ lnot (bit b ↑n) = bit (!b) (lnot ↑n)

tactic: simp [lnot]
state_before: b : Bool
n : ℕ
⊢ lnot (bit b -[n+1]) = bit (!b) (lnot -[n+1])
Theorem: isOpen_iff_generate_intervals
File: Mathlib/Topology/Order/Basic.lean

tactic: rw [t.topology_eq_generate_intervals]
state_before: α : Type u
β : Type v
γ : Type w
inst✝¹ : TopologicalSpace α
inst✝ : Preorder α
t : OrderTopology α
s : Set α
⊢ IsOpen s ↔ GenerateOpen {s | ∃ a, s = Ioi a ∨ s = Iio a} s

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
inst✝¹ : TopologicalSpace α
inst✝ : Preorder α
t : OrderTopology α
s : Set α
⊢ IsOpen s ↔ GenerateOpen {s | ∃ a, s = Ioi a ∨ s = Iio a} s
Theorem: Dfinsupp.mapRange_single
File: Mathlib/Data/Dfinsupp/Basic.lean

tactic: by_cases h : i = i'
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝³ : (i : ι) → Zero (β i)
inst✝² : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i : ι
b : β₁ i
i' : ι
⊢ ↑(mapRange f hf (single i b)) i' = ↑(single i (f i b)) i'

tactic: subst i'
state_before: case pos
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝³ : (i : ι) → Zero (β i)
inst✝² : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i : ι
b : β₁ i
i' : ι
h : i = i'
⊢ ↑(mapRange f hf (single i b)) i' = ↑(single i (f i b)) i'

tactic: simp
state_before: case pos
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝³ : (i : ι) → Zero (β i)
inst✝² : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i : ι
b : β₁ i
⊢ ↑(mapRange f hf (single i b)) i = ↑(single i (f i b)) i

tactic: simp [h, hf]
state_before: case neg
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝³ : (i : ι) → Zero (β i)
inst✝² : (i : ι) → (x : β i) → Decidable (x ≠ 0)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i : ι
b : β₁ i
i' : ι
h : ¬i = i'
⊢ ↑(mapRange f hf (single i b)) i' = ↑(single i (f i b)) i'
Theorem: exists_norm_eq
File: Mathlib/Analysis/NormedSpace/Basic.lean

tactic: rcases exists_ne (0 : E) with ⟨x, hx⟩
state_before: α : Type ?u.296964
β : Type ?u.296967
γ : Type ?u.296970
ι : Type ?u.296973
inst✝⁶ : NormedField α
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace α E
F : Type ?u.297066
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace α F
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
c : ℝ
hc : 0 ≤ c
⊢ ∃ x, ‖x‖ = c

tactic: rw [← norm_ne_zero_iff] at hx
state_before: case intro
α : Type ?u.296964
β : Type ?u.296967
γ : Type ?u.296970
ι : Type ?u.296973
inst✝⁶ : NormedField α
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace α E
F : Type ?u.297066
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace α F
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
c : ℝ
hc : 0 ≤ c
x : E
hx : x ≠ 0
⊢ ∃ x, ‖x‖ = c

tactic: use c • ‖x‖⁻¹ • x
state_before: case intro
α : Type ?u.296964
β : Type ?u.296967
γ : Type ?u.296970
ι : Type ?u.296973
inst✝⁶ : NormedField α
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace α E
F : Type ?u.297066
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace α F
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
c : ℝ
hc : 0 ≤ c
x : E
hx : ‖x‖ ≠ 0
⊢ ∃ x, ‖x‖ = c

tactic: simp [norm_smul, Real.norm_of_nonneg hc, abs_of_nonneg hc, inv_mul_cancel hx]
state_before: case intro
α : Type ?u.296964
β : Type ?u.296967
γ : Type ?u.296970
ι : Type ?u.296973
inst✝⁶ : NormedField α
E : Type u_1
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace α E
F : Type ?u.297066
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace α F
inst✝¹ : NormedSpace ℝ E
inst✝ : Nontrivial E
c : ℝ
hc : 0 ≤ c
x : E
hx : ‖x‖ ≠ 0
⊢ ‖c • ‖x‖⁻¹ • x‖ = c
Theorem: CategoryTheory.MonoidalCategory.pentagon_hom_inv
File: Mathlib/CategoryTheory/Monoidal/CoherenceLemmas.lean

tactic: coherence
state_before: C : Type u_2
inst✝¹ : Category C
inst✝ : MonoidalCategory C
W X Y Z : C
⊢ (α_ W X (Y ⊗ Z)).hom ≫ (𝟙 W ⊗ (α_ X Y Z).inv) = (α_ (W ⊗ X) Y Z).inv ≫ ((α_ W X Y).hom ⊗ 𝟙 Z) ≫ (α_ W (X ⊗ Y) Z).hom
Theorem: toIcoMod_zero_one
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simp [toIcoMod_eq_add_fract_mul]
state_before: α : Type u_1
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
p : α
hp : 0 < p
b : α
⊢ toIcoMod (_ : 0 < 1) 0 b = Int.fract b
Theorem: IntermediateField.isIntegral_iff
File: Mathlib/FieldTheory/IntermediateField.lean

tactic: rw [← isAlgebraic_iff_isIntegral, isAlgebraic_iff, isAlgebraic_iff_isIntegral]
state_before: K : Type u_2
L : Type u_1
L' : Type ?u.313025
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S : IntermediateField K L
x : { x // x ∈ S }
⊢ IsIntegral K x ↔ IsIntegral K ↑x
Theorem: Int.clog_inv
File: Mathlib/Data/Int/Log.lean

tactic: cases' lt_or_le 0 r with hrp hrp
state_before: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
⊢ clog b r⁻¹ = -log b r

tactic: obtain hr | hr := le_total 1 r
state_before: case inl
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
hrp : 0 < r
⊢ clog b r⁻¹ = -log b r

tactic: rw [clog_of_right_le_one _ (inv_le_one hr), log_of_one_le_right _ hr, inv_inv]
state_before: case inl.inl
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
hrp : 0 < r
hr : 1 ≤ r
⊢ clog b r⁻¹ = -log b r

tactic: rw [clog_of_one_le_right _ (one_le_inv hrp hr), log_of_right_le_one _ hr, neg_neg]
state_before: case inl.inr
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
hrp : 0 < r
hr : r ≤ 1
⊢ clog b r⁻¹ = -log b r

tactic: rw [clog_of_right_le_zero _ (inv_nonpos.mpr hrp), log_of_right_le_zero _ hrp, neg_zero]
state_before: case inr
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
hrp : r ≤ 0
⊢ clog b r⁻¹ = -log b r
Theorem: CategoryTheory.Limits.image.factor_map
File: Mathlib/CategoryTheory/Limits/Shapes/Images.lean

tactic: simp
state_before: C : Type u
inst✝³ : Category C
f g : Arrow C
inst✝² : HasImage f.hom
inst✝¹ : HasImage g.hom
sq : f ⟶ g
inst✝ : HasImageMap sq
⊢ factorThruImage f.hom ≫ map sq = sq.left ≫ factorThruImage g.hom
Theorem: Ideal.cotangentEquivIdeal_symm_apply
File: Mathlib/RingTheory/Ideal/Cotangent.lean

tactic: apply I.cotangentEquivIdeal.injective
state_before: R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
x : R
hx : x ∈ I
⊢ ↑(LinearEquiv.symm (cotangentEquivIdeal I))
      { val := ↑(Submodule.mkQ (I ^ 2)) x,
        property := (_ : ↑(Submodule.mkQ (I ^ 2)) x ∈ Submodule.map (Submodule.mkQ (I ^ 2)) I) } =
    ↑(toCotangent I) { val := x, property := hx }

tactic: rw [I.cotangentEquivIdeal.apply_symm_apply]
state_before: case a
R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
x : R
hx : x ∈ I
⊢ ↑(cotangentEquivIdeal I)
      (↑(LinearEquiv.symm (cotangentEquivIdeal I))
        { val := ↑(Submodule.mkQ (I ^ 2)) x,
          property := (_ : ↑(Submodule.mkQ (I ^ 2)) x ∈ Submodule.map (Submodule.mkQ (I ^ 2)) I) }) =
    ↑(cotangentEquivIdeal I) (↑(toCotangent I) { val := x, property := hx })

tactic: ext
state_before: case a
R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
x : R
hx : x ∈ I
⊢ { val := ↑(Submodule.mkQ (I ^ 2)) x,
      property := (_ : ↑(Submodule.mkQ (I ^ 2)) x ∈ Submodule.map (Submodule.mkQ (I ^ 2)) I) } =
    ↑(cotangentEquivIdeal I) (↑(toCotangent I) { val := x, property := hx })

tactic: rfl
state_before: case a.a
R : Type u
S : Type v
S' : Type w
inst✝⁶ : CommRing R
inst✝⁵ : CommSemiring S
inst✝⁴ : Algebra S R
inst✝³ : CommSemiring S'
inst✝² : Algebra S' R
inst✝¹ : Algebra S S'
inst✝ : IsScalarTower S S' R
I : Ideal R
x : R
hx : x ∈ I
⊢ ↑{ val := ↑(Submodule.mkQ (I ^ 2)) x,
        property := (_ : ↑(Submodule.mkQ (I ^ 2)) x ∈ Submodule.map (Submodule.mkQ (I ^ 2)) I) } =
    ↑(↑(cotangentEquivIdeal I) (↑(toCotangent I) { val := x, property := hx }))
Theorem: MvPolynomial.frobenius_zmod
File: Mathlib/FieldTheory/Finite/Polynomial.lean

tactic: apply induction_on f
state_before: σ : Type u_1
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : MvPolynomial σ (ZMod p)
⊢ ↑(frobenius (MvPolynomial σ (ZMod p)) p) f = ↑(expand p) f

tactic: intro a
state_before: case h_C
σ : Type u_1
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : MvPolynomial σ (ZMod p)
⊢ ∀ (a : ZMod p), ↑(frobenius (MvPolynomial σ (ZMod p)) p) (↑C a) = ↑(expand p) (↑C a)

tactic: rw [expand_C, frobenius_def, ← C_pow, ZMod.pow_card]
state_before: case h_C
σ : Type u_1
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : MvPolynomial σ (ZMod p)
a : ZMod p
⊢ ↑(frobenius (MvPolynomial σ (ZMod p)) p) (↑C a) = ↑(expand p) (↑C a)

tactic: simp only [AlgHom.map_add, RingHom.map_add]
state_before: case h_add
σ : Type u_1
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : MvPolynomial σ (ZMod p)
⊢ ∀ (p_1 q : MvPolynomial σ (ZMod p)),
    ↑(frobenius (MvPolynomial σ (ZMod p)) p) p_1 = ↑(expand p) p_1 →
      ↑(frobenius (MvPolynomial σ (ZMod p)) p) q = ↑(expand p) q →
        ↑(frobenius (MvPolynomial σ (ZMod p)) p) (p_1 + q) = ↑(expand p) (p_1 + q)

tactic: intro _ _ hf hg
state_before: case h_add
σ : Type u_1
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : MvPolynomial σ (ZMod p)
⊢ ∀ (p_1 q : MvPolynomial σ (ZMod p)),
    ↑(frobenius (MvPolynomial σ (ZMod p)) p) p_1 = ↑(expand p) p_1 →
      ↑(frobenius (MvPolynomial σ (ZMod p)) p) q = ↑(expand p) q →
        ↑(frobenius (MvPolynomial σ (ZMod p)) p) p_1 + ↑(frobenius (MvPolynomial σ (ZMod p)) p) q =
          ↑(expand p) p_1 + ↑(expand p) q

tactic: rw [hf, hg]
state_before: case h_add
σ : Type u_1
p : ℕ
inst✝ : Fact (Nat.Prime p)
f p✝ q✝ : MvPolynomial σ (ZMod p)
hf : ↑(frobenius (MvPolynomial σ (ZMod p)) p) p✝ = ↑(expand p) p✝
hg : ↑(frobenius (MvPolynomial σ (ZMod p)) p) q✝ = ↑(expand p) q✝
⊢ ↑(frobenius (MvPolynomial σ (ZMod p)) p) p✝ + ↑(frobenius (MvPolynomial σ (ZMod p)) p) q✝ =
    ↑(expand p) p✝ + ↑(expand p) q✝

tactic: simp only [expand_X, RingHom.map_mul, AlgHom.map_mul]
state_before: case h_X
σ : Type u_1
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : MvPolynomial σ (ZMod p)
⊢ ∀ (p_1 : MvPolynomial σ (ZMod p)) (n : σ),
    ↑(frobenius (MvPolynomial σ (ZMod p)) p) p_1 = ↑(expand p) p_1 →
      ↑(frobenius (MvPolynomial σ (ZMod p)) p) (p_1 * X n) = ↑(expand p) (p_1 * X n)

tactic: intro _ _ hf
state_before: case h_X
σ : Type u_1
p : ℕ
inst✝ : Fact (Nat.Prime p)
f : MvPolynomial σ (ZMod p)
⊢ ∀ (p_1 : MvPolynomial σ (ZMod p)) (n : σ),
    ↑(frobenius (MvPolynomial σ (ZMod p)) p) p_1 = ↑(expand p) p_1 →
      ↑(frobenius (MvPolynomial σ (ZMod p)) p) p_1 * ↑(frobenius (MvPolynomial σ (ZMod p)) p) (X n) =
        ↑(expand p) p_1 * X n ^ p

tactic: rw [hf, frobenius_def]
state_before: case h_X
σ : Type u_1
p : ℕ
inst✝ : Fact (Nat.Prime p)
f p✝ : MvPolynomial σ (ZMod p)
n✝ : σ
hf : ↑(frobenius (MvPolynomial σ (ZMod p)) p) p✝ = ↑(expand p) p✝
⊢ ↑(frobenius (MvPolynomial σ (ZMod p)) p) p✝ * ↑(frobenius (MvPolynomial σ (ZMod p)) p) (X n✝) =
    ↑(expand p) p✝ * X n✝ ^ p