1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Embedding.t5Space
File: Mathlib/Topology/Separation.lean

tactic: have := Embedding.completelyNormalSpace he
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : T5Space Y
e : X → Y
he : _root_.Embedding e
⊢ ∀ ⦃s t : Set X⦄, Disjoint (closure s) t → Disjoint s (closure t) → Disjoint (𝓝ˢ s) (𝓝ˢ t)
state_after: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : T5Space Y
e : X → Y
he : _root_.Embedding e
this : CompletelyNormalSpace X
⊢ ∀ ⦃s t : Set X⦄, Disjoint (closure s) t → Disjoint s (closure t) → Disjoint (𝓝ˢ s) (𝓝ˢ t)

tactic: exact completely_normal
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : T5Space Y
e : X → Y
he : _root_.Embedding e
this : CompletelyNormalSpace X
⊢ ∀ ⦃s t : Set X⦄, Disjoint (closure s) t → Disjoint s (closure t) → Disjoint (𝓝ˢ s) (𝓝ˢ t)
state_after: no goals
Theorem: WeierstrassCurve.ΨSq_two
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: erw [ΨSq_ofNat, preΨ'_two, one_pow, one_mul, if_pos even_two]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
⊢ W.ΨSq 2 = W.Ψ₂Sq
state_after: no goals
Theorem: MeasureTheory.VectorMeasure.restrict_apply
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: rw [restrict, dif_pos hi]
state_before: α : Type u_1
β : Type u_2
m inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
M : Type u_3
inst✝¹ : AddCommMonoid M
inst✝ : TopologicalSpace M
v : VectorMeasure α M
i : Set α
hi : MeasurableSet i
j : Set α
hj : MeasurableSet j
⊢ ↑(v.restrict i) j = ↑v (j ∩ i)
state_after: α : Type u_1
β : Type u_2
m inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
M : Type u_3
inst✝¹ : AddCommMonoid M
inst✝ : TopologicalSpace M
v : VectorMeasure α M
i : Set α
hi : MeasurableSet i
j : Set α
hj : MeasurableSet j
⊢ ↑{ measureOf' := fun s => if MeasurableSet s then ↑v (s ∩ i) else 0, empty' := ⋯, not_measurable' := ⋯,
          m_iUnion' := ⋯ }
      j =
    ↑v (j ∩ i)

tactic: exact if_pos hj
state_before: α : Type u_1
β : Type u_2
m inst✝³ : MeasurableSpace α
inst✝² : MeasurableSpace β
M : Type u_3
inst✝¹ : AddCommMonoid M
inst✝ : TopologicalSpace M
v : VectorMeasure α M
i : Set α
hi : MeasurableSet i
j : Set α
hj : MeasurableSet j
⊢ ↑{ measureOf' := fun s => if MeasurableSet s then ↑v (s ∩ i) else 0, empty' := ⋯, not_measurable' := ⋯,
          m_iUnion' := ⋯ }
      j =
    ↑v (j ∩ i)
state_after: no goals
Theorem: PrimeSpectrum.zeroLocus_bUnion
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: simp only [zeroLocus_iUnion]
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s : Set (Set R)
⊢ zeroLocus (⋃ s' ∈ s, s') = ⋂ s' ∈ s, zeroLocus s'
state_after: no goals
Theorem: Function.support_mul
File: Mathlib/Algebra/GroupWithZero/Indicator.lean

tactic: simp [not_or]
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝¹ : MulZeroClass M₀
inst✝ : NoZeroDivisors M₀
f g : ι → M₀
x : ι
⊢ (x ∈ support fun x => f x * g x) ↔ x ∈ support f ∩ support g
state_after: no goals
Theorem: SimpleGraph.edgeSet_nonempty
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: rw [Set.nonempty_iff_ne_empty, edgeSet_eq_empty.ne]
state_before: ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v w : V
e : Sym2 V
G₁ G₂ : SimpleGraph V
⊢ G.edgeSet.Nonempty ↔ G ≠ ⊥
state_after: no goals
Theorem: WithZeroTopology.singleton_mem_nhds_of_units
File: Mathlib/Topology/Algebra/WithZeroTopology.lean

tactic: simp
state_before: α : Type u_1
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
γ✝ γ₁ γ₂ : Γ₀
l : Filter α
f : α → Γ₀
γ : Γ₀ˣ
⊢ {↑γ} ∈ 𝓝 ↑γ
state_after: no goals
Theorem: Ordnode.Sized.pos
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [h.1]
state_before: α : Type u_1
s : ℕ
l : Ordnode α
x : α
r : Ordnode α
h : (node s l x r).Sized
⊢ 0 < s
state_after: α : Type u_1
s : ℕ
l : Ordnode α
x : α
r : Ordnode α
h : (node s l x r).Sized
⊢ 0 < l.size + r.size + 1

tactic: apply Nat.le_add_left
state_before: α : Type u_1
s : ℕ
l : Ordnode α
x : α
r : Ordnode α
h : (node s l x r).Sized
⊢ 0 < l.size + r.size + 1
state_after: no goals
Theorem: Algebra.IsAlgebraic.isNormalClosure_iff
File: Mathlib/FieldTheory/NormalClosure.lean

tactic: refine ⟨fun ⟨splits, h⟩ ↦ ⟨splits, ?_⟩, fun ⟨splits, h⟩ ↦ ⟨splits, ?_⟩⟩ <;>
  simpa only [normalClosure_eq_iSup_adjoin_of_splits splits] using h
state_before: F : Type u_1
K : Type u_2
L : Type u_3
inst✝⁵ : Field F
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Algebra F K
inst✝¹ : Algebra F L
inst✝ : Algebra.IsAlgebraic F K
splits : ∀ (x : K), Splits (algebraMap F L) (minpoly F x)
⊢ IsNormalClosure F K L ↔ (∀ (x : K), Splits (algebraMap F L) (minpoly F x)) ∧ normalClosure F K L = ⊤
state_after: no goals
Theorem: LieAlgebra.abelian_radical_of_hasTrivialRadical
File: Mathlib/Algebra/Lie/Semisimple/Basic.lean

tactic: rw [HasTrivialRadical.radical_eq_bot]
state_before: R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : HasTrivialRadical R L
⊢ IsLieAbelian ↥↑(radical R L)
state_after: R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : HasTrivialRadical R L
⊢ IsLieAbelian ↥↑⊥

tactic: infer_instance
state_before: R : Type u_1
L : Type u_2
inst✝³ : CommRing R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : HasTrivialRadical R L
⊢ IsLieAbelian ↥↑⊥
state_after: no goals
Theorem: DirectSum.ext_iff
File: Mathlib/Algebra/DirectSum/Module.lean

tactic: rw [h]
state_before: R : Type u
inst✝⁴ : Semiring R
ι : Type v
dec_ι : DecidableEq ι
M : ι → Type w
inst✝³ : (i : ι) → AddCommMonoid (M i)
inst✝² : (i : ι) → Module R (M i)
N : Type u₁
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
φ : (i : ι) → M i →ₗ[R] N
ψ ψ' : (⨁ (i : ι), M i) →ₗ[R] N
f g : ⨁ (i : ι), M i
h : f = g
x✝ : ι
⊢ (component R ι M x✝) f = (component R ι M x✝) g
state_after: no goals
Theorem: Submonoid.mem_iInf
File: Mathlib/Algebra/Group/Submonoid/Basic.lean

tactic: simp only [iInf, mem_sInf, Set.forall_mem_range]
state_before: M : Type u_1
N : Type u_2
A : Type u_3
inst✝¹ : MulOneClass M
s : Set M
inst✝ : AddZeroClass A
t : Set A
S✝ : Submonoid M
ι : Sort u_4
S : ι → Submonoid M
x : M
⊢ x ∈ ⨅ i, S i ↔ ∀ (i : ι), x ∈ S i
state_after: no goals
Theorem: CategoryTheory.Limits.pushout.mapLift_comp
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: aesop_cat
state_before: C : Type u
inst✝⁵ : Category.{v, u} C
D : Type u₂
inst✝⁴ : Category.{v₂, u₂} D
W X✝ Y✝ Z X Y S T S' : C
f : T ⟶ X
g : T ⟶ Y
i : S ⟶ T
i' : S' ⟶ S
inst✝³ : HasPushout f g
inst✝² : HasPushout (i ≫ f) (i ≫ g)
inst✝¹ : HasPushout (i' ≫ i ≫ f) (i' ≫ i ≫ g)
inst✝ : HasPushout ((i' ≫ i) ≫ f) ((i' ≫ i) ≫ g)
⊢ mapLift f g (i' ≫ i) = (congrHom ⋯ ⋯).hom ≫ mapLift (i ≫ f) (i ≫ g) i' ≫ mapLift f g i
state_after: no goals
Theorem: RCLike.ofReal_nonpos
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: rw [← ofReal_zero, ofReal_le_ofReal]
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
x : ℝ
⊢ ↑x ≤ 0 ↔ x ≤ 0
state_after: no goals
Theorem: Real.sq_sin_pi_div_three
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: rw [← cos_pi_div_two_sub, ← sq_cos_pi_div_six]
state_before: x : ℝ
⊢ sin (π / 3) ^ 2 = 3 / 4
state_after: x : ℝ
⊢ cos (π / 2 - π / 3) ^ 2 = cos (π / 6) ^ 2

tactic: congr
state_before: x : ℝ
⊢ cos (π / 2 - π / 3) ^ 2 = cos (π / 6) ^ 2
state_after: case e_a.e_x
x : ℝ
⊢ π / 2 - π / 3 = π / 6

tactic: ring
state_before: case e_a.e_x
x : ℝ
⊢ π / 2 - π / 3 = π / 6
state_after: no goals
Theorem: Int.not_even_bit1
File: Mathlib/Algebra/Ring/Int.lean

tactic: simp [bit1, parity_simps]
state_before: m n✝ n : ℤ
⊢ ¬Even (bit1 n)
state_after: no goals
Theorem: StarConvex.add_left
File: Mathlib/Analysis/Convex/Star.lean

tactic: intro y hy a b ha hb hab
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y z✝ : E
s : Set E
hs : StarConvex 𝕜 x s
z : E
⊢ StarConvex 𝕜 (z + x) ((fun x => z + x) '' s)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ z✝ : E
s : Set E
hs : StarConvex 𝕜 x s
z y : E
hy : y ∈ (fun x => z + x) '' s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • (z + x) + b • y ∈ (fun x => z + x) '' s

tactic: obtain ⟨y', hy', rfl⟩ := hy
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y✝ z✝ : E
s : Set E
hs : StarConvex 𝕜 x s
z y : E
hy : y ∈ (fun x => z + x) '' s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • (z + x) + b • y ∈ (fun x => z + x) '' s
state_after: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y z✝ : E
s : Set E
hs : StarConvex 𝕜 x s
z : E
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
y' : E
hy' : y' ∈ s
⊢ a • (z + x) + b • (fun x => z + x) y' ∈ (fun x => z + x) '' s

tactic: refine ⟨a • x + b • y', hs hy' ha hb hab, ?_⟩
state_before: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y z✝ : E
s : Set E
hs : StarConvex 𝕜 x s
z : E
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
y' : E
hy' : y' ∈ s
⊢ a • (z + x) + b • (fun x => z + x) y' ∈ (fun x => z + x) '' s
state_after: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y z✝ : E
s : Set E
hs : StarConvex 𝕜 x s
z : E
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
y' : E
hy' : y' ∈ s
⊢ (fun x => z + x) (a • x + b • y') = a • (z + x) + b • (fun x => z + x) y'

tactic: rw [smul_add, smul_add, add_add_add_comm, ← add_smul, hab, one_smul]
state_before: case intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
x y z✝ : E
s : Set E
hs : StarConvex 𝕜 x s
z : E
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
y' : E
hy' : y' ∈ s
⊢ (fun x => z + x) (a • x + b • y') = a • (z + x) + b • (fun x => z + x) y'
state_after: no goals
Theorem: one_lt_mabs
File: Mathlib/Algebra/Order/Group/Abs.lean

tactic: obtain ha | rfl | ha := lt_trichotomy a 1
state_before: α : Type u_1
inst✝² : Group α
inst✝¹ : LinearOrder α
a✝ b✝ : α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
⊢ 1 < mabs a ↔ a ≠ 1
state_after: case inl
α : Type u_1
inst✝² : Group α
inst✝¹ : LinearOrder α
a✝ b✝ : α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
ha : a < 1
⊢ 1 < mabs a ↔ a ≠ 1

case inr.inl
α : Type u_1
inst✝² : Group α
inst✝¹ : LinearOrder α
a b✝ : α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
b c : α
⊢ 1 < mabs 1 ↔ 1 ≠ 1

case inr.inr
α : Type u_1
inst✝² : Group α
inst✝¹ : LinearOrder α
a✝ b✝ : α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
ha : 1 < a
⊢ 1 < mabs a ↔ a ≠ 1

tactic: simp [mabs_of_lt_one ha, neg_pos, ha.ne, ha]
state_before: case inl
α : Type u_1
inst✝² : Group α
inst✝¹ : LinearOrder α
a✝ b✝ : α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
ha : a < 1
⊢ 1 < mabs a ↔ a ≠ 1
state_after: no goals

tactic: simp
state_before: case inr.inl
α : Type u_1
inst✝² : Group α
inst✝¹ : LinearOrder α
a b✝ : α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
b c : α
⊢ 1 < mabs 1 ↔ 1 ≠ 1
state_after: no goals

tactic: simp [mabs_of_one_lt ha, ha, ha.ne']
state_before: case inr.inr
α : Type u_1
inst✝² : Group α
inst✝¹ : LinearOrder α
a✝ b✝ : α
inst✝ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : α
ha : 1 < a
⊢ 1 < mabs a ↔ a ≠ 1
state_after: no goals
Theorem: Set.Ioc_inter_Iic
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: rw [← Ioi_inter_Iic, ← Ioi_inter_Iic, inter_assoc, Iic_inter_Iic]
state_before: α : Type u_1
β : Type u_2
inst✝ : SemilatticeInf α
a b c : α
⊢ Ioc a b ∩ Iic c = Ioc a (b ⊓ c)
state_after: no goals
Theorem: isOpen_connectedComponent
File: Mathlib/Topology/Connected/LocallyConnected.lean

tactic: rw [← connectedComponentIn_univ]
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s t u v : Set α
inst✝ : LocallyConnectedSpace α
x : α
⊢ IsOpen (connectedComponent x)
state_after: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s t u v : Set α
inst✝ : LocallyConnectedSpace α
x : α
⊢ IsOpen (connectedComponentIn univ x)

tactic: exact isOpen_univ.connectedComponentIn
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s t u v : Set α
inst✝ : LocallyConnectedSpace α
x : α
⊢ IsOpen (connectedComponentIn univ x)
state_after: no goals
Theorem: MeasureTheory.Measure.rnDeriv_pos
File: Mathlib/MeasureTheory/Decomposition/RadonNikodym.lean

tactic: rw [← Measure.withDensity_rnDeriv_eq _ _  hμν,
  ae_withDensity_iff (Measure.measurable_rnDeriv _ _), Measure.withDensity_rnDeriv_eq _ _  hμν]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
hμν : μ ≪ ν
⊢ ∀ᵐ (x : α) ∂μ, 0 < μ.rnDeriv ν x
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
hμν : μ ≪ ν
⊢ ∀ᵐ (x : α) ∂ν, μ.rnDeriv ν x ≠ 0 → 0 < μ.rnDeriv ν x

tactic: exact ae_of_all _ (fun x hx ↦ lt_of_le_of_ne (zero_le _) hx.symm)
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : μ.HaveLebesgueDecomposition ν
hμν : μ ≪ ν
⊢ ∀ᵐ (x : α) ∂ν, μ.rnDeriv ν x ≠ 0 → 0 < μ.rnDeriv ν x
state_after: no goals
Theorem: Finpartition.indiscrete_isEquipartition
File: Mathlib/Order/Partition/Equipartition.lean

tactic: rw [IsEquipartition, indiscrete_parts, coe_singleton]
state_before: α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
P : Finpartition s
hs : s ≠ ∅
⊢ (indiscrete hs).IsEquipartition
state_after: α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
P : Finpartition s
hs : s ≠ ∅
⊢ {s}.EquitableOn Finset.card

tactic: exact Set.equitableOn_singleton s _
state_before: α : Type u_1
inst✝ : DecidableEq α
s t : Finset α
P : Finpartition s
hs : s ≠ ∅
⊢ {s}.EquitableOn Finset.card
state_after: no goals
Theorem: CompleteLattice.Independent.setIndependent_range
File: Mathlib/Order/SupIndep.lean

tactic: rw [setIndependent_iff]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
t : ι → α
ht✝ ht : Independent t
⊢ SetIndependent (range t)
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
t : ι → α
ht✝ ht : Independent t
⊢ Independent Subtype.val

tactic: rw [← coe_comp_rangeFactorization t] at ht
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
t : ι → α
ht✝ ht : Independent t
⊢ Independent Subtype.val
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
t : ι → α
ht✝ : Independent t
ht : Independent (Subtype.val ∘ rangeFactorization t)
⊢ Independent Subtype.val

tactic: exact ht.comp' surjective_onto_range
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝ : CompleteLattice α
s : Set α
hs : SetIndependent s
t : ι → α
ht✝ : Independent t
ht : Independent (Subtype.val ∘ rangeFactorization t)
⊢ Independent Subtype.val
state_after: no goals
Theorem: IsLocalization.algHom_subsingleton
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: rw [f.comp_algebraMap, g.comp_algebraMap]
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
inst✝¹ : IsLocalization M S
g✝ : R →+* P
hg : ∀ (y : ↥M), IsUnit (g✝ ↑y)
inst✝ : Algebra R P
f g : S →ₐ[R] P
⊢ (↑f).comp (algebraMap R S) = (↑g).comp (algebraMap R S)
state_after: no goals
Theorem: MeasureTheory.Measure.restrict_sInf_eq_sInf_restrict
File: Mathlib/MeasureTheory/Measure/Restrict.lean

tactic: ext1 s hs
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0✝ : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
m0 : MeasurableSpace α
m : Set (Measure α)
hm : m.Nonempty
ht : MeasurableSet t
⊢ (sInf m).restrict t = sInf ((fun μ => μ.restrict t) '' m)
state_after: case h
R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0✝ : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
m0 : MeasurableSpace α
m : Set (Measure α)
hm : m.Nonempty
ht : MeasurableSet t
s : Set α
hs : MeasurableSet s
⊢ ((sInf m).restrict t) s = (sInf ((fun μ => μ.restrict t) '' m)) s

tactic: simp_rw [sInf_apply hs, restrict_apply hs, sInf_apply (MeasurableSet.inter hs ht),
  Set.image_image, restrict_toOuterMeasure_eq_toOuterMeasure_restrict ht, ←
  Set.image_image _ toOuterMeasure, ← OuterMeasure.restrict_sInf_eq_sInf_restrict _ (hm.image _),
  OuterMeasure.restrict_apply]
state_before: case h
R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0✝ : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
m0 : MeasurableSpace α
m : Set (Measure α)
hm : m.Nonempty
ht : MeasurableSet t
s : Set α
hs : MeasurableSet s
⊢ ((sInf m).restrict t) s = (sInf ((fun μ => μ.restrict t) '' m)) s
state_after: no goals
Theorem: WeierstrassCurve.coeff_Φ
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Degree.lean

tactic: induction n using Int.negInduction with
| nat n => exact (W.natDegree_coeff_Φ_ofNat n).right
| neg => rwa [Φ_neg, Int.natAbs_neg]
state_before: R : Type u
inst✝ : CommRing R
W : WeierstrassCurve R
n : ℤ
⊢ (W.Φ n).coeff (n.natAbs ^ 2) = 1
state_after: no goals

tactic: exact (W.natDegree_coeff_Φ_ofNat n).right
state_before: case nat
R : Type u
inst✝ : CommRing R
W : WeierstrassCurve R
n : ℕ
⊢ (W.Φ ↑n).coeff ((↑n).natAbs ^ 2) = 1
state_after: no goals

tactic: rwa [Φ_neg, Int.natAbs_neg]
state_before: case neg
R : Type u
inst✝ : CommRing R
W : WeierstrassCurve R
n✝ : ℕ
a✝ : (W.Φ ↑n✝).coeff ((↑n✝).natAbs ^ 2) = 1
⊢ (W.Φ (-↑n✝)).coeff ((-↑n✝).natAbs ^ 2) = 1
state_after: no goals
Theorem: Polynomial.Monic.eq_X_add_C
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [← one_mul X, ← C_1, ← hm.coeff_natDegree, hnd, ← eq_X_add_C_of_natDegree_le_one hnd.le]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
hm : p.Monic
hnd : p.natDegree = 1
⊢ p = X + C (p.coeff 0)
state_after: no goals
Theorem: Batteries.UnionFind.setParent_rankD_lt
File: .lake/packages/batteries/Batteries/Data/UnionFind/Basic.lean

tactic: simp [rankD_set, Nat.ne_of_lt h, rankD_eq, -Array.get_eq_getElem]
state_before: arr : Array UFNode
x y : Fin arr.size
h : (arr.get x).rank < (arr.get y).rank
i : Nat
rankD_lt : parentD arr i ≠ i → rankD arr i < rankD arr (parentD arr i)
⊢ ∀ {i : Nat},
    rankD (arr.set x { parent := ↑y, rank := (arr.get x).rank }) i =
      if ↑y = i ∧ (arr.get x).rank = (arr.get y).rank then (arr.get y).rank + 1 else rankD arr i
state_after: no goals
Theorem: CategoryTheory.isIso_of_comp_hom_eq_id
File: Mathlib/CategoryTheory/Iso.lean

tactic: rw [(comp_hom_eq_id _).mp h]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
g : X ⟶ Y
inst✝ : IsIso g
f : Y ⟶ X
h : f ≫ g = 𝟙 Y
⊢ IsIso f
state_after: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
g : X ⟶ Y
inst✝ : IsIso g
f : Y ⟶ X
h : f ≫ g = 𝟙 Y
⊢ IsIso (inv g)

tactic: infer_instance
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
g : X ⟶ Y
inst✝ : IsIso g
f : Y ⟶ X
h : f ≫ g = 𝟙 Y
⊢ IsIso (inv g)
state_after: no goals
Theorem: GradedTensorProduct.tmul_coe_mul_zero_coe_tmul
File: Mathlib/LinearAlgebra/TensorProduct/Graded/Internal.lean

tactic: rw [tmul_coe_mul_coe_tmul, mul_zero, uzpow_zero, one_smul]
state_before: R : Type u_1
ι : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring ι
inst✝⁸ : Module ι (Additive ℤˣ)
inst✝⁷ : DecidableEq ι
inst✝⁶ : CommRing R
inst✝⁵ : Ring A
inst✝⁴ : Ring B
inst✝³ : Algebra R A
inst✝² : Algebra R B
𝒜 : ι → Submodule R A
ℬ : ι → Submodule R B
inst✝¹ : GradedAlgebra 𝒜
inst✝ : GradedAlgebra ℬ
j₁ : ι
a₁ : A
b₁ : ↥(ℬ j₁)
a₂ : ↥(𝒜 0)
b₂ : B
⊢ a₁ ᵍ⊗ₜ[R] ↑b₁ * ↑a₂ ᵍ⊗ₜ[R] b₂ = (a₁ * ↑a₂) ᵍ⊗ₜ[R] (↑b₁ * b₂)
state_after: no goals
Theorem: padicValRat.padicValRat_le_padicValRat_iff
File: Mathlib/NumberTheory/Padics/PadicVal.lean

tactic: have hf1 : Finite (p : ℤ) (n₁ * d₂) := finite_int_prime_iff.2 (mul_ne_zero hn₁ hd₂)
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n₁ n₂ d₁ d₂ : ℤ
hn₁ : n₁ ≠ 0
hn₂ : n₂ ≠ 0
hd₁ : d₁ ≠ 0
hd₂ : d₂ ≠ 0
⊢ padicValRat p (n₁ /. d₁) ≤ padicValRat p (n₂ /. d₂) ↔ ∀ (n : ℕ), ↑p ^ n ∣ n₁ * d₂ → ↑p ^ n ∣ n₂ * d₁
state_after: p : ℕ
hp : Fact (Nat.Prime p)
n₁ n₂ d₁ d₂ : ℤ
hn₁ : n₁ ≠ 0
hn₂ : n₂ ≠ 0
hd₁ : d₁ ≠ 0
hd₂ : d₂ ≠ 0
hf1 : multiplicity.Finite (↑p) (n₁ * d₂)
⊢ padicValRat p (n₁ /. d₁) ≤ padicValRat p (n₂ /. d₂) ↔ ∀ (n : ℕ), ↑p ^ n ∣ n₁ * d₂ → ↑p ^ n ∣ n₂ * d₁

tactic: have hf2 : Finite (p : ℤ) (n₂ * d₁) := finite_int_prime_iff.2 (mul_ne_zero hn₂ hd₁)
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n₁ n₂ d₁ d₂ : ℤ
hn₁ : n₁ ≠ 0
hn₂ : n₂ ≠ 0
hd₁ : d₁ ≠ 0
hd₂ : d₂ ≠ 0
hf1 : multiplicity.Finite (↑p) (n₁ * d₂)
⊢ padicValRat p (n₁ /. d₁) ≤ padicValRat p (n₂ /. d₂) ↔ ∀ (n : ℕ), ↑p ^ n ∣ n₁ * d₂ → ↑p ^ n ∣ n₂ * d₁
state_after: p : ℕ
hp : Fact (Nat.Prime p)
n₁ n₂ d₁ d₂ : ℤ
hn₁ : n₁ ≠ 0
hn₂ : n₂ ≠ 0
hd₁ : d₁ ≠ 0
hd₂ : d₂ ≠ 0
hf1 : multiplicity.Finite (↑p) (n₁ * d₂)
hf2 : multiplicity.Finite (↑p) (n₂ * d₁)
⊢ padicValRat p (n₁ /. d₁) ≤ padicValRat p (n₂ /. d₂) ↔ ∀ (n : ℕ), ↑p ^ n ∣ n₁ * d₂ → ↑p ^ n ∣ n₂ * d₁

tactic: conv =>
  lhs
  rw [padicValRat.defn p (Rat.divInt_ne_zero_of_ne_zero hn₁ hd₁) rfl,
    padicValRat.defn p (Rat.divInt_ne_zero_of_ne_zero hn₂ hd₂) rfl, sub_le_iff_le_add', ←
    add_sub_assoc, _root_.le_sub_iff_add_le]
  norm_cast
  rw [← multiplicity.mul' (Nat.prime_iff_prime_int.1 hp.1) hf1, add_comm, ←
    multiplicity.mul' (Nat.prime_iff_prime_int.1 hp.1) hf2, PartENat.get_le_get,
    multiplicity_le_multiplicity_iff]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n₁ n₂ d₁ d₂ : ℤ
hn₁ : n₁ ≠ 0
hn₂ : n₂ ≠ 0
hd₁ : d₁ ≠ 0
hd₂ : d₂ ≠ 0
hf1 : multiplicity.Finite (↑p) (n₁ * d₂)
hf2 : multiplicity.Finite (↑p) (n₂ * d₁)
⊢ padicValRat p (n₁ /. d₁) ≤ padicValRat p (n₂ /. d₂) ↔ ∀ (n : ℕ), ↑p ^ n ∣ n₁ * d₂ → ↑p ^ n ∣ n₂ * d₁
state_after: no goals
Theorem: NumberField.InfinitePlace.card_add_two_mul_card_eq_rank
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: rw [← card_real_embeddings, ← card_complex_embeddings, Fintype.card_subtype_compl,
  ← Embeddings.card K ℂ, Nat.add_sub_of_le]
state_before: k : Type u_1
inst✝³ : Field k
K : Type u_2
inst✝² : Field K
F : Type u_3
inst✝¹ : Field F
inst✝ : NumberField K
⊢ NrRealPlaces K + 2 * NrComplexPlaces K = finrank ℚ K
state_after: k : Type u_1
inst✝³ : Field k
K : Type u_2
inst✝² : Field K
F : Type u_3
inst✝¹ : Field F
inst✝ : NumberField K
⊢ card { φ // ComplexEmbedding.IsReal φ } ≤ card (K →+* ℂ)

tactic: exact Fintype.card_subtype_le _
state_before: k : Type u_1
inst✝³ : Field k
K : Type u_2
inst✝² : Field K
F : Type u_3
inst✝¹ : Field F
inst✝ : NumberField K
⊢ card { φ // ComplexEmbedding.IsReal φ } ≤ card (K →+* ℂ)
state_after: no goals