1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: LinearMap.pow_eq_aeval_mod_charpoly
File: Mathlib/LinearAlgebra/Charpoly/Basic.lean

tactic: rw [← aeval_eq_aeval_mod_charpoly, map_pow, aeval_X]
state_before: R : Type u
M : Type v
inst✝⁵ : CommRing R
inst✝⁴ : Nontrivial R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : Module.Free R M
inst✝ : Module.Finite R M
f : M →ₗ[R] M
k : ℕ
⊢ f ^ k = (aeval f) (X ^ k %ₘ f.charpoly)
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.pentagon_inv_inv_hom_inv_inv
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X Y Z : C
⊢ inv ((α_ W X (Y ⊗ Z)).inv ≫ (α_ (W ⊗ X) Y Z).inv ≫ (α_ W X Y).hom ▷ Z) =
    inv (W ◁ (α_ X Y Z).inv ≫ (α_ W (X ⊗ Y) Z).inv)
state_after: no goals
Theorem: Module.End.exists_eigenvalue
File: Mathlib/LinearAlgebra/Eigenspace/Triangularizable.lean

tactic: simp_rw [hasEigenvalue_iff_mem_spectrum]
state_before: K : Type u_1
V : Type u_2
inst✝⁵ : Field K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
inst✝² : IsAlgClosed K
inst✝¹ : FiniteDimensional K V
inst✝ : Nontrivial V
f : End K V
⊢ ∃ c, f.HasEigenvalue c
state_after: K : Type u_1
V : Type u_2
inst✝⁵ : Field K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
inst✝² : IsAlgClosed K
inst✝¹ : FiniteDimensional K V
inst✝ : Nontrivial V
f : End K V
⊢ ∃ c, c ∈ spectrum K f

tactic: exact spectrum.nonempty_of_isAlgClosed_of_finiteDimensional K f
state_before: K : Type u_1
V : Type u_2
inst✝⁵ : Field K
inst✝⁴ : AddCommGroup V
inst✝³ : Module K V
inst✝² : IsAlgClosed K
inst✝¹ : FiniteDimensional K V
inst✝ : Nontrivial V
f : End K V
⊢ ∃ c, c ∈ spectrum K f
state_after: no goals
Theorem: Subgroup.closure_preimage_eq_top
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: apply map_injective (closure s).subtype_injective
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
f : G →* N
s : Set G
⊢ closure (⇑(closure s).subtype ⁻¹' s) = ⊤
state_after: case a
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
f : G →* N
s : Set G
⊢ map (closure s).subtype (closure (⇑(closure s).subtype ⁻¹' s)) = map (closure s).subtype ⊤

tactic: rw [MonoidHom.map_closure, ← MonoidHom.range_eq_map, subtype_range,
  Set.image_preimage_eq_of_subset]
state_before: case a
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
f : G →* N
s : Set G
⊢ map (closure s).subtype (closure (⇑(closure s).subtype ⁻¹' s)) = map (closure s).subtype ⊤
state_after: case a
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
f : G →* N
s : Set G
⊢ s ⊆ Set.range ⇑(closure s).subtype

tactic: rw [coeSubtype, Subtype.range_coe_subtype]
state_before: case a
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
f : G →* N
s : Set G
⊢ s ⊆ Set.range ⇑(closure s).subtype
state_after: case a
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
f : G →* N
s : Set G
⊢ s ⊆ {x | x ∈ ↑(closure s)}

tactic: exact subset_closure
state_before: case a
G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
f : G →* N
s : Set G
⊢ s ⊆ {x | x ∈ ↑(closure s)}
state_after: no goals
Theorem: Matrix.one_mul
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : NonAssocSemiring α
inst✝¹ : Fintype m
inst✝ : DecidableEq m
M : Matrix m n α
⊢ 1 * M = M
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : NonAssocSemiring α
inst✝¹ : Fintype m
inst✝ : DecidableEq m
M : Matrix m n α
i✝ : m
j✝ : n
⊢ (1 * M) i✝ j✝ = M i✝ j✝

tactic: rw [← diagonal_one, diagonal_mul, one_mul]
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝² : NonAssocSemiring α
inst✝¹ : Fintype m
inst✝ : DecidableEq m
M : Matrix m n α
i✝ : m
j✝ : n
⊢ (1 * M) i✝ j✝ = M i✝ j✝
state_after: no goals
Theorem: orderOf_eq_one_iff
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: rw [orderOf, minimalPeriod_eq_one_iff_isFixedPt, IsFixedPt, mul_one]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n m : ℕ
⊢ orderOf x = 1 ↔ x = 1
state_after: no goals
Theorem: HahnSeries.SummableFamily.embDomain_image
File: Mathlib/RingTheory/HahnSeries/Summable.lean

tactic: rw [embDomain_apply, dif_pos (Set.mem_range_self a)]
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
β : Type u_4
s : SummableFamily Γ R α
f : α ↪ β
a : α
b : β
⊢ (s.embDomain f) (f a) = s a
state_after: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
β : Type u_4
s : SummableFamily Γ R α
f : α ↪ β
a : α
b : β
⊢ s (Classical.choose ⋯) = s a

tactic: exact congr rfl (f.injective (Classical.choose_spec (Set.mem_range_self a)))
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
β : Type u_4
s : SummableFamily Γ R α
f : α ↪ β
a : α
b : β
⊢ s (Classical.choose ⋯) = s a
state_after: no goals
Theorem: MeasureTheory.ExistsSeqTendstoAe.seqTendstoAeSeq_succ
File: Mathlib/MeasureTheory/Function/ConvergenceInMeasure.lean

tactic: rw [seqTendstoAeSeq]
state_before: α : Type u_1
ι : Type u_2
E : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : MetricSpace E
f : ℕ → α → E
g : α → E
hfg : TendstoInMeasure μ f atTop g
n : ℕ
⊢ seqTendstoAeSeq hfg (n + 1) = max (seqTendstoAeSeqAux hfg (n + 1)) (seqTendstoAeSeq hfg n + 1)
state_after: no goals
Theorem: Real.cos_neg
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [cos, exp_neg]
state_before: x y : ℝ
⊢ cos (-x) = cos x
state_after: no goals
Theorem: snd_integral
File: Mathlib/MeasureTheory/Integral/SetIntegral.lean

tactic: rw [← Prod.fst_swap, swap_integral]
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝⁸ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
p : ℝ≥0∞
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace E
f : X → E × F
hf : Integrable f μ
⊢ (∫ (x : X), f x ∂μ).2 = ∫ (x : X), (f x).2 ∂μ
state_after: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝⁸ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
p : ℝ≥0∞
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace E
f : X → E × F
hf : Integrable f μ
⊢ (∫ (x : X), (f x).swap ∂μ).1 = ∫ (x : X), (f x).2 ∂μ

tactic: exact fst_integral <| hf.snd.prod_mk hf.fst
state_before: X : Type u_1
Y : Type u_2
E : Type u_3
F : Type u_4
inst✝⁸ : MeasurableSpace X
μ : Measure X
𝕜 : Type u_5
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace 𝕜 F
p : ℝ≥0∞
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace E
f : X → E × F
hf : Integrable f μ
⊢ (∫ (x : X), (f x).swap ∂μ).1 = ∫ (x : X), (f x).2 ∂μ
state_after: no goals
Theorem: CliffordAlgebra.ι_range_comap_reverse
File: Mathlib/LinearAlgebra/CliffordAlgebra/Conjugation.lean

tactic: rw [← submodule_map_reverse_eq_comap, ι_range_map_reverse]
state_before: R : Type u_1
inst✝² : CommRing R
M : Type u_2
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
⊢ Submodule.comap reverse (LinearMap.range (ι Q)) = LinearMap.range (ι Q)
state_after: no goals
Theorem: pi_norm_le_iff_of_nonempty'
File: Mathlib/Analysis/Normed/Group/Constructions.lean

tactic: by_cases hr : 0 ≤ r
state_before: ι : Type u_1
E : Type u_2
F : Type u_3
π : ι → Type u_4
inst✝³ : Fintype ι
inst✝² : (i : ι) → SeminormedGroup (π i)
inst✝¹ : SeminormedGroup E
f x : (i : ι) → π i
r : ℝ
inst✝ : Nonempty ι
⊢ ‖f‖ ≤ r ↔ ∀ (b : ι), ‖f b‖ ≤ r
state_after: case pos
ι : Type u_1
E : Type u_2
F : Type u_3
π : ι → Type u_4
inst✝³ : Fintype ι
inst✝² : (i : ι) → SeminormedGroup (π i)
inst✝¹ : SeminormedGroup E
f x : (i : ι) → π i
r : ℝ
inst✝ : Nonempty ι
hr : 0 ≤ r
⊢ ‖f‖ ≤ r ↔ ∀ (b : ι), ‖f b‖ ≤ r

case neg
ι : Type u_1
E : Type u_2
F : Type u_3
π : ι → Type u_4
inst✝³ : Fintype ι
inst✝² : (i : ι) → SeminormedGroup (π i)
inst✝¹ : SeminormedGroup E
f x : (i : ι) → π i
r : ℝ
inst✝ : Nonempty ι
hr : ¬0 ≤ r
⊢ ‖f‖ ≤ r ↔ ∀ (b : ι), ‖f b‖ ≤ r

tactic: exact pi_norm_le_iff_of_nonneg' hr
state_before: case pos
ι : Type u_1
E : Type u_2
F : Type u_3
π : ι → Type u_4
inst✝³ : Fintype ι
inst✝² : (i : ι) → SeminormedGroup (π i)
inst✝¹ : SeminormedGroup E
f x : (i : ι) → π i
r : ℝ
inst✝ : Nonempty ι
hr : 0 ≤ r
⊢ ‖f‖ ≤ r ↔ ∀ (b : ι), ‖f b‖ ≤ r
state_after: no goals

tactic: exact
  iff_of_false (fun h => hr <| (norm_nonneg' _).trans h) fun h =>
    hr <| (norm_nonneg' _).trans <| h <| Classical.arbitrary _
state_before: case neg
ι : Type u_1
E : Type u_2
F : Type u_3
π : ι → Type u_4
inst✝³ : Fintype ι
inst✝² : (i : ι) → SeminormedGroup (π i)
inst✝¹ : SeminormedGroup E
f x : (i : ι) → π i
r : ℝ
inst✝ : Nonempty ι
hr : ¬0 ≤ r
⊢ ‖f‖ ≤ r ↔ ∀ (b : ι), ‖f b‖ ≤ r
state_after: no goals
Theorem: SimpleGraph.Walk.darts_reverse
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: induction p <;> simp [*, Sym2.eq_swap]
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
⊢ p.reverse.darts = (List.map Dart.symm p.darts).reverse
state_after: no goals
Theorem: CategoryTheory.Limits.Cone.w
File: Mathlib/CategoryTheory/Limits/Cones.lean

tactic: rw [← c.π.naturality f]
state_before: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u₃
inst✝¹ : Category.{v₃, u₃} C
D : Type u₄
inst✝ : Category.{v₄, u₄} D
F : J ⥤ C
c : Cone F
j j' : J
f : j ⟶ j'
⊢ c.π.app j ≫ F.map f = c.π.app j'
state_after: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u₃
inst✝¹ : Category.{v₃, u₃} C
D : Type u₄
inst✝ : Category.{v₄, u₄} D
F : J ⥤ C
c : Cone F
j j' : J
f : j ⟶ j'
⊢ ((const J).obj c.pt).map f ≫ c.π.app j' = c.π.app j'

tactic: apply id_comp
state_before: J : Type u₁
inst✝³ : Category.{v₁, u₁} J
K : Type u₂
inst✝² : Category.{v₂, u₂} K
C : Type u₃
inst✝¹ : Category.{v₃, u₃} C
D : Type u₄
inst✝ : Category.{v₄, u₄} D
F : J ⥤ C
c : Cone F
j j' : J
f : j ⟶ j'
⊢ ((const J).obj c.pt).map f ≫ c.π.app j' = c.π.app j'
state_after: no goals
Theorem: Polynomial.roots_map_of_injective_of_card_eq_natDegree
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: apply Multiset.eq_of_le_of_card_le (map_roots_le_of_injective p hf)
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
A : Type u_1
B : Type u_2
inst✝³ : CommRing A
inst✝² : CommRing B
inst✝¹ : IsDomain A
inst✝ : IsDomain B
p : A[X]
f : A →+* B
hf : Function.Injective ⇑f
hroots : Multiset.card p.roots = p.natDegree
⊢ Multiset.map (⇑f) p.roots = (map f p).roots
state_after: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
A : Type u_1
B : Type u_2
inst✝³ : CommRing A
inst✝² : CommRing B
inst✝¹ : IsDomain A
inst✝ : IsDomain B
p : A[X]
f : A →+* B
hf : Function.Injective ⇑f
hroots : Multiset.card p.roots = p.natDegree
⊢ Multiset.card (map f p).roots ≤ Multiset.card (Multiset.map (⇑f) p.roots)

tactic: simpa only [Multiset.card_map, hroots] using (card_roots' _).trans (natDegree_map_le f p)
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
A : Type u_1
B : Type u_2
inst✝³ : CommRing A
inst✝² : CommRing B
inst✝¹ : IsDomain A
inst✝ : IsDomain B
p : A[X]
f : A →+* B
hf : Function.Injective ⇑f
hroots : Multiset.card p.roots = p.natDegree
⊢ Multiset.card (map f p).roots ≤ Multiset.card (Multiset.map (⇑f) p.roots)
state_after: no goals
Theorem: Filter.prod_sup
File: Mathlib/Order/Filter/Prod.lean

tactic: dsimp only [SProd.sprod]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f✝ : Filter α
g : Filter β
f : Filter α
g₁ g₂ : Filter β
⊢ f ×ˢ (g₁ ⊔ g₂) = f ×ˢ g₁ ⊔ f ×ˢ g₂
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f✝ : Filter α
g : Filter β
f : Filter α
g₁ g₂ : Filter β
⊢ f.prod (g₁ ⊔ g₂) = f.prod g₁ ⊔ f.prod g₂

tactic: rw [Filter.prod, comap_sup, inf_sup_left, ← Filter.prod, ← Filter.prod]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f✝ : Filter α
g : Filter β
f : Filter α
g₁ g₂ : Filter β
⊢ f.prod (g₁ ⊔ g₂) = f.prod g₁ ⊔ f.prod g₂
state_after: no goals
Theorem: Complex.abs_re_div_abs_le_one
File: Mathlib/Data/Complex/Abs.lean

tactic: simp [hz, zero_le_one]
state_before: z : ℂ
hz : z = 0
⊢ |z.re / abs z| ≤ 1
state_after: no goals

tactic: simp_rw [_root_.abs_div, abs_abs,
div_le_iff (AbsoluteValue.pos Complex.abs hz), one_mul, abs_re_le_abs]
state_before: z : ℂ
hz : ¬z = 0
⊢ |z.re / abs z| ≤ 1
state_after: no goals
Theorem: coprime_sq_sub_mul_of_odd_even
File: Mathlib/NumberTheory/PythagoreanTriples.lean

tactic: rw [Int.gcd, ← Int.natAbs_neg (m ^ 2 - n ^ 2)]
state_before: m n : ℤ
h : m.gcd n = 1
hm : m % 2 = 1
hn : n % 2 = 0
⊢ (m ^ 2 - n ^ 2).gcd (2 * m * n) = 1
state_after: m n : ℤ
h : m.gcd n = 1
hm : m % 2 = 1
hn : n % 2 = 0
⊢ (-(m ^ 2 - n ^ 2)).natAbs.gcd (2 * m * n).natAbs = 1

tactic: rw [(by ring : 2 * m * n = 2 * n * m), (by ring : -(m ^ 2 - n ^ 2) = n ^ 2 - m ^ 2)]
state_before: m n : ℤ
h : m.gcd n = 1
hm : m % 2 = 1
hn : n % 2 = 0
⊢ (-(m ^ 2 - n ^ 2)).natAbs.gcd (2 * m * n).natAbs = 1
state_after: m n : ℤ
h : m.gcd n = 1
hm : m % 2 = 1
hn : n % 2 = 0
⊢ (n ^ 2 - m ^ 2).natAbs.gcd (2 * n * m).natAbs = 1

tactic: apply coprime_sq_sub_mul_of_even_odd _ hn hm
state_before: m n : ℤ
h : m.gcd n = 1
hm : m % 2 = 1
hn : n % 2 = 0
⊢ (n ^ 2 - m ^ 2).natAbs.gcd (2 * n * m).natAbs = 1
state_after: m n : ℤ
h : m.gcd n = 1
hm : m % 2 = 1
hn : n % 2 = 0
⊢ n.gcd m = 1

tactic: rwa [Int.gcd_comm]
state_before: m n : ℤ
h : m.gcd n = 1
hm : m % 2 = 1
hn : n % 2 = 0
⊢ n.gcd m = 1
state_after: no goals

tactic: ring
state_before: m n : ℤ
h : m.gcd n = 1
hm : m % 2 = 1
hn : n % 2 = 0
⊢ 2 * m * n = 2 * n * m
state_after: no goals

tactic: ring
state_before: m n : ℤ
h : m.gcd n = 1
hm : m % 2 = 1
hn : n % 2 = 0
⊢ -(m ^ 2 - n ^ 2) = n ^ 2 - m ^ 2
state_after: no goals
Theorem: IntermediateField.adjoin_adjoin_comm
File: Mathlib/FieldTheory/Adjoin.lean

tactic: rw [adjoin_adjoin_left, adjoin_adjoin_left, Set.union_comm]
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
S T : Set E
⊢ restrictScalars F (adjoin (↥(adjoin F S)) T) = restrictScalars F (adjoin (↥(adjoin F T)) S)
state_after: no goals
Theorem: Cardinal.aleph_succ
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [aleph, add_succ, aleph'_succ, aleph]
state_before: o : Ordinal.{u_1}
⊢ aleph (succ o) = succ (aleph o)
state_after: no goals
Theorem: Primrec.option_map
File: Mathlib/Computability/Primrec.lean

tactic: cases f x <;> rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
σ : Type u_5
inst✝⁴ : Primcodable α
inst✝³ : Primcodable β
inst✝² : Primcodable γ
inst✝¹ : Primcodable δ
inst✝ : Primcodable σ
f : α → Option β
g : α → β → σ
hf : Primrec f
hg : Primrec₂ g
x : α
⊢ ((f x).bind fun b => some (g x b)) = Option.map (g x) (f x)
state_after: no goals
Theorem: Real.sin_arccos
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

tactic: by_cases hx₁ : -1 ≤ x
state_before: x✝ y x : ℝ
⊢ sin (arccos x) = √(1 - x ^ 2)
state_after: case pos
x✝ y x : ℝ
hx₁ : -1 ≤ x
⊢ sin (arccos x) = √(1 - x ^ 2)

case neg
x✝ y x : ℝ
hx₁ : ¬-1 ≤ x
⊢ sin (arccos x) = √(1 - x ^ 2)

tactic: swap
state_before: case pos
x✝ y x : ℝ
hx₁ : -1 ≤ x
⊢ sin (arccos x) = √(1 - x ^ 2)

case neg
x✝ y x : ℝ
hx₁ : ¬-1 ≤ x
⊢ sin (arccos x) = √(1 - x ^ 2)
state_after: case neg
x✝ y x : ℝ
hx₁ : ¬-1 ≤ x
⊢ sin (arccos x) = √(1 - x ^ 2)

case pos
x✝ y x : ℝ
hx₁ : -1 ≤ x
⊢ sin (arccos x) = √(1 - x ^ 2)

tactic: by_cases hx₂ : x ≤ 1
state_before: case pos
x✝ y x : ℝ
hx₁ : -1 ≤ x
⊢ sin (arccos x) = √(1 - x ^ 2)
state_after: case pos
x✝ y x : ℝ
hx₁ : -1 ≤ x
hx₂ : x ≤ 1
⊢ sin (arccos x) = √(1 - x ^ 2)

case neg
x✝ y x : ℝ
hx₁ : -1 ≤ x
hx₂ : ¬x ≤ 1
⊢ sin (arccos x) = √(1 - x ^ 2)

tactic: swap
state_before: case pos
x✝ y x : ℝ
hx₁ : -1 ≤ x
hx₂ : x ≤ 1
⊢ sin (arccos x) = √(1 - x ^ 2)

case neg
x✝ y x : ℝ
hx₁ : -1 ≤ x
hx₂ : ¬x ≤ 1
⊢ sin (arccos x) = √(1 - x ^ 2)
state_after: case neg
x✝ y x : ℝ
hx₁ : -1 ≤ x
hx₂ : ¬x ≤ 1
⊢ sin (arccos x) = √(1 - x ^ 2)

case pos
x✝ y x : ℝ
hx₁ : -1 ≤ x
hx₂ : x ≤ 1
⊢ sin (arccos x) = √(1 - x ^ 2)

tactic: rw [arccos_eq_pi_div_two_sub_arcsin, sin_pi_div_two_sub, cos_arcsin]
state_before: case pos
x✝ y x : ℝ
hx₁ : -1 ≤ x
hx₂ : x ≤ 1
⊢ sin (arccos x) = √(1 - x ^ 2)
state_after: no goals

tactic: rw [not_le] at hx₁
state_before: case neg
x✝ y x : ℝ
hx₁ : ¬-1 ≤ x
⊢ sin (arccos x) = √(1 - x ^ 2)
state_after: case neg
x✝ y x : ℝ
hx₁ : x < -1
⊢ sin (arccos x) = √(1 - x ^ 2)

tactic: rw [arccos_of_le_neg_one hx₁.le, sin_pi, sqrt_eq_zero_of_nonpos]
state_before: case neg
x✝ y x : ℝ
hx₁ : x < -1
⊢ sin (arccos x) = √(1 - x ^ 2)
state_after: case neg
x✝ y x : ℝ
hx₁ : x < -1
⊢ 1 - x ^ 2 ≤ 0

tactic: nlinarith
state_before: case neg
x✝ y x : ℝ
hx₁ : x < -1
⊢ 1 - x ^ 2 ≤ 0
state_after: no goals

tactic: rw [not_le] at hx₂
state_before: case neg
x✝ y x : ℝ
hx₁ : -1 ≤ x
hx₂ : ¬x ≤ 1
⊢ sin (arccos x) = √(1 - x ^ 2)
state_after: case neg
x✝ y x : ℝ
hx₁ : -1 ≤ x
hx₂ : 1 < x
⊢ sin (arccos x) = √(1 - x ^ 2)

tactic: rw [arccos_of_one_le hx₂.le, sin_zero, sqrt_eq_zero_of_nonpos]
state_before: case neg
x✝ y x : ℝ
hx₁ : -1 ≤ x
hx₂ : 1 < x
⊢ sin (arccos x) = √(1 - x ^ 2)
state_after: case neg
x✝ y x : ℝ
hx₁ : -1 ≤ x
hx₂ : 1 < x
⊢ 1 - x ^ 2 ≤ 0

tactic: nlinarith
state_before: case neg
x✝ y x : ℝ
hx₁ : -1 ≤ x
hx₂ : 1 < x
⊢ 1 - x ^ 2 ≤ 0
state_after: no goals
Theorem: Right.mul_nonneg
File: Mathlib/Algebra/Order/GroupWithZero/Unbundled.lean

tactic: simpa only [zero_mul] using mul_le_mul_of_nonneg_right ha hb
state_before: α : Type u_1
a b c d : α
inst✝² : MulZeroClass α
inst✝¹ : Preorder α
inst✝ : MulPosMono α
ha : 0 ≤ a
hb : 0 ≤ b
⊢ 0 ≤ a * b
state_after: no goals
Theorem: Filter.eventually_imp_distrib_right
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [imp_iff_not_or, eventually_or_distrib_right, not_frequently]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f : Filter α
p : α → Prop
q : Prop
⊢ (∀ᶠ (x : α) in f, p x → q) ↔ (∃ᶠ (x : α) in f, p x) → q
state_after: no goals
Theorem: GaussianInt.to_real_re
File: Mathlib/NumberTheory/Zsqrtd/GaussianInt.lean

tactic: simp [toComplex_def]
state_before: x : ℤ[i]
⊢ ↑x.re = (toComplex x).re
state_after: no goals
Theorem: PEquiv.trans_symm_eq_iff_forall_isSome
File: Mathlib/Data/PEquiv.lean

tactic: rw [self_trans_symm, ofSet_eq_refl, Set.eq_univ_iff_forall]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
⊢ f.trans f.symm = PEquiv.refl α ↔ ∀ (a : α), (f a).isSome = true
state_after: α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
⊢ (∀ (x : α), x ∈ {a | (f a).isSome = true}) ↔ ∀ (a : α), (f a).isSome = true

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
⊢ (∀ (x : α), x ∈ {a | (f a).isSome = true}) ↔ ∀ (a : α), (f a).isSome = true
state_after: no goals
Theorem: stdSimplex_subset_closedBall
File: Mathlib/Analysis/Convex/Topology.lean

tactic: rw [Metric.mem_closedBall, dist_pi_le_iff zero_le_one]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝ : Fintype ι
f : ι → ℝ
hf : f ∈ stdSimplex ℝ ι
⊢ f ∈ closedBall 0 1
state_after: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝ : Fintype ι
f : ι → ℝ
hf : f ∈ stdSimplex ℝ ι
⊢ ∀ (b : ι), dist (f b) (0 b) ≤ 1

tactic: intro x
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝ : Fintype ι
f : ι → ℝ
hf : f ∈ stdSimplex ℝ ι
⊢ ∀ (b : ι), dist (f b) (0 b) ≤ 1
state_after: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝ : Fintype ι
f : ι → ℝ
hf : f ∈ stdSimplex ℝ ι
x : ι
⊢ dist (f x) (0 x) ≤ 1

tactic: rw [Pi.zero_apply, Real.dist_0_eq_abs, abs_of_nonneg <| hf.1 x]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝ : Fintype ι
f : ι → ℝ
hf : f ∈ stdSimplex ℝ ι
x : ι
⊢ dist (f x) (0 x) ≤ 1
state_after: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝ : Fintype ι
f : ι → ℝ
hf : f ∈ stdSimplex ℝ ι
x : ι
⊢ f x ≤ 1

tactic: exact (mem_Icc_of_mem_stdSimplex hf x).2
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝ : Fintype ι
f : ι → ℝ
hf : f ∈ stdSimplex ℝ ι
x : ι
⊢ f x ≤ 1
state_after: no goals
Theorem: SimpleGraph.Walk.reverse_cons
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: simp [reverse]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w : V
h : G.Adj u v
p : G.Walk v w
⊢ (cons h p).reverse = p.reverse.append (cons ⋯ nil)
state_after: no goals
Theorem: EuclideanGeometry.inter_eq_singleton_orthogonalProjectionFn
File: Mathlib/Geometry/Euclidean/Basic.lean

tactic: rw [direction_mk' p s.directionᗮ]
state_before: V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty ↥s
inst✝ : HasOrthogonalProjection s.direction
p : P
⊢ IsCompl s.direction (mk' p s.directionᗮ).direction
state_after: V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty ↥s
inst✝ : HasOrthogonalProjection s.direction
p : P
⊢ IsCompl s.direction s.directionᗮ

tactic: exact Submodule.isCompl_orthogonal_of_completeSpace
state_before: V : Type u_1
P : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : MetricSpace P
inst✝² : NormedAddTorsor V P
s : AffineSubspace ℝ P
inst✝¹ : Nonempty ↥s
inst✝ : HasOrthogonalProjection s.direction
p : P
⊢ IsCompl s.direction s.directionᗮ
state_after: no goals
Theorem: inv_mul_le_iff
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [inv_eq_one_div, mul_comm, ← div_eq_mul_one_div]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h : 0 < b
⊢ b⁻¹ * a ≤ c ↔ a ≤ b * c
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h : 0 < b
⊢ a / b ≤ c ↔ a ≤ b * c

tactic: exact div_le_iff' h
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
h : 0 < b
⊢ a / b ≤ c ↔ a ≤ b * c
state_after: no goals
Theorem: Language.reverse_kstar
File: Mathlib/Computability/Language.lean

tactic: simp only [kstar_eq_iSup_pow, reverse_iSup, reverse_pow]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
l✝ m : Language α
a b x : List α
l : Language α
⊢ l∗.reverse = l.reverse∗
state_after: no goals
Theorem: Submodule.mem_dualCoannihilator
File: Mathlib/LinearAlgebra/Dual.lean

tactic: simp_rw [dualCoannihilator, mem_comap, mem_dualAnnihilator, Module.Dual.eval_apply]
state_before: R : Type u
M : Type v
inst✝² : CommSemiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
W : Submodule R M
Φ : Submodule R (Module.Dual R M)
x : M
⊢ x ∈ Φ.dualCoannihilator ↔ ∀ φ ∈ Φ, φ x = 0
state_after: no goals