1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: IsCompact.exists_isOpen_closure_subset
File: Mathlib/Topology/Separation.lean

tactic: have hd : Disjoint (𝓝ˢ K) (𝓝ˢ Uᶜ) := by
  simpa [hK.disjoint_nhdsSet_left, disjoint_nhds_nhdsSet,
    ← subset_interior_iff_mem_nhdsSet] using hU
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K U : Set X
hK : IsCompact K
hU : U ∈ 𝓝ˢ K
⊢ ∃ V, IsOpen V ∧ K ⊆ V ∧ closure V ⊆ U
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K U : Set X
hK : IsCompact K
hU : U ∈ 𝓝ˢ K
hd : Disjoint (𝓝ˢ K) (𝓝ˢ Uᶜ)
⊢ ∃ V, IsOpen V ∧ K ⊆ V ∧ closure V ⊆ U

tactic: rcases ((hasBasis_nhdsSet _).disjoint_iff (hasBasis_nhdsSet _)).1 hd
  with ⟨V, ⟨hVo, hKV⟩, W, ⟨hW, hUW⟩, hVW⟩
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K U : Set X
hK : IsCompact K
hU : U ∈ 𝓝ˢ K
hd : Disjoint (𝓝ˢ K) (𝓝ˢ Uᶜ)
⊢ ∃ V, IsOpen V ∧ K ⊆ V ∧ closure V ⊆ U
state_after: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K U : Set X
hK : IsCompact K
hU : U ∈ 𝓝ˢ K
hd : Disjoint (𝓝ˢ K) (𝓝ˢ Uᶜ)
V : Set X
hVo : IsOpen V
hKV : K ⊆ V
W : Set X
hVW : Disjoint V W
hW : IsOpen W
hUW : Uᶜ ⊆ W
⊢ ∃ V, IsOpen V ∧ K ⊆ V ∧ closure V ⊆ U

tactic: refine ⟨V, hVo, hKV, Subset.trans ?_ (compl_subset_comm.1 hUW)⟩
state_before: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K U : Set X
hK : IsCompact K
hU : U ∈ 𝓝ˢ K
hd : Disjoint (𝓝ˢ K) (𝓝ˢ Uᶜ)
V : Set X
hVo : IsOpen V
hKV : K ⊆ V
W : Set X
hVW : Disjoint V W
hW : IsOpen W
hUW : Uᶜ ⊆ W
⊢ ∃ V, IsOpen V ∧ K ⊆ V ∧ closure V ⊆ U
state_after: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K U : Set X
hK : IsCompact K
hU : U ∈ 𝓝ˢ K
hd : Disjoint (𝓝ˢ K) (𝓝ˢ Uᶜ)
V : Set X
hVo : IsOpen V
hKV : K ⊆ V
W : Set X
hVW : Disjoint V W
hW : IsOpen W
hUW : Uᶜ ⊆ W
⊢ closure V ⊆ Wᶜ

tactic: exact closure_minimal hVW.subset_compl_right hW.isClosed_compl
state_before: case intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K U : Set X
hK : IsCompact K
hU : U ∈ 𝓝ˢ K
hd : Disjoint (𝓝ˢ K) (𝓝ˢ Uᶜ)
V : Set X
hVo : IsOpen V
hKV : K ⊆ V
W : Set X
hVW : Disjoint V W
hW : IsOpen W
hUW : Uᶜ ⊆ W
⊢ closure V ⊆ Wᶜ
state_after: no goals

tactic: simpa [hK.disjoint_nhdsSet_left, disjoint_nhds_nhdsSet,
  ← subset_interior_iff_mem_nhdsSet] using hU
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x : X
s K U : Set X
hK : IsCompact K
hU : U ∈ 𝓝ˢ K
⊢ Disjoint (𝓝ˢ K) (𝓝ˢ Uᶜ)
state_after: no goals
Theorem: Function.LeftInverse.filter_comap
File: Mathlib/Order/Filter/Basic.lean

tactic: rw [comap_comap, hfg.comp_eq_id, comap_id]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g✝ g₁ g₂ : Filter β
m : α → β
m' : β → γ
s : Set α
t : Set β
f : α → β
g : β → α
hfg : LeftInverse g f
F : Filter α
⊢ comap f (comap g F) = F
state_after: no goals
Theorem: Fin.le_castPred_iff
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [← castSucc_le_castSucc_iff, castSucc_castPred]
state_before: n m : ℕ
j : Fin n
i : Fin (n + 1)
hi : i ≠ last n
⊢ j ≤ i.castPred hi ↔ j.castSucc ≤ i
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.addZ_of_Z_eq_zero_left
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rw [addZ, hPz]
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hPz : P z = 0
⊢ addZ P Q = P x * Q z * Q z
state_after: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hPz : P z = 0
⊢ P x * Q z ^ 2 - Q x * 0 ^ 2 = P x * Q z * Q z

tactic: ring1
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
hPz : P z = 0
⊢ P x * Q z ^ 2 - Q x * 0 ^ 2 = P x * Q z * Q z
state_after: no goals
Theorem: CliffordAlgebra.ofBaseChange_comp_toBaseChange
File: Mathlib/LinearAlgebra/CliffordAlgebra/BaseChange.lean

tactic: ext x
state_before: R : Type u_1
A : Type u_2
V : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : AddCommGroup V
inst✝⁴ : Algebra R A
inst✝³ : Module R V
inst✝² : Module A V
inst✝¹ : IsScalarTower R A V
inst✝ : Invertible 2
Q : QuadraticForm R V
⊢ (ofBaseChange A Q).comp (toBaseChange A Q) = AlgHom.id A (CliffordAlgebra (QuadraticForm.baseChange A Q))
state_after: case a.a.h.h
R : Type u_1
A : Type u_2
V : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : AddCommGroup V
inst✝⁴ : Algebra R A
inst✝³ : Module R V
inst✝² : Module A V
inst✝¹ : IsScalarTower R A V
inst✝ : Invertible 2
Q : QuadraticForm R V
x : V
⊢ ((TensorProduct.AlgebraTensorModule.curry
          (((ofBaseChange A Q).comp (toBaseChange A Q)).toLinearMap ∘ₗ ι (QuadraticForm.baseChange A Q)))
        1)
      x =
    ((TensorProduct.AlgebraTensorModule.curry
          ((AlgHom.id A (CliffordAlgebra (QuadraticForm.baseChange A Q))).toLinearMap ∘ₗ
            ι (QuadraticForm.baseChange A Q)))
        1)
      x

tactic: show ofBaseChange A Q (toBaseChange A Q (ι (Q.baseChange A) (1 ⊗ₜ[R] x)))
  = ι (Q.baseChange A) (1 ⊗ₜ[R] x)
state_before: case a.a.h.h
R : Type u_1
A : Type u_2
V : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : AddCommGroup V
inst✝⁴ : Algebra R A
inst✝³ : Module R V
inst✝² : Module A V
inst✝¹ : IsScalarTower R A V
inst✝ : Invertible 2
Q : QuadraticForm R V
x : V
⊢ ((TensorProduct.AlgebraTensorModule.curry
          (((ofBaseChange A Q).comp (toBaseChange A Q)).toLinearMap ∘ₗ ι (QuadraticForm.baseChange A Q)))
        1)
      x =
    ((TensorProduct.AlgebraTensorModule.curry
          ((AlgHom.id A (CliffordAlgebra (QuadraticForm.baseChange A Q))).toLinearMap ∘ₗ
            ι (QuadraticForm.baseChange A Q)))
        1)
      x
state_after: case a.a.h.h
R : Type u_1
A : Type u_2
V : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : AddCommGroup V
inst✝⁴ : Algebra R A
inst✝³ : Module R V
inst✝² : Module A V
inst✝¹ : IsScalarTower R A V
inst✝ : Invertible 2
Q : QuadraticForm R V
x : V
⊢ (ofBaseChange A Q) ((toBaseChange A Q) ((ι (QuadraticForm.baseChange A Q)) (1 ⊗ₜ[R] x))) =
    (ι (QuadraticForm.baseChange A Q)) (1 ⊗ₜ[R] x)

tactic: rw [toBaseChange_ι, ofBaseChange_tmul_ι]
state_before: case a.a.h.h
R : Type u_1
A : Type u_2
V : Type u_3
inst✝⁷ : CommRing R
inst✝⁶ : CommRing A
inst✝⁵ : AddCommGroup V
inst✝⁴ : Algebra R A
inst✝³ : Module R V
inst✝² : Module A V
inst✝¹ : IsScalarTower R A V
inst✝ : Invertible 2
Q : QuadraticForm R V
x : V
⊢ (ofBaseChange A Q) ((toBaseChange A Q) ((ι (QuadraticForm.baseChange A Q)) (1 ⊗ₜ[R] x))) =
    (ι (QuadraticForm.baseChange A Q)) (1 ⊗ₜ[R] x)
state_after: no goals
Theorem: MeasurableEmbedding.measurableSet_preimage
File: Mathlib/MeasureTheory/MeasurableSpace/Embedding.lean

tactic: rw [← image_preimage_eq_inter_range, hf.measurableSet_image]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
mα : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
f : α → β
g : β → γ
hf : MeasurableEmbedding f
s : Set β
⊢ MeasurableSet (f ⁻¹' s) ↔ MeasurableSet (s ∩ range f)
state_after: no goals
Theorem: ENNReal.log_one
File: Mathlib/Analysis/SpecialFunctions/Log/ENNReal.lean

tactic: simp [log]
state_before: ⊢ log 1 = 0
state_after: no goals
Theorem: EReal.preimage_coe_Icc
File: Mathlib/Data/Real/EReal.lean

tactic: simp_rw [← Ici_inter_Iic]
state_before: x y : ℝ
⊢ Real.toEReal ⁻¹' Icc ↑x ↑y = Icc x y
state_after: x y : ℝ
⊢ Real.toEReal ⁻¹' (Ici ↑x ∩ Iic ↑y) = Ici x ∩ Iic y

tactic: simp
state_before: x y : ℝ
⊢ Real.toEReal ⁻¹' (Ici ↑x ∩ Iic ↑y) = Ici x ∩ Iic y
state_after: no goals
Theorem: tangentBundle_model_space_coe_chartAt
File: Mathlib/Geometry/Manifold/VectorBundle/Tangent.lean

tactic: rw [← PartialHomeomorph.coe_coe, tangentBundle_model_space_chartAt]
state_before: 𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹¹ : NormedAddCommGroup E'
inst✝¹⁰ : NormedSpace 𝕜 E'
H : Type u_4
inst✝⁹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
H' : Type u_5
inst✝⁸ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_6
inst✝⁷ : TopologicalSpace M
inst✝⁶ : ChartedSpace H M
inst✝⁵ : SmoothManifoldWithCorners I M
M' : Type u_7
inst✝⁴ : TopologicalSpace M'
inst✝³ : ChartedSpace H' M'
inst✝² : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : TangentBundle I H
⊢ ↑(chartAt (ModelProd H E) p) = ⇑(TotalSpace.toProd H E)
state_after: 𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹¹ : NormedAddCommGroup E'
inst✝¹⁰ : NormedSpace 𝕜 E'
H : Type u_4
inst✝⁹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
H' : Type u_5
inst✝⁸ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_6
inst✝⁷ : TopologicalSpace M
inst✝⁶ : ChartedSpace H M
inst✝⁵ : SmoothManifoldWithCorners I M
M' : Type u_7
inst✝⁴ : TopologicalSpace M'
inst✝³ : ChartedSpace H' M'
inst✝² : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : TangentBundle I H
⊢ ↑(TotalSpace.toProd H E).toPartialEquiv = ⇑(TotalSpace.toProd H E)

tactic: rfl
state_before: 𝕜 : Type u_1
inst✝¹⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹³ : NormedAddCommGroup E
inst✝¹² : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹¹ : NormedAddCommGroup E'
inst✝¹⁰ : NormedSpace 𝕜 E'
H : Type u_4
inst✝⁹ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
H' : Type u_5
inst✝⁸ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M : Type u_6
inst✝⁷ : TopologicalSpace M
inst✝⁶ : ChartedSpace H M
inst✝⁵ : SmoothManifoldWithCorners I M
M' : Type u_7
inst✝⁴ : TopologicalSpace M'
inst✝³ : ChartedSpace H' M'
inst✝² : SmoothManifoldWithCorners I' M'
F : Type u_8
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : TangentBundle I H
⊢ ↑(TotalSpace.toProd H E).toPartialEquiv = ⇑(TotalSpace.toProd H E)
state_after: no goals
Theorem: LinearLocallyFiniteOrder.succFn_le_of_lt
File: Mathlib/Order/SuccPred/LinearLocallyFinite.lean

tactic: have h := succFn_spec i
state_before: ι : Type u_1
inst✝ : LinearOrder ι
i j : ι
hij : i < j
⊢ succFn i ≤ j
state_after: ι : Type u_1
inst✝ : LinearOrder ι
i j : ι
hij : i < j
h : IsGLB (Set.Ioi i) (succFn i)
⊢ succFn i ≤ j

tactic: rw [IsGLB, IsGreatest, mem_lowerBounds] at h
state_before: ι : Type u_1
inst✝ : LinearOrder ι
i j : ι
hij : i < j
h : IsGLB (Set.Ioi i) (succFn i)
⊢ succFn i ≤ j
state_after: ι : Type u_1
inst✝ : LinearOrder ι
i j : ι
hij : i < j
h : (∀ x ∈ Set.Ioi i, succFn i ≤ x) ∧ succFn i ∈ upperBounds (lowerBounds (Set.Ioi i))
⊢ succFn i ≤ j

tactic: exact h.1 j hij
state_before: ι : Type u_1
inst✝ : LinearOrder ι
i j : ι
hij : i < j
h : (∀ x ∈ Set.Ioi i, succFn i ≤ x) ∧ succFn i ∈ upperBounds (lowerBounds (Set.Ioi i))
⊢ succFn i ≤ j
state_after: no goals
Theorem: Set.pairwise_insert_of_symmetric
File: Mathlib/Data/Set/Pairwise/Basic.lean

tactic: simp only [pairwise_insert, hr.iff a, and_self_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
r p q : α → α → Prop
f g : ι → α
s t u : Set α
a b : α
hr : Symmetric r
⊢ (insert a s).Pairwise r ↔ s.Pairwise r ∧ ∀ b ∈ s, a ≠ b → r a b
state_after: no goals
Theorem: antitoneOn_dual_iff
File: Mathlib/Order/Monotone/Basic.lean

tactic: rw [antitoneOn_toDual_comp_iff, monotoneOn_comp_ofDual_iff]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
δ : Type u_2
π : ι → Type u_3
r : α → α → Prop
inst✝¹ : Preorder α
inst✝ : Preorder β
f : α → β
s : Set α
⊢ AntitoneOn (⇑toDual ∘ f ∘ ⇑ofDual) s ↔ AntitoneOn f s
state_after: no goals
Theorem: ProbabilityTheory.integral_truncation_eq_intervalIntegral_of_nonneg
File: Mathlib/Probability/StrongLaw.lean

tactic: simpa using moment_truncation_eq_intervalIntegral_of_nonneg hf one_ne_zero h'f
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f : α → ℝ
hf : AEStronglyMeasurable f μ
A : ℝ
h'f : 0 ≤ f
⊢ ∫ (x : α), truncation f A x ∂μ = ∫ (y : ℝ) in 0 ..A, y ∂Measure.map f μ
state_after: no goals
Theorem: Subgroup.eq_one_of_smul_eq_one
File: Mathlib/GroupTheory/SchurZassenhaus.lean

tactic: rw [← diff_inv, smul_diff', diff_self, one_mul, inv_pow, inv_inv]
state_before: G : Type u_1
inst✝³ : Group G
H : Subgroup G
inst✝² : H.IsCommutative
inst✝¹ : H.FiniteIndex
α✝¹ β : ↑(leftTransversals ↑H)
inst✝ : H.Normal
hH : (Nat.card ↥H).Coprime H.index
α✝ : H.QuotientDiff
h : ↥H
α : ↑(leftTransversals ↑H)
hα : h • Quotient.mk'' α = Quotient.mk'' α
⊢ h ^ H.index = diff (MonoidHom.id ↥H) (op ↑h⁻¹ • α) α
state_after: no goals
Theorem: Function.Antiperiodic.const_add
File: Mathlib/Algebra/Periodic.lean

tactic: simpa [add_assoc] using h (a + x)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x✝ : α
inst✝¹ : AddSemigroup α
inst✝ : Neg β
h : Antiperiodic f c
a x : α
⊢ (fun x => f (a + x)) (x + c) = -(fun x => f (a + x)) x
state_after: no goals
Theorem: EReal.sign_eq_and_abs_eq_iff_eq
File: Mathlib/Data/Real/EReal.lean

tactic: constructor
state_before: x y : EReal
⊢ x.abs = y.abs ∧ sign x = sign y ↔ x = y
state_after: case mp
x y : EReal
⊢ x.abs = y.abs ∧ sign x = sign y → x = y

case mpr
x y : EReal
⊢ x = y → x.abs = y.abs ∧ sign x = sign y

tactic: rintro ⟨habs, hsign⟩
state_before: case mp
x y : EReal
⊢ x.abs = y.abs ∧ sign x = sign y → x = y
state_after: case mp.intro
x y : EReal
habs : x.abs = y.abs
hsign : sign x = sign y
⊢ x = y

tactic: rw [← x.sign_mul_abs, ← y.sign_mul_abs, habs, hsign]
state_before: case mp.intro
x y : EReal
habs : x.abs = y.abs
hsign : sign x = sign y
⊢ x = y
state_after: no goals

tactic: rintro rfl
state_before: case mpr
x y : EReal
⊢ x = y → x.abs = y.abs ∧ sign x = sign y
state_after: case mpr
x : EReal
⊢ x.abs = x.abs ∧ sign x = sign x

tactic: exact ⟨rfl, rfl⟩
state_before: case mpr
x : EReal
⊢ x.abs = x.abs ∧ sign x = sign x
state_after: no goals
Theorem: QuasiconvexOn.sup
File: Mathlib/Analysis/Convex/Quasiconvex.lean

tactic: intro r
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
s : Set E
f g : E → β
inst✝ : SemilatticeSup β
hf : QuasiconvexOn 𝕜 s f
hg : QuasiconvexOn 𝕜 s g
⊢ QuasiconvexOn 𝕜 s (f ⊔ g)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
s : Set E
f g : E → β
inst✝ : SemilatticeSup β
hf : QuasiconvexOn 𝕜 s f
hg : QuasiconvexOn 𝕜 s g
r : β
⊢ Convex 𝕜 {x | x ∈ s ∧ (f ⊔ g) x ≤ r}

tactic: simp_rw [Pi.sup_def, sup_le_iff, Set.sep_and]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
s : Set E
f g : E → β
inst✝ : SemilatticeSup β
hf : QuasiconvexOn 𝕜 s f
hg : QuasiconvexOn 𝕜 s g
r : β
⊢ Convex 𝕜 {x | x ∈ s ∧ (f ⊔ g) x ≤ r}
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
s : Set E
f g : E → β
inst✝ : SemilatticeSup β
hf : QuasiconvexOn 𝕜 s f
hg : QuasiconvexOn 𝕜 s g
r : β
⊢ Convex 𝕜 ({x | x ∈ s ∧ f x ≤ r} ∩ {x | x ∈ s ∧ g x ≤ r})

tactic: exact (hf r).inter (hg r)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
s : Set E
f g : E → β
inst✝ : SemilatticeSup β
hf : QuasiconvexOn 𝕜 s f
hg : QuasiconvexOn 𝕜 s g
r : β
⊢ Convex 𝕜 ({x | x ∈ s ∧ f x ≤ r} ∩ {x | x ∈ s ∧ g x ≤ r})
state_after: no goals
Theorem: IsLowerSet.isUpperSet_preimage_coe
File: Mathlib/Order/UpperLower/Basic.lean

tactic: aesop
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : LE α
inst✝ : LE β
s t : Set α
a : α
hs : IsLowerSet s
⊢ IsUpperSet (Subtype.val ⁻¹' t) ↔ ∀ b ∈ s, ∀ c ∈ t, c ≤ b → b ∈ t
state_after: no goals
Theorem: CategoryTheory.comp_eq_zero_of_image_eq_kernel
File: Mathlib/Algebra/Homology/Exact.lean

tactic: suffices Subobject.arrow (imageSubobject f) ≫ g = 0 by
  rw [← imageSubobject_arrow_comp f, Category.assoc, this, comp_zero]
state_before: V : Type u
inst✝³ : Category.{v, u} V
inst✝² : HasImages V
inst✝¹ : HasZeroMorphisms V
inst✝ : HasKernels V
A B C : V
f : A ⟶ B
g : B ⟶ C
p : imageSubobject f = kernelSubobject g
⊢ f ≫ g = 0
state_after: V : Type u
inst✝³ : Category.{v, u} V
inst✝² : HasImages V
inst✝¹ : HasZeroMorphisms V
inst✝ : HasKernels V
A B C : V
f : A ⟶ B
g : B ⟶ C
p : imageSubobject f = kernelSubobject g
⊢ (imageSubobject f).arrow ≫ g = 0

tactic: rw [p, kernelSubobject_arrow_comp]
state_before: V : Type u
inst✝³ : Category.{v, u} V
inst✝² : HasImages V
inst✝¹ : HasZeroMorphisms V
inst✝ : HasKernels V
A B C : V
f : A ⟶ B
g : B ⟶ C
p : imageSubobject f = kernelSubobject g
⊢ (imageSubobject f).arrow ≫ g = 0
state_after: no goals

tactic: rw [← imageSubobject_arrow_comp f, Category.assoc, this, comp_zero]
state_before: V : Type u
inst✝³ : Category.{v, u} V
inst✝² : HasImages V
inst✝¹ : HasZeroMorphisms V
inst✝ : HasKernels V
A B C : V
f : A ⟶ B
g : B ⟶ C
p : imageSubobject f = kernelSubobject g
this : (imageSubobject f).arrow ≫ g = 0
⊢ f ≫ g = 0
state_after: no goals
Theorem: Set.toFinset_diff
File: Mathlib/Data/Fintype/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝³ : DecidableEq α
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s \ t)
⊢ (s \ t).toFinset = s.toFinset \ t.toFinset
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝³ : DecidableEq α
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s \ t)
a✝ : α
⊢ a✝ ∈ (s \ t).toFinset ↔ a✝ ∈ s.toFinset \ t.toFinset

tactic: simp
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝³ : DecidableEq α
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s \ t)
a✝ : α
⊢ a✝ ∈ (s \ t).toFinset ↔ a✝ ∈ s.toFinset \ t.toFinset
state_after: no goals
Theorem: Lagrange.natDegree_nodal
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: simp_rw [nodal, natDegree_prod_of_monic (h := fun i _ => monic_X_sub_C (v i)),
  natDegree_X_sub_C, sum_const, smul_eq_mul, mul_one]
state_before: R : Type u_1
inst✝¹ : CommRing R
ι : Type u_2
s : Finset ι
v : ι → R
inst✝ : Nontrivial R
⊢ (nodal s v).natDegree = s.card
state_after: no goals
Theorem: abs_sub_lt_of_nonneg_of_lt
File: Mathlib/Algebra/Order/Group/Abs.lean

tactic: rw [abs_sub_lt_iff, sub_lt_iff_lt_add, sub_lt_iff_lt_add]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a✝ b✝ c d a b n : α
a_nonneg : 0 ≤ a
a_lt_n : a < n
b_nonneg : 0 ≤ b
b_lt_n : b < n
⊢ |a - b| < n
state_after: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a✝ b✝ c d a b n : α
a_nonneg : 0 ≤ a
a_lt_n : a < n
b_nonneg : 0 ≤ b
b_lt_n : b < n
⊢ a < n + b ∧ b < n + a

tactic: exact ⟨lt_add_of_lt_of_nonneg a_lt_n b_nonneg, lt_add_of_lt_of_nonneg b_lt_n a_nonneg⟩
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a✝ b✝ c d a b n : α
a_nonneg : 0 ≤ a
a_lt_n : a < n
b_nonneg : 0 ≤ b
b_lt_n : b < n
⊢ a < n + b ∧ b < n + a
state_after: no goals
Theorem: MvPowerSeries.algebraMap_apply
File: Mathlib/RingTheory/MvPowerSeries/Basic.lean

tactic: change (MvPowerSeries.map σ (algebraMap R A)).comp (C σ R) r = _
state_before: σ : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
r : R
⊢ (algebraMap R (MvPowerSeries σ A)) r = (C σ A) ((algebraMap R A) r)
state_after: σ : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
r : R
⊢ ((map σ (algebraMap R A)).comp (C σ R)) r = (C σ A) ((algebraMap R A) r)

tactic: simp
state_before: σ : Type u_1
R : Type u_2
A : Type u_3
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
r : R
⊢ ((map σ (algebraMap R A)).comp (C σ R)) r = (C σ A) ((algebraMap R A) r)
state_after: no goals
Theorem: Matrix.sub_vecMul
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype m
A : Matrix m n α
x y : m → α
⊢ (x - y) ᵥ* A = x ᵥ* A - y ᵥ* A
state_after: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype m
A : Matrix m n α
x y : m → α
x✝ : n
⊢ ((x - y) ᵥ* A) x✝ = (x ᵥ* A - y ᵥ* A) x✝

tactic: apply sub_dotProduct
state_before: case h
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype m
A : Matrix m n α
x y : m → α
x✝ : n
⊢ ((x - y) ᵥ* A) x✝ = (x ᵥ* A - y ᵥ* A) x✝
state_after: no goals
Theorem: Subfield.mem_map
File: Mathlib/Algebra/Field/Subfield.lean

tactic: unfold map
state_before: K : Type u
L : Type v
M : Type w
inst✝² : DivisionRing K
inst✝¹ : DivisionRing L
inst✝ : DivisionRing M
s✝ t : Subfield K
f✝ f : K →+* L
s : Subfield K
y : L
⊢ y ∈ map f s ↔ ∃ x ∈ s, f x = y
state_after: K : Type u
L : Type v
M : Type w
inst✝² : DivisionRing K
inst✝¹ : DivisionRing L
inst✝ : DivisionRing M
s✝ t : Subfield K
f✝ f : K →+* L
s : Subfield K
y : L
⊢ (y ∈
      let __src := Subring.map f s.toSubring;
      { toSubring := __src, inv_mem' := ⋯ }) ↔
    ∃ x ∈ s, f x = y

tactic: simp only [mem_mk, Subring.mem_mk, Subring.mem_toSubsemiring, Subring.mem_map, mem_toSubring]
state_before: K : Type u
L : Type v
M : Type w
inst✝² : DivisionRing K
inst✝¹ : DivisionRing L
inst✝ : DivisionRing M
s✝ t : Subfield K
f✝ f : K →+* L
s : Subfield K
y : L
⊢ (y ∈
      let __src := Subring.map f s.toSubring;
      { toSubring := __src, inv_mem' := ⋯ }) ↔
    ∃ x ∈ s, f x = y
state_after: no goals
Theorem: Nat.clog_of_left_le_one
File: Mathlib/Data/Nat/Log.lean

tactic: rw [clog, dif_neg fun h : 1 < b ∧ 1 < n => h.1.not_le hb]
state_before: b : ℕ
hb : b ≤ 1
n : ℕ
⊢ clog b n = 0
state_after: no goals
Theorem: Finset.product_inter_product
File: Mathlib/Data/Finset/Prod.lean

tactic: ext ⟨x, y⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s s' : Finset α
t t' : Finset β
a : α
b : β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
⊢ s ×ˢ t ∩ s' ×ˢ t' = (s ∩ s') ×ˢ (t ∩ t')
state_after: case a.mk
α : Type u_1
β : Type u_2
γ : Type u_3
s s' : Finset α
t t' : Finset β
a : α
b : β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
x : α
y : β
⊢ (x, y) ∈ s ×ˢ t ∩ s' ×ˢ t' ↔ (x, y) ∈ (s ∩ s') ×ˢ (t ∩ t')

tactic: simp only [and_assoc, and_left_comm, mem_inter, mem_product]
state_before: case a.mk
α : Type u_1
β : Type u_2
γ : Type u_3
s s' : Finset α
t t' : Finset β
a : α
b : β
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
x : α
y : β
⊢ (x, y) ∈ s ×ˢ t ∩ s' ×ˢ t' ↔ (x, y) ∈ (s ∩ s') ×ˢ (t ∩ t')
state_after: no goals
Theorem: Function.Antiperiodic.zsmul_sub_eq
File: Mathlib/Algebra/Periodic.lean

tactic: rw [sub_eq_add_neg, add_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddCommGroup α
inst✝ : AddGroup β
h : Antiperiodic f c
n : ℤ
⊢ f (n • c - x) = ↑n.negOnePow • f (-x)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddCommGroup α
inst✝ : AddGroup β
h : Antiperiodic f c
n : ℤ
⊢ f (-x + n • c) = ↑n.negOnePow • f (-x)

tactic: exact h.add_zsmul_eq n
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝¹ : AddCommGroup α
inst✝ : AddGroup β
h : Antiperiodic f c
n : ℤ
⊢ f (-x + n • c) = ↑n.negOnePow • f (-x)
state_after: no goals