1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Int.tendsto_coe_cofinite
File: Mathlib/Topology/Instances/Real.lean

tactic: apply (castAddHom ℝ).tendsto_coe_cofinite_of_discrete cast_injective
state_before: α : Type u
β : Type v
γ : Type w
⊢ Tendsto Int.cast Filter.cofinite (cocompact ℝ)
state_after: α : Type u
β : Type v
γ : Type w
⊢ DiscreteTopology ↥(castAddHom ℝ).range

tactic: rw [range_castAddHom]
state_before: α : Type u
β : Type v
γ : Type w
⊢ DiscreteTopology ↥(castAddHom ℝ).range
state_after: α : Type u
β : Type v
γ : Type w
⊢ DiscreteTopology ↥(AddSubgroup.zmultiples 1)

tactic: infer_instance
state_before: α : Type u
β : Type v
γ : Type w
⊢ DiscreteTopology ↥(AddSubgroup.zmultiples 1)
state_after: no goals
Theorem: Order.isMax_iterate_succ_of_eq_of_lt
File: Mathlib/Order/SuccPred/Basic.lean

tactic: refine max_of_succ_le (le_trans ?_ h_eq.symm.le)
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
n m : ℕ
h_eq : succ^[n] a = succ^[m] a
h_lt : n < m
⊢ IsMax (succ^[n] a)
state_after: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
n m : ℕ
h_eq : succ^[n] a = succ^[m] a
h_lt : n < m
⊢ succ (succ^[n] a) ≤ succ^[m] a

tactic: have : succ (succ^[n] a) = succ^[n + 1] a := by rw [Function.iterate_succ', comp]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
n m : ℕ
h_eq : succ^[n] a = succ^[m] a
h_lt : n < m
⊢ succ (succ^[n] a) ≤ succ^[m] a
state_after: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
n m : ℕ
h_eq : succ^[n] a = succ^[m] a
h_lt : n < m
this : succ (succ^[n] a) = succ^[n + 1] a
⊢ succ (succ^[n] a) ≤ succ^[m] a

tactic: rw [this]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
n m : ℕ
h_eq : succ^[n] a = succ^[m] a
h_lt : n < m
this : succ (succ^[n] a) = succ^[n + 1] a
⊢ succ (succ^[n] a) ≤ succ^[m] a
state_after: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
n m : ℕ
h_eq : succ^[n] a = succ^[m] a
h_lt : n < m
this : succ (succ^[n] a) = succ^[n + 1] a
⊢ succ^[n + 1] a ≤ succ^[m] a

tactic: have h_le : n + 1 ≤ m := Nat.succ_le_of_lt h_lt
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
n m : ℕ
h_eq : succ^[n] a = succ^[m] a
h_lt : n < m
this : succ (succ^[n] a) = succ^[n + 1] a
⊢ succ^[n + 1] a ≤ succ^[m] a
state_after: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
n m : ℕ
h_eq : succ^[n] a = succ^[m] a
h_lt : n < m
this : succ (succ^[n] a) = succ^[n + 1] a
h_le : n + 1 ≤ m
⊢ succ^[n + 1] a ≤ succ^[m] a

tactic: exact Monotone.monotone_iterate_of_le_map succ_mono (le_succ a) h_le
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
n m : ℕ
h_eq : succ^[n] a = succ^[m] a
h_lt : n < m
this : succ (succ^[n] a) = succ^[n + 1] a
h_le : n + 1 ≤ m
⊢ succ^[n + 1] a ≤ succ^[m] a
state_after: no goals

tactic: rw [Function.iterate_succ', comp]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
n m : ℕ
h_eq : succ^[n] a = succ^[m] a
h_lt : n < m
⊢ succ (succ^[n] a) = succ^[n + 1] a
state_after: no goals
Theorem: Interval.length_add_le
File: Mathlib/Algebra/Order/Interval/Basic.lean

tactic: simp
state_before: ι : Type u_1
α : Type u_2
inst✝ : OrderedAddCommGroup α
s t : Interval α
a : α
x✝ : Interval α
⊢ (⊥ + x✝).length ≤ ⊥.length + x✝.length
state_after: no goals

tactic: simp
state_before: ι : Type u_1
α : Type u_2
inst✝ : OrderedAddCommGroup α
s t : Interval α
a : α
x✝ : Interval α
⊢ (x✝ + ⊥).length ≤ x✝.length + ⊥.length
state_after: no goals
Theorem: MulAction.movedBy_mem_fixedBy_of_commute
File: Mathlib/GroupTheory/GroupAction/FixedPoints.lean

tactic: rw [mem_fixedBy, Set.smul_set_compl, fixedBy_mem_fixedBy_of_commute comm]
state_before: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
g h : G
comm : Commute g h
⊢ (fixedBy α g)ᶜ ∈ fixedBy (Set α) h
state_after: no goals
Theorem: IsRelPrime.prod_left_iff
File: Mathlib/RingTheory/Coprime/Lemmas.lean

tactic: classical
refine Finset.induction_on t (iff_of_true isRelPrime_one_left fun _ ↦ by simp) fun b t hbt ih ↦ ?_
rw [Finset.prod_insert hbt, IsRelPrime.mul_left_iff, ih, Finset.forall_mem_insert]
state_before: α : Type u_1
I : Type u_2
inst✝¹ : CommMonoid α
inst✝ : DecompositionMonoid α
x y z : α
s : I → α
t : Finset I
⊢ IsRelPrime (∏ i ∈ t, s i) x ↔ ∀ i ∈ t, IsRelPrime (s i) x
state_after: no goals

tactic: refine Finset.induction_on t (iff_of_true isRelPrime_one_left fun _ ↦ by simp) fun b t hbt ih ↦ ?_
state_before: α : Type u_1
I : Type u_2
inst✝¹ : CommMonoid α
inst✝ : DecompositionMonoid α
x y z : α
s : I → α
t : Finset I
⊢ IsRelPrime (∏ i ∈ t, s i) x ↔ ∀ i ∈ t, IsRelPrime (s i) x
state_after: α : Type u_1
I : Type u_2
inst✝¹ : CommMonoid α
inst✝ : DecompositionMonoid α
x y z : α
s : I → α
t✝ : Finset I
b : I
t : Finset I
hbt : b ∉ t
ih : IsRelPrime (∏ i ∈ t, s i) x ↔ ∀ i ∈ t, IsRelPrime (s i) x
⊢ IsRelPrime (∏ i ∈ insert b t, s i) x ↔ ∀ i ∈ insert b t, IsRelPrime (s i) x

tactic: rw [Finset.prod_insert hbt, IsRelPrime.mul_left_iff, ih, Finset.forall_mem_insert]
state_before: α : Type u_1
I : Type u_2
inst✝¹ : CommMonoid α
inst✝ : DecompositionMonoid α
x y z : α
s : I → α
t✝ : Finset I
b : I
t : Finset I
hbt : b ∉ t
ih : IsRelPrime (∏ i ∈ t, s i) x ↔ ∀ i ∈ t, IsRelPrime (s i) x
⊢ IsRelPrime (∏ i ∈ insert b t, s i) x ↔ ∀ i ∈ insert b t, IsRelPrime (s i) x
state_after: no goals

tactic: simp
state_before: α : Type u_1
I : Type u_2
inst✝¹ : CommMonoid α
inst✝ : DecompositionMonoid α
x y z : α
s : I → α
t : Finset I
x✝ : I
⊢ x✝ ∈ ∅ → IsRelPrime (s x✝) x
state_after: no goals
Theorem: ProbabilityTheory.cond_eq_inv_mul_cond_mul
File: Mathlib/Probability/ConditionalProbability.lean

tactic: rw [mul_assoc, cond_mul_eq_inter μ hmt s, Set.inter_comm, cond_apply _ hms]
state_before: Ω : Type u_1
Ω' : Type u_2
α : Type u_3
m : MeasurableSpace Ω
m' : MeasurableSpace Ω'
μ : Measure Ω
s t : Set Ω
inst✝ : IsFiniteMeasure μ
hms : MeasurableSet s
hmt : MeasurableSet t
⊢ μ[|s] t = (μ s)⁻¹ * μ[|t] s * μ t
state_after: no goals
Theorem: RatFunc.algebraMap_injective
File: Mathlib/FieldTheory/RatFunc/Basic.lean

tactic: rw [← ofFractionRing_comp_algebraMap]
state_before: K : Type u
inst✝¹ : CommRing K
inst✝ : IsDomain K
⊢ Function.Injective ⇑(algebraMap K[X] (RatFunc K))
state_after: K : Type u
inst✝¹ : CommRing K
inst✝ : IsDomain K
⊢ Function.Injective (ofFractionRing ∘ ⇑(algebraMap K[X] (FractionRing K[X])))

tactic: exact ofFractionRing_injective.comp (IsFractionRing.injective _ _)
state_before: K : Type u
inst✝¹ : CommRing K
inst✝ : IsDomain K
⊢ Function.Injective (ofFractionRing ∘ ⇑(algebraMap K[X] (FractionRing K[X])))
state_after: no goals
Theorem: Polynomial.nextCoeff_C_mul_X_add_C
File: Mathlib/Algebra/Polynomial/Degree/Lemmas.lean

tactic: rw [nextCoeff_of_natDegree_pos] <;> simp [ha]
state_before: R : Type u
S : Type v
ι : Type w
a✝ b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : NoZeroDivisors R
p q : R[X]
a : R
ha : a ≠ 0
c : R
⊢ (C a * X + C c).nextCoeff = c
state_after: no goals
Theorem: Primrec.unpair
File: Mathlib/Computability/Primrec.lean

tactic: simp
state_before: α : Type u_1
σ : Type u_2
inst✝¹ : Primcodable α
inst✝ : Primcodable σ
n : ℕ
⊢ ((Nat.unpair n).1, (Nat.unpair n).2) = Nat.unpair n
state_after: no goals
Theorem: Metric.hasBasis_cobounded_compl_ball
File: Mathlib/Topology/MetricSpace/Bounded.lean

tactic: simp
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
s t : Set α
r : ℝ
c : α
x✝ : Set α
⊢ (∃ r, x✝ ⊆ ball c r) ↔ ∃ i, True ∧ (ball c i)ᶜ ⊆ x✝ᶜ
state_after: no goals
Theorem: Stream'.Seq.map_cons
File: Mathlib/Data/Seq/Seq.lean

tactic: apply Subtype.eq
state_before: α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Stream' (Option α)
al : s.IsSeq
⊢ map f (cons a ⟨s, al⟩) = cons (f a) (map f ⟨s, al⟩)
state_after: case a
α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Stream' (Option α)
al : s.IsSeq
⊢ ↑(map f (cons a ⟨s, al⟩)) = ↑(cons (f a) (map f ⟨s, al⟩))

tactic: dsimp [cons, map]
state_before: case a
α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Stream' (Option α)
al : s.IsSeq
⊢ ↑(map f (cons a ⟨s, al⟩)) = ↑(cons (f a) (map f ⟨s, al⟩))
state_after: case a
α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Stream' (Option α)
al : s.IsSeq
⊢ Stream'.map (Option.map f) (some a :: s) = some (f a) :: Stream'.map (Option.map f) s

tactic: rw [Stream'.map_cons]
state_before: case a
α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Stream' (Option α)
al : s.IsSeq
⊢ Stream'.map (Option.map f) (some a :: s) = some (f a) :: Stream'.map (Option.map f) s
state_after: case a
α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Stream' (Option α)
al : s.IsSeq
⊢ Option.map f (some a) :: Stream'.map (Option.map f) s = some (f a) :: Stream'.map (Option.map f) s

tactic: rfl
state_before: case a
α : Type u
β : Type v
γ : Type w
f : α → β
a : α
s : Stream' (Option α)
al : s.IsSeq
⊢ Option.map f (some a) :: Stream'.map (Option.map f) s = some (f a) :: Stream'.map (Option.map f) s
state_after: no goals
Theorem: Profinite.projective_of_extrDisc
File: Mathlib/Topology/Category/Stonean/Basic.lean

tactic: show Projective (Stonean.toProfinite.obj ⟨X.toCompHaus⟩)
state_before: X : Profinite
hX : ExtremallyDisconnected ↑X.toCompHaus.toTop
⊢ Projective X
state_after: X : Profinite
hX : ExtremallyDisconnected ↑X.toCompHaus.toTop
⊢ Projective (Stonean.toProfinite.obj (Stonean.mk X.toCompHaus))

tactic: exact inferInstance
state_before: X : Profinite
hX : ExtremallyDisconnected ↑X.toCompHaus.toTop
⊢ Projective (Stonean.toProfinite.obj (Stonean.mk X.toCompHaus))
state_after: no goals
Theorem: Nat.odd_add'
File: Mathlib/Algebra/Ring/Parity.lean

tactic: rw [add_comm, odd_add]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m n : ℕ
⊢ Odd (m + n) ↔ (Odd n ↔ Even m)
state_after: no goals
Theorem: Basis.det_unitsSMul_self
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: simp [Basis.det_apply]
state_before: R : Type u_1
inst✝⁸ : CommRing R
M : Type u_2
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
M' : Type u_3
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
ι : Type u_4
inst✝³ : DecidableEq ι
inst✝² : Fintype ι
e : Basis ι R M
A : Type u_5
inst✝¹ : CommRing A
inst✝ : Module A M
w : ι → Rˣ
⊢ e.det ⇑(e.unitsSMul w) = ∏ i : ι, ↑(w i)
state_after: no goals
Theorem: Asymptotics.isBigOWith_zero
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simpa using mul_nonneg hc (norm_nonneg <| g' x)
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
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
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✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
hc : 0 ≤ c
x : α
⊢ x ∈ {x | (fun x => ‖0‖ ≤ c * ‖g' x‖) x}
state_after: no goals
Theorem: Function.Antiperiodic.add_zsmul_eq
File: Mathlib/Algebra/Periodic.lean

tactic: rcases Int.even_or_odd' n with ⟨k, rfl | rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddGroup α
inst✝ : AddGroup β
h : Antiperiodic f c
n : ℤ
⊢ f (x + n • c) = ↑n.negOnePow • f x
state_after: case intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddGroup α
inst✝ : AddGroup β
h : Antiperiodic f c
k : ℤ
⊢ f (x + (2 * k) • c) = ↑(2 * k).negOnePow • f x

case intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddGroup α
inst✝ : AddGroup β
h : Antiperiodic f c
k : ℤ
⊢ f (x + (2 * k + 1) • c) = ↑(2 * k + 1).negOnePow • f x

tactic: rw [h.even_zsmul_periodic, Int.negOnePow_two_mul, Units.val_one, one_zsmul]
state_before: case intro.inl
α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddGroup α
inst✝ : AddGroup β
h : Antiperiodic f c
k : ℤ
⊢ f (x + (2 * k) • c) = ↑(2 * k).negOnePow • f x
state_after: no goals

tactic: rw [h.odd_zsmul_antiperiodic, Int.negOnePow_two_mul_add_one, Units.val_neg,
  Units.val_one, neg_zsmul, one_zsmul]
state_before: case intro.inr
α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddGroup α
inst✝ : AddGroup β
h : Antiperiodic f c
k : ℤ
⊢ f (x + (2 * k + 1) • c) = ↑(2 * k + 1).negOnePow • f x
state_after: no goals
Theorem: Nat.not_exists_sq
File: Mathlib/Data/Nat/Defs.lean

tactic: rintro ⟨t, rfl⟩
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hl : m * m < n
hr : n < (m + 1) * (m + 1)
⊢ ¬∃ t, t * t = n
state_after: case intro
a b c d m k : ℕ
p q : ℕ → Prop
t : ℕ
hl : m * m < t * t
hr : t * t < (m + 1) * (m + 1)
⊢ False

tactic: have h1 : m < t := Nat.mul_self_lt_mul_self_iff.1 hl
state_before: case intro
a b c d m k : ℕ
p q : ℕ → Prop
t : ℕ
hl : m * m < t * t
hr : t * t < (m + 1) * (m + 1)
⊢ False
state_after: case intro
a b c d m k : ℕ
p q : ℕ → Prop
t : ℕ
hl : m * m < t * t
hr : t * t < (m + 1) * (m + 1)
h1 : m < t
⊢ False

tactic: have h2 : t < m + 1 := Nat.mul_self_lt_mul_self_iff.1 hr
state_before: case intro
a b c d m k : ℕ
p q : ℕ → Prop
t : ℕ
hl : m * m < t * t
hr : t * t < (m + 1) * (m + 1)
h1 : m < t
⊢ False
state_after: case intro
a b c d m k : ℕ
p q : ℕ → Prop
t : ℕ
hl : m * m < t * t
hr : t * t < (m + 1) * (m + 1)
h1 : m < t
h2 : t < m + 1
⊢ False

tactic: exact (not_lt_of_ge <| le_of_lt_succ h2) h1
state_before: case intro
a b c d m k : ℕ
p q : ℕ → Prop
t : ℕ
hl : m * m < t * t
hr : t * t < (m + 1) * (m + 1)
h1 : m < t
h2 : t < m + 1
⊢ False
state_after: no goals
Theorem: Computation.equiv_of_mem
File: Mathlib/Data/Seq/Computation.lean

tactic: rw [mem_unique ma h1]
state_before: α : Type u
β : Type v
γ : Type w
s t : Computation α
a : α
h1 : a ∈ s
h2 : a ∈ t
a' : α
ma : a' ∈ s
⊢ a' ∈ t
state_after: α : Type u
β : Type v
γ : Type w
s t : Computation α
a : α
h1 : a ∈ s
h2 : a ∈ t
a' : α
ma : a' ∈ s
⊢ a ∈ t

tactic: exact h2
state_before: α : Type u
β : Type v
γ : Type w
s t : Computation α
a : α
h1 : a ∈ s
h2 : a ∈ t
a' : α
ma : a' ∈ s
⊢ a ∈ t
state_after: no goals

tactic: rw [mem_unique ma h2]
state_before: α : Type u
β : Type v
γ : Type w
s t : Computation α
a : α
h1 : a ∈ s
h2 : a ∈ t
a' : α
ma : a' ∈ t
⊢ a' ∈ s
state_after: α : Type u
β : Type v
γ : Type w
s t : Computation α
a : α
h1 : a ∈ s
h2 : a ∈ t
a' : α
ma : a' ∈ t
⊢ a ∈ s

tactic: exact h1
state_before: α : Type u
β : Type v
γ : Type w
s t : Computation α
a : α
h1 : a ∈ s
h2 : a ∈ t
a' : α
ma : a' ∈ t
⊢ a ∈ s
state_after: no goals
Theorem: Metric.closure_subset_cthickening
File: Mathlib/Topology/MetricSpace/Thickening.lean

tactic: rw [← cthickening_of_nonpos (min_le_right δ 0)]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s t : Set α
x : α
δ : ℝ
E : Set α
⊢ closure E ⊆ cthickening δ E
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s t : Set α
x : α
δ : ℝ
E : Set α
⊢ cthickening (min δ 0) E ⊆ cthickening δ E

tactic: exact cthickening_mono (min_le_left δ 0) E
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s t : Set α
x : α
δ : ℝ
E : Set α
⊢ cthickening (min δ 0) E ⊆ cthickening δ E
state_after: no goals
Theorem: Set.disjoint_pi_univ_Ioc_update_left_right
File: Mathlib/Order/Interval/Set/Pi.lean

tactic: rw [disjoint_left]
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
⊢ Disjoint (univ.pi fun i => Ioc (x i) (update y i₀ m i)) (univ.pi fun i => Ioc (update x i₀ m i) (y i))
state_after: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
⊢ ∀ ⦃a : (i : ι) → α i⦄,
    (a ∈ univ.pi fun i => Ioc (x i) (update y i₀ m i)) → a ∉ univ.pi fun i => Ioc (update x i₀ m i) (y i)

tactic: rintro z h₁ h₂
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
⊢ ∀ ⦃a : (i : ι) → α i⦄,
    (a ∈ univ.pi fun i => Ioc (x i) (update y i₀ m i)) → a ∉ univ.pi fun i => Ioc (update x i₀ m i) (y i)
state_after: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
z : (i : ι) → α i
h₁ : z ∈ univ.pi fun i => Ioc (x i) (update y i₀ m i)
h₂ : z ∈ univ.pi fun i => Ioc (update x i₀ m i) (y i)
⊢ False

tactic: refine (h₁ i₀ (mem_univ _)).2.not_lt ?_
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
z : (i : ι) → α i
h₁ : z ∈ univ.pi fun i => Ioc (x i) (update y i₀ m i)
h₂ : z ∈ univ.pi fun i => Ioc (update x i₀ m i) (y i)
⊢ False
state_after: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
z : (i : ι) → α i
h₁ : z ∈ univ.pi fun i => Ioc (x i) (update y i₀ m i)
h₂ : z ∈ univ.pi fun i => Ioc (update x i₀ m i) (y i)
⊢ update y i₀ m i₀ < z i₀

tactic: simpa only [Function.update_same] using (h₂ i₀ (mem_univ _)).1
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
z : (i : ι) → α i
h₁ : z ∈ univ.pi fun i => Ioc (x i) (update y i₀ m i)
h₂ : z ∈ univ.pi fun i => Ioc (update x i₀ m i) (y i)
⊢ update y i₀ m i₀ < z i₀
state_after: no goals
Theorem: openSegment_same
File: Mathlib/Analysis/Convex/Segment.lean

tactic: simpa only [← add_smul, mem_singleton_iff, hab, one_smul, eq_comm] using hz
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁷ : OrderedRing 𝕜
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : AddCommGroup G
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕜 F
inst✝¹ : Nontrivial 𝕜
inst✝ : DenselyOrdered 𝕜
x z : E
x✝ : z ∈ openSegment 𝕜 x x
a b : 𝕜
left✝¹ : 0 < a
left✝ : 0 < b
hab : a + b = 1
hz : a • x + b • x = z
⊢ z ∈ {x}
state_after: no goals

tactic: obtain ⟨a, ha₀, ha₁⟩ := DenselyOrdered.dense (0 : 𝕜) 1 zero_lt_one
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁷ : OrderedRing 𝕜
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : AddCommGroup G
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕜 F
inst✝¹ : Nontrivial 𝕜
inst✝ : DenselyOrdered 𝕜
x z : E
h : z = x
⊢ z ∈ openSegment 𝕜 x x
state_after: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁷ : OrderedRing 𝕜
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : AddCommGroup G
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕜 F
inst✝¹ : Nontrivial 𝕜
inst✝ : DenselyOrdered 𝕜
x z : E
h : z = x
a : 𝕜
ha₀ : 0 < a
ha₁ : a < 1
⊢ z ∈ openSegment 𝕜 x x

tactic: refine ⟨a, 1 - a, ha₀, sub_pos_of_lt ha₁, add_sub_cancel _ _, ?_⟩
state_before: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁷ : OrderedRing 𝕜
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : AddCommGroup G
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕜 F
inst✝¹ : Nontrivial 𝕜
inst✝ : DenselyOrdered 𝕜
x z : E
h : z = x
a : 𝕜
ha₀ : 0 < a
ha₁ : a < 1
⊢ z ∈ openSegment 𝕜 x x
state_after: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁷ : OrderedRing 𝕜
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : AddCommGroup G
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕜 F
inst✝¹ : Nontrivial 𝕜
inst✝ : DenselyOrdered 𝕜
x z : E
h : z = x
a : 𝕜
ha₀ : 0 < a
ha₁ : a < 1
⊢ a • x + (1 - a) • x = z

tactic: rw [← add_smul, add_sub_cancel, one_smul, h]
state_before: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁷ : OrderedRing 𝕜
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : AddCommGroup G
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕜 F
inst✝¹ : Nontrivial 𝕜
inst✝ : DenselyOrdered 𝕜
x z : E
h : z = x
a : 𝕜
ha₀ : 0 < a
ha₁ : a < 1
⊢ a • x + (1 - a) • x = z
state_after: no goals
Theorem: IsIntegral.map
File: Mathlib/RingTheory/IntegralClosure.lean

tactic: obtain ⟨P, hP⟩ := hb
state_before: R : Type u_1
A : Type u_2
B✝ : Type u_3
S : Type u_4
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Ring B✝
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R A
inst✝¹⁰ : Algebra R B✝
f✝ : R →+* S
B : Type u_5
C : Type u_6
F : Type u_7
inst✝⁹ : Ring B
inst✝⁸ : Ring C
inst✝⁷ : Algebra R B
inst✝⁶ : Algebra A B
inst✝⁵ : Algebra R C
inst✝⁴ : IsScalarTower R A B
inst✝³ : Algebra A C
inst✝² : IsScalarTower R A C
b : B
inst✝¹ : FunLike F B C
inst✝ : AlgHomClass F A B C
f : F
hb : IsIntegral R b
⊢ IsIntegral R (f b)
state_after: case intro
R : Type u_1
A : Type u_2
B✝ : Type u_3
S : Type u_4
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Ring B✝
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R A
inst✝¹⁰ : Algebra R B✝
f✝ : R →+* S
B : Type u_5
C : Type u_6
F : Type u_7
inst✝⁹ : Ring B
inst✝⁸ : Ring C
inst✝⁷ : Algebra R B
inst✝⁶ : Algebra A B
inst✝⁵ : Algebra R C
inst✝⁴ : IsScalarTower R A B
inst✝³ : Algebra A C
inst✝² : IsScalarTower R A C
b : B
inst✝¹ : FunLike F B C
inst✝ : AlgHomClass F A B C
f : F
P : R[X]
hP : P.Monic ∧ eval₂ (algebraMap R B) b P = 0
⊢ IsIntegral R (f b)

tactic: refine ⟨P, hP.1, ?_⟩
state_before: case intro
R : Type u_1
A : Type u_2
B✝ : Type u_3
S : Type u_4
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Ring B✝
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R A
inst✝¹⁰ : Algebra R B✝
f✝ : R →+* S
B : Type u_5
C : Type u_6
F : Type u_7
inst✝⁹ : Ring B
inst✝⁸ : Ring C
inst✝⁷ : Algebra R B
inst✝⁶ : Algebra A B
inst✝⁵ : Algebra R C
inst✝⁴ : IsScalarTower R A B
inst✝³ : Algebra A C
inst✝² : IsScalarTower R A C
b : B
inst✝¹ : FunLike F B C
inst✝ : AlgHomClass F A B C
f : F
P : R[X]
hP : P.Monic ∧ eval₂ (algebraMap R B) b P = 0
⊢ IsIntegral R (f b)
state_after: case intro
R : Type u_1
A : Type u_2
B✝ : Type u_3
S : Type u_4
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Ring B✝
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R A
inst✝¹⁰ : Algebra R B✝
f✝ : R →+* S
B : Type u_5
C : Type u_6
F : Type u_7
inst✝⁹ : Ring B
inst✝⁸ : Ring C
inst✝⁷ : Algebra R B
inst✝⁶ : Algebra A B
inst✝⁵ : Algebra R C
inst✝⁴ : IsScalarTower R A B
inst✝³ : Algebra A C
inst✝² : IsScalarTower R A C
b : B
inst✝¹ : FunLike F B C
inst✝ : AlgHomClass F A B C
f : F
P : R[X]
hP : P.Monic ∧ eval₂ (algebraMap R B) b P = 0
⊢ eval₂ (algebraMap R C) (f b) P = 0

tactic: rw [← aeval_def, ← aeval_map_algebraMap A,
  aeval_algHom_apply, aeval_map_algebraMap, aeval_def, hP.2, _root_.map_zero]
state_before: case intro
R : Type u_1
A : Type u_2
B✝ : Type u_3
S : Type u_4
inst✝¹⁵ : CommRing R
inst✝¹⁴ : CommRing A
inst✝¹³ : Ring B✝
inst✝¹² : CommRing S
inst✝¹¹ : Algebra R A
inst✝¹⁰ : Algebra R B✝
f✝ : R →+* S
B : Type u_5
C : Type u_6
F : Type u_7
inst✝⁹ : Ring B
inst✝⁸ : Ring C
inst✝⁷ : Algebra R B
inst✝⁶ : Algebra A B
inst✝⁵ : Algebra R C
inst✝⁴ : IsScalarTower R A B
inst✝³ : Algebra A C
inst✝² : IsScalarTower R A C
b : B
inst✝¹ : FunLike F B C
inst✝ : AlgHomClass F A B C
f : F
P : R[X]
hP : P.Monic ∧ eval₂ (algebraMap R B) b P = 0
⊢ eval₂ (algebraMap R C) (f b) P = 0
state_after: no goals
Theorem: MvPolynomial.X_dvd_monomial
File: Mathlib/Algebra/MvPolynomial/Division.lean

tactic: refine monomial_dvd_monomial.trans ?_
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
i : σ
j : σ →₀ ℕ
r : R
⊢ X i ∣ (monomial j) r ↔ r = 0 ∨ j i ≠ 0
state_after: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
i : σ
j : σ →₀ ℕ
r : R
⊢ (r = 0 ∨ Finsupp.single i 1 ≤ j) ∧ 1 ∣ r ↔ r = 0 ∨ j i ≠ 0

tactic: simp_rw [one_dvd, and_true_iff, Finsupp.single_le_iff, Nat.one_le_iff_ne_zero]
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
i : σ
j : σ →₀ ℕ
r : R
⊢ (r = 0 ∨ Finsupp.single i 1 ≤ j) ∧ 1 ∣ r ↔ r = 0 ∨ j i ≠ 0
state_after: no goals