1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Int.sign_add_eq_of_sign_eq
File: Mathlib/Data/Int/Defs.lean

tactic: have : (1 : ℤ) ≠ -1 := by decide
state_before: a b c d m n : ℤ
⊢ ∀ {m n : ℤ}, m.sign = n.sign → (m + n).sign = n.sign
state_after: a b c d m n : ℤ
this : 1 ≠ -1
⊢ ∀ {m n : ℤ}, m.sign = n.sign → (m + n).sign = n.sign

tactic: rintro ((_ | m) | m) ((_ | n) | n) <;> simp [this, this.symm, Int.negSucc_add_negSucc]
state_before: a b c d m n : ℤ
this : 1 ≠ -1
⊢ ∀ {m n : ℤ}, m.sign = n.sign → (m + n).sign = n.sign
state_after: case ofNat.succ.ofNat.succ
a b c d m✝ n✝ : ℤ
this : 1 ≠ -1
m n : ℕ
⊢ (↑m + 1 + (↑n + 1)).sign = 1

tactic: rw [Int.sign_eq_one_iff_pos]
state_before: case ofNat.succ.ofNat.succ
a b c d m✝ n✝ : ℤ
this : 1 ≠ -1
m n : ℕ
⊢ (↑m + 1 + (↑n + 1)).sign = 1
state_after: case ofNat.succ.ofNat.succ
a b c d m✝ n✝ : ℤ
this : 1 ≠ -1
m n : ℕ
⊢ 0 < ↑m + 1 + (↑n + 1)

tactic: apply Int.add_pos <;> omega
state_before: case ofNat.succ.ofNat.succ
a b c d m✝ n✝ : ℤ
this : 1 ≠ -1
m n : ℕ
⊢ 0 < ↑m + 1 + (↑n + 1)
state_after: no goals

tactic: decide
state_before: a b c d m n : ℤ
⊢ 1 ≠ -1
state_after: no goals
Theorem: HasDerivAt.comp_ofReal
File: Mathlib/Analysis/Complex/RealDeriv.lean

tactic: simpa only [ofRealCLM_apply, ofReal_one, mul_one] using hf.comp z ofRealCLM.hasDerivAt
state_before: e : ℂ → ℂ
e' : ℂ
z : ℝ
E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
hf : HasDerivAt e e' ↑z
⊢ HasDerivAt (fun y => e ↑y) e' z
state_after: no goals
Theorem: LocallyBoundedVariationOn.ae_differentiableWithinAt_of_mem_real
File: Mathlib/Analysis/BoundedVariation.lean

tactic: obtain ⟨p, q, hp, hq, rfl⟩ : ∃ p q, MonotoneOn p s ∧ MonotoneOn q s ∧ f = p - q :=
  h.exists_monotoneOn_sub_monotoneOn
state_before: α : Type u_1
inst✝⁴ : LinearOrder α
E : Type u_2
inst✝³ : PseudoEMetricSpace E
V : Type u_3
inst✝² : NormedAddCommGroup V
inst✝¹ : NormedSpace ℝ V
inst✝ : FiniteDimensional ℝ V
f : ℝ → ℝ
s : Set ℝ
h : LocallyBoundedVariationOn f s
⊢ ∀ᵐ (x : ℝ), x ∈ s → DifferentiableWithinAt ℝ f s x
state_after: case intro.intro.intro.intro
α : Type u_1
inst✝⁴ : LinearOrder α
E : Type u_2
inst✝³ : PseudoEMetricSpace E
V : Type u_3
inst✝² : NormedAddCommGroup V
inst✝¹ : NormedSpace ℝ V
inst✝ : FiniteDimensional ℝ V
s : Set ℝ
p q : ℝ → ℝ
hp : MonotoneOn p s
hq : MonotoneOn q s
h : LocallyBoundedVariationOn (p - q) s
⊢ ∀ᵐ (x : ℝ), x ∈ s → DifferentiableWithinAt ℝ (p - q) s x

tactic: filter_upwards [hp.ae_differentiableWithinAt_of_mem, hq.ae_differentiableWithinAt_of_mem] with
  x hxp hxq xs
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝⁴ : LinearOrder α
E : Type u_2
inst✝³ : PseudoEMetricSpace E
V : Type u_3
inst✝² : NormedAddCommGroup V
inst✝¹ : NormedSpace ℝ V
inst✝ : FiniteDimensional ℝ V
s : Set ℝ
p q : ℝ → ℝ
hp : MonotoneOn p s
hq : MonotoneOn q s
h : LocallyBoundedVariationOn (p - q) s
⊢ ∀ᵐ (x : ℝ), x ∈ s → DifferentiableWithinAt ℝ (p - q) s x
state_after: case h
α : Type u_1
inst✝⁴ : LinearOrder α
E : Type u_2
inst✝³ : PseudoEMetricSpace E
V : Type u_3
inst✝² : NormedAddCommGroup V
inst✝¹ : NormedSpace ℝ V
inst✝ : FiniteDimensional ℝ V
s : Set ℝ
p q : ℝ → ℝ
hp : MonotoneOn p s
hq : MonotoneOn q s
h : LocallyBoundedVariationOn (p - q) s
x : ℝ
hxp : x ∈ s → DifferentiableWithinAt ℝ p s x
hxq : x ∈ s → DifferentiableWithinAt ℝ q s x
xs : x ∈ s
⊢ DifferentiableWithinAt ℝ (p - q) s x

tactic: exact (hxp xs).sub (hxq xs)
state_before: case h
α : Type u_1
inst✝⁴ : LinearOrder α
E : Type u_2
inst✝³ : PseudoEMetricSpace E
V : Type u_3
inst✝² : NormedAddCommGroup V
inst✝¹ : NormedSpace ℝ V
inst✝ : FiniteDimensional ℝ V
s : Set ℝ
p q : ℝ → ℝ
hp : MonotoneOn p s
hq : MonotoneOn q s
h : LocallyBoundedVariationOn (p - q) s
x : ℝ
hxp : x ∈ s → DifferentiableWithinAt ℝ p s x
hxq : x ∈ s → DifferentiableWithinAt ℝ q s x
xs : x ∈ s
⊢ DifferentiableWithinAt ℝ (p - q) s x
state_after: no goals
Theorem: RelEmbedding.maximals_preimage_eq
File: Mathlib/Order/Minimal.lean

tactic: convert (f.inter_preimage_maximals_eq univ y).symm
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a b : α
inst✝ : PartialOrder α
f✝ : α → β
r : α → α → Prop
s : β → β → Prop
f : r ↪r s
y : Set β
⊢ maximals r (⇑f ⁻¹' y) = ⇑f ⁻¹' maximals s (y ∩ range ⇑f)
state_after: case h.e'_2.h.e'_3
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a b : α
inst✝ : PartialOrder α
f✝ : α → β
r : α → α → Prop
s : β → β → Prop
f : r ↪r s
y : Set β
⊢ ⇑f ⁻¹' y = univ ∩ ⇑f ⁻¹' y

case h.e'_3
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a b : α
inst✝ : PartialOrder α
f✝ : α → β
r : α → α → Prop
s : β → β → Prop
f : r ↪r s
y : Set β
⊢ ⇑f ⁻¹' maximals s (y ∩ range ⇑f) = univ ∩ ⇑f ⁻¹' maximals s (⇑f '' univ ∩ y)

tactic: simp [univ_inter]
state_before: case h.e'_2.h.e'_3
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a b : α
inst✝ : PartialOrder α
f✝ : α → β
r : α → α → Prop
s : β → β → Prop
f : r ↪r s
y : Set β
⊢ ⇑f ⁻¹' y = univ ∩ ⇑f ⁻¹' y
state_after: no goals

tactic: simp [inter_comm]
state_before: case h.e'_3
α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a b : α
inst✝ : PartialOrder α
f✝ : α → β
r : α → α → Prop
s : β → β → Prop
f : r ↪r s
y : Set β
⊢ ⇑f ⁻¹' maximals s (y ∩ range ⇑f) = univ ∩ ⇑f ⁻¹' maximals s (⇑f '' univ ∩ y)
state_after: no goals
Theorem: Set.prod_eq_univ
File: Mathlib/Data/Set/Prod.lean

tactic: simp [eq_univ_iff_forall, forall_and]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
inst✝¹ : Nonempty α
inst✝ : Nonempty β
⊢ s ×ˢ t = univ ↔ s = univ ∧ t = univ
state_after: no goals
Theorem: ContinuousMap.exists_mul_le_one_eqOn_ge
File: Mathlib/Topology/ContinuousFunction/Ideals.lean

tactic: simpa only [coe_const, ge_iff_le, mul_apply, coe_mk, Pi.inv_apply, Pi.sup_apply,
  Function.const_apply, sup_eq_left.mpr (Set.mem_setOf.mp hx), ne_eq, Pi.one_apply]
  using inv_mul_cancel (hc.trans_le hx).ne'
state_before: X : Type u_1
𝕜 : Type u_2
inst✝¹ : RCLike 𝕜
inst✝ : TopologicalSpace X
f : C(X, ℝ≥0)
c : ℝ≥0
hc : 0 < c
x : X
hx : x ∈ {x | c ≤ f x}
⊢ ({ toFun := (⇑f ⊔ ⇑(const X c))⁻¹, continuous_toFun := ⋯ } * f) x = 1 x
state_after: no goals
Theorem: GaloisConnection.l_sSup
File: Mathlib/Order/GaloisConnection.lean

tactic: simp only [sSup_eq_iSup, gc.l_iSup]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
κ : ι → Sort u_1
a a₁ a₂ : α
b b₁ b₂ : β
inst✝¹ : CompleteLattice α
inst✝ : CompleteLattice β
l : α → β
u : β → α
gc : GaloisConnection l u
s : Set α
⊢ l (sSup s) = ⨆ a ∈ s, l a
state_after: no goals
Theorem: rightCoset_assoc
File: Mathlib/GroupTheory/Coset.lean

tactic: simp [← image_smul, (image_comp _ _ _).symm, Function.comp, mul_assoc]
state_before: α : Type u_1
inst✝ : Semigroup α
s : Set α
a b : α
⊢ op b • op a • s = op (a * b) • s
state_after: no goals
Theorem: MvPolynomial.eval₂_cast_comp
File: Mathlib/Algebra/MvPolynomial/Rename.lean

tactic: apply MvPolynomial.induction_on p (fun n => by simp only [eval₂_C, rename_C])
  (fun p q hp hq => by simp only [hp, hq, rename, eval₂_add, AlgHom.map_add])
  fun p n hp => by simp only [eval₂_mul, hp, eval₂_X, comp_apply, map_mul, rename_X, eval₂_mul]
state_before: σ : Type u_1
τ : Type u_2
α : Type u_3
R : Type u_4
S : Type u_5
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
c : ℤ →+* R
g : τ → R
p : MvPolynomial σ ℤ
⊢ eval₂ c (g ∘ f) p = eval₂ c g ((rename f) p)
state_after: no goals

tactic: simp only [eval₂_C, rename_C]
state_before: σ : Type u_1
τ : Type u_2
α : Type u_3
R : Type u_4
S : Type u_5
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
c : ℤ →+* R
g : τ → R
p : MvPolynomial σ ℤ
n : ℤ
⊢ eval₂ c (g ∘ f) (C n) = eval₂ c g ((rename f) (C n))
state_after: no goals

tactic: simp only [hp, hq, rename, eval₂_add, AlgHom.map_add]
state_before: σ : Type u_1
τ : Type u_2
α : Type u_3
R : Type u_4
S : Type u_5
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
c : ℤ →+* R
g : τ → R
p✝ p q : MvPolynomial σ ℤ
hp : eval₂ c (g ∘ f) p = eval₂ c g ((rename f) p)
hq : eval₂ c (g ∘ f) q = eval₂ c g ((rename f) q)
⊢ eval₂ c (g ∘ f) (p + q) = eval₂ c g ((rename f) (p + q))
state_after: no goals

tactic: simp only [eval₂_mul, hp, eval₂_X, comp_apply, map_mul, rename_X, eval₂_mul]
state_before: σ : Type u_1
τ : Type u_2
α : Type u_3
R : Type u_4
S : Type u_5
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
c : ℤ →+* R
g : τ → R
p✝ p : MvPolynomial σ ℤ
n : σ
hp : eval₂ c (g ∘ f) p = eval₂ c g ((rename f) p)
⊢ eval₂ c (g ∘ f) (p * X n) = eval₂ c g ((rename f) (p * X n))
state_after: no goals
Theorem: ContDiffBump.integral_normed_smul
File: Mathlib/Analysis/Calculus/BumpFunction/Normed.lean

tactic: simp_rw [integral_smul_const, f.integral_normed (μ := μ), one_smul]
state_before: E : Type u_1
inst✝¹⁰ : NormedAddCommGroup E
inst✝⁹ : NormedSpace ℝ E
inst✝⁸ : HasContDiffBump E
inst✝⁷ : MeasurableSpace E
c : E
f : ContDiffBump c
x : E
n : ℕ∞
μ : Measure E
inst✝⁶ : BorelSpace E
inst✝⁵ : FiniteDimensional ℝ E
inst✝⁴ : IsLocallyFiniteMeasure μ
inst✝³ : μ.IsOpenPosMeasure
X : Type u_2
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : CompleteSpace X
z : X
⊢ ∫ (x : E), f.normed μ x • z ∂μ = z
state_after: no goals
Theorem: Matrix.fromColumns_mul_fromRows
File: Mathlib/Data/Matrix/ColumnRowPartitioned.lean

tactic: ext
state_before: R : Type u_1
m : Type u_2
m₁ : Type u_3
m₂ : Type u_4
n : Type u_5
n₁ : Type u_6
n₂ : Type u_7
inst✝¹² : Fintype m
inst✝¹¹ : Fintype m₁
inst✝¹⁰ : Fintype m₂
inst✝⁹ : Fintype n
inst✝⁸ : Fintype n₁
inst✝⁷ : Fintype n₂
inst✝⁶ : DecidableEq m
inst✝⁵ : DecidableEq m₁
inst✝⁴ : DecidableEq m₂
inst✝³ : DecidableEq n
inst✝² : DecidableEq n₁
inst✝¹ : DecidableEq n₂
inst✝ : Semiring R
A₁ : Matrix m n₁ R
A₂ : Matrix m n₂ R
B₁ : Matrix n₁ n R
B₂ : Matrix n₂ n R
⊢ A₁.fromColumns A₂ * B₁.fromRows B₂ = A₁ * B₁ + A₂ * B₂
state_after: case a
R : Type u_1
m : Type u_2
m₁ : Type u_3
m₂ : Type u_4
n : Type u_5
n₁ : Type u_6
n₂ : Type u_7
inst✝¹² : Fintype m
inst✝¹¹ : Fintype m₁
inst✝¹⁰ : Fintype m₂
inst✝⁹ : Fintype n
inst✝⁸ : Fintype n₁
inst✝⁷ : Fintype n₂
inst✝⁶ : DecidableEq m
inst✝⁵ : DecidableEq m₁
inst✝⁴ : DecidableEq m₂
inst✝³ : DecidableEq n
inst✝² : DecidableEq n₁
inst✝¹ : DecidableEq n₂
inst✝ : Semiring R
A₁ : Matrix m n₁ R
A₂ : Matrix m n₂ R
B₁ : Matrix n₁ n R
B₂ : Matrix n₂ n R
i✝ : m
j✝ : n
⊢ (A₁.fromColumns A₂ * B₁.fromRows B₂) i✝ j✝ = (A₁ * B₁ + A₂ * B₂) i✝ j✝

tactic: simp [mul_apply]
state_before: case a
R : Type u_1
m : Type u_2
m₁ : Type u_3
m₂ : Type u_4
n : Type u_5
n₁ : Type u_6
n₂ : Type u_7
inst✝¹² : Fintype m
inst✝¹¹ : Fintype m₁
inst✝¹⁰ : Fintype m₂
inst✝⁹ : Fintype n
inst✝⁸ : Fintype n₁
inst✝⁷ : Fintype n₂
inst✝⁶ : DecidableEq m
inst✝⁵ : DecidableEq m₁
inst✝⁴ : DecidableEq m₂
inst✝³ : DecidableEq n
inst✝² : DecidableEq n₁
inst✝¹ : DecidableEq n₂
inst✝ : Semiring R
A₁ : Matrix m n₁ R
A₂ : Matrix m n₂ R
B₁ : Matrix n₁ n R
B₂ : Matrix n₂ n R
i✝ : m
j✝ : n
⊢ (A₁.fromColumns A₂ * B₁.fromRows B₂) i✝ j✝ = (A₁ * B₁ + A₂ * B₂) i✝ j✝
state_after: no goals
Theorem: AlgebraicGeometry.PresheafedSpace.restrict_top_presheaf
File: Mathlib/Geometry/RingedSpace/PresheafedSpace.lean

tactic: dsimp
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : PresheafedSpace C
⊢ (X.restrict ⋯).presheaf = (Opens.inclusionTopIso ↑X).inv _* X.presheaf
state_after: C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : PresheafedSpace C
⊢ ⋯.functor.op ⋙ X.presheaf = (Opens.inclusionTopIso ↑X).inv _* X.presheaf

tactic: rw [Opens.inclusion_top_functor X.carrier]
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : PresheafedSpace C
⊢ ⋯.functor.op ⋙ X.presheaf = (Opens.inclusionTopIso ↑X).inv _* X.presheaf
state_after: C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : PresheafedSpace C
⊢ (Opens.map (Opens.inclusionTopIso ↑X).inv).op ⋙ X.presheaf = (Opens.inclusionTopIso ↑X).inv _* X.presheaf

tactic: rfl
state_before: C : Type u_1
inst✝ : Category.{u_2, u_1} C
X : PresheafedSpace C
⊢ (Opens.map (Opens.inclusionTopIso ↑X).inv).op ⋙ X.presheaf = (Opens.inclusionTopIso ↑X).inv _* X.presheaf
state_after: no goals
Theorem: AlgebraicGeometry.ProjIsoSpecTopComponent.FromSpec.mem_carrier_iff
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Scheme.lean

tactic: mem_tac
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
q : ↑↑(Spec A⁰_ f).toPresheafedSpace
a : A
i : ℕ
⊢ (proj 𝒜 i) a ^ m ∈ 𝒜 (m * i)
state_after: no goals

tactic: rw [mul_comm]
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
q : ↑↑(Spec A⁰_ f).toPresheafedSpace
a : A
i : ℕ
⊢ f ^ i ∈ 𝒜 (m * i)
state_after: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
q : ↑↑(Spec A⁰_ f).toPresheafedSpace
a : A
i : ℕ
⊢ f ^ i ∈ 𝒜 (i * m)

tactic: mem_tac
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommRing R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f : A
m : ℕ
f_deg : f ∈ 𝒜 m
q : ↑↑(Spec A⁰_ f).toPresheafedSpace
a : A
i : ℕ
⊢ f ^ i ∈ 𝒜 (i * m)
state_after: no goals
Theorem: div_lt_iff_lt_mul
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [← mul_lt_mul_iff_right c, div_eq_mul_inv, inv_mul_cancel_right]
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LT α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c d : α
⊢ a / c < b ↔ a < b * c
state_after: no goals
Theorem: MeasureTheory.HasFiniteIntegral.add_measure
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: simp only [HasFiniteIntegral, lintegral_add_measure] at *
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → β
hμ : HasFiniteIntegral f μ
hν : HasFiniteIntegral f ν
⊢ HasFiniteIntegral f (μ + ν)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → β
hμ : ∫⁻ (a : α), ↑‖f a‖₊ ∂μ < ⊤
hν : ∫⁻ (a : α), ↑‖f a‖₊ ∂ν < ⊤
⊢ ∫⁻ (a : α), ↑‖f a‖₊ ∂μ + ∫⁻ (a : α), ↑‖f a‖₊ ∂ν < ⊤

tactic: exact add_lt_top.2 ⟨hμ, hν⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → β
hμ : ∫⁻ (a : α), ↑‖f a‖₊ ∂μ < ⊤
hν : ∫⁻ (a : α), ↑‖f a‖₊ ∂ν < ⊤
⊢ ∫⁻ (a : α), ↑‖f a‖₊ ∂μ + ∫⁻ (a : α), ↑‖f a‖₊ ∂ν < ⊤
state_after: no goals
Theorem: CategoryTheory.NonPreadditiveAbelian.comp_sub
File: Mathlib/CategoryTheory/Abelian/NonPreadditive.lean

tactic: rw [sub_def, ← Category.assoc, prod.comp_lift, sub_def]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y Z : C
f : X ⟶ Y
g h : Y ⟶ Z
⊢ f ≫ (g - h) = f ≫ g - f ≫ h
state_after: no goals
Theorem: inf_sdiff_assoc
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [inf_assoc]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y ⊓ z ⊔ x ⊓ y \ z = x ⊓ (y ⊓ z) ⊔ x ⊓ y \ z
state_after: no goals

tactic: rw [← inf_sup_left]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ (y ⊓ z) ⊔ x ⊓ y \ z = x ⊓ (y ⊓ z ⊔ y \ z)
state_after: no goals

tactic: rw [sup_inf_sdiff]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ (y ⊓ z ⊔ y \ z) = x ⊓ y
state_after: no goals

tactic: ac_rfl
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y ⊓ z ⊓ (x ⊓ y \ z) = x ⊓ x ⊓ (y ⊓ z ⊓ y \ z)
state_after: no goals

tactic: rw [inf_inf_sdiff, inf_bot_eq]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ x ⊓ (y ⊓ z ⊓ y \ z) = ⊥
state_after: no goals
Theorem: toIocMod_eq_sub
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [toIocMod_sub_eq_sub, zero_add, sub_add_cancel]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIocMod hp a b = toIocMod hp 0 (b - a) + a
state_after: no goals
Theorem: Matrix.natCast_fin_three
File: Mathlib/Data/Matrix/Notation.lean

tactic: ext i j
state_before: α : Type u
o n✝ m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝ : AddMonoidWithOne α
n : ℕ
⊢ ↑n = of ![![↑n, 0, 0], ![0, ↑n, 0], ![0, 0, ↑n]]
state_after: case a
α : Type u
o n✝ m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝ : AddMonoidWithOne α
n : ℕ
i j : Fin 3
⊢ ↑n i j = of ![![↑n, 0, 0], ![0, ↑n, 0], ![0, 0, ↑n]] i j

tactic: fin_cases i <;> fin_cases j <;> rfl
state_before: case a
α : Type u
o n✝ m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
inst✝ : AddMonoidWithOne α
n : ℕ
i j : Fin 3
⊢ ↑n i j = of ![![↑n, 0, 0], ![0, ↑n, 0], ![0, 0, ↑n]] i j
state_after: no goals
Theorem: Submodule.covBy_span_singleton_sup
File: Mathlib/LinearAlgebra/Span.lean

tactic: simpa
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
x : V
p : Submodule K V
h : x ∉ p
⊢ p < span K {x} ⊔ p
state_after: no goals
Theorem: ConvexOn.translate_left
File: Mathlib/Analysis/Convex/Function.lean

tactic: simpa only [add_comm c] using hf.translate_right c
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : OrderedAddCommMonoid α
inst✝² : OrderedAddCommMonoid β
inst✝¹ : Module 𝕜 E
inst✝ : SMul 𝕜 β
s : Set E
f : E → β
hf : ConvexOn 𝕜 s f
c : E
⊢ ConvexOn 𝕜 ((fun z => c + z) ⁻¹' s) (f ∘ fun z => z + c)
state_after: no goals
Theorem: equivShrink_add
File: Mathlib/Logic/Small/Group.lean

tactic: rw [Equiv.add_def]
state_before: α : Type u_1
inst✝¹ : Add α
inst✝ : Small.{u_2, u_1} α
x y : α
⊢ (equivShrink α) (x + y) = (equivShrink α) x + (equivShrink α) y
state_after: α : Type u_1
inst✝¹ : Add α
inst✝ : Small.{u_2, u_1} α
x y : α
⊢ (equivShrink α) (x + y) =
    (equivShrink α).symm.symm ((equivShrink α).symm ((equivShrink α) x) + (equivShrink α).symm ((equivShrink α) y))

tactic: simp
state_before: α : Type u_1
inst✝¹ : Add α
inst✝ : Small.{u_2, u_1} α
x y : α
⊢ (equivShrink α) (x + y) =
    (equivShrink α).symm.symm ((equivShrink α).symm ((equivShrink α) x) + (equivShrink α).symm ((equivShrink α) y))
state_after: no goals
Theorem: inv_eq_of_mul_eq_one_left
File: Mathlib/Algebra/Group/Defs.lean

tactic: rw [← inv_eq_of_mul_eq_one_right h, inv_inv]
state_before: G : Type u_1
inst✝ : DivisionMonoid G
a b : G
h : a * b = 1
⊢ b⁻¹ = a
state_after: no goals
Theorem: MeasureTheory.diracProbaInverse_eq
File: Mathlib/MeasureTheory/Measure/DiracProba.lean

tactic: apply injective_diracProba_of_T0 (X := X)
state_before: X : Type u_1
inst✝³ : MeasurableSpace X
inst✝² : TopologicalSpace X
inst✝¹ : OpensMeasurableSpace X
inst✝ : T0Space X
x : X
μ : ↑(range diracProba)
h : ↑μ = diracProba x
⊢ diracProbaInverse μ = x
state_after: case a
X : Type u_1
inst✝³ : MeasurableSpace X
inst✝² : TopologicalSpace X
inst✝¹ : OpensMeasurableSpace X
inst✝ : T0Space X
x : X
μ : ↑(range diracProba)
h : ↑μ = diracProba x
⊢ (fun x => diracProba x) (diracProbaInverse μ) = (fun x => diracProba x) x

tactic: simp only [← h]
state_before: case a
X : Type u_1
inst✝³ : MeasurableSpace X
inst✝² : TopologicalSpace X
inst✝¹ : OpensMeasurableSpace X
inst✝ : T0Space X
x : X
μ : ↑(range diracProba)
h : ↑μ = diracProba x
⊢ (fun x => diracProba x) (diracProbaInverse μ) = (fun x => diracProba x) x
state_after: case a
X : Type u_1
inst✝³ : MeasurableSpace X
inst✝² : TopologicalSpace X
inst✝¹ : OpensMeasurableSpace X
inst✝ : T0Space X
x : X
μ : ↑(range diracProba)
h : ↑μ = diracProba x
⊢ diracProba (diracProbaInverse μ) = ↑μ

tactic: exact (mem_range.mp μ.prop).choose_spec
state_before: case a
X : Type u_1
inst✝³ : MeasurableSpace X
inst✝² : TopologicalSpace X
inst✝¹ : OpensMeasurableSpace X
inst✝ : T0Space X
x : X
μ : ↑(range diracProba)
h : ↑μ = diracProba x
⊢ diracProba (diracProbaInverse μ) = ↑μ
state_after: no goals
Theorem: Set.image_const_add_Ici
File: Mathlib/Algebra/Order/Interval/Set/Monoid.lean

tactic: simp only [add_comm a, image_add_const_Ici]
state_before: M : Type u_1
inst✝¹ : OrderedCancelAddCommMonoid M
inst✝ : ExistsAddOfLE M
a b c d : M
⊢ (fun x => a + x) '' Ici b = Ici (a + b)
state_after: no goals
Theorem: List.Nodup.mem_erase_iff
File: Mathlib/Data/List/Nodup.lean

tactic: rw [d.erase_eq_filter, mem_filter, and_comm, decide_eq_true_iff]
state_before: α : Type u
β : Type v
l l₁ l₂ : List α
r : α → α → Prop
a b : α
inst✝ : DecidableEq α
d : l.Nodup
⊢ a ∈ l.erase b ↔ a ≠ b ∧ a ∈ l
state_after: no goals
Theorem: ENNReal.exists_nat_pos_mul_gt
File: Mathlib/Data/ENNReal/Inv.lean

tactic: rwa [← ENNReal.div_lt_iff (Or.inl ha) (Or.inr hb)]
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
ha : a ≠ 0
hb : b ≠ ⊤
n : ℕ
hn : b / a < ↑n
⊢ b < ↑n * a
state_after: no goals
Theorem: Rat.intCast_sub
File: .lake/packages/batteries/Batteries/Data/Rat/Lemmas.lean

tactic: rw [sub_def]
state_before: a b : Int
⊢ ↑(a - b) = ↑a - ↑b
state_after: a b : Int
⊢ ↑(a - b) = normalize ((↑a).num * ↑(↑b).den - (↑b).num * ↑(↑a).den) ((↑a).den * (↑b).den) ⋯

tactic: simp [normalize_eq]
state_before: a b : Int
⊢ ↑(a - b) = normalize ((↑a).num * ↑(↑b).den - (↑b).num * ↑(↑a).den) ((↑a).den * (↑b).den) ⋯
state_after: no goals
Theorem: Polynomial.degree_quadratic_le
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: simpa only [add_assoc] using
  degree_add_le_of_degree_le (degree_C_mul_X_pow_le 2 a)
    (le_trans degree_linear_le <| WithBot.coe_le_coe.mpr one_le_two)
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p✝ p q : R[X]
ι : Type u_1
⊢ (C a * X ^ 2 + C b * X + C c).degree ≤ 2
state_after: no goals
Theorem: WCovBy.eq_or_eq
File: Mathlib/Order/Cover.lean

tactic: rcases h2.eq_or_lt with (h2 | h2)
state_before: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
h2 : a ≤ c
h3 : c ≤ b
⊢ c = a ∨ c = b
state_after: case inl
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
h2✝ : a ≤ c
h3 : c ≤ b
h2 : a = c
⊢ c = a ∨ c = b

case inr
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
h2✝ : a ≤ c
h3 : c ≤ b
h2 : a < c
⊢ c = a ∨ c = b

tactic: rcases h3.eq_or_lt with (h3 | h3)
state_before: case inr
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
h2✝ : a ≤ c
h3 : c ≤ b
h2 : a < c
⊢ c = a ∨ c = b
state_after: case inr.inl
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
h2✝ : a ≤ c
h3✝ : c ≤ b
h2 : a < c
h3 : c = b
⊢ c = a ∨ c = b

case inr.inr
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
h2✝ : a ≤ c
h3✝ : c ≤ b
h2 : a < c
h3 : c < b
⊢ c = a ∨ c = b

tactic: exact (h.2 h2 h3).elim
state_before: case inr.inr
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
h2✝ : a ≤ c
h3✝ : c ≤ b
h2 : a < c
h3 : c < b
⊢ c = a ∨ c = b
state_after: no goals

tactic: exact Or.inl h2.symm
state_before: case inl
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
h2✝ : a ≤ c
h3 : c ≤ b
h2 : a = c
⊢ c = a ∨ c = b
state_after: no goals

tactic: exact Or.inr h3
state_before: case inr.inl
α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ⩿ b
h2✝ : a ≤ c
h3✝ : c ≤ b
h2 : a < c
h3 : c = b
⊢ c = a ∨ c = b
state_after: no goals