tasksource/leandojo huggingface dataset:
Theorem: Equiv.Perm.Disjoint.cycleFactorsFinset_mul_eq_union
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: rw [cycleFactorsFinset_eq_finset]
state_before: ι : Type ?u.2759828
α : Type u_1
β : Type ?u.2759834
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : Disjoint f g
⊢ cycleFactorsFinset (f * g) = cycleFactorsFinset f ∪ cycleFactorsFinset g

tactic: refine' ⟨_, _, _⟩
state_before: ι : Type ?u.2759828
α : Type u_1
β : Type ?u.2759834
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : Disjoint f g
⊢ (∀ (f_1 : Perm α), f_1 ∈ cycleFactorsFinset f ∪ cycleFactorsFinset g → IsCycle f_1) ∧
    ∃ h,
      noncommProd (cycleFactorsFinset f ∪ cycleFactorsFinset g) id
          (_ : Set.Pairwise ↑(cycleFactorsFinset f ∪ cycleFactorsFinset g) fun a b => _root_.Commute (id a) (id b)) =
        f * g

tactic: simp [or_imp, mem_cycleFactorsFinset_iff, forall_swap]
state_before: case refine'_1
ι : Type ?u.2759828
α : Type u_1
β : Type ?u.2759834
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : Disjoint f g
⊢ ∀ (f_1 : Perm α), f_1 ∈ cycleFactorsFinset f ∪ cycleFactorsFinset g → IsCycle f_1

tactic: rw [coe_union, Set.pairwise_union_of_symmetric Disjoint.symmetric]
state_before: case refine'_2
ι : Type ?u.2759828
α : Type u_1
β : Type ?u.2759834
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : Disjoint f g
⊢ Set.Pairwise (↑(cycleFactorsFinset f ∪ cycleFactorsFinset g)) Disjoint

tactic: exact
  ⟨cycleFactorsFinset_pairwise_disjoint _, cycleFactorsFinset_pairwise_disjoint _,
    fun x hx y hy _ =>
    h.mono (mem_cycleFactorsFinset_support_le hx) (mem_cycleFactorsFinset_support_le hy)⟩
state_before: case refine'_2
ι : Type ?u.2759828
α : Type u_1
β : Type ?u.2759834
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : Disjoint f g
⊢ Set.Pairwise (↑(cycleFactorsFinset f)) Disjoint ∧
    Set.Pairwise (↑(cycleFactorsFinset g)) Disjoint ∧
      ∀ (a : Perm α), a ∈ ↑(cycleFactorsFinset f) → ∀ (b : Perm α), b ∈ ↑(cycleFactorsFinset g) → a ≠ b → Disjoint a b

tactic: rw [noncommProd_union_of_disjoint h.disjoint_cycleFactorsFinset]
state_before: case refine'_3
ι : Type ?u.2759828
α : Type u_1
β : Type ?u.2759834
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : Disjoint f g
⊢ noncommProd (cycleFactorsFinset f ∪ cycleFactorsFinset g) id
      (_ : Set.Pairwise ↑(cycleFactorsFinset f ∪ cycleFactorsFinset g) fun a b => _root_.Commute (id a) (id b)) =
    f * g

tactic: rw [cycleFactorsFinset_noncommProd, cycleFactorsFinset_noncommProd]
state_before: case refine'_3
ι : Type ?u.2759828
α : Type u_1
β : Type ?u.2759834
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ f g : Perm α
h : Disjoint f g
⊢ noncommProd (cycleFactorsFinset f) id
        (_ : Set.Pairwise ↑(cycleFactorsFinset f) fun a b => _root_.Commute (id a) (id b)) *
      noncommProd (cycleFactorsFinset g) id
        (_ : Set.Pairwise ↑(cycleFactorsFinset g) fun a b => _root_.Commute (id a) (id b)) =
    f * g
Theorem: Int.ceil_pos
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [lt_ceil, cast_zero]
state_before: F : Type ?u.220332
α : Type u_1
β : Type ?u.220338
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
⊢ 0 < ⌈a⌉ ↔ 0 < a
Theorem: preimage_mul_sphere
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: ext c
state_before: 𝓕 : Type ?u.747165
𝕜 : Type ?u.747168
α : Type ?u.747171
ι : Type ?u.747174
κ : Type ?u.747177
E : Type u_1
F : Type ?u.747183
G : Type ?u.747186
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a✝ a₁ a₂ b✝ b₁ b₂ : E
r✝ r₁ r₂ : ℝ
a b : E
r : ℝ
⊢ (fun x x_1 => x * x_1) b ⁻¹' sphere a r = sphere (a / b) r

tactic: simp only [Set.mem_preimage, mem_sphere_iff_norm', div_div_eq_mul_div, mul_comm]
state_before: case h
𝓕 : Type ?u.747165
𝕜 : Type ?u.747168
α : Type ?u.747171
ι : Type ?u.747174
κ : Type ?u.747177
E : Type u_1
F : Type ?u.747183
G : Type ?u.747186
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a✝ a₁ a₂ b✝ b₁ b₂ : E
r✝ r₁ r₂ : ℝ
a b : E
r : ℝ
c : E
⊢ c ∈ (fun x x_1 => x * x_1) b ⁻¹' sphere a r ↔ c ∈ sphere (a / b) r
Theorem: LinearMap.pow_mulLeft
File: Mathlib/Algebra/Algebra/Bilinear.lean

tactic: simpa only [mulLeft, ← Algebra.coe_lmul_eq_mul] using ((Algebra.lmul R A).map_pow a n).symm
state_before: R : Type u_2
A : Type u_1
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
a : A
n : ℕ
⊢ mulLeft R a ^ n = mulLeft R (a ^ n)
Theorem: Real.rpow_le_rpow_left_iff_of_base_lt_one
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [← log_le_log (rpow_pos_of_pos hx0 y) (rpow_pos_of_pos hx0 z), log_rpow hx0, log_rpow hx0,
  mul_le_mul_right_of_neg (log_neg hx0 hx1)]
state_before: x y z : ℝ
hx0 : 0 < x
hx1 : x < 1
⊢ x ^ y ≤ x ^ z ↔ z ≤ y
Theorem: Basis.dvd_coord_smul
File: Mathlib/LinearAlgebra/Basis.lean

tactic: simp
state_before: ι : Type u_3
ι' : Type ?u.172267
R : Type u_1
R₂ : Type ?u.172273
K : Type ?u.172276
M : Type u_2
M' : Type ?u.172282
M'' : Type ?u.172285
V : Type u
V' : Type ?u.172290
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i✝ : ι
c : R
x : M
i : ι
m : M
r : R
⊢ ↑(coord b i) (r • m) = r * ↑(coord b i) m
Theorem: Finset.preimage_mul_right_one'
File: Mathlib/Data/Finset/Pointwise.lean

tactic: rw [preimage_mul_right_one, inv_inv]
state_before: F : Type ?u.684904
α : Type u_1
β : Type ?u.684910
γ : Type ?u.684913
inst✝ : Group α
s t : Finset α
a b : α
⊢ preimage 1 (fun x => x * b⁻¹) (_ : Set.InjOn (fun x => x * b⁻¹) ((fun x => x * b⁻¹) ⁻¹' ↑1)) = {b}
Theorem: NormedCommGroup.cauchySeq_iff
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: simp [Metric.cauchySeq_iff, dist_eq_norm_div]
state_before: 𝓕 : Type ?u.111126
𝕜 : Type ?u.111129
α : Type u_1
ι : Type ?u.111135
κ : Type ?u.111138
E : Type u_2
F : Type ?u.111144
G : Type ?u.111147
inst✝⁴ : SeminormedGroup E
inst✝³ : SeminormedGroup F
inst✝² : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
inst✝¹ : Nonempty α
inst✝ : SemilatticeSup α
u : α → E
⊢ CauchySeq u ↔ ∀ (ε : ℝ), ε > 0 → ∃ N, ∀ (m : α), N ≤ m → ∀ (n : α), N ≤ n → ‖u m / u n‖ < ε
Theorem: PadicInt.mem_nonunits
File: Mathlib/NumberTheory/Padics/PadicIntegers.lean

tactic: rw [lt_iff_le_and_ne]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
z : ℤ_[p]
⊢ z ∈ nonunits ℤ_[p] ↔ ‖z‖ < 1

tactic: simp [norm_le_one z, nonunits, isUnit_iff]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
z : ℤ_[p]
⊢ z ∈ nonunits ℤ_[p] ↔ ‖z‖ ≤ 1 ∧ ‖z‖ ≠ 1
Theorem: NatOrdinal.toOrdinal_cast_nat
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

tactic: induction' n with n hn
state_before: n : ℕ
⊢ ↑toOrdinal ↑n = ↑n

tactic: rfl
state_before: case zero

⊢ ↑toOrdinal ↑Nat.zero = ↑Nat.zero

tactic: change nadd (toOrdinal n) 1 = n + 1
state_before: case succ
n : ℕ
hn : ↑toOrdinal ↑n = ↑n
⊢ ↑toOrdinal ↑(Nat.succ n) = ↑(Nat.succ n)

tactic: rw [hn]
state_before: case succ
n : ℕ
hn : ↑toOrdinal ↑n = ↑n
⊢ nadd (↑toOrdinal ↑n) 1 = ↑n + 1

tactic: apply nadd_one
state_before: case succ
n : ℕ
hn : ↑toOrdinal ↑n = ↑n
⊢ nadd (↑n) 1 = ↑n + 1
Theorem: sdiff_eq_self_iff_disjoint
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [sdiff_bot]
state_before: α : Type u
β : Type ?u.20237
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x \ y = x ↔ x \ y = x \ ⊥

tactic: rw [inf_bot_eq, inf_comm, disjoint_iff]
state_before: α : Type u
β : Type ?u.20237
w x y z : α
inst✝ : GeneralizedBooleanAlgebra α
⊢ x ⊓ y = x ⊓ ⊥ ↔ Disjoint y x
Theorem: MeasureTheory.withDensityᵥ_eq_withDensity_pos_part_sub_withDensity_neg_part
File: Mathlib/MeasureTheory/Measure/WithDensityVectorMeasure.lean

tactic: haveI := isFiniteMeasure_withDensity_ofReal hfi.2
state_before: α : Type u_1
β : Type ?u.162140
m : MeasurableSpace α
μ ν : Measure α
E : Type ?u.162159
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : α → E
f : α → ℝ
hfi : Integrable f
⊢ withDensityᵥ μ f =
    toSignedMeasure (withDensity μ fun x => ENNReal.ofReal (f x)) -
      toSignedMeasure (withDensity μ fun x => ENNReal.ofReal (-f x))

tactic: haveI := isFiniteMeasure_withDensity_ofReal hfi.neg.2
state_before: α : Type u_1
β : Type ?u.162140
m : MeasurableSpace α
μ ν : Measure α
E : Type ?u.162159
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : α → E
f : α → ℝ
hfi : Integrable f
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
⊢ withDensityᵥ μ f =
    toSignedMeasure (withDensity μ fun x => ENNReal.ofReal (f x)) -
      toSignedMeasure (withDensity μ fun x => ENNReal.ofReal (-f x))

tactic: ext i
state_before: α : Type u_1
β : Type ?u.162140
m : MeasurableSpace α
μ ν : Measure α
E : Type ?u.162159
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : α → E
f : α → ℝ
hfi : Integrable f
this✝ : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal ((-f) x))
⊢ withDensityᵥ μ f =
    toSignedMeasure (withDensity μ fun x => ENNReal.ofReal (f x)) -
      toSignedMeasure (withDensity μ fun x => ENNReal.ofReal (-f x))

tactic: intro hi
state_before: case h
α : Type u_1
β : Type ?u.162140
m : MeasurableSpace α
μ ν : Measure α
E : Type ?u.162159
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : α → E
f : α → ℝ
hfi : Integrable f
this✝ : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal ((-f) x))
i : Set α
⊢ MeasurableSet i →
    ↑(withDensityᵥ μ f) i =
      ↑(toSignedMeasure (withDensity μ fun x => ENNReal.ofReal (f x)) -
            toSignedMeasure (withDensity μ fun x => ENNReal.ofReal (-f x)))
        i

tactic: rw [withDensityᵥ_apply hfi hi,
  integral_eq_lintegral_pos_part_sub_lintegral_neg_part hfi.integrableOn,
  VectorMeasure.sub_apply, toSignedMeasure_apply_measurable hi,
  toSignedMeasure_apply_measurable hi, withDensity_apply _ hi, withDensity_apply _ hi]
state_before: case h
α : Type u_1
β : Type ?u.162140
m : MeasurableSpace α
μ ν : Measure α
E : Type ?u.162159
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f✝ g : α → E
f : α → ℝ
hfi : Integrable f
this✝ : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal (f x))
this : IsFiniteMeasure (withDensity μ fun x => ENNReal.ofReal ((-f) x))
i : Set α
hi : MeasurableSet i
⊢ ↑(withDensityᵥ μ f) i =
    ↑(toSignedMeasure (withDensity μ fun x => ENNReal.ofReal (f x)) -
          toSignedMeasure (withDensity μ fun x => ENNReal.ofReal (-f x)))
      i
Theorem: Equiv.removeNone_aux_some
File: Mathlib/Logic/Equiv/Option.lean

tactic: simp [removeNone_aux, Option.isSome_iff_exists.mpr h]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.2241
e : Option α ≃ Option β
x : α
h : ∃ x', ↑e (some x) = some x'
⊢ some (removeNone_aux e x) = ↑e (some x)
Theorem: Std.RBNode.Path.ins_eq_fill
File: Std/Data/RBMap/Alter.lean

tactic: unfold ins
state_before: α : Type u_1
c₀ : RBColor
n₀ : Nat
c : RBColor
n✝ : Nat
path : Path α
t : RBNode α
n : Nat
x✝ : RBNode α
v✝ : α
parent✝ : Path α
ha : Balanced x✝ black n
H : Path.Balanced c₀ n₀ parent✝ red n
hb : Balanced t black n
⊢ ins (right red x✝ v✝ parent✝) t = setBlack (fill (right red x✝ v✝ parent✝) t)

tactic: exact ins_eq_fill H (.red ha hb)
state_before: α : Type u_1
c₀ : RBColor
n₀ : Nat
c : RBColor
n✝ : Nat
path : Path α
t : RBNode α
n : Nat
x✝ : RBNode α
v✝ : α
parent✝ : Path α
ha : Balanced x✝ black n
H : Path.Balanced c₀ n₀ parent✝ red n
hb : Balanced t black n
⊢ ins parent✝ (node red x✝ v✝ t) = setBlack (fill (right red x✝ v✝ parent✝) t)

tactic: rw [ins, fill, ← ins_eq_fill H (.black ha hb), balance1_eq ha]
state_before: α : Type u_1
c₀ : RBColor
n₀ : Nat
c✝ : RBColor
n✝ : Nat
path : Path α
t : RBNode α
n : Nat
c : RBColor
y✝ : RBNode α
c₂✝ : RBColor
parent✝ : Path α
v✝ : α
hb : Balanced y✝ c₂✝ n
H : Path.Balanced c₀ n₀ parent✝ black (n + 1)
ha : Balanced t c n
⊢ ins (left black parent✝ v✝ y✝) t = setBlack (fill (left black parent✝ v✝ y✝) t)

tactic: rw [ins, fill, ← ins_eq_fill H (.black ha hb), balance2_eq hb]
state_before: α : Type u_1
c₀ : RBColor
n₀ : Nat
c✝ : RBColor
n✝ : Nat
path : Path α
t : RBNode α
n : Nat
c : RBColor
x✝ : RBNode α
c₁✝ : RBColor
v✝ : α
parent✝ : Path α
ha : Balanced x✝ c₁✝ n
H : Path.Balanced c₀ n₀ parent✝ black (n + 1)
hb : Balanced t c n
⊢ ins (right black x✝ v✝ parent✝) t = setBlack (fill (right black x✝ v✝ parent✝) t)
Theorem: Lagrange.eval_basis_self
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: rw [Lagrange.basis, eval_prod]
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s : Finset ι
v : ι → F
i j : ι
hvs : Set.InjOn v ↑s
hi : i ∈ s
⊢ eval (v i) (Lagrange.basis s v i) = 1

tactic: refine' prod_eq_one fun j H => _
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s : Finset ι
v : ι → F
i j : ι
hvs : Set.InjOn v ↑s
hi : i ∈ s
⊢ ∏ j in Finset.erase s i, eval (v i) (basisDivisor (v i) (v j)) = 1

tactic: rw [eval_basisDivisor_left_of_ne]
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s : Finset ι
v : ι → F
i j✝ : ι
hvs : Set.InjOn v ↑s
hi : i ∈ s
j : ι
H : j ∈ Finset.erase s i
⊢ eval (v i) (basisDivisor (v i) (v j)) = 1

tactic: rcases mem_erase.mp H with ⟨hij, hj⟩
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s : Finset ι
v : ι → F
i j✝ : ι
hvs : Set.InjOn v ↑s
hi : i ∈ s
j : ι
H : j ∈ Finset.erase s i
⊢ v i ≠ v j

tactic: exact mt (hvs hi hj) hij.symm
state_before: case intro
F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s : Finset ι
v : ι → F
i j✝ : ι
hvs : Set.InjOn v ↑s
hi : i ∈ s
j : ι
H : j ∈ Finset.erase s i
hij : j ≠ i
hj : j ∈ s
⊢ v i ≠ v j
Theorem: Finsupp.card_pi
File: Mathlib/Data/Finset/Finsupp.lean

tactic: rw [pi, card_finsupp]
state_before: ι : Type u_1
α : Type u_2
inst✝ : Zero α
s : Finset ι
f✝ : ι →₀ α
f : ι →₀ Finset α
⊢ card (pi f) = prod f fun i => ↑(card (↑f i))

tactic: exact Finset.prod_congr rfl fun i _ => by simp only [Pi.nat_apply, Nat.cast_id]
state_before: ι : Type u_1
α : Type u_2
inst✝ : Zero α
s : Finset ι
f✝ : ι →₀ α
f : ι →₀ Finset α
⊢ ∏ i in f.support, card (↑f i) = prod f fun i => ↑(card (↑f i))

tactic: simp only [Pi.nat_apply, Nat.cast_id]
state_before: ι : Type u_1
α : Type u_2
inst✝ : Zero α
s : Finset ι
f✝ : ι →₀ α
f : ι →₀ Finset α
i : ι
x✝ : i ∈ f.support
⊢ card (↑f i) = (fun i => ↑(card (↑f i))) i (↑f i)
Theorem: SeminormFamily.basisSets_add
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

tactic: rcases p.basisSets_iff.mp hU with ⟨s, r, hr, hU⟩
state_before: 𝕜 : Type u_2
𝕜₂ : Type ?u.44684
𝕝 : Type ?u.44687
𝕝₂ : Type ?u.44690
E : Type u_1
F : Type ?u.44696
G : Type ?u.44699
ι : Type u_3
ι' : Type ?u.44705
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU : U ∈ basisSets p
⊢ ∃ V, V ∈ basisSets p ∧ V + V ⊆ U

tactic: use (s.sup p).ball 0 (r / 2)
state_before: case intro.intro.intro
𝕜 : Type u_2
𝕜₂ : Type ?u.44684
𝕝 : Type ?u.44687
𝕝₂ : Type ?u.44690
E : Type u_1
F : Type ?u.44696
G : Type ?u.44699
ι : Type u_3
ι' : Type ?u.44705
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU✝ : U ∈ basisSets p
s : Finset ι
r : ℝ
hr : 0 < r
hU : U = ball (Finset.sup s p) 0 r
⊢ ∃ V, V ∈ basisSets p ∧ V + V ⊆ U

tactic: refine' ⟨p.basisSets_mem s (div_pos hr zero_lt_two), _⟩
state_before: case intro.intro.intro
𝕜 : Type u_2
𝕜₂ : Type ?u.44684
𝕝 : Type ?u.44687
𝕝₂ : Type ?u.44690
E : Type u_1
F : Type ?u.44696
G : Type ?u.44699
ι : Type u_3
ι' : Type ?u.44705
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU✝ : U ∈ basisSets p
s : Finset ι
r : ℝ
hr : 0 < r
hU : U = ball (Finset.sup s p) 0 r
⊢ ball (Finset.sup s p) 0 (r / 2) ∈ basisSets p ∧ ball (Finset.sup s p) 0 (r / 2) + ball (Finset.sup s p) 0 (r / 2) ⊆ U

tactic: refine' Set.Subset.trans (ball_add_ball_subset (s.sup p) (r / 2) (r / 2) 0 0) _
state_before: case intro.intro.intro
𝕜 : Type u_2
𝕜₂ : Type ?u.44684
𝕝 : Type ?u.44687
𝕝₂ : Type ?u.44690
E : Type u_1
F : Type ?u.44696
G : Type ?u.44699
ι : Type u_3
ι' : Type ?u.44705
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU✝ : U ∈ basisSets p
s : Finset ι
r : ℝ
hr : 0 < r
hU : U = ball (Finset.sup s p) 0 r
⊢ ball (Finset.sup s p) 0 (r / 2) + ball (Finset.sup s p) 0 (r / 2) ⊆ U

tactic: rw [hU, add_zero, add_halves']
state_before: case intro.intro.intro
𝕜 : Type u_2
𝕜₂ : Type ?u.44684
𝕝 : Type ?u.44687
𝕝₂ : Type ?u.44690
E : Type u_1
F : Type ?u.44696
G : Type ?u.44699
ι : Type u_3
ι' : Type ?u.44705
inst✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU✝ : U ∈ basisSets p
s : Finset ι
r : ℝ
hr : 0 < r
hU : U = ball (Finset.sup s p) 0 r
⊢ ball (Finset.sup s p) (0 + 0) (r / 2 + r / 2) ⊆ U
Theorem: div_le_iff'
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [mul_comm, div_le_iff hb]
state_before: ι : Type ?u.27053
α : Type u_1
β : Type ?u.27059
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
hb : 0 < b
⊢ a / b ≤ c ↔ a ≤ b * c
Theorem: Nat.bodd_succ
File: Mathlib/Init/Data/Nat/Bitwise.lean

tactic: simp only [bodd, boddDiv2]
state_before: n : ℕ
⊢ bodd (succ n) = !bodd n

tactic: let ⟨b,m⟩ := boddDiv2 n
state_before: n : ℕ
⊢ (match boddDiv2 n with
      | (false, m) => (true, m)
      | (true, m) => (false, succ m)).fst =
    !(boddDiv2 n).fst

tactic: cases b <;> rfl
state_before: n : ℕ
b : Bool
m : ℕ
⊢ (match (b, m) with
      | (false, m) => (true, m)
      | (true, m) => (false, succ m)).fst =
    !(b, m).fst
Theorem: Polynomial.splits_of_splits_of_dvd
File: Mathlib/Data/Polynomial/Splits.lean

tactic: obtain ⟨f, rfl⟩ := hgf
state_before: F : Type u
K : Type v
L : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f g : K[X]
hf0 : f ≠ 0
hf : Splits i f
hgf : g ∣ f
⊢ Splits i g

tactic: exact (splits_of_splits_mul i hf0 hf).1
state_before: case intro
F : Type u
K : Type v
L : Type w
inst✝² : Field K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
g f : K[X]
hf0 : g * f ≠ 0
hf : Splits i (g * f)
⊢ Splits i g
Theorem: Finset.Icc_eq_cons_Ico
File: Mathlib/Data/Finset/LocallyFinite.lean

tactic: classical rw [cons_eq_insert, Ico_insert_right h]
state_before: ι : Type ?u.107506
α : Type u_1
inst✝¹ : PartialOrder α
inst✝ : LocallyFiniteOrder α
a b c : α
h : a ≤ b
⊢ Icc a b = cons b (Ico a b) (_ : ¬b ∈ Ico a b)

tactic: rw [cons_eq_insert, Ico_insert_right h]
state_before: ι : Type ?u.107506
α : Type u_1
inst✝¹ : PartialOrder α
inst✝ : LocallyFiniteOrder α
a b c : α
h : a ≤ b
⊢ Icc a b = cons b (Ico a b) (_ : ¬b ∈ Ico a b)
Theorem: FractionalIdeal.coe_ideal_span_singleton_inv_mul
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: rw [mul_comm, coe_ideal_span_singleton_mul_inv K hx]
state_before: R : Type ?u.62768
A : Type ?u.62771
K : Type u_2
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing A
inst✝⁸ : Field K
inst✝⁷ : IsDomain A
R₁ : Type u_1
inst✝⁶ : CommRing R₁
inst✝⁵ : IsDomain R₁
inst✝⁴ : Algebra R₁ K
inst✝³ : IsFractionRing R₁ K
I J : FractionalIdeal R₁⁰ K
K' : Type ?u.63782
inst✝² : Field K'
inst✝¹ : Algebra R₁ K'
inst✝ : IsFractionRing R₁ K'
x : R₁
hx : x ≠ 0
⊢ (↑(Ideal.span {x}))⁻¹ * ↑(Ideal.span {x}) = 1
Theorem: Complex.log_inv
File: Mathlib/Analysis/SpecialFunctions/Complex/Log.lean

tactic: rw [log_inv_eq_ite, if_neg hx]
state_before: x : ℂ
hx : arg x ≠ π
⊢ log x⁻¹ = -log x
Theorem: gramSchmidtOrthonormalBasis_det
File: Mathlib/Analysis/InnerProductSpace/GramSchmidtOrtho.lean

tactic: convert Matrix.det_of_upperTriangular (gramSchmidtOrthonormalBasis_inv_blockTriangular h f)
state_before: 𝕜 : Type u_2
E : Type u_3
inst✝⁸ : IsROrC 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
ι : Type u_1
inst✝⁵ : LinearOrder ι
inst✝⁴ : LocallyFiniteOrderBot ι
inst✝³ : IsWellOrder ι fun x x_1 => x < x_1
inst✝² : Fintype ι
inst✝¹ : FiniteDimensional 𝕜 E
h : finrank 𝕜 E = Fintype.card ι
f : ι → E
inst✝ : DecidableEq ι
⊢ ↑(Basis.det (OrthonormalBasis.toBasis (gramSchmidtOrthonormalBasis h f))) f =
    ∏ i : ι, inner (↑(gramSchmidtOrthonormalBasis h f) i) (f i)

tactic: exact ((gramSchmidtOrthonormalBasis h f).repr_apply_apply (f _) _).symm
state_before: case h.e'_3.a
𝕜 : Type u_2
E : Type u_3
inst✝⁸ : IsROrC 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : InnerProductSpace 𝕜 E
ι : Type u_1
inst✝⁵ : LinearOrder ι
inst✝⁴ : LocallyFiniteOrderBot ι
inst✝³ : IsWellOrder ι fun x x_1 => x < x_1
inst✝² : Fintype ι
inst✝¹ : FiniteDimensional 𝕜 E
h : finrank 𝕜 E = Fintype.card ι
f : ι → E
inst✝ : DecidableEq ι
x✝ : ι
a✝ : x✝ ∈ Finset.univ
⊢ inner (↑(gramSchmidtOrthonormalBasis h f) x✝) (f x✝) =
    Basis.toMatrix (OrthonormalBasis.toBasis (gramSchmidtOrthonormalBasis h f)) f x✝ x✝
Theorem: Fin.cast_eq_cast
File: Mathlib/Data/Fin/Basic.lean

tactic: subst h
state_before: n m : ℕ
h : n = m
⊢ ↑(cast h) = ↑(cast (_ : n = m))

tactic: ext
state_before: n : ℕ
⊢ ↑(cast (_ : n = n)) = ↑(cast (_ : n = n))

tactic: simp
state_before: case h.h
n : ℕ
x✝ : Fin n
⊢ ↑(↑(cast (_ : n = n)) x✝) = ↑(↑(cast (_ : n = n)) x✝)
Theorem: LieSubmodule.coeSubmodule_injective
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: cases x
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' x y : LieSubmodule R L M
h : ↑x = ↑y
⊢ x = y

tactic: cases y
state_before: case mk
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' y : LieSubmodule R L M
toSubmodule✝ : Submodule R M
lie_mem✝ : ∀ {x : L} {m : M}, m ∈ toSubmodule✝.carrier → ⁅x, m⁆ ∈ toSubmodule✝.carrier
h : ↑{ toSubmodule := toSubmodule✝, lie_mem := lie_mem✝ } = ↑y
⊢ { toSubmodule := toSubmodule✝, lie_mem := lie_mem✝ } = y

tactic: congr
state_before: case mk.mk
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
toSubmodule✝¹ : Submodule R M
lie_mem✝¹ : ∀ {x : L} {m : M}, m ∈ toSubmodule✝¹.carrier → ⁅x, m⁆ ∈ toSubmodule✝¹.carrier
toSubmodule✝ : Submodule R M
lie_mem✝ : ∀ {x : L} {m : M}, m ∈ toSubmodule✝.carrier → ⁅x, m⁆ ∈ toSubmodule✝.carrier
h : ↑{ toSubmodule := toSubmodule✝¹, lie_mem := lie_mem✝¹ } = ↑{ toSubmodule := toSubmodule✝, lie_mem := lie_mem✝ }
⊢ { toSubmodule := toSubmodule✝¹, lie_mem := lie_mem✝¹ } = { toSubmodule := toSubmodule✝, lie_mem := lie_mem✝ }
Theorem: PNat.prod_factorMultiset
File: Mathlib/Data/PNat/Factors.lean

tactic: dsimp [factorMultiset]
state_before: n : ℕ+
⊢ ↑(PrimeMultiset.prod (factorMultiset n)) = ↑n

tactic: rw [PrimeMultiset.prod_ofNatList]
state_before: n : ℕ+
⊢ ↑(PrimeMultiset.prod (PrimeMultiset.ofNatList (Nat.factors ↑n) (_ : ∀ {p : ℕ}, p ∈ Nat.factors ↑n → Nat.Prime p))) =
    ↑n

tactic: exact Nat.prod_factors n.ne_zero
state_before: n : ℕ+
⊢ List.prod (Nat.factors ↑n) = ↑n
Theorem: InnerProductGeometry.angle_sub_pos_of_inner_eq_zero
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

tactic: rw [← neg_eq_zero, ← inner_neg_right] at h
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : inner x y = 0
h0 : x = 0 ∨ y ≠ 0
⊢ 0 < angle x (x - y)

tactic: rw [← neg_ne_zero] at h0
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : inner x (-y) = 0
h0 : x = 0 ∨ y ≠ 0
⊢ 0 < angle x (x - y)

tactic: rw [sub_eq_add_neg]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : inner x (-y) = 0
h0 : x = 0 ∨ -y ≠ 0
⊢ 0 < angle x (x - y)

tactic: exact angle_add_pos_of_inner_eq_zero h h0
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
x y : V
h : inner x (-y) = 0
h0 : x = 0 ∨ -y ≠ 0
⊢ 0 < angle x (x + -y)