1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finset.mem_disjiUnion
File: Mathlib/Data/Finset/Union.lean

tactic: simp only [mem_def, disjiUnion_val, Multiset.mem_bind, exists_prop]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s s₁ s₂ : Finset α
t t₁ t₂ : α → Finset β
b : β
h : (↑s).PairwiseDisjoint t
⊢ b ∈ s.disjiUnion t h ↔ ∃ a ∈ s, b ∈ t a
state_after: no goals
Theorem: re_inner_eq_norm_mul_self_add_norm_mul_self_sub_norm_sub_mul_self_div_two
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [@norm_sub_mul_self 𝕜]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
⊢ re ⟪x, y⟫_𝕜 = (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - ‖x - y‖ * ‖x - y‖) / 2
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
⊢ re ⟪x, y⟫_𝕜 = (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - (‖x‖ * ‖x‖ - 2 * re ⟪x, y⟫_𝕜 + ‖y‖ * ‖y‖)) / 2

tactic: ring
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
⊢ re ⟪x, y⟫_𝕜 = (‖x‖ * ‖x‖ + ‖y‖ * ‖y‖ - (‖x‖ * ‖x‖ - 2 * re ⟪x, y⟫_𝕜 + ‖y‖ * ‖y‖)) / 2
state_after: no goals
Theorem: IsLocallyConstant.range_finite
File: Mathlib/Topology/LocallyConstant/Basic.lean

tactic: letI : TopologicalSpace Y := ⊥
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
f : X → Y
hf : IsLocallyConstant f
⊢ (range f).Finite
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
f : X → Y
hf : IsLocallyConstant f
this : TopologicalSpace Y := ⊥
⊢ (range f).Finite

tactic: haveI := discreteTopology_bot Y
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
f : X → Y
hf : IsLocallyConstant f
this : TopologicalSpace Y := ⊥
⊢ (range f).Finite
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
f : X → Y
hf : IsLocallyConstant f
this✝ : TopologicalSpace Y := ⊥
this : DiscreteTopology Y
⊢ (range f).Finite

tactic: exact (isCompact_range hf.continuous).finite_of_discrete
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
f : X → Y
hf : IsLocallyConstant f
this✝ : TopologicalSpace Y := ⊥
this : DiscreteTopology Y
⊢ (range f).Finite
state_after: no goals
Theorem: ContinuousMap.mem_idealOfSet
File: Mathlib/Topology/ContinuousFunction/Ideals.lean

tactic: convert Iff.rfl
state_before: X : Type u_1
R : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : Semiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
s : Set X
f : C(X, R)
⊢ f ∈ idealOfSet R s ↔ ∀ ⦃x : X⦄, x ∈ sᶜ → f x = 0
state_after: no goals
Theorem: Set.toFinset_ssubset
File: Mathlib/Data/Fintype/Basic.lean

tactic: rw [← Finset.coe_ssubset, coe_toFinset]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s t✝ : Set α
inst✝ : Fintype ↑s
t : Finset α
⊢ s.toFinset ⊂ t ↔ s ⊂ ↑t
state_after: no goals
Theorem: AffineBasis.centroid_mem_interior_convexHull
File: Mathlib/Analysis/NormedSpace/AddTorsorBases.lean

tactic: haveI := b.nonempty
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ι : Type u_3
inst✝ : Fintype ι
b : AffineBasis ι ℝ V
⊢ Finset.centroid ℝ Finset.univ ⇑b ∈ interior ((convexHull ℝ) (range ⇑b))
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ι : Type u_3
inst✝ : Fintype ι
b : AffineBasis ι ℝ V
this : Nonempty ι
⊢ Finset.centroid ℝ Finset.univ ⇑b ∈ interior ((convexHull ℝ) (range ⇑b))

tactic: simp only [b.interior_convexHull, mem_setOf_eq, b.coord_apply_centroid (Finset.mem_univ _),
  inv_pos, Nat.cast_pos, Finset.card_pos, Finset.univ_nonempty, forall_true_iff]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : NormedSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ι : Type u_3
inst✝ : Fintype ι
b : AffineBasis ι ℝ V
this : Nonempty ι
⊢ Finset.centroid ℝ Finset.univ ⇑b ∈ interior ((convexHull ℝ) (range ⇑b))
state_after: no goals
Theorem: CategoryTheory.obj_ε_inv_app
File: Mathlib/CategoryTheory/Monoidal/End.lean

tactic: rw [← cancel_mono ((F.obj n).map (F.ε.app X)), ← Functor.map_comp]
state_before: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
n : M
X : C
⊢ (F.obj n).map (F.εIso.inv.app X) = (F.μ (𝟙_ M) n).app X ≫ (F.map (λ_ n).hom).app X
state_after: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
n : M
X : C
⊢ (F.obj n).map (F.εIso.inv.app X ≫ F.ε.app X) =
    ((F.μ (𝟙_ M) n).app X ≫ (F.map (λ_ n).hom).app X) ≫ (F.obj n).map (F.ε.app X)

tactic: simp
state_before: C : Type u
inst✝² : Category.{v, u} C
M : Type u_1
inst✝¹ : Category.{u_2, u_1} M
inst✝ : MonoidalCategory M
F : MonoidalFunctor M (C ⥤ C)
n : M
X : C
⊢ (F.obj n).map (F.εIso.inv.app X ≫ F.ε.app X) =
    ((F.μ (𝟙_ M) n).app X ≫ (F.map (λ_ n).hom).app X) ≫ (F.obj n).map (F.ε.app X)
state_after: no goals
Theorem: Metric.infEdist_eq_top_iff
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: rcases s.eq_empty_or_nonempty with rfl | hs <;> simp [*, Nonempty.ne_empty, infEdist_ne_top]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
⊢ infEdist x s = ⊤ ↔ s = ∅
state_after: no goals
Theorem: Polynomial.mem_aroots
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: rw [mem_aroots', Polynomial.map_ne_zero_iff]
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝⁶ : CommRing R
inst✝⁵ : IsDomain R
p✝ q : R[X]
inst✝⁴ : CommRing T
inst✝³ : CommRing S
inst✝² : IsDomain S
inst✝¹ : Algebra T S
inst✝ : NoZeroSMulDivisors T S
p : T[X]
a : S
⊢ a ∈ p.aroots S ↔ p ≠ 0 ∧ (aeval a) p = 0
state_after: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝⁶ : CommRing R
inst✝⁵ : IsDomain R
p✝ q : R[X]
inst✝⁴ : CommRing T
inst✝³ : CommRing S
inst✝² : IsDomain S
inst✝¹ : Algebra T S
inst✝ : NoZeroSMulDivisors T S
p : T[X]
a : S
⊢ Function.Injective ⇑(algebraMap T S)

tactic: exact NoZeroSMulDivisors.algebraMap_injective T S
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝⁶ : CommRing R
inst✝⁵ : IsDomain R
p✝ q : R[X]
inst✝⁴ : CommRing T
inst✝³ : CommRing S
inst✝² : IsDomain S
inst✝¹ : Algebra T S
inst✝ : NoZeroSMulDivisors T S
p : T[X]
a : S
⊢ Function.Injective ⇑(algebraMap T S)
state_after: no goals
Theorem: Matrix.inv_smul'
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: simp [h, smul_smul]
state_before: l : Type u_1
m : Type u
n : Type u'
α : Type v
inst✝² : Fintype n
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A B : Matrix n n α
k : αˣ
h : IsUnit A.det
⊢ k⁻¹ • A⁻¹ * k • A = 1
state_after: no goals
Theorem: Cardinal.mk_preimage_of_subset_range
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [← lift_id #(↑(f ⁻¹' s)), ← lift_id #(↑s)]
state_before: α β : Type u
c : Cardinal.{?u.231808}
f : α → β
s : Set β
h : s ⊆ range f
⊢ #↑s ≤ #↑(f ⁻¹' s)
state_after: α β : Type u
c : Cardinal.{?u.231808}
f : α → β
s : Set β
h : s ⊆ range f
⊢ lift.{u, u} #↑s ≤ lift.{u, u} #↑(f ⁻¹' s)

tactic: exact mk_preimage_of_subset_range_lift f s h
state_before: α β : Type u
c : Cardinal.{?u.231808}
f : α → β
s : Set β
h : s ⊆ range f
⊢ lift.{u, u} #↑s ≤ lift.{u, u} #↑(f ⁻¹' s)
state_after: no goals
Theorem: SimpleGraph.Subgraph.deleteEdges_spanningCoe_eq
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: ext
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : G.Subgraph
s : Set (Sym2 V)
⊢ G'.spanningCoe.deleteEdges s = (G'.deleteEdges s).spanningCoe
state_after: case Adj.h.h.a
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : G.Subgraph
s : Set (Sym2 V)
x✝¹ x✝ : V
⊢ (G'.spanningCoe.deleteEdges s).Adj x✝¹ x✝ ↔ (G'.deleteEdges s).spanningCoe.Adj x✝¹ x✝

tactic: simp
state_before: case Adj.h.h.a
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' : G.Subgraph
s : Set (Sym2 V)
x✝¹ x✝ : V
⊢ (G'.spanningCoe.deleteEdges s).Adj x✝¹ x✝ ↔ (G'.deleteEdges s).spanningCoe.Adj x✝¹ x✝
state_after: no goals
Theorem: ProbabilityTheory.kernel.comp_const_apply_eq_bind
File: Mathlib/Probability/Kernel/Invariance.lean

tactic: rw [← const_apply (μ.bind κ) a, const_bind_eq_comp_const κ μ]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
κ : ↥(kernel α β)
μ : Measure α
a : α
⊢ (κ ∘ₖ const α μ) a = μ.bind ⇑κ
state_after: no goals
Theorem: Subgroup.subgroupOf_sup
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: refine
  map_injective_of_ker_le B.subtype (ker_le_comap _ _)
    (le_trans (ker_le_comap B.subtype _) le_sup_left) ?_
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A✝ : Type u_4
inst✝¹ : AddGroup A✝
N : Type u_5
inst✝ : Group N
A A' B : Subgroup G
hA : A ≤ B
hA' : A' ≤ B
⊢ (A ⊔ A').subgroupOf B = A.subgroupOf B ⊔ A'.subgroupOf B
state_after: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A✝ : Type u_4
inst✝¹ : AddGroup A✝
N : Type u_5
inst✝ : Group N
A A' B : Subgroup G
hA : A ≤ B
hA' : A' ≤ B
⊢ map B.subtype ((A ⊔ A').subgroupOf B) = map B.subtype (A.subgroupOf B ⊔ A'.subgroupOf B)

tactic: simp only [subgroupOf, map_comap_eq, map_sup, subtype_range]
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A✝ : Type u_4
inst✝¹ : AddGroup A✝
N : Type u_5
inst✝ : Group N
A A' B : Subgroup G
hA : A ≤ B
hA' : A' ≤ B
⊢ map B.subtype ((A ⊔ A').subgroupOf B) = map B.subtype (A.subgroupOf B ⊔ A'.subgroupOf B)
state_after: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A✝ : Type u_4
inst✝¹ : AddGroup A✝
N : Type u_5
inst✝ : Group N
A A' B : Subgroup G
hA : A ≤ B
hA' : A' ≤ B
⊢ B ⊓ (A ⊔ A') = B ⊓ A ⊔ B ⊓ A'

tactic: rw [inf_of_le_right (sup_le hA hA'), inf_of_le_right hA', inf_of_le_right hA]
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A✝ : Type u_4
inst✝¹ : AddGroup A✝
N : Type u_5
inst✝ : Group N
A A' B : Subgroup G
hA : A ≤ B
hA' : A' ≤ B
⊢ B ⊓ (A ⊔ A') = B ⊓ A ⊔ B ⊓ A'
state_after: no goals
Theorem: Nat.div_mul_div_comm
File: Mathlib/Data/Nat/Defs.lean

tactic: rintro ⟨x, rfl⟩ ⟨y, rfl⟩
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ b ∣ a → d ∣ c → a / b * (c / d) = a * c / (b * d)
state_after: case intro.intro
b d m n k : ℕ
p q : ℕ → Prop
x y : ℕ
⊢ b * x / b * (d * y / d) = b * x * (d * y) / (b * d)

tactic: obtain rfl | hb := b.eq_zero_or_pos
state_before: case intro.intro
b d m n k : ℕ
p q : ℕ → Prop
x y : ℕ
⊢ b * x / b * (d * y / d) = b * x * (d * y) / (b * d)
state_after: case intro.intro.inl
d m n k : ℕ
p q : ℕ → Prop
x y : ℕ
⊢ 0 * x / 0 * (d * y / d) = 0 * x * (d * y) / (0 * d)

case intro.intro.inr
b d m n k : ℕ
p q : ℕ → Prop
x y : ℕ
hb : b > 0
⊢ b * x / b * (d * y / d) = b * x * (d * y) / (b * d)

tactic: obtain rfl | hd := d.eq_zero_or_pos
state_before: case intro.intro.inr
b d m n k : ℕ
p q : ℕ → Prop
x y : ℕ
hb : b > 0
⊢ b * x / b * (d * y / d) = b * x * (d * y) / (b * d)
state_after: case intro.intro.inr.inl
b m n k : ℕ
p q : ℕ → Prop
x y : ℕ
hb : b > 0
⊢ b * x / b * (0 * y / 0) = b * x * (0 * y) / (b * 0)

case intro.intro.inr.inr
b d m n k : ℕ
p q : ℕ → Prop
x y : ℕ
hb : b > 0
hd : d > 0
⊢ b * x / b * (d * y / d) = b * x * (d * y) / (b * d)

tactic: rw [Nat.mul_div_cancel_left _ hb, Nat.mul_div_cancel_left _ hd, Nat.mul_assoc b,
  Nat.mul_left_comm x, ← Nat.mul_assoc b, Nat.mul_div_cancel_left _ (Nat.mul_pos hb hd)]
state_before: case intro.intro.inr.inr
b d m n k : ℕ
p q : ℕ → Prop
x y : ℕ
hb : b > 0
hd : d > 0
⊢ b * x / b * (d * y / d) = b * x * (d * y) / (b * d)
state_after: no goals

tactic: simp
state_before: case intro.intro.inl
d m n k : ℕ
p q : ℕ → Prop
x y : ℕ
⊢ 0 * x / 0 * (d * y / d) = 0 * x * (d * y) / (0 * d)
state_after: no goals

tactic: simp
state_before: case intro.intro.inr.inl
b m n k : ℕ
p q : ℕ → Prop
x y : ℕ
hb : b > 0
⊢ b * x / b * (0 * y / 0) = b * x * (0 * y) / (b * 0)
state_after: no goals
Theorem: ReaderT.goto_mkLabel
File: Mathlib/Control/Monad/Cont.lean

tactic: cases x
state_before: m : Type u → Type v
inst✝ : Monad m
α : Type u_1
ρ β : Type u
x : Label α m β
i : α
⊢ goto (mkLabel ρ x) i = monadLift (goto x i)
state_after: case mk
m : Type u → Type v
inst✝ : Monad m
α : Type u_1
ρ β : Type u
i : α
apply✝ : α → m β
⊢ goto (mkLabel ρ { apply := apply✝ }) i = monadLift (goto { apply := apply✝ } i)

tactic: rfl
state_before: case mk
m : Type u → Type v
inst✝ : Monad m
α : Type u_1
ρ β : Type u
i : α
apply✝ : α → m β
⊢ goto (mkLabel ρ { apply := apply✝ }) i = monadLift (goto { apply := apply✝ } i)
state_after: no goals
Theorem: CategoryTheory.Localization.LeftBousfield.W_iff_isIso
File: Mathlib/CategoryTheory/Localization/Bousfield.lean

tactic: constructor
state_before: C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{?u.3866, u_2} D
P : C → Prop
X Y : C
f : X ⟶ Y
hX : P X
hY : P Y
⊢ W P f ↔ IsIso f
state_after: case mp
C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{?u.3866, u_2} D
P : C → Prop
X Y : C
f : X ⟶ Y
hX : P X
hY : P Y
⊢ W P f → IsIso f

case mpr
C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{?u.3866, u_2} D
P : C → Prop
X Y : C
f : X ⟶ Y
hX : P X
hY : P Y
⊢ IsIso f → W P f

tactic: intro hf
state_before: case mp
C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{?u.3866, u_2} D
P : C → Prop
X Y : C
f : X ⟶ Y
hX : P X
hY : P Y
⊢ W P f → IsIso f
state_after: case mp
C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{?u.3866, u_2} D
P : C → Prop
X Y : C
f : X ⟶ Y
hX : P X
hY : P Y
hf : W P f
⊢ IsIso f

tactic: obtain ⟨g, hg⟩ := (hf _ hX).2 (𝟙 X)
state_before: case mp
C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{?u.3866, u_2} D
P : C → Prop
X Y : C
f : X ⟶ Y
hX : P X
hY : P Y
hf : W P f
⊢ IsIso f
state_after: case mp.intro
C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{?u.3866, u_2} D
P : C → Prop
X Y : C
f : X ⟶ Y
hX : P X
hY : P Y
hf : W P f
g : Y ⟶ X
hg : (fun g => f ≫ g) g = 𝟙 X
⊢ IsIso f

tactic: exact ⟨g, hg, (hf _ hY).1 (by simp only [reassoc_of% hg, comp_id])⟩
state_before: case mp.intro
C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{?u.3866, u_2} D
P : C → Prop
X Y : C
f : X ⟶ Y
hX : P X
hY : P Y
hf : W P f
g : Y ⟶ X
hg : (fun g => f ≫ g) g = 𝟙 X
⊢ IsIso f
state_after: no goals

tactic: simp only [reassoc_of% hg, comp_id]
state_before: C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{?u.3866, u_2} D
P : C → Prop
X Y : C
f : X ⟶ Y
hX : P X
hY : P Y
hf : W P f
g : Y ⟶ X
hg : (fun g => f ≫ g) g = 𝟙 X
⊢ (fun g => f ≫ g) (g ≫ f) = (fun g => f ≫ g) (𝟙 Y)
state_after: no goals

tactic: apply W_of_isIso
state_before: case mpr
C : Type u_1
D : Type u_2
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Category.{?u.3866, u_2} D
P : C → Prop
X Y : C
f : X ⟶ Y
hX : P X
hY : P Y
⊢ IsIso f → W P f
state_after: no goals
Theorem: CategoryTheory.OverPresheafAux.YonedaCollection.map₂_snd
File: Mathlib/CategoryTheory/Comma/Presheaf.lean

tactic: rw [YonedaCollection.map₂_fst f]
state_before: C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X Y : C
f : X ⟶ Y
p : YonedaCollection F Y
⊢ { unop := CostructuredArrow.mk (yoneda.map f ≫ p.fst) } = { unop := CostructuredArrow.mk (map₂ F f p).fst }
state_after: no goals

tactic: simp [map₂]
state_before: C : Type u
inst✝ : Category.{v, u} C
A : Cᵒᵖ ⥤ Type v
F : (CostructuredArrow yoneda A)ᵒᵖ ⥤ Type v
X Y : C
f : X ⟶ Y
p : YonedaCollection F Y
⊢ (map₂ F f p).snd = F.map ((CostructuredArrow.mkPrecomp p.fst f).op ≫ eqToHom ⋯) p.snd
state_after: no goals
Theorem: ae_not_liouville
File: Mathlib/NumberTheory/Liouville/Measure.lean

tactic: norm_num
state_before: x : ℝ
h₁ : ∀ p > 2, ¬LiouvilleWith p x
h₂ : Liouville x
⊢ 3 > 2
state_after: no goals
Theorem: MeasureTheory.lintegral_singleton'
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: simp only [restrict_singleton, lintegral_smul_measure, lintegral_dirac' _ hf, mul_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
f : α → ℝ≥0∞
hf : Measurable f
a : α
⊢ ∫⁻ (x : α) in {a}, f x ∂μ = f a * μ {a}
state_after: no goals
Theorem: Ultrafilter.finite_biUnion_mem_iff
File: Mathlib/Order/Filter/Ultrafilter.lean

tactic: simp only [← sUnion_image, finite_sUnion_mem_iff (his.image s), exists_mem_image]
state_before: α : Type u
β : Type v
γ : Type u_1
f g : Ultrafilter α
s✝ t : Set α
p q : α → Prop
is : Set β
s : β → Set α
his : is.Finite
⊢ ⋃ i ∈ is, s i ∈ f ↔ ∃ i ∈ is, s i ∈ f
state_after: no goals
Theorem: totallySeparatedSpace_of_t1_of_basis_clopen
File: Mathlib/Topology/Separation.lean

tactic: constructor
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
⊢ TotallySeparatedSpace X
state_after: case isTotallySeparated_univ
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
⊢ IsTotallySeparated univ

tactic: rintro x - y - hxy
state_before: case isTotallySeparated_univ
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
⊢ IsTotallySeparated univ
state_after: case isTotallySeparated_univ
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
x y : X
hxy : x ≠ y
⊢ ∃ u v, IsOpen u ∧ IsOpen v ∧ x ∈ u ∧ y ∈ v ∧ univ ⊆ u ∪ v ∧ Disjoint u v

tactic: rcases h.mem_nhds_iff.mp (isOpen_ne.mem_nhds hxy) with ⟨U, hU, hxU, hyU⟩
state_before: case isTotallySeparated_univ
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
x y : X
hxy : x ≠ y
⊢ ∃ u v, IsOpen u ∧ IsOpen v ∧ x ∈ u ∧ y ∈ v ∧ univ ⊆ u ∪ v ∧ Disjoint u v
state_after: case isTotallySeparated_univ.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
x y : X
hxy : x ≠ y
U : Set X
hU : U ∈ {s | IsClopen s}
hxU : x ∈ U
hyU : U ⊆ {y_1 | y_1 ≠ y}
⊢ ∃ u v, IsOpen u ∧ IsOpen v ∧ x ∈ u ∧ y ∈ v ∧ univ ⊆ u ∪ v ∧ Disjoint u v

tactic: exact ⟨U, Uᶜ, hU.isOpen, hU.compl.isOpen, hxU, fun h => hyU h rfl, (union_compl_self U).superset,
  disjoint_compl_right⟩
state_before: case isTotallySeparated_univ.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
h : IsTopologicalBasis {s | IsClopen s}
x y : X
hxy : x ≠ y
U : Set X
hU : U ∈ {s | IsClopen s}
hxU : x ∈ U
hyU : U ⊆ {y_1 | y_1 ≠ y}
⊢ ∃ u v, IsOpen u ∧ IsOpen v ∧ x ∈ u ∧ y ∈ v ∧ univ ⊆ u ∪ v ∧ Disjoint u v
state_after: no goals
Theorem: StarConvex.sub
File: Mathlib/Analysis/Convex/Star.lean

tactic: simp_rw [sub_eq_add_neg]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
s t : Set E
hs : StarConvex 𝕜 x s
ht : StarConvex 𝕜 y t
⊢ StarConvex 𝕜 (x - y) (s - t)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
s t : Set E
hs : StarConvex 𝕜 x s
ht : StarConvex 𝕜 y t
⊢ StarConvex 𝕜 (x + -y) (s + -t)

tactic: exact hs.add ht.neg
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedRing 𝕜
inst✝³ : AddCommGroup E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y : E
s t : Set E
hs : StarConvex 𝕜 x s
ht : StarConvex 𝕜 y t
⊢ StarConvex 𝕜 (x + -y) (s + -t)
state_after: no goals
Theorem: UniformConvexOn.sub
File: Mathlib/Analysis/Convex/Strong.lean

tactic: simpa using hf.add hg.neg
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
φ ψ : ℝ → ℝ
s : Set E
a b m : ℝ
x y : E
f g : E → ℝ
hf : UniformConvexOn s φ f
hg : UniformConcaveOn s ψ g
⊢ UniformConvexOn s (φ + ψ) (f - g)
state_after: no goals
Theorem: EMetric.subset_countable_closure_of_compact
File: Mathlib/Topology/EMetricSpace/Basic.lean

tactic: refine subset_countable_closure_of_almost_dense_set s fun ε hε => ?_
state_before: α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s✝ t s : Set α
hs : IsCompact s
⊢ ∃ t ⊆ s, t.Countable ∧ s ⊆ closure t
state_after: α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
x y z : α
ε✝ ε₁ ε₂ : ℝ≥0∞
s✝ t s : Set α
hs : IsCompact s
ε : ℝ≥0∞
hε : ε > 0
⊢ ∃ t, t.Countable ∧ s ⊆ ⋃ x ∈ t, closedBall x ε

tactic: rcases totallyBounded_iff'.1 hs.totallyBounded ε hε with ⟨t, -, htf, hst⟩
state_before: α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
x y z : α
ε✝ ε₁ ε₂ : ℝ≥0∞
s✝ t s : Set α
hs : IsCompact s
ε : ℝ≥0∞
hε : ε > 0
⊢ ∃ t, t.Countable ∧ s ⊆ ⋃ x ∈ t, closedBall x ε
state_after: case intro.intro.intro
α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
x y z : α
ε✝ ε₁ ε₂ : ℝ≥0∞
s✝ t✝ s : Set α
hs : IsCompact s
ε : ℝ≥0∞
hε : ε > 0
t : Set α
htf : t.Finite
hst : s ⊆ ⋃ y ∈ t, ball y ε
⊢ ∃ t, t.Countable ∧ s ⊆ ⋃ x ∈ t, closedBall x ε

tactic: exact ⟨t, htf.countable, hst.trans <| iUnion₂_mono fun _ _ => ball_subset_closedBall⟩
state_before: case intro.intro.intro
α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
x y z : α
ε✝ ε₁ ε₂ : ℝ≥0∞
s✝ t✝ s : Set α
hs : IsCompact s
ε : ℝ≥0∞
hε : ε > 0
t : Set α
htf : t.Finite
hst : s ⊆ ⋃ y ∈ t, ball y ε
⊢ ∃ t, t.Countable ∧ s ⊆ ⋃ x ∈ t, closedBall x ε
state_after: no goals
Theorem: NumberField.discr_eq_discr
File: Mathlib/NumberTheory/NumberField/Discriminant.lean

tactic: let b₀ := Basis.reindex (RingOfIntegers.basis K) (Basis.indexEquiv (RingOfIntegers.basis K) b)
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ (𝓞 K)
⊢ Algebra.discr ℤ ⇑b = discr K
state_after: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ (𝓞 K)
b₀ : Basis ι ℤ (𝓞 K) := (RingOfIntegers.basis K).reindex ((RingOfIntegers.basis K).indexEquiv b)
⊢ Algebra.discr ℤ ⇑b = discr K

tactic: rw [Algebra.discr_eq_discr (𝓞 K) b b₀, Basis.coe_reindex, Algebra.discr_reindex]
state_before: K : Type u_1
inst✝³ : Field K
inst✝² : NumberField K
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ (𝓞 K)
b₀ : Basis ι ℤ (𝓞 K) := (RingOfIntegers.basis K).reindex ((RingOfIntegers.basis K).indexEquiv b)
⊢ Algebra.discr ℤ ⇑b = discr K
state_after: no goals