1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Matrix.bit1_apply
File: Mathlib/Data/Matrix/Basic.lean

tactic: dsimp [bit1]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : DecidableEq n
inst✝¹ : AddZeroClass α
inst✝ : One α
M : Matrix n n α
i j : n
⊢ bit1 M i j = if i = j then bit1 (M i j) else bit0 (M i j)
state_after: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : DecidableEq n
inst✝¹ : AddZeroClass α
inst✝ : One α
M : Matrix n n α
i j : n
⊢ bit0 (M i j) + 1 i j = if i = j then bit0 (M i j) + 1 else bit0 (M i j)

tactic: by_cases h : i = j
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : DecidableEq n
inst✝¹ : AddZeroClass α
inst✝ : One α
M : Matrix n n α
i j : n
⊢ bit0 (M i j) + 1 i j = if i = j then bit0 (M i j) + 1 else bit0 (M i j)
state_after: case pos
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : DecidableEq n
inst✝¹ : AddZeroClass α
inst✝ : One α
M : Matrix n n α
i j : n
h : i = j
⊢ bit0 (M i j) + 1 i j = if i = j then bit0 (M i j) + 1 else bit0 (M i j)

case neg
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : DecidableEq n
inst✝¹ : AddZeroClass α
inst✝ : One α
M : Matrix n n α
i j : n
h : ¬i = j
⊢ bit0 (M i j) + 1 i j = if i = j then bit0 (M i j) + 1 else bit0 (M i j)

tactic: subst h
state_before: case pos
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : DecidableEq n
inst✝¹ : AddZeroClass α
inst✝ : One α
M : Matrix n n α
i j : n
h : i = j
⊢ bit0 (M i j) + 1 i j = if i = j then bit0 (M i j) + 1 else bit0 (M i j)
state_after: case pos
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : DecidableEq n
inst✝¹ : AddZeroClass α
inst✝ : One α
M : Matrix n n α
i : n
⊢ bit0 (M i i) + 1 i i = if i = i then bit0 (M i i) + 1 else bit0 (M i i)

tactic: simp
state_before: case pos
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : DecidableEq n
inst✝¹ : AddZeroClass α
inst✝ : One α
M : Matrix n n α
i : n
⊢ bit0 (M i i) + 1 i i = if i = i then bit0 (M i i) + 1 else bit0 (M i i)
state_after: no goals

tactic: simp [h]
state_before: case neg
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : DecidableEq n
inst✝¹ : AddZeroClass α
inst✝ : One α
M : Matrix n n α
i j : n
h : ¬i = j
⊢ bit0 (M i j) + 1 i j = if i = j then bit0 (M i j) + 1 else bit0 (M i j)
state_after: no goals
Theorem: ContinuousLinearEquiv.comp_hasFDerivAt_iff
File: Mathlib/Analysis/Calculus/FDeriv/Equiv.lean

tactic: simp_rw [← hasFDerivWithinAt_univ, iso.comp_hasFDerivWithinAt_iff]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f'✝ f₀' f₁' g' e : E →L[𝕜] F
x✝ : E
s t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : G → E
x : G
f' : G →L[𝕜] E
⊢ HasFDerivAt (⇑iso ∘ f) ((↑iso).comp f') x ↔ HasFDerivAt f f' x
state_after: no goals
Theorem: LinearMap.baseChange_zero
File: Mathlib/RingTheory/TensorProduct/Basic.lean

tactic: ext
state_before: R : Type u_1
A : Type u_2
B : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R B
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
r : R
f g : M →ₗ[R] N
⊢ baseChange A 0 = 0
state_after: case a.h.h
R : Type u_1
A : Type u_2
B : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R B
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
r : R
f g : M →ₗ[R] N
x✝ : M
⊢ ((AlgebraTensorModule.curry (baseChange A 0)) 1) x✝ = ((AlgebraTensorModule.curry 0) 1) x✝

tactic: simp [baseChange_eq_ltensor]
state_before: case a.h.h
R : Type u_1
A : Type u_2
B : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : Semiring B
inst✝⁶ : Algebra R B
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
r : R
f g : M →ₗ[R] N
x✝ : M
⊢ ((AlgebraTensorModule.curry (baseChange A 0)) 1) x✝ = ((AlgebraTensorModule.curry 0) 1) x✝
state_after: no goals
Theorem: Nat.Partrec.Code.encode_lt_comp
File: Mathlib/Computability/PartrecCode.lean

tactic: have : encode (pair cf cg) < encode (comp cf cg) := by simp [encodeCode_eq, encodeCode]
state_before: cf cg : Code
⊢ encode cf < encode (cf.comp cg) ∧ encode cg < encode (cf.comp cg)
state_after: cf cg : Code
this : encode (cf.pair cg) < encode (cf.comp cg)
⊢ encode cf < encode (cf.comp cg) ∧ encode cg < encode (cf.comp cg)

tactic: exact (encode_lt_pair cf cg).imp (fun h => lt_trans h this) fun h => lt_trans h this
state_before: cf cg : Code
this : encode (cf.pair cg) < encode (cf.comp cg)
⊢ encode cf < encode (cf.comp cg) ∧ encode cg < encode (cf.comp cg)
state_after: no goals

tactic: simp [encodeCode_eq, encodeCode]
state_before: cf cg : Code
⊢ encode (cf.pair cg) < encode (cf.comp cg)
state_after: no goals
Theorem: Order.mem_range_pred_of_not_isPredLimit
File: Mathlib/Order/SuccPred/Limit.lean

tactic: cases' not_isPredLimit_iff.1 h with b hb
state_before: α : Type u_1
inst✝¹ : PartialOrder α
inst✝ : PredOrder α
a b : α
C : α → Sort u_2
h : ¬IsPredLimit a
⊢ a ∈ range pred
state_after: case intro
α : Type u_1
inst✝¹ : PartialOrder α
inst✝ : PredOrder α
a b✝ : α
C : α → Sort u_2
h : ¬IsPredLimit a
b : α
hb : ¬IsMin b ∧ pred b = a
⊢ a ∈ range pred

tactic: exact ⟨b, hb.2⟩
state_before: case intro
α : Type u_1
inst✝¹ : PartialOrder α
inst✝ : PredOrder α
a b✝ : α
C : α → Sort u_2
h : ¬IsPredLimit a
b : α
hb : ¬IsMin b ∧ pred b = a
⊢ a ∈ range pred
state_after: no goals
Theorem: Multiset.normalize_gcd
File: Mathlib/Algebra/GCDMonoid/Multiset.lean

tactic: simp
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s : Multiset α
⊢ normalize (gcd 0) = gcd 0
state_after: no goals

tactic: simp
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s✝ : Multiset α
a : α
s : Multiset α
x✝ : normalize s.gcd = s.gcd
⊢ normalize (a ::ₘ s).gcd = (a ::ₘ s).gcd
state_after: no goals
Theorem: Set.preimage_eq_empty_iff
File: Mathlib/Data/Set/Image.lean

tactic: simp only [eq_empty_iff_forall_not_mem, disjoint_iff_inter_eq_empty, not_exists, mem_inter_iff,
  not_and, mem_range, mem_preimage] at h ⊢
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
s✝ t : Set α
s : Set β
h : f ⁻¹' s = ∅
⊢ Disjoint s (range f)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
s✝ t : Set α
s : Set β
h : ∀ (x : α), f x ∉ s
⊢ ∀ x ∈ s, ∀ (x_1 : α), ¬f x_1 = x

tactic: intro y hy x hx
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
s✝ t : Set α
s : Set β
h : ∀ (x : α), f x ∉ s
⊢ ∀ x ∈ s, ∀ (x_1 : α), ¬f x_1 = x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
s✝ t : Set α
s : Set β
h : ∀ (x : α), f x ∉ s
y : β
hy : y ∈ s
x : α
hx : f x = y
⊢ False

tactic: rw [← hx] at hy
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
s✝ t : Set α
s : Set β
h : ∀ (x : α), f x ∉ s
y : β
hy : y ∈ s
x : α
hx : f x = y
⊢ False
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
s✝ t : Set α
s : Set β
h : ∀ (x : α), f x ∉ s
y : β
x : α
hy : f x ∈ s
hx : f x = y
⊢ False

tactic: exact h x hy
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
s✝ t : Set α
s : Set β
h : ∀ (x : α), f x ∉ s
y : β
x : α
hy : f x ∈ s
hx : f x = y
⊢ False
state_after: no goals
Theorem: Finset.prod_int_mod
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [Finset.prod, Multiset.map_map]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
s : Finset α
n : ℤ
f : α → ℤ
⊢ (Multiset.map (fun x => x % n) (Multiset.map (fun i => f i) s.val)).prod % n = (∏ i ∈ s, f i % n) % n
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
s : Finset α
n : ℤ
f : α → ℤ
⊢ (Multiset.map ((fun x => x % n) ∘ fun i => f i) s.val).prod % n = (Multiset.map (fun i => f i % n) s.val).prod % n

tactic: rfl
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
s : Finset α
n : ℤ
f : α → ℤ
⊢ (Multiset.map ((fun x => x % n) ∘ fun i => f i) s.val).prod % n = (Multiset.map (fun i => f i % n) s.val).prod % n
state_after: no goals
Theorem: Polynomial.rootMultiplicity_eq_nat_find_of_nonzero
File: Mathlib/Algebra/Polynomial/Div.lean

tactic: dsimp [rootMultiplicity]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝¹ : Ring R
p✝ q : R[X]
inst✝ : DecidableEq R
p : R[X]
p0 : p ≠ 0
a : R
⊢ rootMultiplicity a p = Nat.find ⋯
state_after: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝¹ : Ring R
p✝ q : R[X]
inst✝ : DecidableEq R
p : R[X]
p0 : p ≠ 0
a : R
⊢ (if h0 : p = 0 then 0 else Nat.find ⋯) = Nat.find ⋯

tactic: cases Subsingleton.elim ‹DecidableEq R› (Classical.decEq R)
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝¹ : Ring R
p✝ q : R[X]
inst✝ : DecidableEq R
p : R[X]
p0 : p ≠ 0
a : R
⊢ (if h0 : p = 0 then 0 else Nat.find ⋯) = Nat.find ⋯
state_after: case refl
R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝ : Ring R
p✝ q p : R[X]
p0 : p ≠ 0
a : R
⊢ (if h0 : p = 0 then 0 else Nat.find ⋯) = Nat.find ⋯

tactic: rw [dif_neg p0]
state_before: case refl
R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝ : Ring R
p✝ q p : R[X]
p0 : p ≠ 0
a : R
⊢ (if h0 : p = 0 then 0 else Nat.find ⋯) = Nat.find ⋯
state_after: no goals
Theorem: one_le_inv
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rwa [le_inv (@zero_lt_one α _ _ _ _ _) h₁, inv_one]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h₁ : 0 < a
h₂ : a ≤ 1
⊢ 1 ≤ a⁻¹
state_after: no goals
Theorem: CauchySeq.isBounded_range
File: Mathlib/Topology/MetricSpace/Bounded.lean

tactic: rwa [Nat.cofinite_eq_atTop]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
s t : Set α
r : ℝ
f : ℕ → α
hf : CauchySeq f
⊢ Cauchy (map f Filter.cofinite)
state_after: no goals
Theorem: Complex.Gamma_eq_zero_iff
File: Mathlib/Analysis/SpecialFunctions/Gamma/Beta.lean

tactic: constructor
state_before: s : ℂ
⊢ Gamma s = 0 ↔ ∃ m, s = -↑m
state_after: case mp
s : ℂ
⊢ Gamma s = 0 → ∃ m, s = -↑m

case mpr
s : ℂ
⊢ (∃ m, s = -↑m) → Gamma s = 0

tactic: contrapose!
state_before: case mp
s : ℂ
⊢ Gamma s = 0 → ∃ m, s = -↑m
state_after: case mp
s : ℂ
⊢ (∀ (m : ℕ), s ≠ -↑m) → Gamma s ≠ 0

tactic: exact Gamma_ne_zero
state_before: case mp
s : ℂ
⊢ (∀ (m : ℕ), s ≠ -↑m) → Gamma s ≠ 0
state_after: no goals

tactic: rintro ⟨m, rfl⟩
state_before: case mpr
s : ℂ
⊢ (∃ m, s = -↑m) → Gamma s = 0
state_after: case mpr.intro
m : ℕ
⊢ Gamma (-↑m) = 0

tactic: exact Gamma_neg_nat_eq_zero m
state_before: case mpr.intro
m : ℕ
⊢ Gamma (-↑m) = 0
state_after: no goals
Theorem: Set.image2_iInter₂_subset_left
File: Mathlib/Data/Set/Lattice.lean

tactic: simp_rw [image2_subset_iff, mem_iInter]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β → γ
s✝ : Set α
t✝ : Set β
s : (i : ι) → κ i → Set α
t : Set β
⊢ image2 f (⋂ i, ⋂ j, s i j) t ⊆ ⋂ i, ⋂ j, image2 f (s i j) t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β → γ
s✝ : Set α
t✝ : Set β
s : (i : ι) → κ i → Set α
t : Set β
⊢ ∀ (x : α), (∀ (i : ι) (i_1 : κ i), x ∈ s i i_1) → ∀ y ∈ t, ∀ (i : ι) (i_1 : κ i), f x y ∈ image2 f (s i i_1) t

tactic: exact fun x hx y hy i j => mem_image2_of_mem (hx _ _) hy
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β → γ
s✝ : Set α
t✝ : Set β
s : (i : ι) → κ i → Set α
t : Set β
⊢ ∀ (x : α), (∀ (i : ι) (i_1 : κ i), x ∈ s i i_1) → ∀ y ∈ t, ∀ (i : ι) (i_1 : κ i), f x y ∈ image2 f (s i i_1) t
state_after: no goals
Theorem: IsMinOn.sub
File: Mathlib/Order/Filter/Extr.lean

tactic: simpa only [sub_eq_add_neg] using hf.add hg.neg
state_before: α : Type u
β : Type v
γ : Type w
δ : Type x
inst✝ : OrderedAddCommGroup β
f g : α → β
a : α
s : Set α
l : Filter α
hf : IsMinOn f s a
hg : IsMaxOn g s a
⊢ IsMinOn (fun x => f x - g x) s a
state_after: no goals
Theorem: CochainComplex.mappingCone.inr_fst
File: Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean

tactic: ext p q hpq
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
⊢ (Cochain.ofHom (inr φ)).comp ↑(fst φ) ⋯ = 0
state_after: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
p q : ℤ
hpq : p + 1 = q
⊢ ((Cochain.ofHom (inr φ)).comp ↑(fst φ) ⋯).v p q hpq = Cochain.v 0 p q hpq

tactic: simp [Cochain.comp_v _ _ (zero_add 1) p p q (by omega) (by omega)]
state_before: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
p q : ℤ
hpq : p + 1 = q
⊢ ((Cochain.ofHom (inr φ)).comp ↑(fst φ) ⋯).v p q hpq = Cochain.v 0 p q hpq
state_after: no goals

tactic: omega
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
p q : ℤ
hpq : p + 1 = q
⊢ p + 0 = p
state_after: no goals

tactic: omega
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
p q : ℤ
hpq : p + 1 = q
⊢ p + 1 = q
state_after: no goals
Theorem: PrimeSpectrum.zeroLocus_empty_of_one_mem
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [Set.eq_empty_iff_forall_not_mem]
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
⊢ zeroLocus s = ∅
state_after: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
⊢ ∀ (x : PrimeSpectrum R), x ∉ zeroLocus s

tactic: intro x hx
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
⊢ ∀ (x : PrimeSpectrum R), x ∉ zeroLocus s
state_after: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : x ∈ zeroLocus s
⊢ False

tactic: rw [mem_zeroLocus] at hx
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : x ∈ zeroLocus s
⊢ False
state_after: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
⊢ False

tactic: have x_prime : x.asIdeal.IsPrime := by infer_instance
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
⊢ False
state_after: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
x_prime : x.asIdeal.IsPrime
⊢ False

tactic: have eq_top : x.asIdeal = ⊤ := by
  rw [Ideal.eq_top_iff_one]
  exact hx h
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
x_prime : x.asIdeal.IsPrime
⊢ False
state_after: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
x_prime : x.asIdeal.IsPrime
eq_top : x.asIdeal = ⊤
⊢ False

tactic: apply x_prime.ne_top eq_top
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
x_prime : x.asIdeal.IsPrime
eq_top : x.asIdeal = ⊤
⊢ False
state_after: no goals

tactic: infer_instance
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
⊢ x.asIdeal.IsPrime
state_after: no goals

tactic: rw [Ideal.eq_top_iff_one]
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
x_prime : x.asIdeal.IsPrime
⊢ x.asIdeal = ⊤
state_after: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
x_prime : x.asIdeal.IsPrime
⊢ 1 ∈ x.asIdeal

tactic: exact hx h
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set R
h : 1 ∈ s
x : PrimeSpectrum R
hx : s ⊆ ↑x.asIdeal
x_prime : x.asIdeal.IsPrime
⊢ 1 ∈ x.asIdeal
state_after: no goals
Theorem: sigmaFinsuppEquivDFinsupp_smul
File: Mathlib/Data/Finsupp/ToDFinsupp.lean

tactic: ext
state_before: ι : Type u_1
R✝ : Type u_2
M : Type u_3
η : ι → Type u_4
N : Type u_5
inst✝³ : Semiring R✝
R : Type u_6
inst✝² : Monoid R
inst✝¹ : AddMonoid N
inst✝ : DistribMulAction R N
r : R
f : (i : ι) × η i →₀ N
⊢ sigmaFinsuppEquivDFinsupp (r • f) = r • sigmaFinsuppEquivDFinsupp f
state_after: case h.h
ι : Type u_1
R✝ : Type u_2
M : Type u_3
η : ι → Type u_4
N : Type u_5
inst✝³ : Semiring R✝
R : Type u_6
inst✝² : Monoid R
inst✝¹ : AddMonoid N
inst✝ : DistribMulAction R N
r : R
f : (i : ι) × η i →₀ N
i✝ : ι
a✝ : η i✝
⊢ ((sigmaFinsuppEquivDFinsupp (r • f)) i✝) a✝ = ((r • sigmaFinsuppEquivDFinsupp f) i✝) a✝

tactic: rfl
state_before: case h.h
ι : Type u_1
R✝ : Type u_2
M : Type u_3
η : ι → Type u_4
N : Type u_5
inst✝³ : Semiring R✝
R : Type u_6
inst✝² : Monoid R
inst✝¹ : AddMonoid N
inst✝ : DistribMulAction R N
r : R
f : (i : ι) × η i →₀ N
i✝ : ι
a✝ : η i✝
⊢ ((sigmaFinsuppEquivDFinsupp (r • f)) i✝) a✝ = ((r • sigmaFinsuppEquivDFinsupp f) i✝) a✝
state_after: no goals
Theorem: smul_lt_smul_of_neg_left
File: Mathlib/Algebra/Order/Module/Defs.lean

tactic: rw [← neg_neg a, neg_smul, neg_smul (-a), neg_lt_neg_iff]
state_before: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝³ : OrderedRing α
inst✝² : OrderedAddCommGroup β
inst✝¹ : Module α β
inst✝ : PosSMulStrictMono α β
hb : b₁ < b₂
ha : a < 0
⊢ a • b₂ < a • b₁
state_after: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝³ : OrderedRing α
inst✝² : OrderedAddCommGroup β
inst✝¹ : Module α β
inst✝ : PosSMulStrictMono α β
hb : b₁ < b₂
ha : a < 0
⊢ -a • b₁ < -a • b₂

tactic: exact smul_lt_smul_of_pos_left hb (neg_pos_of_neg ha)
state_before: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝³ : OrderedRing α
inst✝² : OrderedAddCommGroup β
inst✝¹ : Module α β
inst✝ : PosSMulStrictMono α β
hb : b₁ < b₂
ha : a < 0
⊢ -a • b₁ < -a • b₂
state_after: no goals
Theorem: ENNReal.toReal_min
File: Mathlib/Data/ENNReal/Real.lean

tactic: simp only [h, (ENNReal.toReal_le_toReal hr hp).2 h, min_eq_left]
state_before: a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a b : ℝ≥0∞
hr : a ≠ ⊤
hp : b ≠ ⊤
h : a ≤ b
⊢ (min a b).toReal = min a.toReal b.toReal
state_after: no goals

tactic: simp only [h, (ENNReal.toReal_le_toReal hp hr).2 h, min_eq_right]
state_before: a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a b : ℝ≥0∞
hr : a ≠ ⊤
hp : b ≠ ⊤
h : b ≤ a
⊢ (min a b).toReal = min a.toReal b.toReal
state_after: no goals
Theorem: Ordinal.lsub_lt_ord_lift
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: subst h
state_before: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
c : Ordinal.{max u v}
hι : Cardinal.lift.{v, u} #ι < c.cof
hf : ∀ (i : ι), f i < c
h : lsub f = c
⊢ False
state_after: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
hι : Cardinal.lift.{v, u} #ι < (lsub f).cof
hf : ∀ (i : ι), f i < lsub f
⊢ False

tactic: exact (cof_lsub_le_lift.{u, v} f).not_lt hι
state_before: α : Type u_1
r : α → α → Prop
ι : Type u
f : ι → Ordinal.{max u v}
hι : Cardinal.lift.{v, u} #ι < (lsub f).cof
hf : ∀ (i : ι), f i < lsub f
⊢ False
state_after: no goals
Theorem: WeierstrassCurve.Affine.baseChange_polynomialY
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: rw [← map_polynomialY, map_baseChange]
state_before: R✝ : Type u
inst✝¹¹ : CommRing R✝
W✝ : Affine R✝
R : Type r
inst✝¹⁰ : CommRing R
W : Affine R
S : Type s
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
A : Type u
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
inst✝⁵ : Algebra S A
inst✝⁴ : IsScalarTower R S A
B : Type v
inst✝³ : CommRing B
inst✝² : Algebra R B
inst✝¹ : Algebra S B
inst✝ : IsScalarTower R S B
f : A →ₐ[S] B
⊢ (baseChange W B).toAffine.polynomialY = Polynomial.map (mapRingHom ↑f) (baseChange W A).toAffine.polynomialY
state_after: no goals
Theorem: Real.dimH_univ_pi
File: Mathlib/Topology/MetricSpace/HausdorffDimension.lean

tactic: simp only [← Metric.iUnion_ball_nat_succ (0 : ι → ℝ), dimH_iUnion,
  dimH_ball_pi _ (Nat.cast_add_one_pos _), iSup_const]
state_before: ι✝ : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁶ : EMetricSpace X
inst✝⁵ : EMetricSpace Y
C K r : ℝ≥0
f : X → Y
s t : Set X
E : Type u_4
inst✝⁴ : Fintype ι✝
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : FiniteDimensional ℝ E
ι : Type u_5
inst✝ : Fintype ι
⊢ dimH univ = ↑(Fintype.card ι)
state_after: no goals
Theorem: dist_birkhoffAverage_apply_birkhoffAverage
File: Mathlib/Dynamics/BirkhoffSum/NormedSpace.lean

tactic: simp [dist_birkhoffAverage_birkhoffAverage, dist_birkhoffSum_apply_birkhoffSum]
state_before: α : Type u_1
E : Type u_2
inst✝³ : NormedAddCommGroup E
𝕜 : Type u_3
inst✝² : RCLike 𝕜
inst✝¹ : Module 𝕜 E
inst✝ : BoundedSMul 𝕜 E
f : α → α
g : α → E
n : ℕ
x : α
⊢ dist (birkhoffAverage 𝕜 f g n (f x)) (birkhoffAverage 𝕜 f g n x) = dist (g (f^[n] x)) (g x) / ↑n
state_after: no goals
Theorem: tendsto_nat_ceil_atTop
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: refine Nat.ceil_mono.tendsto_atTop_atTop (fun x ↦ ⟨x, ?_⟩)
state_before: α✝ : Type u_1
β : Type u_2
ι : Type u_3
α : Type u_4
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
⊢ Tendsto (fun x => ⌈x⌉₊) atTop atTop
state_after: α✝ : Type u_1
β : Type u_2
ι : Type u_3
α : Type u_4
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
x : ℕ
⊢ x ≤ ⌈↑x⌉₊

tactic: simp only [Nat.ceil_natCast, le_refl]
state_before: α✝ : Type u_1
β : Type u_2
ι : Type u_3
α : Type u_4
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
x : ℕ
⊢ x ≤ ⌈↑x⌉₊
state_after: no goals