1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: TopologicalSpace.Opens.not_nonempty_iff_eq_bot
File: Mathlib/Topology/Sets/Opens.lean

tactic: rw [← coe_inj, coe_bot, ← Set.not_nonempty_iff_eq_empty]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : TopologicalSpace γ
U : Opens α
⊢ ¬(↑U).Nonempty ↔ U = ⊥
state_after: no goals
Theorem: Cardinal.mk_surjective_eq_zero_iff
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [mk_surjective_eq_zero_iff_lift, lift_lt]
state_before: α β : Type u
β' : Type v
⊢ #↑{f | Surjective f} = 0 ↔ #α < #β ∨ #α ≠ 0 ∧ #β = 0
state_after: no goals
Theorem: RingHom.toMonoidWithZeroHom_eq_coe
File: Mathlib/Algebra/Ring/Hom/Defs.lean

tactic: rfl
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
x✝¹ : NonAssocSemiring α
x✝ : NonAssocSemiring β
f : α →+* β
⊢ ⇑f.toMonoidWithZeroHom = ⇑f
state_after: no goals
Theorem: AlgebraicGeometry.Scheme.restrictFunctor_map_base
File: Mathlib/AlgebraicGeometry/Restrict.lean

tactic: ext a
state_before: C : Type u₁
inst✝ : Category.{v, u₁} C
X : Scheme
U V : Opens ↑↑X.toPresheafedSpace
i : U ⟶ V
⊢ (X.restrictFunctor.map i).left.val.base = (Opens.toTopCat ↑X.toPresheafedSpace).map i
state_after: case w
C : Type u₁
inst✝ : Category.{v, u₁} C
X : Scheme
U V : Opens ↑↑X.toPresheafedSpace
i : U ⟶ V
a : (forget TopCat).obj ↑(X.restrictFunctor.obj U).left.toPresheafedSpace
⊢ (X.restrictFunctor.map i).left.val.base a = ((Opens.toTopCat ↑X.toPresheafedSpace).map i) a

tactic: refine Subtype.ext ?_
state_before: case w
C : Type u₁
inst✝ : Category.{v, u₁} C
X : Scheme
U V : Opens ↑↑X.toPresheafedSpace
i : U ⟶ V
a : (forget TopCat).obj ↑(X.restrictFunctor.obj U).left.toPresheafedSpace
⊢ (X.restrictFunctor.map i).left.val.base a = ((Opens.toTopCat ↑X.toPresheafedSpace).map i) a
state_after: case w
C : Type u₁
inst✝ : Category.{v, u₁} C
X : Scheme
U V : Opens ↑↑X.toPresheafedSpace
i : U ⟶ V
a : (forget TopCat).obj ↑(X.restrictFunctor.obj U).left.toPresheafedSpace
⊢ ↑((X.restrictFunctor.map i).left.val.base a) = ↑(((Opens.toTopCat ↑X.toPresheafedSpace).map i) a)

tactic: exact (congr_arg (fun f : X.restrict U.openEmbedding ⟶ X => f.1.base a)
      (X.restrictFunctor_map_ofRestrict i))
state_before: case w
C : Type u₁
inst✝ : Category.{v, u₁} C
X : Scheme
U V : Opens ↑↑X.toPresheafedSpace
i : U ⟶ V
a : (forget TopCat).obj ↑(X.restrictFunctor.obj U).left.toPresheafedSpace
⊢ ↑((X.restrictFunctor.map i).left.val.base a) = ↑(((Opens.toTopCat ↑X.toPresheafedSpace).map i) a)
state_after: no goals
Theorem: ProbabilityTheory.iIndepFun_iff
File: Mathlib/Probability/Independence/Basic.lean

tactic: simp only [iIndepFun_iff_iIndep, iIndep_iff]
state_before: Ω : Type u_1
ι : Type u_2
β✝ : Type u_3
γ : Type u_4
κ : ι → Type u_5
π : ι → Set (Set Ω)
m✝ : ι → MeasurableSpace Ω
x✝ : MeasurableSpace Ω
μ✝ : Measure Ω
S : Finset ι
s : ι → Set Ω
β : ι → Type u_6
m : (x : ι) → MeasurableSpace (β x)
f : (x : ι) → Ω → β x
μ : Measure Ω
⊢ iIndepFun m f μ ↔
    ∀ (s : Finset ι) {f' : ι → Set Ω}, (∀ i ∈ s, MeasurableSet (f' i)) → μ (⋂ i ∈ s, f' i) = ∏ i ∈ s, μ (f' i)
state_after: no goals
Theorem: HomologicalComplex.exact_of_degreewise_exact
File: Mathlib/Algebra/Homology/HomologicalComplexAbelian.lean

tactic: simp only [ShortComplex.exact_iff_isZero_homology] at hS ⊢
state_before: C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), (S.map (eval C c i)).Exact
⊢ S.Exact
state_after: C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), IsZero (S.map (eval C c i)).homology
⊢ IsZero S.homology

tactic: rw [IsZero.iff_id_eq_zero]
state_before: C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), IsZero (S.map (eval C c i)).homology
⊢ IsZero S.homology
state_after: C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), IsZero (S.map (eval C c i)).homology
⊢ 𝟙 S.homology = 0

tactic: ext i
state_before: C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), IsZero (S.map (eval C c i)).homology
⊢ 𝟙 S.homology = 0
state_after: case h
C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), IsZero (S.map (eval C c i)).homology
i : ι
⊢ (𝟙 S.homology).f i = Hom.f 0 i

tactic: apply (IsZero.of_iso (hS i) (S.mapHomologyIso (eval C c i)).symm).eq_of_src
state_before: case h
C : Type u_1
ι : Type u_2
c : ComplexShape ι
inst✝¹ : Category.{u_3, u_1} C
inst✝ : Abelian C
S : ShortComplex (HomologicalComplex C c)
hS : ∀ (i : ι), IsZero (S.map (eval C c i)).homology
i : ι
⊢ (𝟙 S.homology).f i = Hom.f 0 i
state_after: no goals
Theorem: Polynomial.nextCoeff_eq_zero
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: simp [nextCoeff, or_iff_not_imp_left, pos_iff_ne_zero]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p : R[X]
⊢ p.nextCoeff = 0 ↔ p.natDegree = 0 ∨ 0 < p.natDegree ∧ p.coeff (p.natDegree - 1) = 0
state_after: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p : R[X]
⊢ ¬p.natDegree = 0 → p.coeff (p.natDegree - 1) = 0 ↔ ¬p.natDegree = 0 → ¬p.natDegree = 0 ∧ p.coeff (p.natDegree - 1) = 0

tactic: aesop
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p : R[X]
⊢ ¬p.natDegree = 0 → p.coeff (p.natDegree - 1) = 0 ↔ ¬p.natDegree = 0 → ¬p.natDegree = 0 ∧ p.coeff (p.natDegree - 1) = 0
state_after: no goals
Theorem: Ideal.isCoprime_iff_add
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [isCoprime_iff_codisjoint, codisjoint_iff, add_eq_sup, one_eq_top]
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I J K L : Ideal R
⊢ IsCoprime I J ↔ I + J = 1
state_after: no goals
Theorem: antisymmetrization_fibration
File: Mathlib/Order/Antisymmetrization.lean

tactic: rintro a ⟨b⟩ h
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
a b : α
⊢ Relation.Fibration (fun x x_1 => x < x_1) (fun x x_1 => x < x_1) (toAntisymmetrization fun x x_1 => x ≤ x_1)
state_after: case mk
α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
a✝ b✝¹ a : α
b✝ : Antisymmetrization α fun x x_1 => x ≤ x_1
b : α
h : Quot.mk Setoid.r b < toAntisymmetrization (fun x x_1 => x ≤ x_1) a
⊢ ∃ a', (fun x x_1 => x < x_1) a' a ∧ toAntisymmetrization (fun x x_1 => x ≤ x_1) a' = Quot.mk Setoid.r b

tactic: exact ⟨b, h, rfl⟩
state_before: case mk
α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
a✝ b✝¹ a : α
b✝ : Antisymmetrization α fun x x_1 => x ≤ x_1
b : α
h : Quot.mk Setoid.r b < toAntisymmetrization (fun x x_1 => x ≤ x_1) a
⊢ ∃ a', (fun x x_1 => x < x_1) a' a ∧ toAntisymmetrization (fun x x_1 => x ≤ x_1) a' = Quot.mk Setoid.r b
state_after: no goals
Theorem: MeasureTheory.indicatorConstLp_univ
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: rw [← Memℒp.toLp_const, indicatorConstLp]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
inst✝ : IsFiniteMeasure μ
c : E
⊢ indicatorConstLp p ⋯ ⋯ c = (Lp.const p μ) c
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
inst✝ : IsFiniteMeasure μ
c : E
⊢ Memℒp.toLp (Set.univ.indicator fun x => c) ⋯ = Memℒp.toLp (fun x => c) ⋯

tactic: simp only [Set.indicator_univ, Function.const]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
inst✝ : IsFiniteMeasure μ
c : E
⊢ Memℒp.toLp (Set.univ.indicator fun x => c) ⋯ = Memℒp.toLp (fun x => c) ⋯
state_after: no goals
Theorem: HomogeneousIdeal.toIdeal_iSup
File: Mathlib/RingTheory/GradedAlgebra/HomogeneousIdeal.lean

tactic: rw [iSup, toIdeal_sSup, iSup_range]
state_before: ι : Type u_1
σ : Type u_2
R : Type u_3
A : Type u_4
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
κ : Sort u_5
s : κ → HomogeneousIdeal 𝒜
⊢ (⨆ i, s i).toIdeal = ⨆ i, (s i).toIdeal
state_after: no goals
Theorem: Cardinal.deriv_lt_ord
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: simpa using Cardinal.one_lt_aleph0.trans (lt_of_le_of_ne hc.1 hc'.symm)
state_before: α : Type u_1
r : α → α → Prop
f : Ordinal.{u} → Ordinal.{u}
c : Cardinal.{u}
hc : c.IsRegular
hc' : c ≠ ℵ₀
hf : ∀ i < c.ord, f i < c.ord
a : Ordinal.{u}
⊢ lift.{u, 0} #Unit < c
state_after: no goals
Theorem: CircleDeg1Lift.iterate_le_of_map_le_add_int
File: Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean

tactic: simpa only [nsmul_eq_mul, add_right_iterate] using
  (f.commute_add_int m).iterate_le_of_map_le f.monotone (monotone_id.add_const (m : ℝ)) h n
state_before: f g : CircleDeg1Lift
x : ℝ
m : ℤ
h : f x ≤ x + ↑m
n : ℕ
⊢ (⇑f)^[n] x ≤ x + ↑n * ↑m
state_after: no goals
Theorem: Nat.mul_div_eq_iff_dvd
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [div_add_mod]
state_before: a b c d✝ m n✝ k : ℕ
p q : ℕ → Prop
n d : ℕ
⊢ d * (n / d) = n ↔ d * (n / d) = d * (n / d) + n % d
state_after: no goals

tactic: rw [eq_comm, Nat.add_eq_left, dvd_iff_mod_eq_zero]
state_before: a b c d✝ m n✝ k : ℕ
p q : ℕ → Prop
n d : ℕ
⊢ d * (n / d) = d * (n / d) + n % d ↔ d ∣ n
state_after: no goals
Theorem: BooleanRing.sup_inf_self
File: Mathlib/Algebra/Ring/BooleanRing.lean

tactic: rw [← mul_assoc, mul_self, add_assoc, add_self, add_zero]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝² : BooleanRing α
inst✝¹ : BooleanRing β
inst✝ : BooleanRing γ
a b : α
⊢ a + a * b + a * (a * b) = a
state_after: no goals
Theorem: Int.floor_add_nat
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [← Int.cast_natCast, floor_add_int]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a : α
n : ℕ
⊢ ⌊a + ↑n⌋ = ⌊a⌋ + ↑n
state_after: no goals
Theorem: Quiver.SingleObj.listToPath_pathToList
File: Mathlib/Combinatorics/Quiver/SingleObj.lean

tactic: induction' p with y z p a ih
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
x : SingleObj α
p : Path (star α) x
⊢ listToPath (pathToList p) = Path.cast ⋯ ⋯ p
state_after: case nil
α : Type u_1
β : Type u_2
γ : Type u_3
x : SingleObj α
⊢ listToPath (pathToList Path.nil) = Path.cast ⋯ ⋯ Path.nil

case cons
α : Type u_1
β : Type u_2
γ : Type u_3
x y z : SingleObj α
p : Path (star α) y
a : y ⟶ z
ih : listToPath (pathToList p) = Path.cast ⋯ ⋯ p
⊢ listToPath (pathToList (p.cons a)) = Path.cast ⋯ ⋯ (p.cons a)

tactic: rfl
state_before: case nil
α : Type u_1
β : Type u_2
γ : Type u_3
x : SingleObj α
⊢ listToPath (pathToList Path.nil) = Path.cast ⋯ ⋯ Path.nil
state_after: no goals

tactic: dsimp at *
state_before: case cons
α : Type u_1
β : Type u_2
γ : Type u_3
x y z : SingleObj α
p : Path (star α) y
a : y ⟶ z
ih : listToPath (pathToList p) = Path.cast ⋯ ⋯ p
⊢ listToPath (pathToList (p.cons a)) = Path.cast ⋯ ⋯ (p.cons a)
state_after: case cons
α : Type u_1
β : Type u_2
γ : Type u_3
x y z : SingleObj α
p : Path (star α) y
a : y ⟶ z
ih : listToPath (pathToList p) = p
⊢ (listToPath (pathToList p)).cons a = p.cons a

tactic: rw [ih]
state_before: case cons
α : Type u_1
β : Type u_2
γ : Type u_3
x y z : SingleObj α
p : Path (star α) y
a : y ⟶ z
ih : listToPath (pathToList p) = p
⊢ (listToPath (pathToList p)).cons a = p.cons a
state_after: no goals
Theorem: finrank_range_le_card
File: Mathlib/LinearAlgebra/Dimension/Constructions.lean

tactic: classical
refine (finrank_span_le_card _).trans ?_
rw [Set.toFinset_range]
exact Finset.card_image_le
state_before: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝⁹ : Ring R
inst✝⁸ : CommRing S
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : StrongRankCondition R
ι : Type u_2
inst✝ : Fintype ι
b : ι → M
⊢ Set.finrank R (range b) ≤ Fintype.card ι
state_after: no goals

tactic: refine (finrank_span_le_card _).trans ?_
state_before: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝⁹ : Ring R
inst✝⁸ : CommRing S
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : StrongRankCondition R
ι : Type u_2
inst✝ : Fintype ι
b : ι → M
⊢ Set.finrank R (range b) ≤ Fintype.card ι
state_after: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝⁹ : Ring R
inst✝⁸ : CommRing S
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : StrongRankCondition R
ι : Type u_2
inst✝ : Fintype ι
b : ι → M
⊢ (range b).toFinset.card ≤ Fintype.card ι

tactic: rw [Set.toFinset_range]
state_before: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝⁹ : Ring R
inst✝⁸ : CommRing S
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : StrongRankCondition R
ι : Type u_2
inst✝ : Fintype ι
b : ι → M
⊢ (range b).toFinset.card ≤ Fintype.card ι
state_after: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝⁹ : Ring R
inst✝⁸ : CommRing S
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : StrongRankCondition R
ι : Type u_2
inst✝ : Fintype ι
b : ι → M
⊢ (Finset.image b Finset.univ).card ≤ Fintype.card ι

tactic: exact Finset.card_image_le
state_before: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝⁹ : Ring R
inst✝⁸ : CommRing S
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : StrongRankCondition R
ι : Type u_2
inst✝ : Fintype ι
b : ι → M
⊢ (Finset.image b Finset.univ).card ≤ Fintype.card ι
state_after: no goals
Theorem: Vector.prod_set'
File: Mathlib/Data/Vector/Basic.lean

tactic: refine (List.prod_set' v.toList i a).trans ?_
state_before: n : ℕ
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommGroup α
v : Vector α n
i : Fin n
a : α
⊢ (v.set i a).toList.prod = v.toList.prod * (v.get i)⁻¹ * a
state_after: n : ℕ
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommGroup α
v : Vector α n
i : Fin n
a : α
⊢ (v.toList.prod * if hn : ↑i < v.toList.length then (v.toList.get ⟨↑i, hn⟩)⁻¹ * a else 1) =
    v.toList.prod * (v.get i)⁻¹ * a

tactic: simp [get_eq_get, mul_assoc]
state_before: n : ℕ
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : CommGroup α
v : Vector α n
i : Fin n
a : α
⊢ (v.toList.prod * if hn : ↑i < v.toList.length then (v.toList.get ⟨↑i, hn⟩)⁻¹ * a else 1) =
    v.toList.prod * (v.get i)⁻¹ * a
state_after: no goals
Theorem: continuousOn_prod_of_discrete_left
File: Mathlib/Topology/ContinuousOn.lean

tactic: simp_rw [ContinuousOn, Prod.forall, continuousWithinAt_prod_of_discrete_left]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : (i : ι) → TopologicalSpace (π i)
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology α
f : α × β → γ
s : Set (α × β)
⊢ ContinuousOn f s ↔ ∀ (a : α), ContinuousOn (fun x => f (a, x)) {b | (a, b) ∈ s}
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : (i : ι) → TopologicalSpace (π i)
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology α
f : α × β → γ
s : Set (α × β)
⊢ (∀ (a : α) (b : β), (a, b) ∈ s → ContinuousWithinAt (fun x => f (a, x)) {b | (a, b) ∈ s} b) ↔
    ∀ (a : α), ∀ x ∈ {b | (a, b) ∈ s}, ContinuousWithinAt (fun x => f (a, x)) {b | (a, b) ∈ s} x

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : (i : ι) → TopologicalSpace (π i)
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology α
f : α × β → γ
s : Set (α × β)
⊢ (∀ (a : α) (b : β), (a, b) ∈ s → ContinuousWithinAt (fun x => f (a, x)) {b | (a, b) ∈ s} b) ↔
    ∀ (a : α), ∀ x ∈ {b | (a, b) ∈ s}, ContinuousWithinAt (fun x => f (a, x)) {b | (a, b) ∈ s} x
state_after: no goals
Theorem: Set.exists_prod_set
File: Mathlib/Data/Set/Prod.lean

tactic: simp [and_assoc]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
p : α × β → Prop
⊢ (∃ x ∈ s ×ˢ t, p x) ↔ ∃ x ∈ s, ∃ y ∈ t, p (x, y)
state_after: no goals
Theorem: tendsto_iff_dist_tendsto_zero
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: rw [← nhds_comap_dist a, tendsto_comap_iff, Function.comp_def]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
f : β → α
x : Filter β
a : α
⊢ Tendsto f x (𝓝 a) ↔ Tendsto (fun b => dist (f b) a) x (𝓝 0)
state_after: no goals
Theorem: measurableSet_regionBetween
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: dsimp only [regionBetween, Ioo, mem_setOf_eq, setOf_and]
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
f g : α → ℝ
s : Set α
hf : Measurable f
hg : Measurable g
hs : MeasurableSet s
⊢ MeasurableSet (regionBetween f g s)
state_after: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
f g : α → ℝ
s : Set α
hf : Measurable f
hg : Measurable g
hs : MeasurableSet s
⊢ MeasurableSet ({a | a.1 ∈ s} ∩ {a | a.2 ∈ {a_1 | f a.1 < a_1} ∩ {a_1 | a_1 < g a.1}})

tactic: refine
  MeasurableSet.inter ?_
    ((measurableSet_lt (hf.comp measurable_fst) measurable_snd).inter
      (measurableSet_lt measurable_snd (hg.comp measurable_fst)))
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
f g : α → ℝ
s : Set α
hf : Measurable f
hg : Measurable g
hs : MeasurableSet s
⊢ MeasurableSet ({a | a.1 ∈ s} ∩ {a | a.2 ∈ {a_1 | f a.1 < a_1} ∩ {a_1 | a_1 < g a.1}})
state_after: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
f g : α → ℝ
s : Set α
hf : Measurable f
hg : Measurable g
hs : MeasurableSet s
⊢ MeasurableSet {a | a.1 ∈ s}

tactic: exact measurable_fst hs
state_before: α : Type u_1
inst✝ : MeasurableSpace α
μ : Measure α
f g : α → ℝ
s : Set α
hf : Measurable f
hg : Measurable g
hs : MeasurableSet s
⊢ MeasurableSet {a | a.1 ∈ s}
state_after: no goals
Theorem: PMF.binomial_apply_self
File: Mathlib/Probability/ProbabilityMassFunction/Binomial.lean

tactic: simp
state_before: p : ℝ≥0∞
h : p ≤ 1
n : ℕ
⊢ (binomial p h n) ↑n = p ^ n
state_after: no goals
Theorem: Matroid.Basis.basis_restrict_of_subset
File: Mathlib/Data/Matroid/Restrict.lean

tactic: rwa [← base_restrict_iff, M.restrict_restrict_eq hXY, base_restrict_iff]
state_before: α : Type u_1
M : Matroid α
R I J X Y : Set α
hI : M.Basis I X
hXY : X ⊆ Y
⊢ (M ↾ Y).Basis I X
state_after: no goals
Theorem: CategoryTheory.Functor.shiftIso_add_inv_app
File: Mathlib/CategoryTheory/Shift/ShiftSequence.lean

tactic: rw [add_assoc, ha', ha'']
state_before: C : Type u_1
A : Type u_2
inst✝⁶ : Category.{?u.50608, u_1} C
inst✝⁵ : Category.{?u.50612, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁴ : AddMonoid M
inst✝³ : HasShift C M
G : Type u_4
inst✝² : AddGroup G
inst✝¹ : HasShift C G
inst✝ : F.ShiftSequence M
n m a a' a'' : M
ha' : n + a = a'
ha'' : m + a' = a''
X : C
⊢ m + n + a = a''
state_after: no goals

tactic: simp [F.shiftIso_add n m a a' a'' ha' ha'']
state_before: C : Type u_1
A : Type u_2
inst✝⁶ : Category.{u_6, u_1} C
inst✝⁵ : Category.{u_5, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁴ : AddMonoid M
inst✝³ : HasShift C M
G : Type u_4
inst✝² : AddGroup G
inst✝¹ : HasShift C G
inst✝ : F.ShiftSequence M
n m a a' a'' : M
ha' : n + a = a'
ha'' : m + a' = a''
X : C
⊢ (F.shiftIso (m + n) a a'' ⋯).inv.app X =
    (F.shiftIso m a' a'' ha'').inv.app X ≫
      (F.shiftIso n a a' ha').inv.app ((shiftFunctor C m).obj X) ≫ (F.shift a).map ((shiftFunctorAdd C m n).inv.app X)
state_after: no goals
Theorem: FiniteDimensional.eq_of_le_of_finrank_le
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: rw [← LinearEquiv.finrank_eq (Submodule.comapSubtypeEquivOfLe hle)] at hd
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
S₁ S₂ : Submodule K V
inst✝ : FiniteDimensional K ↥S₂
hle : S₁ ≤ S₂
hd : finrank K ↥S₂ ≤ finrank K ↥S₁
⊢ S₁ = S₂
state_after: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
S₁ S₂ : Submodule K V
inst✝ : FiniteDimensional K ↥S₂
hle : S₁ ≤ S₂
hd : finrank K ↥S₂ ≤ finrank K ↥(comap S₂.subtype S₁)
⊢ S₁ = S₂

tactic: exact le_antisymm hle (Submodule.comap_subtype_eq_top.1
  (eq_top_of_finrank_eq (le_antisymm (comap (Submodule.subtype S₂) S₁).finrank_le hd)))
state_before: K : Type u
V : Type v
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
S₁ S₂ : Submodule K V
inst✝ : FiniteDimensional K ↥S₂
hle : S₁ ≤ S₂
hd : finrank K ↥S₂ ≤ finrank K ↥(comap S₂.subtype S₁)
⊢ S₁ = S₂
state_after: no goals
Theorem: BoxIntegral.IntegrationParams.hasBasis_toFilter
File: Mathlib/Analysis/BoxIntegral/Partition/Filter.lean

tactic: simpa only [setOf_exists] using hasBasis_iSup (l.hasBasis_toFilterDistortion I)
state_before: ι : Type u_1
inst✝ : Fintype ι
I✝ J : Box ι
c c₁ c₂ : ℝ≥0
r r₁ r₂ : (ι → ℝ) → ↑(Set.Ioi 0)
π π₁ π₂ : TaggedPrepartition I✝
l✝ l₁ l₂ l : IntegrationParams
I : Box ι
⊢ (l.toFilter I).HasBasis (fun r => ∀ (c : ℝ≥0), l.RCond (r c)) fun r => {π | ∃ c, l.MemBaseSet I c (r c) π}
state_after: no goals