1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: EMetric.infEdist_biUnion
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp only [infEdist_iUnion]
state_before: ι✝ : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x✝ y : α
s t : Set α
Φ : α → β
ι : Type u_2
f : ι → Set α
I : Set ι
x : α
⊢ infEdist x (⋃ i ∈ I, f i) = ⨅ i ∈ I, infEdist x (f i)
state_after: no goals
Theorem: variationOnFromTo.nonneg_of_le
File: Mathlib/Analysis/BoundedVariation.lean

tactic: simp only [variationOnFromTo, if_pos h, ENNReal.toReal_nonneg]
state_before: α : Type u_1
inst✝¹ : LinearOrder α
E : Type u_2
inst✝ : PseudoEMetricSpace E
f : α → E
s : Set α
a b : α
h : a ≤ b
⊢ 0 ≤ variationOnFromTo f s a b
state_after: no goals
Theorem: Complex.exp_im
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [exp_eq_exp_re_mul_sin_add_cos]
state_before: x y : ℂ
⊢ (cexp x).im = Real.exp x.re * Real.sin x.im
state_after: x y : ℂ
⊢ (cexp ↑x.re * (cos ↑x.im + sin ↑x.im * I)).im = Real.exp x.re * Real.sin x.im

tactic: simp [exp_ofReal_re, sin_ofReal_re]
state_before: x y : ℂ
⊢ (cexp ↑x.re * (cos ↑x.im + sin ↑x.im * I)).im = Real.exp x.re * Real.sin x.im
state_after: no goals
Theorem: Cardinal.isRegular_aleph_succ
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rw [aleph_succ]
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ (aleph (succ o)).IsRegular
state_after: α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ (succ (aleph o)).IsRegular

tactic: exact isRegular_succ (aleph0_le_aleph o)
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ (succ (aleph o)).IsRegular
state_after: no goals
Theorem: AffineSubspace.inter_nonempty_of_nonempty_of_sup_direction_eq_top
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: by_contra h
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
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : s1.direction ⊔ s2.direction = ⊤
⊢ (↑s1 ∩ ↑s2).Nonempty
state_after: 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
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : s1.direction ⊔ s2.direction = ⊤
h : ¬(↑s1 ∩ ↑s2).Nonempty
⊢ False

tactic: rw [Set.not_nonempty_iff_eq_empty] at h
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
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : s1.direction ⊔ s2.direction = ⊤
h : ¬(↑s1 ∩ ↑s2).Nonempty
⊢ False
state_after: 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
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : s1.direction ⊔ s2.direction = ⊤
h : ↑s1 ∩ ↑s2 = ∅
⊢ False

tactic: have hlt := sup_direction_lt_of_nonempty_of_inter_empty h1 h2 h
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
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : s1.direction ⊔ s2.direction = ⊤
h : ↑s1 ∩ ↑s2 = ∅
⊢ False
state_after: 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
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : s1.direction ⊔ s2.direction = ⊤
h : ↑s1 ∩ ↑s2 = ∅
hlt : s1.direction ⊔ s2.direction < (s1 ⊔ s2).direction
⊢ False

tactic: rw [hd] at hlt
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
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : s1.direction ⊔ s2.direction = ⊤
h : ↑s1 ∩ ↑s2 = ∅
hlt : s1.direction ⊔ s2.direction < (s1 ⊔ s2).direction
⊢ False
state_after: 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
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : s1.direction ⊔ s2.direction = ⊤
h : ↑s1 ∩ ↑s2 = ∅
hlt : ⊤ < (s1 ⊔ s2).direction
⊢ False

tactic: exact not_top_lt hlt
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
p₁ p₂ : P
s1 s2 : AffineSubspace k P
h1 : (↑s1).Nonempty
h2 : (↑s2).Nonempty
hd : s1.direction ⊔ s2.direction = ⊤
h : ↑s1 ∩ ↑s2 = ∅
hlt : ⊤ < (s1 ⊔ s2).direction
⊢ False
state_after: no goals
Theorem: taylorWithinEval_self
File: Mathlib/Analysis/Calculus/Taylor.lean

tactic: induction' n with k hk
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : ℝ → E
n : ℕ
s : Set ℝ
x₀ : ℝ
⊢ taylorWithinEval f n s x₀ x₀ = f x₀
state_after: case zero
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : ℝ → E
s : Set ℝ
x₀ : ℝ
⊢ taylorWithinEval f 0 s x₀ x₀ = f x₀

case succ
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : ℝ → E
s : Set ℝ
x₀ : ℝ
k : ℕ
hk : taylorWithinEval f k s x₀ x₀ = f x₀
⊢ taylorWithinEval f (k + 1) s x₀ x₀ = f x₀

tactic: simp [hk]
state_before: case succ
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : ℝ → E
s : Set ℝ
x₀ : ℝ
k : ℕ
hk : taylorWithinEval f k s x₀ x₀ = f x₀
⊢ taylorWithinEval f (k + 1) s x₀ x₀ = f x₀
state_after: no goals

tactic: exact taylor_within_zero_eval _ _ _ _
state_before: case zero
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : ℝ → E
s : Set ℝ
x₀ : ℝ
⊢ taylorWithinEval f 0 s x₀ x₀ = f x₀
state_after: no goals
Theorem: TensorProduct.ext'
File: Mathlib/LinearAlgebra/TensorProduct/Basic.lean

tactic: simp_rw [LinearMap.map_zero]
state_before: R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type u_2
inst✝¹⁵ : Monoid R'
R'' : Type u_3
inst✝¹⁴ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : AddCommMonoid T
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Module R S
inst✝² : Module R T
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
f : M →ₗ[R] N →ₗ[R] P
g h : M ⊗[R] N →ₗ[R] P
H : ∀ (x : M) (y : N), g (x ⊗ₜ[R] y) = h (x ⊗ₜ[R] y)
z : M ⊗[R] N
⊢ g 0 = h 0
state_after: no goals

tactic: rw [g.map_add, h.map_add, ihx, ihy]
state_before: R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type u_2
inst✝¹⁵ : Monoid R'
R'' : Type u_3
inst✝¹⁴ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : AddCommMonoid T
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Module R S
inst✝² : Module R T
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
f : M →ₗ[R] N →ₗ[R] P
g h : M ⊗[R] N →ₗ[R] P
H : ∀ (x : M) (y : N), g (x ⊗ₜ[R] y) = h (x ⊗ₜ[R] y)
z x y : M ⊗[R] N
ihx : g x = h x
ihy : g y = h y
⊢ g (x + y) = h (x + y)
state_after: no goals
Theorem: NumberField.ComplexEmbedding.IsConj.isReal_comp
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: ext1 x
state_before: K : Type u_1
inst✝² : Field K
k : Type u_2
inst✝¹ : Field k
inst✝ : Algebra k K
φ : K →+* ℂ
σ : K ≃ₐ[k] K
h : IsConj φ σ
⊢ IsReal (φ.comp (algebraMap k K))
state_after: case a
K : Type u_1
inst✝² : Field K
k : Type u_2
inst✝¹ : Field k
inst✝ : Algebra k K
φ : K →+* ℂ
σ : K ≃ₐ[k] K
h : IsConj φ σ
x : k
⊢ (star (φ.comp (algebraMap k K))) x = (φ.comp (algebraMap k K)) x

tactic: simp only [conjugate_coe_eq, RingHom.coe_comp, Function.comp_apply, ← h.eq,
  starRingEnd_apply, AlgEquiv.commutes]
state_before: case a
K : Type u_1
inst✝² : Field K
k : Type u_2
inst✝¹ : Field k
inst✝ : Algebra k K
φ : K →+* ℂ
σ : K ≃ₐ[k] K
h : IsConj φ σ
x : k
⊢ (star (φ.comp (algebraMap k K))) x = (φ.comp (algebraMap k K)) x
state_after: no goals
Theorem: List.map_pure_sublist_sublists
File: Mathlib/Data/List/Sublists.lean

tactic: induction' l using reverseRecOn with l a ih <;> simp only [map, map_append, sublists_concat]
state_before: α : Type u
β : Type v
γ : Type w
l : List α
⊢ map pure l <+ l.sublists
state_after: case nil
α : Type u
β : Type v
γ : Type w
⊢ [] <+ [].sublists

case append_singleton
α : Type u
β : Type v
γ : Type w
l : List α
a : α
ih : map pure l <+ l.sublists
⊢ map pure l ++ [pure a] <+ l.sublists ++ map (fun x => x ++ [a]) l.sublists

tactic: exact ((append_sublist_append_left _).2 <|
            singleton_sublist.2 <| mem_map.2 ⟨[], mem_sublists.2 (nil_sublist _), by rfl⟩).trans
        ((append_sublist_append_right _).2 ih)
state_before: case append_singleton
α : Type u
β : Type v
γ : Type w
l : List α
a : α
ih : map pure l <+ l.sublists
⊢ map pure l ++ [pure a] <+ l.sublists ++ map (fun x => x ++ [a]) l.sublists
state_after: no goals

tactic: simp only [sublists_nil, sublist_cons]
state_before: case nil
α : Type u
β : Type v
γ : Type w
⊢ [] <+ [].sublists
state_after: no goals

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
l : List α
a : α
ih : map pure l <+ l.sublists
⊢ [] ++ [a] = pure a
state_after: no goals
Theorem: Stream'.mem_cons_of_mem
File: Mathlib/Data/Stream/Init.lean

tactic: rw [get_succ, tail_cons, h]
state_before: α : Type u
β : Type v
δ : Type w
a : α
s : Stream' α
b : α
x✝ : a ∈ s
n : ℕ
h : (fun b => a = b) (s.get n)
⊢ (fun b => a = b) ((b :: s).get n.succ)
state_after: no goals
Theorem: Wbtw.trans_left_ne
File: Mathlib/Analysis/Convex/Between.lean

tactic: rintro rfl
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y z : P
h₁ : Wbtw R w y z
h₂ : Wbtw R w x y
h : y ≠ z
⊢ x ≠ z
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y : P
h₂ : Wbtw R w x y
h₁ : Wbtw R w y x
h : y ≠ x
⊢ False

tactic: exact h (h₁.swap_right_iff.1 h₂)
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : OrderedRing R
inst✝⁶ : AddCommGroup V
inst✝⁵ : Module R V
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup V'
inst✝² : Module R V'
inst✝¹ : AddTorsor V' P'
inst✝ : NoZeroSMulDivisors R V
w x y : P
h₂ : Wbtw R w x y
h₁ : Wbtw R w y x
h : y ≠ x
⊢ False
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.pentagon_inv_hom
File: Mathlib/CategoryTheory/Monoidal/CoherenceLemmas.lean

tactic: coherence
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : MonoidalCategory C
W X Y Z : C
⊢ (α_ (W ⊗ X) Y Z).inv ≫ ((α_ W X Y).hom ⊗ 𝟙 Z) = (α_ W X (Y ⊗ Z)).hom ≫ (𝟙 W ⊗ (α_ X Y Z).inv) ≫ (α_ W (X ⊗ Y) Z).inv
state_after: no goals
Theorem: MeasureTheory.Measure.addHaar_ball_mul_of_pos
File: Mathlib/MeasureTheory/Measure/Lebesgue/EqHaar.lean

tactic: have : ball (0 : E) (r * s) = r • ball (0 : E) s := by
  simp only [_root_.smul_ball hr.ne' (0 : E) s, Real.norm_eq_abs, abs_of_nonneg hr.le, smul_zero]
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : μ.IsAddHaarMeasure
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 < r
s : ℝ
⊢ μ (ball x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * μ (ball 0 s)
state_after: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : μ.IsAddHaarMeasure
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 < r
s : ℝ
this : ball 0 (r * s) = r • ball 0 s
⊢ μ (ball x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * μ (ball 0 s)

tactic: simp only [this, addHaar_smul, abs_of_nonneg hr.le, addHaar_ball_center, abs_pow]
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : μ.IsAddHaarMeasure
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 < r
s : ℝ
this : ball 0 (r * s) = r • ball 0 s
⊢ μ (ball x (r * s)) = ENNReal.ofReal (r ^ finrank ℝ E) * μ (ball 0 s)
state_after: no goals

tactic: simp only [_root_.smul_ball hr.ne' (0 : E) s, Real.norm_eq_abs, abs_of_nonneg hr.le, smul_zero]
state_before: E : Type u_1
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedSpace ℝ E
inst✝⁶ : MeasurableSpace E
inst✝⁵ : BorelSpace E
inst✝⁴ : FiniteDimensional ℝ E
μ : Measure E
inst✝³ : μ.IsAddHaarMeasure
F : Type u_2
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace F
s✝ : Set E
x : E
r : ℝ
hr : 0 < r
s : ℝ
⊢ ball 0 (r * s) = r • ball 0 s
state_after: no goals
Theorem: Finset.fiber_card_ne_zero_iff_mem_image
File: Mathlib/Data/Finset/Card.lean

tactic: rw [← Nat.pos_iff_ne_zero, card_pos, fiber_nonempty_iff_mem_image]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α
f✝ : α → β
n : ℕ
s : Finset α
f : α → β
inst✝ : DecidableEq β
y : β
⊢ (filter (fun x => f x = y) s).card ≠ 0 ↔ y ∈ image f s
state_after: no goals
Theorem: Int.even_sub'
File: Mathlib/Algebra/Ring/Int.lean

tactic: rw [even_sub, even_iff_not_odd, even_iff_not_odd, not_iff_not]
state_before: m n : ℤ
⊢ Even (m - n) ↔ (Odd m ↔ Odd n)
state_after: no goals
Theorem: Algebra.FormallySmooth.localization_map
File: Mathlib/RingTheory/Smooth/Basic.lean

tactic: haveI : FormallySmooth S Sₘ := FormallySmooth.of_isLocalization (M.map (algebraMap R S))
state_before: R S Rₘ Sₘ : Type u
inst✝¹³ : CommRing R
inst✝¹² : CommRing S
inst✝¹¹ : CommRing Rₘ
inst✝¹⁰ : CommRing Sₘ
M : Submonoid R
inst✝⁹ : Algebra R S
inst✝⁸ : Algebra R Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra R Rₘ
inst✝⁵ : Algebra Rₘ Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
inst✝ : FormallySmooth R S
⊢ FormallySmooth Rₘ Sₘ
state_after: R S Rₘ Sₘ : Type u
inst✝¹³ : CommRing R
inst✝¹² : CommRing S
inst✝¹¹ : CommRing Rₘ
inst✝¹⁰ : CommRing Sₘ
M : Submonoid R
inst✝⁹ : Algebra R S
inst✝⁸ : Algebra R Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra R Rₘ
inst✝⁵ : Algebra Rₘ Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
inst✝ : FormallySmooth R S
this : FormallySmooth S Sₘ
⊢ FormallySmooth Rₘ Sₘ

tactic: haveI : FormallySmooth R Sₘ := FormallySmooth.comp R S Sₘ
state_before: R S Rₘ Sₘ : Type u
inst✝¹³ : CommRing R
inst✝¹² : CommRing S
inst✝¹¹ : CommRing Rₘ
inst✝¹⁰ : CommRing Sₘ
M : Submonoid R
inst✝⁹ : Algebra R S
inst✝⁸ : Algebra R Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra R Rₘ
inst✝⁵ : Algebra Rₘ Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
inst✝ : FormallySmooth R S
this : FormallySmooth S Sₘ
⊢ FormallySmooth Rₘ Sₘ
state_after: R S Rₘ Sₘ : Type u
inst✝¹³ : CommRing R
inst✝¹² : CommRing S
inst✝¹¹ : CommRing Rₘ
inst✝¹⁰ : CommRing Sₘ
M : Submonoid R
inst✝⁹ : Algebra R S
inst✝⁸ : Algebra R Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra R Rₘ
inst✝⁵ : Algebra Rₘ Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
inst✝ : FormallySmooth R S
this✝ : FormallySmooth S Sₘ
this : FormallySmooth R Sₘ
⊢ FormallySmooth Rₘ Sₘ

tactic: exact FormallySmooth.localization_base M
state_before: R S Rₘ Sₘ : Type u
inst✝¹³ : CommRing R
inst✝¹² : CommRing S
inst✝¹¹ : CommRing Rₘ
inst✝¹⁰ : CommRing Sₘ
M : Submonoid R
inst✝⁹ : Algebra R S
inst✝⁸ : Algebra R Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra R Rₘ
inst✝⁵ : Algebra Rₘ Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization M Rₘ
inst✝¹ : IsLocalization (Submonoid.map (algebraMap R S) M) Sₘ
inst✝ : FormallySmooth R S
this✝ : FormallySmooth S Sₘ
this : FormallySmooth R Sₘ
⊢ FormallySmooth Rₘ Sₘ
state_after: no goals
Theorem: Finset.antidiagonal_congr
File: Mathlib/Algebra/Order/Antidiag/Prod.lean

tactic: refine ⟨congr_arg Prod.fst, fun h ↦ Prod.ext h ((add_right_inj q.fst).mp ?_)⟩
state_before: A : Type u_1
inst✝¹ : AddCancelMonoid A
inst✝ : HasAntidiagonal A
p q : A × A
n : A
hp : p ∈ antidiagonal n
hq : q ∈ antidiagonal n
⊢ p = q ↔ p.1 = q.1
state_after: A : Type u_1
inst✝¹ : AddCancelMonoid A
inst✝ : HasAntidiagonal A
p q : A × A
n : A
hp : p ∈ antidiagonal n
hq : q ∈ antidiagonal n
h : p.1 = q.1
⊢ q.1 + p.2 = q.1 + q.2

tactic: rw [mem_antidiagonal] at hp hq
state_before: A : Type u_1
inst✝¹ : AddCancelMonoid A
inst✝ : HasAntidiagonal A
p q : A × A
n : A
hp : p ∈ antidiagonal n
hq : q ∈ antidiagonal n
h : p.1 = q.1
⊢ q.1 + p.2 = q.1 + q.2
state_after: A : Type u_1
inst✝¹ : AddCancelMonoid A
inst✝ : HasAntidiagonal A
p q : A × A
n : A
hp : p.1 + p.2 = n
hq : q.1 + q.2 = n
h : p.1 = q.1
⊢ q.1 + p.2 = q.1 + q.2

tactic: rw [hq, ← h, hp]
state_before: A : Type u_1
inst✝¹ : AddCancelMonoid A
inst✝ : HasAntidiagonal A
p q : A × A
n : A
hp : p.1 + p.2 = n
hq : q.1 + q.2 = n
h : p.1 = q.1
⊢ q.1 + p.2 = q.1 + q.2
state_after: no goals
Theorem: List.pairwise_lt_range
File: Mathlib/Data/List/Range.lean

tactic: simp (config := {decide := true}) only [range_eq_range', pairwise_lt_range']
state_before: α : Type u
n : ℕ
⊢ Pairwise (fun x x_1 => x < x_1) (range n)
state_after: no goals
Theorem: inv_pow_sub_of_lt
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

tactic: rw [pow_sub_of_lt a⁻¹ h, inv_pow, inv_pow, inv_inv]
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝¹ : MonoidWithZero M₀
inst✝ : GroupWithZero G₀
a✝ b c d : G₀
m n : ℕ
a : G₀
h : n < m
⊢ a⁻¹ ^ (m - n) = (a ^ m)⁻¹ * a ^ n
state_after: no goals
Theorem: Polynomial.degree_eq_one_of_irreducible_of_root
File: Mathlib/Algebra/Polynomial/RingDivision.lean

tactic: have h₁ : degree (X - C x) = 1 := degree_X_sub_C x
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hi : Irreducible p
x : R
hx : p.IsRoot x
g : R[X]
hg : p = (X - C x) * g
this : IsUnit (X - C x) ∨ IsUnit g
h : IsUnit (X - C x)
⊢ p.degree = 1
state_after: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hi : Irreducible p
x : R
hx : p.IsRoot x
g : R[X]
hg : p = (X - C x) * g
this : IsUnit (X - C x) ∨ IsUnit g
h : IsUnit (X - C x)
h₁ : (X - C x).degree = 1
⊢ p.degree = 1

tactic: have h₂ : degree (X - C x) = 0 := degree_eq_zero_of_isUnit h
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hi : Irreducible p
x : R
hx : p.IsRoot x
g : R[X]
hg : p = (X - C x) * g
this : IsUnit (X - C x) ∨ IsUnit g
h : IsUnit (X - C x)
h₁ : (X - C x).degree = 1
⊢ p.degree = 1
state_after: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hi : Irreducible p
x : R
hx : p.IsRoot x
g : R[X]
hg : p = (X - C x) * g
this : IsUnit (X - C x) ∨ IsUnit g
h : IsUnit (X - C x)
h₁ : (X - C x).degree = 1
h₂ : (X - C x).degree = 0
⊢ p.degree = 1

tactic: rw [h₁] at h₂
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hi : Irreducible p
x : R
hx : p.IsRoot x
g : R[X]
hg : p = (X - C x) * g
this : IsUnit (X - C x) ∨ IsUnit g
h : IsUnit (X - C x)
h₁ : (X - C x).degree = 1
h₂ : (X - C x).degree = 0
⊢ p.degree = 1
state_after: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hi : Irreducible p
x : R
hx : p.IsRoot x
g : R[X]
hg : p = (X - C x) * g
this : IsUnit (X - C x) ∨ IsUnit g
h : IsUnit (X - C x)
h₁ : (X - C x).degree = 1
h₂ : 1 = 0
⊢ p.degree = 1

tactic: exact absurd h₂ (by decide)
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hi : Irreducible p
x : R
hx : p.IsRoot x
g : R[X]
hg : p = (X - C x) * g
this : IsUnit (X - C x) ∨ IsUnit g
h : IsUnit (X - C x)
h₁ : (X - C x).degree = 1
h₂ : 1 = 0
⊢ p.degree = 1
state_after: no goals

tactic: decide
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hi : Irreducible p
x : R
hx : p.IsRoot x
g : R[X]
hg : p = (X - C x) * g
this : IsUnit (X - C x) ∨ IsUnit g
h : IsUnit (X - C x)
h₁ : (X - C x).degree = 1
h₂ : 1 = 0
⊢ ¬1 = 0
state_after: no goals

tactic: rw [hg, degree_mul, degree_X_sub_C, degree_eq_zero_of_isUnit hgu, add_zero]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hi : Irreducible p
x : R
hx : p.IsRoot x
g : R[X]
hg : p = (X - C x) * g
this : IsUnit (X - C x) ∨ IsUnit g
hgu : IsUnit g
⊢ p.degree = 1
state_after: no goals
Theorem: Batteries.RBNode.max?_reverse
File: .lake/packages/batteries/Batteries/Data/RBMap/Lemmas.lean

tactic: rw [← min?_reverse, reverse_reverse]
state_before: α : Type u_1
t : RBNode α
⊢ t.reverse.max? = t.min?
state_after: no goals
Theorem: SimpleGraph.Walk.append_reverseAux
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction p with
| nil => rfl
| cons h _ ih => exact ih q (cons (G.symm h) r)
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x : V
p : G.Walk u v
q : G.Walk v w
r : G.Walk u x
⊢ (p.append q).reverseAux r = q.reverseAux (p.reverseAux r)
state_after: no goals

tactic: rfl
state_before: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x u✝ : V
q : G.Walk u✝ w
r : G.Walk u✝ x
⊢ (nil.append q).reverseAux r = q.reverseAux (nil.reverseAux r)
state_after: no goals

tactic: exact ih q (cons (G.symm h) r)
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x u✝ v✝ w✝ : V
h : G.Adj u✝ v✝
p✝ : G.Walk v✝ w✝
ih : ∀ (q : G.Walk w✝ w) (r : G.Walk v✝ x), (p✝.append q).reverseAux r = q.reverseAux (p✝.reverseAux r)
q : G.Walk w✝ w
r : G.Walk u✝ x
⊢ ((cons h p✝).append q).reverseAux r = q.reverseAux ((cons h p✝).reverseAux r)
state_after: no goals
Theorem: Set.right_mem_Ioo
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: simp [lt_irrefl]
state_before: α : Type u_1
β : Type u_2
inst✝ : Preorder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ b ∈ Ioo a b ↔ False
state_after: no goals
Theorem: Finsupp.single_le_iff
File: Mathlib/Data/Finsupp/Order.lean

tactic: simp
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CanonicallyOrderedAddCommMonoid α
f✝ g : ι →₀ α
i : ι
x : α
f : ι →₀ α
⊢ (∀ i_1 ∈ {i}, (single i x) i_1 ≤ f i_1) ↔ x ≤ f i
state_after: no goals
Theorem: Mod_.assoc_flip
File: Mathlib/CategoryTheory/Monoidal/Mod_.lean

tactic: simp
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
A : Mon_ C
M : Mod_ A
⊢ A.X ◁ M.act ≫ M.act = (α_ A.X A.X M.X).inv ≫ A.mul ▷ M.X ≫ M.act
state_after: no goals
Theorem: Filter.map₂_comm
File: Mathlib/Order/Filter/NAry.lean

tactic: simp_rw [h_comm]
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
m : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
n : β → α → γ
h_comm : ∀ (a : α) (b : β), m a b = n b a
⊢ map₂ (fun a b => m b a) g f = map₂ n g f
state_after: no goals