tasksource/leandojo huggingface dataset:
Theorem: Finset.prod_eq_zero_iff
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: induction' s using Finset.induction_on with a s ha ih
state_before: ι : Type ?u.872555
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝² : CommMonoidWithZero β
inst✝¹ : Nontrivial β
inst✝ : NoZeroDivisors β
⊢ ∏ x in s, f x = 0 ↔ ∃ a, a ∈ s ∧ f a = 0

tactic: exact ⟨Not.elim one_ne_zero, fun ⟨_, H, _⟩ => by simp at H⟩
state_before: case empty
ι : Type ?u.872555
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝² : CommMonoidWithZero β
inst✝¹ : Nontrivial β
inst✝ : NoZeroDivisors β
⊢ ∏ x in ∅, f x = 0 ↔ ∃ a, a ∈ ∅ ∧ f a = 0

tactic: simp at H
state_before: ι : Type ?u.872555
β : Type u
α : Type v
γ : Type w
s s₁ s₂ : Finset α
a : α
f g : α → β
inst✝² : CommMonoidWithZero β
inst✝¹ : Nontrivial β
inst✝ : NoZeroDivisors β
x✝ : ∃ a, a ∈ ∅ ∧ f a = 0
w✝ : α
H : w✝ ∈ ∅
right✝ : f w✝ = 0
⊢ ∏ x in ∅, f x = 0

tactic: rw [prod_insert ha, mul_eq_zero, exists_mem_insert, ih, ← bex_def]
state_before: case insert
ι : Type ?u.872555
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝ : α
f g : α → β
inst✝² : CommMonoidWithZero β
inst✝¹ : Nontrivial β
inst✝ : NoZeroDivisors β
a : α
s : Finset α
ha : ¬a ∈ s
ih : ∏ x in s, f x = 0 ↔ ∃ a, a ∈ s ∧ f a = 0
⊢ ∏ x in insert a s, f x = 0 ↔ ∃ a_1, a_1 ∈ insert a s ∧ f a_1 = 0
Theorem: Finset.centerMass_insert
File: Mathlib/Analysis/Convex/Combination.lean

tactic: simp only [centerMass, sum_insert ha, smul_add, (mul_smul _ _ _).symm, ← div_eq_inv_mul]
state_before: R : Type u_2
E : Type u_3
F : Type ?u.18158
ι : Type u_1
ι' : Type ?u.18164
α : Type ?u.18167
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
ha : ¬i ∈ t
hw : ∑ j in t, w j ≠ 0
⊢ centerMass (insert i t) w z =
    (w i / (w i + ∑ j in t, w j)) • z i + ((∑ j in t, w j) / (w i + ∑ j in t, w j)) • centerMass t w z

tactic: congr 2
state_before: R : Type u_2
E : Type u_3
F : Type ?u.18158
ι : Type u_1
ι' : Type ?u.18164
α : Type ?u.18167
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
ha : ¬i ∈ t
hw : ∑ j in t, w j ≠ 0
⊢ (w i / (w i + ∑ i in t, w i)) • z i + (w i + ∑ i in t, w i)⁻¹ • ∑ i in t, w i • z i =
    (w i / (w i + ∑ i in t, w i)) • z i +
      ((∑ i in t, w i) / (w i + ∑ i in t, w i) * (∑ i in t, w i)⁻¹) • ∑ i in t, w i • z i

tactic: rw [div_mul_eq_mul_div, mul_inv_cancel hw, one_div]
state_before: case e_a.e_a
R : Type u_2
E : Type u_3
F : Type ?u.18158
ι : Type u_1
ι' : Type ?u.18164
α : Type ?u.18167
inst✝⁷ : LinearOrderedField R
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s : Set E
i j : ι
c : R
t : Finset ι
w : ι → R
z : ι → E
ha : ¬i ∈ t
hw : ∑ j in t, w j ≠ 0
⊢ (w i + ∑ i in t, w i)⁻¹ = (∑ i in t, w i) / (w i + ∑ i in t, w i) * (∑ i in t, w i)⁻¹
Theorem: Function.Periodic.nsmul
File: Mathlib/Algebra/Periodic.lean

tactic: induction n <;> simp_all [Nat.succ_eq_add_one, add_nsmul, ← add_assoc, zero_nsmul]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.90191
f g : α → β
c c₁ c₂ x : α
inst✝ : AddMonoid α
h : Periodic f c
n : ℕ
⊢ Periodic f (n • c)
Theorem: UInt32.sizeOf
File: src/lean/Init/SizeOfLemmas.lean

tactic: cases a
state_before: a : UInt32
⊢ SizeOf.sizeOf a = toNat a + 2

tactic: simp_arith [UInt32.toNat]
state_before: case mk
val✝ : Fin size
⊢ SizeOf.sizeOf { val := val✝ } = toNat { val := val✝ } + 2
Theorem: one_geom_sum
File: Mathlib/Algebra/GeomSum.lean

tactic: simp
state_before: α : Type u
inst✝ : Semiring α
n : ℕ
⊢ ∑ i in range n, 1 ^ i = ↑n
Theorem: ContinuousLinearMap.eq_adjoint_iff
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

tactic: refine' ⟨fun h x y => by rw [h, adjoint_inner_left], fun h => _⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.798041
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
B : F →L[𝕜] E
⊢ A = ↑adjoint B ↔ ∀ (x : E) (y : (fun x => F) x), inner (↑A x) y = inner x (↑B y)

tactic: ext x
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.798041
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
B : F →L[𝕜] E
h : ∀ (x : E) (y : (fun x => F) x), inner (↑A x) y = inner x (↑B y)
⊢ A = ↑adjoint B

tactic: exact ext_inner_right 𝕜 fun y => by simp only [adjoint_inner_left, h x y]
state_before: case h
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.798041
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
B : F →L[𝕜] E
h : ∀ (x : E) (y : (fun x => F) x), inner (↑A x) y = inner x (↑B y)
x : E
⊢ ↑A x = ↑(↑adjoint B) x

tactic: rw [h, adjoint_inner_left]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.798041
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
B : F →L[𝕜] E
h : A = ↑adjoint B
x : E
y : (fun x => F) x
⊢ inner (↑A x) y = inner x (↑B y)

tactic: simp only [adjoint_inner_left, h x y]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.798041
inst✝⁹ : IsROrC 𝕜
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedAddCommGroup G
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : InnerProductSpace 𝕜 F
inst✝³ : InnerProductSpace 𝕜 G
inst✝² : CompleteSpace E
inst✝¹ : CompleteSpace G
inst✝ : CompleteSpace F
A : E →L[𝕜] F
B : F →L[𝕜] E
h : ∀ (x : E) (y : (fun x => F) x), inner (↑A x) y = inner x (↑B y)
x : E
y : (fun x => F) x
⊢ inner (↑A x) y = inner (↑(↑adjoint B) x) y
Theorem: Nat.doubleFactorial_eq_prod_even
File: Mathlib/Data/Nat/Factorial/DoubleFactorial.lean

tactic: rw [Finset.prod_range_succ, ← doubleFactorial_eq_prod_even _, mul_comm (2 * n)‼,
  (by ring : 2 * (n + 1) = 2 * n + 2)]
state_before: n : ℕ
⊢ (2 * (n + 1))‼ = ∏ i in Finset.range (n + 1), 2 * (i + 1)

tactic: rfl
state_before: n : ℕ
⊢ (2 * n + 2)‼ = (2 * n + 2) * (2 * n)‼

tactic: ring
state_before: n : ℕ
⊢ 2 * (n + 1) = 2 * n + 2
Theorem: Real.lt_sin_mul
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Complex.lean

tactic: simpa [mul_comm x] using
  strictConcaveOn_sin_Icc.2 ⟨le_rfl, pi_pos.le⟩ ⟨pi_div_two_pos.le, half_le_self pi_pos.le⟩
    pi_div_two_pos.ne (sub_pos.2 hx') hx
state_before: x : ℝ
hx : 0 < x
hx' : x < 1
⊢ x < sin (π / 2 * x)
Theorem: padicNormE.norm_p_lt_one
File: Mathlib/NumberTheory/Padics/PadicNumbers.lean

tactic: rw [norm_p]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
⊢ ‖↑p‖ < 1

tactic: apply inv_lt_one
state_before: p : ℕ
hp : Fact (Nat.Prime p)
⊢ (↑p)⁻¹ < 1

tactic: exact_mod_cast hp.1.one_lt
state_before: case ha
p : ℕ
hp : Fact (Nat.Prime p)
⊢ 1 < ↑p
Theorem: Ordinal.principal_add_iff_add_lt_ne_self
File: Mathlib/SetTheory/Ordinal/Principal.lean

tactic: by_contra' ha
state_before: a : Ordinal
H : ∀ ⦃b c : Ordinal⦄, b < a → c < a → b + c ≠ a
⊢ Principal (fun x x_1 => x + x_1) a

tactic: rcases exists_lt_add_of_not_principal_add ha with ⟨b, c, hb, hc, rfl⟩
state_before: a : Ordinal
H : ∀ ⦃b c : Ordinal⦄, b < a → c < a → b + c ≠ a
ha : ¬Principal (fun x x_1 => x + x_1) a
⊢ False

tactic: exact (H hb hc).irrefl
state_before: case intro.intro.intro.intro
b c : Ordinal
H : ∀ ⦃b_1 c_1 : Ordinal⦄, b_1 < b + c → c_1 < b + c → b_1 + c_1 ≠ b + c
ha : ¬Principal (fun x x_1 => x + x_1) (b + c)
hb : b < b + c
hc : c < b + c
⊢ False
Theorem: Stream'.WSeq.tail_ofSeq
File: Mathlib/Data/Seq/WSeq.lean

tactic: simp [tail]
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
⊢ tail ↑s = ↑(Seq.tail s)

tactic: induction' s using Seq.recOn with x s <;> simp [ofSeq]
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
⊢ Option.rec nil Prod.snd (Option.map (fun a => (a, ↑(Seq.tail s))) (Seq.head s)) = ↑(Seq.tail s)

tactic: rfl
state_before: case h1
α : Type u
β : Type v
γ : Type w
⊢ nil = some <$> Seq.nil
Theorem: CategoryTheory.Limits.biprod.desc_eq
File: Mathlib/CategoryTheory/Preadditive/Biproducts.lean

tactic: ext <;> simp [add_comp]
state_before: C : Type u
inst✝³ : Category C
inst✝² : Preadditive C
J : Type
inst✝¹ : Fintype J
X Y : C
inst✝ : HasBinaryBiproduct X Y
T : C
f : X ⟶ T
g : Y ⟶ T
⊢ desc f g = fst ≫ f + snd ≫ g
Theorem: List.nodup_cons
File: Mathlib/Data/List/Nodup.lean

tactic: simp only [Nodup, pairwise_cons, forall_mem_ne]
state_before: α : Type u
β : Type v
l✝ l₁ l₂ : List α
r : α → α → Prop
a✝ b a : α
l : List α
⊢ Nodup (a :: l) ↔ ¬a ∈ l ∧ Nodup l
Theorem: MeasureTheory.ae_eq_restrict_iUnion_iff
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: simp_rw [EventuallyEq, ae_restrict_iUnion_eq, eventually_iSup]
state_before: α : Type u_2
β : Type ?u.563218
γ : Type ?u.563221
δ : Type u_3
ι : Type u_1
R : Type ?u.563230
R' : Type ?u.563233
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
inst✝ : Countable ι
s : ι → Set α
f g : α → δ
⊢ f =ᶠ[ae (Measure.restrict μ (⋃ (i : ι), s i))] g ↔ ∀ (i : ι), f =ᶠ[ae (Measure.restrict μ (s i))] g
Theorem: Ordinal.div_one
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simpa only [one_mul] using mul_div_cancel a Ordinal.one_ne_zero
state_before: α : Type ?u.244913
β : Type ?u.244916
γ : Type ?u.244919
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a : Ordinal
⊢ a / 1 = a
Theorem: MeasurableEquiv.measurableSet_preimage
File: Mathlib/MeasureTheory/MeasurableSpace.lean

tactic: simpa only [symm_preimage_preimage] using e.symm.measurable h
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.782118
δ : Type ?u.782121
δ' : Type ?u.782124
ι : Sort uι
s✝ t u : Set α
inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
inst✝ : MeasurableSpace δ
e : α ≃ᵐ β
s : Set β
h : MeasurableSet (↑e ⁻¹' s)
⊢ MeasurableSet s
Theorem: Valuation.map_eq_of_sub_lt
File: Mathlib/RingTheory/Valuation/Basic.lean

tactic: have := Valuation.map_add_of_distinct_val v (ne_of_gt h).symm
state_before: K : Type ?u.2296489
F : Type ?u.2296492
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.2296504
Γ''₀ : Type ?u.2296507
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x y z : R
h : ↑v (y - x) < ↑v x
⊢ ↑v y = ↑v x

tactic: rw [max_eq_right (le_of_lt h)] at this
state_before: K : Type ?u.2296489
F : Type ?u.2296492
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.2296504
Γ''₀ : Type ?u.2296507
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x y z : R
h : ↑v (y - x) < ↑v x
this : ↑v (y - x + x) = max (↑v (y - x)) (↑v x)
⊢ ↑v y = ↑v x

tactic: simpa using this
state_before: K : Type ?u.2296489
F : Type ?u.2296492
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.2296504
Γ''₀ : Type ?u.2296507
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x y z : R
h : ↑v (y - x) < ↑v x
this : ↑v (y - x + x) = ↑v x
⊢ ↑v y = ↑v x
Theorem: Polynomial.mirror_neg
File: Mathlib/Data/Polynomial/Mirror.lean

tactic: rw [mirror, mirror, reverse_neg, natTrailingDegree_neg, neg_mul_eq_neg_mul]
state_before: R : Type u_1
inst✝ : Ring R
p q : R[X]
⊢ mirror (-p) = -mirror p
Theorem: Multiset.count_ne_zero
File: Mathlib/Data/Multiset/Basic.lean

tactic: simp [Ne.def, count_eq_zero]
state_before: α : Type u_1
β : Type ?u.359007
γ : Type ?u.359010
inst✝ : DecidableEq α
a : α
s : Multiset α
⊢ count a s ≠ 0 ↔ a ∈ s
Theorem: Ordnode.all_iff_forall
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rintro _ ⟨⟩
state_before: α : Type u_1
P : α → Prop
⊢ ∀ (x : α), Emem x nil → P x

tactic: simp [All, Emem, all_iff_forall, Any, or_imp, forall_and]
state_before: α : Type u_1
P : α → Prop
size✝ : ℕ
l : Ordnode α
x : α
r : Ordnode α
⊢ All P (node size✝ l x r) ↔ ∀ (x_1 : α), Emem x_1 (node size✝ l x r) → P x_1
Theorem: MeasureTheory.OuterMeasure.top_apply
File: Mathlib/MeasureTheory/Measure/OuterMeasure.lean

tactic: simp [smul_dirac_apply, as]
state_before: α : Type u_1
β : Type ?u.124154
R : Type ?u.124157
R' : Type ?u.124160
ms : Set (OuterMeasure α)
m : OuterMeasure α
s : Set α
h : Set.Nonempty s
a : α
as : a ∈ s
⊢ ⊤ ≤ ↑(⊤ • dirac a) s
Theorem: reflection_map_apply
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: simp [two_smul, reflection_apply, orthogonalProjection_map_apply f K x]
state_before: 𝕜 : Type u_3
E✝ : Type ?u.715379
F : Type ?u.715382
inst✝¹⁰ : IsROrC 𝕜
inst✝⁹ : NormedAddCommGroup E✝
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : InnerProductSpace 𝕜 E✝
inst✝⁶ : InnerProductSpace ℝ F
K✝ : Submodule 𝕜 E✝
inst✝⁵ : CompleteSpace { x // x ∈ K✝ }
E : Type u_1
E' : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup E'
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace 𝕜 E'
f : E ≃ₗᵢ[𝕜] E'
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
x : E'
⊢ ↑(reflection (Submodule.map (↑f.toLinearEquiv) K)) x = ↑f (↑(reflection K) (↑(LinearIsometryEquiv.symm f) x))
Theorem: Dfinsupp.erase_def
File: Mathlib/Data/Dfinsupp/Basic.lean

tactic: ext j
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
inst✝ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
i : ι
f : Π₀ (i : ι), β i
⊢ erase i f = mk (Finset.erase (support f) i) fun j => ↑f ↑j

tactic: by_cases h1 : j = i <;> by_cases h2 : f j ≠ 0 <;> simp at h2 <;> simp [h1, h2]
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
inst✝ : (i : ι) → (x : β i) → Decidable (x ≠ 0)
i : ι
f : Π₀ (i : ι), β i
j : ι
⊢ ↑(erase i f) j = ↑(mk (Finset.erase (support f) i) fun j => ↑f ↑j) j
Theorem: LocalEquiv.image_source_inter_eq'
File: Mathlib/Logic/Equiv/LocalEquiv.lean

tactic: rw [inter_comm, e.leftInvOn.image_inter', image_source_eq_target, inter_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.31956
δ : Type ?u.31959
e : LocalEquiv α β
e' : LocalEquiv β γ
s : Set α
⊢ ↑e '' (e.source ∩ s) = e.target ∩ ↑(LocalEquiv.symm e) ⁻¹' s
Theorem: Urysohns.CU.approx_le_one
File: Mathlib/Topology/UrysohnsLemma.lean

tactic: induction' n with n ihn generalizing c
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
c : CU X
n : ℕ
x : X
⊢ approx n c x ≤ 1

tactic: exact indicator_apply_le' (fun _ => le_rfl) fun _ => zero_le_one
state_before: case zero
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
c✝ : CU X
x : X
c : CU X
⊢ approx Nat.zero c x ≤ 1

tactic: simp only [approx, midpoint_eq_smul_add, invOf_eq_inv, smul_eq_mul, ← div_eq_inv_mul]
state_before: case succ
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
c✝ : CU X
x : X
n : ℕ
ihn : ∀ (c : CU X), approx n c x ≤ 1
c : CU X
⊢ approx (Nat.succ n) c x ≤ 1

tactic: have := add_le_add (ihn (left c)) (ihn (right c))
state_before: case succ
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
c✝ : CU X
x : X
n : ℕ
ihn : ∀ (c : CU X), approx n c x ≤ 1
c : CU X
⊢ (approx n (left c) x + approx n (right c) x) / 2 ≤ 1

tactic: norm_num at this
state_before: case succ
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
c✝ : CU X
x : X
n : ℕ
ihn : ∀ (c : CU X), approx n c x ≤ 1
c : CU X
this : approx n (left c) x + approx n (right c) x ≤ 1 + 1
⊢ (approx n (left c) x + approx n (right c) x) / 2 ≤ 1

tactic: exact Iff.mpr (div_le_one zero_lt_two) this
state_before: case succ
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : NormalSpace X
c✝ : CU X
x : X
n : ℕ
ihn : ∀ (c : CU X), approx n c x ≤ 1
c : CU X
this : approx n (left c) x + approx n (right c) x ≤ 2
⊢ (approx n (left c) x + approx n (right c) x) / 2 ≤ 1
Theorem: Complex.log_one
File: Mathlib/Analysis/SpecialFunctions/Complex/Log.lean

tactic: simp [log]
state_before: ⊢ log 1 = 0
Theorem: Dfinsupp.sigmaCurry_zero
File: Mathlib/Data/Dfinsupp/Basic.lean

tactic: ext (i j)
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
κ : Type ?u.604100
α : ι → Type u_1
δ : (i : ι) → α i → Type v
inst✝ : (i : ι) → (j : α i) → Zero (δ i j)
⊢ sigmaCurry 0 = 0

tactic: rw [sigmaCurry_apply]
state_before: case h.h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
κ : Type ?u.604100
α : ι → Type u_1
δ : (i : ι) → α i → Type v
inst✝ : (i : ι) → (j : α i) → Zero (δ i j)
i : ι
j : α i
⊢ ↑(↑(sigmaCurry 0) i) j = ↑(↑0 i) j

tactic: rfl
state_before: case h.h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
dec : DecidableEq ι
κ : Type ?u.604100
α : ι → Type u_1
δ : (i : ι) → α i → Type v
inst✝ : (i : ι) → (j : α i) → Zero (δ i j)
i : ι
j : α i
⊢ ↑0 { fst := i, snd := j } = ↑(↑0 i) j
Theorem: List.formPerm_apply_head
File: Mathlib/GroupTheory/Perm/List.lean

tactic: simp [formPerm_apply_of_not_mem _ _ h.not_mem]
state_before: α : Type u_1
β : Type ?u.668395
inst✝ : DecidableEq α
l : List α
x✝ x y : α
xs : List α
h : Nodup (x :: y :: xs)
⊢ ↑(formPerm (x :: y :: xs)) x = y
Theorem: CategoryTheory.Limits.spanExt_hom_app_right
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: dsimp [spanExt]
state_before: C : Type u
inst✝¹ : Category C
D : Type u₂
inst✝ : Category D
X Y Z X' Y' Z' : C
iX : X ≅ X'
iY : Y ≅ Y'
iZ : Z ≅ Z'
f : X ⟶ Y
g : X ⟶ Z
f' : X' ⟶ Y'
g' : X' ⟶ Z'
wf : iX.hom ≫ f' = f ≫ iY.hom
wg : iX.hom ≫ g' = g ≫ iZ.hom
⊢ (spanExt iX iY iZ wf wg).hom.app WalkingSpan.right = iZ.hom
Theorem: Bool.ite_eq_false_distrib
File: Mathlib/Init/Data/Bool/Lemmas.lean

tactic: by_cases c <;> simp [*]
state_before: c : Prop
inst✝ : Decidable c
a b : Bool
⊢ ((if c then a else b) = false) = if c then a = false else b = false
Theorem: List.Ico.trichotomy
File: Mathlib/Data/List/Intervals.lean

tactic: by_cases h₁ : n < a
state_before: n a b : ℕ
⊢ n < a ∨ b ≤ n ∨ n ∈ Ico a b

tactic: left
state_before: case pos
n a b : ℕ
h₁ : n < a
⊢ n < a ∨ b ≤ n ∨ n ∈ Ico a b

tactic: exact h₁
state_before: case pos.h
n a b : ℕ
h₁ : n < a
⊢ n < a

tactic: right
state_before: case neg
n a b : ℕ
h₁ : ¬n < a
⊢ n < a ∨ b ≤ n ∨ n ∈ Ico a b

tactic: by_cases h₂ : n ∈ Ico a b
state_before: case neg.h
n a b : ℕ
h₁ : ¬n < a
⊢ b ≤ n ∨ n ∈ Ico a b

tactic: right
state_before: case pos
n a b : ℕ
h₁ : ¬n < a
h₂ : n ∈ Ico a b
⊢ b ≤ n ∨ n ∈ Ico a b

tactic: exact h₂
state_before: case pos.h
n a b : ℕ
h₁ : ¬n < a
h₂ : n ∈ Ico a b
⊢ n ∈ Ico a b

tactic: left
state_before: case neg
n a b : ℕ
h₁ : ¬n < a
h₂ : ¬n ∈ Ico a b
⊢ b ≤ n ∨ n ∈ Ico a b

tactic: simp only [Ico.mem, not_and, not_lt] at *
state_before: case neg.h
n a b : ℕ
h₁ : ¬n < a
h₂ : ¬n ∈ Ico a b
⊢ b ≤ n

tactic: exact h₂ h₁
state_before: case neg.h
n a b : ℕ
h₁ : a ≤ n
h₂ : a ≤ n → b ≤ n
⊢ b ≤ n
Theorem: Filter.inf_principal
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [le_principal_iff, mem_inf_iff]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.114761
ι : Sort x
f g : Filter α
s✝ t✝ s t : Set α
⊢ 𝓟 s ⊓ 𝓟 t ≤ 𝓟 (s ∩ t)

tactic: exact ⟨s, Subset.rfl, t, Subset.rfl, rfl⟩
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.114761
ι : Sort x
f g : Filter α
s✝ t✝ s t : Set α
⊢ ∃ t₁, t₁ ∈ 𝓟 s ∧ ∃ t₂, t₂ ∈ 𝓟 t ∧ s ∩ t = t₁ ∩ t₂

tactic: simp [le_inf_iff, inter_subset_left, inter_subset_right]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type ?u.114761
ι : Sort x
f g : Filter α
s✝ t✝ s t : Set α
⊢ 𝓟 (s ∩ t) ≤ 𝓟 s ⊓ 𝓟 t
Theorem: OmegaCompletePartialOrder.ωSup_total
File: Mathlib/Order/OmegaCompletePartialOrder.lean

tactic: simp only [not_forall] at this ⊢
state_before: α : Type u
β : Type v
γ : Type ?u.7512
inst✝ : OmegaCompletePartialOrder α
c : Chain α
x : α
h : ∀ (i : ℕ), ↑c i ≤ x ∨ x ≤ ↑c i
this : ¬∀ (i : ℕ), ↑c i ≤ x
⊢ ∃ i, ¬↑c i ≤ x

tactic: assumption
state_before: α : Type u
β : Type v
γ : Type ?u.7512
inst✝ : OmegaCompletePartialOrder α
c : Chain α
x : α
h : ∀ (i : ℕ), ↑c i ≤ x ∨ x ≤ ↑c i
this : ∃ x_1, ¬↑c x_1 ≤ x
⊢ ∃ i, ¬↑c i ≤ x
Theorem: BoxIntegral.Prepartition.IsPartition.inf
File: Mathlib/Analysis/BoxIntegral/Partition/Basic.lean

tactic: simp [h₁.iUnion_eq, h₂.iUnion_eq]
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi πi₁ πi₂ : (J : Box ι) → Prepartition J
h₁ : IsPartition π₁
h₂ : IsPartition π₂
⊢ Prepartition.iUnion (π₁ ⊓ π₂) = ↑I
Theorem: HasFPowerSeriesOnBall.analyticAt_of_mem
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: have : (‖y - x‖₊ : ℝ≥0∞) < r := by simpa [edist_eq_coe_nnnorm_sub] using h
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.2353891
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : y ∈ EMetric.ball x r
⊢ AnalyticAt 𝕜 f y

tactic: have := hf.changeOrigin this
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.2353891
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : y ∈ EMetric.ball x r
this : ↑‖y - x‖₊ < r
⊢ AnalyticAt 𝕜 f y

tactic: rw [add_sub_cancel'_right] at this
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.2353891
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : y ∈ EMetric.ball x r
this✝ : ↑‖y - x‖₊ < r
this : HasFPowerSeriesOnBall f (FormalMultilinearSeries.changeOrigin p (y - x)) (x + (y - x)) (r - ↑‖y - x‖₊)
⊢ AnalyticAt 𝕜 f y

tactic: exact this.analyticAt
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.2353891
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : y ∈ EMetric.ball x r
this✝ : ↑‖y - x‖₊ < r
this : HasFPowerSeriesOnBall f (FormalMultilinearSeries.changeOrigin p (y - x)) y (r - ↑‖y - x‖₊)
⊢ AnalyticAt 𝕜 f y

tactic: simpa [edist_eq_coe_nnnorm_sub] using h
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type ?u.2353891
inst✝⁷ : NontriviallyNormedField 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedSpace 𝕜 G
inst✝ : CompleteSpace F
f : E → F
p : FormalMultilinearSeries 𝕜 E F
x y : E
r : ℝ≥0∞
hf : HasFPowerSeriesOnBall f p x r
h : y ∈ EMetric.ball x r
⊢ ↑‖y - x‖₊ < r