1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SimpleGraph.IsTuranMaximal.le_iff_eq
File: Mathlib/Combinatorics/SimpleGraph/Turan.lean

tactic: classical exact ⟨fun hGH ↦ edgeFinset_inj.1 <| eq_of_subset_of_card_le
  (edgeFinset_subset_edgeFinset.2 hGH) (hG.2 _ hH), le_of_eq⟩
state_before: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
H : SimpleGraph V
hG : G.IsTuranMaximal r
hH : H.CliqueFree (r + 1)
⊢ G ≤ H ↔ G = H
state_after: no goals

tactic: exact ⟨fun hGH ↦ edgeFinset_inj.1 <| eq_of_subset_of_card_le
(edgeFinset_subset_edgeFinset.2 hGH) (hG.2 _ hH), le_of_eq⟩
state_before: V : Type u_1
inst✝² : Fintype V
inst✝¹ : DecidableEq V
G : SimpleGraph V
inst✝ : DecidableRel G.Adj
n r : ℕ
H : SimpleGraph V
hG : G.IsTuranMaximal r
hH : H.CliqueFree (r + 1)
⊢ G ≤ H ↔ G = H
state_after: no goals
Theorem: Inducing.comp
File: Mathlib/Topology/Maps.lean

tactic: rw [hf.induced, hg.induced, induced_compose]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
ι : Type u_4
f : X → Y
g : Y → Z
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
hg : Inducing g
hf : Inducing f
⊢ inst✝² = TopologicalSpace.induced (g ∘ f) inst✝
state_after: no goals
Theorem: Cardinal.toNat_lift
File: Mathlib/SetTheory/Cardinal/ToNat.lean

tactic: simp only [← toNat_toENat, toENat_lift]
state_before: α : Type u
c✝ d : Cardinal.{u}
c : Cardinal.{v}
⊢ toNat (lift.{u, v} c) = toNat c
state_after: no goals
Theorem: SeminormFamily.finset_sup_comp
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

tactic: ext x
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝⁶ : NormedField 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : NormedField 𝕜₂
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
q : SeminormFamily 𝕜₂ F ι
s : Finset ι
f : E →ₛₗ[σ₁₂] F
⊢ (s.sup q).comp f = s.sup (q.comp f)
state_after: case h
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝⁶ : NormedField 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : NormedField 𝕜₂
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
q : SeminormFamily 𝕜₂ F ι
s : Finset ι
f : E →ₛₗ[σ₁₂] F
x : E
⊢ ((s.sup q).comp f) x = (s.sup (q.comp f)) x

tactic: rw [Seminorm.comp_apply, Seminorm.finset_sup_apply, Seminorm.finset_sup_apply]
state_before: case h
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝⁶ : NormedField 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : NormedField 𝕜₂
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
q : SeminormFamily 𝕜₂ F ι
s : Finset ι
f : E →ₛₗ[σ₁₂] F
x : E
⊢ ((s.sup q).comp f) x = (s.sup (q.comp f)) x
state_after: case h
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝⁶ : NormedField 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : NormedField 𝕜₂
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
q : SeminormFamily 𝕜₂ F ι
s : Finset ι
f : E →ₛₗ[σ₁₂] F
x : E
⊢ ↑(s.sup fun i => ⟨(q i) (f x), ⋯⟩) = ↑(s.sup fun i => ⟨(q.comp f i) x, ⋯⟩)

tactic: rfl
state_before: case h
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝⁶ : NormedField 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : NormedField 𝕜₂
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜₂ F
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
q : SeminormFamily 𝕜₂ F ι
s : Finset ι
f : E →ₛₗ[σ₁₂] F
x : E
⊢ ↑(s.sup fun i => ⟨(q i) (f x), ⋯⟩) = ↑(s.sup fun i => ⟨(q.comp f i) x, ⋯⟩)
state_after: no goals
Theorem: NonAssocSemiring.toNonUnitalNonAssocSemiring_injective
File: Mathlib/Algebra/Ring/Ext.lean

tactic: intro _ _ _
state_before: R : Type u
⊢ Function.Injective (@toNonUnitalNonAssocSemiring R)
state_after: R : Type u
a₁✝ a₂✝ : NonAssocSemiring R
a✝ : toNonUnitalNonAssocSemiring = toNonUnitalNonAssocSemiring
⊢ a₁✝ = a₂✝

tactic: ext <;> congr
state_before: R : Type u
a₁✝ a₂✝ : NonAssocSemiring R
a✝ : toNonUnitalNonAssocSemiring = toNonUnitalNonAssocSemiring
⊢ a₁✝ = a₂✝
state_after: no goals
Theorem: BoxIntegral.hasIntegral_zero
File: Mathlib/Analysis/BoxIntegral/Basic.lean

tactic: simpa only [← (vol I).map_zero] using hasIntegral_const (0 : E)
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
⊢ HasIntegral I l (fun x => 0) vol 0
state_after: no goals
Theorem: Unitization.inl_mul_inr
File: Mathlib/Algebra/Algebra/Unitization.lean

tactic: rw [smul_zero, add_zero, zero_mul, add_zero]
state_before: R : Type u_1
A : Type u_2
inst✝² : Semiring R
inst✝¹ : NonUnitalNonAssocSemiring A
inst✝ : DistribMulAction R A
r : R
a : A
⊢ r • a + 0 • 0 + 0 * a = r • a
state_after: no goals
Theorem: isPiSystem_Icc
File: Mathlib/MeasureTheory/PiSystem.lean

tactic: exact Icc_inter_Icc
state_before: α : Type u_1
ι : Sort u_2
ι' : Sort u_3
inst✝ : LinearOrder α
f : ι → α
g : ι' → α
⊢ ∀ {a₁ b₁ a₂ b₂ : α}, Icc a₁ b₁ ∩ Icc a₂ b₂ = Icc (max a₁ a₂) (min b₁ b₂)
state_after: no goals
Theorem: Localization.map_isUnit_of_le
File: Mathlib/RingTheory/Localization/AsSubring.lean

tactic: apply IsLocalization.map_units K (⟨s.1, hS s.2⟩ : A⁰)
state_before: A : Type u_1
K : Type u_2
inst✝³ : CommRing A
S : Submonoid A
hS✝ : S ≤ A⁰
inst✝² : CommRing K
inst✝¹ : Algebra A K
inst✝ : IsFractionRing A K
hS : S ≤ A⁰
s : ↥S
⊢ IsUnit ((algebraMap A K) ↑s)
state_after: no goals
Theorem: Set.Infinite.exists_not_mem_finite
File: Mathlib/Data/Set/Finite.lean

tactic: by_contra! h
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
hs : s.Infinite
ht : t.Finite
⊢ ∃ a ∈ s, a ∉ t
state_after: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
hs : s.Infinite
ht : t.Finite
h : ∀ a ∈ s, a ∈ t
⊢ False

tactic: exact hs <| ht.subset h
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
s t : Set α
hs : s.Infinite
ht : t.Finite
h : ∀ a ∈ s, a ∈ t
⊢ False
state_after: no goals
Theorem: LinearMap.quotientInfEquivSupQuotient_symm_apply_left
File: Mathlib/LinearAlgebra/Isomorphisms.lean

tactic: rw [quotientInfEquivSupQuotient_apply_mk, inclusion_apply]
state_before: R : Type u_1
M : Type u_2
M₂ : Type u_3
M₃ : Type u_4
inst✝⁶ : Ring R
inst✝⁵ : AddCommGroup M
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup M₃
inst✝² : Module R M
inst✝¹ : Module R M₂
inst✝ : Module R M₃
f : M →ₗ[R] M₂
p p' : Submodule R M
x : ↥(p ⊔ p')
hx : ↑x ∈ p
⊢ Submodule.Quotient.mk x = (quotientInfEquivSupQuotient p p') (Submodule.Quotient.mk ⟨↑x, hx⟩)
state_after: no goals
Theorem: dvd_mul_of_dvd_right
File: Mathlib/Algebra/Divisibility/Basic.lean

tactic: rw [mul_comm]
state_before: α : Type u_1
inst✝ : CommSemigroup α
a b c✝ : α
h : a ∣ b
c : α
⊢ a ∣ c * b
state_after: α : Type u_1
inst✝ : CommSemigroup α
a b c✝ : α
h : a ∣ b
c : α
⊢ a ∣ b * c

tactic: exact h.mul_right _
state_before: α : Type u_1
inst✝ : CommSemigroup α
a b c✝ : α
h : a ∣ b
c : α
⊢ a ∣ b * c
state_after: no goals
Theorem: Function.Surjective.isArtinianRing
File: Mathlib/RingTheory/Artinian.lean

tactic: rw [isArtinianRing_iff, isArtinian_iff_wellFounded] at H ⊢
state_before: R : Type u_1
inst✝³ : Ring R
S : Type u_2
inst✝² : Ring S
F : Type u_3
inst✝¹ : FunLike F R S
inst✝ : RingHomClass F R S
f : F
hf : Surjective ⇑f
H : IsArtinianRing R
⊢ IsArtinianRing S
state_after: R : Type u_1
inst✝³ : Ring R
S : Type u_2
inst✝² : Ring S
F : Type u_3
inst✝¹ : FunLike F R S
inst✝ : RingHomClass F R S
f : F
hf : Surjective ⇑f
H : WellFounded fun x x_1 => x < x_1
⊢ WellFounded fun x x_1 => x < x_1

tactic: exact (Ideal.orderEmbeddingOfSurjective f hf).wellFounded H
state_before: R : Type u_1
inst✝³ : Ring R
S : Type u_2
inst✝² : Ring S
F : Type u_3
inst✝¹ : FunLike F R S
inst✝ : RingHomClass F R S
f : F
hf : Surjective ⇑f
H : WellFounded fun x x_1 => x < x_1
⊢ WellFounded fun x x_1 => x < x_1
state_after: no goals
Theorem: CategoryTheory.Limits.IsLimit.lift_comp_conePointsIsoOfNatIso_inv
File: Mathlib/CategoryTheory/Limits/IsLimit.lean

tactic: simp
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
F✝ : J ⥤ C
t✝ : Cone F✝
F G : J ⥤ C
r s : Cone G
t : Cone F
P : IsLimit t
Q : IsLimit s
w : F ≅ G
⊢ ∀ (j : J), (Q.lift r ≫ (P.conePointsIsoOfNatIso Q w).inv) ≫ t.π.app j = map r P w.inv ≫ t.π.app j
state_after: no goals
Theorem: inner_orthogonalProjection_eq_of_mem_right
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: rw [orthogonalProjection_inner_eq_zero _ _ (Submodule.coe_mem _), add_zero]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : HasOrthogonalProjection K
u : ↥K
v : E
⊢ ⟪↑((orthogonalProjection K) v), ↑u⟫_𝕜 =
    ⟪↑((orthogonalProjection K) v), ↑u⟫_𝕜 + ⟪v - ↑((orthogonalProjection K) v), ↑u⟫_𝕜
state_after: no goals

tactic: rw [← inner_add_left, add_sub_cancel]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : HasOrthogonalProjection K
u : ↥K
v : E
⊢ ⟪↑((orthogonalProjection K) v), ↑u⟫_𝕜 + ⟪v - ↑((orthogonalProjection K) v), ↑u⟫_𝕜 = ⟪v, ↑u⟫_𝕜
state_after: no goals
Theorem: sSup_atoms_eq_top
File: Mathlib/Order/Atoms.lean

tactic: refine Eq.trans (congr rfl (Set.ext fun x => ?_)) (sSup_atoms_le_eq ⊤)
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝¹ : CompleteLattice α
inst✝ : IsAtomistic α
⊢ sSup {a | IsAtom a} = ⊤
state_after: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝¹ : CompleteLattice α
inst✝ : IsAtomistic α
x : α
⊢ x ∈ {a | IsAtom a} ↔ x ∈ {a | IsAtom a ∧ a ≤ ⊤}

tactic: exact (and_iff_left le_top).symm
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
inst✝¹ : CompleteLattice α
inst✝ : IsAtomistic α
x : α
⊢ x ∈ {a | IsAtom a} ↔ x ∈ {a | IsAtom a ∧ a ≤ ⊤}
state_after: no goals
Theorem: MeasureTheory.Measure.measurable_dirac
File: Mathlib/MeasureTheory/Measure/GiryMonad.lean

tactic: refine measurable_of_measurable_coe _ fun s hs => ?_
state_before: α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
⊢ Measurable dirac
state_after: α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
s : Set α
hs : MeasurableSet s
⊢ Measurable fun b => (dirac b) s

tactic: simp_rw [dirac_apply' _ hs]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
s : Set α
hs : MeasurableSet s
⊢ Measurable fun b => (dirac b) s
state_after: α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
s : Set α
hs : MeasurableSet s
⊢ Measurable fun b => s.indicator 1 b

tactic: exact measurable_one.indicator hs
state_before: α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : MeasurableSpace β
s : Set α
hs : MeasurableSet s
⊢ Measurable fun b => s.indicator 1 b
state_after: no goals
Theorem: AbstractCompletion.uniformContinuous_extension₂
File: Mathlib/Topology/UniformSpace/AbstractCompletion.lean

tactic: rw [uniformContinuous₂_def, AbstractCompletion.extend₂, uncurry_curry]
state_before: α : Type u_1
inst✝³ : UniformSpace α
pkg : AbstractCompletion α
β : Type u_2
inst✝² : UniformSpace β
pkg' : AbstractCompletion β
γ : Type u_3
inst✝¹ : UniformSpace γ
f : α → β → γ
inst✝ : CompleteSpace γ
⊢ UniformContinuous₂ (pkg.extend₂ pkg' f)
state_after: α : Type u_1
inst✝³ : UniformSpace α
pkg : AbstractCompletion α
β : Type u_2
inst✝² : UniformSpace β
pkg' : AbstractCompletion β
γ : Type u_3
inst✝¹ : UniformSpace γ
f : α → β → γ
inst✝ : CompleteSpace γ
⊢ UniformContinuous ((pkg.prod pkg').extend (uncurry f))

tactic: apply uniformContinuous_extend
state_before: α : Type u_1
inst✝³ : UniformSpace α
pkg : AbstractCompletion α
β : Type u_2
inst✝² : UniformSpace β
pkg' : AbstractCompletion β
γ : Type u_3
inst✝¹ : UniformSpace γ
f : α → β → γ
inst✝ : CompleteSpace γ
⊢ UniformContinuous ((pkg.prod pkg').extend (uncurry f))
state_after: no goals
Theorem: GeneralizedContinuedFraction.continuantsAux_stable_of_terminated
File: Mathlib/Algebra/ContinuedFractions/TerminatedStable.lean

tactic: refine Nat.le_induction rfl (fun k hnk hk => ?_) _ n_lt_m
state_before: K : Type u_1
g : GeneralizedContinuedFraction K
n m : ℕ
inst✝ : DivisionRing K
n_lt_m : n < m
terminated_at_n : g.TerminatedAt n
⊢ g.continuantsAux m = g.continuantsAux (n + 1)
state_after: K : Type u_1
g : GeneralizedContinuedFraction K
n m : ℕ
inst✝ : DivisionRing K
n_lt_m : n < m
terminated_at_n : g.TerminatedAt n
k : ℕ
hnk : n.succ ≤ k
hk : g.continuantsAux k = g.continuantsAux (n + 1)
⊢ g.continuantsAux (k + 1) = g.continuantsAux (n + 1)

tactic: rcases Nat.exists_eq_add_of_lt hnk with ⟨k, rfl⟩
state_before: K : Type u_1
g : GeneralizedContinuedFraction K
n m : ℕ
inst✝ : DivisionRing K
n_lt_m : n < m
terminated_at_n : g.TerminatedAt n
k : ℕ
hnk : n.succ ≤ k
hk : g.continuantsAux k = g.continuantsAux (n + 1)
⊢ g.continuantsAux (k + 1) = g.continuantsAux (n + 1)
state_after: case intro
K : Type u_1
g : GeneralizedContinuedFraction K
n m : ℕ
inst✝ : DivisionRing K
n_lt_m : n < m
terminated_at_n : g.TerminatedAt n
k : ℕ
hnk : n.succ ≤ n + k + 1
hk : g.continuantsAux (n + k + 1) = g.continuantsAux (n + 1)
⊢ g.continuantsAux (n + k + 1 + 1) = g.continuantsAux (n + 1)

tactic: refine (continuantsAux_stable_step_of_terminated ?_).trans hk
state_before: case intro
K : Type u_1
g : GeneralizedContinuedFraction K
n m : ℕ
inst✝ : DivisionRing K
n_lt_m : n < m
terminated_at_n : g.TerminatedAt n
k : ℕ
hnk : n.succ ≤ n + k + 1
hk : g.continuantsAux (n + k + 1) = g.continuantsAux (n + 1)
⊢ g.continuantsAux (n + k + 1 + 1) = g.continuantsAux (n + 1)
state_after: case intro
K : Type u_1
g : GeneralizedContinuedFraction K
n m : ℕ
inst✝ : DivisionRing K
n_lt_m : n < m
terminated_at_n : g.TerminatedAt n
k : ℕ
hnk : n.succ ≤ n + k + 1
hk : g.continuantsAux (n + k + 1) = g.continuantsAux (n + 1)
⊢ g.TerminatedAt (n + k)

tactic: exact terminated_stable (Nat.le_add_right _ _) terminated_at_n
state_before: case intro
K : Type u_1
g : GeneralizedContinuedFraction K
n m : ℕ
inst✝ : DivisionRing K
n_lt_m : n < m
terminated_at_n : g.TerminatedAt n
k : ℕ
hnk : n.succ ≤ n + k + 1
hk : g.continuantsAux (n + k + 1) = g.continuantsAux (n + 1)
⊢ g.TerminatedAt (n + k)
state_after: no goals
Theorem: List.insertNth_eq_insertNthTR
File: .lake/packages/batteries/Batteries/Data/List/Basic.lean

tactic: funext α f n l
state_before: ⊢ @insertNth = @insertNthTR
state_after: case h.h.h.h
α : Type u_1
f : Nat
n : α
l : List α
⊢ insertNth f n l = insertNthTR f n l

tactic: simp [insertNthTR, insertNthTR_go_eq]
state_before: case h.h.h.h
α : Type u_1
f : Nat
n : α
l : List α
⊢ insertNth f n l = insertNthTR f n l
state_after: no goals
Theorem: Polynomial.leadingCoeff_normalize
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

tactic: simp
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizationMonoid R
p : R[X]
⊢ (normalize p).leadingCoeff = normalize p.leadingCoeff
state_after: no goals
Theorem: CategoryTheory.CosimplicialObject.eqToIso_refl
File: Mathlib/AlgebraicTopology/SimplicialObject.lean

tactic: ext
state_before: C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
h : n = n
⊢ X.eqToIso h = Iso.refl (X.obj [n])
state_after: case w
C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
h : n = n
⊢ (X.eqToIso h).hom = (Iso.refl (X.obj [n])).hom

tactic: simp [eqToIso]
state_before: case w
C : Type u
inst✝ : Category.{v, u} C
X : CosimplicialObject C
n : ℕ
h : n = n
⊢ (X.eqToIso h).hom = (Iso.refl (X.obj [n])).hom
state_after: no goals
Theorem: Besicovitch.ae_tendsto_measure_inter_div
File: Mathlib/MeasureTheory/Covering/Besicovitch.lean

tactic: filter_upwards [VitaliFamily.ae_tendsto_measure_inter_div (Besicovitch.vitaliFamily μ) s] with x
  hx using hx.comp (tendsto_filterAt μ x)
state_before: α : Type u_1
inst✝¹⁰ : MetricSpace α
β : Type u
inst✝⁹ : SecondCountableTopology α
inst✝⁸ : MeasurableSpace α
inst✝⁷ : OpensMeasurableSpace α
inst✝⁶ : HasBesicovitchCovering α
inst✝⁵ : MetricSpace β
inst✝⁴ : MeasurableSpace β
inst✝³ : BorelSpace β
inst✝² : SecondCountableTopology β
inst✝¹ : HasBesicovitchCovering β
μ : Measure β
inst✝ : IsLocallyFiniteMeasure μ
s : Set β
⊢ ∀ᵐ (x : β) ∂μ.restrict s, Tendsto (fun r => μ (s ∩ closedBall x r) / μ (closedBall x r)) (𝓝[>] 0) (𝓝 1)
state_after: no goals
Theorem: PythagoreanTriple.ne_zero_of_coprime
File: Mathlib/NumberTheory/PythagoreanTriples.lean

tactic: suffices 0 < z * z by
  rintro rfl
  norm_num at this
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
⊢ z ≠ 0
state_after: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
⊢ 0 < z * z

tactic: rw [← h.eq, ← sq, ← sq]
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
⊢ 0 < z * z
state_after: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
⊢ 0 < x ^ 2 + y ^ 2

tactic: have hc' : Int.gcd x y ≠ 0 := by
  rw [hc]
  exact one_ne_zero
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
⊢ 0 < x ^ 2 + y ^ 2
state_after: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
hc' : x.gcd y ≠ 0
⊢ 0 < x ^ 2 + y ^ 2

tactic: cases' Int.ne_zero_of_gcd hc' with hxz hyz
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
hc' : x.gcd y ≠ 0
⊢ 0 < x ^ 2 + y ^ 2
state_after: case inl
x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
hc' : x.gcd y ≠ 0
hxz : x ≠ 0
⊢ 0 < x ^ 2 + y ^ 2

case inr
x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
hc' : x.gcd y ≠ 0
hyz : y ≠ 0
⊢ 0 < x ^ 2 + y ^ 2

tactic: rintro rfl
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
this : 0 < z * z
⊢ z ≠ 0
state_after: x y : ℤ
hc : x.gcd y = 1
h : PythagoreanTriple x y 0
this : 0 < 0 * 0
⊢ False

tactic: norm_num at this
state_before: x y : ℤ
hc : x.gcd y = 1
h : PythagoreanTriple x y 0
this : 0 < 0 * 0
⊢ False
state_after: no goals

tactic: rw [hc]
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
⊢ x.gcd y ≠ 0
state_after: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
⊢ 1 ≠ 0

tactic: exact one_ne_zero
state_before: x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
⊢ 1 ≠ 0
state_after: no goals

tactic: apply lt_add_of_pos_of_le (sq_pos_of_ne_zero hxz) (sq_nonneg y)
state_before: case inl
x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
hc' : x.gcd y ≠ 0
hxz : x ≠ 0
⊢ 0 < x ^ 2 + y ^ 2
state_after: no goals

tactic: apply lt_add_of_le_of_pos (sq_nonneg x) (sq_pos_of_ne_zero hyz)
state_before: case inr
x y z : ℤ
h : PythagoreanTriple x y z
hc : x.gcd y = 1
hc' : x.gcd y ≠ 0
hyz : y ≠ 0
⊢ 0 < x ^ 2 + y ^ 2
state_after: no goals
Theorem: Finset.erase_cons
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [cons_eq_insert, erase_insert_eq_erase, erase_eq_of_not_mem h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a✝ b : α
s : Finset α
a : α
h : a ∉ s
⊢ (cons a s h).erase a = s
state_after: no goals
Theorem: ByteArray.set_set
File: .lake/packages/batteries/Batteries/Data/ByteArray.lean

tactic: simp [i.2]
state_before: a : ByteArray
i : Fin a.size
v v' : UInt8
⊢ ↑i < (a.set i v).size
state_after: no goals
Theorem: mulIndicator_eventuallyEq
File: Mathlib/Order/Filter/IndicatorFunction.lean

tactic: simp only [*, hst.1 hxs, mulIndicator_of_mem]
state_before: α : Type u_1
β : Type u_2
M : Type u_3
E : Type u_4
inst✝ : One M
s t : Set α
f g : α → M
a : α
l : Filter α
hf : f =ᶠ[l ⊓ 𝓟 s] g
hs : s =ᶠ[l] t
x : α
hst : x ∈ s ↔ x ∈ t
hfg : x ∈ s → f x = g x
hxs : x ∈ s
⊢ s.mulIndicator f x = t.mulIndicator g x
state_after: no goals

tactic: simp only [mulIndicator_of_not_mem, hxs, mt hst.2 hxs, not_false_eq_true]
state_before: α : Type u_1
β : Type u_2
M : Type u_3
E : Type u_4
inst✝ : One M
s t : Set α
f g : α → M
a : α
l : Filter α
hf : f =ᶠ[l ⊓ 𝓟 s] g
hs : s =ᶠ[l] t
x : α
hst : x ∈ s ↔ x ∈ t
hfg : x ∈ s → f x = g x
hxs : x ∉ s
⊢ s.mulIndicator f x = t.mulIndicator g x
state_after: no goals
Theorem: CategoryTheory.Limits.PullbackCone.op_inr
File: Mathlib/CategoryTheory/Limits/Opposites.lean

tactic: aesop_cat
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : Type u₂
inst✝ : Category.{v₂, u₂} J
X✝ : Type v₂
X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
c : PullbackCone f g
⊢ c.op.inr = c.snd.op
state_after: no goals
Theorem: OrderEmbedding.image_Ici
File: Mathlib/Order/UpperLower/Basic.lean

tactic: rw [← e.preimage_Ici, image_preimage_eq_inter_range,
  inter_eq_left.2 <| he.Ici_subset (mem_range_self _)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : Preorder α
inst✝ : Preorder β
s : Set α
p : α → Prop
a✝ : α
e : α ↪o β
he : IsUpperSet (range ⇑e)
a : α
⊢ ⇑e '' Ici a = Ici (e a)
state_after: no goals
Theorem: Fin.partialProd_left_inv
File: Mathlib/Algebra/BigOperators/Fin.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Monoid α
n : ℕ
G : Type u_3
inst✝ : Group G
f : Fin (n + 1) → G
x : Fin (n + 1)
⊢ (f 0 • partialProd fun i => (f ↑↑i)⁻¹ * f i.succ) 0 = f 0
state_after: no goals

tactic: simp only [coe_eq_castSucc, Pi.smul_apply, smul_eq_mul] at hx ⊢
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Monoid α
n : ℕ
G : Type u_3
inst✝ : Group G
f : Fin (n + 1) → G
x✝ : Fin (n + 1)
x : Fin n
hx : (f 0 • partialProd fun i => (f ↑↑i)⁻¹ * f i.succ) x.castSucc = f x.castSucc
⊢ (f 0 • partialProd fun i => (f ↑↑i)⁻¹ * f i.succ) x.succ = f x.succ
state_after: α : Type u_1
β : Type u_2
inst✝¹ : Monoid α
n : ℕ
G : Type u_3
inst✝ : Group G
f : Fin (n + 1) → G
x✝ : Fin (n + 1)
x : Fin n
hx : f 0 * partialProd (fun i => (f i.castSucc)⁻¹ * f i.succ) x.castSucc = f x.castSucc
⊢ f 0 * partialProd (fun i => (f i.castSucc)⁻¹ * f i.succ) x.succ = f x.succ

tactic: rw [partialProd_succ, ← mul_assoc, hx, mul_inv_cancel_left]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Monoid α
n : ℕ
G : Type u_3
inst✝ : Group G
f : Fin (n + 1) → G
x✝ : Fin (n + 1)
x : Fin n
hx : f 0 * partialProd (fun i => (f i.castSucc)⁻¹ * f i.succ) x.castSucc = f x.castSucc
⊢ f 0 * partialProd (fun i => (f i.castSucc)⁻¹ * f i.succ) x.succ = f x.succ
state_after: no goals
Theorem: Function.minimalPeriod_prod_map
File: Mathlib/Dynamics/PeriodicPts.lean

tactic: cases x
state_before: α : Type u_1
β : Type u_2
f✝ : α → α
g✝ : β → β
x✝ : α × β
a : α
b : β
m n : ℕ
f : α → α
g : β → β
x : α × β
⊢ ∀ (c : ℕ), minimalPeriod (Prod.map f g) x ∣ c ↔ (minimalPeriod f x.1).lcm (minimalPeriod g x.2) ∣ c
state_after: case mk
α : Type u_1
β : Type u_2
f✝ : α → α
g✝ : β → β
x : α × β
a : α
b : β
m n : ℕ
f : α → α
g : β → β
fst✝ : α
snd✝ : β
⊢ ∀ (c : ℕ),
    minimalPeriod (Prod.map f g) (fst✝, snd✝) ∣ c ↔
      (minimalPeriod f (fst✝, snd✝).1).lcm (minimalPeriod g (fst✝, snd✝).2) ∣ c

tactic: simp [← isPeriodicPt_iff_minimalPeriod_dvd, Nat.lcm_dvd_iff]
state_before: case mk
α : Type u_1
β : Type u_2
f✝ : α → α
g✝ : β → β
x : α × β
a : α
b : β
m n : ℕ
f : α → α
g : β → β
fst✝ : α
snd✝ : β
⊢ ∀ (c : ℕ),
    minimalPeriod (Prod.map f g) (fst✝, snd✝) ∣ c ↔
      (minimalPeriod f (fst✝, snd✝).1).lcm (minimalPeriod g (fst✝, snd✝).2) ∣ c
state_after: no goals