1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: DirichletCharacter.mul_convolution_distrib
File: Mathlib/NumberTheory/LSeries/Dirichlet.lean

tactic: ext n
state_before: R : Type u_1
inst✝ : CommSemiring R
n : ℕ
χ : DirichletCharacter R n
f g : ℕ → R
⊢ (fun x => χ ↑x) * f ⍟ ((fun x => χ ↑x) * g) = (fun x => χ ↑x) * (f ⍟ g)
state_after: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
χ : DirichletCharacter R n✝
f g : ℕ → R
n : ℕ
⊢ ((fun x => χ ↑x) * f ⍟ ((fun x => χ ↑x) * g)) n = ((fun x => χ ↑x) * (f ⍟ g)) n

tactic: simp only [Pi.mul_apply, LSeries.convolution_def, Finset.mul_sum]
state_before: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
χ : DirichletCharacter R n✝
f g : ℕ → R
n : ℕ
⊢ ((fun x => χ ↑x) * f ⍟ ((fun x => χ ↑x) * g)) n = ((fun x => χ ↑x) * (f ⍟ g)) n
state_after: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
χ : DirichletCharacter R n✝
f g : ℕ → R
n : ℕ
⊢ ∑ x ∈ n.divisorsAntidiagonal, χ ↑x.1 * f x.1 * (χ ↑x.2 * g x.2) = ∑ i ∈ n.divisorsAntidiagonal, χ ↑n * (f i.1 * g i.2)

tactic: refine Finset.sum_congr rfl fun p hp ↦ ?_
state_before: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
χ : DirichletCharacter R n✝
f g : ℕ → R
n : ℕ
⊢ ∑ x ∈ n.divisorsAntidiagonal, χ ↑x.1 * f x.1 * (χ ↑x.2 * g x.2) = ∑ i ∈ n.divisorsAntidiagonal, χ ↑n * (f i.1 * g i.2)
state_after: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
χ : DirichletCharacter R n✝
f g : ℕ → R
n : ℕ
p : ℕ × ℕ
hp : p ∈ n.divisorsAntidiagonal
⊢ χ ↑p.1 * f p.1 * (χ ↑p.2 * g p.2) = χ ↑n * (f p.1 * g p.2)

tactic: rw [(mem_divisorsAntidiagonal.mp hp).1.symm, cast_mul, map_mul]
state_before: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
χ : DirichletCharacter R n✝
f g : ℕ → R
n : ℕ
p : ℕ × ℕ
hp : p ∈ n.divisorsAntidiagonal
⊢ χ ↑p.1 * f p.1 * (χ ↑p.2 * g p.2) = χ ↑n * (f p.1 * g p.2)
state_after: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
χ : DirichletCharacter R n✝
f g : ℕ → R
n : ℕ
p : ℕ × ℕ
hp : p ∈ n.divisorsAntidiagonal
⊢ χ ↑p.1 * f p.1 * (χ ↑p.2 * g p.2) = χ ↑p.1 * χ ↑p.2 * (f p.1 * g p.2)

tactic: exact mul_mul_mul_comm ..
state_before: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
χ : DirichletCharacter R n✝
f g : ℕ → R
n : ℕ
p : ℕ × ℕ
hp : p ∈ n.divisorsAntidiagonal
⊢ χ ↑p.1 * f p.1 * (χ ↑p.2 * g p.2) = χ ↑p.1 * χ ↑p.2 * (f p.1 * g p.2)
state_after: no goals
Theorem: tendsto_ceil_right_pure_add_one
File: Mathlib/Topology/Algebra/Order/Floor.lean

tactic: simpa only [floor_intCast] using tendsto_ceil_right_pure_floor_add_one (n : α)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : FloorRing α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
n : ℤ
⊢ Tendsto ceil (𝓝[>] ↑n) (pure (n + 1))
state_after: no goals
Theorem: Finset.union_left_comm
File: Mathlib/Data/Finset/Basic.lean

tactic: simp only [mem_union, or_left_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ s₁ s₂ t✝ t₁ t₂ u✝ v : Finset α
a b : α
s t u : Finset α
x✝ : α
⊢ x✝ ∈ s ∪ (t ∪ u) ↔ x✝ ∈ t ∪ (s ∪ u)
state_after: no goals
Theorem: Finset.weightedVSubVSubWeights_apply_of_ne
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: simp [weightedVSubVSubWeights, hi, hj]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
inst✝ : DecidableEq ι
i j t : ι
hi : t ≠ i
hj : t ≠ j
⊢ weightedVSubVSubWeights k i j t = 0
state_after: no goals
Theorem: Equiv.Perm.sameCycle_inv_apply_right
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: rw [← sameCycle_apply_right, apply_inv_self]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x y z : α
⊢ f.SameCycle x (f⁻¹ y) ↔ f.SameCycle x y
state_after: no goals
Theorem: EllipticCurve.map_injective
File: Mathlib/AlgebraicGeometry/EllipticCurve/Weierstrass.lean

tactic: rcases mk.inj h with ⟨h1, h2⟩
state_before: R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ✝ φ : R →+* A
hφ : Function.Injective ⇑φ
x✝¹ x✝ : EllipticCurve R
h : (fun E => E.map φ) x✝¹ = (fun E => E.map φ) x✝
⊢ x✝¹ = x✝
state_after: case intro
R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ✝ φ : R →+* A
hφ : Function.Injective ⇑φ
x✝¹ x✝ : EllipticCurve R
h : (fun E => E.map φ) x✝¹ = (fun E => E.map φ) x✝
h1 : x✝¹.map φ = x✝.map φ
h2 : (Units.map ↑φ) x✝¹.Δ' = (Units.map ↑φ) x✝.Δ'
⊢ x✝¹ = x✝

tactic: replace h2 := (Units.mk.inj h2).left
state_before: case intro
R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ✝ φ : R →+* A
hφ : Function.Injective ⇑φ
x✝¹ x✝ : EllipticCurve R
h : (fun E => E.map φ) x✝¹ = (fun E => E.map φ) x✝
h1 : x✝¹.map φ = x✝.map φ
h2 : (Units.map ↑φ) x✝¹.Δ' = (Units.map ↑φ) x✝.Δ'
⊢ x✝¹ = x✝
state_after: case intro
R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ✝ φ : R →+* A
hφ : Function.Injective ⇑φ
x✝¹ x✝ : EllipticCurve R
h : (fun E => E.map φ) x✝¹ = (fun E => E.map φ) x✝
h1 : x✝¹.map φ = x✝.map φ
h2 : ↑φ ↑x✝¹.Δ' = ↑φ ↑x✝.Δ'
⊢ x✝¹ = x✝

tactic: rcases WeierstrassCurve.mk.inj h1 with ⟨_, _, _, _, _⟩
state_before: case intro
R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ✝ φ : R →+* A
hφ : Function.Injective ⇑φ
x✝¹ x✝ : EllipticCurve R
h : (fun E => E.map φ) x✝¹ = (fun E => E.map φ) x✝
h1 : x✝¹.map φ = x✝.map φ
h2 : ↑φ ↑x✝¹.Δ' = ↑φ ↑x✝.Δ'
⊢ x✝¹ = x✝
state_after: case intro.intro.intro.intro.intro
R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ✝ φ : R →+* A
hφ : Function.Injective ⇑φ
x✝¹ x✝ : EllipticCurve R
h : (fun E => E.map φ) x✝¹ = (fun E => E.map φ) x✝
h1 : x✝¹.map φ = x✝.map φ
h2 : ↑φ ↑x✝¹.Δ' = ↑φ ↑x✝.Δ'
left✝³ : φ x✝¹.a₁ = φ x✝.a₁
left✝² : φ x✝¹.a₂ = φ x✝.a₂
left✝¹ : φ x✝¹.a₃ = φ x✝.a₃
left✝ : φ x✝¹.a₄ = φ x✝.a₄
right✝ : φ x✝¹.a₆ = φ x✝.a₆
⊢ x✝¹ = x✝

tactic: ext <;> apply_fun _ using hφ <;> assumption
state_before: case intro.intro.intro.intro.intro
R : Type u
inst✝¹ : CommRing R
E : EllipticCurve R
A : Type v
inst✝ : CommRing A
φ✝ φ : R →+* A
hφ : Function.Injective ⇑φ
x✝¹ x✝ : EllipticCurve R
h : (fun E => E.map φ) x✝¹ = (fun E => E.map φ) x✝
h1 : x✝¹.map φ = x✝.map φ
h2 : ↑φ ↑x✝¹.Δ' = ↑φ ↑x✝.Δ'
left✝³ : φ x✝¹.a₁ = φ x✝.a₁
left✝² : φ x✝¹.a₂ = φ x✝.a₂
left✝¹ : φ x✝¹.a₃ = φ x✝.a₃
left✝ : φ x✝¹.a₄ = φ x✝.a₄
right✝ : φ x✝¹.a₆ = φ x✝.a₆
⊢ x✝¹ = x✝
state_after: no goals
Theorem: Filter.map_sub_atTop_eq_nat
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: rw [add_tsub_cancel_right]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
k b : ℕ
x✝ : b ≥ 0
⊢ b ≤ (fun a => a + k) b - k
state_after: no goals
Theorem: Set.finite_diff_iUnion_Ioo'
File: Mathlib/Data/Set/Finite.lean

tactic: simpa only [iUnion, iSup_prod, iSup_subtype] using s.finite_diff_iUnion_Ioo
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝ : LinearOrder α
s✝ s : Set α
⊢ (s \ ⋃ x, Ioo ↑x.1 ↑x.2).Finite
state_after: no goals
Theorem: Sum.isRight_swap
File: .lake/packages/batteries/Batteries/Data/Sum/Lemmas.lean

tactic: cases x <;> rfl
state_before: α : Type u_1
β : Type u_2
x : α ⊕ β
⊢ x.swap.isRight = x.isLeft
state_after: no goals
Theorem: iSup_ge_eq_iSup_nat_add
File: Mathlib/Order/CompleteLattice.lean

tactic: apply le_antisymm <;> simp only [iSup_le_iff]
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b : α
u : ℕ → α
n : ℕ
⊢ ⨆ i, ⨆ (_ : i ≥ n), u i = ⨆ i, u (i + n)
state_after: case a
α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b : α
u : ℕ → α
n : ℕ
⊢ ∀ i ≥ n, u i ≤ ⨆ i, u (i + n)

case a
α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b : α
u : ℕ → α
n : ℕ
⊢ ∀ (i : ℕ), u (i + n) ≤ ⨆ i, ⨆ (_ : i ≥ n), u i

tactic: refine fun i hi => le_sSup ⟨i - n, ?_⟩
state_before: case a
α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b : α
u : ℕ → α
n : ℕ
⊢ ∀ i ≥ n, u i ≤ ⨆ i, u (i + n)
state_after: case a
α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b : α
u : ℕ → α
n i : ℕ
hi : i ≥ n
⊢ (fun i => u (i + n)) (i - n) = u i

tactic: dsimp only
state_before: case a
α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b : α
u : ℕ → α
n i : ℕ
hi : i ≥ n
⊢ (fun i => u (i + n)) (i - n) = u i
state_after: case a
α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b : α
u : ℕ → α
n i : ℕ
hi : i ≥ n
⊢ u (i - n + n) = u i

tactic: rw [Nat.sub_add_cancel hi]
state_before: case a
α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b : α
u : ℕ → α
n i : ℕ
hi : i ≥ n
⊢ u (i - n + n) = u i
state_after: no goals

tactic: exact fun i => le_sSup ⟨i + n, iSup_pos (Nat.le_add_left _ _)⟩
state_before: case a
α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b : α
u : ℕ → α
n : ℕ
⊢ ∀ (i : ℕ), u (i + n) ≤ ⨆ i, ⨆ (_ : i ≥ n), u i
state_after: no goals
Theorem: Ordinal.brange_const
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [← range_familyOfBFamily]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u_4}
ho : o ≠ 0
c : α
⊢ (o.brange fun x x => c) = {c}
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u_4}
ho : o ≠ 0
c : α
⊢ range (o.familyOfBFamily fun x x => c) = {c}

tactic: exact @Set.range_const _ o.out.α (out_nonempty_iff_ne_zero.2 ho) c
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u_4}
ho : o ≠ 0
c : α
⊢ range (o.familyOfBFamily fun x x => c) = {c}
state_after: no goals
Theorem: Algebra.norm_eq_prod_roots
File: Mathlib/RingTheory/Norm.lean

tactic: rw [norm_eq_norm_adjoin K x, map_pow, IntermediateField.AdjoinSimple.norm_gen_eq_prod_roots _ hF]
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹¹ : CommRing R
inst✝¹⁰ : Ring S
inst✝⁹ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁸ : Field K
inst✝⁷ : Field L
inst✝⁶ : Field F
inst✝⁵ : Algebra K L
inst✝⁴ : Algebra K F
ι : Type w
E : Type u_7
inst✝³ : Field E
inst✝² : Algebra K E
inst✝¹ : IsSeparable K L
inst✝ : FiniteDimensional K L
x : L
hF : Splits (algebraMap K F) (minpoly K x)
⊢ (algebraMap K F) ((norm K) x) = ((minpoly K x).aroots F).prod ^ finrank (↥K⟮x⟯) L
state_after: no goals
Theorem: padicNormE.mul
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

tactic: simp [Norm.norm, map_mul]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
q r : ℚ_[p]
⊢ ‖q * r‖ = ‖q‖ * ‖r‖
state_after: no goals
Theorem: Turing.PartrecToTM2.codeSupp_cons
File: Mathlib/Computability/TMToPartrec.lean

tactic: simp [codeSupp, codeSupp', contSupp, Finset.union_assoc]
state_before: f fs : Code
k : Cont'
⊢ codeSupp (f.cons fs) k = trStmts₁ (trNormal (f.cons fs) k) ∪ codeSupp f (Cont'.cons₁ fs k)
state_after: no goals
Theorem: ZMod.natCast_eq_natCast_iff
File: Mathlib/Data/ZMod/Basic.lean

tactic: simpa [Int.natCast_modEq_iff] using ZMod.intCast_eq_intCast_iff a b c
state_before: a b c : ℕ
⊢ ↑a = ↑b ↔ a ≡ b [MOD c]
state_after: no goals
Theorem: Asymptotics.isTheta_const_mul_right
File: Mathlib/Analysis/Asymptotics/Theta.lean

tactic: simpa only [← smul_eq_mul] using isTheta_const_smul_right hc
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
R : Type u_12
R' : Type u_13
𝕜 : Type u_14
𝕜' : Type u_15
inst✝¹² : Norm E
inst✝¹¹ : Norm F
inst✝¹⁰ : Norm G
inst✝⁹ : SeminormedAddCommGroup E'
inst✝⁸ : SeminormedAddCommGroup F'
inst✝⁷ : SeminormedAddCommGroup G'
inst✝⁶ : NormedAddCommGroup E''
inst✝⁵ : NormedAddCommGroup F''
inst✝⁴ : NormedAddCommGroup G''
inst✝³ : SeminormedRing R
inst✝² : SeminormedRing R'
inst✝¹ : NormedField 𝕜
inst✝ : NormedField 𝕜'
c✝ c' c₁ c₂ : ℝ
f : α → E
g✝ : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
l l' : Filter α
c : 𝕜
g : α → 𝕜
hc : c ≠ 0
⊢ (f =Θ[l] fun x => c * g x) ↔ f =Θ[l] g
state_after: no goals
Theorem: mem_emetric_ball_one_iff
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: rw [EMetric.mem_ball, edist_eq_coe_nnnorm']
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝³ : SeminormedGroup E
inst✝² : SeminormedGroup F
inst✝¹ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r✝ r₁ r₂ : ℝ
inst✝ : FunLike 𝓕 E F
r : ℝ≥0∞
⊢ a ∈ EMetric.ball 1 r ↔ ↑‖a‖₊ < r
state_after: no goals
Theorem: leOnePart_one
File: Mathlib/Algebra/Order/Group/PosPart.lean

tactic: simp [leOnePart]
state_before: α : Type u_1
β : Type u_2
inst✝³ : Lattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a : α
⊢ 1⁻ᵐ = 1
state_after: no goals
Theorem: Complex.GammaIntegral_one
File: Mathlib/Analysis/SpecialFunctions/Gamma/Basic.lean

tactic: simpa only [← ofReal_one, GammaIntegral_ofReal, ofReal_inj, sub_self, rpow_zero,
  mul_one] using integral_exp_neg_Ioi_zero
state_before: ⊢ GammaIntegral 1 = 1
state_after: no goals
Theorem: abs_neg_one_pow
File: Mathlib/Algebra/Order/Ring/Abs.lean

tactic: rw [← pow_abs, abs_neg, abs_one, one_pow]
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
n✝ : ℕ
a b c : α
n : ℕ
⊢ |(-1) ^ n| = 1
state_after: no goals
Theorem: PrimeSpectrum.isClosed_singleton_iff_isMaximal
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [← closure_subset_iff_isClosed, ← zeroLocus_vanishingIdeal_eq_closure,
    vanishingIdeal_singleton]
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
x : PrimeSpectrum R
⊢ IsClosed {x} ↔ x.asIdeal.IsMaximal
state_after: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
x : PrimeSpectrum R
⊢ zeroLocus ↑x.asIdeal ⊆ {x} ↔ x.asIdeal.IsMaximal

tactic: constructor <;> intro H
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
x : PrimeSpectrum R
⊢ zeroLocus ↑x.asIdeal ⊆ {x} ↔ x.asIdeal.IsMaximal
state_after: case mp
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
x : PrimeSpectrum R
H : zeroLocus ↑x.asIdeal ⊆ {x}
⊢ x.asIdeal.IsMaximal

case mpr
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
x : PrimeSpectrum R
H : x.asIdeal.IsMaximal
⊢ zeroLocus ↑x.asIdeal ⊆ {x}

tactic: rcases x.asIdeal.exists_le_maximal x.2.1 with ⟨m, hm, hxm⟩
state_before: case mp
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
x : PrimeSpectrum R
H : zeroLocus ↑x.asIdeal ⊆ {x}
⊢ x.asIdeal.IsMaximal
state_after: case mp.intro.intro
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
x : PrimeSpectrum R
H : zeroLocus ↑x.asIdeal ⊆ {x}
m : Ideal R
hm : m.IsMaximal
hxm : x.asIdeal ≤ m
⊢ x.asIdeal.IsMaximal

tactic: exact (congr_arg asIdeal (@H ⟨m, hm.isPrime⟩ hxm)) ▸ hm
state_before: case mp.intro.intro
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
x : PrimeSpectrum R
H : zeroLocus ↑x.asIdeal ⊆ {x}
m : Ideal R
hm : m.IsMaximal
hxm : x.asIdeal ≤ m
⊢ x.asIdeal.IsMaximal
state_after: no goals

tactic: exact fun p hp ↦ PrimeSpectrum.ext _ _ (H.eq_of_le p.2.1 hp).symm
state_before: case mpr
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
x : PrimeSpectrum R
H : x.asIdeal.IsMaximal
⊢ zeroLocus ↑x.asIdeal ⊆ {x}
state_after: no goals
Theorem: lp.norm_le_of_tsum_le
File: Mathlib/Analysis/NormedSpace/lpSpace.lean

tactic: rw [← Real.rpow_le_rpow_iff (norm_nonneg' _) hC hp, norm_rpow_eq_tsum hp]
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
C : ℝ
hC : 0 ≤ C
f : ↥(lp E p)
hf : ∑' (i : α), ‖↑f i‖ ^ p.toReal ≤ C ^ p.toReal
⊢ ‖f‖ ≤ C
state_after: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
C : ℝ
hC : 0 ≤ C
f : ↥(lp E p)
hf : ∑' (i : α), ‖↑f i‖ ^ p.toReal ≤ C ^ p.toReal
⊢ ∑' (i : α), ‖↑f i‖ ^ p.toReal ≤ C ^ p.toReal

tactic: exact hf
state_before: α : Type u_1
E : α → Type u_2
p q : ℝ≥0∞
inst✝ : (i : α) → NormedAddCommGroup (E i)
hp : 0 < p.toReal
C : ℝ
hC : 0 ≤ C
f : ↥(lp E p)
hf : ∑' (i : α), ‖↑f i‖ ^ p.toReal ≤ C ^ p.toReal
⊢ ∑' (i : α), ‖↑f i‖ ^ p.toReal ≤ C ^ p.toReal
state_after: no goals
Theorem: Finset.max_singleton
File: Mathlib/Data/Finset/Lattice.lean

tactic: rw [← insert_emptyc_eq]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
a : α
⊢ {a}.max = ↑a
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
a : α
⊢ (insert a ∅).max = ↑a

tactic: exact max_insert
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
a : α
⊢ (insert a ∅).max = ↑a
state_after: no goals
Theorem: MeasureTheory.Measure.dirac_unit_compProd
File: Mathlib/Probability/Kernel/MeasureCompProd.lean

tactic: ext s hs
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ : Measure α
κ✝ η : ↥(kernel α β)
κ : ↥(kernel Unit β)
inst✝ : IsSFiniteKernel κ
⊢ dirac () ⊗ₘ κ = map (Prod.mk ()) (κ ())
state_after: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ : Measure α
κ✝ η : ↥(kernel α β)
κ : ↥(kernel Unit β)
inst✝ : IsSFiniteKernel κ
s : Set (Unit × β)
hs : MeasurableSet s
⊢ (dirac () ⊗ₘ κ) s = (map (Prod.mk ()) (κ ())) s

tactic: rw [dirac_compProd_apply hs, Measure.map_apply measurable_prod_mk_left hs]
state_before: case h
α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ : Measure α
κ✝ η : ↥(kernel α β)
κ : ↥(kernel Unit β)
inst✝ : IsSFiniteKernel κ
s : Set (Unit × β)
hs : MeasurableSet s
⊢ (dirac () ⊗ₘ κ) s = (map (Prod.mk ()) (κ ())) s
state_after: no goals
Theorem: SimpleGraph.dotProduct_mulVec_degMatrix
File: Mathlib/Combinatorics/SimpleGraph/LapMatrix.lean

tactic: simp only [dotProduct, degMatrix, mulVec_diagonal, ← mul_assoc, mul_comm]
state_before: V : Type u_1
R : Type u_2
inst✝³ : Fintype V
inst✝² : DecidableEq V
G : SimpleGraph V
inst✝¹ : DecidableRel G.Adj
inst✝ : CommRing R
x : V → R
⊢ x ⬝ᵥ degMatrix R G *ᵥ x = ∑ i : V, ↑(G.degree i) * x i * x i
state_after: no goals
Theorem: Set.prod_union
File: Mathlib/Data/Set/Prod.lean

tactic: ext ⟨x, y⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
⊢ s ×ˢ (t₁ ∪ t₂) = s ×ˢ t₁ ∪ s ×ˢ t₂
state_after: case h.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
x : α
y : β
⊢ (x, y) ∈ s ×ˢ (t₁ ∪ t₂) ↔ (x, y) ∈ s ×ˢ t₁ ∪ s ×ˢ t₂

tactic: simp [and_or_left]
state_before: case h.mk
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
x : α
y : β
⊢ (x, y) ∈ s ×ˢ (t₁ ∪ t₂) ↔ (x, y) ∈ s ×ˢ t₁ ∪ s ×ˢ t₂
state_after: no goals
Theorem: LocalizedModule.induction_on
File: Mathlib/Algebra/Module/LocalizedModule.lean

tactic: rintro ⟨⟨m, s⟩⟩
state_before: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
β : LocalizedModule S M → Prop
h : ∀ (m : M) (s : ↥S), β (mk m s)
⊢ ∀ (x : LocalizedModule S M), β x
state_after: case mk.mk
R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
β : LocalizedModule S M → Prop
h : ∀ (m : M) (s : ↥S), β (mk m s)
x✝ : LocalizedModule S M
m : M
s : ↥S
⊢ β (Quot.mk Setoid.r (m, s))

tactic: exact h m s
state_before: case mk.mk
R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
β : LocalizedModule S M → Prop
h : ∀ (m : M) (s : ↥S), β (mk m s)
x✝ : LocalizedModule S M
m : M
s : ↥S
⊢ β (Quot.mk Setoid.r (m, s))
state_after: no goals
Theorem: Finset.card_image₂_iff
File: Mathlib/Data/Finset/NAry.lean

tactic: rw [← card_product, ← coe_product]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
⊢ (image₂ f s t).card = s.card * t.card ↔ InjOn (fun x => f x.1 x.2) (↑s ×ˢ ↑t)
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
⊢ (image₂ f s t).card = (s ×ˢ t).card ↔ InjOn (fun x => f x.1 x.2) ↑(s ×ˢ t)

tactic: exact card_image_iff
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁷ : DecidableEq α'
inst✝⁶ : DecidableEq β'
inst✝⁵ : DecidableEq γ
inst✝⁴ : DecidableEq γ'
inst✝³ : DecidableEq δ
inst✝² : DecidableEq δ'
inst✝¹ : DecidableEq ε
inst✝ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
⊢ (image₂ f s t).card = (s ×ˢ t).card ↔ InjOn (fun x => f x.1 x.2) ↑(s ×ˢ t)
state_after: no goals
Theorem: Polynomial.degree_pos_of_root
File: Mathlib/Algebra/Polynomial/Degree/Lemmas.lean

tactic: have := eq_C_of_degree_le_zero hlt
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
hp : p ≠ 0
h : p.IsRoot a
hlt : 0 ≥ p.degree
⊢ False
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
hp : p ≠ 0
h : p.IsRoot a
hlt : 0 ≥ p.degree
this : p = C (p.coeff 0)
⊢ False

tactic: rw [IsRoot, this, eval_C] at h
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
hp : p ≠ 0
h : p.IsRoot a
hlt : 0 ≥ p.degree
this : p = C (p.coeff 0)
⊢ False
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
hp : p ≠ 0
h : p.coeff 0 = 0
hlt : 0 ≥ p.degree
this : p = C (p.coeff 0)
⊢ False

tactic: simp only [h, RingHom.map_zero] at this
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
hp : p ≠ 0
h : p.coeff 0 = 0
hlt : 0 ≥ p.degree
this : p = C (p.coeff 0)
⊢ False
state_after: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
hp : p ≠ 0
h : p.coeff 0 = 0
hlt : 0 ≥ p.degree
this : p = 0
⊢ False

tactic: exact hp this
state_before: R : Type u
S : Type v
ι : Type w
a b : R
m n : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
hp : p ≠ 0
h : p.coeff 0 = 0
hlt : 0 ≥ p.degree
this : p = 0
⊢ False
state_after: no goals