1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finset.fold_hom
File: Mathlib/Data/Finset/Fold.lean

tactic: rw [fold, fold, ← Multiset.fold_hom op hm, Multiset.map_map]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
op : β → β → β
hc : Std.Commutative op
ha : Std.Associative op
f : α → β
b : β
s : Finset α
a : α
op' : γ → γ → γ
inst✝¹ : Std.Commutative op'
inst✝ : Std.Associative op'
m : β → γ
hm : ∀ (x y : β), m (op x y) = op' (m x) (m y)
⊢ fold op' (m b) (fun x => m (f x)) s = m (fold op b f s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
op : β → β → β
hc : Std.Commutative op
ha : Std.Associative op
f : α → β
b : β
s : Finset α
a : α
op' : γ → γ → γ
inst✝¹ : Std.Commutative op'
inst✝ : Std.Associative op'
m : β → γ
hm : ∀ (x y : β), m (op x y) = op' (m x) (m y)
⊢ Multiset.fold op' (m b) (Multiset.map (fun x => m (f x)) s.val) = Multiset.fold op' (m b) (Multiset.map (m ∘ f) s.val)

tactic: simp only [Function.comp_apply]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
op : β → β → β
hc : Std.Commutative op
ha : Std.Associative op
f : α → β
b : β
s : Finset α
a : α
op' : γ → γ → γ
inst✝¹ : Std.Commutative op'
inst✝ : Std.Associative op'
m : β → γ
hm : ∀ (x y : β), m (op x y) = op' (m x) (m y)
⊢ Multiset.fold op' (m b) (Multiset.map (fun x => m (f x)) s.val) = Multiset.fold op' (m b) (Multiset.map (m ∘ f) s.val)
state_after: no goals
Theorem: GeneralizedContinuedFraction.terminatedAt_iff_s_none
File: Mathlib/Algebra/ContinuedFractions/Translations.lean

tactic: rfl
state_before: α : Type u_1
g : GeneralizedContinuedFraction α
n : ℕ
⊢ g.TerminatedAt n ↔ g.s.get? n = none
state_after: no goals
Theorem: List.prod_mul_prod_eq_prod_zipWith_of_length_eq
File: Mathlib/Algebra/BigOperators/Group/List.lean

tactic: apply (prod_mul_prod_eq_prod_zipWith_mul_prod_drop l l').trans
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : CommMonoid M
a : M
l✝ l₁ l₂ l l' : List M
h : l.length = l'.length
⊢ l.prod * l'.prod = (zipWith (fun x x_1 => x * x_1) l l').prod
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : CommMonoid M
a : M
l✝ l₁ l₂ l l' : List M
h : l.length = l'.length
⊢ (zipWith (fun x x_1 => x * x_1) l l').prod * (drop l'.length l).prod * (drop l.length l').prod =
    (zipWith (fun x x_1 => x * x_1) l l').prod

tactic: rw [← h, drop_length, h, drop_length, prod_nil, mul_one, mul_one]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : CommMonoid M
a : M
l✝ l₁ l₂ l l' : List M
h : l.length = l'.length
⊢ (zipWith (fun x x_1 => x * x_1) l l').prod * (drop l'.length l).prod * (drop l.length l').prod =
    (zipWith (fun x x_1 => x * x_1) l l').prod
state_after: no goals
Theorem: Filter.hasBasis_generate
File: Mathlib/Order/Filter/Bases.lean

tactic: simp only [mem_generate_iff, exists_prop, and_assoc, and_left_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s✝ : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
s : Set (Set α)
U : Set α
⊢ U ∈ generate s ↔ ∃ i, (i.Finite ∧ i ⊆ s) ∧ ⋂₀ i ⊆ U
state_after: no goals
Theorem: IsPrimitiveRoot.card_rootsOfUnity
File: Mathlib/RingTheory/RootsOfUnity/Basic.lean

tactic: obtain ⟨ζ, hζ⟩ := h.isUnit n.pos
state_before: M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝ : Rˣ
h✝ : IsPrimitiveRoot ζ✝ k
inst✝ : IsDomain R
ζ : R
n : ℕ+
h : IsPrimitiveRoot ζ ↑n
⊢ Fintype.card ↥(rootsOfUnity n R) = ↑n
state_after: case intro
M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝¹ : Rˣ
h✝ : IsPrimitiveRoot ζ✝¹ k
inst✝ : IsDomain R
ζ✝ : R
n : ℕ+
h : IsPrimitiveRoot ζ✝ ↑n
ζ : Rˣ
hζ : ↑ζ = ζ✝
⊢ Fintype.card ↥(rootsOfUnity n R) = ↑n

tactic: rw [← hζ, IsPrimitiveRoot.coe_units_iff] at h
state_before: case intro
M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝¹ : Rˣ
h✝ : IsPrimitiveRoot ζ✝¹ k
inst✝ : IsDomain R
ζ✝ : R
n : ℕ+
h : IsPrimitiveRoot ζ✝ ↑n
ζ : Rˣ
hζ : ↑ζ = ζ✝
⊢ Fintype.card ↥(rootsOfUnity n R) = ↑n
state_after: case intro
M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝¹ : Rˣ
h✝ : IsPrimitiveRoot ζ✝¹ k
inst✝ : IsDomain R
ζ✝ : R
n : ℕ+
ζ : Rˣ
h : IsPrimitiveRoot ζ ↑n
hζ : ↑ζ = ζ✝
⊢ Fintype.card ↥(rootsOfUnity n R) = ↑n

tactic: exact h.card_rootsOfUnity'
state_before: case intro
M : Type u_1
N : Type u_2
G : Type u_3
R : Type u_4
S : Type u_5
F : Type u_6
inst✝⁴ : CommMonoid M
inst✝³ : CommMonoid N
inst✝² : DivisionCommMonoid G
k l : ℕ
inst✝¹ : CommRing R
ζ✝¹ : Rˣ
h✝ : IsPrimitiveRoot ζ✝¹ k
inst✝ : IsDomain R
ζ✝ : R
n : ℕ+
ζ : Rˣ
h : IsPrimitiveRoot ζ ↑n
hζ : ↑ζ = ζ✝
⊢ Fintype.card ↥(rootsOfUnity n R) = ↑n
state_after: no goals
Theorem: Nat.ascFactorial_eq_factorial_mul_choose
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: rw [Nat.mul_comm]
state_before: n k : ℕ
⊢ (n + 1).ascFactorial k = k ! * (n + k).choose k
state_after: n k : ℕ
⊢ (n + 1).ascFactorial k = (n + k).choose k * k !

tactic: apply Nat.mul_right_cancel (n + k - k).factorial_pos
state_before: n k : ℕ
⊢ (n + 1).ascFactorial k = (n + k).choose k * k !
state_after: n k : ℕ
⊢ (n + 1).ascFactorial k * (n + k - k)! = (n + k).choose k * k ! * (n + k - k)!

tactic: rw [choose_mul_factorial_mul_factorial <| Nat.le_add_left k n, Nat.add_sub_cancel_right,
  ← factorial_mul_ascFactorial, Nat.mul_comm]
state_before: n k : ℕ
⊢ (n + 1).ascFactorial k * (n + k - k)! = (n + k).choose k * k ! * (n + k - k)!
state_after: no goals
Theorem: FirstOrder.Language.BoundedFormula.ex_semanticallyEquivalent_not_all_not
File: Mathlib/ModelTheory/Satisfiability.lean

tactic: simp
state_before: L : Language
T : L.Theory
α : Type w
n : ℕ
φ✝ ψ : L.BoundedFormula α n
φ : L.BoundedFormula α (n + 1)
M : T.ModelType
v : α → ↑M
xs : Fin n → ↑M
⊢ (∃'φ ⇔ ∼(∀'∼φ)).Realize v xs
state_after: no goals
Theorem: segment_eq_image
File: Mathlib/Analysis/Convex/Segment.lean

tactic: simp only [add_sub_cancel_right]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝⁵ : OrderedRing 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : AddCommGroup F
inst✝² : AddCommGroup G
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y z : E
x✝ : z ∈ [x-[𝕜]y]
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
hz : a • x + b • y = z
⊢ (fun θ => (a + b - θ) • x + θ • y) b = a • x + b • y
state_after: no goals
Theorem: Ordinal.mul_ne_zero
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simpa only [Ordinal.pos_iff_ne_zero] using mul_pos
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
⊢ a ≠ 0 → b ≠ 0 → a * b ≠ 0
state_after: no goals
Theorem: PowerSeries.rescale_one
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: ext
state_before: R : Type u_1
inst✝ : CommSemiring R
⊢ rescale 1 = RingHom.id R⟦X⟧
state_after: case a.h
R : Type u_1
inst✝ : CommSemiring R
x✝ : R⟦X⟧
n✝ : ℕ
⊢ (coeff R n✝) ((rescale 1) x✝) = (coeff R n✝) ((RingHom.id R⟦X⟧) x✝)

tactic: simp only [coeff_rescale, one_pow, one_mul, RingHom.id_apply]
state_before: case a.h
R : Type u_1
inst✝ : CommSemiring R
x✝ : R⟦X⟧
n✝ : ℕ
⊢ (coeff R n✝) ((rescale 1) x✝) = (coeff R n✝) ((RingHom.id R⟦X⟧) x✝)
state_after: no goals
Theorem: QuadraticForm.map_sub
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: rw [← neg_sub, map_neg]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
x y : M
⊢ Q (x - y) = Q (y - x)
state_after: no goals
Theorem: MvPolynomial.IsHomogeneous.coeff_eq_zero
File: Mathlib/RingTheory/MvPolynomial/Homogeneous.lean

tactic: simp_rw [← weightedDegree_one] at hd
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
inst✝² inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
φ ψ : MvPolynomial σ R
m n : ℕ
hφ : φ.IsHomogeneous n
d : σ →₀ ℕ
hd : degree d ≠ n
⊢ coeff d φ = 0
state_after: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
inst✝² inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
φ ψ : MvPolynomial σ R
m n : ℕ
hφ : φ.IsHomogeneous n
d : σ →₀ ℕ
hd : (weightedDegree 1) d ≠ n
⊢ coeff d φ = 0

tactic: exact IsWeightedHomogeneous.coeff_eq_zero hφ d hd
state_before: σ : Type u_1
τ : Type u_2
R : Type u_3
S : Type u_4
inst✝² inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
φ ψ : MvPolynomial σ R
m n : ℕ
hφ : φ.IsHomogeneous n
d : σ →₀ ℕ
hd : (weightedDegree 1) d ≠ n
⊢ coeff d φ = 0
state_after: no goals
Theorem: Polynomial.card_support_C_mul_X_pow_le_one
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [← card_singleton n]
state_before: R : Type u
S : Type v
a b c✝ d : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
c : R
n : ℕ
⊢ (C c * X ^ n).support.card ≤ 1
state_after: R : Type u
S : Type v
a b c✝ d : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
c : R
n : ℕ
⊢ (C c * X ^ n).support.card ≤ {n}.card

tactic: apply card_le_card (support_C_mul_X_pow' n c)
state_before: R : Type u
S : Type v
a b c✝ d : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
c : R
n : ℕ
⊢ (C c * X ^ n).support.card ≤ {n}.card
state_after: no goals
Theorem: intervalIntegral.integral_hasStrictDerivAt_of_tendsto_ae_left
File: Mathlib/MeasureTheory/Integral/FundThmCalculus.lean

tactic: simpa only [← integral_symm] using
  (integral_hasStrictDerivAt_of_tendsto_ae_right hf.symm hmeas ha).neg
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : CompleteSpace E
f : ℝ → E
c ca cb : E
l l' la la' lb lb' : Filter ℝ
lt : Filter ι
a b z : ℝ
u v ua ub va vb : ι → ℝ
inst✝¹ : FTCFilter a la la'
inst✝ : FTCFilter b lb lb'
hf : IntervalIntegrable f volume a b
hmeas : StronglyMeasurableAtFilter f (𝓝 a) volume
ha : Tendsto f (𝓝 a ⊓ ae volume) (𝓝 c)
⊢ HasStrictDerivAt (fun u => ∫ (x : ℝ) in u..b, f x) (-c) a
state_after: no goals
Theorem: TensorProduct.sum_tmul_eq_zero_of_vanishesTrivially
File: Mathlib/LinearAlgebra/TensorProduct/Vanishing.lean

tactic: obtain ⟨κ, _, a, y, h₁, h₂⟩ := hmn
state_before: R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
hmn : VanishesTrivially R m n
⊢ ∑ i : ι, m i ⊗ₜ[R] n i = 0
state_after: case intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
κ : Type u
w✝ : Fintype κ
a : ι → κ → R
y : κ → N
h₁ : ∀ (i : ι), n i = ∑ j : κ, a i j • y j
h₂ : ∀ (j : κ), ∑ i : ι, a i j • m i = 0
⊢ ∑ i : ι, m i ⊗ₜ[R] n i = 0

tactic: simp_rw [h₁, tmul_sum, tmul_smul]
state_before: case intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
κ : Type u
w✝ : Fintype κ
a : ι → κ → R
y : κ → N
h₁ : ∀ (i : ι), n i = ∑ j : κ, a i j • y j
h₂ : ∀ (j : κ), ∑ i : ι, a i j • m i = 0
⊢ ∑ i : ι, m i ⊗ₜ[R] n i = 0
state_after: case intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
κ : Type u
w✝ : Fintype κ
a : ι → κ → R
y : κ → N
h₁ : ∀ (i : ι), n i = ∑ j : κ, a i j • y j
h₂ : ∀ (j : κ), ∑ i : ι, a i j • m i = 0
⊢ ∑ x : ι, ∑ x_1 : κ, a x x_1 • m x ⊗ₜ[R] y x_1 = 0

tactic: rw [Finset.sum_comm]
state_before: case intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
κ : Type u
w✝ : Fintype κ
a : ι → κ → R
y : κ → N
h₁ : ∀ (i : ι), n i = ∑ j : κ, a i j • y j
h₂ : ∀ (j : κ), ∑ i : ι, a i j • m i = 0
⊢ ∑ x : ι, ∑ x_1 : κ, a x x_1 • m x ⊗ₜ[R] y x_1 = 0
state_after: case intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
κ : Type u
w✝ : Fintype κ
a : ι → κ → R
y : κ → N
h₁ : ∀ (i : ι), n i = ∑ j : κ, a i j • y j
h₂ : ∀ (j : κ), ∑ i : ι, a i j • m i = 0
⊢ ∑ y_1 : κ, ∑ x : ι, a x y_1 • m x ⊗ₜ[R] y y_1 = 0

tactic: simp_rw [← tmul_smul, ← smul_tmul, ← sum_tmul, h₂, zero_tmul, Finset.sum_const_zero]
state_before: case intro.intro.intro.intro.intro
R : Type u
inst✝⁵ : CommRing R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
N : Type u
inst✝² : AddCommGroup N
inst✝¹ : Module R N
ι : Type u
inst✝ : Fintype ι
m : ι → M
n : ι → N
κ : Type u
w✝ : Fintype κ
a : ι → κ → R
y : κ → N
h₁ : ∀ (i : ι), n i = ∑ j : κ, a i j • y j
h₂ : ∀ (j : κ), ∑ i : ι, a i j • m i = 0
⊢ ∑ y_1 : κ, ∑ x : ι, a x y_1 • m x ⊗ₜ[R] y y_1 = 0
state_after: no goals
Theorem: Real.hasDerivWithinAt_arcsin_Iic
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/InverseDeriv.lean

tactic: rcases em (x = -1) with (rfl | h')
state_before: x : ℝ
h : x ≠ 1
⊢ HasDerivWithinAt arcsin (1 / √(1 - x ^ 2)) (Iic x) x
state_after: case inl
h : -1 ≠ 1
⊢ HasDerivWithinAt arcsin (1 / √(1 - (-1) ^ 2)) (Iic (-1)) (-1)

case inr
x : ℝ
h : x ≠ 1
h' : ¬x = -1
⊢ HasDerivWithinAt arcsin (1 / √(1 - x ^ 2)) (Iic x) x

tactic: convert (hasDerivWithinAt_const (-1 : ℝ) _ (-(π / 2))).congr _ _ <;>
  simp (config := { contextual := true }) [arcsin_of_le_neg_one]
state_before: case inl
h : -1 ≠ 1
⊢ HasDerivWithinAt arcsin (1 / √(1 - (-1) ^ 2)) (Iic (-1)) (-1)
state_after: no goals

tactic: exact (hasDerivAt_arcsin h' h).hasDerivWithinAt
state_before: case inr
x : ℝ
h : x ≠ 1
h' : ¬x = -1
⊢ HasDerivWithinAt arcsin (1 / √(1 - x ^ 2)) (Iic x) x
state_after: no goals
Theorem: Ordinal.IsNormal.apply_lt_nfp
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: unfold nfp
state_before: f✝ : Ordinal.{u} → Ordinal.{u}
f : Ordinal.{u_1} → Ordinal.{u_1}
H : IsNormal f
a b : Ordinal.{u_1}
⊢ f b < nfp f a ↔ b < nfp f a
state_after: f✝ : Ordinal.{u} → Ordinal.{u}
f : Ordinal.{u_1} → Ordinal.{u_1}
H : IsNormal f
a b : Ordinal.{u_1}
⊢ f b < nfpFamily (fun x => f) a ↔ b < nfpFamily (fun x => f) a

tactic: rw [← @apply_lt_nfpFamily_iff Unit (fun _ => f) _ (fun _ => H) a b]
state_before: f✝ : Ordinal.{u} → Ordinal.{u}
f : Ordinal.{u_1} → Ordinal.{u_1}
H : IsNormal f
a b : Ordinal.{u_1}
⊢ f b < nfpFamily (fun x => f) a ↔ b < nfpFamily (fun x => f) a
state_after: f✝ : Ordinal.{u} → Ordinal.{u}
f : Ordinal.{u_1} → Ordinal.{u_1}
H : IsNormal f
a b : Ordinal.{u_1}
⊢ f b < nfpFamily (fun x => f) a ↔ Unit → f b < nfpFamily (fun x => f) a

tactic: exact ⟨fun h _ => h, fun h => h Unit.unit⟩
state_before: f✝ : Ordinal.{u} → Ordinal.{u}
f : Ordinal.{u_1} → Ordinal.{u_1}
H : IsNormal f
a b : Ordinal.{u_1}
⊢ f b < nfpFamily (fun x => f) a ↔ Unit → f b < nfpFamily (fun x => f) a
state_after: no goals
Theorem: IsPreirreducible.preimage
File: Mathlib/Topology/Irreducible.lean

tactic: rintro U V hU hV ⟨x, hx, hx'⟩ ⟨y, hy, hy'⟩
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
ht : IsPreirreducible t
f : Y → X
hf : OpenEmbedding f
⊢ IsPreirreducible (f ⁻¹' t)
state_after: case intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
ht : IsPreirreducible t
f : Y → X
hf : OpenEmbedding f
U V : Set Y
hU : IsOpen U
hV : IsOpen V
x : Y
hx : x ∈ f ⁻¹' t
hx' : x ∈ U
y : Y
hy : y ∈ f ⁻¹' t
hy' : y ∈ V
⊢ (f ⁻¹' t ∩ (U ∩ V)).Nonempty

tactic: obtain ⟨_, h₁, ⟨y, h₂, rfl⟩, ⟨y', h₃, h₄⟩⟩ :=
  ht _ _ (hf.isOpenMap _ hU) (hf.isOpenMap _ hV) ⟨f x, hx, Set.mem_image_of_mem f hx'⟩
    ⟨f y, hy, Set.mem_image_of_mem f hy'⟩
state_before: case intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
ht : IsPreirreducible t
f : Y → X
hf : OpenEmbedding f
U V : Set Y
hU : IsOpen U
hV : IsOpen V
x : Y
hx : x ∈ f ⁻¹' t
hx' : x ∈ U
y : Y
hy : y ∈ f ⁻¹' t
hy' : y ∈ V
⊢ (f ⁻¹' t ∩ (U ∩ V)).Nonempty
state_after: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
ht : IsPreirreducible t
f : Y → X
hf : OpenEmbedding f
U V : Set Y
hU : IsOpen U
hV : IsOpen V
x : Y
hx : x ∈ f ⁻¹' t
hx' : x ∈ U
y✝ : Y
hy : y✝ ∈ f ⁻¹' t
hy' : y✝ ∈ V
y : Y
h₂ : y ∈ U
h₁ : f y ∈ t
y' : Y
h₃ : y' ∈ V
h₄ : f y' = f y
⊢ (f ⁻¹' t ∩ (U ∩ V)).Nonempty

tactic: cases hf.inj h₄
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
ht : IsPreirreducible t
f : Y → X
hf : OpenEmbedding f
U V : Set Y
hU : IsOpen U
hV : IsOpen V
x : Y
hx : x ∈ f ⁻¹' t
hx' : x ∈ U
y✝ : Y
hy : y✝ ∈ f ⁻¹' t
hy' : y✝ ∈ V
y : Y
h₂ : y ∈ U
h₁ : f y ∈ t
y' : Y
h₃ : y' ∈ V
h₄ : f y' = f y
⊢ (f ⁻¹' t ∩ (U ∩ V)).Nonempty
state_after: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refl
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
ht : IsPreirreducible t
f : Y → X
hf : OpenEmbedding f
U V : Set Y
hU : IsOpen U
hV : IsOpen V
x : Y
hx : x ∈ f ⁻¹' t
hx' : x ∈ U
y✝ : Y
hy : y✝ ∈ f ⁻¹' t
hy' : y✝ ∈ V
y : Y
h₂ : y ∈ U
h₁ : f y ∈ t
h₃ : y ∈ V
h₄ : f y = f y
⊢ (f ⁻¹' t ∩ (U ∩ V)).Nonempty

tactic: exact ⟨y, h₁, h₂, h₃⟩
state_before: case intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.intro.refl
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
ht : IsPreirreducible t
f : Y → X
hf : OpenEmbedding f
U V : Set Y
hU : IsOpen U
hV : IsOpen V
x : Y
hx : x ∈ f ⁻¹' t
hx' : x ∈ U
y✝ : Y
hy : y✝ ∈ f ⁻¹' t
hy' : y✝ ∈ V
y : Y
h₂ : y ∈ U
h₁ : f y ∈ t
h₃ : y ∈ V
h₄ : f y = f y
⊢ (f ⁻¹' t ∩ (U ∩ V)).Nonempty
state_after: no goals
Theorem: Finsupp.support_update_zero
File: Mathlib/Data/Finsupp/Defs.lean

tactic: classical
simp only [update, ite_true, mem_support_iff, ne_eq, not_not]
congr; apply Subsingleton.elim
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
f : α →₀ M
a : α
b : M
i : α
inst✝ : DecidableEq α
⊢ (f.update a 0).support = f.support.erase a
state_after: no goals

tactic: simp only [update, ite_true, mem_support_iff, ne_eq, not_not]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
f : α →₀ M
a : α
b : M
i : α
inst✝ : DecidableEq α
⊢ (f.update a 0).support = f.support.erase a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
f : α →₀ M
a : α
b : M
i : α
inst✝ : DecidableEq α
⊢ f.support.erase a = f.support.erase a

tactic: congr
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
f : α →₀ M
a : α
b : M
i : α
inst✝ : DecidableEq α
⊢ f.support.erase a = f.support.erase a
state_after: case h.e_2.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
f : α →₀ M
a : α
b : M
i : α
inst✝ : DecidableEq α
⊢ Classical.decEq α = inst✝

tactic: apply Subsingleton.elim
state_before: case h.e_2.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
f : α →₀ M
a : α
b : M
i : α
inst✝ : DecidableEq α
⊢ Classical.decEq α = inst✝
state_after: no goals
Theorem: Field.finSepDegree_mul_finSepDegree_of_isAlgebraic
File: Mathlib/FieldTheory/SeparableDegree.lean

tactic: simpa only [Nat.card_prod] using Nat.card_congr (embProdEmbOfIsAlgebraic F E K)
state_before: F : Type u
E : Type v
inst✝⁷ : Field F
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
K : Type w
inst✝⁴ : Field K
inst✝³ : Algebra F K
inst✝² : Algebra E K
inst✝¹ : IsScalarTower F E K
inst✝ : Algebra.IsAlgebraic E K
⊢ finSepDegree F E * finSepDegree E K = finSepDegree F K
state_after: no goals
Theorem: Set.image2_insert_left
File: Mathlib/Data/Set/NAry.lean

tactic: rw [insert_eq, image2_union_left, image2_singleton_left]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
⊢ image2 f (insert a s) t = (fun b => f a b) '' t ∪ image2 f s t
state_after: no goals
Theorem: primorial_add
File: Mathlib/NumberTheory/Primorial.lean

tactic: rw [primorial, primorial, ← Ico_zero_eq_range, ← prod_union, ← filter_union, Ico_union_Ico_eq_Ico]
state_before: m n : ℕ
⊢ (m + n)# = m# * ∏ p ∈ filter Nat.Prime (Ico (m + 1) (m + n + 1)), p
state_after: case hab
m n : ℕ
⊢ 0 ≤ m + 1

case hbc
m n : ℕ
⊢ m + 1 ≤ m + n + 1

m n : ℕ
⊢ Disjoint (filter Nat.Prime (Ico 0 (m + 1))) (filter Nat.Prime (Ico (m + 1) (m + n + 1)))

tactic: exacts [Nat.zero_le _, add_le_add_right (Nat.le_add_right _ _) _,
  disjoint_filter_filter <| Ico_disjoint_Ico_consecutive _ _ _]
state_before: case hab
m n : ℕ
⊢ 0 ≤ m + 1

case hbc
m n : ℕ
⊢ m + 1 ≤ m + n + 1

m n : ℕ
⊢ Disjoint (filter Nat.Prime (Ico 0 (m + 1))) (filter Nat.Prime (Ico (m + 1) (m + n + 1)))
state_after: no goals
Theorem: Real.sin_pi_over_two_pow_succ
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: rw [eq_div_iff_mul_eq two_ne_zero, eq_comm, sqrt_eq_iff_sq_eq, mul_pow,
  sin_sq_pi_over_two_pow_succ, sub_mul]
state_before: x : ℝ
n : ℕ
⊢ sin (π / 2 ^ (n + 2)) = √(2 - sqrtTwoAddSeries 0 n) / 2
state_after: x : ℝ
n : ℕ
⊢ 1 / 2 * 2 ^ 2 - sqrtTwoAddSeries 0 n / 4 * 2 ^ 2 = 2 - sqrtTwoAddSeries 0 n

case hx
x : ℝ
n : ℕ
⊢ 0 ≤ 2 - sqrtTwoAddSeries 0 n

case hy
x : ℝ
n : ℕ
⊢ 0 ≤ sin (π / 2 ^ (n + 2)) * 2

tactic: refine mul_nonneg (sin_nonneg_of_nonneg_of_le_pi ?_ ?_) zero_le_two
state_before: case hy
x : ℝ
n : ℕ
⊢ 0 ≤ sin (π / 2 ^ (n + 2)) * 2
state_after: case hy.refine_1
x : ℝ
n : ℕ
⊢ 0 ≤ π / 2 ^ (n + 2)

case hy.refine_2
x : ℝ
n : ℕ
⊢ π / 2 ^ (n + 2) ≤ π

tactic: congr <;> norm_num
state_before: x : ℝ
n : ℕ
⊢ 1 / 2 * 2 ^ 2 - sqrtTwoAddSeries 0 n / 4 * 2 ^ 2 = 2 - sqrtTwoAddSeries 0 n
state_after: no goals

tactic: rw [sub_nonneg]
state_before: case hx
x : ℝ
n : ℕ
⊢ 0 ≤ 2 - sqrtTwoAddSeries 0 n
state_after: case hx
x : ℝ
n : ℕ
⊢ sqrtTwoAddSeries 0 n ≤ 2

tactic: exact (sqrtTwoAddSeries_lt_two _).le
state_before: case hx
x : ℝ
n : ℕ
⊢ sqrtTwoAddSeries 0 n ≤ 2
state_after: no goals

tactic: positivity
state_before: case hy.refine_1
x : ℝ
n : ℕ
⊢ 0 ≤ π / 2 ^ (n + 2)
state_after: no goals

tactic: exact div_le_self pi_pos.le <| one_le_pow_of_one_le one_le_two _
state_before: case hy.refine_2
x : ℝ
n : ℕ
⊢ π / 2 ^ (n + 2) ≤ π
state_after: no goals
Theorem: padicValInt.of_nat
File: Mathlib/NumberTheory/Padics/PadicVal.lean

tactic: simp [padicValInt]
state_before: p n : ℕ
⊢ padicValInt p ↑n = padicValNat p n
state_after: no goals