1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finset.sym2_univ
File: Mathlib/Data/Finset/Sym.lean

tactic: ext
state_before: α : Type u_1
s t : Finset α
a b : α
inst✝ : Fintype α
inst : optParam (Fintype (Sym2 α)) Sym2.instFintype
⊢ univ.sym2 = univ
state_after: case a
α : Type u_1
s t : Finset α
a b : α
inst✝ : Fintype α
inst : optParam (Fintype (Sym2 α)) Sym2.instFintype
a✝ : Sym2 α
⊢ a✝ ∈ univ.sym2 ↔ a✝ ∈ univ

tactic: simp only [mem_sym2_iff, mem_univ, implies_true]
state_before: case a
α : Type u_1
s t : Finset α
a b : α
inst✝ : Fintype α
inst : optParam (Fintype (Sym2 α)) Sym2.instFintype
a✝ : Sym2 α
⊢ a✝ ∈ univ.sym2 ↔ a✝ ∈ univ
state_after: no goals
Theorem: isOpen_empty
File: Mathlib/Topology/Basic.lean

tactic: rw [← sUnion_empty]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ IsOpen ∅
state_after: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ IsOpen (⋃₀ ∅)

tactic: exact isOpen_sUnion fun a => False.elim
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ IsOpen (⋃₀ ∅)
state_after: no goals
Theorem: Filter.HasBasis.isVonNBounded_iff
File: Mathlib/Analysis/LocallyConvex/Bounded.lean

tactic: refine ⟨fun hA i hi => hA (h.mem_of_mem hi), fun hA V hV => ?_⟩
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : (𝓝 0).HasBasis q s
⊢ IsVonNBounded 𝕜 A ↔ ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
state_after: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : (𝓝 0).HasBasis q s
hA : ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
V : Set E
hV : V ∈ 𝓝 0
⊢ Absorbs 𝕜 V A

tactic: rcases h.mem_iff.mp hV with ⟨i, hi, hV⟩
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : (𝓝 0).HasBasis q s
hA : ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
V : Set E
hV : V ∈ 𝓝 0
⊢ Absorbs 𝕜 V A
state_after: case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : (𝓝 0).HasBasis q s
hA : ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
V : Set E
hV✝ : V ∈ 𝓝 0
i : ι
hi : q i
hV : s i ⊆ V
⊢ Absorbs 𝕜 V A

tactic: exact (hA i hi).mono_left hV
state_before: case intro.intro
𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
E' : Type u_4
F : Type u_5
ι : Type u_6
inst✝³ : SeminormedRing 𝕜
inst✝² : SMul 𝕜 E
inst✝¹ : Zero E
inst✝ : TopologicalSpace E
q : ι → Prop
s : ι → Set E
A : Set E
h : (𝓝 0).HasBasis q s
hA : ∀ (i : ι), q i → Absorbs 𝕜 (s i) A
V : Set E
hV✝ : V ∈ 𝓝 0
i : ι
hi : q i
hV : s i ⊆ V
⊢ Absorbs 𝕜 V A
state_after: no goals
Theorem: Cardinal.add_le_add'
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rintro ⟨α⟩ ⟨β⟩ ⟨γ⟩ ⟨δ⟩ ⟨e₁⟩ ⟨e₂⟩
state_before: α β : Type u
⊢ ∀ {a b c d : Cardinal.{u_1}}, a ≤ b → c ≤ d → a + c ≤ b + d
state_after: case mk.mk.mk.mk.intro.intro
α✝ β✝ : Type u
a✝ : Cardinal.{u_1}
α : Type u_1
b✝ : Cardinal.{u_1}
β : Type u_1
c✝ : Cardinal.{u_1}
γ : Type u_1
d✝ : Cardinal.{u_1}
δ : Type u_1
e₁ : α ↪ β
e₂ : γ ↪ δ
⊢ Quot.mk Setoid.r α + Quot.mk Setoid.r γ ≤ Quot.mk Setoid.r β + Quot.mk Setoid.r δ

tactic: exact ⟨e₁.sumMap e₂⟩
state_before: case mk.mk.mk.mk.intro.intro
α✝ β✝ : Type u
a✝ : Cardinal.{u_1}
α : Type u_1
b✝ : Cardinal.{u_1}
β : Type u_1
c✝ : Cardinal.{u_1}
γ : Type u_1
d✝ : Cardinal.{u_1}
δ : Type u_1
e₁ : α ↪ β
e₂ : γ ↪ δ
⊢ Quot.mk Setoid.r α + Quot.mk Setoid.r γ ≤ Quot.mk Setoid.r β + Quot.mk Setoid.r δ
state_after: no goals
Theorem: Complex.exp_antiperiodic
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simp [exp_add, exp_mul_I]
state_before: ⊢ Function.Antiperiodic cexp (↑π * I)
state_after: no goals
Theorem: SimpleGraph.Walk.isPath_reverse_iff
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: constructor <;> intro h <;> convert h.reverse
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y u v : V
p : G.Walk u v
⊢ p.reverse.IsPath ↔ p.IsPath
state_after: case h.e'_5
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y u v : V
p : G.Walk u v
h : p.reverse.IsPath
⊢ p = p.reverse.reverse

tactic: simp
state_before: case h.e'_5
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y u v : V
p : G.Walk u v
h : p.reverse.IsPath
⊢ p = p.reverse.reverse
state_after: no goals
Theorem: Polynomial.Monic.comp_X_sub_C
File: Mathlib/Algebra/Polynomial/RingDivision.lean

tactic: simpa using hp.comp_X_add_C (-r)
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p q : R[X]
hp : p.Monic
r : R
⊢ (p.comp (X - C r)).Monic
state_after: no goals
Theorem: CharP.quotient_iff_le_ker_natCast
File: Mathlib/Algebra/CharP/Quotient.lean

tactic: rw [CharP.quotient_iff, RingHom.ker_eq_comap_bot]
state_before: R : Type u_1
inst✝¹ : CommRing R
n : ℕ
inst✝ : CharP R n
I : Ideal R
⊢ CharP (R ⧸ I) n ↔ Ideal.comap (Nat.castRingHom R) I ≤ RingHom.ker (Nat.castRingHom R)
state_after: R : Type u_1
inst✝¹ : CommRing R
n : ℕ
inst✝ : CharP R n
I : Ideal R
⊢ (∀ (x : ℕ), ↑x ∈ I → ↑x = 0) ↔ Ideal.comap (Nat.castRingHom R) I ≤ Ideal.comap (Nat.castRingHom R) ⊥

tactic: rfl
state_before: R : Type u_1
inst✝¹ : CommRing R
n : ℕ
inst✝ : CharP R n
I : Ideal R
⊢ (∀ (x : ℕ), ↑x ∈ I → ↑x = 0) ↔ Ideal.comap (Nat.castRingHom R) I ≤ Ideal.comap (Nat.castRingHom R) ⊥
state_after: no goals
Theorem: Finset.Icc_diff_Ioo_self
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: simp [← coe_inj, h]
state_before: ι : Type u_1
α : Type u_2
inst✝² : PartialOrder α
inst✝¹ : LocallyFiniteOrder α
a b c : α
inst✝ : DecidableEq α
h : a ≤ b
⊢ Icc a b \ Ioo a b = {a, b}
state_after: no goals
Theorem: AlgebraicGeometry.quasiSeparatedSpace_of_quasiSeparated
File: Mathlib/AlgebraicGeometry/Morphisms/QuasiSeparated.lean

tactic: rw [quasiSeparatedSpace_iff_quasiSeparated] at hY ⊢
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
hY : QuasiSeparatedSpace ↑↑Y.toPresheafedSpace
inst✝ : QuasiSeparated f
⊢ QuasiSeparatedSpace ↑↑X.toPresheafedSpace
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
hY : QuasiSeparated (terminal.from Y)
inst✝ : QuasiSeparated f
⊢ QuasiSeparated (terminal.from X)

tactic: have : f ≫ terminal.from Y = terminal.from X := terminalIsTerminal.hom_ext _ _
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
hY : QuasiSeparated (terminal.from Y)
inst✝ : QuasiSeparated f
⊢ QuasiSeparated (terminal.from X)
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
hY : QuasiSeparated (terminal.from Y)
inst✝ : QuasiSeparated f
this : f ≫ terminal.from Y = terminal.from X
⊢ QuasiSeparated (terminal.from X)

tactic: rw [← this]
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
hY : QuasiSeparated (terminal.from Y)
inst✝ : QuasiSeparated f
this : f ≫ terminal.from Y = terminal.from X
⊢ QuasiSeparated (terminal.from X)
state_after: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
hY : QuasiSeparated (terminal.from Y)
inst✝ : QuasiSeparated f
this : f ≫ terminal.from Y = terminal.from X
⊢ QuasiSeparated (f ≫ terminal.from Y)

tactic: infer_instance
state_before: X✝ Y✝ : Scheme
f✝ : X✝ ⟶ Y✝
X Y : Scheme
f : X ⟶ Y
hY : QuasiSeparated (terminal.from Y)
inst✝ : QuasiSeparated f
this : f ≫ terminal.from Y = terminal.from X
⊢ QuasiSeparated (f ≫ terminal.from Y)
state_after: no goals
Theorem: Real.smul_map_volume_mul_right
File: Mathlib/MeasureTheory/Measure/Lebesgue/Basic.lean

tactic: simpa only [mul_comm] using Real.smul_map_volume_mul_left h
state_before: ι : Type u_1
inst✝ : Fintype ι
a : ℝ
h : a ≠ 0
⊢ ofReal |a| • Measure.map (fun x => x * a) volume = volume
state_after: no goals
Theorem: le_himp_iff_left
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [le_himp_iff, inf_idem]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedHeytingAlgebra α
a b c d : α
⊢ a ≤ a ⇨ b ↔ a ≤ b
state_after: no goals
Theorem: Filter.HasBasis.sup_pure
File: Mathlib/Order/Filter/Bases.lean

tactic: simp only [← principal_singleton, hl.sup_principal]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : l.HasBasis p s
x : α
⊢ (l ⊔ pure x).HasBasis p fun i => s i ∪ {x}
state_after: no goals
Theorem: Multiset.disjoint_union_right
File: Mathlib/Data/Multiset/Basic.lean

tactic: simp [Disjoint, or_imp, forall_and]
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s t u : Multiset α
⊢ s.Disjoint (t ∪ u) ↔ s.Disjoint t ∧ s.Disjoint u
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.integral_eq
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: simp [integral, setToSimpleFunc, weightedSMul_apply]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
p : ℝ≥0∞
G : Type u_5
F' : Type u_6
inst✝² : NormedAddCommGroup G
inst✝¹ : NormedAddCommGroup F'
inst✝ : NormedSpace ℝ F'
m✝ : MeasurableSpace α
μ✝ : Measure α
m : MeasurableSpace α
μ : Measure α
f : α →ₛ F
⊢ integral μ f = ∑ x ∈ f.range, (μ (↑f ⁻¹' {x})).toReal • x
state_after: no goals
Theorem: pointed_innerDualCone
File: Mathlib/Analysis/Convex/Cone/InnerDual.lean

tactic: rw [inner_zero_right]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝¹ : NormedAddCommGroup H
inst✝ : InnerProductSpace ℝ H
s t : Set H
x : H
x✝ : x ∈ s
⊢ 0 ≤ ⟪x, 0⟫_ℝ
state_after: no goals
Theorem: Set.image_insert_eq
File: Mathlib/Data/Set/Image.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
s✝ t : Set α
f : α → β
a : α
s : Set α
⊢ f '' insert a s = insert (f a) (f '' s)
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
s✝ t : Set α
f : α → β
a : α
s : Set α
x✝ : β
⊢ x✝ ∈ f '' insert a s ↔ x✝ ∈ insert (f a) (f '' s)

tactic: simp [and_or_left, exists_or, eq_comm, or_comm, and_comm]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
f✝ : α → β
s✝ t : Set α
f : α → β
a : α
s : Set α
x✝ : β
⊢ x✝ ∈ f '' insert a s ↔ x✝ ∈ insert (f a) (f '' s)
state_after: no goals
Theorem: Matrix.updateRow_subsingleton
File: Mathlib/Data/Matrix/RowCol.lean

tactic: ext x y
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i✝ : m
j : n
b✝ : n → α
c : m → α
inst✝ : Subsingleton m
A : Matrix m n R
i : m
b : n → R
⊢ A.updateRow i b = (row (Fin 1) b).submatrix (Function.const m 0) id
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i✝ : m
j : n
b✝ : n → α
c : m → α
inst✝ : Subsingleton m
A : Matrix m n R
i : m
b : n → R
x : m
y : n
⊢ A.updateRow i b x y = (row (Fin 1) b).submatrix (Function.const m 0) id x y

tactic: simp [updateColumn_apply, Subsingleton.elim i x]
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i✝ : m
j : n
b✝ : n → α
c : m → α
inst✝ : Subsingleton m
A : Matrix m n R
i : m
b : n → R
x : m
y : n
⊢ A.updateRow i b x y = (row (Fin 1) b).submatrix (Function.const m 0) id x y
state_after: no goals
Theorem: hnot_top
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [← top_sdiff', sdiff_self]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CoheytingAlgebra α
a b c : α
⊢ ￢⊤ = ⊥
state_after: no goals
Theorem: Metric.emetric_closedBall
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: ext y
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
ε : ℝ
h : 0 ≤ ε
⊢ EMetric.closedBall x (ENNReal.ofReal ε) = closedBall x ε
state_after: case h
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
ε : ℝ
h : 0 ≤ ε
y : α
⊢ y ∈ EMetric.closedBall x (ENNReal.ofReal ε) ↔ y ∈ closedBall x ε

tactic: simp [edist_le_ofReal h]
state_before: case h
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
ε : ℝ
h : 0 ≤ ε
y : α
⊢ y ∈ EMetric.closedBall x (ENNReal.ofReal ε) ↔ y ∈ closedBall x ε
state_after: no goals
Theorem: Irreducible.natSepDegree_dvd_natDegree
File: Mathlib/FieldTheory/SeparableDegree.lean

tactic: obtain ⟨q, _⟩ := ExpChar.exists F
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
h : Irreducible f
⊢ f.natSepDegree ∣ f.natDegree
state_after: case intro
F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
h : Irreducible f
q : ℕ
h✝ : ExpChar F q
⊢ f.natSepDegree ∣ f.natDegree

tactic: have hf := h.hasSeparableContraction q
state_before: case intro
F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
h : Irreducible f
q : ℕ
h✝ : ExpChar F q
⊢ f.natSepDegree ∣ f.natDegree
state_after: case intro
F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
h : Irreducible f
q : ℕ
h✝ : ExpChar F q
hf : HasSeparableContraction q f
⊢ f.natSepDegree ∣ f.natDegree

tactic: rw [hf.natSepDegree_eq]
state_before: case intro
F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
h : Irreducible f
q : ℕ
h✝ : ExpChar F q
hf : HasSeparableContraction q f
⊢ f.natSepDegree ∣ f.natDegree
state_after: case intro
F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
h : Irreducible f
q : ℕ
h✝ : ExpChar F q
hf : HasSeparableContraction q f
⊢ hf.degree ∣ f.natDegree

tactic: exact hf.dvd_degree
state_before: case intro
F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
h : Irreducible f
q : ℕ
h✝ : ExpChar F q
hf : HasSeparableContraction q f
⊢ hf.degree ∣ f.natDegree
state_after: no goals
Theorem: CategoryTheory.Limits.Concrete.prodEquiv_symm_apply_fst
File: Mathlib/CategoryTheory/Limits/Shapes/ConcreteCategory.lean

tactic: obtain ⟨y, rfl⟩ := (prodEquiv X₁ X₂).surjective x
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : ConcreteCategory C
X₁ X₂ : C
inst✝¹ : HasBinaryProduct X₁ X₂
inst✝ : PreservesLimit (pair X₁ X₂) (forget C)
x : (forget C).obj X₁ × (forget C).obj X₂
⊢ prod.fst ((prodEquiv X₁ X₂).symm x) = x.1
state_after: case intro
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : ConcreteCategory C
X₁ X₂ : C
inst✝¹ : HasBinaryProduct X₁ X₂
inst✝ : PreservesLimit (pair X₁ X₂) (forget C)
y : (forget C).obj (X₁ ⨯ X₂)
⊢ prod.fst ((prodEquiv X₁ X₂).symm ((prodEquiv X₁ X₂) y)) = ((prodEquiv X₁ X₂) y).1

tactic: simp
state_before: case intro
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : ConcreteCategory C
X₁ X₂ : C
inst✝¹ : HasBinaryProduct X₁ X₂
inst✝ : PreservesLimit (pair X₁ X₂) (forget C)
y : (forget C).obj (X₁ ⨯ X₂)
⊢ prod.fst ((prodEquiv X₁ X₂).symm ((prodEquiv X₁ X₂) y)) = ((prodEquiv X₁ X₂) y).1
state_after: no goals
Theorem: Algebra.adjoin_nonUnitalSubalgebra_eq_span
File: Mathlib/Algebra/Algebra/Subalgebra/Unitization.lean

tactic: rw [adjoin_eq_span, Submonoid.closure_eq_one_union, span_union, ← NonUnitalAlgebra.adjoin_eq_span,
    NonUnitalAlgebra.adjoin_eq]
state_before: R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
s : NonUnitalSubalgebra R A
⊢ Subalgebra.toSubmodule (adjoin R ↑s) = span R {1} ⊔ s.toSubmodule
state_after: no goals
Theorem: eq_on_inv₀
File: Mathlib/Algebra/GroupWithZero/Units/Lemmas.lean

tactic: rcases eq_or_ne a 0 with (rfl | ha)
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝⁷ : MonoidWithZero M₀
inst✝⁶ : GroupWithZero G₀
inst✝⁵ : Nontrivial M₀
inst✝⁴ : MonoidWithZero M₀'
inst✝³ : FunLike F G₀ M₀
inst✝² : MonoidWithZeroHomClass F G₀ M₀
inst✝¹ : FunLike F' G₀ M₀'
inst✝ : MonoidWithZeroHomClass F' G₀ M₀'
f✝ : F
a : G₀
f g : F'
h : f a = g a
⊢ f a⁻¹ = g a⁻¹
state_after: case inl
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝⁷ : MonoidWithZero M₀
inst✝⁶ : GroupWithZero G₀
inst✝⁵ : Nontrivial M₀
inst✝⁴ : MonoidWithZero M₀'
inst✝³ : FunLike F G₀ M₀
inst✝² : MonoidWithZeroHomClass F G₀ M₀
inst✝¹ : FunLike F' G₀ M₀'
inst✝ : MonoidWithZeroHomClass F' G₀ M₀'
f✝ : F
f g : F'
h : f 0 = g 0
⊢ f 0⁻¹ = g 0⁻¹

case inr
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝⁷ : MonoidWithZero M₀
inst✝⁶ : GroupWithZero G₀
inst✝⁵ : Nontrivial M₀
inst✝⁴ : MonoidWithZero M₀'
inst✝³ : FunLike F G₀ M₀
inst✝² : MonoidWithZeroHomClass F G₀ M₀
inst✝¹ : FunLike F' G₀ M₀'
inst✝ : MonoidWithZeroHomClass F' G₀ M₀'
f✝ : F
a : G₀
f g : F'
h : f a = g a
ha : a ≠ 0
⊢ f a⁻¹ = g a⁻¹

tactic: rw [inv_zero, map_zero, map_zero]
state_before: case inl
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝⁷ : MonoidWithZero M₀
inst✝⁶ : GroupWithZero G₀
inst✝⁵ : Nontrivial M₀
inst✝⁴ : MonoidWithZero M₀'
inst✝³ : FunLike F G₀ M₀
inst✝² : MonoidWithZeroHomClass F G₀ M₀
inst✝¹ : FunLike F' G₀ M₀'
inst✝ : MonoidWithZeroHomClass F' G₀ M₀'
f✝ : F
f g : F'
h : f 0 = g 0
⊢ f 0⁻¹ = g 0⁻¹
state_after: no goals

tactic: exact (IsUnit.mk0 a ha).eq_on_inv f g h
state_before: case inr
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝⁷ : MonoidWithZero M₀
inst✝⁶ : GroupWithZero G₀
inst✝⁵ : Nontrivial M₀
inst✝⁴ : MonoidWithZero M₀'
inst✝³ : FunLike F G₀ M₀
inst✝² : MonoidWithZeroHomClass F G₀ M₀
inst✝¹ : FunLike F' G₀ M₀'
inst✝ : MonoidWithZeroHomClass F' G₀ M₀'
f✝ : F
a : G₀
f g : F'
h : f a = g a
ha : a ≠ 0
⊢ f a⁻¹ = g a⁻¹
state_after: no goals
Theorem: OrderedCommGroup.to_contravariantClass_right_le
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: simpa using mul_le_mul_right' bc a⁻¹
state_before: α✝ α : Type u
inst✝ : OrderedCommGroup α
a b c : α
bc : swap (fun x x_1 => x * x_1) a b ≤ swap (fun x x_1 => x * x_1) a c
⊢ b ≤ c
state_after: no goals
Theorem: Profinite.NobelingProof.factors_prod_eq_basis
File: Mathlib/Topology/Category/Profinite/Nobeling.lean

tactic: ext y
state_before: I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
s : Finset I
x : ↑(π C fun x => x ∈ s)
⊢ (factors C s x).prod = spanFinBasis C s x
state_after: case h
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
s : Finset I
x y : ↑(π C fun x => x ∈ s)
⊢ (factors C s x).prod y = (spanFinBasis C s x) y

tactic: dsimp [spanFinBasis]
state_before: case h
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
s : Finset I
x y : ↑(π C fun x => x ∈ s)
⊢ (factors C s x).prod y = (spanFinBasis C s x) y
state_after: case h
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
s : Finset I
x y : ↑(π C fun x => x ∈ s)
⊢ (factors C s x).prod y = if y = x then 1 else 0

tactic: split_ifs with h <;> [exact factors_prod_eq_basis_of_eq _ _ h;
  exact factors_prod_eq_basis_of_ne _ _ h]
state_before: case h
I : Type u
inst✝¹ : LinearOrder I
inst✝ : IsWellOrder I fun x x_1 => x < x_1
C : Set (I → Bool)
s : Finset I
x y : ↑(π C fun x => x ∈ s)
⊢ (factors C s x).prod y = if y = x then 1 else 0
state_after: no goals
Theorem: IsCyclotomicExtension.equiv
File: Mathlib/NumberTheory/Cyclotomic/Basic.lean

tactic: letI : Algebra B C := f.toAlgHom.toRingHom.toAlgebra
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁷ : CommRing A
inst✝⁶ : CommRing B
inst✝⁵ : Algebra A B
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Algebra K L
C : Type u_1
inst✝¹ : CommRing C
inst✝ : Algebra A C
h : IsCyclotomicExtension S A B
f : B ≃ₐ[A] C
⊢ IsCyclotomicExtension S A C
state_after: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁷ : CommRing A
inst✝⁶ : CommRing B
inst✝⁵ : Algebra A B
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Algebra K L
C : Type u_1
inst✝¹ : CommRing C
inst✝ : Algebra A C
h : IsCyclotomicExtension S A B
f : B ≃ₐ[A] C
this : Algebra B C := (↑f).toAlgebra
⊢ IsCyclotomicExtension S A C

tactic: haveI : IsCyclotomicExtension {1} B C := singleton_one_of_algebraMap_bijective f.surjective
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁷ : CommRing A
inst✝⁶ : CommRing B
inst✝⁵ : Algebra A B
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Algebra K L
C : Type u_1
inst✝¹ : CommRing C
inst✝ : Algebra A C
h : IsCyclotomicExtension S A B
f : B ≃ₐ[A] C
this : Algebra B C := (↑f).toAlgebra
⊢ IsCyclotomicExtension S A C
state_after: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁷ : CommRing A
inst✝⁶ : CommRing B
inst✝⁵ : Algebra A B
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Algebra K L
C : Type u_1
inst✝¹ : CommRing C
inst✝ : Algebra A C
h : IsCyclotomicExtension S A B
f : B ≃ₐ[A] C
this✝ : Algebra B C := (↑f).toAlgebra
this : IsCyclotomicExtension {1} B C
⊢ IsCyclotomicExtension S A C

tactic: haveI : IsScalarTower A B C := IsScalarTower.of_algHom f.toAlgHom
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁷ : CommRing A
inst✝⁶ : CommRing B
inst✝⁵ : Algebra A B
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Algebra K L
C : Type u_1
inst✝¹ : CommRing C
inst✝ : Algebra A C
h : IsCyclotomicExtension S A B
f : B ≃ₐ[A] C
this✝ : Algebra B C := (↑f).toAlgebra
this : IsCyclotomicExtension {1} B C
⊢ IsCyclotomicExtension S A C
state_after: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁷ : CommRing A
inst✝⁶ : CommRing B
inst✝⁵ : Algebra A B
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Algebra K L
C : Type u_1
inst✝¹ : CommRing C
inst✝ : Algebra A C
h : IsCyclotomicExtension S A B
f : B ≃ₐ[A] C
this✝¹ : Algebra B C := (↑f).toAlgebra
this✝ : IsCyclotomicExtension {1} B C
this : IsScalarTower A B C
⊢ IsCyclotomicExtension S A C

tactic: exact (iff_union_singleton_one _ _ _).2 (trans S {1} A B C f.injective)
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁷ : CommRing A
inst✝⁶ : CommRing B
inst✝⁵ : Algebra A B
inst✝⁴ : Field K
inst✝³ : Field L
inst✝² : Algebra K L
C : Type u_1
inst✝¹ : CommRing C
inst✝ : Algebra A C
h : IsCyclotomicExtension S A B
f : B ≃ₐ[A] C
this✝¹ : Algebra B C := (↑f).toAlgebra
this✝ : IsCyclotomicExtension {1} B C
this : IsScalarTower A B C
⊢ IsCyclotomicExtension S A C
state_after: no goals