tasksource/leandojo huggingface dataset:
Theorem: Set.enumerate_eq_none_of_sel
File: Mathlib/Data/Set/Enumerate.lean

tactic: simp [h, enumerate]
state_before: α : Type u_1
sel : Set α → Option α
s : Set α
h : sel s = none
⊢ enumerate sel s 0 = none

tactic: simp [h, enumerate]
state_before: α : Type u_1
sel : Set α → Option α
s : Set α
h : sel s = none
n : ℕ
⊢ enumerate sel s (n + 1) = none

tactic: rfl
state_before: α : Type u_1
sel : Set α → Option α
s : Set α
h : sel s = none
n : ℕ
⊢ (do
      let a ← none
      enumerate sel (s \ {a}) n) =
    none
Theorem: MvPolynomial.rename_rename
File: Mathlib/Data/MvPolynomial/Rename.lean

tactic: simp only [rename, aeval_eq_eval₂Hom]
state_before: σ : Type u_1
τ : Type u_4
α : Type u_3
R : Type u_2
S : Type ?u.149749
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
g : τ → α
p : MvPolynomial σ R
⊢ ↑(rename g) (eval₂ C (X ∘ f) p) = ↑(rename (g ∘ f)) p

tactic: rw [eval₂_comp_left (eval₂Hom (algebraMap R (MvPolynomial α R)) (X ∘ g)) C (X ∘ f) p]
state_before: σ : Type u_1
τ : Type u_4
α : Type u_3
R : Type u_2
S : Type ?u.149749
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
g : τ → α
p : MvPolynomial σ R
⊢ ↑(eval₂Hom (algebraMap R (MvPolynomial α R)) (X ∘ g)) (eval₂ C (X ∘ f) p) =
    ↑(eval₂Hom (algebraMap R (MvPolynomial α R)) (X ∘ g ∘ f)) p

tactic: refine' eval₂Hom_congr _ rfl rfl
state_before: σ : Type u_1
τ : Type u_4
α : Type u_3
R : Type u_2
S : Type ?u.149749
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
g : τ → α
p : MvPolynomial σ R
⊢ eval₂ (RingHom.comp (eval₂Hom (algebraMap R (MvPolynomial α R)) fun x => X (g x)) C) (fun x => X (g (f x))) p =
    eval₂ (algebraMap R (MvPolynomial α R)) (fun x => X (g (f x))) p

tactic: ext1
state_before: σ : Type u_1
τ : Type u_4
α : Type u_3
R : Type u_2
S : Type ?u.149749
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
g : τ → α
p : MvPolynomial σ R
⊢ RingHom.comp (eval₂Hom (algebraMap R (MvPolynomial α R)) fun x => X (g x)) C = algebraMap R (MvPolynomial α R)

tactic: simp only [comp_apply, RingHom.coe_comp, eval₂Hom_C]
state_before: case a
σ : Type u_1
τ : Type u_4
α : Type u_3
R : Type u_2
S : Type ?u.149749
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : σ → τ
g : τ → α
p : MvPolynomial σ R
x✝ : R
⊢ ↑(RingHom.comp (eval₂Hom (algebraMap R (MvPolynomial α R)) fun x => X (g x)) C) x✝ =
    ↑(algebraMap R (MvPolynomial α R)) x✝
Theorem: Asymptotics.IsBigO.hasFDerivWithinAt
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

tactic: simp_rw [HasFDerivWithinAt, HasFDerivAtFilter,
  h.eq_zero_of_norm_pow_within hx₀ <| zero_lt_one.trans hn, zero_apply, sub_zero,
  h.trans_isLittleO ((isLittleO_pow_sub_sub x₀ hn).mono nhdsWithin_le_nhds)]
state_before: 𝕜 : Type u_3
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type ?u.366356
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.366451
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
s : Set E
x₀ : E
n : ℕ
h : f =O[𝓝[s] x₀] fun x => ‖x - x₀‖ ^ n
hx₀ : x₀ ∈ s
hn : 1 < n
⊢ HasFDerivWithinAt f 0 s x₀
Theorem: Vector.continuous_insertNth'
File: Mathlib/Topology/List.lean

tactic: rw [ContinuousAt, nhds_prod_eq]
state_before: α : Type u_1
β : Type ?u.66987
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
n : ℕ
i : Fin (n + 1)
x✝ : α × Vector α n
a : α
l : Vector α n
⊢ ContinuousAt (fun p => insertNth p.fst i p.snd) (a, l)

tactic: exact tendsto_insertNth
state_before: α : Type u_1
β : Type ?u.66987
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
n : ℕ
i : Fin (n + 1)
x✝ : α × Vector α n
a : α
l : Vector α n
⊢ Tendsto (fun p => insertNth p.fst i p.snd) (𝓝 a ×ˢ 𝓝 l) (𝓝 (insertNth (a, l).fst i (a, l).snd))
Theorem: Polynomial.integralNormalization_coeff_degree
File: Mathlib/Data/Polynomial/IntegralNormalization.lean

tactic: rw [integralNormalization_coeff, if_pos hi]
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
f : R[X]
i : ℕ
hi : degree f = ↑i
⊢ coeff (integralNormalization f) i = 1
Theorem: Vector.cons_head_tail
File: Mathlib/Data/Vector.lean

tactic: contradiction
state_before: α : Type u
β : Type v
φ : Type w
n : ℕ
h : List.length [] = succ n
⊢ cons (head { val := [], property := h }) (tail { val := [], property := h }) = { val := [], property := h }
Theorem: inv_mul_cancel_right
File: Mathlib/Algebra/Group/Defs.lean

tactic: rw [mul_assoc, mul_left_inv, mul_one]
state_before: G : Type u_1
inst✝ : Group G
a✝ b✝ c a b : G
⊢ a * b⁻¹ * b = a
Theorem: LinearMap.IsRefl.ker_eq_bot_iff_ker_flip_eq_bot
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

tactic: refine' ⟨ker_flip_eq_bot H, fun h ↦ _⟩
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type ?u.124036
R₃ : Type ?u.124039
M : Type ?u.124042
M₁ : Type u_3
M₂ : Type ?u.124048
Mₗ₁ : Type ?u.124051
Mₗ₁' : Type ?u.124054
Mₗ₂ : Type ?u.124057
Mₗ₂' : Type ?u.124060
K : Type ?u.124063
K₁ : Type ?u.124066
K₂ : Type ?u.124069
V : Type ?u.124072
V₁ : Type ?u.124075
V₂ : Type ?u.124078
n : Type ?u.124081
inst✝³ : CommSemiring R
inst✝² : CommSemiring R₁
inst✝¹ : AddCommMonoid M₁
inst✝ : Module R₁ M₁
I₁ I₂ : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₁ →ₛₗ[I₂] R
H✝ H : IsRefl B
⊢ ker B = ⊥ ↔ ker (flip B) = ⊥

tactic: exact (congr_arg _ B.flip_flip.symm).trans (ker_flip_eq_bot (flip_isRefl_iff.mpr H) h)
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type ?u.124036
R₃ : Type ?u.124039
M : Type ?u.124042
M₁ : Type u_3
M₂ : Type ?u.124048
Mₗ₁ : Type ?u.124051
Mₗ₁' : Type ?u.124054
Mₗ₂ : Type ?u.124057
Mₗ₂' : Type ?u.124060
K : Type ?u.124063
K₁ : Type ?u.124066
K₂ : Type ?u.124069
V : Type ?u.124072
V₁ : Type ?u.124075
V₂ : Type ?u.124078
n : Type ?u.124081
inst✝³ : CommSemiring R
inst✝² : CommSemiring R₁
inst✝¹ : AddCommMonoid M₁
inst✝ : Module R₁ M₁
I₁ I₂ : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₁ →ₛₗ[I₂] R
H✝ H : IsRefl B
h : ker (flip B) = ⊥
⊢ ker B = ⊥
Theorem: Nat.succ_mul_centralBinom_succ
File: Mathlib/Data/Nat/Choose/Central.lean

tactic: rw [choose_succ_right_eq, choose_mul_succ_eq]
state_before: n : ℕ
⊢ choose (2 * n + 2) (n + 1) * (n + 1) = choose (2 * n + 1) n * (2 * n + 2)

tactic: ring
state_before: n : ℕ
⊢ choose (2 * n + 1) n * (2 * n + 2) = 2 * (choose (2 * n + 1) n * (n + 1))

tactic: rw [two_mul n, add_assoc,
    Nat.add_sub_cancel_left]
state_before: n : ℕ
⊢ 2 * (choose (2 * n + 1) n * (n + 1)) = 2 * (choose (2 * n + 1) n * (2 * n + 1 - n))

tactic: rw [choose_mul_succ_eq]
state_before: n : ℕ
⊢ 2 * (choose (2 * n + 1) n * (2 * n + 1 - n)) = 2 * (choose (2 * n) n * (2 * n + 1))

tactic: rw [mul_assoc, mul_comm (2 * n + 1)]
state_before: n : ℕ
⊢ 2 * (choose (2 * n) n * (2 * n + 1)) = 2 * (2 * n + 1) * choose (2 * n) n
Theorem: intervalIntegral.intervalIntegral_eq_integral_uIoc
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: split_ifs with h
state_before: ι : Type ?u.10052960
𝕜 : Type ?u.10052963
E : Type u_1
F : Type ?u.10052969
A : Type ?u.10052972
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a✝ b✝ : ℝ
f✝ g : ℝ → E
μ✝ : MeasureTheory.Measure ℝ
f : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
⊢ (∫ (x : ℝ) in a..b, f x ∂μ) = (if a ≤ b then 1 else -1) • ∫ (x : ℝ) in Ι a b, f x ∂μ

tactic: simp only [integral_of_le h, uIoc_of_le h, one_smul]
state_before: case inl
ι : Type ?u.10052960
𝕜 : Type ?u.10052963
E : Type u_1
F : Type ?u.10052969
A : Type ?u.10052972
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a✝ b✝ : ℝ
f✝ g : ℝ → E
μ✝ : MeasureTheory.Measure ℝ
f : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
h : a ≤ b
⊢ (∫ (x : ℝ) in a..b, f x ∂μ) = 1 • ∫ (x : ℝ) in Ι a b, f x ∂μ

tactic: simp only [integral_of_ge (not_le.1 h).le, uIoc_of_lt (not_le.1 h), neg_one_smul]
state_before: case inr
ι : Type ?u.10052960
𝕜 : Type ?u.10052963
E : Type u_1
F : Type ?u.10052969
A : Type ?u.10052972
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a✝ b✝ : ℝ
f✝ g : ℝ → E
μ✝ : MeasureTheory.Measure ℝ
f : ℝ → E
a b : ℝ
μ : MeasureTheory.Measure ℝ
h : ¬a ≤ b
⊢ (∫ (x : ℝ) in a..b, f x ∂μ) = -1 • ∫ (x : ℝ) in Ι a b, f x ∂μ
Theorem: ContinuousLinearMap.IsPositive.adjoint_conj
File: Mathlib/Analysis/InnerProductSpace/Positive.lean

tactic: convert hT.conj_adjoint (S†)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : IsPositive T
S : F →L[𝕜] E
⊢ IsPositive (comp (↑adjoint S) (comp T S))

tactic: rw [adjoint_adjoint]
state_before: case h.e'_7.h.e'_24.h.e'_24
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁶ : IsROrC 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace 𝕜 E
inst✝² : InnerProductSpace 𝕜 F
inst✝¹ : CompleteSpace E
inst✝ : CompleteSpace F
T : E →L[𝕜] E
hT : IsPositive T
S : F →L[𝕜] E
⊢ S = ↑adjoint (↑adjoint S)
Theorem: FirstOrder.Language.card_functions_sum
File: Mathlib/ModelTheory/Basic.lean

tactic: simp [Language.sum]
state_before: L : Language
L' : Language
i : ℕ
⊢ (#Functions (Language.sum L L') i) = lift (#Functions L i) + lift (#Functions L' i)
Theorem: MvPolynomial.coe_eq_zero_iff
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: rw [← coe_zero, coe_inj]
state_before: σ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
φ ψ : MvPolynomial σ R
⊢ ↑φ = 0 ↔ φ = 0
Theorem: IsUpperSet.mul_right
File: Mathlib/Algebra/Order/UpperLower.lean

tactic: rw [mul_comm]
state_before: α : Type u_1
inst✝ : OrderedCommGroup α
s t : Set α
a : α
hs : IsUpperSet s
⊢ IsUpperSet (s * t)

tactic: exact hs.mul_left
state_before: α : Type u_1
inst✝ : OrderedCommGroup α
s t : Set α
a : α
hs : IsUpperSet s
⊢ IsUpperSet (t * s)
Theorem: Homeomorph.quotientMap
File: Mathlib/Topology/Homeomorph.lean

tactic: simp only [self_comp_symm, QuotientMap.id]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.58426
δ : Type ?u.58429
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
h : α ≃ₜ β
⊢ QuotientMap (↑h ∘ ↑(Homeomorph.symm h))
Theorem: inf_himp
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [inf_comm, ← le_himp_iff]
state_before: ι : Type ?u.28319
α : Type u_1
β : Type ?u.28325
inst✝ : GeneralizedHeytingAlgebra α
a✝ b✝ c d a b : α
⊢ a ⊓ (a ⇨ b) ≤ b
Theorem: prodXSubSmul.coeff
File: Mathlib/Algebra/Polynomial/GroupRingAction.lean

tactic: rw [← Polynomial.coeff_smul, prodXSubSmul.smul]
state_before: M : Type ?u.109284
inst✝⁴ : Monoid M
G : Type u_2
inst✝³ : Group G
inst✝² : Fintype G
R : Type u_1
inst✝¹ : CommRing R
inst✝ : MulSemiringAction G R
x : R
g : G
n : ℕ
⊢ g • Polynomial.coeff (prodXSubSmul G R x) n = Polynomial.coeff (prodXSubSmul G R x) n
Theorem: FiniteDimensional.finrank_self
File: Mathlib/LinearAlgebra/Finrank.lean

tactic: simp
state_before: K : Type u
V : Type v
inst✝⁵ : Ring K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
V₂ : Type v'
inst✝² : AddCommGroup V₂
inst✝¹ : Module K V₂
inst✝ : StrongRankCondition K
⊢ Module.rank K K = ↑1
Theorem: MonovaryOn.sum_smul_comp_perm_lt_sum_smul_iff
File: Mathlib/Algebra/Order/Rearrangement.lean

tactic: simp [← hfg.sum_smul_comp_perm_eq_sum_smul_iff hσ, lt_iff_le_and_ne,
  hfg.sum_smul_comp_perm_le_sum_smul hσ]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : LinearOrderedRing α
inst✝² : LinearOrderedAddCommGroup β
inst✝¹ : Module α β
inst✝ : OrderedSMul α β
s : Finset ι
σ : Perm ι
f : ι → α
g : ι → β
hfg : MonovaryOn f g ↑s
hσ : {x | ↑σ x ≠ x} ⊆ ↑s
⊢ ∑ i in s, f i • g (↑σ i) < ∑ i in s, f i • g i ↔ ¬MonovaryOn f (g ∘ ↑σ) ↑s
Theorem: Ordnode.dual_node3R
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: simp [node3L, node3R, dual_node', add_comm]
state_before: α : Type u_1
l : Ordnode α
x : α
m : Ordnode α
y : α
r : Ordnode α
⊢ dual (node3R l x m y r) = node3L (dual r) y (dual m) x (dual l)
Theorem: YoungDiagram.coe_bot
File: Mathlib/Combinatorics/Young/YoungDiagram.lean

tactic: refine' Set.eq_of_subset_of_subset _ _
state_before: ⊢ ↑⊥.cells = ∅

tactic: intros x h
state_before: case refine'_1

⊢ ↑⊥.cells ⊆ ∅

case refine'_2

⊢ ∅ ⊆ ↑⊥.cells

tactic: simp [mem_mk, Finset.coe_empty, Set.mem_empty_iff_false] at h
state_before: case refine'_1
x : ℕ × ℕ
h : x ∈ ↑⊥.cells
⊢ x ∈ ∅

case refine'_2

⊢ ∅ ⊆ ↑⊥.cells

tactic: simp only [cells_bot, Finset.coe_empty, Set.empty_subset]
state_before: case refine'_2

⊢ ∅ ⊆ ↑⊥.cells
Theorem: CategoryTheory.Limits.pullbackAssoc_inv_fst_snd
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: rw [Iso.inv_comp_eq, pullbackAssoc_hom_snd_fst]
state_before: C : Type u
inst✝⁷ : Category C
D : Type u₂
inst✝⁶ : Category D
W X Y Z X₁ X₂ X₃ Y₁ Y₂ : C
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₁
f₃ : X₂ ⟶ Y₂
f₄ : X₃ ⟶ Y₂
inst✝⁵ : HasPullback f₁ f₂
inst✝⁴ : HasPullback f₃ f₄
inst✝³ : HasPullback (pullback.snd ≫ sorryAx (sorryAx C true ⟶ Y₂) true) f₄
inst✝² : HasPullback f₁ (pullback.fst ≫ f₂)
inst✝¹ : HasPullback (pullback.snd ≫ f₃) f₄
inst✝ : HasPullback f₁ (pullback.fst ≫ f₂)
⊢ (pullbackAssoc f₁ f₂ f₃ f₄).inv ≫ pullback.fst ≫ pullback.snd = pullback.snd ≫ pullback.fst
Theorem: one_le_div_iff
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rcases lt_trichotomy b 0 with (hb | rfl | hb)
state_before: ι : Type ?u.164600
α : Type u_1
β : Type ?u.164606
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
⊢ 1 ≤ a / b ↔ 0 < b ∧ b ≤ a ∨ b < 0 ∧ a ≤ b

tactic: simp [hb, hb.not_lt, one_le_div_of_neg]
state_before: case inl
ι : Type ?u.164600
α : Type u_1
β : Type ?u.164606
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hb : b < 0
⊢ 1 ≤ a / b ↔ 0 < b ∧ b ≤ a ∨ b < 0 ∧ a ≤ b

tactic: simp [lt_irrefl, zero_lt_one.not_le, zero_lt_one]
state_before: case inr.inl
ι : Type ?u.164600
α : Type u_1
β : Type ?u.164606
inst✝ : LinearOrderedField α
a c d : α
n : ℤ
⊢ 1 ≤ a / 0 ↔ 0 < 0 ∧ 0 ≤ a ∨ 0 < 0 ∧ a ≤ 0

tactic: simp [hb, hb.not_lt, one_le_div]
state_before: case inr.inr
ι : Type ?u.164600
α : Type u_1
β : Type ?u.164606
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
hb : 0 < b
⊢ 1 ≤ a / b ↔ 0 < b ∧ b ≤ a ∨ b < 0 ∧ a ≤ b
Theorem: IsGLB.biUnion_Ici_eq_Ioi
File: Mathlib/Data/Set/Intervals/Disjoint.lean

tactic: refine' (iUnion₂_subset fun x hx => _).antisymm fun x hx => _
state_before: ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
s : Set α
a : α
f : ι → α
a_glb : IsGLB s a
a_not_mem : ¬a ∈ s
⊢ (⋃ (x : α) (_ : x ∈ s), Ici x) = Ioi a

tactic: exact Ici_subset_Ioi.mpr (lt_of_le_of_ne (a_glb.1 hx) fun h => (h ▸ a_not_mem) hx)
state_before: case refine'_1
ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
s : Set α
a : α
f : ι → α
a_glb : IsGLB s a
a_not_mem : ¬a ∈ s
x : α
hx : x ∈ s
⊢ Ici x ⊆ Ioi a

tactic: rcases a_glb.exists_between hx with ⟨y, hys, _, hyx⟩
state_before: case refine'_2
ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
s : Set α
a : α
f : ι → α
a_glb : IsGLB s a
a_not_mem : ¬a ∈ s
x : α
hx : x ∈ Ioi a
⊢ x ∈ ⋃ (i : α) (_ : i ∈ s), Ici i

tactic: apply mem_iUnion₂.mpr
state_before: case refine'_2.intro.intro.intro
ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
s : Set α
a : α
f : ι → α
a_glb : IsGLB s a
a_not_mem : ¬a ∈ s
x : α
hx : x ∈ Ioi a
y : α
hys : y ∈ s
left✝ : a ≤ y
hyx : y < x
⊢ x ∈ ⋃ (i : α) (_ : i ∈ s), Ici i

tactic: refine' ⟨y, hys, hyx.le⟩
state_before: case refine'_2.intro.intro.intro
ι : Sort u
α : Type v
β : Type w
inst✝ : LinearOrder α
s : Set α
a : α
f : ι → α
a_glb : IsGLB s a
a_not_mem : ¬a ∈ s
x : α
hx : x ∈ Ioi a
y : α
hys : y ∈ s
left✝ : a ≤ y
hyx : y < x
⊢ ∃ i j, x ∈ Ici i
Theorem: List.mem_of_find?_eq_some
File: Std/Data/List/Lemmas.lean

tactic: by_cases h : p b <;> simp [find?, h] at H
state_before: α✝ : Type u_1
p : α✝ → Bool
a b : α✝
l : List α✝
H : find? p (b :: l) = some a
⊢ a ∈ b :: l

tactic: exact H ▸ .head _
state_before: case pos
α✝ : Type u_1
p : α✝ → Bool
a b : α✝
l : List α✝
h : p b = true
H : b = a
⊢ a ∈ b :: l

tactic: exact .tail _ (mem_of_find?_eq_some H)
state_before: case neg
α✝ : Type u_1
p : α✝ → Bool
a b : α✝
l : List α✝
h : ¬p b = true
H : find? p l = some a
⊢ a ∈ b :: l
Theorem: Ordinal.familyOfBFamily'_enum
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rwa [ho]
state_before: α : Type ?u.271765
β : Type ?u.271768
γ : Type ?u.271771
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
r : ι → ι → Prop
inst✝ : IsWellOrder ι r
o : Ordinal
ho : type r = o
f : (a : Ordinal) → a < o → α
i : Ordinal
hi : i < o
⊢ i < type r

tactic: simp only [familyOfBFamily', typein_enum]
state_before: α : Type u_1
β : Type ?u.271768
γ : Type ?u.271771
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
r : ι → ι → Prop
inst✝ : IsWellOrder ι r
o : Ordinal
ho : type r = o
f : (a : Ordinal) → a < o → α
i : Ordinal
hi : i < o
⊢ familyOfBFamily' r ho f (enum r i (_ : i < type r)) = f i hi
Theorem: List.chain_iff_forall₂
File: Mathlib/Data/List/Chain.lean

tactic: simp
state_before: α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a✝ b a : α
⊢ Chain R a [] ↔ [] = [] ∨ Forall₂ R (a :: dropLast []) []

tactic: by_cases h : l = [] <;>
simp [@chain_iff_forall₂ b l, *]
state_before: α : Type u
β : Type v
R r : α → α → Prop
l✝ l₁ l₂ : List α
a✝ b✝ a b : α
l : List α
⊢ Chain R a (b :: l) ↔ b :: l = [] ∨ Forall₂ R (a :: dropLast (b :: l)) (b :: l)
Theorem: Finsupp.mem_support_onFinset
File: Mathlib/Data/Finsupp/Defs.lean

tactic: rw [Finsupp.mem_support_iff, Finsupp.onFinset_apply]
state_before: α : Type u_1
β : Type ?u.175978
γ : Type ?u.175981
ι : Type ?u.175984
M : Type u_2
M' : Type ?u.175990
N : Type ?u.175993
P : Type ?u.175996
G : Type ?u.175999
H : Type ?u.176002
R : Type ?u.176005
S : Type ?u.176008
inst✝ : Zero M
s : Finset α
f : α → M
hf : ∀ (a : α), f a ≠ 0 → a ∈ s
a : α
⊢ a ∈ (onFinset s f hf).support ↔ f a ≠ 0
Theorem: geom_sum₂_self
File: Mathlib/Algebra/GeomSum.lean

tactic: simp_rw [← pow_add]
state_before: α✝ : Type u
α : Type u_1
inst✝ : CommRing α
x : α
n : ℕ
⊢ ∑ i in range n, x ^ i * x ^ (n - 1 - i) = ∑ i in range n, x ^ (i + (n - 1 - i))

tactic: rw [Finset.card_range, nsmul_eq_mul]
state_before: α✝ : Type u
α : Type u_1
inst✝ : CommRing α
x : α
n : ℕ
⊢ card (range n) • x ^ (n - 1) = ↑n * x ^ (n - 1)
Theorem: isCoatomic_dual_iff_isAtomic
File: Mathlib/Order/Atoms.lean

tactic: apply h.eq_top_or_exists_le_coatom
state_before: α : Type u_1
β : Type ?u.11708
inst✝¹ : PartialOrder α
inst✝ : OrderBot α
h : IsCoatomic αᵒᵈ
b : α
⊢ b = ⊥ ∨ ∃ a, IsAtom a ∧ a ≤ b

tactic: apply h.eq_bot_or_exists_atom_le
state_before: α : Type u_1
β : Type ?u.11708
inst✝¹ : PartialOrder α
inst✝ : OrderBot α
h : IsAtomic α
b : αᵒᵈ
⊢ b = ⊤ ∨ ∃ a, IsCoatom a ∧ b ≤ a
Theorem: false_of_nontrivial_of_product_domain
File: Mathlib/Algebra/Ring/Prod.lean

tactic: have :=
  NoZeroDivisors.eq_zero_or_eq_zero_of_mul_eq_zero (show ((0 : R), (1 : S)) * (1, 0) = 0 by simp)
state_before: α : Type ?u.54070
β : Type ?u.54073
R✝ : Type ?u.54076
R' : Type ?u.54079
S✝ : Type ?u.54082
S' : Type ?u.54085
T : Type ?u.54088
T' : Type ?u.54091
R : Type u_1
S : Type u_2
inst✝⁴ : Ring R
inst✝³ : Ring S
inst✝² : IsDomain (R × S)
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
⊢ False

tactic: rw [Prod.mk_eq_zero, Prod.mk_eq_zero] at this
state_before: α : Type ?u.54070
β : Type ?u.54073
R✝ : Type ?u.54076
R' : Type ?u.54079
S✝ : Type ?u.54082
S' : Type ?u.54085
T : Type ?u.54088
T' : Type ?u.54091
R : Type u_1
S : Type u_2
inst✝⁴ : Ring R
inst✝³ : Ring S
inst✝² : IsDomain (R × S)
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
this : (0, 1) = 0 ∨ (1, 0) = 0
⊢ False

tactic: rcases this with (⟨_, h⟩ | ⟨h, _⟩)
state_before: α : Type ?u.54070
β : Type ?u.54073
R✝ : Type ?u.54076
R' : Type ?u.54079
S✝ : Type ?u.54082
S' : Type ?u.54085
T : Type ?u.54088
T' : Type ?u.54091
R : Type u_1
S : Type u_2
inst✝⁴ : Ring R
inst✝³ : Ring S
inst✝² : IsDomain (R × S)
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
this : 0 = 0 ∧ 1 = 0 ∨ 1 = 0 ∧ 0 = 0
⊢ False

tactic: simp
state_before: α : Type ?u.54070
β : Type ?u.54073
R✝ : Type ?u.54076
R' : Type ?u.54079
S✝ : Type ?u.54082
S' : Type ?u.54085
T : Type ?u.54088
T' : Type ?u.54091
R : Type u_1
S : Type u_2
inst✝⁴ : Ring R
inst✝³ : Ring S
inst✝² : IsDomain (R × S)
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
⊢ (0, 1) * (1, 0) = 0

tactic: exact zero_ne_one h.symm
state_before: case inl.intro
α : Type ?u.54070
β : Type ?u.54073
R✝ : Type ?u.54076
R' : Type ?u.54079
S✝ : Type ?u.54082
S' : Type ?u.54085
T : Type ?u.54088
T' : Type ?u.54091
R : Type u_1
S : Type u_2
inst✝⁴ : Ring R
inst✝³ : Ring S
inst✝² : IsDomain (R × S)
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
left✝ : 0 = 0
h : 1 = 0
⊢ False

tactic: exact zero_ne_one h.symm
state_before: case inr.intro
α : Type ?u.54070
β : Type ?u.54073
R✝ : Type ?u.54076
R' : Type ?u.54079
S✝ : Type ?u.54082
S' : Type ?u.54085
T : Type ?u.54088
T' : Type ?u.54091
R : Type u_1
S : Type u_2
inst✝⁴ : Ring R
inst✝³ : Ring S
inst✝² : IsDomain (R × S)
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
h : 1 = 0
right✝ : 0 = 0
⊢ False
Theorem: Equiv.semiconj₂_conj
File: Mathlib/Logic/Equiv/Basic.lean

tactic: simp [arrowCongr]
state_before: α₁ : Type u_1
β₁ : Type u_2
e : α₁ ≃ β₁
f : α₁ → α₁ → α₁
x y : α₁
⊢ ↑e (f x y) = ↑(arrowCongr e (conj e)) f (↑e x) (↑e y)
Theorem: RatFunc.laurent_X
File: Mathlib/FieldTheory/Laurent.lean

tactic: rw [← algebraMap_X, laurent_algebraMap, taylor_X, _root_.map_add, algebraMap_C]
state_before: R : Type u
inst✝ : CommRing R
hdomain : IsDomain R
r s : R
p q : R[X]
f : RatFunc R
⊢ ↑(laurent r) X = X + ↑C r
Theorem: symmDiff_symmDiff_right'
File: Mathlib/Order/SymmDiff.lean

tactic: congr 1
state_before: ι : Type ?u.91463
α : Type u_1
β : Type ?u.91469
π : ι → Type ?u.91474
inst✝ : BooleanAlgebra α
a b c d : α
⊢ a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ b ⊓ cᶜ ⊓ aᶜ ⊔ c ⊓ bᶜ ⊓ aᶜ = a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ aᶜ ⊓ b ⊓ cᶜ ⊔ aᶜ ⊓ bᶜ ⊓ c

tactic: congr 1
state_before: case e_a
ι : Type ?u.91463
α : Type u_1
β : Type ?u.91469
π : ι → Type ?u.91474
inst✝ : BooleanAlgebra α
a b c d : α
⊢ a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ b ⊓ cᶜ ⊓ aᶜ = a ⊓ b ⊓ c ⊔ a ⊓ bᶜ ⊓ cᶜ ⊔ aᶜ ⊓ b ⊓ cᶜ

tactic: rw [inf_comm, inf_assoc]
state_before: case e_a.e_a
ι : Type ?u.91463
α : Type u_1
β : Type ?u.91469
π : ι → Type ?u.91474
inst✝ : BooleanAlgebra α
a b c d : α
⊢ b ⊓ cᶜ ⊓ aᶜ = aᶜ ⊓ b ⊓ cᶜ

tactic: apply inf_left_right_swap
state_before: case e_a
ι : Type ?u.91463
α : Type u_1
β : Type ?u.91469
π : ι → Type ?u.91474
inst✝ : BooleanAlgebra α
a b c d : α
⊢ c ⊓ bᶜ ⊓ aᶜ = aᶜ ⊓ bᶜ ⊓ c
Theorem: EReal.mem_nhds_bot_iff
File: Mathlib/Topology/Instances/EReal.lean

tactic: simp only [true_and]
state_before: α : Type ?u.16219
inst✝ : TopologicalSpace α
s : Set EReal
⊢ (∃ i, True ∧ Iio ↑i ⊆ s) ↔ ∃ y, Iio ↑y ⊆ s
Theorem: NFA.toεNFA_correct
File: Mathlib/Computability/EpsilonNFA.lean

tactic: rw [εNFA.accepts, εNFA.eval, toεNFA_evalFrom_match]
state_before: α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S : Set σ
x : List α
s : σ
a : α
M : NFA α σ
⊢ εNFA.accepts (toεNFA M) = accepts M

tactic: rfl
state_before: α : Type u
σ σ' : Type v
M✝ : εNFA α σ
S : Set σ
x : List α
s : σ
a : α
M : NFA α σ
⊢ {x | ∃ S, S ∈ (toεNFA M).accept ∧ S ∈ evalFrom M (toεNFA M).start x} = accepts M
Theorem: isGδ_singleton
File: Mathlib/Topology/GDelta.lean

tactic: rcases (nhds_basis_opens a).exists_antitone_subbasis with ⟨U, hU, h_basis⟩
state_before: α : Type u_1
β : Type ?u.12419
γ : Type ?u.12422
ι : Type ?u.12425
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : FirstCountableTopology α
a : α
⊢ IsGδ {a}

tactic: rw [← biInter_basis_nhds h_basis.toHasBasis]
state_before: case intro.intro
α : Type u_1
β : Type ?u.12419
γ : Type ?u.12422
ι : Type ?u.12425
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : FirstCountableTopology α
a : α
U : ℕ → Set α
hU : ∀ (i : ℕ), a ∈ U i ∧ IsOpen (U i)
h_basis : HasAntitoneBasis (𝓝 a) fun i => U i
⊢ IsGδ {a}

tactic: exact isGδ_biInter (to_countable _) fun n _ => (hU n).2.isGδ
state_before: case intro.intro
α : Type u_1
β : Type ?u.12419
γ : Type ?u.12422
ι : Type ?u.12425
inst✝² : TopologicalSpace α
inst✝¹ : T1Space α
inst✝ : FirstCountableTopology α
a : α
U : ℕ → Set α
hU : ∀ (i : ℕ), a ∈ U i ∧ IsOpen (U i)
h_basis : HasAntitoneBasis (𝓝 a) fun i => U i
⊢ IsGδ (⋂ (i : ℕ) (_ : True), U i)
Theorem: Set.image_const_add_Ico
File: Mathlib/Data/Set/Intervals/Monoid.lean

tactic: simp only [add_comm a, image_add_const_Ico]
state_before: M : Type u_1
inst✝¹ : OrderedCancelAddCommMonoid M
inst✝ : ExistsAddOfLE M
a b c d : M
⊢ (fun x => a + x) '' Ico b c = Ico (a + b) (a + c)