1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MeasureTheory.stronglyMeasurable_const'
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

tactic: nontriviality α
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
⊢ StronglyMeasurable f
state_after: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
⊢ StronglyMeasurable f

tactic: inhabit α
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
⊢ StronglyMeasurable f
state_after: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ StronglyMeasurable f

tactic: convert stronglyMeasurable_const (β := β) using 1
state_before: α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ StronglyMeasurable f
state_after: case h.e'_5
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ f = fun x => ?convert_3

case convert_3
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ β

tactic: exact funext fun x => hf x default
state_before: case h.e'_5
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ f = fun x => ?convert_3

case convert_3
α✝ : Type u_1
β✝ : Type u_2
γ : Type u_3
ι : Type u_4
inst✝¹ : Countable ι
α : Type u_5
β : Type u_6
m : MeasurableSpace α
inst✝ : TopologicalSpace β
f : α → β
hf : ∀ (x y : α), f x = f y
a✝ : Nontrivial α
inhabited_h : Inhabited α
⊢ β
state_after: no goals
Theorem: CauchySeq.subseq_subseq_mem
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: rw [cauchySeq_iff_tendsto] at hu
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
V : ℕ → Set (α × α)
hV : ∀ (n : ℕ), V n ∈ 𝓤 α
u : ℕ → α
hu : CauchySeq u
f g : ℕ → ℕ
hf : Tendsto f atTop atTop
hg : Tendsto g atTop atTop
⊢ ∃ φ, StrictMono φ ∧ ∀ (n : ℕ), ((u ∘ f ∘ φ) n, (u ∘ g ∘ φ) n) ∈ V n
state_after: α : Type u
β : Type v
uniformSpace : UniformSpace α
V : ℕ → Set (α × α)
hV : ∀ (n : ℕ), V n ∈ 𝓤 α
u : ℕ → α
hu : Tendsto (Prod.map u u) atTop (𝓤 α)
f g : ℕ → ℕ
hf : Tendsto f atTop atTop
hg : Tendsto g atTop atTop
⊢ ∃ φ, StrictMono φ ∧ ∀ (n : ℕ), ((u ∘ f ∘ φ) n, (u ∘ g ∘ φ) n) ∈ V n

tactic: exact ((hu.comp <| hf.prod_atTop hg).comp tendsto_atTop_diagonal).subseq_mem hV
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
V : ℕ → Set (α × α)
hV : ∀ (n : ℕ), V n ∈ 𝓤 α
u : ℕ → α
hu : Tendsto (Prod.map u u) atTop (𝓤 α)
f g : ℕ → ℕ
hf : Tendsto f atTop atTop
hg : Tendsto g atTop atTop
⊢ ∃ φ, StrictMono φ ∧ ∀ (n : ℕ), ((u ∘ f ∘ φ) n, (u ∘ g ∘ φ) n) ∈ V n
state_after: no goals
Theorem: eq_one_of_spectrum_subset_one
File: Mathlib/Topology/ContinuousFunction/FunctionalCalculus.lean

tactic: simpa using eq_algebraMap_of_spectrum_subset_singleton a 1 h_spec
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
h_spec : spectrum R a ⊆ {1}
ha : autoParam (p a) _auto✝
⊢ a = 1
state_after: no goals
Theorem: LinearEquiv.rTensor_zpow
File: Mathlib/LinearAlgebra/TensorProduct/Basic.lean

tactic: simpa only [one_zpow] using TensorProduct.congr_zpow f (1 : N ≃ₗ[R] N) n
state_before: R : Type u_1
inst✝¹⁶ : CommSemiring R
R' : Type u_2
inst✝¹⁵ : Monoid R'
R'' : Type u_3
inst✝¹⁴ : Semiring R''
M : Type u_4
N : Type u_5
P : Type u_6
Q : Type u_7
S : Type u_8
T : Type u_9
inst✝¹³ : AddCommMonoid M
inst✝¹² : AddCommMonoid N
inst✝¹¹ : AddCommMonoid P
inst✝¹⁰ : AddCommMonoid Q
inst✝⁹ : AddCommMonoid S
inst✝⁸ : AddCommMonoid T
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module R P
inst✝⁴ : Module R Q
inst✝³ : Module R S
inst✝² : Module R T
inst✝¹ : DistribMulAction R' M
inst✝ : Module R'' M
g : P ≃ₗ[R] Q
f✝ : N ≃ₗ[R] P
m : M
n✝ : N
p : P
x : M ⊗[R] N
y : N ⊗[R] M
f : M ≃ₗ[R] M
n : ℤ
⊢ rTensor N f ^ n = rTensor N (f ^ n)
state_after: no goals
Theorem: Set.Finite.isClosed
File: Mathlib/Topology/Separation.lean

tactic: rw [← biUnion_of_singleton s]
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
s : Set X
hs : s.Finite
⊢ IsClosed s
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
s : Set X
hs : s.Finite
⊢ IsClosed (⋃ x ∈ s, {x})

tactic: exact hs.isClosed_biUnion fun i _ => isClosed_singleton
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
s : Set X
hs : s.Finite
⊢ IsClosed (⋃ x ∈ s, {x})
state_after: no goals
Theorem: FiniteDimensional.right
File: Mathlib/FieldTheory/Tower.lean

tactic: rw [Submodule.restrictScalars_top, eq_top_iff, ← hb, Submodule.span_le]
state_before: F : Type u
K : Type v
A : Type w
inst✝⁶ : DivisionRing F
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup A
inst✝³ : Module F K
inst✝² : Module K A
inst✝¹ : Module F A
inst✝ : IsScalarTower F K A
hf : FiniteDimensional F A
b : Finset A
hb : span F ↑b = ⊤
⊢ restrictScalars F (span K ↑b) = restrictScalars F ⊤
state_after: F : Type u
K : Type v
A : Type w
inst✝⁶ : DivisionRing F
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup A
inst✝³ : Module F K
inst✝² : Module K A
inst✝¹ : Module F A
inst✝ : IsScalarTower F K A
hf : FiniteDimensional F A
b : Finset A
hb : span F ↑b = ⊤
⊢ ↑b ⊆ ↑(restrictScalars F (span K ↑b))

tactic: exact Submodule.subset_span
state_before: F : Type u
K : Type v
A : Type w
inst✝⁶ : DivisionRing F
inst✝⁵ : DivisionRing K
inst✝⁴ : AddCommGroup A
inst✝³ : Module F K
inst✝² : Module K A
inst✝¹ : Module F A
inst✝ : IsScalarTower F K A
hf : FiniteDimensional F A
b : Finset A
hb : span F ↑b = ⊤
⊢ ↑b ⊆ ↑(restrictScalars F (span K ↑b))
state_after: no goals
Theorem: Subsingleton.of_oneHomClass
File: Mathlib/Algebra/Group/Hom/Defs.lean

tactic: simp [Subsingleton.elim x 1]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝⁴ : One M
inst✝³ : One N
inst✝² : FunLike F M N
inst✝¹ : Subsingleton M
inst✝ : OneHomClass F M N
f g : F
x : M
⊢ f x = g x
state_after: no goals
Theorem: Algebra.restrictScalars_adjoin
File: Mathlib/RingTheory/Adjoin/Basic.lean

tactic: conv_lhs => rw [← Algebra.adjoin_eq K, ← Algebra.adjoin_union_eq_adjoin_adjoin]
state_before: R : Type uR
S✝ : Type uS
A : Type uA
B : Type uB
F✝ : Type u_1
E✝ : Type u_2
K✝ : Type u_3
inst✝⁹ : CommSemiring E✝
inst✝⁸ : Semiring K✝
inst✝⁷ : SMul F✝ E✝
inst✝⁶ : Algebra E✝ K✝
inst✝⁵ : CommSemiring F✝
inst✝⁴ : Algebra F✝ K✝
inst✝³ : IsScalarTower F✝ E✝ K✝
L : Subalgebra F✝ K✝
F : Type u_4
inst✝² : CommSemiring F
E : Type u_5
inst✝¹ : CommSemiring E
inst✝ : Algebra F E
K : Subalgebra F E
S : Set E
⊢ Subalgebra.restrictScalars F (adjoin (↥K) S) = adjoin F (↑K ∪ S)
state_after: no goals
Theorem: Polynomial.eraseLead_support_card_lt
File: Mathlib/Algebra/Polynomial/EraseLead.lean

tactic: rw [eraseLead_support]
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f ≠ 0
⊢ f.eraseLead.support.card < f.support.card
state_after: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f ≠ 0
⊢ (f.support.erase f.natDegree).card < f.support.card

tactic: exact card_lt_card (erase_ssubset <| natDegree_mem_support_of_nonzero h)
state_before: R : Type u_1
inst✝ : Semiring R
f : R[X]
h : f ≠ 0
⊢ (f.support.erase f.natDegree).card < f.support.card
state_after: no goals
Theorem: le_iff_transGen_wcovBy
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: refine ⟨transGen_wcovBy_of_le, fun h ↦ ?_⟩
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
⊢ x ≤ y ↔ TransGen (fun x x_1 => x ⩿ x_1) x y
state_after: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
h : TransGen (fun x x_1 => x ⩿ x_1) x y
⊢ x ≤ y

tactic: induction h with
| single h => exact h.le
| tail _ h₁ h₂ => exact h₂.trans h₁.le
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y : α
h : TransGen (fun x x_1 => x ⩿ x_1) x y
⊢ x ≤ y
state_after: no goals

tactic: exact h.le
state_before: case single
ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y b✝ : α
h : x ⩿ b✝
⊢ x ≤ b✝
state_after: no goals

tactic: exact h₂.trans h₁.le
state_before: case tail
ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
x y b✝ c✝ : α
a✝ : TransGen (fun x x_1 => x ⩿ x_1) x b✝
h₁ : b✝ ⩿ c✝
h₂ : x ≤ b✝
⊢ x ≤ c✝
state_after: no goals
Theorem: NNReal.pow_rpow_inv_natCast
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: rw [← NNReal.coe_inj, coe_rpow, NNReal.coe_pow]
state_before: w x✝ y z : ℝ
x : ℝ≥0
n : ℕ
hn : n ≠ 0
⊢ (x ^ n) ^ (↑n)⁻¹ = x
state_after: w x✝ y z : ℝ
x : ℝ≥0
n : ℕ
hn : n ≠ 0
⊢ (↑x ^ n) ^ (↑n)⁻¹ = ↑x

tactic: exact Real.pow_rpow_inv_natCast x.2 hn
state_before: w x✝ y z : ℝ
x : ℝ≥0
n : ℕ
hn : n ≠ 0
⊢ (↑x ^ n) ^ (↑n)⁻¹ = ↑x
state_after: no goals
Theorem: Nat.coprime_multiset_prod_left_iff
File: Mathlib/Data/Nat/GCD/BigOperators.lean

tactic: induction m using Quotient.inductionOn
state_before: ι : Type u_1
m : Multiset ℕ
k : ℕ
⊢ m.prod.Coprime k ↔ ∀ n ∈ m, n.Coprime k
state_after: case h
ι : Type u_1
k : ℕ
a✝ : List ℕ
⊢ (Multiset.prod ⟦a✝⟧).Coprime k ↔ ∀ n ∈ ⟦a✝⟧, n.Coprime k

tactic: simpa using coprime_list_prod_left_iff
state_before: case h
ι : Type u_1
k : ℕ
a✝ : List ℕ
⊢ (Multiset.prod ⟦a✝⟧).Coprime k ↔ ∀ n ∈ ⟦a✝⟧, n.Coprime k
state_after: no goals
Theorem: CategoryTheory.isUnit_iff_isIso
File: Mathlib/CategoryTheory/Endomorphism.lean

tactic: simp
state_before: C : Type u
inst✝ : Category.{v, u} C
X : C
f : End X
h : IsIso f
⊢ f * inv f = 1
state_after: no goals

tactic: simp
state_before: C : Type u
inst✝ : Category.{v, u} C
X : C
f : End X
h : IsIso f
⊢ inv f * f = 1
state_after: no goals
Theorem: Int.squarefree_natCast
File: Mathlib/Algebra/Squarefree/Basic.lean

tactic: rw [← squarefree_natAbs, natAbs_ofNat]
state_before: R : Type u_1
n : ℕ
⊢ Squarefree ↑n ↔ Squarefree n
state_after: no goals
Theorem: NNReal.rpow_self_rpow_inv
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

tactic: field_simp [← rpow_mul]
state_before: w x✝ y✝ z y : ℝ
hy : y ≠ 0
x : ℝ≥0
⊢ (x ^ (1 / y)) ^ y = x
state_after: no goals
Theorem: IsPiSystem.insert_empty
File: Mathlib/MeasureTheory/PiSystem.lean

tactic: intro s hs t ht hst
state_before: α : Type u_1
S : Set (Set α)
h_pi : IsPiSystem S
⊢ IsPiSystem (insert ∅ S)
state_after: α : Type u_1
S : Set (Set α)
h_pi : IsPiSystem S
s : Set α
hs : s ∈ insert ∅ S
t : Set α
ht : t ∈ insert ∅ S
hst : (s ∩ t).Nonempty
⊢ s ∩ t ∈ insert ∅ S

tactic: cases' hs with hs hs
state_before: α : Type u_1
S : Set (Set α)
h_pi : IsPiSystem S
s : Set α
hs : s ∈ insert ∅ S
t : Set α
ht : t ∈ insert ∅ S
hst : (s ∩ t).Nonempty
⊢ s ∩ t ∈ insert ∅ S
state_after: case inl
α : Type u_1
S : Set (Set α)
h_pi : IsPiSystem S
s t : Set α
ht : t ∈ insert ∅ S
hst : (s ∩ t).Nonempty
hs : s = ∅
⊢ s ∩ t ∈ insert ∅ S

case inr
α : Type u_1
S : Set (Set α)
h_pi : IsPiSystem S
s t : Set α
ht : t ∈ insert ∅ S
hst : (s ∩ t).Nonempty
hs : s ∈ S
⊢ s ∩ t ∈ insert ∅ S

tactic: simp [hs]
state_before: case inl
α : Type u_1
S : Set (Set α)
h_pi : IsPiSystem S
s t : Set α
ht : t ∈ insert ∅ S
hst : (s ∩ t).Nonempty
hs : s = ∅
⊢ s ∩ t ∈ insert ∅ S
state_after: no goals

tactic: cases' ht with ht ht
state_before: case inr
α : Type u_1
S : Set (Set α)
h_pi : IsPiSystem S
s t : Set α
ht : t ∈ insert ∅ S
hst : (s ∩ t).Nonempty
hs : s ∈ S
⊢ s ∩ t ∈ insert ∅ S
state_after: case inr.inl
α : Type u_1
S : Set (Set α)
h_pi : IsPiSystem S
s t : Set α
hst : (s ∩ t).Nonempty
hs : s ∈ S
ht : t = ∅
⊢ s ∩ t ∈ insert ∅ S

case inr.inr
α : Type u_1
S : Set (Set α)
h_pi : IsPiSystem S
s t : Set α
hst : (s ∩ t).Nonempty
hs : s ∈ S
ht : t ∈ S
⊢ s ∩ t ∈ insert ∅ S

tactic: simp [ht]
state_before: case inr.inl
α : Type u_1
S : Set (Set α)
h_pi : IsPiSystem S
s t : Set α
hst : (s ∩ t).Nonempty
hs : s ∈ S
ht : t = ∅
⊢ s ∩ t ∈ insert ∅ S
state_after: no goals

tactic: exact Set.mem_insert_of_mem _ (h_pi s hs t ht hst)
state_before: case inr.inr
α : Type u_1
S : Set (Set α)
h_pi : IsPiSystem S
s t : Set α
hst : (s ∩ t).Nonempty
hs : s ∈ S
ht : t ∈ S
⊢ s ∩ t ∈ insert ∅ S
state_after: no goals
Theorem: taylorWithin_succ
File: Mathlib/Analysis/Calculus/Taylor.lean

tactic: dsimp only [taylorWithin]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : ℝ → E
n : ℕ
s : Set ℝ
x₀ : ℝ
⊢ taylorWithin f (n + 1) s x₀ =
    taylorWithin f n s x₀ +
      (PolynomialModule.comp (Polynomial.X - Polynomial.C x₀))
        ((PolynomialModule.single ℝ (n + 1)) (taylorCoeffWithin f (n + 1) s x₀))
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : ℝ → E
n : ℕ
s : Set ℝ
x₀ : ℝ
⊢ ∑ k ∈ Finset.range (n + 1 + 1),
      (PolynomialModule.comp (Polynomial.X - Polynomial.C x₀))
        ((PolynomialModule.single ℝ k) (taylorCoeffWithin f k s x₀)) =
    ∑ k ∈ Finset.range (n + 1),
        (PolynomialModule.comp (Polynomial.X - Polynomial.C x₀))
          ((PolynomialModule.single ℝ k) (taylorCoeffWithin f k s x₀)) +
      (PolynomialModule.comp (Polynomial.X - Polynomial.C x₀))
        ((PolynomialModule.single ℝ (n + 1)) (taylorCoeffWithin f (n + 1) s x₀))

tactic: rw [Finset.sum_range_succ]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : ℝ → E
n : ℕ
s : Set ℝ
x₀ : ℝ
⊢ ∑ k ∈ Finset.range (n + 1 + 1),
      (PolynomialModule.comp (Polynomial.X - Polynomial.C x₀))
        ((PolynomialModule.single ℝ k) (taylorCoeffWithin f k s x₀)) =
    ∑ k ∈ Finset.range (n + 1),
        (PolynomialModule.comp (Polynomial.X - Polynomial.C x₀))
          ((PolynomialModule.single ℝ k) (taylorCoeffWithin f k s x₀)) +
      (PolynomialModule.comp (Polynomial.X - Polynomial.C x₀))
        ((PolynomialModule.single ℝ (n + 1)) (taylorCoeffWithin f (n + 1) s x₀))
state_after: no goals
Theorem: Part.map_bind
File: Mathlib/Data/Part.lean

tactic: rw [← bind_some_eq_map, bind_assoc]
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
γ : Type u_4
f : α → Part β
x : Part α
g : β → γ
⊢ map g (x.bind f) = x.bind fun y => map g (f y)
state_after: α : Type u_1
β : Type u_2
γ✝ : Type u_3
γ : Type u_4
f : α → Part β
x : Part α
g : β → γ
⊢ (x.bind fun x => (f x).bind (some ∘ g)) = x.bind fun y => map g (f y)

tactic: simp [bind_some_eq_map]
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
γ : Type u_4
f : α → Part β
x : Part α
g : β → γ
⊢ (x.bind fun x => (f x).bind (some ∘ g)) = x.bind fun y => map g (f y)
state_after: no goals
Theorem: LinearEquiv.coe_ofIsUnitDet
File: Mathlib/LinearAlgebra/Determinant.lean

tactic: ext x
state_before: R : Type u_1
inst✝⁶ : CommRing R
M : Type u_2
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type u_3
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
e : Basis ι R M
f : M →ₗ[R] M'
v : Basis ι R M
v' : Basis ι R M'
h : IsUnit ((toMatrix v v') f).det
⊢ ↑(ofIsUnitDet h) = f
state_after: case h
R : Type u_1
inst✝⁶ : CommRing R
M : Type u_2
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type u_3
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
e : Basis ι R M
f : M →ₗ[R] M'
v : Basis ι R M
v' : Basis ι R M'
h : IsUnit ((toMatrix v v') f).det
x : M
⊢ ↑(ofIsUnitDet h) x = f x

tactic: rfl
state_before: case h
R : Type u_1
inst✝⁶ : CommRing R
M : Type u_2
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type u_3
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
ι : Type u_4
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
e : Basis ι R M
f : M →ₗ[R] M'
v : Basis ι R M
v' : Basis ι R M'
h : IsUnit ((toMatrix v v') f).det
x : M
⊢ ↑(ofIsUnitDet h) x = f x
state_after: no goals
Theorem: CategoryTheory.ShortComplex.exact_iff_epi_kernel_lift
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: rw [exact_iff_epi_toCycles]
state_before: C : Type u_1
D : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Category.{?u.53985, u_2} D
inst✝³ : Preadditive C
inst✝² : Preadditive D
S : ShortComplex C
inst✝¹ : S.HasHomology
inst✝ : HasKernel S.g
⊢ S.Exact ↔ Epi (kernel.lift S.g S.f ⋯)
state_after: C : Type u_1
D : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Category.{?u.53985, u_2} D
inst✝³ : Preadditive C
inst✝² : Preadditive D
S : ShortComplex C
inst✝¹ : S.HasHomology
inst✝ : HasKernel S.g
⊢ Epi S.toCycles ↔ Epi (kernel.lift S.g S.f ⋯)

tactic: apply (MorphismProperty.RespectsIso.epimorphisms C).arrow_mk_iso_iff
state_before: C : Type u_1
D : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Category.{?u.53985, u_2} D
inst✝³ : Preadditive C
inst✝² : Preadditive D
S : ShortComplex C
inst✝¹ : S.HasHomology
inst✝ : HasKernel S.g
⊢ Epi S.toCycles ↔ Epi (kernel.lift S.g S.f ⋯)
state_after: C : Type u_1
D : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Category.{?u.53985, u_2} D
inst✝³ : Preadditive C
inst✝² : Preadditive D
S : ShortComplex C
inst✝¹ : S.HasHomology
inst✝ : HasKernel S.g
⊢ Arrow.mk S.toCycles ≅ Arrow.mk (kernel.lift S.g S.f ⋯)

tactic: exact Arrow.isoMk (Iso.refl _) S.cyclesIsoKernel (by aesop_cat)
state_before: C : Type u_1
D : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Category.{?u.53985, u_2} D
inst✝³ : Preadditive C
inst✝² : Preadditive D
S : ShortComplex C
inst✝¹ : S.HasHomology
inst✝ : HasKernel S.g
⊢ Arrow.mk S.toCycles ≅ Arrow.mk (kernel.lift S.g S.f ⋯)
state_after: no goals

tactic: aesop_cat
state_before: C : Type u_1
D : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Category.{?u.53985, u_2} D
inst✝³ : Preadditive C
inst✝² : Preadditive D
S : ShortComplex C
inst✝¹ : S.HasHomology
inst✝ : HasKernel S.g
⊢ (Iso.refl (Arrow.mk S.toCycles).left).hom ≫ (Arrow.mk (kernel.lift S.g S.f ⋯)).hom =
    (Arrow.mk S.toCycles).hom ≫ S.cyclesIsoKernel.hom
state_after: no goals
Theorem: Complex.cos_add_sin_mul_I_pow
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← exp_mul_I, ← exp_mul_I]
state_before: x y : ℂ
n : ℕ
z : ℂ
⊢ (cos z + sin z * I) ^ n = cos (↑n * z) + sin (↑n * z) * I
state_after: x y : ℂ
n : ℕ
z : ℂ
⊢ cexp (z * I) ^ n = cexp (↑n * z * I)

tactic: induction' n with n ih
state_before: x y : ℂ
n : ℕ
z : ℂ
⊢ cexp (z * I) ^ n = cexp (↑n * z * I)
state_after: case zero
x y z : ℂ
⊢ cexp (z * I) ^ 0 = cexp (↑0 * z * I)

case succ
x y z : ℂ
n : ℕ
ih : cexp (z * I) ^ n = cexp (↑n * z * I)
⊢ cexp (z * I) ^ (n + 1) = cexp (↑(n + 1) * z * I)

tactic: rw [pow_zero, Nat.cast_zero, zero_mul, zero_mul, exp_zero]
state_before: case zero
x y z : ℂ
⊢ cexp (z * I) ^ 0 = cexp (↑0 * z * I)
state_after: no goals

tactic: rw [pow_succ, ih, Nat.cast_succ, add_mul, add_mul, one_mul, exp_add]
state_before: case succ
x y z : ℂ
n : ℕ
ih : cexp (z * I) ^ n = cexp (↑n * z * I)
⊢ cexp (z * I) ^ (n + 1) = cexp (↑(n + 1) * z * I)
state_after: no goals
Theorem: YoungDiagram.rowLen_anti
File: Mathlib/Combinatorics/Young/YoungDiagram.lean

tactic: by_contra! h_lt
state_before: μ : YoungDiagram
i1 i2 : ℕ
hi : i1 ≤ i2
⊢ μ.rowLen i2 ≤ μ.rowLen i1
state_after: μ : YoungDiagram
i1 i2 : ℕ
hi : i1 ≤ i2
h_lt : μ.rowLen i1 < μ.rowLen i2
⊢ False

tactic: rw [← lt_self_iff_false (μ.rowLen i1)]
state_before: μ : YoungDiagram
i1 i2 : ℕ
hi : i1 ≤ i2
h_lt : μ.rowLen i1 < μ.rowLen i2
⊢ False
state_after: μ : YoungDiagram
i1 i2 : ℕ
hi : i1 ≤ i2
h_lt : μ.rowLen i1 < μ.rowLen i2
⊢ μ.rowLen i1 < μ.rowLen i1

tactic: rw [← mem_iff_lt_rowLen] at h_lt ⊢
state_before: μ : YoungDiagram
i1 i2 : ℕ
hi : i1 ≤ i2
h_lt : μ.rowLen i1 < μ.rowLen i2
⊢ μ.rowLen i1 < μ.rowLen i1
state_after: μ : YoungDiagram
i1 i2 : ℕ
hi : i1 ≤ i2
h_lt : (i2, μ.rowLen i1) ∈ μ
⊢ (i1, μ.rowLen i1) ∈ μ

tactic: exact μ.up_left_mem hi (by rfl) h_lt
state_before: μ : YoungDiagram
i1 i2 : ℕ
hi : i1 ≤ i2
h_lt : (i2, μ.rowLen i1) ∈ μ
⊢ (i1, μ.rowLen i1) ∈ μ
state_after: no goals

tactic: rfl
state_before: μ : YoungDiagram
i1 i2 : ℕ
hi : i1 ≤ i2
h_lt : (i2, μ.rowLen i1) ∈ μ
⊢ μ.rowLen i1 ≤ μ.rowLen i1
state_after: no goals
Theorem: closedBall_prod_same
File: Mathlib/Topology/MetricSpace/Pseudo/Constructions.lean

tactic: simp [Prod.dist_eq]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
x : α
y : β
r : ℝ
z : α × β
⊢ z ∈ closedBall x r ×ˢ closedBall y r ↔ z ∈ closedBall (x, y) r
state_after: no goals
Theorem: EisensteinSeries.div_max_sq_ge_one
File: Mathlib/NumberTheory/ModularForms/EisensteinSeries/UniformConvergence.lean

tactic: refine (max_choice (x 0).natAbs (x 1).natAbs).imp (fun H0 ↦ ?_) (fun H1 ↦ ?_)
state_before: z : ℍ
x : Fin 2 → ℤ
hx : x ≠ 0
⊢ 1 ≤ (↑(x 0) / ‖x‖) ^ 2 ∨ 1 ≤ (↑(x 1) / ‖x‖) ^ 2
state_after: case refine_1
z : ℍ
x : Fin 2 → ℤ
hx : x ≠ 0
H0 : max (x 0).natAbs (x 1).natAbs = (x 0).natAbs
⊢ 1 ≤ (↑(x 0) / ‖x‖) ^ 2

case refine_2
z : ℍ
x : Fin 2 → ℤ
hx : x ≠ 0
H1 : max (x 0).natAbs (x 1).natAbs = (x 1).natAbs
⊢ 1 ≤ (↑(x 1) / ‖x‖) ^ 2

tactic: have : x 0 ≠ 0 := by
  rwa [← norm_ne_zero_iff, norm_eq_max_natAbs, H0, Nat.cast_ne_zero, Int.natAbs_ne_zero] at hx
state_before: case refine_1
z : ℍ
x : Fin 2 → ℤ
hx : x ≠ 0
H0 : max (x 0).natAbs (x 1).natAbs = (x 0).natAbs
⊢ 1 ≤ (↑(x 0) / ‖x‖) ^ 2
state_after: case refine_1
z : ℍ
x : Fin 2 → ℤ
hx : x ≠ 0
H0 : max (x 0).natAbs (x 1).natAbs = (x 0).natAbs
this : x 0 ≠ 0
⊢ 1 ≤ (↑(x 0) / ‖x‖) ^ 2

tactic: simp only [norm_eq_max_natAbs, H0, Int.cast_natAbs, Int.cast_abs, div_pow, _root_.sq_abs, ne_eq,
  OfNat.ofNat_ne_zero, not_false_eq_true, pow_eq_zero_iff, Int.cast_eq_zero, this, div_self,
  le_refl]
state_before: case refine_1
z : ℍ
x : Fin 2 → ℤ
hx : x ≠ 0
H0 : max (x 0).natAbs (x 1).natAbs = (x 0).natAbs
this : x 0 ≠ 0
⊢ 1 ≤ (↑(x 0) / ‖x‖) ^ 2
state_after: no goals

tactic: rwa [← norm_ne_zero_iff, norm_eq_max_natAbs, H0, Nat.cast_ne_zero, Int.natAbs_ne_zero] at hx
state_before: z : ℍ
x : Fin 2 → ℤ
hx : x ≠ 0
H0 : max (x 0).natAbs (x 1).natAbs = (x 0).natAbs
⊢ x 0 ≠ 0
state_after: no goals

tactic: have : x 1 ≠ 0 := by
  rwa [← norm_ne_zero_iff, norm_eq_max_natAbs, H1, Nat.cast_ne_zero, Int.natAbs_ne_zero] at hx
state_before: case refine_2
z : ℍ
x : Fin 2 → ℤ
hx : x ≠ 0
H1 : max (x 0).natAbs (x 1).natAbs = (x 1).natAbs
⊢ 1 ≤ (↑(x 1) / ‖x‖) ^ 2
state_after: case refine_2
z : ℍ
x : Fin 2 → ℤ
hx : x ≠ 0
H1 : max (x 0).natAbs (x 1).natAbs = (x 1).natAbs
this : x 1 ≠ 0
⊢ 1 ≤ (↑(x 1) / ‖x‖) ^ 2

tactic: simp only [norm_eq_max_natAbs, H1, Int.cast_natAbs, Int.cast_abs, div_pow, _root_.sq_abs, ne_eq,
  OfNat.ofNat_ne_zero, not_false_eq_true, pow_eq_zero_iff, Int.cast_eq_zero, this, div_self,
  le_refl]
state_before: case refine_2
z : ℍ
x : Fin 2 → ℤ
hx : x ≠ 0
H1 : max (x 0).natAbs (x 1).natAbs = (x 1).natAbs
this : x 1 ≠ 0
⊢ 1 ≤ (↑(x 1) / ‖x‖) ^ 2
state_after: no goals

tactic: rwa [← norm_ne_zero_iff, norm_eq_max_natAbs, H1, Nat.cast_ne_zero, Int.natAbs_ne_zero] at hx
state_before: z : ℍ
x : Fin 2 → ℤ
hx : x ≠ 0
H1 : max (x 0).natAbs (x 1).natAbs = (x 1).natAbs
⊢ x 1 ≠ 0
state_after: no goals