1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: LinearMap.ker_dualMap_eq_dualAnnihilator_range
File: Mathlib/LinearAlgebra/Dual.lean

tactic: ext
state_before: R : Type uR
inst✝⁴ : CommSemiring R
M₁ : Type uM₁
M₂ : Type uM₂
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
⊢ ker f.dualMap = (range f).dualAnnihilator
state_after: case h
R : Type uR
inst✝⁴ : CommSemiring R
M₁ : Type uM₁
M₂ : Type uM₂
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
x✝ : Dual R M₂
⊢ x✝ ∈ ker f.dualMap ↔ x✝ ∈ (range f).dualAnnihilator

tactic: simp_rw [mem_ker, ext_iff, Submodule.mem_dualAnnihilator,
  ← SetLike.mem_coe, range_coe, Set.forall_mem_range]
state_before: case h
R : Type uR
inst✝⁴ : CommSemiring R
M₁ : Type uM₁
M₂ : Type uM₂
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
x✝ : Dual R M₂
⊢ x✝ ∈ ker f.dualMap ↔ x✝ ∈ (range f).dualAnnihilator
state_after: case h
R : Type uR
inst✝⁴ : CommSemiring R
M₁ : Type uM₁
M₂ : Type uM₂
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
x✝ : Dual R M₂
⊢ (∀ (x : M₁), (f.dualMap x✝) x = 0 x) ↔ ∀ (i : M₁), x✝ (f i) = 0

tactic: rfl
state_before: case h
R : Type uR
inst✝⁴ : CommSemiring R
M₁ : Type uM₁
M₂ : Type uM₂
inst✝³ : AddCommMonoid M₁
inst✝² : Module R M₁
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R M₂
f : M₁ →ₗ[R] M₂
x✝ : Dual R M₂
⊢ (∀ (x : M₁), (f.dualMap x✝) x = 0 x) ↔ ∀ (i : M₁), x✝ (f i) = 0
state_after: no goals
Theorem: LinearMap.toMatrixAlgEquiv'_apply
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: simp [LinearMap.toMatrixAlgEquiv']
state_before: R : Type u_1
inst✝² : CommSemiring R
k : Type u_2
l : Type u_3
m : Type u_4
n : Type u_5
inst✝¹ : DecidableEq n
inst✝ : Fintype n
f : (n → R) →ₗ[R] n → R
i j : n
⊢ toMatrixAlgEquiv' f i j = f (fun j' => if j' = j then 1 else 0) i
state_after: no goals
Theorem: Units.divp_sub_divp_same
File: Mathlib/Algebra/Ring/Units.lean

tactic: rw [sub_eq_add_neg, sub_eq_add_neg, neg_divp, divp_add_divp_same]
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝ : Ring α
a✝ b✝ a b : α
u : αˣ
⊢ a /ₚ u - b /ₚ u = (a - b) /ₚ u
state_after: no goals
Theorem: List.nnnorm_prod_le
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: simp [NNReal.coe_list_prod, List.map_map]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : SeminormedRing α
inst✝ : NormOneClass α
l : List α
⊢ (map norm l).prod = (fun a => ↑a) (map nnnorm l).prod
state_after: no goals
Theorem: List.findIdx?_of_eq_some
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: induction xs generalizing i with
| nil => simp_all
| cons x xs ih =>
  simp_all only [findIdx?_cons, Nat.zero_add, findIdx?_succ]
  split at w <;> cases i <;> simp_all
state_before: α : Type u_1
i : Nat
xs : List α
p : α → Bool
w : findIdx? p xs = some i
⊢ match xs.get? i with
  | some a => p a = true
  | none => false = true
state_after: no goals

tactic: simp_all
state_before: case nil
α : Type u_1
p : α → Bool
i : Nat
w : findIdx? p [] = some i
⊢ match [].get? i with
  | some a => p a = true
  | none => false = true
state_after: no goals

tactic: simp_all only [findIdx?_cons, Nat.zero_add, findIdx?_succ]
state_before: case cons
α : Type u_1
p : α → Bool
x : α
xs : List α
ih :
  ∀ {i : Nat},
    findIdx? p xs = some i →
      match xs.get? i with
      | some a => p a = true
      | none => false = true
i : Nat
w : findIdx? p (x :: xs) = some i
⊢ match (x :: xs).get? i with
  | some a => p a = true
  | none => false = true
state_after: case cons
α : Type u_1
p : α → Bool
x : α
xs : List α
i : Nat
ih :
  ∀ {i : Nat},
    findIdx? p xs = some i →
      match xs.get? i with
      | some a => p a = true
      | none => False
w : (if p x = true then some 0 else Option.map (fun i => i + 1) (findIdx? p xs)) = some i
⊢ match (x :: xs).get? i with
  | some a => p a = true
  | none => False

tactic: split at w <;> cases i <;> simp_all
state_before: case cons
α : Type u_1
p : α → Bool
x : α
xs : List α
i : Nat
ih :
  ∀ {i : Nat},
    findIdx? p xs = some i →
      match xs.get? i with
      | some a => p a = true
      | none => False
w : (if p x = true then some 0 else Option.map (fun i => i + 1) (findIdx? p xs)) = some i
⊢ match (x :: xs).get? i with
  | some a => p a = true
  | none => False
state_after: no goals
Theorem: integrableOn_Icc_iff_integrableOn_Ico'
File: Mathlib/MeasureTheory/Integral/IntegrableOn.lean

tactic: by_cases hab : a ≤ b
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : PartialOrder α
inst✝ : MeasurableSingletonClass α
f : α → E
μ : Measure α
a b : α
hb : μ {b} ≠ ⊤
⊢ IntegrableOn f (Icc a b) μ ↔ IntegrableOn f (Ico a b) μ
state_after: case pos
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : PartialOrder α
inst✝ : MeasurableSingletonClass α
f : α → E
μ : Measure α
a b : α
hb : μ {b} ≠ ⊤
hab : a ≤ b
⊢ IntegrableOn f (Icc a b) μ ↔ IntegrableOn f (Ico a b) μ

case neg
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : PartialOrder α
inst✝ : MeasurableSingletonClass α
f : α → E
μ : Measure α
a b : α
hb : μ {b} ≠ ⊤
hab : ¬a ≤ b
⊢ IntegrableOn f (Icc a b) μ ↔ IntegrableOn f (Ico a b) μ

tactic: rw [← Ico_union_right hab, integrableOn_union,
  eq_true (integrableOn_singleton_iff.mpr <| Or.inr hb.lt_top), and_true_iff]
state_before: case pos
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : PartialOrder α
inst✝ : MeasurableSingletonClass α
f : α → E
μ : Measure α
a b : α
hb : μ {b} ≠ ⊤
hab : a ≤ b
⊢ IntegrableOn f (Icc a b) μ ↔ IntegrableOn f (Ico a b) μ
state_after: no goals

tactic: rw [Icc_eq_empty hab, Ico_eq_empty]
state_before: case neg
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : PartialOrder α
inst✝ : MeasurableSingletonClass α
f : α → E
μ : Measure α
a b : α
hb : μ {b} ≠ ⊤
hab : ¬a ≤ b
⊢ IntegrableOn f (Icc a b) μ ↔ IntegrableOn f (Ico a b) μ
state_after: case neg
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : PartialOrder α
inst✝ : MeasurableSingletonClass α
f : α → E
μ : Measure α
a b : α
hb : μ {b} ≠ ⊤
hab : ¬a ≤ b
⊢ ¬a < b

tactic: contrapose! hab
state_before: case neg
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : PartialOrder α
inst✝ : MeasurableSingletonClass α
f : α → E
μ : Measure α
a b : α
hb : μ {b} ≠ ⊤
hab : ¬a ≤ b
⊢ ¬a < b
state_after: case neg
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : PartialOrder α
inst✝ : MeasurableSingletonClass α
f : α → E
μ : Measure α
a b : α
hb : μ {b} ≠ ⊤
hab : a < b
⊢ a ≤ b

tactic: exact hab.le
state_before: case neg
α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝³ : MeasurableSpace α
inst✝² : NormedAddCommGroup E
inst✝¹ : PartialOrder α
inst✝ : MeasurableSingletonClass α
f : α → E
μ : Measure α
a b : α
hb : μ {b} ≠ ⊤
hab : a < b
⊢ a ≤ b
state_after: no goals
Theorem: LinearMap.toMatrix_toLin
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

tactic: rw [← Matrix.toLin_symm, LinearEquiv.symm_apply_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✝⁵ : Finite 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 : Matrix m n R
⊢ (toMatrix v₁ v₂) ((toLin v₁ v₂) M) = M
state_after: no goals
Theorem: MeasureTheory.Measure.IicSnd_mono
File: Mathlib/Probability/Kernel/Disintegration/CondCdf.lean

tactic: refine Measure.le_iff.2 fun s hs ↦ ?_
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
r r' : ℝ
h_le : r ≤ r'
⊢ ρ.IicSnd r ≤ ρ.IicSnd r'
state_after: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
r r' : ℝ
h_le : r ≤ r'
s : Set α
hs : MeasurableSet s
⊢ (ρ.IicSnd r) s ≤ (ρ.IicSnd r') s

tactic: simp_rw [IicSnd_apply ρ _ hs]
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
r r' : ℝ
h_le : r ≤ r'
s : Set α
hs : MeasurableSet s
⊢ (ρ.IicSnd r) s ≤ (ρ.IicSnd r') s
state_after: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
r r' : ℝ
h_le : r ≤ r'
s : Set α
hs : MeasurableSet s
⊢ ρ (s ×ˢ Iic r) ≤ ρ (s ×ˢ Iic r')

tactic: refine measure_mono (prod_subset_prod_iff.mpr (Or.inl ⟨subset_rfl, Iic_subset_Iic.mpr ?_⟩))
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
r r' : ℝ
h_le : r ≤ r'
s : Set α
hs : MeasurableSet s
⊢ ρ (s ×ˢ Iic r) ≤ ρ (s ×ˢ Iic r')
state_after: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
r r' : ℝ
h_le : r ≤ r'
s : Set α
hs : MeasurableSet s
⊢ r ≤ r'

tactic: exact mod_cast h_le
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
ρ : Measure (α × ℝ)
r r' : ℝ
h_le : r ≤ r'
s : Set α
hs : MeasurableSet s
⊢ r ≤ r'
state_after: no goals
Theorem: OpenEmbedding.toPartialHomeomorph_right_inv
File: Mathlib/Topology/PartialHomeomorph.lean

tactic: rw [← congr_fun (h.toPartialHomeomorph_apply f), PartialHomeomorph.right_inv]
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁶ : TopologicalSpace X
inst✝⁵ : TopologicalSpace X'
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Y'
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace Z'
f : X → Y
h : OpenEmbedding f
inst✝ : Nonempty X
x : Y
hx : x ∈ range f
⊢ f (↑(toPartialHomeomorph f h).symm x) = x
state_after: case h
X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁶ : TopologicalSpace X
inst✝⁵ : TopologicalSpace X'
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Y'
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace Z'
f : X → Y
h : OpenEmbedding f
inst✝ : Nonempty X
x : Y
hx : x ∈ range f
⊢ x ∈ (toPartialHomeomorph f h).target

tactic: rwa [toPartialHomeomorph_target]
state_before: case h
X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁶ : TopologicalSpace X
inst✝⁵ : TopologicalSpace X'
inst✝⁴ : TopologicalSpace Y
inst✝³ : TopologicalSpace Y'
inst✝² : TopologicalSpace Z
inst✝¹ : TopologicalSpace Z'
f : X → Y
h : OpenEmbedding f
inst✝ : Nonempty X
x : Y
hx : x ∈ range f
⊢ x ∈ (toPartialHomeomorph f h).target
state_after: no goals
Theorem: SlashAction.smul_slash_of_tower
File: Mathlib/NumberTheory/ModularForms/SlashActions.lean

tactic: rw [← smul_one_smul γ r a, SlashAction.smul_slash, smul_one_smul]
state_before: R : Type u_1
β : Type u_2
G : Type u_3
α : Type u_4
γ : Type u_5
inst✝⁷ : Group G
inst✝⁶ : AddGroup α
inst✝⁵ : Monoid γ
inst✝⁴ : MulAction γ α
inst✝³ : SMul R γ
inst✝² : SMul R α
inst✝¹ : IsScalarTower R γ α
inst✝ : SlashAction β G α γ
k : β
g : G
a : α
r : R
⊢ (r • a) ∣[k;γ] g = r • a ∣[k;γ] g
state_after: no goals
Theorem: Metric.closure_eq_iInter_thickening
File: Mathlib/Topology/MetricSpace/Thickening.lean

tactic: rw [← cthickening_zero]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s t : Set α
x : α
E : Set α
⊢ closure E = ⋂ δ, ⋂ (_ : 0 < δ), thickening δ E
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s t : Set α
x : α
E : Set α
⊢ cthickening 0 E = ⋂ δ, ⋂ (_ : 0 < δ), thickening δ E

tactic: exact cthickening_eq_iInter_thickening rfl.ge E
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s t : Set α
x : α
E : Set α
⊢ cthickening 0 E = ⋂ δ, ⋂ (_ : 0 < δ), thickening δ E
state_after: no goals
Theorem: Multiset.toFinset_sum_count_nsmul_eq
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [← Finset.sum_multiset_map_count, Multiset.sum_map_singleton]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : DecidableEq α
s : Multiset α
⊢ ∑ a ∈ s.toFinset, count a s • {a} = s
state_after: no goals
Theorem: ZNum.to_of_int
File: Mathlib/Data/Num/Lemmas.lean

tactic: simp
state_before: α : Type u_1
n : ℤ
⊢ ↑↑0 = 0
state_after: no goals

tactic: simp
state_before: α : Type u_1
n : ℤ
⊢ ∀ (k : ℤ), 0 ≤ k → ↑↑k = k → ↑↑(k + 1) = k + 1
state_after: no goals

tactic: simp
state_before: α : Type u_1
n : ℤ
⊢ ∀ k ≤ 0, ↑↑k = k → ↑↑(k - 1) = k - 1
state_after: no goals
Theorem: Ordinal.div_eq_zero_of_lt
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [← Ordinal.le_zero, div_le <| Ordinal.pos_iff_ne_zero.1 <| (Ordinal.zero_le _).trans_lt h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : a < b
⊢ a / b = 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : a < b
⊢ a < b * succ 0

tactic: simpa only [succ_zero, mul_one] using h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : a < b
⊢ a < b * succ 0
state_after: no goals
Theorem: Projectivization.submodule_eq
File: Mathlib/LinearAlgebra/Projectivization/Basic.lean

tactic: conv_lhs => rw [← v.mk_rep]
state_before: K : Type u_1
V : Type u_2
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : ℙ K V
⊢ v.submodule = Submodule.span K {v.rep}
state_after: K : Type u_1
V : Type u_2
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : ℙ K V
⊢ (mk K v.rep ⋯).submodule = Submodule.span K {v.rep}

tactic: rfl
state_before: K : Type u_1
V : Type u_2
inst✝² : DivisionRing K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
v : ℙ K V
⊢ (mk K v.rep ⋯).submodule = Submodule.span K {v.rep}
state_after: no goals
Theorem: Polynomial.natDegree_pow_X_add_C
File: Mathlib/Algebra/Polynomial/Monic.lean

tactic: rw [(monic_X_add_C r).natDegree_pow, natDegree_X_add_C, mul_one]
state_before: R : Type u
S : Type v
a b : R
m n✝ : ℕ
ι : Type y
inst✝¹ : Semiring R
p q r✝ : R[X]
inst✝ : Nontrivial R
n : ℕ
r : R
⊢ ((X + C r) ^ n).natDegree = n
state_after: no goals
Theorem: PadicInt.norm_int_lt_one_iff_dvd
File: Mathlib/NumberTheory/Padics/PadicIntegers.lean

tactic: rwa [norm_intCast_eq_padic_norm]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : ℤ
this : ‖↑k‖ < 1 ↔ ↑p ∣ k
⊢ ‖↑k‖ < 1 ↔ ↑p ∣ k
state_after: no goals
Theorem: closure_Ico
File: Mathlib/Topology/Order/DenselyOrdered.lean

tactic: apply Subset.antisymm
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝ b✝ : α
s : Set α
a b : α
hab : a ≠ b
⊢ closure (Ico a b) = Icc a b
state_after: case h₁
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝ b✝ : α
s : Set α
a b : α
hab : a ≠ b
⊢ closure (Ico a b) ⊆ Icc a b

case h₂
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝ b✝ : α
s : Set α
a b : α
hab : a ≠ b
⊢ Icc a b ⊆ closure (Ico a b)

tactic: exact closure_minimal Ico_subset_Icc_self isClosed_Icc
state_before: case h₁
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝ b✝ : α
s : Set α
a b : α
hab : a ≠ b
⊢ closure (Ico a b) ⊆ Icc a b
state_after: no goals

tactic: apply Subset.trans _ (closure_mono Ioo_subset_Ico_self)
state_before: case h₂
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝ b✝ : α
s : Set α
a b : α
hab : a ≠ b
⊢ Icc a b ⊆ closure (Ico a b)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝ b✝ : α
s : Set α
a b : α
hab : a ≠ b
⊢ Icc a b ⊆ closure (Ioo a b)

tactic: rw [closure_Ioo hab]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝ b✝ : α
s : Set α
a b : α
hab : a ≠ b
⊢ Icc a b ⊆ closure (Ioo a b)
state_after: no goals
Theorem: Fin.succAbove_ne_last_last
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [succAbove_of_lt_succ _ _ (succ_last _ ▸ lt_last_iff_ne_last.2 h), succ_last]
state_before: n m : ℕ
p : Fin (n + 1)
i j : Fin n
a : Fin (n + 2)
h : a ≠ last (n + 1)
⊢ a.succAbove (last n) = last (n + 1)
state_after: no goals
Theorem: bihimp_bihimp_cancel_left
File: Mathlib/Order/SymmDiff.lean

tactic: simp [← bihimp_assoc]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : BooleanAlgebra α
a b c d : α
⊢ a ⇔ (a ⇔ b) = b
state_after: no goals
Theorem: CategoryTheory.Limits.HasBiproduct.of_hasCoproduct
File: Mathlib/CategoryTheory/Preadditive/Biproducts.lean

tactic: cases nonempty_fintype J
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
J : Type
inst✝¹ : Finite J
f : J → C
inst✝ : HasCoproduct f
⊢ HasBiproduct f
state_after: case intro
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
J : Type
inst✝¹ : Finite J
f : J → C
inst✝ : HasCoproduct f
val✝ : Fintype J
⊢ HasBiproduct f

tactic: exact HasBiproduct.mk
  { bicone := _
    isBilimit := biconeIsBilimitOfColimitCoconeOfIsColimit (colimit.isColimit _) }
state_before: case intro
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
J : Type
inst✝¹ : Finite J
f : J → C
inst✝ : HasCoproduct f
val✝ : Fintype J
⊢ HasBiproduct f
state_after: no goals
Theorem: IsCyclotomicExtension.neZero
File: Mathlib/NumberTheory/Cyclotomic/Basic.lean

tactic: obtain ⟨⟨r, hr⟩, -⟩ := (iff_singleton n A B).1 h
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
h : IsCyclotomicExtension {n} A B
inst✝ : IsDomain B
⊢ NeZero ↑↑n
state_after: case intro.intro
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
h : IsCyclotomicExtension {n} A B
inst✝ : IsDomain B
r : B
hr : IsPrimitiveRoot r ↑n
⊢ NeZero ↑↑n

tactic: exact hr.neZero'
state_before: case intro.intro
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
h : IsCyclotomicExtension {n} A B
inst✝ : IsDomain B
r : B
hr : IsPrimitiveRoot r ↑n
⊢ NeZero ↑↑n
state_after: no goals
Theorem: tendsto_comp_coe_Ioi_atBot
File: Mathlib/Topology/Order/DenselyOrdered.lean

tactic: rw [← map_coe_Ioi_atBot, tendsto_map'_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
l : Filter β
f : α → β
⊢ Tendsto (fun x => f ↑x) atBot l ↔ Tendsto f (𝓝[>] a) l
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
l : Filter β
f : α → β
⊢ Tendsto (fun x => f ↑x) atBot l ↔ Tendsto (f ∘ Subtype.val) atBot l

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a b : α
s : Set α
l : Filter β
f : α → β
⊢ Tendsto (fun x => f ↑x) atBot l ↔ Tendsto (f ∘ Subtype.val) atBot l
state_after: no goals
Theorem: Function.Bijective.existsUnique_iff
File: Mathlib/Logic/Function/Basic.lean

tactic: simpa [hx]
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f✝ f : α → β
hf : Bijective f
p : β → Prop
x✝ : ∃! y, p y
y : β
hpy : (fun y => p y) y
hy : ∀ (y_1 : β), (fun y => p y) y_1 → y_1 = y
x : α
hx : f x = y
⊢ (fun x => p (f x)) x
state_after: no goals

tactic: simpa [hz]
state_before: α : Sort u_1
β : Sort u_2
γ : Sort u_3
f✝ f : α → β
hf : Bijective f
p : β → Prop
x✝ : ∃! x, p (f x)
x : α
hpx : (fun x => p (f x)) x
hx : ∀ (y : α), (fun x => p (f x)) y → y = x
y : β
hy : (fun y => p y) y
z : α
hz : f z = y
⊢ (fun x => p (f x)) z
state_after: no goals
Theorem: Finset.piecewise_insert
File: Mathlib/Data/Finset/Piecewise.lean

tactic: classical simp only [← piecewise_coe, coe_insert, ← Set.piecewise_insert]
state_before: ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝² : (j : ι) → Decidable (j ∈ s)
inst✝¹ : DecidableEq ι
j : ι
inst✝ : (i : ι) → Decidable (i ∈ insert j s)
⊢ (insert j s).piecewise f g = update (s.piecewise f g) j (f j)
state_after: ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝² : (j : ι) → Decidable (j ∈ s)
inst✝¹ : DecidableEq ι
j : ι
inst✝ : (i : ι) → Decidable (i ∈ insert j s)
⊢ (↑(insert j s)).piecewise f g = (insert j ↑s).piecewise f g

tactic: ext
state_before: ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝² : (j : ι) → Decidable (j ∈ s)
inst✝¹ : DecidableEq ι
j : ι
inst✝ : (i : ι) → Decidable (i ∈ insert j s)
⊢ (↑(insert j s)).piecewise f g = (insert j ↑s).piecewise f g
state_after: case h
ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝² : (j : ι) → Decidable (j ∈ s)
inst✝¹ : DecidableEq ι
j : ι
inst✝ : (i : ι) → Decidable (i ∈ insert j s)
x✝ : ι
⊢ (↑(insert j s)).piecewise f g x✝ = (insert j ↑s).piecewise f g x✝

tactic: congr
state_before: case h
ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝² : (j : ι) → Decidable (j ∈ s)
inst✝¹ : DecidableEq ι
j : ι
inst✝ : (i : ι) → Decidable (i ∈ insert j s)
x✝ : ι
⊢ (↑(insert j s)).piecewise f g x✝ = (insert j ↑s).piecewise f g x✝
state_after: case h.e_s
ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝² : (j : ι) → Decidable (j ∈ s)
inst✝¹ : DecidableEq ι
j : ι
inst✝ : (i : ι) → Decidable (i ∈ insert j s)
x✝ : ι
⊢ ↑(insert j s) = insert j ↑s

tactic: simp
state_before: case h.e_s
ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝² : (j : ι) → Decidable (j ∈ s)
inst✝¹ : DecidableEq ι
j : ι
inst✝ : (i : ι) → Decidable (i ∈ insert j s)
x✝ : ι
⊢ ↑(insert j s) = insert j ↑s
state_after: no goals

tactic: simp only [← piecewise_coe, coe_insert, ← Set.piecewise_insert]
state_before: ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝² : (j : ι) → Decidable (j ∈ s)
inst✝¹ : DecidableEq ι
j : ι
inst✝ : (i : ι) → Decidable (i ∈ insert j s)
⊢ (insert j s).piecewise f g = update (s.piecewise f g) j (f j)
state_after: ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝² : (j : ι) → Decidable (j ∈ s)
inst✝¹ : DecidableEq ι
j : ι
inst✝ : (i : ι) → Decidable (i ∈ insert j s)
⊢ (↑(insert j s)).piecewise f g = (insert j ↑s).piecewise f g