1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: List.eraseIdx_append_of_length_le
File: .lake/packages/batteries/Batteries/Data/List/EraseIdx.lean

tactic: rw [eraseIdx_eq_take_drop_succ, eraseIdx_eq_take_drop_succ,
  take_append_eq_append_take, drop_append_eq_append_drop,
  take_all_of_le hk, drop_eq_nil_of_le (by omega), nil_append, append_assoc]
state_before: α : Type u
β : Type v
l : List α
k : Nat
hk : l.length ≤ k
l' : List α
⊢ (l ++ l').eraseIdx k = l ++ l'.eraseIdx (k - l.length)
state_after: α : Type u
β : Type v
l : List α
k : Nat
hk : l.length ≤ k
l' : List α
⊢ l ++ (take (k - l.length) l' ++ drop (k + 1 - l.length) l') =
    l ++ (take (k - l.length) l' ++ drop (k - l.length + 1) l')

tactic: congr
state_before: α : Type u
β : Type v
l : List α
k : Nat
hk : l.length ≤ k
l' : List α
⊢ l ++ (take (k - l.length) l' ++ drop (k + 1 - l.length) l') =
    l ++ (take (k - l.length) l' ++ drop (k - l.length + 1) l')
state_after: case e_a.e_a.e_a
α : Type u
β : Type v
l : List α
k : Nat
hk : l.length ≤ k
l' : List α
⊢ k + 1 - l.length = k - l.length + 1

tactic: omega
state_before: case e_a.e_a.e_a
α : Type u
β : Type v
l : List α
k : Nat
hk : l.length ≤ k
l' : List α
⊢ k + 1 - l.length = k - l.length + 1
state_after: no goals

tactic: omega
state_before: α : Type u
β : Type v
l : List α
k : Nat
hk : l.length ≤ k
l' : List α
⊢ l.length ≤ k + 1
state_after: no goals
Theorem: Submodule.FG.pow
File: Mathlib/RingTheory/Finiteness.lean

tactic: simp [one_eq_span]
state_before: R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
M N : Submodule R A
h : M.FG
n : ℕ
⊢ span R ↑{1} = M ^ Nat.zero
state_after: no goals

tactic: simpa [pow_succ] using ih.mul h
state_before: R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
M N : Submodule R A
h : M.FG
n✝ n : ℕ
ih : (M ^ n).FG
⊢ (M ^ n.succ).FG
state_after: no goals
Theorem: Metric.preimage_mul_right_closedBall
File: Mathlib/Topology/MetricSpace/IsometricSMul.lean

tactic: rw [div_eq_mul_inv]
state_before: M : Type u
G : Type v
X : Type w
inst✝⁵ : PseudoMetricSpace X
inst✝⁴ : Group G
inst✝³ : MulAction G X
inst✝² : IsometricSMul G X
inst✝¹ : PseudoMetricSpace G
inst✝ : IsometricSMul Gᵐᵒᵖ G
a b : G
r : ℝ
⊢ (fun x => x * a) ⁻¹' closedBall b r = closedBall (b / a) r
state_after: M : Type u
G : Type v
X : Type w
inst✝⁵ : PseudoMetricSpace X
inst✝⁴ : Group G
inst✝³ : MulAction G X
inst✝² : IsometricSMul G X
inst✝¹ : PseudoMetricSpace G
inst✝ : IsometricSMul Gᵐᵒᵖ G
a b : G
r : ℝ
⊢ (fun x => x * a) ⁻¹' closedBall b r = closedBall (b * a⁻¹) r

tactic: exact preimage_smul_closedBall (MulOpposite.op a) b r
state_before: M : Type u
G : Type v
X : Type w
inst✝⁵ : PseudoMetricSpace X
inst✝⁴ : Group G
inst✝³ : MulAction G X
inst✝² : IsometricSMul G X
inst✝¹ : PseudoMetricSpace G
inst✝ : IsometricSMul Gᵐᵒᵖ G
a b : G
r : ℝ
⊢ (fun x => x * a) ⁻¹' closedBall b r = closedBall (b * a⁻¹) r
state_after: no goals
Theorem: nnnorm_inv
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝ : NormedDivisionRing α
a✝ a : α
⊢ ↑‖a⁻¹‖₊ = ↑‖a‖₊⁻¹
state_after: no goals
Theorem: Complex.neg_pi_div_two_lt_arg_iff
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: rw [lt_iff_le_and_ne, neg_pi_div_two_le_arg_iff, ne_comm, Ne, arg_eq_neg_pi_div_two_iff]
state_before: a x z✝ z : ℂ
⊢ -(π / 2) < z.arg ↔ 0 < z.re ∨ 0 ≤ z.im
state_after: a x z✝ z : ℂ
⊢ (0 ≤ z.re ∨ 0 ≤ z.im) ∧ ¬(z.re = 0 ∧ z.im < 0) ↔ 0 < z.re ∨ 0 ≤ z.im

tactic: rcases lt_trichotomy z.re 0 with hre | hre | hre
state_before: a x z✝ z : ℂ
⊢ (0 ≤ z.re ∨ 0 ≤ z.im) ∧ ¬(z.re = 0 ∧ z.im < 0) ↔ 0 < z.re ∨ 0 ≤ z.im
state_after: case inl
a x z✝ z : ℂ
hre : z.re < 0
⊢ (0 ≤ z.re ∨ 0 ≤ z.im) ∧ ¬(z.re = 0 ∧ z.im < 0) ↔ 0 < z.re ∨ 0 ≤ z.im

case inr.inl
a x z✝ z : ℂ
hre : z.re = 0
⊢ (0 ≤ z.re ∨ 0 ≤ z.im) ∧ ¬(z.re = 0 ∧ z.im < 0) ↔ 0 < z.re ∨ 0 ≤ z.im

case inr.inr
a x z✝ z : ℂ
hre : 0 < z.re
⊢ (0 ≤ z.re ∨ 0 ≤ z.im) ∧ ¬(z.re = 0 ∧ z.im < 0) ↔ 0 < z.re ∨ 0 ≤ z.im

tactic: simp [hre.ne, hre.not_le, hre.not_lt]
state_before: case inl
a x z✝ z : ℂ
hre : z.re < 0
⊢ (0 ≤ z.re ∨ 0 ≤ z.im) ∧ ¬(z.re = 0 ∧ z.im < 0) ↔ 0 < z.re ∨ 0 ≤ z.im
state_after: no goals

tactic: simp [hre]
state_before: case inr.inl
a x z✝ z : ℂ
hre : z.re = 0
⊢ (0 ≤ z.re ∨ 0 ≤ z.im) ∧ ¬(z.re = 0 ∧ z.im < 0) ↔ 0 < z.re ∨ 0 ≤ z.im
state_after: no goals

tactic: simp [hre, hre.le, hre.ne']
state_before: case inr.inr
a x z✝ z : ℂ
hre : 0 < z.re
⊢ (0 ≤ z.re ∨ 0 ≤ z.im) ∧ ¬(z.re = 0 ∧ z.im < 0) ↔ 0 < z.re ∨ 0 ≤ z.im
state_after: no goals
Theorem: MeasureTheory.restrict_dirac'
File: Mathlib/MeasureTheory/Measure/Dirac.lean

tactic: split_ifs with has
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
a : α
hs : MeasurableSet s
inst✝ : Decidable (a ∈ s)
⊢ (dirac a).restrict s = if a ∈ s then dirac a else 0
state_after: case pos
α : Type u_1
β : Type u_2
δ : Type u_3
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
a : α
hs : MeasurableSet s
inst✝ : Decidable (a ∈ s)
has : a ∈ s
⊢ (dirac a).restrict s = dirac a

case neg
α : Type u_1
β : Type u_2
δ : Type u_3
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
a : α
hs : MeasurableSet s
inst✝ : Decidable (a ∈ s)
has : a ∉ s
⊢ (dirac a).restrict s = 0

tactic: apply restrict_eq_self_of_ae_mem
state_before: case pos
α : Type u_1
β : Type u_2
δ : Type u_3
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
a : α
hs : MeasurableSet s
inst✝ : Decidable (a ∈ s)
has : a ∈ s
⊢ (dirac a).restrict s = dirac a
state_after: case pos.hs
α : Type u_1
β : Type u_2
δ : Type u_3
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
a : α
hs : MeasurableSet s
inst✝ : Decidable (a ∈ s)
has : a ∈ s
⊢ ∀ᵐ (x : α) ∂dirac a, x ∈ s

tactic: rw [ae_dirac_iff] <;> assumption
state_before: case pos.hs
α : Type u_1
β : Type u_2
δ : Type u_3
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
a : α
hs : MeasurableSet s
inst✝ : Decidable (a ∈ s)
has : a ∈ s
⊢ ∀ᵐ (x : α) ∂dirac a, x ∈ s
state_after: no goals

tactic: rw [restrict_eq_zero, dirac_apply' _ hs, indicator_of_not_mem has]
state_before: case neg
α : Type u_1
β : Type u_2
δ : Type u_3
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
a : α
hs : MeasurableSet s
inst✝ : Decidable (a ∈ s)
has : a ∉ s
⊢ (dirac a).restrict s = 0
state_after: no goals
Theorem: Nat.Partrec.prec'
File: Mathlib/Computability/Partrec.lean

tactic: simp [Seq.seq]
state_before: f g h : ℕ →. ℕ
hf : Partrec f
hg : Partrec g
hh : Partrec h
a s : ℕ
⊢ (s ∈
      (Seq.seq (Nat.pair <$> Part.some a) fun x => f a) >>=
        unpaired fun a n =>
          Nat.rec (g a)
            (fun y IH => do
              let i ← IH
              h (Nat.pair a (Nat.pair y i)))
            n) ↔
    s ∈
      (f a).bind fun n =>
        Nat.rec (g a)
          (fun y IH => do
            let i ← IH
            h (Nat.pair a (Nat.pair y i)))
          n
state_after: no goals
Theorem: EuclideanSpace.inner_single_left
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

tactic: simp [apply_ite conj]
state_before: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹⁰ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type u_7
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
i : ι
a : 𝕜
v : EuclideanSpace 𝕜 ι
⊢ ⟪single i a, v⟫_𝕜 = (starRingEnd 𝕜) a * v i
state_after: no goals
Theorem: Affine.Simplex.sum_mongePointWeightsWithCircumcenter
File: Mathlib/Geometry/Euclidean/MongePoint.lean

tactic: simp_rw [sum_pointsWithCircumcenter, mongePointWeightsWithCircumcenter, sum_const, card_fin,
  nsmul_eq_mul]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
n : ℕ
⊢ ∑ i : PointsWithCircumcenterIndex (n + 2), mongePointWeightsWithCircumcenter n i = 1
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
n : ℕ
⊢ ↑(n + 2 + 1) * (↑(n + 1))⁻¹ + -2 / ↑(n + 1) = 1

tactic: field_simp [n.cast_add_one_ne_zero]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
n : ℕ
⊢ ↑(n + 2 + 1) * (↑(n + 1))⁻¹ + -2 / ↑(n + 1) = 1
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
n : ℕ
⊢ ↑n + 2 + 1 + -2 = ↑n + 1

tactic: ring
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
n : ℕ
⊢ ↑n + 2 + 1 + -2 = ↑n + 1
state_after: no goals
Theorem: Set.piecewise_insert_self
File: Mathlib/Data/Set/Function.lean

tactic: simp [piecewise]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
δ : α → Sort u_6
s : Set α
f g : (i : α) → δ i
j : α
inst✝ : (i : α) → Decidable (i ∈ insert j s)
⊢ (insert j s).piecewise f g j = f j
state_after: no goals
Theorem: Ordnode.Sized.rotateL_size
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: cases r <;> simp [Ordnode.rotateL]
state_before: α : Type u_1
l : Ordnode α
x : α
r : Ordnode α
hm : r.Sized
⊢ (l.rotateL x r).size = l.size + r.size + 1
state_after: case node
α : Type u_1
l : Ordnode α
x : α
size✝ : ℕ
l✝ : Ordnode α
x✝ : α
r✝ : Ordnode α
hm : (node size✝ l✝ x✝ r✝).Sized
⊢ (if l✝.size < ratio * r✝.size then l.node3L x l✝ x✝ r✝ else l.node4L x l✝ x✝ r✝).size = l.size + size✝ + 1

tactic: simp only [hm.1]
state_before: case node
α : Type u_1
l : Ordnode α
x : α
size✝ : ℕ
l✝ : Ordnode α
x✝ : α
r✝ : Ordnode α
hm : (node size✝ l✝ x✝ r✝).Sized
⊢ (if l✝.size < ratio * r✝.size then l.node3L x l✝ x✝ r✝ else l.node4L x l✝ x✝ r✝).size = l.size + size✝ + 1
state_after: case node
α : Type u_1
l : Ordnode α
x : α
size✝ : ℕ
l✝ : Ordnode α
x✝ : α
r✝ : Ordnode α
hm : (node size✝ l✝ x✝ r✝).Sized
⊢ (if l✝.size < ratio * r✝.size then l.node3L x l✝ x✝ r✝ else l.node4L x l✝ x✝ r✝).size =
    l.size + (l✝.size + r✝.size + 1) + 1

tactic: split_ifs <;> simp [node3L_size, node4L_size hm.2.1] <;> abel
state_before: case node
α : Type u_1
l : Ordnode α
x : α
size✝ : ℕ
l✝ : Ordnode α
x✝ : α
r✝ : Ordnode α
hm : (node size✝ l✝ x✝ r✝).Sized
⊢ (if l✝.size < ratio * r✝.size then l.node3L x l✝ x✝ r✝ else l.node4L x l✝ x✝ r✝).size =
    l.size + (l✝.size + r✝.size + 1) + 1
state_after: no goals
Theorem: Complex.hasStrictDerivAt_cpow_const
File: Mathlib/Analysis/SpecialFunctions/Pow/Deriv.lean

tactic: simpa only [mul_zero, add_zero, mul_one] using
  (hasStrictDerivAt_id x).cpow (hasStrictDerivAt_const x c) h
state_before: f g : ℂ → ℂ
s : Set ℂ
f' g' x c : ℂ
h : x ∈ slitPlane
⊢ HasStrictDerivAt (fun z => z ^ c) (c * x ^ (c - 1)) x
state_after: no goals
Theorem: IsOpenMap.preimage_closure_subset_closure_preimage
File: Mathlib/Topology/Maps.lean

tactic: rw [← compl_subset_compl]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
hf : IsOpenMap f
s : Set Y
⊢ f ⁻¹' closure s ⊆ closure (f ⁻¹' s)
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
hf : IsOpenMap f
s : Set Y
⊢ (closure (f ⁻¹' s))ᶜ ⊆ (f ⁻¹' closure s)ᶜ

tactic: simp only [← interior_compl, ← preimage_compl, hf.interior_preimage_subset_preimage_interior]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
hf : IsOpenMap f
s : Set Y
⊢ (closure (f ⁻¹' s))ᶜ ⊆ (f ⁻¹' closure s)ᶜ
state_after: no goals
Theorem: torusMap_sub_center
File: Mathlib/MeasureTheory/Integral/TorusIntegral.lean

tactic: ext1 i
state_before: n : ℕ
E : Type u_1
inst✝ : NormedAddCommGroup E
c : Fin n → ℂ
R θ : Fin n → ℝ
⊢ torusMap c R θ - c = torusMap 0 R θ
state_after: case h
n : ℕ
E : Type u_1
inst✝ : NormedAddCommGroup E
c : Fin n → ℂ
R θ : Fin n → ℝ
i : Fin n
⊢ (torusMap c R θ - c) i = torusMap 0 R θ i

tactic: simp [torusMap]
state_before: case h
n : ℕ
E : Type u_1
inst✝ : NormedAddCommGroup E
c : Fin n → ℂ
R θ : Fin n → ℝ
i : Fin n
⊢ (torusMap c R θ - c) i = torusMap 0 R θ i
state_after: no goals
Theorem: TopologicalSpace.IsTopologicalBasis.nhds_basis_closure
File: Mathlib/Topology/Separation.lean

tactic: simpa only [and_comm] using hB.nhds_hasBasis.nhds_closure
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : RegularSpace X
x✝ : X
s : Set X
B : Set (Set X)
hB : IsTopologicalBasis B
x : X
⊢ (𝓝 x).HasBasis (fun s => x ∈ s ∧ s ∈ B) closure
state_after: no goals
Theorem: FunctionField.ringOfIntegers.not_isField
File: Mathlib/NumberTheory/FunctionField.lean

tactic: simpa [← (IsIntegralClosure.isIntegral_algebra Fq[X] F).isField_iff_isField
    (algebraMap_injective Fq F)] using
  Polynomial.not_isField Fq
state_before: Fq F : Type
inst✝⁴ : Field Fq
inst✝³ : Field F
inst✝² : Algebra Fq[X] F
inst✝¹ : Algebra (RatFunc Fq) F
inst✝ : IsScalarTower Fq[X] (RatFunc Fq) F
⊢ ¬IsField ↥(ringOfIntegers Fq F)
state_after: no goals
Theorem: InfClosed.image
File: Mathlib/Order/SupClosed.lean

tactic: rintro _ ⟨a, ha, rfl⟩ _ ⟨b, hb, rfl⟩
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeInf α
inst✝² : SemilatticeInf β
ι : Sort u_4
S : Set (Set α)
f✝ : ι → Set α
s t : Set α
a : α
inst✝¹ : FunLike F α β
inst✝ : InfHomClass F α β
hs : InfClosed s
f : F
⊢ InfClosed (⇑f '' s)
state_after: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeInf α
inst✝² : SemilatticeInf β
ι : Sort u_4
S : Set (Set α)
f✝ : ι → Set α
s t : Set α
a✝ : α
inst✝¹ : FunLike F α β
inst✝ : InfHomClass F α β
hs : InfClosed s
f : F
a : α
ha : a ∈ s
b : α
hb : b ∈ s
⊢ f a ⊓ f b ∈ ⇑f '' s

tactic: rw [← map_inf]
state_before: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeInf α
inst✝² : SemilatticeInf β
ι : Sort u_4
S : Set (Set α)
f✝ : ι → Set α
s t : Set α
a✝ : α
inst✝¹ : FunLike F α β
inst✝ : InfHomClass F α β
hs : InfClosed s
f : F
a : α
ha : a ∈ s
b : α
hb : b ∈ s
⊢ f a ⊓ f b ∈ ⇑f '' s
state_after: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeInf α
inst✝² : SemilatticeInf β
ι : Sort u_4
S : Set (Set α)
f✝ : ι → Set α
s t : Set α
a✝ : α
inst✝¹ : FunLike F α β
inst✝ : InfHomClass F α β
hs : InfClosed s
f : F
a : α
ha : a ∈ s
b : α
hb : b ∈ s
⊢ f (a ⊓ b) ∈ ⇑f '' s

tactic: exact Set.mem_image_of_mem _ <| hs ha hb
state_before: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeInf α
inst✝² : SemilatticeInf β
ι : Sort u_4
S : Set (Set α)
f✝ : ι → Set α
s t : Set α
a✝ : α
inst✝¹ : FunLike F α β
inst✝ : InfHomClass F α β
hs : InfClosed s
f : F
a : α
ha : a ∈ s
b : α
hb : b ∈ s
⊢ f (a ⊓ b) ∈ ⇑f '' s
state_after: no goals
Theorem: prod_le_borel_prod
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Basic.lean

tactic: refine sup_le ?_ ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s t u : Set α
inst✝⁹ : TopologicalSpace α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : BorelSpace α
inst✝⁶ : TopologicalSpace β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : BorelSpace β
inst✝³ : TopologicalSpace γ
inst✝² : MeasurableSpace γ
inst✝¹ : BorelSpace γ
inst✝ : MeasurableSpace δ
⊢ Prod.instMeasurableSpace ≤ borel (α × β)
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s t u : Set α
inst✝⁹ : TopologicalSpace α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : BorelSpace α
inst✝⁶ : TopologicalSpace β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : BorelSpace β
inst✝³ : TopologicalSpace γ
inst✝² : MeasurableSpace γ
inst✝¹ : BorelSpace γ
inst✝ : MeasurableSpace δ
⊢ MeasurableSpace.comap Prod.fst (borel α) ≤ borel (α × β)

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s t u : Set α
inst✝⁹ : TopologicalSpace α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : BorelSpace α
inst✝⁶ : TopologicalSpace β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : BorelSpace β
inst✝³ : TopologicalSpace γ
inst✝² : MeasurableSpace γ
inst✝¹ : BorelSpace γ
inst✝ : MeasurableSpace δ
⊢ MeasurableSpace.comap Prod.snd (borel β) ≤ borel (α × β)

tactic: exact comap_le_iff_le_map.mpr continuous_fst.borel_measurable
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s t u : Set α
inst✝⁹ : TopologicalSpace α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : BorelSpace α
inst✝⁶ : TopologicalSpace β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : BorelSpace β
inst✝³ : TopologicalSpace γ
inst✝² : MeasurableSpace γ
inst✝¹ : BorelSpace γ
inst✝ : MeasurableSpace δ
⊢ MeasurableSpace.comap Prod.fst (borel α) ≤ borel (α × β)
state_after: no goals

tactic: exact comap_le_iff_le_map.mpr continuous_snd.borel_measurable
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
γ₂ : Type u_4
δ : Type u_5
ι : Sort y
s t u : Set α
inst✝⁹ : TopologicalSpace α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : BorelSpace α
inst✝⁶ : TopologicalSpace β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : BorelSpace β
inst✝³ : TopologicalSpace γ
inst✝² : MeasurableSpace γ
inst✝¹ : BorelSpace γ
inst✝ : MeasurableSpace δ
⊢ MeasurableSpace.comap Prod.snd (borel β) ≤ borel (α × β)
state_after: no goals
Theorem: NNReal.tendsto_pow_atTop_nhds_zero_of_lt_one
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: simp only [NNReal.coe_pow, NNReal.coe_zero,
  _root_.tendsto_pow_atTop_nhds_zero_of_lt_one r.coe_nonneg hr]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
r : ℝ≥0
hr : r < 1
⊢ Tendsto (fun a => ↑(r ^ a)) atTop (𝓝 ↑0)
state_after: no goals
Theorem: Finset.min_eq_top
File: Mathlib/Data/Finset/Lattice.lean

tactic: simp [Finset.min, eq_empty_iff_forall_not_mem]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s : Finset α
⊢ s.min = ⊤ ↔ s = ∅
state_after: no goals
Theorem: ZFSet.mem_union
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: rw [← mem_toSet]
state_before: x y z : ZFSet
⊢ z ∈ x ∪ y ↔ z ∈ x ∨ z ∈ y
state_after: x y z : ZFSet
⊢ z ∈ (x ∪ y).toSet ↔ z ∈ x ∨ z ∈ y

tactic: simp
state_before: x y z : ZFSet
⊢ z ∈ (x ∪ y).toSet ↔ z ∈ x ∨ z ∈ y
state_after: no goals
Theorem: DiscreteQuotient.map_comp
File: Mathlib/Topology/DiscreteQuotient.lean

tactic: ext ⟨⟩
state_before: α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
S : DiscreteQuotient X
f : C(X, Y)
A A' : DiscreteQuotient X
B B' : DiscreteQuotient Y
g : C(Y, Z)
C : DiscreteQuotient Z
h1 : LEComap g B C
h2 : LEComap f A B
⊢ map (g.comp f) ⋯ = map g h1 ∘ map f h2
state_after: case h.mk
α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
S : DiscreteQuotient X
f : C(X, Y)
A A' : DiscreteQuotient X
B B' : DiscreteQuotient Y
g : C(Y, Z)
C : DiscreteQuotient Z
h1 : LEComap g B C
h2 : LEComap f A B
x✝ : Quotient A.toSetoid
a✝ : X
⊢ map (g.comp f) ⋯ (Quot.mk Setoid.r a✝) = (map g h1 ∘ map f h2) (Quot.mk Setoid.r a✝)

tactic: rfl
state_before: case h.mk
α : Type u_1
X : Type u_2
Y : Type u_3
Z : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
S : DiscreteQuotient X
f : C(X, Y)
A A' : DiscreteQuotient X
B B' : DiscreteQuotient Y
g : C(Y, Z)
C : DiscreteQuotient Z
h1 : LEComap g B C
h2 : LEComap f A B
x✝ : Quotient A.toSetoid
a✝ : X
⊢ map (g.comp f) ⋯ (Quot.mk Setoid.r a✝) = (map g h1 ∘ map f h2) (Quot.mk Setoid.r a✝)
state_after: no goals
Theorem: Matroid.basis'_iff_basis_inter_ground
File: Mathlib/Data/Matroid/Basic.lean

tactic: rw [Basis', Basis, and_iff_left inter_subset_right]
state_before: α : Type u_1
M : Matroid α
I X : Set α
⊢ M.Basis' I X ↔ M.Basis I (X ∩ M.E)
state_after: α : Type u_1
M : Matroid α
I X : Set α
⊢ I ∈ maximals (fun x x_1 => x ⊆ x_1) {A | M.Indep A ∧ A ⊆ X} ↔
    I ∈ maximals (fun x x_1 => x ⊆ x_1) {A | M.Indep A ∧ A ⊆ X ∩ M.E}

tactic: convert Iff.rfl using 3
state_before: α : Type u_1
M : Matroid α
I X : Set α
⊢ I ∈ maximals (fun x x_1 => x ⊆ x_1) {A | M.Indep A ∧ A ⊆ X} ↔
    I ∈ maximals (fun x x_1 => x ⊆ x_1) {A | M.Indep A ∧ A ⊆ X ∩ M.E}
state_after: case h.e'_2.h.e'_5.h.e'_3
α : Type u_1
M : Matroid α
I X : Set α
⊢ {A | M.Indep A ∧ A ⊆ X ∩ M.E} = {A | M.Indep A ∧ A ⊆ X}

tactic: ext I
state_before: case h.e'_2.h.e'_5.h.e'_3
α : Type u_1
M : Matroid α
I X : Set α
⊢ {A | M.Indep A ∧ A ⊆ X ∩ M.E} = {A | M.Indep A ∧ A ⊆ X}
state_after: case h.e'_2.h.e'_5.h.e'_3.h
α : Type u_1
M : Matroid α
I✝ X I : Set α
⊢ I ∈ {A | M.Indep A ∧ A ⊆ X ∩ M.E} ↔ I ∈ {A | M.Indep A ∧ A ⊆ X}

tactic: simp only [subset_inter_iff, mem_setOf_eq, and_congr_right_iff, and_iff_left_iff_imp]
state_before: case h.e'_2.h.e'_5.h.e'_3.h
α : Type u_1
M : Matroid α
I✝ X I : Set α
⊢ I ∈ {A | M.Indep A ∧ A ⊆ X ∩ M.E} ↔ I ∈ {A | M.Indep A ∧ A ⊆ X}
state_after: case h.e'_2.h.e'_5.h.e'_3.h
α : Type u_1
M : Matroid α
I✝ X I : Set α
⊢ M.Indep I → I ⊆ X → I ⊆ M.E

tactic: exact fun h _ ↦ h.subset_ground
state_before: case h.e'_2.h.e'_5.h.e'_3.h
α : Type u_1
M : Matroid α
I✝ X I : Set α
⊢ M.Indep I → I ⊆ X → I ⊆ M.E
state_after: no goals
Theorem: Complex.map_exp_comap_re_atBot
File: Mathlib/Analysis/SpecialFunctions/Complex/Log.lean

tactic: rw [← comap_exp_nhds_zero, map_comap, range_exp, nhdsWithin]
state_before: ⊢ map cexp (comap re atBot) = 𝓝[≠] 0
state_after: no goals
Theorem: sup_eq_iSup
File: Mathlib/Order/CompleteLattice.lean

tactic: rw [iSup_bool_eq, Bool.cond_true, Bool.cond_false]
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f g s t : ι → α
a b x y : α
⊢ x ⊔ y = ⨆ b, bif b then x else y
state_after: no goals
Theorem: LowerSet.coe_eq_empty
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp [SetLike.ext'_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : LE α
S : Set (LowerSet α)
s t : LowerSet α
a : α
⊢ ↑s = ∅ ↔ s = ⊥
state_after: no goals
Theorem: TopCat.openEmbedding_iff_isIso_comp'
File: Mathlib/Topology/Category/TopCat/Basic.lean

tactic: simp only [← Functor.map_comp]
state_before: X Y Z : TopCat
f : X ⟶ Y
g : Y ⟶ Z
inst✝ : IsIso f
⊢ OpenEmbedding ((forget TopCat).map f ≫ (forget TopCat).map g) ↔ OpenEmbedding ⇑g
state_after: X Y Z : TopCat
f : X ⟶ Y
g : Y ⟶ Z
inst✝ : IsIso f
⊢ OpenEmbedding ((forget TopCat).map (f ≫ g)) ↔ OpenEmbedding ⇑g

tactic: exact openEmbedding_iff_isIso_comp f g
state_before: X Y Z : TopCat
f : X ⟶ Y
g : Y ⟶ Z
inst✝ : IsIso f
⊢ OpenEmbedding ((forget TopCat).map (f ≫ g)) ↔ OpenEmbedding ⇑g
state_after: no goals