1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Filter.hasBasis_pure
File: Mathlib/Order/Filter/Bases.lean

tactic: simp only [← principal_singleton, hasBasis_principal]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
x : α
⊢ (pure x).HasBasis (fun x => True) fun x_1 => {x}
state_after: no goals
Theorem: one_le_one_div
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rwa [le_one_div (@zero_lt_one α _ _ _ _ _) h1, one_div_one]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h1 : 0 < a
h2 : a ≤ 1
⊢ 1 ≤ 1 / a
state_after: no goals
Theorem: LinearMap.toMatrixAlgEquiv_apply
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: simp [LinearMap.toMatrixAlgEquiv, LinearMap.toMatrix_apply]
state_before: R : Type u_1
inst✝⁹ : CommSemiring R
l : Type u_2
m : Type u_3
n : Type u_4
inst✝⁸ : Fintype n
inst✝⁷ : Fintype m
inst✝⁶ : DecidableEq n
M₁ : Type u_5
M₂ : Type u_6
inst✝⁵ : AddCommMonoid M₁
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R M₁
inst✝² : Module R M₂
v₁ : Basis n R M₁
v₂ : Basis m R M₂
M₃ : Type u_7
inst✝¹ : AddCommMonoid M₃
inst✝ : Module R M₃
v₃ : Basis l R M₃
f : M₁ →ₗ[R] M₁
i j : n
⊢ (toMatrixAlgEquiv v₁) f i j = (v₁.repr (f (v₁ j))) i
state_after: no goals
Theorem: Profinite.pullback.hom_ext
File: Mathlib/Topology/Category/Profinite/Limits.lean

tactic: ext z
state_before: X Y B : Profinite
f : X ⟶ B
g : Y ⟶ B
Z : Profinite
a b : Z ⟶ pullback f g
hfst : a ≫ fst f g = b ≫ fst f g
hsnd : a ≫ snd f g = b ≫ snd f g
⊢ a = b
state_after: case w
X Y B : Profinite
f : X ⟶ B
g : Y ⟶ B
Z : Profinite
a b : Z ⟶ pullback f g
hfst : a ≫ fst f g = b ≫ fst f g
hsnd : a ≫ snd f g = b ≫ snd f g
z : (forget Profinite).obj Z
⊢ a z = b z

tactic: apply Subtype.ext
state_before: case w
X Y B : Profinite
f : X ⟶ B
g : Y ⟶ B
Z : Profinite
a b : Z ⟶ pullback f g
z : (forget Profinite).obj Z
hfst : (a ≫ fst f g) z = (b ≫ fst f g) z
hsnd : (a ≫ snd f g) z = (b ≫ snd f g) z
⊢ a z = b z
state_after: case w.a
X Y B : Profinite
f : X ⟶ B
g : Y ⟶ B
Z : Profinite
a b : Z ⟶ pullback f g
z : (forget Profinite).obj Z
hfst : (a ≫ fst f g) z = (b ≫ fst f g) z
hsnd : (a ≫ snd f g) z = (b ≫ snd f g) z
⊢ ↑(a z) = ↑(b z)

tactic: apply Prod.ext
state_before: case w.a
X Y B : Profinite
f : X ⟶ B
g : Y ⟶ B
Z : Profinite
a b : Z ⟶ pullback f g
z : (forget Profinite).obj Z
hfst : (a ≫ fst f g) z = (b ≫ fst f g) z
hsnd : (a ≫ snd f g) z = (b ≫ snd f g) z
⊢ ↑(a z) = ↑(b z)
state_after: case w.a.a
X Y B : Profinite
f : X ⟶ B
g : Y ⟶ B
Z : Profinite
a b : Z ⟶ pullback f g
z : (forget Profinite).obj Z
hfst : (a ≫ fst f g) z = (b ≫ fst f g) z
hsnd : (a ≫ snd f g) z = (b ≫ snd f g) z
⊢ (↑(a z)).1 = (↑(b z)).1

case w.a.a
X Y B : Profinite
f : X ⟶ B
g : Y ⟶ B
Z : Profinite
a b : Z ⟶ pullback f g
z : (forget Profinite).obj Z
hfst : (a ≫ fst f g) z = (b ≫ fst f g) z
hsnd : (a ≫ snd f g) z = (b ≫ snd f g) z
⊢ (↑(a z)).2 = (↑(b z)).2

tactic: exact hfst
state_before: case w.a.a
X Y B : Profinite
f : X ⟶ B
g : Y ⟶ B
Z : Profinite
a b : Z ⟶ pullback f g
z : (forget Profinite).obj Z
hfst : (a ≫ fst f g) z = (b ≫ fst f g) z
hsnd : (a ≫ snd f g) z = (b ≫ snd f g) z
⊢ (↑(a z)).1 = (↑(b z)).1
state_after: no goals

tactic: exact hsnd
state_before: case w.a.a
X Y B : Profinite
f : X ⟶ B
g : Y ⟶ B
Z : Profinite
a b : Z ⟶ pullback f g
z : (forget Profinite).obj Z
hfst : (a ≫ fst f g) z = (b ≫ fst f g) z
hsnd : (a ≫ snd f g) z = (b ≫ snd f g) z
⊢ (↑(a z)).2 = (↑(b z)).2
state_after: no goals
Theorem: TrivSqZeroExt.nnnorm_inr
File: Mathlib/Analysis/NormedSpace/TrivSqZeroExt.lean

tactic: simp [nnnorm_def]
state_before: 𝕜 : Type u_1
S : Type u_2
R : Type u_3
M : Type u_4
inst✝¹³ : SeminormedCommRing S
inst✝¹² : SeminormedRing R
inst✝¹¹ : SeminormedAddCommGroup M
inst✝¹⁰ : Algebra S R
inst✝⁹ : Module S M
inst✝⁸ : Module R M
inst✝⁷ : Module Rᵐᵒᵖ M
inst✝⁶ : BoundedSMul S R
inst✝⁵ : BoundedSMul S M
inst✝⁴ : BoundedSMul R M
inst✝³ : BoundedSMul Rᵐᵒᵖ M
inst✝² : SMulCommClass R Rᵐᵒᵖ M
inst✝¹ : IsScalarTower S R M
inst✝ : IsScalarTower S Rᵐᵒᵖ M
m : M
⊢ ‖inr m‖₊ = ‖m‖₊
state_after: no goals
Theorem: toIntermediateField'_toSubalgebra
File: Mathlib/FieldTheory/IntermediateField.lean

tactic: ext
state_before: K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S✝ S : IntermediateField K L
⊢ S.toIntermediateField' ⋯ = S
state_after: case h
K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S✝ S : IntermediateField K L
x✝ : L
⊢ x✝ ∈ S.toIntermediateField' ⋯ ↔ x✝ ∈ S

tactic: rfl
state_before: case h
K : Type u_1
L : Type u_2
L' : Type u_3
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Field L'
inst✝¹ : Algebra K L
inst✝ : Algebra K L'
S✝ S : IntermediateField K L
x✝ : L
⊢ x✝ ∈ S.toIntermediateField' ⋯ ↔ x✝ ∈ S
state_after: no goals
Theorem: Set.Finite.bddAbove_biUnion
File: Mathlib/Data/Set/Finite.lean

tactic: simp only [biUnion_empty, bddAbove_empty, forall_mem_empty]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s✝ t : Set α
inst✝² : Preorder α
inst✝¹ : IsDirected α fun x x_1 => x ≤ x_1
inst✝ : Nonempty α
s : Set α
I : Set β
S : β → Set α
H : I.Finite
⊢ BddAbove (⋃ i ∈ ∅, S i) ↔ ∀ i ∈ ∅, BddAbove (S i)
state_after: no goals

tactic: simp only [biUnion_insert, forall_mem_insert, bddAbove_union, hs]
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s✝¹ t : Set α
inst✝² : Preorder α
inst✝¹ : IsDirected α fun x x_1 => x ≤ x_1
inst✝ : Nonempty α
s : Set α
I : Set β
S : β → Set α
H : I.Finite
a✝ : β
s✝ : Set β
x✝¹ : a✝ ∉ s✝
x✝ : s✝.Finite
hs : BddAbove (⋃ i ∈ s✝, S i) ↔ ∀ i ∈ s✝, BddAbove (S i)
⊢ BddAbove (⋃ i ∈ insert a✝ s✝, S i) ↔ ∀ i ∈ insert a✝ s✝, BddAbove (S i)
state_after: no goals
Theorem: tprod_congr_set_coe
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: rw [h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f✝ g : β → α
a a₁ a₂ : α
f : β → α
s t : Set β
h : s = t
⊢ ∏' (x : ↑s), f ↑x = ∏' (x : ↑t), f ↑x
state_after: no goals
Theorem: pow_four_add_four_mul_pow_four'
File: Mathlib/Algebra/Ring/Identities.lean

tactic: ring
state_before: R : Type u_1
inst✝ : CommRing R
a b x₁ x₂ x₃ x₄ x₅ x₆ x₇ x₈ y₁ y₂ y₃ y₄ y₅ y₆ y₇ y₈ n : R
⊢ a ^ 4 + 4 * b ^ 4 = (a ^ 2 - 2 * a * b + 2 * b ^ 2) * (a ^ 2 + 2 * a * b + 2 * b ^ 2)
state_after: no goals
Theorem: Filter.tendsto_const_mul_atBot_iff_neg
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simp [tendsto_const_mul_atBot_iff, h, h.not_tendsto disjoint_atTop_atBot]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝¹ : LinearOrderedField α
l : Filter β
f : β → α
r : α
inst✝ : l.NeBot
h : Tendsto f l atTop
⊢ Tendsto (fun x => r * f x) l atBot ↔ r < 0
state_after: no goals
Theorem: tendsto_norm_atTop_iff_cobounded'
File: Mathlib/Analysis/Normed/Group/Bounded.lean

tactic: rw [← comap_norm_atTop', tendsto_comap_iff]
state_before: α : Type u_1
ι : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
f : α → E
l : Filter α
⊢ Tendsto (fun x => ‖f x‖) l atTop ↔ Tendsto f l (cobounded E)
state_after: α : Type u_1
ι : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
f : α → E
l : Filter α
⊢ Tendsto (fun x => ‖f x‖) l atTop ↔ Tendsto (norm ∘ f) l atTop

tactic: rfl
state_before: α : Type u_1
ι : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
f : α → E
l : Filter α
⊢ Tendsto (fun x => ‖f x‖) l atTop ↔ Tendsto (norm ∘ f) l atTop
state_after: no goals
Theorem: div_lt_div_of_pos_left
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: simpa only [div_eq_mul_inv, mul_lt_mul_left ha, inv_lt_inv (hc.trans h) hc]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
hc : 0 < c
h : c < b
⊢ a / b < a / c
state_after: no goals
Theorem: Submodule.snd_map_fst
File: Mathlib/LinearAlgebra/Prod.lean

tactic: rw [eq_bot_iff]
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
p : Submodule R M
q : Submodule R M₂
⊢ map (LinearMap.fst R M M₂) (snd R M M₂) = ⊥
state_after: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
p : Submodule R M
q : Submodule R M₂
⊢ map (LinearMap.fst R M M₂) (snd R M M₂) ≤ ⊥

tactic: intro x
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
p : Submodule R M
q : Submodule R M₂
⊢ map (LinearMap.fst R M M₂) (snd R M M₂) ≤ ⊥
state_after: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
p : Submodule R M
q : Submodule R M₂
x : M
⊢ x ∈ map (LinearMap.fst R M M₂) (snd R M M₂) → x ∈ ⊥

tactic: simp only [snd, comap_bot, mem_map, mem_ker, fst_apply, eq_comm, Prod.exists, exists_eq_left,
  exists_const, mem_bot, imp_self]
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
p : Submodule R M
q : Submodule R M₂
x : M
⊢ x ∈ map (LinearMap.fst R M M₂) (snd R M M₂) → x ∈ ⊥
state_after: no goals
Theorem: wcovBy_iff_covBy_or_eq
File: Mathlib/Order/Cover.lean

tactic: rw [le_antisymm_iff, wcovBy_iff_covBy_or_le_and_le]
state_before: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
⊢ a ⩿ b ↔ a ⋖ b ∨ a = b
state_after: no goals
Theorem: Finset.offDiag_card
File: Mathlib/Data/Finset/Prod.lean

tactic: rw [s.diag_card] at this
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t : Finset α
x : α × α
this : s.diag.card + s.offDiag.card = s.card * s.card
⊢ s.offDiag.card = s.card * s.card - s.card
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t : Finset α
x : α × α
this : s.card + s.offDiag.card = s.card * s.card
⊢ s.offDiag.card = s.card * s.card - s.card

tactic: omega
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t : Finset α
x : α × α
this : s.card + s.offDiag.card = s.card * s.card
⊢ s.offDiag.card = s.card * s.card - s.card
state_after: no goals

tactic: rw [← card_product, diag, offDiag]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t : Finset α
x : α × α
⊢ s.diag.card + s.offDiag.card = s.card * s.card
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t : Finset α
x : α × α
⊢ (filter (fun a => a.1 = a.2) (s ×ˢ s)).card + (filter (fun a => a.1 ≠ a.2) (s ×ˢ s)).card = (s ×ˢ s).card

tactic: conv_rhs => rw [← filter_card_add_filter_neg_card_eq_card (fun a => a.1 = a.2)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t : Finset α
x : α × α
⊢ (filter (fun a => a.1 = a.2) (s ×ˢ s)).card + (filter (fun a => a.1 ≠ a.2) (s ×ˢ s)).card = (s ×ˢ s).card
state_after: no goals
Theorem: map_extChartAt_nhdsWithin_eq_image'
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rwa [← extChartAt_source I]
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
inst✝¹ : ChartedSpace H M
inst✝ : ChartedSpace H' M'
x y : M
hy : y ∈ (extChartAt I x).source
⊢ y ∈ (chartAt H x).source
state_after: no goals
Theorem: Irrational.eventually_forall_le_dist_cast_rat_of_den_le
File: Mathlib/Topology/Instances/Irrational.lean

tactic: simpa only [Rat.cast_def] using H r.den hr r.num
state_before: x : ℝ
hx : Irrational x
n : ℕ
ε : ℝ
H : ∀ k ≤ n, ∀ (m : ℤ), ε ≤ dist x (↑m / ↑k)
r : ℚ
hr : r.den ≤ n
⊢ ε ≤ dist x ↑r
state_after: no goals
Theorem: MvPowerSeries.invOfUnit_eq'
File: Mathlib/RingTheory/MvPowerSeries/Inverse.lean

tactic: rw [← invOfUnit_eq φ (h.symm ▸ u.ne_zero)]
state_before: σ : Type u_1
R : Type u_2
k : Type u_3
inst✝ : Field k
φ : MvPowerSeries σ k
u : kˣ
h : (constantCoeff σ k) φ = ↑u
⊢ φ.invOfUnit u = φ⁻¹
state_after: σ : Type u_1
R : Type u_2
k : Type u_3
inst✝ : Field k
φ : MvPowerSeries σ k
u : kˣ
h : (constantCoeff σ k) φ = ↑u
⊢ φ.invOfUnit u = φ.invOfUnit (Units.mk0 ((constantCoeff σ k) φ) ⋯)

tactic: apply congrArg (invOfUnit φ)
state_before: σ : Type u_1
R : Type u_2
k : Type u_3
inst✝ : Field k
φ : MvPowerSeries σ k
u : kˣ
h : (constantCoeff σ k) φ = ↑u
⊢ φ.invOfUnit u = φ.invOfUnit (Units.mk0 ((constantCoeff σ k) φ) ⋯)
state_after: σ : Type u_1
R : Type u_2
k : Type u_3
inst✝ : Field k
φ : MvPowerSeries σ k
u : kˣ
h : (constantCoeff σ k) φ = ↑u
⊢ u = Units.mk0 ((constantCoeff σ k) φ) ⋯

tactic: rw [Units.ext_iff]
state_before: σ : Type u_1
R : Type u_2
k : Type u_3
inst✝ : Field k
φ : MvPowerSeries σ k
u : kˣ
h : (constantCoeff σ k) φ = ↑u
⊢ u = Units.mk0 ((constantCoeff σ k) φ) ⋯
state_after: σ : Type u_1
R : Type u_2
k : Type u_3
inst✝ : Field k
φ : MvPowerSeries σ k
u : kˣ
h : (constantCoeff σ k) φ = ↑u
⊢ ↑u = ↑(Units.mk0 ((constantCoeff σ k) φ) ⋯)

tactic: exact h.symm
state_before: σ : Type u_1
R : Type u_2
k : Type u_3
inst✝ : Field k
φ : MvPowerSeries σ k
u : kˣ
h : (constantCoeff σ k) φ = ↑u
⊢ ↑u = ↑(Units.mk0 ((constantCoeff σ k) φ) ⋯)
state_after: no goals
Theorem: mul_div_cancel
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [← mul_div_assoc, mul_div_cancel_left]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : CommGroup G
a✝ b✝ c d a b : G
⊢ a * (b / a) = b
state_after: no goals
Theorem: Nat.add_factorial_le_factorial_add
File: Mathlib/Data/Nat/Factorial/Basic.lean

tactic: cases' n1 with h
state_before: m n✝ i n : ℕ
n1 : 1 ≤ n
⊢ i + n ! ≤ (i + n)!
state_after: case refl
m n i : ℕ
⊢ i + 1! ≤ (i + 1)!

case step
m n i h : ℕ
a✝ : Nat.le 1 h
⊢ i + h.succ ! ≤ (i + h.succ)!

tactic: exact add_factorial_succ_le_factorial_add_succ i h
state_before: case step
m n i h : ℕ
a✝ : Nat.le 1 h
⊢ i + h.succ ! ≤ (i + h.succ)!
state_after: no goals

tactic: exact self_le_factorial _
state_before: case refl
m n i : ℕ
⊢ i + 1! ≤ (i + 1)!
state_after: no goals
Theorem: sup_sdiff_injOn
File: Mathlib/Combinatorics/SetFamily/Compression/UV.lean

tactic: rintro a ha b hb hab
state_before: α : Type u_1
inst✝ : GeneralizedBooleanAlgebra α
u v : α
⊢ Set.InjOn (fun x => (x ⊔ u) \ v) {x | Disjoint u x ∧ v ≤ x}
state_after: α : Type u_1
inst✝ : GeneralizedBooleanAlgebra α
u v a : α
ha : a ∈ {x | Disjoint u x ∧ v ≤ x}
b : α
hb : b ∈ {x | Disjoint u x ∧ v ≤ x}
hab : (fun x => (x ⊔ u) \ v) a = (fun x => (x ⊔ u) \ v) b
⊢ a = b

tactic: have h : ((a ⊔ u) \ v) \ u ⊔ v = ((b ⊔ u) \ v) \ u ⊔ v := by
  dsimp at hab
  rw [hab]
state_before: α : Type u_1
inst✝ : GeneralizedBooleanAlgebra α
u v a : α
ha : a ∈ {x | Disjoint u x ∧ v ≤ x}
b : α
hb : b ∈ {x | Disjoint u x ∧ v ≤ x}
hab : (fun x => (x ⊔ u) \ v) a = (fun x => (x ⊔ u) \ v) b
⊢ a = b
state_after: α : Type u_1
inst✝ : GeneralizedBooleanAlgebra α
u v a : α
ha : a ∈ {x | Disjoint u x ∧ v ≤ x}
b : α
hb : b ∈ {x | Disjoint u x ∧ v ≤ x}
hab : (fun x => (x ⊔ u) \ v) a = (fun x => (x ⊔ u) \ v) b
h : ((a ⊔ u) \ v) \ u ⊔ v = ((b ⊔ u) \ v) \ u ⊔ v
⊢ a = b

tactic: rwa [sdiff_sdiff_comm, ha.1.symm.sup_sdiff_cancel_right, sdiff_sdiff_comm,
  hb.1.symm.sup_sdiff_cancel_right, sdiff_sup_cancel ha.2, sdiff_sup_cancel hb.2] at h
state_before: α : Type u_1
inst✝ : GeneralizedBooleanAlgebra α
u v a : α
ha : a ∈ {x | Disjoint u x ∧ v ≤ x}
b : α
hb : b ∈ {x | Disjoint u x ∧ v ≤ x}
hab : (fun x => (x ⊔ u) \ v) a = (fun x => (x ⊔ u) \ v) b
h : ((a ⊔ u) \ v) \ u ⊔ v = ((b ⊔ u) \ v) \ u ⊔ v
⊢ a = b
state_after: no goals

tactic: dsimp at hab
state_before: α : Type u_1
inst✝ : GeneralizedBooleanAlgebra α
u v a : α
ha : a ∈ {x | Disjoint u x ∧ v ≤ x}
b : α
hb : b ∈ {x | Disjoint u x ∧ v ≤ x}
hab : (fun x => (x ⊔ u) \ v) a = (fun x => (x ⊔ u) \ v) b
⊢ ((a ⊔ u) \ v) \ u ⊔ v = ((b ⊔ u) \ v) \ u ⊔ v
state_after: α : Type u_1
inst✝ : GeneralizedBooleanAlgebra α
u v a : α
ha : a ∈ {x | Disjoint u x ∧ v ≤ x}
b : α
hb : b ∈ {x | Disjoint u x ∧ v ≤ x}
hab : (a ⊔ u) \ v = (b ⊔ u) \ v
⊢ ((a ⊔ u) \ v) \ u ⊔ v = ((b ⊔ u) \ v) \ u ⊔ v

tactic: rw [hab]
state_before: α : Type u_1
inst✝ : GeneralizedBooleanAlgebra α
u v a : α
ha : a ∈ {x | Disjoint u x ∧ v ≤ x}
b : α
hb : b ∈ {x | Disjoint u x ∧ v ≤ x}
hab : (a ⊔ u) \ v = (b ⊔ u) \ v
⊢ ((a ⊔ u) \ v) \ u ⊔ v = ((b ⊔ u) \ v) \ u ⊔ v
state_after: no goals
Theorem: SignType.pos_iff
File: Mathlib/Data/Sign.lean

tactic: cases a <;> decide
state_before: a : SignType
⊢ 0 < a ↔ a = 1
state_after: no goals
Theorem: TopCat.prodIsoProd_inv_snd
File: Mathlib/Topology/Category/TopCat/Limits/Products.lean

tactic: simp [Iso.inv_comp_eq]
state_before: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
⊢ (X.prodIsoProd Y).inv ≫ prod.snd = prodSnd
state_after: no goals
Theorem: IsLocalization.mem_invSubmonoid_iff_exists_mk'
File: Mathlib/RingTheory/Localization/InvSubmonoid.lean

tactic: simp_rw [← toInvSubmonoid_eq_mk']
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
inst✝ : IsLocalization M S
x : S
⊢ x ∈ invSubmonoid M S ↔ ∃ m, mk' S 1 m = x
state_after: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
inst✝ : IsLocalization M S
x : S
⊢ x ∈ invSubmonoid M S ↔ ∃ m, ↑((toInvSubmonoid M S) m) = x

tactic: exact ⟨fun h => ⟨_, congr_arg Subtype.val (toInvSubmonoid_surjective M S ⟨x, h⟩).choose_spec⟩,
  fun h => h.choose_spec ▸ (toInvSubmonoid M S h.choose).prop⟩
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
inst✝ : IsLocalization M S
x : S
⊢ x ∈ invSubmonoid M S ↔ ∃ m, ↑((toInvSubmonoid M S) m) = x
state_after: no goals
Theorem: Real.volume_Ici
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: rw [← measure_congr Ioi_ae_eq_Ici]
state_before: ι : Type u_1
inst✝ : Fintype ι
a : ℝ
⊢ volume (Ici a) = ⊤
state_after: ι : Type u_1
inst✝ : Fintype ι
a : ℝ
⊢ volume (Ioi a) = ⊤

tactic: simp
state_before: ι : Type u_1
inst✝ : Fintype ι
a : ℝ
⊢ volume (Ioi a) = ⊤
state_after: no goals
Theorem: MeasureTheory.measure_biUnion_toMeasurable
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: haveI := hc.toEncodable
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
I : Set β
hc : I.Countable
s : β → Set α
⊢ μ (⋃ b ∈ I, toMeasurable μ (s b)) = μ (⋃ b ∈ I, s b)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
I : Set β
hc : I.Countable
s : β → Set α
this : Encodable ↑I
⊢ μ (⋃ b ∈ I, toMeasurable μ (s b)) = μ (⋃ b ∈ I, s b)

tactic: simp only [biUnion_eq_iUnion, measure_iUnion_toMeasurable]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m : MeasurableSpace α
μ μ₁ μ₂ : Measure α
s✝ s₁ s₂ t : Set α
I : Set β
hc : I.Countable
s : β → Set α
this : Encodable ↑I
⊢ μ (⋃ b ∈ I, toMeasurable μ (s b)) = μ (⋃ b ∈ I, s b)
state_after: no goals
Theorem: CategoryTheory.Limits.hasInitial_of_hasInitial_of_preservesColimit
File: Mathlib/CategoryTheory/Limits/Preserves/Shapes/Terminal.lean

tactic: haveI := HasColimit.mk ⟨_, isColimitOfHasInitialOfPreservesColimit G⟩
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
G : C ⥤ D
X : C
inst✝¹ : HasInitial C
inst✝ : PreservesColimit (Functor.empty C) G
F : Discrete PEmpty.{1} ⥤ D
⊢ HasColimit F
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
G : C ⥤ D
X : C
inst✝¹ : HasInitial C
inst✝ : PreservesColimit (Functor.empty C) G
F : Discrete PEmpty.{1} ⥤ D
this : HasColimit (Functor.empty D)
⊢ HasColimit F

tactic: apply hasColimitOfIso F.uniqueFromEmpty
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
G : C ⥤ D
X : C
inst✝¹ : HasInitial C
inst✝ : PreservesColimit (Functor.empty C) G
F : Discrete PEmpty.{1} ⥤ D
this : HasColimit (Functor.empty D)
⊢ HasColimit F
state_after: no goals