1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: HurwitzZeta.evenKernel_undef
File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

tactic: have : (I * ↑x).im ≤ 0 := by rwa [I_mul_im, ofReal_re]
state_before: a : UnitAddCircle
x : ℝ
hx : x ≤ 0
⊢ evenKernel a x = 0
state_after: a : UnitAddCircle
x : ℝ
hx : x ≤ 0
this : (I * ↑x).im ≤ 0
⊢ evenKernel a x = 0

tactic: induction' a using QuotientAddGroup.induction_on' with a'
state_before: a : UnitAddCircle
x : ℝ
hx : x ≤ 0
this : (I * ↑x).im ≤ 0
⊢ evenKernel a x = 0
state_after: case H
x : ℝ
hx : x ≤ 0
this : (I * ↑x).im ≤ 0
a' : ℝ
⊢ evenKernel (↑a') x = 0

tactic: rw [← ofReal_inj, evenKernel_def, jacobiTheta₂_undef _ this, mul_zero, ofReal_zero]
state_before: case H
x : ℝ
hx : x ≤ 0
this : (I * ↑x).im ≤ 0
a' : ℝ
⊢ evenKernel (↑a') x = 0
state_after: no goals

tactic: rwa [I_mul_im, ofReal_re]
state_before: a : UnitAddCircle
x : ℝ
hx : x ≤ 0
⊢ (I * ↑x).im ≤ 0
state_after: no goals
Theorem: Nat.binomial_succ_succ
File: Mathlib/Data/Nat/Choose/Multinomial.lean

tactic: simp only [binomial_eq_choose, Function.update_apply,
  h, Ne, ite_true, ite_false, not_false_eq_true]
state_before: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ multinomial {a, b} (Function.update (Function.update f a (f a).succ) b (f b).succ) =
    multinomial {a, b} (Function.update f a (f a).succ) + multinomial {a, b} (Function.update f b (f b).succ)
state_after: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ ((f a).succ + (f b).succ).choose (f a).succ =
    ((f a).succ + if b = a then (f a).succ else f b).choose (f a).succ + (f a + (f b).succ).choose (f a)

tactic: rw [if_neg h.symm]
state_before: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ ((f a).succ + (f b).succ).choose (f a).succ =
    ((f a).succ + if b = a then (f a).succ else f b).choose (f a).succ + (f a + (f b).succ).choose (f a)
state_after: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ ((f a).succ + (f b).succ).choose (f a).succ = ((f a).succ + f b).choose (f a).succ + (f a + (f b).succ).choose (f a)

tactic: rw [add_succ, choose_succ_succ, succ_add_eq_add_succ]
state_before: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ ((f a).succ + (f b).succ).choose (f a).succ = ((f a).succ + f b).choose (f a).succ + (f a + (f b).succ).choose (f a)
state_after: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ (f a + (f b).succ).choose (f a) + (f a + (f b).succ).choose (f a).succ =
    (f a + (f b).succ).choose (f a).succ + (f a + (f b).succ).choose (f a)

tactic: ring
state_before: α : Type u_1
s : Finset α
f : α → ℕ
a b : α
n : ℕ
inst✝ : DecidableEq α
h : a ≠ b
⊢ (f a + (f b).succ).choose (f a) + (f a + (f b).succ).choose (f a).succ =
    (f a + (f b).succ).choose (f a).succ + (f a + (f b).succ).choose (f a)
state_after: no goals
Theorem: continuous_clm_apply
File: Mathlib/Analysis/NormedSpace/FiniteDimension.lean

tactic: simp_rw [continuous_iff_continuousOn_univ, continuousOn_clm_apply]
state_before: 𝕜 : Type u
inst✝¹² : NontriviallyNormedField 𝕜
E : Type v
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace 𝕜 E
F : Type w
inst✝⁹ : NormedAddCommGroup F
inst✝⁸ : NormedSpace 𝕜 F
F' : Type x
inst✝⁷ : AddCommGroup F'
inst✝⁶ : Module 𝕜 F'
inst✝⁵ : TopologicalSpace F'
inst✝⁴ : TopologicalAddGroup F'
inst✝³ : ContinuousSMul 𝕜 F'
inst✝² : CompleteSpace 𝕜
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : FiniteDimensional 𝕜 E
f : X → E →L[𝕜] F
⊢ Continuous f ↔ ∀ (y : E), Continuous fun x => (f x) y
state_after: no goals
Theorem: CategoryTheory.Localization.HasProductsOfShapeAux.adj_counit_app
File: Mathlib/CategoryTheory/Localization/FiniteProducts.lean

tactic: apply constLimAdj.localization_counit_app
state_before: C : Type u₁
D : Type u₂
inst✝⁵ : Category.{v₁, u₁} C
inst✝⁴ : Category.{v₂, u₂} D
L : C ⥤ D
W : MorphismProperty C
inst✝³ : L.IsLocalization W
inst✝² : W.ContainsIdentities
J : Type
inst✝¹ : Finite J
inst✝ : HasProductsOfShape J C
hW : W.IsStableUnderProductsOfShape J
F : Discrete J ⥤ C
⊢ (adj L hW).counit.app (F ⋙ L) =
    (Functor.const (Discrete J)).map ((compLimitFunctorIso L hW).hom.app F) ≫
      (Functor.compConstIso (Discrete J) L).hom.app (lim.obj F) ≫ whiskerRight (constLimAdj.counit.app F) L
state_after: no goals
Theorem: Tuple.comp_perm_comp_sort_eq_comp_sort
File: Mathlib/Data/Fin/Tuple/Sort.lean

tactic: rw [Function.comp.assoc, ← Equiv.Perm.coe_mul]
state_before: n : ℕ
α : Type u_1
inst✝ : LinearOrder α
f : Fin n → α
σ : Equiv.Perm (Fin n)
⊢ (f ∘ ⇑σ) ∘ ⇑(sort (f ∘ ⇑σ)) = f ∘ ⇑(sort f)
state_after: n : ℕ
α : Type u_1
inst✝ : LinearOrder α
f : Fin n → α
σ : Equiv.Perm (Fin n)
⊢ f ∘ ⇑(σ * sort (f ∘ ⇑σ)) = f ∘ ⇑(sort f)

tactic: exact unique_monotone (monotone_sort (f ∘ σ)) (monotone_sort f)
state_before: n : ℕ
α : Type u_1
inst✝ : LinearOrder α
f : Fin n → α
σ : Equiv.Perm (Fin n)
⊢ f ∘ ⇑(σ * sort (f ∘ ⇑σ)) = f ∘ ⇑(sort f)
state_after: no goals
Theorem: Polynomial.natDegree_mul_mirror
File: Mathlib/Algebra/Polynomial/Mirror.lean

tactic: by_cases hp : p = 0
state_before: R : Type u_1
inst✝¹ : Semiring R
p q : R[X]
inst✝ : NoZeroDivisors R
⊢ (p * p.mirror).natDegree = 2 * p.natDegree
state_after: case pos
R : Type u_1
inst✝¹ : Semiring R
p q : R[X]
inst✝ : NoZeroDivisors R
hp : p = 0
⊢ (p * p.mirror).natDegree = 2 * p.natDegree

case neg
R : Type u_1
inst✝¹ : Semiring R
p q : R[X]
inst✝ : NoZeroDivisors R
hp : ¬p = 0
⊢ (p * p.mirror).natDegree = 2 * p.natDegree

tactic: rw [natDegree_mul hp (mt mirror_eq_zero.mp hp), mirror_natDegree, two_mul]
state_before: case neg
R : Type u_1
inst✝¹ : Semiring R
p q : R[X]
inst✝ : NoZeroDivisors R
hp : ¬p = 0
⊢ (p * p.mirror).natDegree = 2 * p.natDegree
state_after: no goals

tactic: rw [hp, zero_mul, natDegree_zero, mul_zero]
state_before: case pos
R : Type u_1
inst✝¹ : Semiring R
p q : R[X]
inst✝ : NoZeroDivisors R
hp : p = 0
⊢ (p * p.mirror).natDegree = 2 * p.natDegree
state_after: no goals
Theorem: MeasureTheory.mem_ℒ1_toReal_of_lintegral_ne_top
File: Mathlib/MeasureTheory/Function/L1Space.lean

tactic: rw [Memℒp, snorm_one_eq_lintegral_nnnorm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hfm : AEMeasurable f μ
hfi : ∫⁻ (x : α), f x ∂μ ≠ ⊤
⊢ Memℒp (fun x => (f x).toReal) 1 μ
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hfm : AEMeasurable f μ
hfi : ∫⁻ (x : α), f x ∂μ ≠ ⊤
⊢ AEStronglyMeasurable (fun x => (f x).toReal) μ ∧ ∫⁻ (x : α), ↑‖(f x).toReal‖₊ ∂μ < ⊤

tactic: exact
  ⟨(AEMeasurable.ennreal_toReal hfm).aestronglyMeasurable,
    hasFiniteIntegral_toReal_of_lintegral_ne_top hfi⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : α → ℝ≥0∞
hfm : AEMeasurable f μ
hfi : ∫⁻ (x : α), f x ∂μ ≠ ⊤
⊢ AEStronglyMeasurable (fun x => (f x).toReal) μ ∧ ∫⁻ (x : α), ↑‖(f x).toReal‖₊ ∂μ < ⊤
state_after: no goals
Theorem: CovBy.card_multiset
File: Mathlib/Data/Finset/Grade.lean

tactic: obtain ⟨a, rfl⟩ := h.exists_multiset_cons
state_before: α : Type u_1
s t : Multiset α
a : α
h : s ⋖ t
⊢ card s ⋖ card t
state_after: case intro
α : Type u_1
s : Multiset α
a✝ a : α
h : s ⋖ a ::ₘ s
⊢ card s ⋖ card (a ::ₘ s)

tactic: rw [card_cons]
state_before: case intro
α : Type u_1
s : Multiset α
a✝ a : α
h : s ⋖ a ::ₘ s
⊢ card s ⋖ card (a ::ₘ s)
state_after: case intro
α : Type u_1
s : Multiset α
a✝ a : α
h : s ⋖ a ::ₘ s
⊢ card s ⋖ card s + 1

tactic: exact covBy_succ _
state_before: case intro
α : Type u_1
s : Multiset α
a✝ a : α
h : s ⋖ a ::ₘ s
⊢ card s ⋖ card s + 1
state_after: no goals
Theorem: ModularGroup.im_T_inv_smul
File: Mathlib/NumberTheory/Modular.lean

tactic: simpa using im_T_zpow_smul z (-1)
state_before: g : SL(2, ℤ)
z : ℍ
⊢ (T⁻¹ • z).im = z.im
state_after: no goals
Theorem: CategoryTheory.Limits.image.map_ι
File: Mathlib/CategoryTheory/Limits/Shapes/Images.lean

tactic: simp
state_before: C : Type u
inst✝³ : Category.{v, u} C
f g : Arrow C
inst✝² : HasImage f.hom
inst✝¹ : HasImage g.hom
sq : f ⟶ g
inst✝ : HasImageMap sq
⊢ map sq ≫ ι g.hom = ι f.hom ≫ sq.right
state_after: no goals
Theorem: abs_sub_round
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [round_eq, abs_sub_le_iff]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
⊢ |x - ↑(round x)| ≤ 1 / 2
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
⊢ x - ↑⌊x + 1 / 2⌋ ≤ 1 / 2 ∧ ↑⌊x + 1 / 2⌋ - x ≤ 1 / 2

tactic: have := floor_le (x + 1 / 2)
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
⊢ x - ↑⌊x + 1 / 2⌋ ≤ 1 / 2 ∧ ↑⌊x + 1 / 2⌋ - x ≤ 1 / 2
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
this : ↑⌊x + 1 / 2⌋ ≤ x + 1 / 2
⊢ x - ↑⌊x + 1 / 2⌋ ≤ 1 / 2 ∧ ↑⌊x + 1 / 2⌋ - x ≤ 1 / 2

tactic: have := lt_floor_add_one (x + 1 / 2)
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
this : ↑⌊x + 1 / 2⌋ ≤ x + 1 / 2
⊢ x - ↑⌊x + 1 / 2⌋ ≤ 1 / 2 ∧ ↑⌊x + 1 / 2⌋ - x ≤ 1 / 2
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
this✝ : ↑⌊x + 1 / 2⌋ ≤ x + 1 / 2
this : x + 1 / 2 < ↑⌊x + 1 / 2⌋ + 1
⊢ x - ↑⌊x + 1 / 2⌋ ≤ 1 / 2 ∧ ↑⌊x + 1 / 2⌋ - x ≤ 1 / 2

tactic: constructor <;> linarith
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedField α
inst✝ : FloorRing α
x : α
this✝ : ↑⌊x + 1 / 2⌋ ≤ x + 1 / 2
this : x + 1 / 2 < ↑⌊x + 1 / 2⌋ + 1
⊢ x - ↑⌊x + 1 / 2⌋ ≤ 1 / 2 ∧ ↑⌊x + 1 / 2⌋ - x ≤ 1 / 2
state_after: no goals
Theorem: SimplicialObject.Splitting.cofan_inj_comp_PInfty_eq_zero
File: Mathlib/AlgebraicTopology/DoldKan/SplitSimplicialObject.lean

tactic: rw [SimplicialObject.Splitting.IndexSet.eqId_iff_mono] at hA
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X✝ : SimplicialObject C
s✝ : Splitting X✝
inst✝ : Preadditive C
X : SimplicialObject C
s : Splitting X
n : ℕ
A : IndexSet { unop := [n] }
hA : ¬A.EqId
⊢ (s.cofan { unop := [n] }).inj A ≫ PInfty.f n = 0
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X✝ : SimplicialObject C
s✝ : Splitting X✝
inst✝ : Preadditive C
X : SimplicialObject C
s : Splitting X
n : ℕ
A : IndexSet { unop := [n] }
hA : ¬Mono A.e
⊢ (s.cofan { unop := [n] }).inj A ≫ PInfty.f n = 0

tactic: rw [SimplicialObject.Splitting.cofan_inj_eq, assoc, degeneracy_comp_PInfty X n A.e hA, comp_zero]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
X✝ : SimplicialObject C
s✝ : Splitting X✝
inst✝ : Preadditive C
X : SimplicialObject C
s : Splitting X
n : ℕ
A : IndexSet { unop := [n] }
hA : ¬Mono A.e
⊢ (s.cofan { unop := [n] }).inj A ≫ PInfty.f n = 0
state_after: no goals
Theorem: IsNoetherianRing.isNilpotent_nilradical
File: Mathlib/RingTheory/Noetherian.lean

tactic: obtain ⟨n, hn⟩ := Ideal.exists_radical_pow_le_of_fg (⊥ : Ideal R) (IsNoetherian.noetherian _)
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsNoetherianRing R
⊢ IsNilpotent (nilradical R)
state_after: case intro
R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsNoetherianRing R
n : ℕ
hn : ⊥.radical ^ n ≤ ⊥
⊢ IsNilpotent (nilradical R)

tactic: exact ⟨n, eq_bot_iff.mpr hn⟩
state_before: case intro
R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsNoetherianRing R
n : ℕ
hn : ⊥.radical ^ n ≤ ⊥
⊢ IsNilpotent (nilradical R)
state_after: no goals
Theorem: newton_seq_dist_to_a
File: Mathlib/NumberTheory/Padics/Hensel.lean

tactic: simp [sub_eq_add_neg, add_assoc, newton_seq_gen, newton_seq_aux, ih_n]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
_h : 0 < 1
⊢ ‖newton_seq 1 - a‖ = ‖Polynomial.eval a F‖ / ‖Polynomial.eval a (Polynomial.derivative F)‖
state_after: no goals

tactic: rw [newton_seq_dist_to_a (k + 1) (succ_pos _)]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
k : ℕ
_h : 0 < k + 2
⊢ ‖newton_seq (k + 2) - newton_seq (k + 1)‖ < ‖newton_seq (k + 1) - a‖
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
k : ℕ
_h : 0 < k + 2
⊢ ‖newton_seq (k + 2) - newton_seq (k + 1)‖ < ‖Polynomial.eval a F‖ / ‖Polynomial.eval a (Polynomial.derivative F)‖

tactic: apply newton_seq_succ_dist_weak
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
k : ℕ
_h : 0 < k + 2
⊢ ‖newton_seq (k + 2) - newton_seq (k + 1)‖ < ‖Polynomial.eval a F‖ / ‖Polynomial.eval a (Polynomial.derivative F)‖
state_after: case hnsol
p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
k : ℕ
_h : 0 < k + 2
⊢ Polynomial.eval a F ≠ 0

tactic: assumption
state_before: case hnsol
p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
k : ℕ
_h : 0 < k + 2
⊢ Polynomial.eval a F ≠ 0
state_after: no goals

tactic: rw [← sub_add_sub_cancel]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
k : ℕ
_h : 0 < k + 2
hlt : ‖newton_seq (k + 2) - newton_seq (k + 1)‖ < ‖newton_seq (k + 1) - a‖
hne' : ‖newton_seq (k + 2) - newton_seq (k + 1)‖ ≠ ‖newton_seq (k + 1) - a‖
⊢ ‖newton_seq (k + 2) - a‖ = ‖newton_seq (k + 2) - newton_seq (k + 1) + (newton_seq (k + 1) - a)‖
state_after: no goals
Theorem: Polynomial.splits_id_iff_splits
File: Mathlib/Algebra/Polynomial/Splits.lean

tactic: rw [splits_map_iff, RingHom.id_comp]
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i : K →+* L
f : K[X]
⊢ Splits (RingHom.id L) (map i f) ↔ Splits i f
state_after: no goals
Theorem: CategoryTheory.SmallObject.ρFunctorObj_π
File: Mathlib/CategoryTheory/SmallObject/Construction.lean

tactic: simp [πFunctorObj]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
I : Type w
A B : I → C
f : (i : I) → A i ⟶ B i
S X Y Z : C
πX : X ⟶ S
πY : Y ⟶ S
φ : X ⟶ Y
hφ : φ ≫ πY = πX
inst✝³ : HasColimitsOfShape (Discrete (FunctorObjIndex f πX)) C
inst✝² : HasColimitsOfShape (Discrete (FunctorObjIndex f πY)) C
inst✝¹ : HasPushout (functorObjTop f πX) (functorObjLeft f πX)
inst✝ : HasPushout (functorObjTop f πY) (functorObjLeft f πY)
⊢ ρFunctorObj f πX ≫ πFunctorObj f πX = π'FunctorObj f πX
state_after: no goals
Theorem: Fintype.card_congr'
File: Mathlib/Data/Fintype/Card.lean

tactic: rw [h]
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
α β : Type u_4
inst✝¹ : Fintype α
inst✝ : Fintype β
h : α = β
⊢ α ≃ β
state_after: no goals
Theorem: IsIntegralClosure.of_isIntegrallyClosedIn
File: Mathlib/RingTheory/IntegrallyClosed.lean

tactic: refine ⟨IsIntegralClosure.algebraMap_injective _ A _, fun {x} ↦
  ⟨fun hx ↦ IsIntegralClosure.isIntegral_iff.mp (IsIntegral.tower_top (A := A) hx), ?_⟩⟩
state_before: R : Type u_1
A : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
iic : IsIntegrallyClosedIn R A
B : Type u_3
inst✝⁵ : CommRing B
inst✝⁴ : Algebra R B
inst✝³ : Algebra A B
inst✝² : IsScalarTower R A B
inst✝¹ : IsIntegrallyClosedIn A B
inst✝ : Algebra.IsIntegral R A
⊢ IsIntegralClosure A R B
state_after: R : Type u_1
A : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
iic : IsIntegrallyClosedIn R A
B : Type u_3
inst✝⁵ : CommRing B
inst✝⁴ : Algebra R B
inst✝³ : Algebra A B
inst✝² : IsScalarTower R A B
inst✝¹ : IsIntegrallyClosedIn A B
inst✝ : Algebra.IsIntegral R A
x : B
⊢ (∃ y, (algebraMap A B) y = x) → IsIntegral R x

tactic: rintro ⟨y, rfl⟩
state_before: R : Type u_1
A : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
iic : IsIntegrallyClosedIn R A
B : Type u_3
inst✝⁵ : CommRing B
inst✝⁴ : Algebra R B
inst✝³ : Algebra A B
inst✝² : IsScalarTower R A B
inst✝¹ : IsIntegrallyClosedIn A B
inst✝ : Algebra.IsIntegral R A
x : B
⊢ (∃ y, (algebraMap A B) y = x) → IsIntegral R x
state_after: case intro
R : Type u_1
A : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
iic : IsIntegrallyClosedIn R A
B : Type u_3
inst✝⁵ : CommRing B
inst✝⁴ : Algebra R B
inst✝³ : Algebra A B
inst✝² : IsScalarTower R A B
inst✝¹ : IsIntegrallyClosedIn A B
inst✝ : Algebra.IsIntegral R A
y : A
⊢ IsIntegral R ((algebraMap A B) y)

tactic: exact IsIntegral.map (IsScalarTower.toAlgHom A A B) (Algebra.IsIntegral.isIntegral y)
state_before: case intro
R : Type u_1
A : Type u_2
inst✝⁸ : CommRing R
inst✝⁷ : CommRing A
inst✝⁶ : Algebra R A
iic : IsIntegrallyClosedIn R A
B : Type u_3
inst✝⁵ : CommRing B
inst✝⁴ : Algebra R B
inst✝³ : Algebra A B
inst✝² : IsScalarTower R A B
inst✝¹ : IsIntegrallyClosedIn A B
inst✝ : Algebra.IsIntegral R A
y : A
⊢ IsIntegral R ((algebraMap A B) y)
state_after: no goals
Theorem: Functor.Comp.applicative_comp_id
File: Mathlib/Control/Applicative.lean

tactic: rw [id_map]
state_before: F✝ : Type u → Type w
G : Type v → Type u
inst✝⁴ : Applicative F✝
inst✝³ : Applicative G
inst✝² : LawfulApplicative F✝
inst✝¹ : LawfulApplicative G
α β γ : Type v
F : Type u_1 → Type u_2
AF : Applicative F
inst✝ : LawfulApplicative F
α✝ β✝ : Type u_1
f : F (α✝ → β✝)
x : F α✝
⊢ (Seq.seq (id <$> f) fun x_1 => x) = Seq.seq f fun x_1 => x
state_after: no goals
Theorem: FreeGroup.lift.range_eq_closure
File: Mathlib/GroupTheory/FreeGroup/Basic.lean

tactic: apply le_antisymm (lift.range_le Subgroup.subset_closure)
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
inst✝ : Group β
f : α → β
x y : FreeGroup α
⊢ (lift f).range = Subgroup.closure (Set.range f)
state_after: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
inst✝ : Group β
f : α → β
x y : FreeGroup α
⊢ Subgroup.closure (Set.range f) ≤ (lift f).range

tactic: rw [Subgroup.closure_le]
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
inst✝ : Group β
f : α → β
x y : FreeGroup α
⊢ Subgroup.closure (Set.range f) ≤ (lift f).range
state_after: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
inst✝ : Group β
f : α → β
x y : FreeGroup α
⊢ Set.range f ⊆ ↑(lift f).range

tactic: rintro _ ⟨a, rfl⟩
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
inst✝ : Group β
f : α → β
x y : FreeGroup α
⊢ Set.range f ⊆ ↑(lift f).range
state_after: case intro
α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
inst✝ : Group β
f : α → β
x y : FreeGroup α
a : α
⊢ f a ∈ ↑(lift f).range

tactic: exact ⟨FreeGroup.of a, by simp only [lift.of]⟩
state_before: case intro
α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
inst✝ : Group β
f : α → β
x y : FreeGroup α
a : α
⊢ f a ∈ ↑(lift f).range
state_after: no goals

tactic: simp only [lift.of]
state_before: α : Type u
L L₁ L₂ L₃ L₄ : List (α × Bool)
β : Type v
inst✝ : Group β
f : α → β
x y : FreeGroup α
a : α
⊢ (lift f) (FreeGroup.of a) = f a
state_after: no goals
Theorem: groupCohomology.resolution.d_comp_ε
File: Mathlib/RepresentationTheory/GroupCohomology/Resolution.lean

tactic: ext : 1
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ (resolution k G).d 1 0 ≫ ε k G = 0
state_after: case h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ ((resolution k G).d 1 0 ≫ ε k G).hom = Action.Hom.hom 0

tactic: refine LinearMap.ext fun x => ?_
state_before: case h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
⊢ ((resolution k G).d 1 0 ≫ ε k G).hom = Action.Hom.hom 0
state_after: case h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
x : ↑((resolution k G).X 1).V
⊢ ((resolution k G).d 1 0 ≫ ε k G).hom x = (Action.Hom.hom 0) x

tactic: have : (forget₂ToModuleCat k G).d 1 0
    ≫ (forget₂ (Rep k G) (ModuleCat.{u} k)).map (ε k G) = 0 := by
  rw [← forget₂ToModuleCatHomotopyEquiv_f_0_eq,
    ← (forget₂ToModuleCatHomotopyEquiv k G).1.2 1 0 rfl]
  exact comp_zero
state_before: case h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
x : ↑((resolution k G).X 1).V
⊢ ((resolution k G).d 1 0 ≫ ε k G).hom x = (Action.Hom.hom 0) x
state_after: case h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
x : ↑((resolution k G).X 1).V
this : (forget₂ToModuleCat k G).d 1 0 ≫ (forget₂ (Rep k G) (ModuleCat k)).map (ε k G) = 0
⊢ ((resolution k G).d 1 0 ≫ ε k G).hom x = (Action.Hom.hom 0) x

tactic: exact LinearMap.ext_iff.1 this _
state_before: case h
k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
x : ↑((resolution k G).X 1).V
this : (forget₂ToModuleCat k G).d 1 0 ≫ (forget₂ (Rep k G) (ModuleCat k)).map (ε k G) = 0
⊢ ((resolution k G).d 1 0 ≫ ε k G).hom x = (Action.Hom.hom 0) x
state_after: no goals

tactic: rw [← forget₂ToModuleCatHomotopyEquiv_f_0_eq,
  ← (forget₂ToModuleCatHomotopyEquiv k G).1.2 1 0 rfl]
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
x : ↑((resolution k G).X 1).V
⊢ (forget₂ToModuleCat k G).d 1 0 ≫ (forget₂ (Rep k G) (ModuleCat k)).map (ε k G) = 0
state_after: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
x : ↑((resolution k G).X 1).V
⊢ (forget₂ToModuleCatHomotopyEquiv k G).hom.f 1 ≫
      ((ChainComplex.single₀ (ModuleCat k)).obj ((forget₂ (Rep k G) (ModuleCat k)).obj (Rep.trivial k G k))).d 1 0 =
    0

tactic: exact comp_zero
state_before: k G : Type u
inst✝¹ : CommRing k
n : ℕ
inst✝ : Monoid G
x : ↑((resolution k G).X 1).V
⊢ (forget₂ToModuleCatHomotopyEquiv k G).hom.f 1 ≫
      ((ChainComplex.single₀ (ModuleCat k)).obj ((forget₂ (Rep k G) (ModuleCat k)).obj (Rep.trivial k G k))).d 1 0 =
    0
state_after: no goals
Theorem: ringExpChar.eq_one
File: Mathlib/Algebra/CharP/ExpChar.lean

tactic: rw [ringExpChar, ringChar.eq_zero, max_eq_right zero_le_one]
state_before: R✝ : Type u
inst✝² : Semiring R✝
R : Type u_1
inst✝¹ : NonAssocSemiring R
inst✝ : CharZero R
⊢ ringExpChar R = 1
state_after: no goals
Theorem: eq_algebraMap_of_spectrum_subset_singleton
File: Mathlib/Topology/ContinuousFunction/FunctionalCalculus.lean

tactic: simpa [cfc_id R a, cfc_const r a] using
  cfc_congr (f := id) (g := fun _ : R ↦ r) (a := a) fun x hx ↦ by simpa using h_spec hx
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹⁰ : CommSemiring R
inst✝⁹ : StarRing R
inst✝⁸ : MetricSpace R
inst✝⁷ : TopologicalSemiring R
inst✝⁶ : ContinuousStar R
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra R A
inst✝¹ : ContinuousFunctionalCalculus R p
f g : R → R
a : A
ha✝ : autoParam (p a) _auto✝
hf : autoParam (ContinuousOn f (spectrum R a)) _auto✝
hg : autoParam (ContinuousOn g (spectrum R a)) _auto✝
inst✝ : UniqueContinuousFunctionalCalculus R A
r : R
h_spec : spectrum R a ⊆ {r}
ha : autoParam (p a) _auto✝
⊢ a = (algebraMap R A) r
state_after: no goals

tactic: simpa using h_spec hx
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹⁰ : CommSemiring R
inst✝⁹ : StarRing R
inst✝⁸ : MetricSpace R
inst✝⁷ : TopologicalSemiring R
inst✝⁶ : ContinuousStar R
inst✝⁵ : TopologicalSpace A
inst✝⁴ : Ring A
inst✝³ : StarRing A
inst✝² : Algebra R A
inst✝¹ : ContinuousFunctionalCalculus R p
f g : R → R
a : A
ha✝ : autoParam (p a) _auto✝
hf : autoParam (ContinuousOn f (spectrum R a)) _auto✝
hg : autoParam (ContinuousOn g (spectrum R a)) _auto✝
inst✝ : UniqueContinuousFunctionalCalculus R A
r : R
h_spec : spectrum R a ⊆ {r}
ha : autoParam (p a) _auto✝
x : R
hx : x ∈ spectrum R a
⊢ id x = (fun x => r) x
state_after: no goals