1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: sdiff_triangle
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [sdiff_le_iff, sup_left_comm, ← sdiff_le_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a✝ b✝ c✝ d a b c : α
⊢ a \ c ≤ a \ b ⊔ b \ c
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a✝ b✝ c✝ d a b c : α
⊢ a \ (a \ b) ≤ c ⊔ b \ c

tactic: exact sdiff_sdiff_le.trans le_sup_sdiff
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a✝ b✝ c✝ d a b c : α
⊢ a \ (a \ b) ≤ c ⊔ b \ c
state_after: no goals
Theorem: padicValRat.of_int
File: Mathlib/NumberTheory/Padics/PadicVal.lean

tactic: simp [padicValRat]
state_before: p : ℕ
z : ℤ
⊢ padicValRat p ↑z = ↑(padicValInt p z)
state_after: no goals
Theorem: DirectedOn.disjoint_sSup_left
File: Mathlib/Order/CompactlyGenerated/Basic.lean

tactic: simp_rw [disjoint_iff, h.sSup_inf_eq, iSup_eq_bot]
state_before: ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s : Set α
h : DirectedOn (fun x x_1 => x ≤ x_1) s
⊢ Disjoint (sSup s) a ↔ ∀ ⦃b : α⦄, b ∈ s → Disjoint b a
state_after: no goals
Theorem: MvPolynomial.degreeOf_X
File: Mathlib/Algebra/MvPolynomial/Degrees.lean

tactic: by_cases c : i = j
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : DecidableEq σ
i j : σ
inst✝ : Nontrivial R
⊢ degreeOf i (X j) = if i = j then 1 else 0
state_after: case pos
R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : DecidableEq σ
i j : σ
inst✝ : Nontrivial R
c : i = j
⊢ degreeOf i (X j) = if i = j then 1 else 0

case neg
R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : DecidableEq σ
i j : σ
inst✝ : Nontrivial R
c : ¬i = j
⊢ degreeOf i (X j) = if i = j then 1 else 0

tactic: simp [c, if_false, degreeOf_def, degrees_X]
state_before: case neg
R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : DecidableEq σ
i j : σ
inst✝ : Nontrivial R
c : ¬i = j
⊢ degreeOf i (X j) = if i = j then 1 else 0
state_after: no goals

tactic: simp only [c, if_true, eq_self_iff_true, degreeOf_def, degrees_X, Multiset.count_singleton]
state_before: case pos
R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝² : CommSemiring R
p q : MvPolynomial σ R
inst✝¹ : DecidableEq σ
i j : σ
inst✝ : Nontrivial R
c : i = j
⊢ degreeOf i (X j) = if i = j then 1 else 0
state_after: no goals
Theorem: ModularGroup.eq_zero_of_mem_fdo_of_T_zpow_mem_fdo
File: Mathlib/NumberTheory/Modular.lean

tactic: suffices |(n : ℝ)| < 1 by
  rwa [← Int.cast_abs, ← Int.cast_one, Int.cast_lt, Int.abs_lt_one_iff] at this
state_before: g : SL(2, ℤ)
z : ℍ
n : ℤ
hz : z ∈ 𝒟ᵒ
hg : T ^ n • z ∈ 𝒟ᵒ
⊢ n = 0
state_after: g : SL(2, ℤ)
z : ℍ
n : ℤ
hz : z ∈ 𝒟ᵒ
hg : T ^ n • z ∈ 𝒟ᵒ
⊢ |↑n| < 1

tactic: have h₁ := hz.2
state_before: g : SL(2, ℤ)
z : ℍ
n : ℤ
hz : z ∈ 𝒟ᵒ
hg : T ^ n • z ∈ 𝒟ᵒ
⊢ |↑n| < 1
state_after: g : SL(2, ℤ)
z : ℍ
n : ℤ
hz : z ∈ 𝒟ᵒ
hg : T ^ n • z ∈ 𝒟ᵒ
h₁ : |z.re| < 1 / 2
⊢ |↑n| < 1

tactic: have h₂ := hg.2
state_before: g : SL(2, ℤ)
z : ℍ
n : ℤ
hz : z ∈ 𝒟ᵒ
hg : T ^ n • z ∈ 𝒟ᵒ
h₁ : |z.re| < 1 / 2
⊢ |↑n| < 1
state_after: g : SL(2, ℤ)
z : ℍ
n : ℤ
hz : z ∈ 𝒟ᵒ
hg : T ^ n • z ∈ 𝒟ᵒ
h₁ : |z.re| < 1 / 2
h₂ : |(T ^ n • z).re| < 1 / 2
⊢ |↑n| < 1

tactic: rw [re_T_zpow_smul] at h₂
state_before: g : SL(2, ℤ)
z : ℍ
n : ℤ
hz : z ∈ 𝒟ᵒ
hg : T ^ n • z ∈ 𝒟ᵒ
h₁ : |z.re| < 1 / 2
h₂ : |(T ^ n • z).re| < 1 / 2
⊢ |↑n| < 1
state_after: g : SL(2, ℤ)
z : ℍ
n : ℤ
hz : z ∈ 𝒟ᵒ
hg : T ^ n • z ∈ 𝒟ᵒ
h₁ : |z.re| < 1 / 2
h₂ : |z.re + ↑n| < 1 / 2
⊢ |↑n| < 1

tactic: calc
  |(n : ℝ)| ≤ |z.re| + |z.re + (n : ℝ)| := abs_add' (n : ℝ) z.re
  _ < 1 / 2 + 1 / 2 := add_lt_add h₁ h₂
  _ = 1 := add_halves 1
state_before: g : SL(2, ℤ)
z : ℍ
n : ℤ
hz : z ∈ 𝒟ᵒ
hg : T ^ n • z ∈ 𝒟ᵒ
h₁ : |z.re| < 1 / 2
h₂ : |z.re + ↑n| < 1 / 2
⊢ |↑n| < 1
state_after: no goals

tactic: rwa [← Int.cast_abs, ← Int.cast_one, Int.cast_lt, Int.abs_lt_one_iff] at this
state_before: g : SL(2, ℤ)
z : ℍ
n : ℤ
hz : z ∈ 𝒟ᵒ
hg : T ^ n • z ∈ 𝒟ᵒ
this : |↑n| < 1
⊢ n = 0
state_after: no goals
Theorem: intervalIntegral.integral_neg
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simp only [intervalIntegral, integral_neg]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b : ℝ
f g : ℝ → E
μ : Measure ℝ
⊢ ∫ (x : ℝ) in a..b, -f x ∂μ = -∫ (x : ℝ) in a..b, f x ∂μ
state_after: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b : ℝ
f g : ℝ → E
μ : Measure ℝ
⊢ -∫ (a : ℝ) in Ioc a b, f a ∂μ - -∫ (a : ℝ) in Ioc b a, f a ∂μ =
    -(∫ (x : ℝ) in Ioc a b, f x ∂μ - ∫ (x : ℝ) in Ioc b a, f x ∂μ)

tactic: abel
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b : ℝ
f g : ℝ → E
μ : Measure ℝ
⊢ -∫ (a : ℝ) in Ioc a b, f a ∂μ - -∫ (a : ℝ) in Ioc b a, f a ∂μ =
    -(∫ (x : ℝ) in Ioc a b, f x ∂μ - ∫ (x : ℝ) in Ioc b a, f x ∂μ)
state_after: no goals
Theorem: WeierstrassCurve.Affine.slope_of_X_ne
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

tactic: rw [slope, if_neg hx]
state_before: R : Type u
inst✝¹ : CommRing R
W✝ : Affine R
F : Type u
inst✝ : Field F
W : Affine F
x₁ x₂ y₁ y₂ : F
hx : x₁ ≠ x₂
⊢ W.slope x₁ x₂ y₁ y₂ = (y₁ - y₂) / (x₁ - x₂)
state_after: no goals
Theorem: RingHom.map_ite_zero_one
File: Mathlib/Algebra/Ring/Hom/Defs.lean

tactic: split_ifs with h <;> simp [h]
state_before: F✝ : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
x✝¹ : NonAssocSemiring α
x✝ : NonAssocSemiring β
f✝ : α →+* β
x y : α
F : Type u_5
inst✝² : FunLike F α β
inst✝¹ : RingHomClass F α β
f : F
p : Prop
inst✝ : Decidable p
⊢ f (if p then 0 else 1) = if p then 0 else 1
state_after: no goals
Theorem: Mathlib.Meta.NormNum.jacobiSymNat.qr₁'
File: Mathlib/Tactic/NormNum/LegendreSymbol.lean

tactic: rwa [jacobiSymNat, ← jacobiSym.quadratic_reciprocity_one_mod_four hb (Nat.odd_iff.mpr ha)]
state_before: a b : ℕ
r : ℤ
ha : a % 2 = 1
hb : b % 4 = 1
hr : jacobiSymNat b a = r
⊢ jacobiSymNat a b = r
state_after: no goals
Theorem: Nat.shiftLeft_sub
File: Mathlib/Data/Nat/Bits.lean

tactic: simp only [← shiftLeft'_false, shiftLeft'_sub false _ hk]
state_before: m n x✝² x✝¹ x✝ : ℕ
hk : x✝ ≤ x✝¹
⊢ x✝² <<< (x✝¹ - x✝) = x✝² <<< x✝¹ >>> x✝
state_after: no goals
Theorem: ProbabilityTheory.kernel.bind_add
File: Mathlib/Probability/Kernel/Invariance.lean

tactic: ext1 s hs
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
μ ν : Measure α
κ : ↥(kernel α β)
⊢ (μ + ν).bind ⇑κ = μ.bind ⇑κ + ν.bind ⇑κ
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
μ ν : Measure α
κ : ↥(kernel α β)
s : Set β
hs : MeasurableSet s
⊢ ((μ + ν).bind ⇑κ) s = (μ.bind ⇑κ + ν.bind ⇑κ) s

tactic: rw [Measure.bind_apply hs (kernel.measurable _), lintegral_add_measure, Measure.coe_add,
  Pi.add_apply, Measure.bind_apply hs (kernel.measurable _),
  Measure.bind_apply hs (kernel.measurable _)]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
μ ν : Measure α
κ : ↥(kernel α β)
s : Set β
hs : MeasurableSet s
⊢ ((μ + ν).bind ⇑κ) s = (μ.bind ⇑κ + ν.bind ⇑κ) s
state_after: no goals
Theorem: Nat.choose_zero_right
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: cases n <;> rfl
state_before: n : ℕ
⊢ n.choose 0 = 1
state_after: no goals
Theorem: AffineSubspace.not_sOppSide_self
File: Mathlib/Analysis/Convex/Side.lean

tactic: rw [SOppSide]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x : P
⊢ ¬s.SOppSide x x
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x : P
⊢ ¬(s.WOppSide x x ∧ x ∉ s ∧ x ∉ s)

tactic: simp
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x : P
⊢ ¬(s.WOppSide x x ∧ x ∉ s ∧ x ∉ s)
state_after: no goals
Theorem: Ordinal.blsub_eq_blsub
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [blsub_eq_lsub', blsub_eq_lsub']
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
r r' : ι → ι → Prop
inst✝¹ : IsWellOrder ι r
inst✝ : IsWellOrder ι r'
f : ι → Ordinal.{max u v}
⊢ (type r).blsub (bfamilyOfFamily' r f) = (type r').blsub (bfamilyOfFamily' r' f)
state_after: no goals
Theorem: Finite.induction_empty_option
File: Mathlib/Data/Fintype/Option.lean

tactic: cases nonempty_fintype α
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
⊢ P α
state_after: case intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ P α

tactic: refine Fintype.induction_empty_option ?_ ?_ ?_ α
state_before: case intro
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ P α
state_after: case intro.refine_1
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ ∀ (α β : Type u) [inst : Fintype β], α ≃ β → P α → P β

case intro.refine_2
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ P PEmpty.{u + 1}

case intro.refine_3
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ ∀ (α : Type u) [inst : Fintype α], P α → P (Option α)

tactic: exacts [fun α β _ => of_equiv, h_empty, @h_option]
state_before: case intro.refine_1
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ ∀ (α β : Type u) [inst : Fintype β], α ≃ β → P α → P β

case intro.refine_2
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ P PEmpty.{u + 1}

case intro.refine_3
α✝ : Type u_1
β : Type u_2
γ : Type u_3
P : Type u → Prop
of_equiv : ∀ {α β : Type u}, α ≃ β → P α → P β
h_empty : P PEmpty.{u + 1}
h_option : ∀ {α : Type u} [inst : Fintype α], P α → P (Option α)
α : Type u
inst✝ : Finite α
val✝ : Fintype α
⊢ ∀ (α : Type u) [inst : Fintype α], P α → P (Option α)
state_after: no goals
Theorem: Matrix.mul_invOf_mul_self_cancel
File: Mathlib/Data/Matrix/Invertible.lean

tactic: rw [Matrix.mul_assoc, invOf_mul_self, Matrix.mul_one]
state_before: m : Type u_1
n : Type u_2
α : Type u_3
inst✝³ : Fintype n
inst✝² : DecidableEq n
inst✝¹ : Semiring α
A : Matrix m n α
B : Matrix n n α
inst✝ : Invertible B
⊢ A * ⅟B * B = A
state_after: no goals
Theorem: TensorProduct.directSum_lof_tmul_lof
File: Mathlib/LinearAlgebra/DirectSum/TensorProduct.lean

tactic: simp [TensorProduct.directSum]
state_before: R : Type u
inst✝¹⁴ : CommSemiring R
S : Type u_1
inst✝¹³ : Semiring S
inst✝¹² : Algebra R S
ι₁ : Type v₁
ι₂ : Type v₂
inst✝¹¹ : DecidableEq ι₁
inst✝¹⁰ : DecidableEq ι₂
M₁ : ι₁ → Type w₁
M₁' : Type w₁'
M₂ : ι₂ → Type w₂
M₂' : Type w₂'
inst✝⁹ : (i₁ : ι₁) → AddCommMonoid (M₁ i₁)
inst✝⁸ : AddCommMonoid M₁'
inst✝⁷ : (i₂ : ι₂) → AddCommMonoid (M₂ i₂)
inst✝⁶ : AddCommMonoid M₂'
inst✝⁵ : (i₁ : ι₁) → Module R (M₁ i₁)
inst✝⁴ : Module R M₁'
inst✝³ : (i₂ : ι₂) → Module R (M₂ i₂)
inst✝² : Module R M₂'
inst✝¹ : (i₁ : ι₁) → Module S (M₁ i₁)
inst✝ : ∀ (i₁ : ι₁), IsScalarTower R S (M₁ i₁)
i₁ : ι₁
m₁ : M₁ i₁
i₂ : ι₂
m₂ : M₂ i₂
⊢ (TensorProduct.directSum R S M₁ M₂) ((lof S ι₁ M₁ i₁) m₁ ⊗ₜ[R] (lof R ι₂ M₂ i₂) m₂) =
    (lof S (ι₁ × ι₂) (fun i => M₁ i.1 ⊗[R] M₂ i.2) (i₁, i₂)) (m₁ ⊗ₜ[R] m₂)
state_after: no goals
Theorem: Finite.injective_iff_surjective_of_equiv
File: Mathlib/Data/Fintype/Card.lean

tactic: simpa [Function.comp] using e.surjective.comp (this.1 (e.symm.injective.comp hinj))
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → β
e : α ≃ β
this : Injective (⇑e.symm ∘ f) ↔ Surjective (⇑e.symm ∘ f)
hinj : Injective f
⊢ Surjective f
state_after: no goals

tactic: simpa [Function.comp] using e.injective.comp (this.2 (e.symm.surjective.comp hsurj))
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Finite α
f : α → β
e : α ≃ β
this : Injective (⇑e.symm ∘ f) ↔ Surjective (⇑e.symm ∘ f)
hsurj : Surjective f
⊢ Injective f
state_after: no goals
Theorem: nhds_basis_opens'
File: Mathlib/Topology/Basic.lean

tactic: convert nhds_basis_opens x using 2
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x✝ : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
x : X
⊢ (𝓝 x).HasBasis (fun s => s ∈ 𝓝 x ∧ IsOpen s) fun x => x
state_after: case h.e'_4.h.a
X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x✝¹ : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
x : X
x✝ : Set X
⊢ x✝ ∈ 𝓝 x ∧ IsOpen x✝ ↔ x ∈ x✝ ∧ IsOpen x✝

tactic: exact and_congr_left_iff.2 IsOpen.mem_nhds_iff
state_before: case h.e'_4.h.a
X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x✝¹ : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
x : X
x✝ : Set X
⊢ x✝ ∈ 𝓝 x ∧ IsOpen x✝ ↔ x ∈ x✝ ∧ IsOpen x✝
state_after: no goals
Theorem: FirstOrder.Language.BoundedFormula.relabel_ex
File: Mathlib/ModelTheory/Syntax.lean

tactic: simp [BoundedFormula.ex]
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n : ℕ
g : α → β ⊕ Fin n
k : ℕ
φ : L.BoundedFormula α (k + 1)
⊢ relabel g φ.ex = (relabel g φ).ex
state_after: no goals
Theorem: BoundedContinuousFunction.norm_le_of_nonempty
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: simp_rw [norm_def, ← dist_zero_right]
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝ : Nonempty α
f : α →ᵇ β
M : ℝ
⊢ ‖f‖ ≤ M ↔ ∀ (x : α), ‖f x‖ ≤ M
state_after: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝ : Nonempty α
f : α →ᵇ β
M : ℝ
⊢ dist f 0 ≤ M ↔ ∀ (x : α), dist (f x) 0 ≤ M

tactic: exact dist_le_iff_of_nonempty
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
inst✝ : Nonempty α
f : α →ᵇ β
M : ℝ
⊢ dist f 0 ≤ M ↔ ∀ (x : α), dist (f x) 0 ≤ M
state_after: no goals
Theorem: MvPolynomial.mem_support_iff
File: Mathlib/Algebra/MvPolynomial/Basic.lean

tactic: simp [support, coeff]
state_before: R : Type u
S₁ : Type v
S₂ : Type w
S₃ : Type x
σ : Type u_1
a a' a₁ a₂ : R
e : ℕ
n m✝ : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S₁
p✝ q p : MvPolynomial σ R
m : σ →₀ ℕ
⊢ m ∈ p.support ↔ coeff m p ≠ 0
state_after: no goals
Theorem: IntermediateField.bot_eq_top_of_finrank_adjoin_le_one
File: Mathlib/FieldTheory/Adjoin.lean

tactic: apply bot_eq_top_of_finrank_adjoin_eq_one
state_before: F : Type u_1
inst✝³ : Field F
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
α : E
S : Set E
K L : IntermediateField F E
inst✝ : FiniteDimensional F E
h : ∀ (x : E), finrank F ↥F⟮x⟯ ≤ 1
⊢ ⊥ = ⊤
state_after: case h
F : Type u_1
inst✝³ : Field F
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
α : E
S : Set E
K L : IntermediateField F E
inst✝ : FiniteDimensional F E
h : ∀ (x : E), finrank F ↥F⟮x⟯ ≤ 1
⊢ ∀ (x : E), finrank F ↥F⟮x⟯ = 1

tactic: exact fun x => by linarith [h x, show 0 < finrank F F⟮x⟯ from finrank_pos]
state_before: case h
F : Type u_1
inst✝³ : Field F
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
α : E
S : Set E
K L : IntermediateField F E
inst✝ : FiniteDimensional F E
h : ∀ (x : E), finrank F ↥F⟮x⟯ ≤ 1
⊢ ∀ (x : E), finrank F ↥F⟮x⟯ = 1
state_after: no goals

tactic: linarith [h x, show 0 < finrank F F⟮x⟯ from finrank_pos]
state_before: F : Type u_1
inst✝³ : Field F
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
α : E
S : Set E
K L : IntermediateField F E
inst✝ : FiniteDimensional F E
h : ∀ (x : E), finrank F ↥F⟮x⟯ ≤ 1
x : E
⊢ finrank F ↥F⟮x⟯ = 1
state_after: no goals
Theorem: Polynomial.expand_expand
File: Mathlib/Algebra/Polynomial/Expand.lean

tactic: simp_rw [expand_C]
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p q : ℕ
f : R[X]
r : R
⊢ (expand R p) ((expand R q) (C r)) = (expand R (p * q)) (C r)
state_after: no goals

tactic: simp_rw [AlgHom.map_add, ihf, ihg]
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p q : ℕ
f✝ f g : R[X]
ihf : (expand R p) ((expand R q) f) = (expand R (p * q)) f
ihg : (expand R p) ((expand R q) g) = (expand R (p * q)) g
⊢ (expand R p) ((expand R q) (f + g)) = (expand R (p * q)) (f + g)
state_after: no goals

tactic: simp_rw [AlgHom.map_mul, expand_C, AlgHom.map_pow, expand_X, AlgHom.map_pow, expand_X, pow_mul]
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p q : ℕ
f : R[X]
n : ℕ
r : R
x✝ : (expand R p) ((expand R q) (C r * X ^ n)) = (expand R (p * q)) (C r * X ^ n)
⊢ (expand R p) ((expand R q) (C r * X ^ (n + 1))) = (expand R (p * q)) (C r * X ^ (n + 1))
state_after: no goals
Theorem: Lists'.mem_of_subset'
File: Mathlib/SetTheory/Lists.lean

tactic: cases h
state_before: α : Type u_1
a : Lists α
x✝ : Lists' α true
h : a ∈ nil.toList
⊢ a ∈ x✝
state_after: no goals

tactic: cases' s with _ _ _ _ _ e m s
state_before: α : Type u_1
a : Lists α
b✝ : Bool
a0 : Lists' α b✝
l0 l₂ : Lists' α true
s : a0.cons' l0 ⊆ l₂
h : a ∈ (a0.cons' l0).toList
⊢ a ∈ l₂
state_after: case cons
α : Type u_1
a : Lists α
l0 l₂ : Lists' α true
a✝ a'✝ : Lists α
e : a✝ ~ a'✝
h : a ∈ (a✝.snd.cons' l0).toList
m : a'✝ ∈ l₂.toList
s : l0.Subset l₂
⊢ a ∈ l₂

tactic: simp only [toList, Sigma.eta, List.find?, List.mem_cons] at h
state_before: case cons
α : Type u_1
a : Lists α
l0 l₂ : Lists' α true
a✝ a'✝ : Lists α
e : a✝ ~ a'✝
h : a ∈ (a✝.snd.cons' l0).toList
m : a'✝ ∈ l₂.toList
s : l0.Subset l₂
⊢ a ∈ l₂
state_after: case cons
α : Type u_1
a : Lists α
l0 l₂ : Lists' α true
a✝ a'✝ : Lists α
e : a✝ ~ a'✝
m : a'✝ ∈ l₂.toList
s : l0.Subset l₂
h : a = a✝ ∨ a ∈ l0.toList
⊢ a ∈ l₂

tactic: rcases h with (rfl | h)
state_before: case cons
α : Type u_1
a : Lists α
l0 l₂ : Lists' α true
a✝ a'✝ : Lists α
e : a✝ ~ a'✝
m : a'✝ ∈ l₂.toList
s : l0.Subset l₂
h : a = a✝ ∨ a ∈ l0.toList
⊢ a ∈ l₂
state_after: case cons.inl
α : Type u_1
a : Lists α
l0 l₂ : Lists' α true
a'✝ : Lists α
m : a'✝ ∈ l₂.toList
s : l0.Subset l₂
e : a ~ a'✝
⊢ a ∈ l₂

case cons.inr
α : Type u_1
a : Lists α
l0 l₂ : Lists' α true
a✝ a'✝ : Lists α
e : a✝ ~ a'✝
m : a'✝ ∈ l₂.toList
s : l0.Subset l₂
h : a ∈ l0.toList
⊢ a ∈ l₂

tactic: exact ⟨_, m, e⟩
state_before: case cons.inl
α : Type u_1
a : Lists α
l0 l₂ : Lists' α true
a'✝ : Lists α
m : a'✝ ∈ l₂.toList
s : l0.Subset l₂
e : a ~ a'✝
⊢ a ∈ l₂
state_after: no goals

tactic: exact mem_of_subset' s h
state_before: case cons.inr
α : Type u_1
a : Lists α
l0 l₂ : Lists' α true
a✝ a'✝ : Lists α
e : a✝ ~ a'✝
m : a'✝ ∈ l₂.toList
s : l0.Subset l₂
h : a ∈ l0.toList
⊢ a ∈ l₂
state_after: no goals
Theorem: CofiniteTopology.mem_nhds_iff
File: Mathlib/Topology/Constructions.lean

tactic: simp [nhds_eq]
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
x : CofiniteTopology X
s : Set (CofiniteTopology X)
⊢ s ∈ 𝓝 x ↔ x ∈ s ∧ sᶜ.Finite
state_after: no goals
Theorem: CategoryTheory.GradedObject.hasMap_of_iso
File: Mathlib/CategoryTheory/GradedObject.lean

tactic: have α : Discrete.functor (X.mapObjFun p j) ≅ Discrete.functor (Y.mapObjFun p j) :=
  Discrete.natIso (fun ⟨i, _⟩ => (GradedObject.eval i).mapIso e)
state_before: I : Type u_1
J : Type u_2
K : Type u_3
C : Type u_4
inst✝¹ : Category.{u_5, u_4} C
X Y Z : GradedObject I C
φ : X ⟶ Y
e : X ≅ Y
ψ : Y ⟶ Z
p : I → J
j✝ : J
inst✝ : X.HasMap p
j : J
⊢ HasCoproduct (Y.mapObjFun p j)
state_after: I : Type u_1
J : Type u_2
K : Type u_3
C : Type u_4
inst✝¹ : Category.{u_5, u_4} C
X Y Z : GradedObject I C
φ : X ⟶ Y
e : X ≅ Y
ψ : Y ⟶ Z
p : I → J
j✝ : J
inst✝ : X.HasMap p
j : J
α : Discrete.functor (X.mapObjFun p j) ≅ Discrete.functor (Y.mapObjFun p j)
⊢ HasCoproduct (Y.mapObjFun p j)

tactic: exact hasColimitOfIso α.symm
state_before: I : Type u_1
J : Type u_2
K : Type u_3
C : Type u_4
inst✝¹ : Category.{u_5, u_4} C
X Y Z : GradedObject I C
φ : X ⟶ Y
e : X ≅ Y
ψ : Y ⟶ Z
p : I → J
j✝ : J
inst✝ : X.HasMap p
j : J
α : Discrete.functor (X.mapObjFun p j) ≅ Discrete.functor (Y.mapObjFun p j)
⊢ HasCoproduct (Y.mapObjFun p j)
state_after: no goals
Theorem: List.Ico.eq_cons
File: Mathlib/Data/List/Intervals.lean

tactic: rw [← append_consecutive (Nat.le_succ n) h, succ_singleton]
state_before: n m : ℕ
h : n < m
⊢ Ico n m = n :: Ico (n + 1) m
state_after: n m : ℕ
h : n < m
⊢ [n] ++ Ico n.succ m = n :: Ico (n + 1) m

tactic: rfl
state_before: n m : ℕ
h : n < m
⊢ [n] ++ Ico n.succ m = n :: Ico (n + 1) m
state_after: no goals
Theorem: Nat.one_mem_properDivisors_iff_one_lt
File: Mathlib/NumberTheory/Divisors.lean

tactic: rw [mem_properDivisors, and_iff_right (one_dvd _)]
state_before: n : ℕ
⊢ 1 ∈ n.properDivisors ↔ 1 < n
state_after: no goals