1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finset.prod_sigma
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: simp_rw [← disjiUnion_map_sigma_mk, prod_disjiUnion, prod_map, Function.Embedding.sigmaMk_apply]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
σ : α → Type u_6
s : Finset α
t : (a : α) → Finset (σ a)
f : Sigma σ → β
⊢ ∏ x ∈ s.sigma t, f x = ∏ a ∈ s, ∏ s ∈ t a, f ⟨a, s⟩
state_after: no goals
Theorem: Submodule.apply_mem_span_image_of_mem_span
File: Mathlib/LinearAlgebra/Span.lean

tactic: rw [Submodule.span_image]
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁸ : Semiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
x✝ : M
p p' : Submodule R M
inst✝⁵ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R₂ M₂
F : Type u_8
inst✝² : FunLike F M M₂
inst✝¹ : SemilinearMapClass F σ₁₂ M M₂
s✝ t : Set M
inst✝ : RingHomSurjective σ₁₂
f : F
x : M
s : Set M
h : x ∈ span R s
⊢ f x ∈ span R₂ (⇑f '' s)
state_after: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁸ : Semiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
x✝ : M
p p' : Submodule R M
inst✝⁵ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R₂ M₂
F : Type u_8
inst✝² : FunLike F M M₂
inst✝¹ : SemilinearMapClass F σ₁₂ M M₂
s✝ t : Set M
inst✝ : RingHomSurjective σ₁₂
f : F
x : M
s : Set M
h : x ∈ span R s
⊢ f x ∈ map f (span R s)

tactic: exact Submodule.mem_map_of_mem h
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁸ : Semiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
x✝ : M
p p' : Submodule R M
inst✝⁵ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝⁴ : AddCommMonoid M₂
inst✝³ : Module R₂ M₂
F : Type u_8
inst✝² : FunLike F M M₂
inst✝¹ : SemilinearMapClass F σ₁₂ M M₂
s✝ t : Set M
inst✝ : RingHomSurjective σ₁₂
f : F
x : M
s : Set M
h : x ∈ span R s
⊢ f x ∈ map f (span R s)
state_after: no goals
Theorem: exists_mem_nhdsSet_isCompact_mapsTo
File: Mathlib/Topology/Compactness/LocallyCompact.lean

tactic: choose! V hxV hVc hVU using fun x (hx : x ∈ K) ↦
  exists_mem_nhds_isCompact_mapsTo hf (hU.mem_nhds (hKU hx))
state_before: X : Type u_1
Y : Type u_2
ι : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
inst✝ : LocallyCompactPair X Y
f : X → Y
K : Set X
U : Set Y
hf : Continuous f
hK : IsCompact K
hU : IsOpen U
hKU : MapsTo f K U
⊢ ∃ L ∈ 𝓝ˢ K, IsCompact L ∧ MapsTo f L U
state_after: X : Type u_1
Y : Type u_2
ι : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
inst✝ : LocallyCompactPair X Y
f : X → Y
K : Set X
U : Set Y
hf : Continuous f
hK : IsCompact K
hU : IsOpen U
hKU : MapsTo f K U
V : X → Set X
hxV : ∀ x ∈ K, V x ∈ 𝓝 x
hVc : ∀ x ∈ K, IsCompact (V x)
hVU : ∀ x ∈ K, MapsTo f (V x) U
⊢ ∃ L ∈ 𝓝ˢ K, IsCompact L ∧ MapsTo f L U

tactic: rcases hK.elim_nhds_subcover_nhdsSet hxV with ⟨s, hsK, hKs⟩
state_before: X : Type u_1
Y : Type u_2
ι : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s t : Set X
inst✝ : LocallyCompactPair X Y
f : X → Y
K : Set X
U : Set Y
hf : Continuous f
hK : IsCompact K
hU : IsOpen U
hKU : MapsTo f K U
V : X → Set X
hxV : ∀ x ∈ K, V x ∈ 𝓝 x
hVc : ∀ x ∈ K, IsCompact (V x)
hVU : ∀ x ∈ K, MapsTo f (V x) U
⊢ ∃ L ∈ 𝓝ˢ K, IsCompact L ∧ MapsTo f L U
state_after: case intro.intro
X : Type u_1
Y : Type u_2
ι : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s✝ t : Set X
inst✝ : LocallyCompactPair X Y
f : X → Y
K : Set X
U : Set Y
hf : Continuous f
hK : IsCompact K
hU : IsOpen U
hKU : MapsTo f K U
V : X → Set X
hxV : ∀ x ∈ K, V x ∈ 𝓝 x
hVc : ∀ x ∈ K, IsCompact (V x)
hVU : ∀ x ∈ K, MapsTo f (V x) U
s : Finset X
hsK : ∀ x ∈ s, x ∈ K
hKs : ⋃ x ∈ s, V x ∈ 𝓝ˢ K
⊢ ∃ L ∈ 𝓝ˢ K, IsCompact L ∧ MapsTo f L U

tactic: exact ⟨_, hKs, s.isCompact_biUnion fun x hx ↦ hVc x (hsK x hx), mapsTo_iUnion₂.2 fun x hx ↦
  hVU x (hsK x hx)⟩
state_before: case intro.intro
X : Type u_1
Y : Type u_2
ι : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
s✝ t : Set X
inst✝ : LocallyCompactPair X Y
f : X → Y
K : Set X
U : Set Y
hf : Continuous f
hK : IsCompact K
hU : IsOpen U
hKU : MapsTo f K U
V : X → Set X
hxV : ∀ x ∈ K, V x ∈ 𝓝 x
hVc : ∀ x ∈ K, IsCompact (V x)
hVU : ∀ x ∈ K, MapsTo f (V x) U
s : Finset X
hsK : ∀ x ∈ s, x ∈ K
hKs : ⋃ x ∈ s, V x ∈ 𝓝ˢ K
⊢ ∃ L ∈ 𝓝ˢ K, IsCompact L ∧ MapsTo f L U
state_after: no goals
Theorem: MeasureTheory.LocallyIntegrable.indicator
File: Mathlib/MeasureTheory/Function/LocallyIntegrable.lean

tactic: intro x
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝⁵ : MeasurableSpace X
inst✝⁴ : TopologicalSpace X
inst✝³ : MeasurableSpace Y
inst✝² : TopologicalSpace Y
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedAddCommGroup F
f g : X → E
μ : Measure X
s✝ : Set X
hf : LocallyIntegrable f μ
s : Set X
hs : MeasurableSet s
⊢ LocallyIntegrable (s.indicator f) μ
state_after: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝⁵ : MeasurableSpace X
inst✝⁴ : TopologicalSpace X
inst✝³ : MeasurableSpace Y
inst✝² : TopologicalSpace Y
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedAddCommGroup F
f g : X → E
μ : Measure X
s✝ : Set X
hf : LocallyIntegrable f μ
s : Set X
hs : MeasurableSet s
x : X
⊢ IntegrableAtFilter (s.indicator f) (𝓝 x) μ

tactic: rcases hf x with ⟨U, hU, h'U⟩
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝⁵ : MeasurableSpace X
inst✝⁴ : TopologicalSpace X
inst✝³ : MeasurableSpace Y
inst✝² : TopologicalSpace Y
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedAddCommGroup F
f g : X → E
μ : Measure X
s✝ : Set X
hf : LocallyIntegrable f μ
s : Set X
hs : MeasurableSet s
x : X
⊢ IntegrableAtFilter (s.indicator f) (𝓝 x) μ
state_after: case intro.intro
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝⁵ : MeasurableSpace X
inst✝⁴ : TopologicalSpace X
inst✝³ : MeasurableSpace Y
inst✝² : TopologicalSpace Y
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedAddCommGroup F
f g : X → E
μ : Measure X
s✝ : Set X
hf : LocallyIntegrable f μ
s : Set X
hs : MeasurableSet s
x : X
U : Set X
hU : U ∈ 𝓝 x
h'U : IntegrableOn f U μ
⊢ IntegrableAtFilter (s.indicator f) (𝓝 x) μ

tactic: exact ⟨U, hU, h'U.indicator hs⟩
state_before: case intro.intro
X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
R : Type u_5
inst✝⁵ : MeasurableSpace X
inst✝⁴ : TopologicalSpace X
inst✝³ : MeasurableSpace Y
inst✝² : TopologicalSpace Y
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedAddCommGroup F
f g : X → E
μ : Measure X
s✝ : Set X
hf : LocallyIntegrable f μ
s : Set X
hs : MeasurableSet s
x : X
U : Set X
hU : U ∈ 𝓝 x
h'U : IntegrableOn f U μ
⊢ IntegrableAtFilter (s.indicator f) (𝓝 x) μ
state_after: no goals
Theorem: Lagrange.nodalWeight_eq_eval_nodal_erase_inv
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: rw [eval_nodal, nodalWeight, prod_inv_distrib]
state_before: F : Type u_1
inst✝¹ : Field F
ι : Type u_2
inst✝ : DecidableEq ι
s : Finset ι
v : ι → F
i : ι
⊢ nodalWeight s v i = (eval (v i) (nodal (s.erase i) v))⁻¹
state_after: no goals
Theorem: PNat.gcd_eq_left
File: Mathlib/Data/PNat/Prime.lean

tactic: rw [dvd_iff]
state_before: m n : ℕ+
⊢ m ∣ n → m.gcd n = m
state_after: m n : ℕ+
⊢ ↑m ∣ ↑n → m.gcd n = m

tactic: intro h
state_before: m n : ℕ+
⊢ ↑m ∣ ↑n → m.gcd n = m
state_after: m n : ℕ+
h : ↑m ∣ ↑n
⊢ m.gcd n = m

tactic: apply eq
state_before: m n : ℕ+
h : ↑m ∣ ↑n
⊢ m.gcd n = m
state_after: case a
m n : ℕ+
h : ↑m ∣ ↑n
⊢ ↑(m.gcd n) = ↑m

tactic: simp only [gcd_coe]
state_before: case a
m n : ℕ+
h : ↑m ∣ ↑n
⊢ ↑(m.gcd n) = ↑m
state_after: case a
m n : ℕ+
h : ↑m ∣ ↑n
⊢ (↑m).gcd ↑n = ↑m

tactic: apply Nat.gcd_eq_left h
state_before: case a
m n : ℕ+
h : ↑m ∣ ↑n
⊢ (↑m).gcd ↑n = ↑m
state_after: no goals
Theorem: T_pos
File: Mathlib/NumberTheory/Padics/Hensel.lean

tactic: rw [T_def]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
⊢ T_gen p F a > 0
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
⊢ ‖Polynomial.eval a F‖ / ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2 > 0

tactic: exact div_pos (norm_pos_iff.2 hnsol) (deriv_sq_norm_pos hnorm)
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
⊢ ‖Polynomial.eval a F‖ / ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2 > 0
state_after: no goals
Theorem: CategoryTheory.Subobject.factors_self
File: Mathlib/CategoryTheory/Subobject/FactorThru.lean

tactic: simp
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
X✝ Y Z : C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X : C
P : Subobject X
⊢ 𝟙 (underlying.obj P) ≫ (representative.obj P).arrow = P.arrow
state_after: no goals
Theorem: Nat.factorization_mul_of_coprime
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: ext q
state_before: a✝ b✝ m n p a b : ℕ
hab : a.Coprime b
⊢ (a * b).factorization = a.factorization + b.factorization
state_after: case h
a✝ b✝ m n p a b : ℕ
hab : a.Coprime b
q : ℕ
⊢ (a * b).factorization q = (a.factorization + b.factorization) q

tactic: rw [Finsupp.add_apply, factorization_mul_apply_of_coprime hab]
state_before: case h
a✝ b✝ m n p a b : ℕ
hab : a.Coprime b
q : ℕ
⊢ (a * b).factorization q = (a.factorization + b.factorization) q
state_after: no goals
Theorem: Vector.mem_map_iff
File: Mathlib/Data/Vector/Mem.lean

tactic: rw [Vector.toList_map, List.mem_map]
state_before: α : Type u_1
β : Type u_2
n : ℕ
a a' : α
b : β
v : Vector α n
f : α → β
⊢ b ∈ (map f v).toList ↔ ∃ a ∈ v.toList, f a = b
state_after: no goals
Theorem: MeasureTheory.Measure.integral_comp_smul_of_nonneg
File: Mathlib/MeasureTheory/Measure/Haar/NormedSpace.lean

tactic: rw [integral_comp_smul μ f R, abs_of_nonneg (inv_nonneg.2 (pow_nonneg hR _))]
state_before: E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : MeasurableSpace E
inst✝⁴ : BorelSpace E
inst✝³ : FiniteDimensional ℝ E
μ : Measure E
inst✝² : μ.IsAddHaarMeasure
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
s : Set E
f : E → F
R : ℝ
hR : 0 ≤ R
⊢ ∫ (x : E), f (R • x) ∂μ = (R ^ finrank ℝ E)⁻¹ • ∫ (x : E), f x ∂μ
state_after: no goals
Theorem: vectorSpan_image_eq_span_vsub_set_right_ne
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: conv_lhs =>
  rw [vectorSpan_eq_span_vsub_set_right k (Set.mem_image_of_mem p hi), ← Set.insert_eq_of_mem hi,
    ← Set.insert_diff_singleton, Set.image_insert_eq, Set.image_insert_eq]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : ι → P
s : Set ι
i : ι
hi : i ∈ s
⊢ vectorSpan k (p '' s) = Submodule.span k ((fun x => x -ᵥ p i) '' (p '' (s \ {i})))
state_after: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : ι → P
s : Set ι
i : ι
hi : i ∈ s
⊢ Submodule.span k (insert (p i -ᵥ p i) ((fun x => x -ᵥ p i) '' (p '' (s \ {i})))) =
    Submodule.span k ((fun x => x -ᵥ p i) '' (p '' (s \ {i})))

tactic: simp [Submodule.span_insert_eq_span]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : ι → P
s : Set ι
i : ι
hi : i ∈ s
⊢ Submodule.span k (insert (p i -ᵥ p i) ((fun x => x -ᵥ p i) '' (p '' (s \ {i})))) =
    Submodule.span k ((fun x => x -ᵥ p i) '' (p '' (s \ {i})))
state_after: no goals
Theorem: Real.smoothTransition.projIcc
File: Mathlib/Analysis/SpecialFunctions/SmoothTransition.lean

tactic: refine congr_fun
  (IccExtend_eq_self zero_le_one smoothTransition (fun x hx => ?_) fun x hx => ?_) x
state_before: x : ℝ
⊢ (↑(projIcc 0 1 ⋯ x)).smoothTransition = x.smoothTransition
state_after: case refine_1
x✝ x : ℝ
hx : x < 0
⊢ x.smoothTransition = smoothTransition 0

case refine_2
x✝ x : ℝ
hx : 1 < x
⊢ x.smoothTransition = smoothTransition 1

tactic: rw [smoothTransition.zero, zero_of_nonpos hx.le]
state_before: case refine_1
x✝ x : ℝ
hx : x < 0
⊢ x.smoothTransition = smoothTransition 0
state_after: no goals

tactic: rw [smoothTransition.one, one_of_one_le hx.le]
state_before: case refine_2
x✝ x : ℝ
hx : 1 < x
⊢ x.smoothTransition = smoothTransition 1
state_after: no goals
Theorem: ENNReal.abs_toReal
File: Mathlib/Data/ENNReal/Basic.lean

tactic: cases x <;> simp
state_before: α : Type u_1
a b c d : ℝ≥0∞
r p q : ℝ≥0
x : ℝ≥0∞
⊢ |x.toReal| = x.toReal
state_after: no goals
Theorem: Denumerable.list_ofNat_succ
File: Mathlib/Logic/Equiv/List.lean

tactic: cases' e : unpair v with v₁ v₂
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Denumerable α
inst✝ : Denumerable β
v : ℕ
⊢ decodeList v.succ = some (ofNat α (unpair v).1 :: ofNat (List α) (unpair v).2)
state_after: case mk
α : Type u_1
β : Type u_2
inst✝¹ : Denumerable α
inst✝ : Denumerable β
v v₁ v₂ : ℕ
e : unpair v = (v₁, v₂)
⊢ decodeList v.succ = some (ofNat α (v₁, v₂).1 :: ofNat (List α) (v₁, v₂).2)

tactic: simp [decodeList, e]
state_before: case mk
α : Type u_1
β : Type u_2
inst✝¹ : Denumerable α
inst✝ : Denumerable β
v v₁ v₂ : ℕ
e : unpair v = (v₁, v₂)
⊢ decodeList v.succ = some (ofNat α (v₁, v₂).1 :: ofNat (List α) (v₁, v₂).2)
state_after: case mk
α : Type u_1
β : Type u_2
inst✝¹ : Denumerable α
inst✝ : Denumerable β
v v₁ v₂ : ℕ
e : unpair v = (v₁, v₂)
⊢ (Seq.seq (some fun x => ofNat α v₁ :: x) fun x => decodeList v₂) = some (ofNat α v₁ :: ofNat (List α) v₂)

tactic: rw [show decodeList v₂ = decode (α := List α) v₂ from rfl, decode_eq_ofNat, Option.seq_some]
state_before: case mk
α : Type u_1
β : Type u_2
inst✝¹ : Denumerable α
inst✝ : Denumerable β
v v₁ v₂ : ℕ
e : unpair v = (v₁, v₂)
⊢ (Seq.seq (some fun x => ofNat α v₁ :: x) fun x => decodeList v₂) = some (ofNat α v₁ :: ofNat (List α) v₂)
state_after: no goals
Theorem: AlgebraicGeometry.StructureSheaf.localization_toBasicOpen
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

tactic: rw [toBasicOpen, IsLocalization.Away.lift, RingHom.comp_apply, IsLocalization.lift_eq]
state_before: R : Type u
inst✝ : CommRing R
f g : R
⊢ ((toBasicOpen R f).comp (algebraMap R (Localization.Away f))) g = (toOpen R (PrimeSpectrum.basicOpen f)) g
state_after: no goals
Theorem: LinearMap.ofIsCompl_smul
File: Mathlib/LinearAlgebra/Projection.lean

tactic: simp
state_before: R✝ : Type u_1
inst✝¹⁴ : Ring R✝
E✝ : Type u_2
inst✝¹³ : AddCommGroup E✝
inst✝¹² : Module R✝ E✝
F✝ : Type u_3
inst✝¹¹ : AddCommGroup F✝
inst✝¹⁰ : Module R✝ F✝
G : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : Module R✝ G
p✝ q✝ : Submodule R✝ E✝
S : Type u_5
inst✝⁷ : Semiring S
M : Type u_6
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module S M
m : Submodule S M
R : Type u_7
inst✝⁴ : CommRing R
E : Type u_8
inst✝³ : AddCommGroup E
inst✝² : Module R E
F : Type u_9
inst✝¹ : AddCommGroup F
inst✝ : Module R F
p q : Submodule R E
h : IsCompl p q
φ : ↥p →ₗ[R] F
ψ : ↥q →ₗ[R] F
c : R
⊢ ∀ (u : ↥p), (c • φ) u = (c • ofIsCompl h φ ψ) ↑u
state_after: no goals

tactic: simp
state_before: R✝ : Type u_1
inst✝¹⁴ : Ring R✝
E✝ : Type u_2
inst✝¹³ : AddCommGroup E✝
inst✝¹² : Module R✝ E✝
F✝ : Type u_3
inst✝¹¹ : AddCommGroup F✝
inst✝¹⁰ : Module R✝ F✝
G : Type u_4
inst✝⁹ : AddCommGroup G
inst✝⁸ : Module R✝ G
p✝ q✝ : Submodule R✝ E✝
S : Type u_5
inst✝⁷ : Semiring S
M : Type u_6
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module S M
m : Submodule S M
R : Type u_7
inst✝⁴ : CommRing R
E : Type u_8
inst✝³ : AddCommGroup E
inst✝² : Module R E
F : Type u_9
inst✝¹ : AddCommGroup F
inst✝ : Module R F
p q : Submodule R E
h : IsCompl p q
φ : ↥p →ₗ[R] F
ψ : ↥q →ₗ[R] F
c : R
⊢ ∀ (u : ↥q), (c • ψ) u = (c • ofIsCompl h φ ψ) ↑u
state_after: no goals
Theorem: MeasureTheory.analyticSet_empty
File: Mathlib/MeasureTheory/Constructions/Polish.lean

tactic: rw [AnalyticSet]
state_before: α : Type u_1
ι : Type u_2
inst✝ : TopologicalSpace α
⊢ AnalyticSet ∅
state_after: α : Type u_1
ι : Type u_2
inst✝ : TopologicalSpace α
⊢ ∅ = ∅ ∨ ∃ f, Continuous f ∧ range f = ∅

tactic: exact Or.inl rfl
state_before: α : Type u_1
ι : Type u_2
inst✝ : TopologicalSpace α
⊢ ∅ = ∅ ∨ ∃ f, Continuous f ∧ range f = ∅
state_after: no goals
Theorem: PMF.apply_eq_zero_iff
File: Mathlib/Probability/ProbabilityMassFunction/Basic.lean

tactic: rw [mem_support_iff, Classical.not_not]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
p : PMF α
a : α
⊢ p a = 0 ↔ a ∉ p.support
state_after: no goals
Theorem: ENNReal.inv_rpow
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: rcases eq_or_ne y 0 with (rfl | hy)
state_before: x : ℝ≥0∞
y : ℝ
⊢ x⁻¹ ^ y = (x ^ y)⁻¹
state_after: case inl
x : ℝ≥0∞
⊢ x⁻¹ ^ 0 = (x ^ 0)⁻¹

case inr
x : ℝ≥0∞
y : ℝ
hy : y ≠ 0
⊢ x⁻¹ ^ y = (x ^ y)⁻¹

tactic: replace hy := hy.lt_or_lt
state_before: case inr
x : ℝ≥0∞
y : ℝ
hy : y ≠ 0
⊢ x⁻¹ ^ y = (x ^ y)⁻¹
state_after: case inr
x : ℝ≥0∞
y : ℝ
hy : y < 0 ∨ 0 < y
⊢ x⁻¹ ^ y = (x ^ y)⁻¹

tactic: rcases eq_or_ne x 0 with (rfl | h0)
state_before: case inr
x : ℝ≥0∞
y : ℝ
hy : y < 0 ∨ 0 < y
⊢ x⁻¹ ^ y = (x ^ y)⁻¹
state_after: case inr.inl
y : ℝ
hy : y < 0 ∨ 0 < y
⊢ 0⁻¹ ^ y = (0 ^ y)⁻¹

case inr.inr
x : ℝ≥0∞
y : ℝ
hy : y < 0 ∨ 0 < y
h0 : x ≠ 0
⊢ x⁻¹ ^ y = (x ^ y)⁻¹

tactic: rcases eq_or_ne x ⊤ with (rfl | h_top)
state_before: case inr.inr
x : ℝ≥0∞
y : ℝ
hy : y < 0 ∨ 0 < y
h0 : x ≠ 0
⊢ x⁻¹ ^ y = (x ^ y)⁻¹
state_after: case inr.inr.inl
y : ℝ
hy : y < 0 ∨ 0 < y
h0 : ⊤ ≠ 0
⊢ ⊤⁻¹ ^ y = (⊤ ^ y)⁻¹

case inr.inr.inr
x : ℝ≥0∞
y : ℝ
hy : y < 0 ∨ 0 < y
h0 : x ≠ 0
h_top : x ≠ ⊤
⊢ x⁻¹ ^ y = (x ^ y)⁻¹

tactic: apply ENNReal.eq_inv_of_mul_eq_one_left
state_before: case inr.inr.inr
x : ℝ≥0∞
y : ℝ
hy : y < 0 ∨ 0 < y
h0 : x ≠ 0
h_top : x ≠ ⊤
⊢ x⁻¹ ^ y = (x ^ y)⁻¹
state_after: case inr.inr.inr.h
x : ℝ≥0∞
y : ℝ
hy : y < 0 ∨ 0 < y
h0 : x ≠ 0
h_top : x ≠ ⊤
⊢ x⁻¹ ^ y * x ^ y = 1

tactic: rw [← mul_rpow_of_ne_zero (ENNReal.inv_ne_zero.2 h_top) h0, ENNReal.inv_mul_cancel h0 h_top,
  one_rpow]
state_before: case inr.inr.inr.h
x : ℝ≥0∞
y : ℝ
hy : y < 0 ∨ 0 < y
h0 : x ≠ 0
h_top : x ≠ ⊤
⊢ x⁻¹ ^ y * x ^ y = 1
state_after: no goals

tactic: simp only [rpow_zero, inv_one]
state_before: case inl
x : ℝ≥0∞
⊢ x⁻¹ ^ 0 = (x ^ 0)⁻¹
state_after: no goals

tactic: cases hy <;> simp [*]
state_before: case inr.inl
y : ℝ
hy : y < 0 ∨ 0 < y
⊢ 0⁻¹ ^ y = (0 ^ y)⁻¹
state_after: no goals

tactic: cases hy <;> simp [*]
state_before: case inr.inr.inl
y : ℝ
hy : y < 0 ∨ 0 < y
h0 : ⊤ ≠ 0
⊢ ⊤⁻¹ ^ y = (⊤ ^ y)⁻¹
state_after: no goals
Theorem: NNReal.IsConjExponent.inv_inv
File: Mathlib/Data/Real/ConjExponents.lean

tactic: rw [← hab]
state_before: a b p q : ℝ≥0
h : p.IsConjExponent q
ha : a ≠ 0
hb : b ≠ 0
hab : a + b = 1
⊢ a < 1
state_after: a b p q : ℝ≥0
h : p.IsConjExponent q
ha : a ≠ 0
hb : b ≠ 0
hab : a + b = 1
⊢ a < a + b

tactic: exact lt_add_of_pos_right _ hb.bot_lt
state_before: a b p q : ℝ≥0
h : p.IsConjExponent q
ha : a ≠ 0
hb : b ≠ 0
hab : a + b = 1
⊢ a < a + b
state_after: no goals

tactic: simpa only [inv_inv] using hab
state_before: a b p q : ℝ≥0
h : p.IsConjExponent q
ha : a ≠ 0
hb : b ≠ 0
hab : a + b = 1
⊢ a⁻¹⁻¹ + b⁻¹⁻¹ = 1
state_after: no goals
Theorem: Num.mem_ofZNum'
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases m <;> constructor <;> intro h <;> try cases h <;> rfl
state_before: α : Type u_1
m : Num
p : PosNum
⊢ pos p = m ↔ ZNum.pos p = m.toZNum
state_after: no goals

tactic: cases h <;> rfl
state_before: case pos.mpr
α : Type u_1
p a✝ : PosNum
h : ZNum.pos p = (pos a✝).toZNum
⊢ pos p = pos a✝
state_after: no goals

tactic: cases m <;> cases h
state_before: α : Type u_1
m : Num
p : PosNum
h : ZNum.neg p = m.toZNum
⊢ m ∈ ofZNum' (ZNum.neg p)
state_after: no goals
Theorem: LowerAdjoint.mem_iff
File: Mathlib/Order/Closure.lean

tactic: simp_rw [← SetLike.mem_coe, ← Set.singleton_subset_iff, ← l.le_iff_subset]
state_before: α : Type u_1
ι : Sort u_2
κ : ι → Sort u_3
β : Type u_4
inst✝ : SetLike α β
l : LowerAdjoint SetLike.coe
s : Set β
x : β
⊢ x ∈ l.toFun s ↔ ∀ (S : α), s ⊆ ↑S → x ∈ S
state_after: α : Type u_1
ι : Sort u_2
κ : ι → Sort u_3
β : Type u_4
inst✝ : SetLike α β
l : LowerAdjoint SetLike.coe
s : Set β
x : β
⊢ l.toFun {x} ≤ l.toFun s ↔ ∀ (S : α), l.toFun s ≤ S → l.toFun {x} ≤ S

tactic: exact ⟨fun h S => h.trans, fun h => h _ le_rfl⟩
state_before: α : Type u_1
ι : Sort u_2
κ : ι → Sort u_3
β : Type u_4
inst✝ : SetLike α β
l : LowerAdjoint SetLike.coe
s : Set β
x : β
⊢ l.toFun {x} ≤ l.toFun s ↔ ∀ (S : α), l.toFun s ≤ S → l.toFun {x} ≤ S
state_after: no goals
Theorem: WithLp.prod_dist_eq_card
File: Mathlib/Analysis/NormedSpace/ProdLp.lean

tactic: convert if_pos rfl
state_before: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Dist α
inst✝ : Dist β
f g : WithLp 0 (α × β)
⊢ dist f g = (if dist f.1 g.1 = 0 then 0 else 1) + if dist f.2 g.2 = 0 then 0 else 1
state_after: no goals
Theorem: EuclideanGeometry.cos_angle_of_angle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

tactic: rw [angle, ← inner_eq_zero_iff_angle_eq_pi_div_two, real_inner_comm, ← neg_eq_zero, ←
  inner_neg_left, neg_vsub_eq_vsub_rev] at h
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
h : ∠ p₁ p₂ p₃ = π / 2
⊢ Real.cos (∠ p₂ p₃ p₁) = 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
p₁ p₂ p₃ : P
h : ⟪p₂ -ᵥ p₃, p₁ -ᵥ p₂⟫_ℝ = 0
⊢ Real.cos (∠ p₂ p₃ p₁) = dist p₃ p₂ / dist p₁ p₃

tactic: rw [angle, dist_eq_norm_vsub' V p₃ p₂, dist_eq_norm_vsub V p₁ p₃, ← vsub_add_vsub_cancel p₁ p₂ p₃,
  add_comm, cos_angle_add_of_inner_eq_zero h]
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
h : ⟪p₂ -ᵥ p₃, p₁ -ᵥ p₂⟫_ℝ = 0
⊢ Real.cos (∠ p₂ p₃ p₁) = dist p₃ p₂ / dist p₁ p₃
state_after: no goals
Theorem: Num.cast_succ'
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← PosNum.cast_to_nat, succ'_to_nat, Nat.cast_add_one, cast_to_nat]
state_before: α : Type u_1
inst✝ : AddMonoidWithOne α
n : Num
⊢ ↑n.succ' = ↑n + 1
state_after: no goals
Theorem: Subgroup.index_ker
File: Mathlib/GroupTheory/Index.lean

tactic: rw [← MonoidHom.comap_bot, index_comap, relindex_bot_left]
state_before: G : Type u_1
inst✝¹ : Group G
H✝ K L : Subgroup G
H : Type u_2
inst✝ : Group H
f : G →* H
⊢ f.ker.index = Nat.card ↑(Set.range ⇑f)
state_after: G : Type u_1
inst✝¹ : Group G
H✝ K L : Subgroup G
H : Type u_2
inst✝ : Group H
f : G →* H
⊢ Nat.card ↥f.range = Nat.card ↑(Set.range ⇑f)

tactic: rfl
state_before: G : Type u_1
inst✝¹ : Group G
H✝ K L : Subgroup G
H : Type u_2
inst✝ : Group H
f : G →* H
⊢ Nat.card ↥f.range = Nat.card ↑(Set.range ⇑f)
state_after: no goals
Theorem: mul_self_add_mul_self_eq_zero
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: rw [add_eq_zero_iff', mul_self_eq_zero (M₀ := α), mul_self_eq_zero (M₀ := α)] <;>
  apply mul_self_nonneg
state_before: α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
⊢ a * a + b * b = 0 ↔ a = 0 ∧ b = 0
state_after: no goals
Theorem: MvPolynomial.vars_C
File: Mathlib/Algebra/MvPolynomial/Variables.lean

tactic: classical rw [vars_def, degrees_C, Multiset.toFinset_zero]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
⊢ (C r).vars = ∅
state_after: no goals

tactic: rw [vars_def, degrees_C, Multiset.toFinset_zero]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
⊢ (C r).vars = ∅
state_after: no goals