1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: multiplicity.Finset.prod
File: Mathlib/RingTheory/Multiplicity.lean

tactic: induction' s using Finset.induction with a s has ih h
state_before: α : Type u_1
β✝ : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
β : Type u_3
p : α
hp : Prime p
s : Finset β
f : β → α
⊢ multiplicity p (∏ x ∈ s, f x) = ∑ x ∈ s, multiplicity p (f x)
state_after: case empty
α : Type u_1
β✝ : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
β : Type u_3
p : α
hp : Prime p
f : β → α
⊢ multiplicity p (∏ x ∈ ∅, f x) = ∑ x ∈ ∅, multiplicity p (f x)

case insert
α : Type u_1
β✝ : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
β : Type u_3
p : α
hp : Prime p
f : β → α
a : β
s : Finset β
has : a ∉ s
ih : multiplicity p (∏ x ∈ s, f x) = ∑ x ∈ s, multiplicity p (f x)
⊢ multiplicity p (∏ x ∈ insert a s, f x) = ∑ x ∈ insert a s, multiplicity p (f x)

tactic: simp only [Finset.sum_empty, Finset.prod_empty]
state_before: case empty
α : Type u_1
β✝ : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
β : Type u_3
p : α
hp : Prime p
f : β → α
⊢ multiplicity p (∏ x ∈ ∅, f x) = ∑ x ∈ ∅, multiplicity p (f x)
state_after: case empty
α : Type u_1
β✝ : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
β : Type u_3
p : α
hp : Prime p
f : β → α
⊢ multiplicity p 1 = 0

tactic: convert one_right hp.not_unit
state_before: case empty
α : Type u_1
β✝ : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
β : Type u_3
p : α
hp : Prime p
f : β → α
⊢ multiplicity p 1 = 0
state_after: no goals

tactic: simp [has, ← ih]
state_before: case insert
α : Type u_1
β✝ : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
β : Type u_3
p : α
hp : Prime p
f : β → α
a : β
s : Finset β
has : a ∉ s
ih : multiplicity p (∏ x ∈ s, f x) = ∑ x ∈ s, multiplicity p (f x)
⊢ multiplicity p (∏ x ∈ insert a s, f x) = ∑ x ∈ insert a s, multiplicity p (f x)
state_after: case insert
α : Type u_1
β✝ : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
β : Type u_3
p : α
hp : Prime p
f : β → α
a : β
s : Finset β
has : a ∉ s
ih : multiplicity p (∏ x ∈ s, f x) = ∑ x ∈ s, multiplicity p (f x)
⊢ multiplicity p (f a * ∏ x ∈ s, f x) = multiplicity p (f a) + multiplicity p (∏ x ∈ s, f x)

tactic: convert multiplicity.mul hp
state_before: case insert
α : Type u_1
β✝ : Type u_2
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
β : Type u_3
p : α
hp : Prime p
f : β → α
a : β
s : Finset β
has : a ∉ s
ih : multiplicity p (∏ x ∈ s, f x) = ∑ x ∈ s, multiplicity p (f x)
⊢ multiplicity p (f a * ∏ x ∈ s, f x) = multiplicity p (f a) + multiplicity p (∏ x ∈ s, f x)
state_after: no goals
Theorem: Polynomial.eval₂_mul_C'
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: rw [eval₂_mul_noncomm, eval₂_C]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p q r : R[X]
inst✝¹ : Semiring S
f : R →+* S
x : S
inst✝ : Semiring T
h : Commute (f a) x
⊢ eval₂ f x (p * C a) = eval₂ f x p * f a
state_after: case hf
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p q r : R[X]
inst✝¹ : Semiring S
f : R →+* S
x : S
inst✝ : Semiring T
h : Commute (f a) x
⊢ ∀ (k : ℕ), Commute (f ((C a).coeff k)) x

tactic: intro k
state_before: case hf
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p q r : R[X]
inst✝¹ : Semiring S
f : R →+* S
x : S
inst✝ : Semiring T
h : Commute (f a) x
⊢ ∀ (k : ℕ), Commute (f ((C a).coeff k)) x
state_after: case hf
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p q r : R[X]
inst✝¹ : Semiring S
f : R →+* S
x : S
inst✝ : Semiring T
h : Commute (f a) x
k : ℕ
⊢ Commute (f ((C a).coeff k)) x

tactic: by_cases hk : k = 0
state_before: case hf
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p q r : R[X]
inst✝¹ : Semiring S
f : R →+* S
x : S
inst✝ : Semiring T
h : Commute (f a) x
k : ℕ
⊢ Commute (f ((C a).coeff k)) x
state_after: case pos
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p q r : R[X]
inst✝¹ : Semiring S
f : R →+* S
x : S
inst✝ : Semiring T
h : Commute (f a) x
k : ℕ
hk : k = 0
⊢ Commute (f ((C a).coeff k)) x

case neg
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p q r : R[X]
inst✝¹ : Semiring S
f : R →+* S
x : S
inst✝ : Semiring T
h : Commute (f a) x
k : ℕ
hk : ¬k = 0
⊢ Commute (f ((C a).coeff k)) x

tactic: simp only [hk, h, coeff_C_zero, coeff_C_ne_zero]
state_before: case pos
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p q r : R[X]
inst✝¹ : Semiring S
f : R →+* S
x : S
inst✝ : Semiring T
h : Commute (f a) x
k : ℕ
hk : k = 0
⊢ Commute (f ((C a).coeff k)) x
state_after: no goals

tactic: simp only [coeff_C_ne_zero hk, RingHom.map_zero, Commute.zero_left]
state_before: case neg
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝² : Semiring R
p q r : R[X]
inst✝¹ : Semiring S
f : R →+* S
x : S
inst✝ : Semiring T
h : Commute (f a) x
k : ℕ
hk : ¬k = 0
⊢ Commute (f ((C a).coeff k)) x
state_after: no goals
Theorem: spectrum.sub_singleton_eq
File: Mathlib/Algebra/Algebra/Spectrum.lean

tactic: simpa only [neg_sub, neg_eq] using congr_arg Neg.neg (singleton_sub_eq a r)
state_before: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
a : A
r : R
⊢ σ a - {r} = σ (a - ↑ₐ r)
state_after: no goals
Theorem: MonoidHom.closure_preimage_le
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: rw [SetLike.mem_coe, mem_comap]
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
N : Type u_5
P : Type u_6
inst✝¹ : Group N
inst✝ : Group P
K : Subgroup G
f : G →* N
s : Set N
x : G
hx : x ∈ ⇑f ⁻¹' s
⊢ x ∈ ↑(comap f (closure s))
state_after: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
N : Type u_5
P : Type u_6
inst✝¹ : Group N
inst✝ : Group P
K : Subgroup G
f : G →* N
s : Set N
x : G
hx : x ∈ ⇑f ⁻¹' s
⊢ f x ∈ closure s

tactic: exact subset_closure hx
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
N : Type u_5
P : Type u_6
inst✝¹ : Group N
inst✝ : Group P
K : Subgroup G
f : G →* N
s : Set N
x : G
hx : x ∈ ⇑f ⁻¹' s
⊢ f x ∈ closure s
state_after: no goals
Theorem: List.Ico.length
File: Mathlib/Data/List/Intervals.lean

tactic: dsimp [Ico]
state_before: n m : ℕ
⊢ (Ico n m).length = m - n
state_after: n m : ℕ
⊢ (range' n (m - n)).length = m - n

tactic: simp [length_range', autoParam]
state_before: n m : ℕ
⊢ (range' n (m - n)).length = m - n
state_after: no goals
Theorem: Finsupp.support_update_ne_zero
File: Mathlib/Data/Finsupp/Defs.lean

tactic: classical
simp only [update, h, ite_false, mem_support_iff, ne_eq]
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 α
h : b ≠ 0
⊢ (f.update a b).support = insert a f.support
state_after: no goals

tactic: simp only [update, h, ite_false, mem_support_iff, ne_eq]
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 α
h : b ≠ 0
⊢ (f.update a b).support = insert a f.support
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 α
h : b ≠ 0
⊢ insert a f.support = insert a f.support

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 α
h : b ≠ 0
⊢ insert a f.support = insert a f.support
state_after: case h.e_3.h.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 α
h : b ≠ 0
⊢ Classical.decEq α = inst✝

tactic: apply Subsingleton.elim
state_before: case h.e_3.h.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 α
h : b ≠ 0
⊢ Classical.decEq α = inst✝
state_after: no goals
Theorem: Real.sin_pos_of_pos_of_le_one
File: Mathlib/Data/Complex/Exponential.lean

tactic: gcongr
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ |x| ^ 4 * (5 / 96) + x ^ 3 / 6 ≤ x * (5 / 96) + x / 6
state_after: case h₁.h
x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ |x| ^ 4 ≤ x

case h₂.hab
x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ x ^ 3 ≤ x

tactic: calc
  |x| ^ 4 ≤ |x| ^ 1 :=
    pow_le_pow_of_le_one (abs_nonneg _)
      (by rwa [_root_.abs_of_nonneg (le_of_lt hx0)]) (by decide)
  _ = x := by simp [_root_.abs_of_nonneg (le_of_lt hx0)]
state_before: case h₁.h
x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ |x| ^ 4 ≤ x
state_after: no goals

tactic: rwa [_root_.abs_of_nonneg (le_of_lt hx0)]
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ |x| ≤ 1
state_after: no goals

tactic: decide
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ 1 ≤ 4
state_after: no goals

tactic: simp [_root_.abs_of_nonneg (le_of_lt hx0)]
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ |x| ^ 1 = x
state_after: no goals

tactic: calc
  x ^ 3 ≤ x ^ 1 := pow_le_pow_of_le_one (le_of_lt hx0) hx (by decide)
  _ = x := pow_one _
state_before: case h₂.hab
x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ x ^ 3 ≤ x
state_after: no goals

tactic: decide
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ 1 ≤ 3
state_after: no goals

tactic: linarith
state_before: x : ℝ
hx0 : 0 < x
hx : x ≤ 1
⊢ x * (5 / 96) + x / 6 < x
state_after: no goals
Theorem: NormedSpace.eq_iff_forall_dual_eq
File: Mathlib/Analysis/NormedSpace/Dual.lean

tactic: rw [← sub_eq_zero, eq_zero_iff_forall_dual_eq_zero 𝕜 (x - y)]
state_before: 𝕜 : Type v
inst✝² : RCLike 𝕜
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x y : E
⊢ x = y ↔ ∀ (g : Dual 𝕜 E), g x = g y
state_after: 𝕜 : Type v
inst✝² : RCLike 𝕜
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x y : E
⊢ (∀ (g : Dual 𝕜 E), g (x - y) = 0) ↔ ∀ (g : Dual 𝕜 E), g x = g y

tactic: simp [sub_eq_zero]
state_before: 𝕜 : Type v
inst✝² : RCLike 𝕜
E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
x y : E
⊢ (∀ (g : Dual 𝕜 E), g (x - y) = 0) ↔ ∀ (g : Dual 𝕜 E), g x = g y
state_after: no goals
Theorem: LinearMap.comap_leq_ker_subToSupQuotient
File: Mathlib/LinearAlgebra/Isomorphisms.lean

tactic: rw [LinearMap.ker_comp, Submodule.inclusion, comap_codRestrict, ker_mkQ, map_comap_subtype]
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
M₃ : Type u_4
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup M₃
inst✝² : Module R M
inst✝¹ : Module R M₂
inst✝ : Module R M₃
f : M →ₗ[R] M₂
p p' : Submodule R M
⊢ comap p.subtype (p ⊓ p') ≤ ker (subToSupQuotient p p')
state_after: R : Type u_1
M : Type u_2
M₂ : Type u_3
M₃ : Type u_4
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup M₃
inst✝² : Module R M
inst✝¹ : Module R M₂
inst✝ : Module R M₃
f : M →ₗ[R] M₂
p p' : Submodule R M
⊢ comap p.subtype (p ⊓ p') ≤ comap p.subtype ((p ⊔ p') ⊓ p')

tactic: exact comap_mono (inf_le_inf_right _ le_sup_left)
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
M₃ : Type u_4
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup M₃
inst✝² : Module R M
inst✝¹ : Module R M₂
inst✝ : Module R M₃
f : M →ₗ[R] M₂
p p' : Submodule R M
⊢ comap p.subtype (p ⊓ p') ≤ comap p.subtype ((p ⊔ p') ⊓ p')
state_after: no goals
Theorem: continuous_boolIndicator_iff_isClopen
File: Mathlib/Topology/Clopen.lean

tactic: rw [continuous_bool_rng true, preimage_boolIndicator_true]
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t U : Set X
⊢ Continuous U.boolIndicator ↔ IsClopen U
state_after: no goals
Theorem: Ordinal.cof_ord_le
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: simpa using cof_le_card c.ord
state_before: α : Type u_1
r : α → α → Prop
c : Cardinal.{u_2}
⊢ c.ord.cof ≤ c
state_after: no goals
Theorem: CategoryTheory.ShortComplex.rightHomology_ext
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

tactic: simpa only [rightHomology_ext_iff]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝ : S.HasRightHomology
A : C
f₁ f₂ : A ⟶ S.rightHomology
h : f₁ ≫ S.rightHomologyι = f₂ ≫ S.rightHomologyι
⊢ f₁ = f₂
state_after: no goals
Theorem: CategoryTheory.tensor_μ_natural_right
File: Mathlib/CategoryTheory/Monoidal/Braided/Basic.lean

tactic: convert tensor_μ_natural C (𝟙 Z₁) (𝟙 Z₂) f₁ f₂ using 1 <;> simp
state_before: C : Type u₁
inst✝⁸ : Category.{v₁, u₁} C
inst✝⁷ : MonoidalCategory C
inst✝⁶ : BraidedCategory C
D : Type u₂
inst✝⁵ : Category.{v₂, u₂} D
inst✝⁴ : MonoidalCategory D
inst✝³ : BraidedCategory D
E : Type u₃
inst✝² : Category.{v₃, u₃} E
inst✝¹ : MonoidalCategory E
inst✝ : BraidedCategory E
Z₁ Z₂ X₁ X₂ Y₁ Y₂ : C
f₁ : X₁ ⟶ Y₁
f₂ : X₂ ⟶ Y₂
⊢ (Z₁ ⊗ Z₂) ◁ (f₁ ⊗ f₂) ≫ tensor_μ C (Z₁, Z₂) (Y₁, Y₂) = tensor_μ C (Z₁, Z₂) (X₁, X₂) ≫ (Z₁ ◁ f₁ ⊗ Z₂ ◁ f₂)
state_after: no goals
Theorem: Finset.piecewise_eq_of_not_mem
File: Mathlib/Data/Finset/Piecewise.lean

tactic: simp [piecewise, hi]
state_before: ι : Type u_1
π : ι → Sort u_2
s : Finset ι
f g : (i : ι) → π i
inst✝ : (j : ι) → Decidable (j ∈ s)
i : ι
hi : i ∉ s
⊢ s.piecewise f g i = g i
state_after: no goals
Theorem: biSup_finsetSigma
File: Mathlib/Data/Finset/Sigma.lean

tactic: simp_rw [← Finset.iSup_coe, Finset.coe_sigma, biSup_sigma]
state_before: ι : Type u_1
α : ι → Type u_2
β : Type u_3
s✝ s₁ s₂ : Finset ι
t✝ t₁ t₂ : (i : ι) → Finset (α i)
f✝ : (i : ι) × α i → β
inst✝ : CompleteLattice β
s : Finset ι
t : (i : ι) → Finset (α i)
f : Sigma α → β
⊢ ⨆ ij ∈ s.sigma t, f ij = ⨆ i ∈ s, ⨆ j ∈ t i, f ⟨i, j⟩
state_after: no goals
Theorem: AlgebraicGeometry.RingedSpace.isUnit_res_basicOpen
File: Mathlib/Geometry/RingedSpace/Basic.lean

tactic: apply isUnit_of_isUnit_germ
state_before: X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj { unop := U })
⊢ IsUnit ((X.presheaf.map (homOfLE ⋯).op) f)
state_after: case h
X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj { unop := U })
⊢ ∀ (x : ↥(X.basicOpen f)), IsUnit ((X.presheaf.germ x) ((X.presheaf.map (homOfLE ⋯).op) f))

tactic: rintro ⟨_, ⟨x, (hx : IsUnit _), rfl⟩⟩
state_before: case h
X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj { unop := U })
⊢ ∀ (x : ↥(X.basicOpen f)), IsUnit ((X.presheaf.germ x) ((X.presheaf.map (homOfLE ⋯).op) f))
state_after: case h.mk.intro.intro
X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj { unop := U })
x : ↥U
hx : IsUnit ((X.presheaf.germ x) f)
⊢ IsUnit ((X.presheaf.germ ⟨↑x, ⋯⟩) ((X.presheaf.map (homOfLE ⋯).op) f))

tactic: convert hx
state_before: case h.mk.intro.intro
X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj { unop := U })
x : ↥U
hx : IsUnit ((X.presheaf.germ x) f)
⊢ IsUnit ((X.presheaf.germ ⟨↑x, ⋯⟩) ((X.presheaf.map (homOfLE ⋯).op) f))
state_after: case h.e'_3
X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj { unop := U })
x : ↥U
hx : IsUnit ((X.presheaf.germ x) f)
⊢ (X.presheaf.germ ⟨↑x, ⋯⟩) ((X.presheaf.map (homOfLE ⋯).op) f) = (X.presheaf.germ x) f

tactic: convert X.presheaf.germ_res_apply _ _ _
state_before: case h.e'_3
X : RingedSpace
U : Opens ↑↑X.toPresheafedSpace
f : ↑(X.presheaf.obj { unop := U })
x : ↥U
hx : IsUnit ((X.presheaf.germ x) f)
⊢ (X.presheaf.germ ⟨↑x, ⋯⟩) ((X.presheaf.map (homOfLE ⋯).op) f) = (X.presheaf.germ x) f
state_after: no goals
Theorem: Complex.cos_antiperiodic
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simp [cos_add]
state_before: ⊢ Function.Antiperiodic cos ↑π
state_after: no goals
Theorem: CategoryTheory.zero_not_simple
File: Mathlib/CategoryTheory/Simple.lean

tactic: aesop_cat
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
inst✝¹ : HasZeroObject C
inst✝ : Simple 0
⊢ 0 ≫ 0 = 𝟙 0 ∧ 0 ≫ 0 = 𝟙 0
state_after: no goals
Theorem: le_iff_exists_mul
File: Mathlib/Algebra/Order/Monoid/Canonical/Defs.lean

tactic: rintro ⟨c, rfl⟩
state_before: α : Type u
inst✝ : CanonicallyOrderedCommMonoid α
a b c d : α
⊢ (∃ c, b = a * c) → a ≤ b
state_after: case intro
α : Type u
inst✝ : CanonicallyOrderedCommMonoid α
a c✝ d c : α
⊢ a ≤ a * c

tactic: exact le_self_mul
state_before: case intro
α : Type u
inst✝ : CanonicallyOrderedCommMonoid α
a c✝ d c : α
⊢ a ≤ a * c
state_after: no goals
Theorem: nhdsWithin_Ici_eq'
File: Mathlib/Topology/Order/Basic.lean

tactic: simp only [nhdsWithin_Ici_eq'', biInf_inf ha, inf_principal, Iio_inter_Ici]
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : TopologicalSpace α
inst✝¹ : Preorder α
inst✝ : OrderTopology α
a : α
ha : ∃ u, a < u
⊢ 𝓝[≥] a = ⨅ u, ⨅ (_ : a < u), 𝓟 (Ico a u)
state_after: no goals
Theorem: ModelWithCorners.boundary_eq_complement_interior
File: Mathlib/Geometry/Manifold/InteriorBoundary.lean

tactic: apply (compl_unique ?_ I.interior_union_boundary_eq_univ).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
M : Type u_4
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
⊢ I.boundary M = (I.interior M)ᶜ
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
M : Type u_4
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
⊢ I.interior M ⊓ I.boundary M = ⊥

tactic: exact disjoint_iff_inter_eq_empty.mp (I.disjoint_interior_boundary)
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
M : Type u_4
inst✝¹ : TopologicalSpace M
inst✝ : ChartedSpace H M
⊢ I.interior M ⊓ I.boundary M = ⊥
state_after: no goals
Theorem: AffineMap.right_vsub_lineMap
File: Mathlib/LinearAlgebra/AffineSpace/AffineMap.lean

tactic: rw [← lineMap_apply_one_sub, left_vsub_lineMap]
state_before: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
p₀ p₁ : P1
c : k
⊢ p₁ -ᵥ (lineMap p₀ p₁) c = (1 - c) • (p₁ -ᵥ p₀)
state_after: no goals
Theorem: Multiset.mem_Iic
File: Mathlib/Order/Interval/Multiset.lean

tactic: rw [Iic, ← Finset.mem_def, Finset.mem_Iic]
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrderBot α
b x : α
⊢ x ∈ Iic b ↔ x ≤ b
state_after: no goals
Theorem: Real.Lp_add_le_of_nonneg
File: Mathlib/Analysis/MeanInequalities.lean

tactic: convert Lp_add_le s f g hp using 2 <;> [skip;congr 1;congr 1] <;> apply sum_congr rfl <;>
    intro i hi <;>
  simp only [abs_of_nonneg, hf i hi, hg i hi, add_nonneg]
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hp : 1 ≤ p
hf : ∀ i ∈ s, 0 ≤ f i
hg : ∀ i ∈ s, 0 ≤ g i
⊢ (∑ i ∈ s, (f i + g i) ^ p) ^ (1 / p) ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)
state_after: no goals
Theorem: Grp.SurjectiveOfEpiAuxs.τ_symm_apply_infinity
File: Mathlib/Algebra/Category/Grp/EpiMono.lean

tactic: rw [tau, Equiv.symm_swap, Equiv.swap_apply_right]
state_before: A B : Grp
f : A ⟶ B
⊢ (Equiv.symm τ) ∞ = fromCoset ⟨↑(MonoidHom.range f), ⋯⟩
state_after: no goals
Theorem: Real.rpow_add_of_nonneg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rcases hy.eq_or_lt with (rfl | hy)
state_before: x✝ y✝ z✝ w x y z : ℝ
hx : 0 ≤ x
hy : 0 ≤ y
hz : 0 ≤ z
⊢ x ^ (y + z) = x ^ y * x ^ z
state_after: case inl
x✝ y z✝ w x z : ℝ
hx : 0 ≤ x
hz : 0 ≤ z
hy : 0 ≤ 0
⊢ x ^ (0 + z) = x ^ 0 * x ^ z

case inr
x✝ y✝ z✝ w x y z : ℝ
hx : 0 ≤ x
hy✝ : 0 ≤ y
hz : 0 ≤ z
hy : 0 < y
⊢ x ^ (y + z) = x ^ y * x ^ z

tactic: exact rpow_add' hx (ne_of_gt <| add_pos_of_pos_of_nonneg hy hz)
state_before: case inr
x✝ y✝ z✝ w x y z : ℝ
hx : 0 ≤ x
hy✝ : 0 ≤ y
hz : 0 ≤ z
hy : 0 < y
⊢ x ^ (y + z) = x ^ y * x ^ z
state_after: no goals

tactic: rw [zero_add, rpow_zero, one_mul]
state_before: case inl
x✝ y z✝ w x z : ℝ
hx : 0 ≤ x
hz : 0 ≤ z
hy : 0 ≤ 0
⊢ x ^ (0 + z) = x ^ 0 * x ^ z
state_after: no goals
Theorem: continuous_sSup_dom
File: Mathlib/Topology/Order.lean

tactic: simp only [continuous_iff_le_induced, sSup_le_iff]
state_before: α : Type u
β : Type v
γ : Type u_1
f : α → β
ι : Sort u_2
T : Set (TopologicalSpace α)
t₂ : TopologicalSpace β
⊢ Continuous f ↔ ∀ t ∈ T, Continuous f
state_after: no goals
Theorem: Polynomial.evalEval_X
File: Mathlib/Algebra/Polynomial/Bivariate.lean

tactic: rw [evalEval, eval_X, eval_C]
state_before: R : Type u_1
S : Type u_2
inst✝ : Semiring R
x y : R
⊢ evalEval x y Y = y
state_after: no goals
Theorem: Fin.prod_univ_def
File: Mathlib/Algebra/BigOperators/Fin.lean

tactic: rw [← List.ofFn_eq_map, prod_ofFn]
state_before: α : Type u_1
β : Type u_2
inst✝ : CommMonoid β
n : ℕ
f : Fin n → β
⊢ ∏ i : Fin n, f i = (List.map f (List.finRange n)).prod
state_after: no goals
Theorem: Finset.prod_val
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [Finset.prod, Multiset.map_id]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : CommMonoid α
s : Finset α
⊢ s.val.prod = s.prod id
state_after: no goals
Theorem: ClosedEmbedding.LindelofSpace
File: Mathlib/Topology/Compactness/Lindelof.lean

tactic: rw [hf.toInducing.isLindelof_iff, image_univ]
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
h : LindelofSpace Y
f : X → Y
hf : ClosedEmbedding f
⊢ IsLindelof univ
state_after: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
h : LindelofSpace Y
f : X → Y
hf : ClosedEmbedding f
⊢ IsLindelof (range f)

tactic: exact hf.isClosed_range.isLindelof
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
h : LindelofSpace Y
f : X → Y
hf : ClosedEmbedding f
⊢ IsLindelof (range f)
state_after: no goals
Theorem: InnerProductGeometry.inner_eq_neg_mul_norm_of_angle_eq_pi
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Basic.lean

tactic: simp [← cos_angle_mul_norm_mul_norm, h]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x✝ y✝ x y : V
h : angle x y = π
⊢ ⟪x, y⟫_ℝ = -(‖x‖ * ‖y‖)
state_after: no goals