tasksource/leandojo huggingface dataset:
Theorem: List.of_mem_filter
File: Mathlib/Data/List/Basic.lean

tactic: simpa only [filter_cons_of_pos _ pb] using ain
state_before: ι : Type ?u.371648
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
a b : α
l : List α
ain : a ∈ filter p (b :: l)
pb : p b = true
⊢ a ∈ b :: filter p l

tactic: rw [← h] at pb
state_before: ι : Type ?u.371648
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
a b : α
l : List α
ain : a ∈ filter p (b :: l)
pb : p b = true
this : a ∈ b :: filter p l
h : a = b
⊢ p a = true

tactic: exact pb
state_before: ι : Type ?u.371648
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
a b : α
l : List α
ain : a ∈ filter p (b :: l)
pb : p a = true
this : a ∈ b :: filter p l
h : a = b
⊢ p a = true

tactic: simp only [filter_cons_of_neg _ pb] at ain
state_before: ι : Type ?u.371648
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
a b : α
l : List α
ain : a ∈ filter p (b :: l)
pb : ¬p b = true
⊢ p a = true

tactic: exact of_mem_filter ain
state_before: ι : Type ?u.371648
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Bool
a b : α
l : List α
pb : ¬p b = true
ain : a ∈ filter p l
⊢ p a = true
Theorem: Finset.map_some_eraseNone
File: Mathlib/Data/Finset/Option.lean

tactic: rw [map_eq_image, Embedding.some_apply, image_some_eraseNone]
state_before: α : Type u_1
β : Type ?u.14880
inst✝ : DecidableEq (Option α)
s : Finset (Option α)
⊢ map Embedding.some (↑eraseNone s) = erase s none
Theorem: BoxIntegral.Box.splitLower_ne_splitUpper
File: Mathlib/Analysis/BoxIntegral/Partition/Split.lean

tactic: cases' le_or_lt x (I.lower i) with h
state_before: ι : Type u_1
M : Type ?u.21476
n : ℕ
I✝ : Box ι
i✝ : ι
x✝ : ℝ
y : ι → ℝ
I : Box ι
i : ι
x : ℝ
⊢ splitLower I i x ≠ splitUpper I i x

tactic: rw [splitUpper_eq_self.2 h, splitLower_eq_bot.2 h]
state_before: case inl
ι : Type u_1
M : Type ?u.21476
n : ℕ
I✝ : Box ι
i✝ : ι
x✝ : ℝ
y : ι → ℝ
I : Box ι
i : ι
x : ℝ
h : x ≤ lower I i
⊢ splitLower I i x ≠ splitUpper I i x

tactic: exact WithBot.bot_ne_coe
state_before: case inl
ι : Type u_1
M : Type ?u.21476
n : ℕ
I✝ : Box ι
i✝ : ι
x✝ : ℝ
y : ι → ℝ
I : Box ι
i : ι
x : ℝ
h : x ≤ lower I i
⊢ ⊥ ≠ ↑I

tactic: refine' (disjoint_splitLower_splitUpper I i x).ne _
state_before: case inr
ι : Type u_1
M : Type ?u.21476
n : ℕ
I✝ : Box ι
i✝ : ι
x✝ : ℝ
y : ι → ℝ
I : Box ι
i : ι
x : ℝ
h✝ : lower I i < x
⊢ splitLower I i x ≠ splitUpper I i x

tactic: rwa [Ne.def, splitLower_eq_bot, not_le]
state_before: case inr
ι : Type u_1
M : Type ?u.21476
n : ℕ
I✝ : Box ι
i✝ : ι
x✝ : ℝ
y : ι → ℝ
I : Box ι
i : ι
x : ℝ
h✝ : lower I i < x
⊢ splitLower I i x ≠ ⊥
Theorem: symmDiff_of_le
File: Mathlib/Order/SymmDiff.lean

tactic: rw [symmDiff, sdiff_eq_bot_iff.2 h, bot_sup_eq]
state_before: ι : Type ?u.20047
α : Type u_1
β : Type ?u.20053
π : ι → Type ?u.20058
inst✝ : GeneralizedCoheytingAlgebra α
a✝ b✝ c d a b : α
h : a ≤ b
⊢ a ∆ b = b \ a
Theorem: Set.image2_singleton_right
File: Mathlib/Data/Set/NAry.lean

tactic: simp
state_before: α : Type u_2
α' : Type ?u.25381
β : Type u_3
β' : Type ?u.25387
γ : Type u_1
γ' : Type ?u.25393
δ : Type ?u.25396
δ' : Type ?u.25399
ε : Type ?u.25402
ε' : Type ?u.25405
ζ : Type ?u.25408
ζ' : Type ?u.25411
ν : Type ?u.25414
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
x : γ
⊢ x ∈ image2 f s {b} ↔ x ∈ (fun a => f a b) '' s
Theorem: NNReal.summable_of_sum_range_le
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: refine summable_iff_not_tendsto_nat_atTop.2 fun H => ?_
state_before: α : Type ?u.314365
β : Type ?u.314368
γ : Type ?u.314371
f : ℕ → ℝ≥0
c : ℝ≥0
h : ∀ (n : ℕ), ∑ i in Finset.range n, f i ≤ c
⊢ Summable f

tactic: rcases exists_lt_of_tendsto_atTop H 0 c with ⟨n, -, hn⟩
state_before: α : Type ?u.314365
β : Type ?u.314368
γ : Type ?u.314371
f : ℕ → ℝ≥0
c : ℝ≥0
h : ∀ (n : ℕ), ∑ i in Finset.range n, f i ≤ c
H : Tendsto (fun n => ∑ i in Finset.range n, f i) atTop atTop
⊢ False

tactic: exact lt_irrefl _ (hn.trans_le (h n))
state_before: case intro.intro
α : Type ?u.314365
β : Type ?u.314368
γ : Type ?u.314371
f : ℕ → ℝ≥0
c : ℝ≥0
h : ∀ (n : ℕ), ∑ i in Finset.range n, f i ≤ c
H : Tendsto (fun n => ∑ i in Finset.range n, f i) atTop atTop
n : ℕ
hn : c < ∑ i in Finset.range n, f i
⊢ False
Theorem: FirstOrder.Language.funMap_quotient_mk'
File: Mathlib/ModelTheory/Quotients.lean

tactic: change
  Quotient.map (@funMap L M ps.toStructure n f) Prestructure.fun_equiv (Quotient.finChoice _) =
    _
state_before: L : Language
M : Type u_3
s : Setoid M
ps : Prestructure L s
n : ℕ
f : Functions L n
x : Fin n → M
⊢ (funMap f fun i => Quotient.mk s (x i)) = Quotient.mk s (funMap f x)

tactic: rw [Quotient.finChoice_eq, Quotient.map_mk]
state_before: L : Language
M : Type u_3
s : Setoid M
ps : Prestructure L s
n : ℕ
f : Functions L n
x : Fin n → M
⊢ Quotient.map (funMap f) (_ : ∀ (x y : Fin n → M), x ≈ y → funMap f x ≈ funMap f y)
      (Quotient.finChoice fun i => Quotient.mk s (x i)) =
    Quotient.mk s (funMap f x)
Theorem: ringChar.Nat.cast_ringChar
File: Mathlib/Algebra/CharP/Basic.lean

tactic: rw [ringChar.spec]
state_before: R : Type u_1
inst✝ : NonAssocSemiring R
⊢ ↑(ringChar R) = 0
Theorem: FreeAbelianGroup.lift_comp
File: Mathlib/GroupTheory/FreeAbelianGroup.lean

tactic: apply FreeAbelianGroup.induction_on (C := fun x ↦ lift (g ∘ f) x = lift g (map f x)) x
state_before: α✝ : Type u
β✝ : Type v
γ✝ : Type w
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : AddCommGroup γ
f : α → β
g : β → γ
x : FreeAbelianGroup α
⊢ ↑(↑lift (g ∘ f)) x = ↑(↑lift g) (↑(map f) x)

tactic: simp only [map_zero]
state_before: case C0
α✝ : Type u
β✝ : Type v
γ✝ : Type w
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : AddCommGroup γ
f : α → β
g : β → γ
x : FreeAbelianGroup α
⊢ ↑(↑lift (g ∘ f)) 0 = ↑(↑lift g) (↑(map f) 0)

tactic: intro _
state_before: case C1
α✝ : Type u
β✝ : Type v
γ✝ : Type w
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : AddCommGroup γ
f : α → β
g : β → γ
x : FreeAbelianGroup α
⊢ ∀ (x : α), ↑(↑lift (g ∘ f)) (of x) = ↑(↑lift g) (↑(map f) (of x))

tactic: simp only [lift.of, map, Function.comp]
state_before: case C1
α✝ : Type u
β✝ : Type v
γ✝ : Type w
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : AddCommGroup γ
f : α → β
g : β → γ
x : FreeAbelianGroup α
x✝ : α
⊢ ↑(↑lift (g ∘ f)) (of x✝) = ↑(↑lift g) (↑(map f) (of x✝))

tactic: intro _ h
state_before: case Cn
α✝ : Type u
β✝ : Type v
γ✝ : Type w
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : AddCommGroup γ
f : α → β
g : β → γ
x : FreeAbelianGroup α
⊢ ∀ (x : α),
    ↑(↑lift (g ∘ f)) (of x) = ↑(↑lift g) (↑(map f) (of x)) → ↑(↑lift (g ∘ f)) (-of x) = ↑(↑lift g) (↑(map f) (-of x))

tactic: simp only [h, AddMonoidHom.map_neg]
state_before: case Cn
α✝ : Type u
β✝ : Type v
γ✝ : Type w
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : AddCommGroup γ
f : α → β
g : β → γ
x : FreeAbelianGroup α
x✝ : α
h : ↑(↑lift (g ∘ f)) (of x✝) = ↑(↑lift g) (↑(map f) (of x✝))
⊢ ↑(↑lift (g ∘ f)) (-of x✝) = ↑(↑lift g) (↑(map f) (-of x✝))

tactic: intro _ _ h₁ h₂
state_before: case Cp
α✝ : Type u
β✝ : Type v
γ✝ : Type w
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : AddCommGroup γ
f : α → β
g : β → γ
x : FreeAbelianGroup α
⊢ ∀ (x y : FreeAbelianGroup α),
    ↑(↑lift (g ∘ f)) x = ↑(↑lift g) (↑(map f) x) →
      ↑(↑lift (g ∘ f)) y = ↑(↑lift g) (↑(map f) y) → ↑(↑lift (g ∘ f)) (x + y) = ↑(↑lift g) (↑(map f) (x + y))

tactic: simp only [h₁, h₂, AddMonoidHom.map_add]
state_before: case Cp
α✝ : Type u
β✝ : Type v
γ✝ : Type w
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : AddCommGroup γ
f : α → β
g : β → γ
x x✝ y✝ : FreeAbelianGroup α
h₁ : ↑(↑lift (g ∘ f)) x✝ = ↑(↑lift g) (↑(map f) x✝)
h₂ : ↑(↑lift (g ∘ f)) y✝ = ↑(↑lift g) (↑(map f) y✝)
⊢ ↑(↑lift (g ∘ f)) (x✝ + y✝) = ↑(↑lift g) (↑(map f) (x✝ + y✝))
Theorem: MeasureTheory.AECover.integrable_of_lintegral_nnnorm_bounded
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

tactic: refine' ⟨hfm, (le_of_tendsto _ hbounded).trans_lt ENNReal.ofReal_lt_top⟩
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 μ
hbounded : ∀ᶠ (i : ι) in l, (∫⁻ (x : α) in φ i, ↑‖f x‖₊ ∂μ) ≤ ENNReal.ofReal I
⊢ Integrable f

tactic: exact hφ.lintegral_tendsto_of_countably_generated hfm.ennnorm
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 μ
hbounded : ∀ᶠ (i : ι) in l, (∫⁻ (x : α) in φ i, ↑‖f x‖₊ ∂μ) ≤ ENNReal.ofReal I
⊢ Tendsto (fun c => ∫⁻ (x : α) in φ c, ↑‖f x‖₊ ∂μ) l (𝓝 (∫⁻ (a : α), ↑‖f a‖₊ ∂μ))
Theorem: Nat.ArithmeticFunction.ppow_succ
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: ext x
state_before: R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
k : ℕ
⊢ ppow f (k + 1) = pmul f (ppow f k)

tactic: simp_rw [ppow_apply (Nat.succ_pos k), pow_succ]
state_before: case h
R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
k x : ℕ
⊢ ↑(ppow f (k + 1)) x = ↑(pmul f (ppow f k)) x

tactic: induction k <;> simp
state_before: case h
R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
k x : ℕ
⊢ ↑f x ^ succ k = ↑(pmul f (ppow f k)) x

tactic: . exact pow_one _
state_before: case h.zero
R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
x : ℕ
⊢ ↑f x ^ succ 0 = ↑f x

case h.succ
R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
x n✝ : ℕ
n_ih✝ : ↑f x ^ succ n✝ = ↑(pmul f (ppow f n✝)) x
⊢ ↑f x ^ succ (succ n✝) = ↑f x * ↑f x ^ succ n✝

tactic: . exact pow_succ'' _ _
state_before: case h.succ
R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
x n✝ : ℕ
n_ih✝ : ↑f x ^ succ n✝ = ↑(pmul f (ppow f n✝)) x
⊢ ↑f x ^ succ (succ n✝) = ↑f x * ↑f x ^ succ n✝

tactic: exact pow_one _
state_before: case h.zero
R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
x : ℕ
⊢ ↑f x ^ succ 0 = ↑f x

tactic: exact pow_succ'' _ _
state_before: case h.succ
R : Type u_1
inst✝ : Semiring R
f : ArithmeticFunction R
x n✝ : ℕ
n_ih✝ : ↑f x ^ succ n✝ = ↑(pmul f (ppow f n✝)) x
⊢ ↑f x ^ succ (succ n✝) = ↑f x * ↑f x ^ succ n✝
Theorem: IsPrimitiveRoot.coe_submonoidClass_iff
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: simp_rw [iff_def]
state_before: M✝ : Type ?u.1875140
N✝ : Type ?u.1875143
G : Type ?u.1875146
R : Type ?u.1875149
S : Type ?u.1875152
F : Type ?u.1875155
inst✝⁵ : CommMonoid M✝
inst✝⁴ : CommMonoid N✝
inst✝³ : DivisionCommMonoid G
k l : ℕ
ζ✝ : M✝
f : F
h : IsPrimitiveRoot ζ✝ k
M : Type u_1
B : Type u_2
inst✝² : CommMonoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
N : B
ζ : { x // x ∈ N }
⊢ IsPrimitiveRoot (↑ζ) k ↔ IsPrimitiveRoot ζ k

tactic: norm_cast
state_before: M✝ : Type ?u.1875140
N✝ : Type ?u.1875143
G : Type ?u.1875146
R : Type ?u.1875149
S : Type ?u.1875152
F : Type ?u.1875155
inst✝⁵ : CommMonoid M✝
inst✝⁴ : CommMonoid N✝
inst✝³ : DivisionCommMonoid G
k l : ℕ
ζ✝ : M✝
f : F
h : IsPrimitiveRoot ζ✝ k
M : Type u_1
B : Type u_2
inst✝² : CommMonoid M
inst✝¹ : SetLike B M
inst✝ : SubmonoidClass B M
N : B
ζ : { x // x ∈ N }
⊢ (↑ζ ^ k = 1 ∧ ∀ (l : ℕ), ↑ζ ^ l = 1 → k ∣ l) ↔ ζ ^ k = 1 ∧ ∀ (l : ℕ), ζ ^ l = 1 → k ∣ l
Theorem: Polynomial.natTrailingDegree_int_cast
File: Mathlib/Data/Polynomial/Degree/TrailingDegree.lean

tactic: simp only [← C_eq_int_cast, natTrailingDegree_C]
state_before: R : Type u
S : Type v
a b : R
n✝ m : ℕ
inst✝ : Ring R
n : ℤ
⊢ natTrailingDegree ↑n = 0
Theorem: hyperoperation_three
File: Mathlib/Data/Nat/Hyperoperation.lean

tactic: ext (m k)
state_before: ⊢ hyperoperation 3 = fun x x_1 => x ^ x_1

tactic: induction' k with bn bih
state_before: case h.h
m k : ℕ
⊢ hyperoperation 3 m k = m ^ k

tactic: rw [hyperoperation_ge_three_eq_one]
state_before: case h.h.zero
m : ℕ
⊢ hyperoperation 3 m Nat.zero = m ^ Nat.zero

tactic: exact (pow_zero m).symm
state_before: case h.h.zero
m : ℕ
⊢ 1 = m ^ Nat.zero

tactic: rw [hyperoperation_recursion, hyperoperation_two, bih]
state_before: case h.h.succ
m bn : ℕ
bih : hyperoperation 3 m bn = m ^ bn
⊢ hyperoperation 3 m (Nat.succ bn) = m ^ Nat.succ bn

tactic: exact (pow_succ m bn).symm
state_before: case h.h.succ
m bn : ℕ
bih : hyperoperation 3 m bn = m ^ bn
⊢ (fun x x_1 => x * x_1) m (m ^ bn) = m ^ Nat.succ bn
Theorem: sign_finRotate
File: Mathlib/GroupTheory/Perm/Fin.lean

tactic: induction' n with n ih
state_before: n : ℕ
⊢ ↑sign (finRotate (n + 1)) = (-1) ^ n

tactic: simp
state_before: case zero

⊢ ↑sign (finRotate (Nat.zero + 1)) = (-1) ^ Nat.zero

tactic: rw [finRotate_succ_eq_decomposeFin]
state_before: case succ
n : ℕ
ih : ↑sign (finRotate (n + 1)) = (-1) ^ n
⊢ ↑sign (finRotate (Nat.succ n + 1)) = (-1) ^ Nat.succ n

tactic: simp [ih, pow_succ]
state_before: case succ
n : ℕ
ih : ↑sign (finRotate (n + 1)) = (-1) ^ n
⊢ ↑sign (↑decomposeFin.symm (1, finRotate (n + 1))) = (-1) ^ Nat.succ n
Theorem: NNReal.mul_iSup_le
File: Mathlib/Data/Real/NNReal.lean

tactic: rw [mul_iSup]
state_before: ι : Sort u_1
f : ι → ℝ≥0
a g : ℝ≥0
h : ι → ℝ≥0
H : ∀ (j : ι), g * h j ≤ a
⊢ g * iSup h ≤ a

tactic: exact ciSup_le' H
state_before: ι : Sort u_1
f : ι → ℝ≥0
a g : ℝ≥0
h : ι → ℝ≥0
H : ∀ (j : ι), g * h j ≤ a
⊢ (⨆ (i : ι), g * h i) ≤ a
Theorem: Projectivization.finrank_submodule
File: Mathlib/LinearAlgebra/ProjectiveSpace/Basic.lean

tactic: rw [submodule_eq]
state_before: K : Type u_1
V : Type u_2
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : ℙ K V
⊢ finrank K { x // x ∈ Projectivization.submodule v } = 1

tactic: exact finrank_span_singleton v.rep_nonzero
state_before: K : Type u_1
V : Type u_2
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : ℙ K V
⊢ finrank K { x // x ∈ Submodule.span K {Projectivization.rep v} } = 1
Theorem: Finsupp.equivMapDomain_trans
File: Mathlib/Data/Finsupp/Basic.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type ?u.142397
M : Type u_4
M' : Type ?u.142403
N : Type ?u.142406
P : Type ?u.142409
G : Type ?u.142412
H : Type ?u.142415
R : Type ?u.142418
S : Type ?u.142421
inst✝ : Zero M
f : α ≃ β
g : β ≃ γ
l : α →₀ M
⊢ equivMapDomain (f.trans g) l = equivMapDomain g (equivMapDomain f l)

tactic: rfl
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type ?u.142397
M : Type u_4
M' : Type ?u.142403
N : Type ?u.142406
P : Type ?u.142409
G : Type ?u.142412
H : Type ?u.142415
R : Type ?u.142418
S : Type ?u.142421
inst✝ : Zero M
f : α ≃ β
g : β ≃ γ
l : α →₀ M
x : γ
⊢ ↑(equivMapDomain (f.trans g) l) x = ↑(equivMapDomain g (equivMapDomain f l)) x
Theorem: Zsqrtd.coe_int_im
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

tactic: cases n <;> rfl
state_before: d n : ℤ
⊢ (↑n).im = 0
Theorem: Orientation.map_of_isEmpty
File: Mathlib/LinearAlgebra/Orientation.lean

tactic: induction' x using Module.Ray.ind with g hg
state_before: R : Type u_2
inst✝⁵ : StrictOrderedCommSemiring R
M : Type u_3
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type ?u.31631
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type u_1
inst✝ : IsEmpty ι
x : Orientation R M ι
f : M ≃ₗ[R] M
⊢ ↑(map ι f) x = x

tactic: rw [Orientation.map_apply]
state_before: case h
R : Type u_2
inst✝⁵ : StrictOrderedCommSemiring R
M : Type u_3
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type ?u.31631
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type u_1
inst✝ : IsEmpty ι
f : M ≃ₗ[R] M
g : AlternatingMap R M R ι
hg : g ≠ 0
⊢ ↑(map ι f) (rayOfNeZero R g hg) = rayOfNeZero R g hg

tactic: congr
state_before: case h
R : Type u_2
inst✝⁵ : StrictOrderedCommSemiring R
M : Type u_3
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type ?u.31631
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type u_1
inst✝ : IsEmpty ι
f : M ≃ₗ[R] M
g : AlternatingMap R M R ι
hg : g ≠ 0
⊢ rayOfNeZero R (AlternatingMap.compLinearMap g ↑(LinearEquiv.symm f))
      (_ : ¬AlternatingMap.compLinearMap g ↑(LinearEquiv.symm f) = 0) =
    rayOfNeZero R g hg

tactic: ext i
state_before: case h.e_v
R : Type u_2
inst✝⁵ : StrictOrderedCommSemiring R
M : Type u_3
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type ?u.31631
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type u_1
inst✝ : IsEmpty ι
f : M ≃ₗ[R] M
g : AlternatingMap R M R ι
hg : g ≠ 0
⊢ AlternatingMap.compLinearMap g ↑(LinearEquiv.symm f) = g

tactic: rw [AlternatingMap.compLinearMap_apply]
state_before: case h.e_v.H
R : Type u_2
inst✝⁵ : StrictOrderedCommSemiring R
M : Type u_3
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type ?u.31631
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type u_1
inst✝ : IsEmpty ι
f : M ≃ₗ[R] M
g : AlternatingMap R M R ι
hg : g ≠ 0
i : ι → M
⊢ ↑(AlternatingMap.compLinearMap g ↑(LinearEquiv.symm f)) i = ↑g i

tactic: congr
state_before: case h.e_v.H
R : Type u_2
inst✝⁵ : StrictOrderedCommSemiring R
M : Type u_3
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type ?u.31631
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type u_1
inst✝ : IsEmpty ι
f : M ≃ₗ[R] M
g : AlternatingMap R M R ι
hg : g ≠ 0
i : ι → M
⊢ (↑g fun i_1 => ↑↑(LinearEquiv.symm f) (i i_1)) = ↑g i

tactic: simp only [LinearEquiv.coe_coe, eq_iff_true_of_subsingleton]
state_before: case h.e_v.H.h.e_6.h
R : Type u_2
inst✝⁵ : StrictOrderedCommSemiring R
M : Type u_3
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
N : Type ?u.31631
inst✝² : AddCommMonoid N
inst✝¹ : Module R N
ι : Type u_1
inst✝ : IsEmpty ι
f : M ≃ₗ[R] M
g : AlternatingMap R M R ι
hg : g ≠ 0
i : ι → M
⊢ (fun i_1 => ↑↑(LinearEquiv.symm f) (i i_1)) = i
Theorem: IsDedekindDomain.exists_representative_mod_finset
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: let f := IsDedekindDomain.quotientEquivPiOfFinsetProdEq _ P e prime coprime rfl
state_before: R : Type u_2
A : Type ?u.1294364
K : Type ?u.1294367
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
ι : Type u_1
s : Finset ι
P : ι → Ideal R
e : ι → ℕ
prime : ∀ (i : ι), i ∈ s → Prime (P i)
coprime : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → P i ≠ P j
x : (i : { x // x ∈ s }) → R ⧸ P ↑i ^ e ↑i
⊢ ∃ y, ∀ (i : ι) (hi : i ∈ s), ↑(Ideal.Quotient.mk (P i ^ e i)) y = x { val := i, property := hi }

tactic: obtain ⟨y, rfl⟩ := f.surjective x
state_before: R : Type u_2
A : Type ?u.1294364
K : Type ?u.1294367
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
ι : Type u_1
s : Finset ι
P : ι → Ideal R
e : ι → ℕ
prime : ∀ (i : ι), i ∈ s → Prime (P i)
coprime : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → P i ≠ P j
x : (i : { x // x ∈ s }) → R ⧸ P ↑i ^ e ↑i
f : R ⧸ ∏ i in s, P i ^ e i ≃+* ((i : { x // x ∈ s }) → R ⧸ P ↑i ^ e ↑i) :=
  quotientEquivPiOfFinsetProdEq (∏ i in s, P i ^ e i) P e prime coprime (_ : ∏ i in s, P i ^ e i = ∏ i in s, P i ^ e i)
⊢ ∃ y, ∀ (i : ι) (hi : i ∈ s), ↑(Ideal.Quotient.mk (P i ^ e i)) y = x { val := i, property := hi }

tactic: obtain ⟨z, rfl⟩ := Ideal.Quotient.mk_surjective y
state_before: case intro
R : Type u_2
A : Type ?u.1294364
K : Type ?u.1294367
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
ι : Type u_1
s : Finset ι
P : ι → Ideal R
e : ι → ℕ
prime : ∀ (i : ι), i ∈ s → Prime (P i)
coprime : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → P i ≠ P j
f : R ⧸ ∏ i in s, P i ^ e i ≃+* ((i : { x // x ∈ s }) → R ⧸ P ↑i ^ e ↑i) :=
  quotientEquivPiOfFinsetProdEq (∏ i in s, P i ^ e i) P e prime coprime (_ : ∏ i in s, P i ^ e i = ∏ i in s, P i ^ e i)
y : R ⧸ ∏ i in s, P i ^ e i
⊢ ∃ y_1, ∀ (i : ι) (hi : i ∈ s), ↑(Ideal.Quotient.mk (P i ^ e i)) y_1 = ↑f y { val := i, property := hi }

tactic: exact ⟨z, fun i _hi => rfl⟩
state_before: case intro.intro
R : Type u_2
A : Type ?u.1294364
K : Type ?u.1294367
inst✝⁵ : CommRing R
inst✝⁴ : CommRing A
inst✝³ : Field K
inst✝² : IsDomain A
inst✝¹ : IsDomain R
inst✝ : IsDedekindDomain R
ι : Type u_1
s : Finset ι
P : ι → Ideal R
e : ι → ℕ
prime : ∀ (i : ι), i ∈ s → Prime (P i)
coprime : ∀ (i : ι), i ∈ s → ∀ (j : ι), j ∈ s → i ≠ j → P i ≠ P j
f : R ⧸ ∏ i in s, P i ^ e i ≃+* ((i : { x // x ∈ s }) → R ⧸ P ↑i ^ e ↑i) :=
  quotientEquivPiOfFinsetProdEq (∏ i in s, P i ^ e i) P e prime coprime (_ : ∏ i in s, P i ^ e i = ∏ i in s, P i ^ e i)
z : R
⊢ ∃ y,
    ∀ (i : ι) (hi : i ∈ s),
      ↑(Ideal.Quotient.mk (P i ^ e i)) y =
        ↑f (↑(Ideal.Quotient.mk (∏ i in s, P i ^ e i)) z) { val := i, property := hi }
Theorem: Real.toNNReal_eq_zero
File: Mathlib/Data/Real/NNReal.lean

tactic: simpa [-toNNReal_pos] using not_iff_not.2 (@toNNReal_pos r)
state_before: r : ℝ
⊢ toNNReal r = 0 ↔ r ≤ 0
Theorem: Matrix.diagonal_mulVec_single
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext i
state_before: l : Type ?u.878832
m : Type ?u.878835
n : Type u_1
o : Type ?u.878841
m' : o → Type ?u.878846
n' : o → Type ?u.878851
R : Type u_2
S : Type ?u.878857
α : Type v
β : Type w
γ : Type ?u.878864
inst✝³ : NonUnitalNonAssocSemiring α
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : NonUnitalNonAssocSemiring R
v : n → R
j : n
x : R
⊢ mulVec (diagonal v) (Pi.single j x) = Pi.single j (v j * x)

tactic: rw [mulVec_diagonal]
state_before: case h
l : Type ?u.878832
m : Type ?u.878835
n : Type u_1
o : Type ?u.878841
m' : o → Type ?u.878846
n' : o → Type ?u.878851
R : Type u_2
S : Type ?u.878857
α : Type v
β : Type w
γ : Type ?u.878864
inst✝³ : NonUnitalNonAssocSemiring α
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : NonUnitalNonAssocSemiring R
v : n → R
j : n
x : R
i : n
⊢ mulVec (diagonal v) (Pi.single j x) i = Pi.single j (v j * x) i

tactic: exact Pi.apply_single (fun i x => v i * x) (fun i => MulZeroClass.mul_zero _) j x i
state_before: case h
l : Type ?u.878832
m : Type ?u.878835
n : Type u_1
o : Type ?u.878841
m' : o → Type ?u.878846
n' : o → Type ?u.878851
R : Type u_2
S : Type ?u.878857
α : Type v
β : Type w
γ : Type ?u.878864
inst✝³ : NonUnitalNonAssocSemiring α
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : NonUnitalNonAssocSemiring R
v : n → R
j : n
x : R
i : n
⊢ v i * Pi.single j x i = Pi.single j (v j * x) i
Theorem: Nat.support_factorization
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: simp [factorization]
state_before: n : ℕ
⊢ (factorization n).support = toFinset (factors n)