1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: PNat.sub_le
File: Mathlib/Data/PNat/Basic.lean

tactic: rw [← coe_le_coe, sub_coe]
state_before: a b : ℕ+
⊢ a - b ≤ a
state_after: a b : ℕ+
⊢ (if b < a then ↑a - ↑b else 1) ≤ ↑a

tactic: split_ifs with h
state_before: a b : ℕ+
⊢ (if b < a then ↑a - ↑b else 1) ≤ ↑a
state_after: case pos
a b : ℕ+
h : b < a
⊢ ↑a - ↑b ≤ ↑a

case neg
a b : ℕ+
h : ¬b < a
⊢ 1 ≤ ↑a

tactic: exact Nat.sub_le a b
state_before: case pos
a b : ℕ+
h : b < a
⊢ ↑a - ↑b ≤ ↑a
state_after: no goals

tactic: exact a.2
state_before: case neg
a b : ℕ+
h : ¬b < a
⊢ 1 ≤ ↑a
state_after: no goals
Theorem: nhdsSet_prod_le_of_disjoint_cocompact
File: Mathlib/Topology/Compactness/Compact.lean

tactic: obtain ⟨K, hKf, hK⟩ := (disjoint_cocompact_right f).mp hf
state_before: X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : Filter Y
hs : IsCompact s
hf : Disjoint f (cocompact Y)
⊢ 𝓝ˢ s ×ˢ f ≤ 𝓝ˢ (s ×ˢ univ)
state_after: case intro.intro
X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : Filter Y
hs : IsCompact s
hf : Disjoint f (cocompact Y)
K : Set Y
hKf : K ∈ f
hK : IsCompact K
⊢ 𝓝ˢ s ×ˢ f ≤ 𝓝ˢ (s ×ˢ univ)

tactic: calc
  𝓝ˢ s ×ˢ f
  _ ≤ 𝓝ˢ s ×ˢ 𝓟 K        := Filter.prod_mono_right _ (Filter.le_principal_iff.mpr hKf)
  _ ≤ 𝓝ˢ s ×ˢ 𝓝ˢ K       := Filter.prod_mono_right _ principal_le_nhdsSet
  _ = 𝓝ˢ (s ×ˢ K)         := (hs.nhdsSet_prod_eq hK).symm
  _ ≤ 𝓝ˢ (s ×ˢ Set.univ)  := nhdsSet_mono (prod_mono_right le_top)
state_before: case intro.intro
X : Type u
Y : Type v
ι : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
s t : Set X
f : Filter Y
hs : IsCompact s
hf : Disjoint f (cocompact Y)
K : Set Y
hKf : K ∈ f
hK : IsCompact K
⊢ 𝓝ˢ s ×ˢ f ≤ 𝓝ˢ (s ×ˢ univ)
state_after: no goals
Theorem: Polynomial.expand_eq_sum
File: Mathlib/Algebra/Polynomial/Expand.lean

tactic: simp [expand, eval₂]
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p q : ℕ
f : R[X]
⊢ (expand R p) f = f.sum fun e a => C a * (X ^ p) ^ e
state_after: no goals
Theorem: CliffordAlgebra.foldl_algebraMap
File: Mathlib/LinearAlgebra/CliffordAlgebra/Fold.lean

tactic: rw [← foldr_reverse, reverse.commutes, foldr_algebraMap]
state_before: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁴ : CommRing R
inst✝³ : AddCommGroup M
inst✝² : AddCommGroup N
inst✝¹ : Module R M
inst✝ : Module R N
Q : QuadraticForm R M
f : M →ₗ[R] N →ₗ[R] N
hf : ∀ (m : M) (x : N), (f m) ((f m) x) = Q m • x
n : N
r : R
⊢ ((foldl Q f hf) n) ((algebraMap R (CliffordAlgebra Q)) r) = r • n
state_after: no goals
Theorem: Multiset.product_add
File: Mathlib/Data/Multiset/Bind.lean

tactic: rw [cons_product, IH]
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a✝ : α
b : β
s✝¹ : Multiset α
t✝ : Multiset β
s✝ : Multiset α
a : α
s : Multiset α
IH : ∀ (t u : Multiset β), s ×ˢ (t + u) = s ×ˢ t + s ×ˢ u
t u : Multiset β
⊢ (a ::ₘ s) ×ˢ (t + u) = (a ::ₘ s) ×ˢ t + (a ::ₘ s) ×ˢ u
state_after: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a✝ : α
b : β
s✝¹ : Multiset α
t✝ : Multiset β
s✝ : Multiset α
a : α
s : Multiset α
IH : ∀ (t u : Multiset β), s ×ˢ (t + u) = s ×ˢ t + s ×ˢ u
t u : Multiset β
⊢ map (Prod.mk a) (t + u) + (s ×ˢ t + s ×ˢ u) = (a ::ₘ s) ×ˢ t + (a ::ₘ s) ×ˢ u

tactic: simp [add_comm, add_left_comm, add_assoc]
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a✝ : α
b : β
s✝¹ : Multiset α
t✝ : Multiset β
s✝ : Multiset α
a : α
s : Multiset α
IH : ∀ (t u : Multiset β), s ×ˢ (t + u) = s ×ˢ t + s ×ˢ u
t u : Multiset β
⊢ map (Prod.mk a) (t + u) + (s ×ˢ t + s ×ˢ u) = (a ::ₘ s) ×ˢ t + (a ::ₘ s) ×ˢ u
state_after: no goals
Theorem: ZMod.cast_neg_one
File: Mathlib/Data/ZMod/Basic.lean

tactic: cases' n with n
state_before: R : Type u_1
inst✝ : Ring R
n : ℕ
⊢ (-1).cast = ↑n - 1
state_after: case zero
R : Type u_1
inst✝ : Ring R
⊢ (-1).cast = ↑0 - 1

case succ
R : Type u_1
inst✝ : Ring R
n : ℕ
⊢ (-1).cast = ↑(n + 1) - 1

tactic: dsimp [ZMod, ZMod.cast]
state_before: case zero
R : Type u_1
inst✝ : Ring R
⊢ (-1).cast = ↑0 - 1
state_after: case zero
R : Type u_1
inst✝ : Ring R
⊢ ↑(-1) = ↑0 - 1

tactic: simp
state_before: case zero
R : Type u_1
inst✝ : Ring R
⊢ ↑(-1) = ↑0 - 1
state_after: no goals

tactic: rw [← natCast_val, val_neg_one, Nat.cast_succ, add_sub_cancel_right]
state_before: case succ
R : Type u_1
inst✝ : Ring R
n : ℕ
⊢ (-1).cast = ↑(n + 1) - 1
state_after: no goals
Theorem: Asymptotics.isBigO_iff
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: simp only [IsBigO_def, IsBigOWith_def]
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
⊢ f =O[l] g ↔ ∃ c, ∀ᶠ (x : α) in l, ‖f x‖ ≤ c * ‖g x‖
state_after: no goals
Theorem: TendstoUniformlyOn.comp
File: Mathlib/Topology/UniformSpace/UniformConvergence.lean

tactic: rw [tendstoUniformlyOn_iff_tendstoUniformlyOnFilter] at h ⊢
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g✝ : ι → α
h : TendstoUniformlyOn F f p s
g : γ → α
⊢ TendstoUniformlyOn (fun n => F n ∘ g) (f ∘ g) p (g ⁻¹' s)
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g✝ : ι → α
h : TendstoUniformlyOnFilter F f p (𝓟 s)
g : γ → α
⊢ TendstoUniformlyOnFilter (fun n => F n ∘ g) (f ∘ g) p (𝓟 (g ⁻¹' s))

tactic: simpa [TendstoUniformlyOn, comap_principal] using TendstoUniformlyOnFilter.comp h g
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g✝ : ι → α
h : TendstoUniformlyOnFilter F f p (𝓟 s)
g : γ → α
⊢ TendstoUniformlyOnFilter (fun n => F n ∘ g) (f ∘ g) p (𝓟 (g ⁻¹' s))
state_after: no goals
Theorem: MeasureTheory.Measure.Regular.smul
File: Mathlib/MeasureTheory/Measure/Regular.lean

tactic: haveI := OuterRegular.smul μ hx
state_before: α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace α
μ : Measure α
inst✝ : μ.Regular
x : ℝ≥0∞
hx : x ≠ ⊤
⊢ (x • μ).Regular
state_after: α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace α
μ : Measure α
inst✝ : μ.Regular
x : ℝ≥0∞
hx : x ≠ ⊤
this : (x • μ).OuterRegular
⊢ (x • μ).Regular

tactic: haveI := IsFiniteMeasureOnCompacts.smul μ hx
state_before: α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace α
μ : Measure α
inst✝ : μ.Regular
x : ℝ≥0∞
hx : x ≠ ⊤
this : (x • μ).OuterRegular
⊢ (x • μ).Regular
state_after: α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace α
μ : Measure α
inst✝ : μ.Regular
x : ℝ≥0∞
hx : x ≠ ⊤
this✝ : (x • μ).OuterRegular
this : IsFiniteMeasureOnCompacts (x • μ)
⊢ (x • μ).Regular

tactic: exact ⟨Regular.innerRegular.smul x⟩
state_before: α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace α
μ : Measure α
inst✝ : μ.Regular
x : ℝ≥0∞
hx : x ≠ ⊤
this✝ : (x • μ).OuterRegular
this : IsFiniteMeasureOnCompacts (x • μ)
⊢ (x • μ).Regular
state_after: no goals
Theorem: SimpleGraph.Walk.darts_nodup_of_support_nodup
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction p with
| nil => simp
| cons _ p' ih =>
  simp only [darts_cons, support_cons, List.nodup_cons] at h ⊢
  exact ⟨fun h' => h.1 (dart_fst_mem_support_of_mem_darts p' h'), ih h.2⟩
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
h : p.support.Nodup
⊢ p.darts.Nodup
state_after: no goals

tactic: simp
state_before: case nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v u✝ : V
h : nil.support.Nodup
⊢ nil.darts.Nodup
state_after: no goals

tactic: simp only [darts_cons, support_cons, List.nodup_cons] at h ⊢
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p' : G.Walk v✝ w✝
ih : p'.support.Nodup → p'.darts.Nodup
h : (cons h✝ p').support.Nodup
⊢ (cons h✝ p').darts.Nodup
state_after: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p' : G.Walk v✝ w✝
ih : p'.support.Nodup → p'.darts.Nodup
h : u✝ ∉ p'.support ∧ p'.support.Nodup
⊢ { toProd := (u✝, v✝), adj := h✝ } ∉ p'.darts ∧ p'.darts.Nodup

tactic: exact ⟨fun h' => h.1 (dart_fst_mem_support_of_mem_darts p' h'), ih h.2⟩
state_before: case cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v u✝ v✝ w✝ : V
h✝ : G.Adj u✝ v✝
p' : G.Walk v✝ w✝
ih : p'.support.Nodup → p'.darts.Nodup
h : u✝ ∉ p'.support ∧ p'.support.Nodup
⊢ { toProd := (u✝, v✝), adj := h✝ } ∉ p'.darts ∧ p'.darts.Nodup
state_after: no goals
Theorem: Orientation.cos_oangle_add_right_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: have hs : (o.oangle x (x + y)).sign = 1 := by
  rw [oangle_sign_add_right, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ (o.oangle x (x + y)).cos = ‖x‖ / ‖x + y‖
state_after: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
hs : (o.oangle x (x + y)).sign = 1
⊢ (o.oangle x (x + y)).cos = ‖x‖ / ‖x + y‖

tactic: rw [o.oangle_eq_angle_of_sign_eq_one hs, Real.Angle.cos_coe,
  InnerProductGeometry.cos_angle_add_of_inner_eq_zero (o.inner_eq_zero_of_oangle_eq_pi_div_two h)]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
hs : (o.oangle x (x + y)).sign = 1
⊢ (o.oangle x (x + y)).cos = ‖x‖ / ‖x + y‖
state_after: no goals

tactic: rw [oangle_sign_add_right, h, Real.Angle.sign_coe_pi_div_two]
state_before: V : Type u_1
inst✝¹ : NormedAddCommGroup V
inst✝ : InnerProductSpace ℝ V
hd2 : Fact (finrank ℝ V = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : o.oangle x y = ↑(π / 2)
⊢ (o.oangle x (x + y)).sign = 1
state_after: no goals
Theorem: Orientation.right_ne_zero_of_oangle_sign_eq_one
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: decide
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
h : (o.oangle x y).sign = 1
⊢ 1 ≠ 0
state_after: no goals
Theorem: Finset.forall_mem_map
File: Mathlib/Data/Finset/Image.lean

tactic: obtain ⟨y, hy, rfl⟩ := mem_map.1 hx
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s✝ : Finset α
f : α ↪ β
s : Finset α
p : (a : β) → a ∈ map f s → Prop
h : ∀ (x : α) (H : x ∈ s), p (f x) ⋯
x : β
hx : x ∈ map f s
⊢ p x hx
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s✝ : Finset α
f : α ↪ β
s : Finset α
p : (a : β) → a ∈ map f s → Prop
h : ∀ (x : α) (H : x ∈ s), p (f x) ⋯
y : α
hy : y ∈ s
hx : f y ∈ map f s
⊢ p (f y) hx

tactic: exact h _ hy
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
f✝ : α ↪ β
s✝ : Finset α
f : α ↪ β
s : Finset α
p : (a : β) → a ∈ map f s → Prop
h : ∀ (x : α) (H : x ∈ s), p (f x) ⋯
y : α
hy : y ∈ s
hx : f y ∈ map f s
⊢ p (f y) hx
state_after: no goals
Theorem: inv_le_self_iff
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: simp [inv_le_iff_one_le_mul']
state_before: α : Type u
inst✝ : LinearOrderedCommGroup α
a b c : α
⊢ a⁻¹ ≤ a ↔ 1 ≤ a
state_after: no goals
Theorem: Algebra.traceForm_toMatrix_powerBasis
File: Mathlib/RingTheory/Trace.lean

tactic: ext
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : CommRing T
inst✝⁵ : Algebra R S
inst✝⁴ : Algebra R T
K : Type u_4
L : Type u_5
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
ι κ : Type w
inst✝ : Fintype ι
b : Basis ι R S
h : PowerBasis R S
⊢ (BilinForm.toMatrix h.basis) (traceForm R S) = of fun i j => (trace R S) (h.gen ^ (↑i + ↑j))
state_after: case a
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : CommRing T
inst✝⁵ : Algebra R S
inst✝⁴ : Algebra R T
K : Type u_4
L : Type u_5
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
ι κ : Type w
inst✝ : Fintype ι
b : Basis ι R S
h : PowerBasis R S
i✝ j✝ : Fin h.dim
⊢ (BilinForm.toMatrix h.basis) (traceForm R S) i✝ j✝ = of (fun i j => (trace R S) (h.gen ^ (↑i + ↑j))) i✝ j✝

tactic: rw [traceForm_toMatrix, of_apply, pow_add, h.basis_eq_pow, h.basis_eq_pow]
state_before: case a
R : Type u_1
S : Type u_2
T : Type u_3
inst✝⁸ : CommRing R
inst✝⁷ : CommRing S
inst✝⁶ : CommRing T
inst✝⁵ : Algebra R S
inst✝⁴ : Algebra R T
K : Type u_4
L : Type u_5
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
ι κ : Type w
inst✝ : Fintype ι
b : Basis ι R S
h : PowerBasis R S
i✝ j✝ : Fin h.dim
⊢ (BilinForm.toMatrix h.basis) (traceForm R S) i✝ j✝ = of (fun i j => (trace R S) (h.gen ^ (↑i + ↑j))) i✝ j✝
state_after: no goals
Theorem: toIocDiv_add_zsmul
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simpa only [add_smul, add_sub_add_right_eq_sub] using sub_toIocDiv_zsmul_mem_Ioc hp a b
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
m : ℤ
⊢ b + m • p - (toIocDiv hp a b + m) • p ∈ Set.Ioc a (a + p)
state_after: no goals
Theorem: jacobiSym.quadratic_reciprocity_three_mod_four
File: Mathlib/NumberTheory/LegendreSymbol/JacobiSymbol.lean

tactic: let nop := @neg_one_pow_div_two_of_three_mod_four
state_before: a b : ℕ
ha : a % 4 = 3
hb : b % 4 = 3
⊢ J(↑a | b) = -J(↑b | a)
state_after: a b : ℕ
ha : a % 4 = 3
hb : b % 4 = 3
nop : ∀ {n : ℕ}, n % 4 = 3 → (-1) ^ (n / 2) = -1 := @neg_one_pow_div_two_of_three_mod_four
⊢ J(↑a | b) = -J(↑b | a)

tactic: rw [quadratic_reciprocity, pow_mul, nop ha, nop hb, neg_one_mul] <;>
  rwa [odd_iff, odd_of_mod_four_eq_three]
state_before: a b : ℕ
ha : a % 4 = 3
hb : b % 4 = 3
nop : ∀ {n : ℕ}, n % 4 = 3 → (-1) ^ (n / 2) = -1 := @neg_one_pow_div_two_of_three_mod_four
⊢ J(↑a | b) = -J(↑b | a)
state_after: no goals
Theorem: CompleteLattice.independent_sUnion_of_directed
File: Mathlib/Order/CompactlyGenerated/Basic.lean

tactic: rw [Set.sUnion_eq_iUnion]
state_before: ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s✝ : Set α
s : Set (Set α)
hs : DirectedOn (fun x x_1 => x ⊆ x_1) s
h : ∀ a ∈ s, SetIndependent a
⊢ SetIndependent (⋃₀ s)
state_after: ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s✝ : Set α
s : Set (Set α)
hs : DirectedOn (fun x x_1 => x ⊆ x_1) s
h : ∀ a ∈ s, SetIndependent a
⊢ SetIndependent (⋃ i, ↑i)

tactic: exact CompleteLattice.setIndependent_iUnion_of_directed hs.directed_val (by simpa using h)
state_before: ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s✝ : Set α
s : Set (Set α)
hs : DirectedOn (fun x x_1 => x ⊆ x_1) s
h : ∀ a ∈ s, SetIndependent a
⊢ SetIndependent (⋃ i, ↑i)
state_after: no goals

tactic: simpa using h
state_before: ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : CompleteLattice α
inst✝ : IsCompactlyGenerated α
a b : α
s✝ : Set α
s : Set (Set α)
hs : DirectedOn (fun x x_1 => x ⊆ x_1) s
h : ∀ a ∈ s, SetIndependent a
⊢ ∀ (i : ↑s), SetIndependent ↑i
state_after: no goals
Theorem: Rel.image_univ
File: Mathlib/Data/Rel.lean

tactic: ext y
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
⊢ r.image Set.univ = r.codom
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
y : β
⊢ y ∈ r.image Set.univ ↔ y ∈ r.codom

tactic: simp [mem_image, codom]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
r : Rel α β
y : β
⊢ y ∈ r.image Set.univ ↔ y ∈ r.codom
state_after: no goals
Theorem: iSup_singleton
File: Mathlib/Order/CompleteLattice.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a b✝ : α
f : β → α
b : β
⊢ ⨆ x ∈ {b}, f x = f b
state_after: no goals
Theorem: FreeAlgebra.ι_injective
File: Mathlib/Algebra/FreeAlgebra.lean

tactic: classical exact fun hxy : x ≠ y ↦
    let f : FreeAlgebra R X →ₐ[R] R := lift R fun z ↦ if x = z then (1 : R) else 0
    have hfx1 : f (ι R x) = 1 := (lift_ι_apply _ _).trans <| if_pos rfl
    have hfy1 : f (ι R y) = 1 := hoxy ▸ hfx1
    have hfy0 : f (ι R y) = 0 := (lift_ι_apply _ _).trans <| if_neg hxy
    one_ne_zero <| hfy1.symm.trans hfy0
state_before: R : Type u_1
inst✝³ : CommSemiring R
X : Type u_2
A : Type u_3
inst✝² : Semiring A
inst✝¹ : Algebra R A
inst✝ : Nontrivial R
x y : X
hoxy : ι R x = ι R y
⊢ ¬x = y → False
state_after: no goals

tactic: exact fun hxy : x ≠ y ↦
let f : FreeAlgebra R X →ₐ[R] R := lift R fun z ↦ if x = z then (1 : R) else 0
have hfx1 : f (ι R x) = 1 := (lift_ι_apply _ _).trans <| if_pos rfl
have hfy1 : f (ι R y) = 1 := hoxy ▸ hfx1
have hfy0 : f (ι R y) = 0 := (lift_ι_apply _ _).trans <| if_neg hxy
one_ne_zero <| hfy1.symm.trans hfy0
state_before: R : Type u_1
inst✝³ : CommSemiring R
X : Type u_2
A : Type u_3
inst✝² : Semiring A
inst✝¹ : Algebra R A
inst✝ : Nontrivial R
x y : X
hoxy : ι R x = ι R y
⊢ ¬x = y → False
state_after: no goals
Theorem: LieModule.traceForm_apply_eq_zero_of_mem_lcs_of_mem_center
File: Mathlib/Algebra/Lie/TraceForm.lean

tactic: apply traceForm_eq_zero_if_mem_lcs_of_mem_ucs R L M 1
state_before: R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
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
inst✝¹ : Module.Free R M
inst✝ : Module.Finite R M
x y : L
hx : x ∈ lowerCentralSeries R L L 1
hy : y ∈ LieAlgebra.center R L
⊢ ((traceForm R L M) x) y = 0
state_after: case hx
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
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
inst✝¹ : Module.Free R M
inst✝ : Module.Finite R M
x y : L
hx : x ∈ lowerCentralSeries R L L 1
hy : y ∈ LieAlgebra.center R L
⊢ x ∈ ⊤.lcs L 1

case hy
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
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
inst✝¹ : Module.Free R M
inst✝ : Module.Finite R M
x y : L
hx : x ∈ lowerCentralSeries R L L 1
hy : y ∈ LieAlgebra.center R L
⊢ y ∈ LieSubmodule.ucs 1 ⊥

tactic: simpa using hx
state_before: case hx
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
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
inst✝¹ : Module.Free R M
inst✝ : Module.Finite R M
x y : L
hx : x ∈ lowerCentralSeries R L L 1
hy : y ∈ LieAlgebra.center R L
⊢ x ∈ ⊤.lcs L 1
state_after: no goals

tactic: simpa using hy
state_before: case hy
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
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
inst✝¹ : Module.Free R M
inst✝ : Module.Finite R M
x y : L
hx : x ∈ lowerCentralSeries R L L 1
hy : y ∈ LieAlgebra.center R L
⊢ y ∈ LieSubmodule.ucs 1 ⊥
state_after: no goals
Theorem: Convex.toCone_isLeast
File: Mathlib/Analysis/Convex/Cone/Basic.lean

tactic: refine ⟨hs.subset_toCone, fun t ht x hx => ?_⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s : Set E
hs : Convex 𝕜 s
x : E
⊢ IsLeast {t | s ⊆ ↑t} (toCone s hs)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s : Set E
hs : Convex 𝕜 s
x✝ : E
t : ConvexCone 𝕜 E
ht : t ∈ {t | s ⊆ ↑t}
x : E
hx : x ∈ toCone s hs
⊢ x ∈ t

tactic: rcases hs.mem_toCone.1 hx with ⟨c, hc, y, hy, rfl⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s : Set E
hs : Convex 𝕜 s
x✝ : E
t : ConvexCone 𝕜 E
ht : t ∈ {t | s ⊆ ↑t}
x : E
hx : x ∈ toCone s hs
⊢ x ∈ t
state_after: case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s : Set E
hs : Convex 𝕜 s
x : E
t : ConvexCone 𝕜 E
ht : t ∈ {t | s ⊆ ↑t}
c : 𝕜
hc : 0 < c
y : E
hy : y ∈ s
hx : c • y ∈ toCone s hs
⊢ c • y ∈ t

tactic: exact t.smul_mem hc (ht hy)
state_before: case intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝² : LinearOrderedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
s : Set E
hs : Convex 𝕜 s
x : E
t : ConvexCone 𝕜 E
ht : t ∈ {t | s ⊆ ↑t}
c : 𝕜
hc : 0 < c
y : E
hy : y ∈ s
hx : c • y ∈ toCone s hs
⊢ c • y ∈ t
state_after: no goals
Theorem: IsRingHom.map_sub
File: Mathlib/Deprecated/Ring.lean

tactic: simp [sub_eq_add_neg, hf.map_add, hf.map_neg]
state_before: α : Type u
β : Type v
inst✝¹ : Ring α
inst✝ : Ring β
f : α → β
hf✝ : IsRingHom f
x y : α
hf : IsRingHom f
⊢ f (x - y) = f x - f y
state_after: no goals
Theorem: IntermediateField.adjoin_simple_toSubalgebra_of_integral
File: Mathlib/FieldTheory/Adjoin.lean

tactic: apply adjoin_algebraic_toSubalgebra
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
hα : IsIntegral F α
⊢ F⟮α⟯.toSubalgebra = Algebra.adjoin F {α}
state_after: case hS
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
hα : IsIntegral F α
⊢ ∀ x ∈ {α}, IsAlgebraic F x

tactic: rintro x (rfl : x = α)
state_before: case hS
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
α : E
hα : IsIntegral F α
⊢ ∀ x ∈ {α}, IsAlgebraic F x
state_after: case hS
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
x : E
hα : IsIntegral F x
⊢ IsAlgebraic F x

tactic: rwa [isAlgebraic_iff_isIntegral]
state_before: case hS
F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S : Set E
x : E
hα : IsIntegral F x
⊢ IsAlgebraic F x
state_after: no goals
Theorem: CategoryTheory.Limits.factorThruKernelSubobject_comp_arrow
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: dsimp [factorThruKernelSubobject]
state_before: C : Type u
inst✝² : Category.{v, u} C
X Y Z : C
inst✝¹ : HasZeroMorphisms C
f : X ⟶ Y
inst✝ : HasKernel f
W : C
h : W ⟶ X
w : h ≫ f = 0
⊢ factorThruKernelSubobject f h w ≫ (kernelSubobject f).arrow = h
state_after: C : Type u
inst✝² : Category.{v, u} C
X Y Z : C
inst✝¹ : HasZeroMorphisms C
f : X ⟶ Y
inst✝ : HasKernel f
W : C
h : W ⟶ X
w : h ≫ f = 0
⊢ (kernelSubobject f).factorThru h ⋯ ≫ (kernelSubobject f).arrow = h

tactic: simp
state_before: C : Type u
inst✝² : Category.{v, u} C
X Y Z : C
inst✝¹ : HasZeroMorphisms C
f : X ⟶ Y
inst✝ : HasKernel f
W : C
h : W ⟶ X
w : h ≫ f = 0
⊢ (kernelSubobject f).factorThru h ⋯ ≫ (kernelSubobject f).arrow = h
state_after: no goals