1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Nat.prod_factorial_dvd_factorial_sum
File: Mathlib/Data/Nat/Factorial/BigOperators.lean

tactic: induction' s using Finset.cons_induction_on with a s has ih
state_before: α : Type u_1
s : Finset α
f : α → ℕ
⊢ ∏ i ∈ s, (f i)! ∣ (∑ i ∈ s, f i)!
state_after: case h₁
α : Type u_1
s : Finset α
f : α → ℕ
⊢ ∏ i ∈ ∅, (f i)! ∣ (∑ i ∈ ∅, f i)!

case h₂
α : Type u_1
s✝ : Finset α
f : α → ℕ
a : α
s : Finset α
has : a ∉ s
ih : ∏ i ∈ s, (f i)! ∣ (∑ i ∈ s, f i)!
⊢ ∏ i ∈ cons a s has, (f i)! ∣ (∑ i ∈ cons a s has, f i)!

tactic: simp
state_before: case h₁
α : Type u_1
s : Finset α
f : α → ℕ
⊢ ∏ i ∈ ∅, (f i)! ∣ (∑ i ∈ ∅, f i)!
state_after: no goals

tactic: rw [prod_cons, Finset.sum_cons]
state_before: case h₂
α : Type u_1
s✝ : Finset α
f : α → ℕ
a : α
s : Finset α
has : a ∉ s
ih : ∏ i ∈ s, (f i)! ∣ (∑ i ∈ s, f i)!
⊢ ∏ i ∈ cons a s has, (f i)! ∣ (∑ i ∈ cons a s has, f i)!
state_after: case h₂
α : Type u_1
s✝ : Finset α
f : α → ℕ
a : α
s : Finset α
has : a ∉ s
ih : ∏ i ∈ s, (f i)! ∣ (∑ i ∈ s, f i)!
⊢ (f a)! * ∏ x ∈ s, (f x)! ∣ (f a + ∑ x ∈ s, f x)!

tactic: exact (mul_dvd_mul_left _ ih).trans (Nat.factorial_mul_factorial_dvd_factorial_add _ _)
state_before: case h₂
α : Type u_1
s✝ : Finset α
f : α → ℕ
a : α
s : Finset α
has : a ∉ s
ih : ∏ i ∈ s, (f i)! ∣ (∑ i ∈ s, f i)!
⊢ (f a)! * ∏ x ∈ s, (f x)! ∣ (f a + ∑ x ∈ s, f x)!
state_after: no goals
Theorem: continuous_le_dom
File: Mathlib/Topology/Order.lean

tactic: rw [continuous_iff_le_induced] at h₂ ⊢
state_before: α : Type u
β : Type v
γ : Type u_1
f : α → β
ι : Sort u_2
t₁ t₂ : TopologicalSpace α
t₃ : TopologicalSpace β
h₁ : t₂ ≤ t₁
h₂ : Continuous f
⊢ Continuous f
state_after: α : Type u
β : Type v
γ : Type u_1
f : α → β
ι : Sort u_2
t₁ t₂ : TopologicalSpace α
t₃ : TopologicalSpace β
h₁ : t₂ ≤ t₁
h₂ : t₁ ≤ induced f t₃
⊢ t₂ ≤ induced f t₃

tactic: exact le_trans h₁ h₂
state_before: α : Type u
β : Type v
γ : Type u_1
f : α → β
ι : Sort u_2
t₁ t₂ : TopologicalSpace α
t₃ : TopologicalSpace β
h₁ : t₂ ≤ t₁
h₂ : t₁ ≤ induced f t₃
⊢ t₂ ≤ induced f t₃
state_after: no goals
Theorem: CategoryTheory.Functor.map_comp_assoc
File: Mathlib/CategoryTheory/Functor/Basic.lean

tactic: rw [F.map_comp, Category.assoc]
state_before: C : Type u₁
inst✝¹ : Category.{u_1, u₁} C
D : Type u₂
inst✝ : Category.{u_2, u₂} D
F : C ⥤ D
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
W : D
h : F.obj Z ⟶ W
⊢ F.map (f ≫ g) ≫ h = F.map f ≫ F.map g ≫ h
state_after: no goals
Theorem: Multiset.powersetCard_mono
File: Mathlib/Data/Multiset/Powerset.lean

tactic: simp only [powersetCard_coe, coe_le]
state_before: α : Type u_1
n : ℕ
s t : Multiset α
h✝ : s ≤ t
l₁ l₂ : List α
h : l₁ <+ l₂
⊢ powersetCard n ↑l₁ ≤ powersetCard n ↑l₂
state_after: α : Type u_1
n : ℕ
s t : Multiset α
h✝ : s ≤ t
l₁ l₂ : List α
h : l₁ <+ l₂
⊢ List.map ofList (sublistsLen n l₁) <+~ List.map ofList (sublistsLen n l₂)

tactic: exact ((sublistsLen_sublist_of_sublist _ h).map _).subperm
state_before: α : Type u_1
n : ℕ
s t : Multiset α
h✝ : s ≤ t
l₁ l₂ : List α
h : l₁ <+ l₂
⊢ List.map ofList (sublistsLen n l₁) <+~ List.map ofList (sublistsLen n l₂)
state_after: no goals
Theorem: Set.mulIndicator_inter_mulSupport
File: Mathlib/Algebra/Group/Indicator.lean

tactic: rw [← mulIndicator_mulIndicator, mulIndicator_mulSupport]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
inst✝¹ : One M
inst✝ : One N
s✝ t : Set α
f✝ g : α → M
a : α
s : Set α
f : α → M
⊢ (s ∩ mulSupport f).mulIndicator f = s.mulIndicator f
state_after: no goals
Theorem: Pi.le_toLex_update_self_iff
File: Mathlib/Order/PiLex.lean

tactic: simp_rw [le_iff_lt_or_eq, lt_toLex_update_self_iff, toLex_inj, eq_update_self_iff]
state_before: ι : Type u_1
β : ι → Type u_2
r : ι → ι → Prop
s : {i : ι} → β i → β i → Prop
inst✝² : LinearOrder ι
inst✝¹ : IsWellOrder ι fun x x_1 => x < x_1
inst✝ : (i : ι) → PartialOrder (β i)
x y : (i : ι) → β i
i : ι
a : β i
⊢ toLex x ≤ toLex (update x i a) ↔ x i ≤ a
state_after: no goals
Theorem: AffineMap.homothety_mul_apply
File: Mathlib/LinearAlgebra/AffineSpace/AffineMap.lean

tactic: simp only [homothety_apply, mul_smul, vadd_vsub]
state_before: R : Type u_1
k : Type u_2
V1 : Type u_3
P1 : Type u_4
V2 : Type u_5
P2 : Type u_6
V3 : Type u_7
P3 : Type u_8
inst✝⁵ : CommRing k
inst✝⁴ : AddCommGroup V1
inst✝³ : AffineSpace V1 P1
inst✝² : AddCommGroup V2
inst✝¹ : Module k V1
inst✝ : Module k V2
c : P1
r₁ r₂ : k
p : P1
⊢ (homothety c (r₁ * r₂)) p = (homothety c r₁) ((homothety c r₂) p)
state_after: no goals
Theorem: ascPochhammer_eval_one
File: Mathlib/RingTheory/Polynomial/Pochhammer.lean

tactic: rw_mod_cast [ascPochhammer_nat_eq_ascFactorial, Nat.one_ascFactorial]
state_before: S✝ : Type u_1
inst✝¹ : Semiring S✝
r n✝ : ℕ
S : Type u_2
inst✝ : Semiring S
n : ℕ
⊢ eval 1 (ascPochhammer S n) = ↑n !
state_after: no goals
Theorem: EuclideanGeometry.tan_oangle_right_mul_dist_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: have hs : (∡ p₂ p₃ p₁).sign = 1 := by rw [oangle_rotate_sign, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
⊢ (∡ p₂ p₃ p₁).tan * dist p₃ p₂ = dist p₁ p₂
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
hs : (∡ p₂ p₃ p₁).sign = 1
⊢ (∡ p₂ p₃ p₁).tan * dist p₃ p₂ = dist p₁ p₂

tactic: rw [oangle_eq_angle_of_sign_eq_one hs, Real.Angle.tan_coe,
  tan_angle_mul_dist_of_angle_eq_pi_div_two (angle_eq_pi_div_two_of_oangle_eq_pi_div_two h)
    (Or.inr (right_ne_of_oangle_eq_pi_div_two h))]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
hs : (∡ p₂ p₃ p₁).sign = 1
⊢ (∡ p₂ p₃ p₁).tan * dist p₃ p₂ = dist p₁ p₂
state_after: no goals

tactic: rw [oangle_rotate_sign, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
⊢ (∡ p₂ p₃ p₁).sign = 1
state_after: no goals
Theorem: ENNReal.sub_iInf
File: Mathlib/Data/ENNReal/Real.lean

tactic: refine eq_of_forall_ge_iff fun c => ?_
state_before: ι : Sort u_1
f g : ι → ℝ≥0∞
a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ a - ⨅ i, f i = ⨆ i, a - f i
state_after: ι : Sort u_1
f g : ι → ℝ≥0∞
a b c✝ d : ℝ≥0∞
r p q : ℝ≥0
c : ℝ≥0∞
⊢ a - ⨅ i, f i ≤ c ↔ ⨆ i, a - f i ≤ c

tactic: rw [tsub_le_iff_right, add_comm, iInf_add]
state_before: ι : Sort u_1
f g : ι → ℝ≥0∞
a b c✝ d : ℝ≥0∞
r p q : ℝ≥0
c : ℝ≥0∞
⊢ a - ⨅ i, f i ≤ c ↔ ⨆ i, a - f i ≤ c
state_after: ι : Sort u_1
f g : ι → ℝ≥0∞
a b c✝ d : ℝ≥0∞
r p q : ℝ≥0
c : ℝ≥0∞
⊢ a ≤ ⨅ i, f i + c ↔ ⨆ i, a - f i ≤ c

tactic: simp [tsub_le_iff_right, sub_eq_add_neg, add_comm]
state_before: ι : Sort u_1
f g : ι → ℝ≥0∞
a b c✝ d : ℝ≥0∞
r p q : ℝ≥0
c : ℝ≥0∞
⊢ a ≤ ⨅ i, f i + c ↔ ⨆ i, a - f i ≤ c
state_after: no goals
Theorem: FirstOrder.Language.Equiv.symm_comp_self_toHom
File: Mathlib/ModelTheory/Basic.lean

tactic: rw [← comp_toHom, symm_comp_self, refl_toHom]
state_before: L : Language
L' : Language
M : Type w
N : Type w'
inst✝³ : L.Structure M
inst✝² : L.Structure N
P : Type u_1
inst✝¹ : L.Structure P
Q : Type u_2
inst✝ : L.Structure Q
f : M ≃[L] N
⊢ f.symm.toHom.comp f.toHom = Hom.id L M
state_after: no goals
Theorem: LinearMap.iterate_injective
File: Mathlib/Algebra/Module/LinearMap/End.lean

tactic: rw [iterate_succ]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
S : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
N : Type u_9
N₁ : Type u_10
N₂ : Type u_11
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommGroup N₁
inst✝⁴ : Module R M
inst✝³ : Module R N₁
inst✝² : Monoid S
inst✝¹ : DistribMulAction S M
inst✝ : SMulCommClass R S M
f' : M →ₗ[R] M
h : Injective ⇑f'
n : ℕ
⊢ Injective ⇑(f' ^ (n + 1))
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
S : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
N : Type u_9
N₁ : Type u_10
N₂ : Type u_11
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommGroup N₁
inst✝⁴ : Module R M
inst✝³ : Module R N₁
inst✝² : Monoid S
inst✝¹ : DistribMulAction S M
inst✝ : SMulCommClass R S M
f' : M →ₗ[R] M
h : Injective ⇑f'
n : ℕ
⊢ Injective ⇑((f' ^ n) ∘ₗ f')

tactic: exact (iterate_injective h n).comp h
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
S : Type u_4
M : Type u_5
M₁ : Type u_6
M₂ : Type u_7
M₃ : Type u_8
N : Type u_9
N₁ : Type u_10
N₂ : Type u_11
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : AddCommGroup N₁
inst✝⁴ : Module R M
inst✝³ : Module R N₁
inst✝² : Monoid S
inst✝¹ : DistribMulAction S M
inst✝ : SMulCommClass R S M
f' : M →ₗ[R] M
h : Injective ⇑f'
n : ℕ
⊢ Injective ⇑((f' ^ n) ∘ₗ f')
state_after: no goals
Theorem: CategoryTheory.Functor.LeftExtension.IsPointwiseLeftKanExtensionAt.isIso_hom_app
File: Mathlib/CategoryTheory/Functor/KanExtension/Pointwise.lean

tactic: simpa using h.isIso_ι_app_of_isTerminal _ CostructuredArrow.mkIdTerminal
state_before: C : Type u_1
D : Type u_2
H : Type u_3
inst✝⁴ : Category.{u_4, u_1} C
inst✝³ : Category.{u_5, u_2} D
inst✝² : Category.{u_6, u_3} H
L : C ⥤ D
F : C ⥤ H
E : L.LeftExtension F
X : C
h : E.IsPointwiseLeftKanExtensionAt (L.obj X)
inst✝¹ : L.Full
inst✝ : L.Faithful
⊢ IsIso (E.hom.app X)
state_after: no goals
Theorem: DirectSum.fromAddMonoid_of
File: Mathlib/Algebra/DirectSum/Basic.lean

tactic: rw [fromAddMonoid, toAddMonoid_of]
state_before: ι : Type v
dec_ι : DecidableEq ι
β : ι → Type w
inst✝¹ : (i : ι) → AddCommMonoid (β i)
γ : Type u₁
inst✝ : AddCommMonoid γ
i : ι
f : γ →+ β i
⊢ fromAddMonoid ((of (fun i => γ →+ β i) i) f) = (of β i).comp f
state_after: ι : Type v
dec_ι : DecidableEq ι
β : ι → Type w
inst✝¹ : (i : ι) → AddCommMonoid (β i)
γ : Type u₁
inst✝ : AddCommMonoid γ
i : ι
f : γ →+ β i
⊢ (AddMonoidHom.compHom (of β i)) f = (of β i).comp f

tactic: rfl
state_before: ι : Type v
dec_ι : DecidableEq ι
β : ι → Type w
inst✝¹ : (i : ι) → AddCommMonoid (β i)
γ : Type u₁
inst✝ : AddCommMonoid γ
i : ι
f : γ →+ β i
⊢ (AddMonoidHom.compHom (of β i)) f = (of β i).comp f
state_after: no goals
Theorem: MeasureTheory.integrable_stoppedProcess_of_mem_finset
File: Mathlib/Probability/Process/Stopping.lean

tactic: simp_rw [← memℒp_one_iff_integrable] at hu ⊢
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
μ : Measure Ω
τ σ : Ω → ι
E : Type u_4
p : ℝ≥0∞
u : ι → Ω → E
inst✝⁴ : LinearOrder ι
inst✝³ : TopologicalSpace ι
inst✝² : OrderTopology ι
inst✝¹ : FirstCountableTopology ι
ℱ : Filtration ι m
inst✝ : NormedAddCommGroup E
hτ : IsStoppingTime ℱ τ
hu : ∀ (n : ι), Integrable (u n) μ
n : ι
s : Finset ι
hbdd : ∀ (ω : Ω), τ ω < n → τ ω ∈ s
⊢ Integrable (stoppedProcess u τ n) μ
state_after: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
μ : Measure Ω
τ σ : Ω → ι
E : Type u_4
p : ℝ≥0∞
u : ι → Ω → E
inst✝⁴ : LinearOrder ι
inst✝³ : TopologicalSpace ι
inst✝² : OrderTopology ι
inst✝¹ : FirstCountableTopology ι
ℱ : Filtration ι m
inst✝ : NormedAddCommGroup E
hτ : IsStoppingTime ℱ τ
n : ι
s : Finset ι
hbdd : ∀ (ω : Ω), τ ω < n → τ ω ∈ s
hu : ∀ (n : ι), Memℒp (u n) 1 μ
⊢ Memℒp (stoppedProcess u τ n) 1 μ

tactic: exact memℒp_stoppedProcess_of_mem_finset hτ hu n hbdd
state_before: Ω : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace Ω
μ : Measure Ω
τ σ : Ω → ι
E : Type u_4
p : ℝ≥0∞
u : ι → Ω → E
inst✝⁴ : LinearOrder ι
inst✝³ : TopologicalSpace ι
inst✝² : OrderTopology ι
inst✝¹ : FirstCountableTopology ι
ℱ : Filtration ι m
inst✝ : NormedAddCommGroup E
hτ : IsStoppingTime ℱ τ
n : ι
s : Finset ι
hbdd : ∀ (ω : Ω), τ ω < n → τ ω ∈ s
hu : ∀ (n : ι), Memℒp (u n) 1 μ
⊢ Memℒp (stoppedProcess u τ n) 1 μ
state_after: no goals
Theorem: CochainComplex.mappingConeHomOfDegreewiseSplitIso_inv_comp_triangle_mor₃
File: Mathlib/Algebra/Homology/HomotopyCategory/DegreewiseSplit.lean

tactic: ext n
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
S : ShortComplex (CochainComplex C ℤ)
σ : (n : ℤ) → (S.map (eval C (ComplexShape.up ℤ) n)).Splitting
inst✝ : HasBinaryBiproducts C
⊢ (mappingConeHomOfDegreewiseSplitIso S σ).inv ≫ (mappingCone.triangle (homOfDegreewiseSplit S σ)).mor₃ =
    -(CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map S.g
state_after: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
S : ShortComplex (CochainComplex C ℤ)
σ : (n : ℤ) → (S.map (eval C (ComplexShape.up ℤ) n)).Splitting
inst✝ : HasBinaryBiproducts C
n : ℤ
⊢ ((mappingConeHomOfDegreewiseSplitIso S σ).inv ≫ (mappingCone.triangle (homOfDegreewiseSplit S σ)).mor₃).f n =
    (-(CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map S.g).f n

tactic: simp [mappingConeHomOfDegreewiseSplitXIso]
state_before: case h
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
S : ShortComplex (CochainComplex C ℤ)
σ : (n : ℤ) → (S.map (eval C (ComplexShape.up ℤ) n)).Splitting
inst✝ : HasBinaryBiproducts C
n : ℤ
⊢ ((mappingConeHomOfDegreewiseSplitIso S σ).inv ≫ (mappingCone.triangle (homOfDegreewiseSplit S σ)).mor₃).f n =
    (-(CategoryTheory.shiftFunctor (CochainComplex C ℤ) 1).map S.g).f n
state_after: no goals
Theorem: norm_fderivWithin_iteratedFDerivWithin
File: Mathlib/Analysis/Calculus/ContDiff/Defs.lean

tactic: rw [iteratedFDerivWithin_succ_eq_comp_left, comp_apply, LinearIsometryEquiv.norm_map]
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n✝ : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
n : ℕ
⊢ ‖fderivWithin 𝕜 (iteratedFDerivWithin 𝕜 n f s) s x‖ = ‖iteratedFDerivWithin 𝕜 (n + 1) f s x‖
state_after: no goals
Theorem: Cardinal.ofENat_pos
File: Mathlib/SetTheory/Cardinal/ENat.lean

tactic: norm_cast
state_before: m : ℕ∞
⊢ 0 < ↑m ↔ 0 < m
state_after: no goals
Theorem: EuclideanGeometry.angle_right_midpoint_eq_pi_div_two_of_dist_eq
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Affine.lean

tactic: rw [midpoint_comm p1 p2, angle_left_midpoint_eq_pi_div_two_of_dist_eq h.symm]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p p₀ p₁ p₂ p1 p2 p3 : P
h : dist p3 p1 = dist p3 p2
⊢ ∠ p3 (midpoint ℝ p1 p2) p2 = π / 2
state_after: no goals
Theorem: ne_one_of_mem_sphere
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: rwa [norm_eq_of_mem_sphere' x]
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
hr : r ≠ 0
x : ↑(sphere 1 r)
⊢ ‖↑x‖ ≠ 0
state_after: no goals
Theorem: Localization.mk_natCast
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: simpa using mk_algebraMap (R := R) (A := ℕ) _
state_before: R : Type u_1
inst✝³ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝² : CommSemiring S
inst✝¹ : Algebra R S
P : Type u_3
inst✝ : CommSemiring P
m : ℕ
⊢ mk (↑m) 1 = ↑m
state_after: no goals
Theorem: CategoryTheory.Equivalence.cancel_counitInv_right_assoc
File: Mathlib/CategoryTheory/Equivalence.lean

tactic: simp only [← Category.assoc, cancel_mono]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
e : C ≌ D
W X X' Y : D
f : W ⟶ X
g : X ⟶ Y
f' : W ⟶ X'
g' : X' ⟶ Y
⊢ f ≫ g ≫ e.counitInv.app Y = f' ≫ g' ≫ e.counitInv.app Y ↔ f ≫ g = f' ≫ g'
state_after: no goals
Theorem: Set.piecewise_insert_of_ne
File: Mathlib/Data/Set/Function.lean

tactic: simp [piecewise, h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
δ : α → Sort u_6
s : Set α
f g : (i : α) → δ i
inst✝¹ : (j : α) → Decidable (j ∈ s)
i j : α
h : i ≠ j
inst✝ : (i : α) → Decidable (i ∈ insert j s)
⊢ (insert j s).piecewise f g i = s.piecewise f g i
state_after: no goals
Theorem: ball_sub_closedBall
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

tactic: simp_rw [sub_eq_add_neg, neg_closedBall, ball_add_closedBall hε hδ]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x y z : E
δ ε : ℝ
hε : 0 < ε
hδ : 0 ≤ δ
a b : E
⊢ Metric.ball a ε - Metric.closedBall b δ = Metric.ball (a - b) (ε + δ)
state_after: no goals
Theorem: WithLp.unitization_norm_inr
File: Mathlib/Analysis/NormedSpace/UnitizationL1.lean

tactic: simp [unitization_norm_def]
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁴ : NormedField 𝕜
inst✝³ : NonUnitalNormedRing A
inst✝² : NormedSpace 𝕜 A
inst✝¹ : IsScalarTower 𝕜 A A
inst✝ : SMulCommClass 𝕜 A A
x : A
⊢ ‖(WithLp.equiv 1 (Unitization 𝕜 A)).symm ↑x‖ = ‖x‖
state_after: no goals
Theorem: MeasureTheory.MeasurePreserving.setLIntegral_comp_preimage_emb
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [← hg.map_eq, hge.restrict_map, hge.lintegral_map]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν✝ : Measure α
mb : MeasurableSpace β
ν : Measure β
g : α → β
hg : MeasurePreserving g μ ν
hge : MeasurableEmbedding g
f : β → ℝ≥0∞
s : Set β
⊢ ∫⁻ (a : α) in g ⁻¹' s, f (g a) ∂μ = ∫⁻ (b : β) in s, f b ∂ν
state_after: no goals
Theorem: sdiff_inf_sdiff
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [inf_inf_sdiff]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ ⊥ = x ⊓ y ⊓ x \ y
state_after: no goals

tactic: rw [sup_inf_sdiff]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y ⊓ x \ y = x ⊓ (y ⊓ x ⊔ y \ x) ⊓ x \ y
state_after: no goals

tactic: rw [inf_sup_left]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ (y ⊓ x ⊔ y \ x) ⊓ x \ y = (x ⊓ (y ⊓ x) ⊔ x ⊓ y \ x) ⊓ x \ y
state_after: no goals

tactic: ac_rfl
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ (x ⊓ (y ⊓ x) ⊔ x ⊓ y \ x) ⊓ x \ y = (y ⊓ (x ⊓ x) ⊔ x ⊓ y \ x) ⊓ x \ y
state_after: no goals

tactic: rw [inf_idem]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ (y ⊓ (x ⊓ x) ⊔ x ⊓ y \ x) ⊓ x \ y = (y ⊓ x ⊔ x ⊓ y \ x) ⊓ x \ y
state_after: no goals

tactic: rw [inf_sup_right, inf_comm x y]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ (y ⊓ x ⊔ x ⊓ y \ x) ⊓ x \ y = x ⊓ y ⊓ x \ y ⊔ x ⊓ y \ x ⊓ x \ y
state_after: no goals

tactic: rw [inf_inf_sdiff, bot_sup_eq]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y ⊓ x \ y ⊔ x ⊓ y \ x ⊓ x \ y = x ⊓ y \ x ⊓ x \ y
state_after: no goals

tactic: ac_rfl
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y \ x ⊓ x \ y = x ⊓ x \ y ⊓ y \ x
state_after: no goals

tactic: rw [inf_of_le_right sdiff_le']
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ x \ y ⊓ y \ x = x \ y ⊓ y \ x
state_after: no goals
Theorem: AlgebraicGeometry.LocallyRingedSpace.toΓSpec_continuous
File: Mathlib/AlgebraicGeometry/GammaSpecAdjunction.lean

tactic: rw [isTopologicalBasis_basic_opens.continuous_iff]
state_before: X : LocallyRingedSpace
⊢ Continuous X.toΓSpecFun
state_after: X : LocallyRingedSpace
⊢ ∀ s ∈ Set.range fun r => ↑(basicOpen r), IsOpen (X.toΓSpecFun ⁻¹' s)

tactic: rintro _ ⟨r, rfl⟩
state_before: X : LocallyRingedSpace
⊢ ∀ s ∈ Set.range fun r => ↑(basicOpen r), IsOpen (X.toΓSpecFun ⁻¹' s)
state_after: case intro
X : LocallyRingedSpace
r : ↑(Γ.obj { unop := X })
⊢ IsOpen (X.toΓSpecFun ⁻¹' (fun r => ↑(basicOpen r)) r)

tactic: erw [X.toΓSpec_preim_basicOpen_eq r]
state_before: case intro
X : LocallyRingedSpace
r : ↑(Γ.obj { unop := X })
⊢ IsOpen (X.toΓSpecFun ⁻¹' (fun r => ↑(basicOpen r)) r)
state_after: case intro
X : LocallyRingedSpace
r : ↑(Γ.obj { unop := X })
⊢ IsOpen (X.toRingedSpace.basicOpen r).carrier

tactic: exact (X.toRingedSpace.basicOpen r).2
state_before: case intro
X : LocallyRingedSpace
r : ↑(Γ.obj { unop := X })
⊢ IsOpen (X.toRingedSpace.basicOpen r).carrier
state_after: no goals
Theorem: Ideal.comap_sInf'
File: Mathlib/RingTheory/Ideal/Maps.lean

tactic: rw [iInf_image]
state_before: R : Type u
S : Type v
F : Type u_1
inst✝³ : Semiring R
inst✝² : Semiring S
inst✝¹ : FunLike F R S
rc : RingHomClass F R S
f : F
I J : Ideal R
K L : Ideal S
G : Type u_2
inst✝ : FunLike G S R
rcg : RingHomClass G S R
ι : Sort u_3
s : Set (Ideal S)
⊢ ⨅ I ∈ s, comap f I = ⨅ I ∈ comap f '' s, I
state_after: no goals
Theorem: Matrix.det_fromBlocks_one₂₂
File: Mathlib/LinearAlgebra/Matrix/SchurComplement.lean

tactic: haveI : Invertible (1 : Matrix n n α) := invertibleOne
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
⊢ (fromBlocks A B C 1).det = (A - B * C).det
state_after: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
this : Invertible 1
⊢ (fromBlocks A B C 1).det = (A - B * C).det

tactic: rw [det_fromBlocks₂₂, invOf_one, Matrix.mul_one, det_one, one_mul]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
α : Type u_4
inst✝⁶ : Fintype l
inst✝⁵ : Fintype m
inst✝⁴ : Fintype n
inst✝³ : DecidableEq l
inst✝² : DecidableEq m
inst✝¹ : DecidableEq n
inst✝ : CommRing α
A : Matrix m m α
B : Matrix m n α
C : Matrix n m α
this : Invertible 1
⊢ (fromBlocks A B C 1).det = (A - B * C).det
state_after: no goals
Theorem: PowerSeries.order_finite_iff_ne_zero
File: Mathlib/RingTheory/PowerSeries/Order.lean

tactic: simp only [order]
state_before: R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ φ.order.Dom ↔ φ ≠ 0
state_after: R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ (if h : φ = 0 then ⊤ else ↑(Nat.find ⋯)).Dom ↔ φ ≠ 0

tactic: constructor
state_before: R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ (if h : φ = 0 then ⊤ else ↑(Nat.find ⋯)).Dom ↔ φ ≠ 0
state_after: case mp
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ (if h : φ = 0 then ⊤ else ↑(Nat.find ⋯)).Dom → φ ≠ 0

case mpr
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ φ ≠ 0 → (if h : φ = 0 then ⊤ else ↑(Nat.find ⋯)).Dom

tactic: split_ifs with h <;> intro H
state_before: case mp
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ (if h : φ = 0 then ⊤ else ↑(Nat.find ⋯)).Dom → φ ≠ 0
state_after: case pos
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : φ = 0
H : ⊤.Dom
⊢ φ ≠ 0

case neg
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : ¬φ = 0
H : (↑(Nat.find ⋯)).Dom
⊢ φ ≠ 0

tactic: simp only [PartENat.top_eq_none, Part.not_none_dom] at H
state_before: case pos
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : φ = 0
H : ⊤.Dom
⊢ φ ≠ 0
state_after: no goals

tactic: exact h
state_before: case neg
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : ¬φ = 0
H : (↑(Nat.find ⋯)).Dom
⊢ φ ≠ 0
state_after: no goals

tactic: intro h
state_before: case mpr
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
⊢ φ ≠ 0 → (if h : φ = 0 then ⊤ else ↑(Nat.find ⋯)).Dom
state_after: case mpr
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : φ ≠ 0
⊢ (if h : φ = 0 then ⊤ else ↑(Nat.find ⋯)).Dom

tactic: simp [h]
state_before: case mpr
R : Type u_1
inst✝ : Semiring R
φ : R⟦X⟧
h : φ ≠ 0
⊢ (if h : φ = 0 then ⊤ else ↑(Nat.find ⋯)).Dom
state_after: no goals