1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: AlgebraicGeometry.locallyOfFiniteType_of_comp
File: Mathlib/AlgebraicGeometry/Morphisms/FiniteType.lean

tactic: revert hf
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
hf : LocallyOfFiniteType (f ≫ g)
⊢ LocallyOfFiniteType f
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
⊢ ∀ [hf : LocallyOfFiniteType (f ≫ g)], LocallyOfFiniteType f

tactic: rw [locallyOfFiniteType_eq]
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
⊢ ∀ [hf : LocallyOfFiniteType (f ≫ g)], LocallyOfFiniteType f
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
⊢ ∀ [hf : affineLocally (@RingHom.FiniteType) (f ≫ g)], affineLocally (@RingHom.FiniteType) f

tactic: apply RingHom.finiteType_is_local.affineLocally_of_comp
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
⊢ ∀ [hf : affineLocally (@RingHom.FiniteType) (f ≫ g)], affineLocally (@RingHom.FiniteType) f
state_after: case H
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
⊢ ∀ {R S T : Type u_1} [inst : CommRing R] [inst_1 : CommRing S] [inst_2 : CommRing T] (f : R →+* S) (g : S →+* T),
    (g.comp f).FiniteType → g.FiniteType

tactic: introv H
state_before: case H
X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y Z : Scheme
f : X ⟶ Y
g : Y ⟶ Z
⊢ ∀ {R S T : Type u_1} [inst : CommRing R] [inst_1 : CommRing S] [inst_2 : CommRing T] (f : R →+* S) (g : S →+* T),
    (g.comp f).FiniteType → g.FiniteType
state_after: case H
X✝ Y✝ : Scheme
f✝¹ : X✝ ⟶ Y✝
X Y Z : Scheme
f✝ : X ⟶ Y
g✝ : Y ⟶ Z
R S T : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CommRing T
f : R →+* S
g : S →+* T
H : (g.comp f).FiniteType
⊢ g.FiniteType

tactic: exact RingHom.FiniteType.of_comp_finiteType H
state_before: case H
X✝ Y✝ : Scheme
f✝¹ : X✝ ⟶ Y✝
X Y Z : Scheme
f✝ : X ⟶ Y
g✝ : Y ⟶ Z
R S T : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CommRing T
f : R →+* S
g : S →+* T
H : (g.comp f).FiniteType
⊢ g.FiniteType
state_after: no goals
Theorem: Finset.coe_eq_empty
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [← coe_empty, coe_inj]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ s : Finset α
⊢ ↑s = ∅ ↔ s = ∅
state_after: no goals
Theorem: Nat.ord_proj_dvd_ord_proj_of_dvd
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: rcases em' p.Prime with (pp | pp)
state_before: a✝ b✝ m n p✝ a b : ℕ
hb0 : b ≠ 0
hab : a ∣ b
p : ℕ
⊢ p ^ a.factorization p ∣ p ^ b.factorization p
state_after: case inl
a✝ b✝ m n p✝ a b : ℕ
hb0 : b ≠ 0
hab : a ∣ b
p : ℕ
pp : ¬Prime p
⊢ p ^ a.factorization p ∣ p ^ b.factorization p

case inr
a✝ b✝ m n p✝ a b : ℕ
hb0 : b ≠ 0
hab : a ∣ b
p : ℕ
pp : Prime p
⊢ p ^ a.factorization p ∣ p ^ b.factorization p

tactic: rcases eq_or_ne a 0 with (rfl | ha0)
state_before: case inr
a✝ b✝ m n p✝ a b : ℕ
hb0 : b ≠ 0
hab : a ∣ b
p : ℕ
pp : Prime p
⊢ p ^ a.factorization p ∣ p ^ b.factorization p
state_after: case inr.inl
a b✝ m n p✝ b : ℕ
hb0 : b ≠ 0
p : ℕ
pp : Prime p
hab : 0 ∣ b
⊢ p ^ (factorization 0) p ∣ p ^ b.factorization p

case inr.inr
a✝ b✝ m n p✝ a b : ℕ
hb0 : b ≠ 0
hab : a ∣ b
p : ℕ
pp : Prime p
ha0 : a ≠ 0
⊢ p ^ a.factorization p ∣ p ^ b.factorization p

tactic: rw [pow_dvd_pow_iff_le_right pp.one_lt]
state_before: case inr.inr
a✝ b✝ m n p✝ a b : ℕ
hb0 : b ≠ 0
hab : a ∣ b
p : ℕ
pp : Prime p
ha0 : a ≠ 0
⊢ p ^ a.factorization p ∣ p ^ b.factorization p
state_after: case inr.inr
a✝ b✝ m n p✝ a b : ℕ
hb0 : b ≠ 0
hab : a ∣ b
p : ℕ
pp : Prime p
ha0 : a ≠ 0
⊢ a.factorization p ≤ b.factorization p

tactic: exact (factorization_le_iff_dvd ha0 hb0).2 hab p
state_before: case inr.inr
a✝ b✝ m n p✝ a b : ℕ
hb0 : b ≠ 0
hab : a ∣ b
p : ℕ
pp : Prime p
ha0 : a ≠ 0
⊢ a.factorization p ≤ b.factorization p
state_after: no goals

tactic: simp [pp]
state_before: case inl
a✝ b✝ m n p✝ a b : ℕ
hb0 : b ≠ 0
hab : a ∣ b
p : ℕ
pp : ¬Prime p
⊢ p ^ a.factorization p ∣ p ^ b.factorization p
state_after: no goals

tactic: simp
state_before: case inr.inl
a b✝ m n p✝ b : ℕ
hb0 : b ≠ 0
p : ℕ
pp : Prime p
hab : 0 ∣ b
⊢ p ^ (factorization 0) p ∣ p ^ b.factorization p
state_after: no goals
Theorem: Finset.biUnion_subset_biUnion_of_subset_left
File: Mathlib/Data/Finset/Union.lean

tactic: simp only [and_imp, mem_biUnion, exists_prop]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
t : α → Finset β
h : s₁ ⊆ s₂
x : β
⊢ x ∈ s₁.biUnion t → x ∈ s₂.biUnion t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
s s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
t : α → Finset β
h : s₁ ⊆ s₂
x : β
⊢ (∃ a ∈ s₁, x ∈ t a) → ∃ a ∈ s₂, x ∈ t a

tactic: exact Exists.imp fun a ha ↦ ⟨h ha.1, ha.2⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
t : α → Finset β
h : s₁ ⊆ s₂
x : β
⊢ (∃ a ∈ s₁, x ∈ t a) → ∃ a ∈ s₂, x ∈ t a
state_after: no goals
Theorem: Real.exp_mul_le_cosh_add_mul_sinh
File: Mathlib/Analysis/Convex/SpecificFunctions/Basic.lean

tactic: rw [abs_le] at ht
state_before: t : ℝ
ht : |t| ≤ 1
x : ℝ
⊢ rexp (t * x) ≤ cosh x + t * sinh x
state_after: t : ℝ
ht : -1 ≤ t ∧ t ≤ 1
x : ℝ
⊢ rexp (t * x) ≤ cosh x + t * sinh x

tactic: calc
  _ = exp ((1 + t) / 2 * x + (1 - t) / 2 * (-x)) := by ring_nf
  _ ≤ (1 + t) / 2 * exp x + (1 - t) / 2 * exp (-x) :=
      convexOn_exp.2 (Set.mem_univ _) (Set.mem_univ _) (by linarith) (by linarith) <| by ring
  _ = _ := by rw [cosh_eq, sinh_eq]; ring
state_before: t : ℝ
ht : -1 ≤ t ∧ t ≤ 1
x : ℝ
⊢ rexp (t * x) ≤ cosh x + t * sinh x
state_after: no goals

tactic: ring_nf
state_before: t : ℝ
ht : -1 ≤ t ∧ t ≤ 1
x : ℝ
⊢ rexp (t * x) = rexp ((1 + t) / 2 * x + (1 - t) / 2 * -x)
state_after: no goals

tactic: linarith
state_before: t : ℝ
ht : -1 ≤ t ∧ t ≤ 1
x : ℝ
⊢ 0 ≤ (1 + t) / 2
state_after: no goals

tactic: linarith
state_before: t : ℝ
ht : -1 ≤ t ∧ t ≤ 1
x : ℝ
⊢ 0 ≤ (1 - t) / 2
state_after: no goals

tactic: ring
state_before: t : ℝ
ht : -1 ≤ t ∧ t ≤ 1
x : ℝ
⊢ (1 + t) / 2 + (1 - t) / 2 = 1
state_after: no goals

tactic: rw [cosh_eq, sinh_eq]
state_before: t : ℝ
ht : -1 ≤ t ∧ t ≤ 1
x : ℝ
⊢ (1 + t) / 2 * rexp x + (1 - t) / 2 * rexp (-x) = cosh x + t * sinh x
state_after: t : ℝ
ht : -1 ≤ t ∧ t ≤ 1
x : ℝ
⊢ (1 + t) / 2 * rexp x + (1 - t) / 2 * rexp (-x) = (rexp x + rexp (-x)) / 2 + t * ((rexp x - rexp (-x)) / 2)

tactic: ring
state_before: t : ℝ
ht : -1 ≤ t ∧ t ≤ 1
x : ℝ
⊢ (1 + t) / 2 * rexp x + (1 - t) / 2 * rexp (-x) = (rexp x + rexp (-x)) / 2 + t * ((rexp x - rexp (-x)) / 2)
state_after: no goals
Theorem: FiniteField.prod_univ_units_id_eq_neg_one
File: Mathlib/FieldTheory/Finite/Basic.lean

tactic: classical
  have : (∏ x ∈ (@univ Kˣ _).erase (-1), x) = 1 :=
    prod_involution (fun x _ => x⁻¹) (by simp)
      (fun a => by simp (config := { contextual := true }) [Units.inv_eq_self_iff])
      (fun a => by simp [@inv_eq_iff_eq_inv _ _ a]) (by simp)
  rw [← insert_erase (mem_univ (-1 : Kˣ)), prod_insert (not_mem_erase _ _), this, mul_one]
state_before: K : Type u_1
R : Type u_2
inst✝² : CommRing K
inst✝¹ : IsDomain K
inst✝ : Fintype Kˣ
⊢ ∏ x : Kˣ, x = -1
state_after: no goals

tactic: have : (∏ x ∈ (@univ Kˣ _).erase (-1), x) = 1 :=
  prod_involution (fun x _ => x⁻¹) (by simp)
    (fun a => by simp (config := { contextual := true }) [Units.inv_eq_self_iff])
    (fun a => by simp [@inv_eq_iff_eq_inv _ _ a]) (by simp)
state_before: K : Type u_1
R : Type u_2
inst✝² : CommRing K
inst✝¹ : IsDomain K
inst✝ : Fintype Kˣ
⊢ ∏ x : Kˣ, x = -1
state_after: K : Type u_1
R : Type u_2
inst✝² : CommRing K
inst✝¹ : IsDomain K
inst✝ : Fintype Kˣ
this : ∏ x ∈ univ.erase (-1), x = 1
⊢ ∏ x : Kˣ, x = -1

tactic: rw [← insert_erase (mem_univ (-1 : Kˣ)), prod_insert (not_mem_erase _ _), this, mul_one]
state_before: K : Type u_1
R : Type u_2
inst✝² : CommRing K
inst✝¹ : IsDomain K
inst✝ : Fintype Kˣ
this : ∏ x ∈ univ.erase (-1), x = 1
⊢ ∏ x : Kˣ, x = -1
state_after: no goals

tactic: simp
state_before: K : Type u_1
R : Type u_2
inst✝² : CommRing K
inst✝¹ : IsDomain K
inst✝ : Fintype Kˣ
⊢ ∀ (a : Kˣ) (ha : a ∈ univ.erase (-1)), a * (fun x x_1 => x⁻¹) a ha = 1
state_after: no goals

tactic: simp (config := { contextual := true }) [Units.inv_eq_self_iff]
state_before: K : Type u_1
R : Type u_2
inst✝² : CommRing K
inst✝¹ : IsDomain K
inst✝ : Fintype Kˣ
a : Kˣ
⊢ ∀ (ha : a ∈ univ.erase (-1)), a ≠ 1 → (fun x x_1 => x⁻¹) a ha ≠ a
state_after: no goals

tactic: simp [@inv_eq_iff_eq_inv _ _ a]
state_before: K : Type u_1
R : Type u_2
inst✝² : CommRing K
inst✝¹ : IsDomain K
inst✝ : Fintype Kˣ
a : Kˣ
⊢ ∀ (ha : a ∈ univ.erase (-1)), (fun x x_1 => x⁻¹) a ha ∈ univ.erase (-1)
state_after: no goals

tactic: simp
state_before: K : Type u_1
R : Type u_2
inst✝² : CommRing K
inst✝¹ : IsDomain K
inst✝ : Fintype Kˣ
⊢ ∀ (a : Kˣ) (ha : a ∈ univ.erase (-1)), (fun x x_1 => x⁻¹) ((fun x x_1 => x⁻¹) a ha) ⋯ = a
state_after: no goals
Theorem: MeasureTheory.Measure.map_mono
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: simp [hf.aemeasurable, hs, h _]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f✝ f : α → β
h : μ ≤ ν
hf : Measurable f
s : Set β
hs : MeasurableSet s
⊢ (map f μ) s ≤ (map f ν) s
state_after: no goals
Theorem: HomologicalComplex.singleObjCyclesSelfIso_inv_homologyπ
File: Mathlib/Algebra/Homology/SingleHomology.lean

tactic: simp [singleObjCyclesSelfIso, singleObjHomologySelfIso]
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
inst✝¹ : HasZeroObject C
ι : Type u_1
inst✝ : DecidableEq ι
c : ComplexShape ι
j : ι
A : C
⊢ (singleObjCyclesSelfIso c j A).inv ≫ ((single C c j).obj A).homologyπ j = (singleObjHomologySelfIso c j A).inv
state_after: no goals
Theorem: Int.ediv_dvd_ediv
File: Mathlib/Data/Int/Defs.lean

tactic: simp [az]
state_before: a✝ b✝ c✝ d m n a b c : ℤ
az : a = 0
⊢ a * b / a ∣ a * b * c / a
state_after: no goals

tactic: rw [Int.mul_ediv_cancel_left _ az, Int.mul_assoc, Int.mul_ediv_cancel_left _ az]
state_before: a✝ b✝ c✝ d m n a b c : ℤ
az : ¬a = 0
⊢ a * b / a ∣ a * b * c / a
state_after: a✝ b✝ c✝ d m n a b c : ℤ
az : ¬a = 0
⊢ b ∣ b * c

tactic: apply Int.dvd_mul_right
state_before: a✝ b✝ c✝ d m n a b c : ℤ
az : ¬a = 0
⊢ b ∣ b * c
state_after: no goals
Theorem: Surreal.dyadicMap_apply_pow
File: Mathlib/SetTheory/Surreal/Dyadic.lean

tactic: rw [dyadicMap_apply, @Submonoid.log_pow_int_eq_self 2 one_lt_two]
state_before: m : ℤ
n : ℕ
⊢ dyadicMap (IsLocalization.mk' (Localization (Submonoid.powers 2)) m (Submonoid.pow 2 n)) = m • powHalf n
state_after: m : ℤ
n : ℕ
⊢ ↑m * powHalf n = m • powHalf n

tactic: simp only [zsmul_eq_mul]
state_before: m : ℤ
n : ℕ
⊢ ↑m * powHalf n = m • powHalf n
state_after: no goals
Theorem: Equiv.symm_image_subset
File: Mathlib/Logic/Equiv/Set.lean

tactic: rw [image_subset_iff, e.image_eq_preimage]
state_before: α✝ : Sort u
β✝ : Sort v
γ : Sort w
α : Type u_1
β : Type u_2
e : α ≃ β
s : Set α
t : Set β
⊢ ⇑e.symm '' t ⊆ s ↔ t ⊆ ⇑e '' s
state_after: no goals
Theorem: Int.sub_one_lt_iff
File: Mathlib/Data/Int/Defs.lean

tactic: omega
state_before: a b c d m n : ℤ
⊢ m - 1 < n ↔ m ≤ n
state_after: no goals
Theorem: le_one_div_of_neg
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: simpa using le_inv_of_neg ha hb
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
ha : a < 0
hb : b < 0
⊢ a ≤ 1 / b ↔ b ≤ 1 / a
state_after: no goals
Theorem: Finset.product_sdiff_diag
File: Mathlib/Data/Finset/Prod.lean

tactic: rw [← diag_union_offDiag, union_comm, union_sdiff_self,
  sdiff_eq_self_of_disjoint (disjoint_diag_offDiag _).symm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t : Finset α
x : α × α
⊢ s ×ˢ s \ s.diag = s.offDiag
state_after: no goals
Theorem: root_X_pow_sub_C_eq_zero_iff
File: Mathlib/FieldTheory/KummerExtension.lean

tactic: have hn := Nat.pos_iff_ne_zero.mpr (ne_zero_of_irreducible_X_pow_sub_C H)
state_before: K : Type u
inst✝ : Field K
n : ℕ
a : K
H : Irreducible (X ^ n - C a)
⊢ root (X ^ n - C a) = 0 ↔ a = 0
state_after: K : Type u
inst✝ : Field K
n : ℕ
a : K
H : Irreducible (X ^ n - C a)
hn : 0 < n
⊢ root (X ^ n - C a) = 0 ↔ a = 0

tactic: refine ⟨not_imp_not.mp (root_X_pow_sub_C_ne_zero' hn), ?_⟩
state_before: K : Type u
inst✝ : Field K
n : ℕ
a : K
H : Irreducible (X ^ n - C a)
hn : 0 < n
⊢ root (X ^ n - C a) = 0 ↔ a = 0
state_after: K : Type u
inst✝ : Field K
n : ℕ
a : K
H : Irreducible (X ^ n - C a)
hn : 0 < n
⊢ a = 0 → root (X ^ n - C a) = 0

tactic: rintro rfl
state_before: K : Type u
inst✝ : Field K
n : ℕ
a : K
H : Irreducible (X ^ n - C a)
hn : 0 < n
⊢ a = 0 → root (X ^ n - C a) = 0
state_after: K : Type u
inst✝ : Field K
n : ℕ
hn : 0 < n
H : Irreducible (X ^ n - C 0)
⊢ root (X ^ n - C 0) = 0

tactic: have := not_imp_not.mp (fun hn ↦ ne_zero_of_irreducible_X_pow_sub_C' hn H) rfl
state_before: K : Type u
inst✝ : Field K
n : ℕ
hn : 0 < n
H : Irreducible (X ^ n - C 0)
⊢ root (X ^ n - C 0) = 0
state_after: K : Type u
inst✝ : Field K
n : ℕ
hn : 0 < n
H : Irreducible (X ^ n - C 0)
this : n = 1
⊢ root (X ^ n - C 0) = 0

tactic: rw [this, pow_one, map_zero, sub_zero, ← mk_X, mk_self]
state_before: K : Type u
inst✝ : Field K
n : ℕ
hn : 0 < n
H : Irreducible (X ^ n - C 0)
this : n = 1
⊢ root (X ^ n - C 0) = 0
state_after: no goals
Theorem: MeasureTheory.setIntegral_nonneg_ae
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

tactic: rwa [EventuallyLE, ae_restrict_iff' hs]
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝ : MeasurableSpace X
μ : Measure X
f : X → ℝ
s : Set X
hs : MeasurableSet s
hf : ∀ᵐ (x : X) ∂μ, x ∈ s → 0 ≤ f x
⊢ 0 ≤ᶠ[ae (μ.restrict s)] f
state_after: no goals
Theorem: Polynomial.bernoulli_eval_zero
File: Mathlib/NumberTheory/BernoulliPolynomials.lean

tactic: rw [bernoulli, eval_finset_sum, sum_range_succ]
state_before: n : ℕ
⊢ eval 0 (bernoulli n) = _root_.bernoulli n
state_after: n : ℕ
⊢ ∑ x ∈ range n, eval 0 ((monomial (n - x)) (_root_.bernoulli x * ↑(n.choose x))) +
      eval 0 ((monomial (n - n)) (_root_.bernoulli n * ↑(n.choose n))) =
    _root_.bernoulli n

tactic: have : ∑ x ∈ range n, _root_.bernoulli x * n.choose x * 0 ^ (n - x) = 0 := by
  apply sum_eq_zero fun x hx => _
  intros x hx
  simp [tsub_eq_zero_iff_le, mem_range.1 hx]
state_before: n : ℕ
⊢ ∑ x ∈ range n, eval 0 ((monomial (n - x)) (_root_.bernoulli x * ↑(n.choose x))) +
      eval 0 ((monomial (n - n)) (_root_.bernoulli n * ↑(n.choose n))) =
    _root_.bernoulli n
state_after: n : ℕ
this : ∑ x ∈ range n, _root_.bernoulli x * ↑(n.choose x) * 0 ^ (n - x) = 0
⊢ ∑ x ∈ range n, eval 0 ((monomial (n - x)) (_root_.bernoulli x * ↑(n.choose x))) +
      eval 0 ((monomial (n - n)) (_root_.bernoulli n * ↑(n.choose n))) =
    _root_.bernoulli n

tactic: simp [this]
state_before: n : ℕ
this : ∑ x ∈ range n, _root_.bernoulli x * ↑(n.choose x) * 0 ^ (n - x) = 0
⊢ ∑ x ∈ range n, eval 0 ((monomial (n - x)) (_root_.bernoulli x * ↑(n.choose x))) +
      eval 0 ((monomial (n - n)) (_root_.bernoulli n * ↑(n.choose n))) =
    _root_.bernoulli n
state_after: no goals

tactic: apply sum_eq_zero fun x hx => _
state_before: n : ℕ
⊢ ∑ x ∈ range n, _root_.bernoulli x * ↑(n.choose x) * 0 ^ (n - x) = 0
state_after: n : ℕ
⊢ ∀ x ∈ range n, _root_.bernoulli x * ↑(n.choose x) * 0 ^ (n - x) = 0

tactic: intros x hx
state_before: n : ℕ
⊢ ∀ x ∈ range n, _root_.bernoulli x * ↑(n.choose x) * 0 ^ (n - x) = 0
state_after: n x : ℕ
hx : x ∈ range n
⊢ _root_.bernoulli x * ↑(n.choose x) * 0 ^ (n - x) = 0

tactic: simp [tsub_eq_zero_iff_le, mem_range.1 hx]
state_before: n x : ℕ
hx : x ∈ range n
⊢ _root_.bernoulli x * ↑(n.choose x) * 0 ^ (n - x) = 0
state_after: no goals
Theorem: writtenInExtChartAt_chartAt
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: simp_all only [mfld_simps]
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedSpace 𝕜 E
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝⁵ : NormedAddCommGroup E'
inst✝⁴ : NormedSpace 𝕜 E'
inst✝³ : TopologicalSpace H'
inst✝² : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
inst✝¹ : ChartedSpace H M
inst✝ : ChartedSpace H' M'
x : M
y : E
h : y ∈ (extChartAt I x).target
⊢ writtenInExtChartAt I I x (↑(chartAt H x)) y = y
state_after: no goals
Theorem: Stream'.Seq.le_stable
File: Mathlib/Data/Seq/Seq.lean

tactic: cases' s with f al
state_before: α : Type u
β : Type v
γ : Type w
s : Seq α
m n : ℕ
h : m ≤ n
⊢ s.get? m = none → s.get? n = none
state_after: case mk
α : Type u
β : Type v
γ : Type w
m n : ℕ
h : m ≤ n
f : Stream' (Option α)
al : f.IsSeq
⊢ get? ⟨f, al⟩ m = none → get? ⟨f, al⟩ n = none

tactic: induction' h with n _ IH
state_before: case mk
α : Type u
β : Type v
γ : Type w
m n : ℕ
h : m ≤ n
f : Stream' (Option α)
al : f.IsSeq
⊢ get? ⟨f, al⟩ m = none → get? ⟨f, al⟩ n = none
state_after: case mk.refl
α : Type u
β : Type v
γ : Type w
m n : ℕ
f : Stream' (Option α)
al : f.IsSeq
⊢ get? ⟨f, al⟩ m = none → get? ⟨f, al⟩ m = none

case mk.step
α : Type u
β : Type v
γ : Type w
m n✝ : ℕ
f : Stream' (Option α)
al : f.IsSeq
n : ℕ
a✝ : m.le n
IH : get? ⟨f, al⟩ m = none → get? ⟨f, al⟩ n = none
⊢ get? ⟨f, al⟩ m = none → get? ⟨f, al⟩ n.succ = none

tactic: exacts [id, fun h2 => al (IH h2)]
state_before: case mk.refl
α : Type u
β : Type v
γ : Type w
m n : ℕ
f : Stream' (Option α)
al : f.IsSeq
⊢ get? ⟨f, al⟩ m = none → get? ⟨f, al⟩ m = none

case mk.step
α : Type u
β : Type v
γ : Type w
m n✝ : ℕ
f : Stream' (Option α)
al : f.IsSeq
n : ℕ
a✝ : m.le n
IH : get? ⟨f, al⟩ m = none → get? ⟨f, al⟩ n = none
⊢ get? ⟨f, al⟩ m = none → get? ⟨f, al⟩ n.succ = none
state_after: no goals
Theorem: convex_parallelepiped
File: Mathlib/MeasureTheory/Measure/Haar/OfBasis.lean

tactic: rw [parallelepiped_eq_sum_segment]
state_before: ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι'
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : AddCommGroup F
inst✝ : Module ℝ F
v : ι → E
⊢ Convex ℝ (parallelepiped v)
state_after: ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι'
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : AddCommGroup F
inst✝ : Module ℝ F
v : ι → E
⊢ Convex ℝ (∑ i : ι, segment ℝ 0 (v i))

tactic: exact convex_sum _ fun _i _hi => convex_segment _ _
state_before: ι : Type u_1
ι' : Type u_2
E : Type u_3
F : Type u_4
inst✝⁵ : Fintype ι
inst✝⁴ : Fintype ι'
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : AddCommGroup F
inst✝ : Module ℝ F
v : ι → E
⊢ Convex ℝ (∑ i : ι, segment ℝ 0 (v i))
state_after: no goals
Theorem: UniformOnFun.continuous_rng_iff
File: Mathlib/Topology/UniformSpace/UniformConvergenceTopology.lean

tactic: simp only [continuous_iff_continuousAt, ContinuousAt,
  UniformOnFun.tendsto_iff_tendstoUniformlyOn, UniformFun.tendsto_iff_tendstoUniformly,
  tendstoUniformlyOn_iff_tendstoUniformly_comp_coe, @forall_swap X, Function.comp_apply,
  Function.comp_def, restrict_eq, UniformFun.toFun_ofFun]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
s s' : Set α
x : α
p : Filter ι
g : ι → α
inst✝¹ : UniformSpace β
𝔖 : Set (Set α)
X : Type u_5
inst✝ : TopologicalSpace X
f : X → α →ᵤ[𝔖] β
⊢ Continuous f ↔ ∀ s ∈ 𝔖, Continuous (⇑UniformFun.ofFun ∘ s.restrict ∘ ⇑(toFun 𝔖) ∘ f)
state_after: no goals
Theorem: Order.Icc_pred_right_of_not_isMin
File: Mathlib/Order/SuccPred/Basic.lean

tactic: rw [← Ici_inter_Iic, Iic_pred_of_not_isMin ha, Ici_inter_Iio]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : PredOrder α
a b : α
ha : ¬IsMin b
⊢ Icc a (pred b) = Ico a b
state_after: no goals
Theorem: List.prod_map_one
File: Mathlib/Algebra/BigOperators/Group/List.lean

tactic: induction l with
| nil => rfl
| cons hd tl ih => rw [map_cons, prod_one_cons, ih]
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✝ : MulOneClass M
l✝ : List M
a : M
l : List ι
⊢ (map (fun x => 1) l).prod = 1
state_after: no goals

tactic: rfl
state_before: case nil
ι : 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✝ : MulOneClass M
l : List M
a : M
⊢ (map (fun x => 1) []).prod = 1
state_after: no goals

tactic: rw [map_cons, prod_one_cons, ih]
state_before: case cons
ι : 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✝ : MulOneClass M
l : List M
a : M
hd : ι
tl : List ι
ih : (map (fun x => 1) tl).prod = 1
⊢ (map (fun x => 1) (hd :: tl)).prod = 1
state_after: no goals
Theorem: InnerProductGeometry.norm_div_tan_angle_add_of_inner_eq_zero
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

tactic: rw [tan_angle_add_of_inner_eq_zero h]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : x = 0 ∨ y ≠ 0
⊢ ‖y‖ / Real.tan (angle x (x + y)) = ‖x‖
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : x = 0 ∨ y ≠ 0
⊢ ‖y‖ / (‖y‖ / ‖x‖) = ‖x‖

tactic: rcases h0 with (h0 | h0)
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : x = 0 ∨ y ≠ 0
⊢ ‖y‖ / (‖y‖ / ‖x‖) = ‖x‖
state_after: case inl
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : x = 0
⊢ ‖y‖ / (‖y‖ / ‖x‖) = ‖x‖

case inr
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : y ≠ 0
⊢ ‖y‖ / (‖y‖ / ‖x‖) = ‖x‖

tactic: simp [h0]
state_before: case inl
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : x = 0
⊢ ‖y‖ / (‖y‖ / ‖x‖) = ‖x‖
state_after: no goals

tactic: rw [div_div_eq_mul_div, mul_comm, div_eq_mul_inv, mul_inv_cancel_right₀ (norm_ne_zero_iff.2 h0)]
state_before: case inr
V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : ⟪x, y⟫_ℝ = 0
h0 : y ≠ 0
⊢ ‖y‖ / (‖y‖ / ‖x‖) = ‖x‖
state_after: no goals
Theorem: nhdsSet_singleton
File: Mathlib/Topology/NhdsSet.lean

tactic: simp [nhdsSet]
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
f : Filter X
s t s₁ s₂ t₁ t₂ : Set X
x : X
⊢ 𝓝ˢ {x} = 𝓝 x
state_after: no goals
Theorem: HomologicalComplex.biprod_inl_snd_f
File: Mathlib/Algebra/Homology/HomologicalComplexBiprod.lean

tactic: rw [← comp_f, biprod.inl_snd, zero_f]
state_before: C : Type u_1
ι : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Preadditive C
c : ComplexShape ι
K L : HomologicalComplex C c
inst✝ : ∀ (i : ι), HasBinaryBiproduct (K.X i) (L.X i)
i : ι
⊢ biprod.inl.f i ≫ biprod.snd.f i = 0
state_after: no goals
Theorem: ModelWithCorners.target_eq
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rw [← image_univ, ← I.source_eq]
state_before: 𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
⊢ I.target = range ↑I
state_after: 𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
⊢ I.target = ↑I '' I.source

tactic: exact I.image_source_eq_target.symm
state_before: 𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
⊢ I.target = ↑I '' I.source
state_after: no goals