1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.ShortComplex.quasiIso_iff_isIso_descOpcycles
File: Mathlib/Algebra/Homology/ShortComplex/QuasiIso.lean

tactic: rw [← φ.comm₁₂, hf₂, comp_zero]
state_before: C : Type ?u.31801
inst✝⁷ : Category.{?u.31805, ?u.31801} C
inst✝⁶ : HasZeroMorphisms C
S₁ S₂ S₃ S₄ : ShortComplex C
inst✝⁵ : S₁.HasHomology
inst✝⁴ : S₂.HasHomology
inst✝³ : S₃.HasHomology
inst✝² : S₄.HasHomology
φ : S₁ ⟶ S₂
hg₁ : S₁.g = 0
hf₂ : S₂.f = 0
hg₂ : S₂.g = 0
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
⊢ S₁.f ≫ φ.τ₂ = 0
state_after: no goals

tactic: let H : RightHomologyMapData φ
    (RightHomologyData.ofIsColimitCokernelCofork S₁ hg₁ _ S₁.opcyclesIsCokernel)
      (RightHomologyData.ofZeros S₂ hf₂ hg₂) :=
  { φQ := S₁.descOpcycles φ.τ₂ (by rw [← φ.comm₁₂, hf₂, comp_zero])
    φH := S₁.descOpcycles φ.τ₂ (by rw [← φ.comm₁₂, hf₂, comp_zero]) }
state_before: C : Type u_2
inst✝⁷ : Category.{u_1, u_2} C
inst✝⁶ : HasZeroMorphisms C
S₁ S₂ S₃ S₄ : ShortComplex C
inst✝⁵ : S₁.HasHomology
inst✝⁴ : S₂.HasHomology
inst✝³ : S₃.HasHomology
inst✝² : S₄.HasHomology
φ : S₁ ⟶ S₂
hg₁ : S₁.g = 0
hf₂ : S₂.f = 0
hg₂ : S₂.g = 0
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
⊢ QuasiIso φ ↔ IsIso (S₁.descOpcycles φ.τ₂ ⋯)
state_after: C : Type u_2
inst✝⁷ : Category.{u_1, u_2} C
inst✝⁶ : HasZeroMorphisms C
S₁ S₂ S₃ S₄ : ShortComplex C
inst✝⁵ : S₁.HasHomology
inst✝⁴ : S₂.HasHomology
inst✝³ : S₃.HasHomology
inst✝² : S₄.HasHomology
φ : S₁ ⟶ S₂
hg₁ : S₁.g = 0
hf₂ : S₂.f = 0
hg₂ : S₂.g = 0
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
H : RightHomologyMapData φ
  (RightHomologyData.ofIsColimitCokernelCofork S₁ hg₁ (CokernelCofork.ofπ S₁.pOpcycles ⋯) S₁.opcyclesIsCokernel)
  (RightHomologyData.ofZeros S₂ hf₂ hg₂) :=
  { φQ := S₁.descOpcycles φ.τ₂ ⋯, φH := S₁.descOpcycles φ.τ₂ ⋯, commp := ⋯, commg' := ⋯, commι := ⋯ }
⊢ QuasiIso φ ↔ IsIso (S₁.descOpcycles φ.τ₂ ⋯)

tactic: exact H.quasiIso_iff
state_before: C : Type u_2
inst✝⁷ : Category.{u_1, u_2} C
inst✝⁶ : HasZeroMorphisms C
S₁ S₂ S₃ S₄ : ShortComplex C
inst✝⁵ : S₁.HasHomology
inst✝⁴ : S₂.HasHomology
inst✝³ : S₃.HasHomology
inst✝² : S₄.HasHomology
φ : S₁ ⟶ S₂
hg₁ : S₁.g = 0
hf₂ : S₂.f = 0
hg₂ : S₂.g = 0
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
H : RightHomologyMapData φ
  (RightHomologyData.ofIsColimitCokernelCofork S₁ hg₁ (CokernelCofork.ofπ S₁.pOpcycles ⋯) S₁.opcyclesIsCokernel)
  (RightHomologyData.ofZeros S₂ hf₂ hg₂) :=
  { φQ := S₁.descOpcycles φ.τ₂ ⋯, φH := S₁.descOpcycles φ.τ₂ ⋯, commp := ⋯, commg' := ⋯, commι := ⋯ }
⊢ QuasiIso φ ↔ IsIso (S₁.descOpcycles φ.τ₂ ⋯)
state_after: no goals

tactic: rw [← φ.comm₁₂, hf₂, comp_zero]
state_before: C : Type u_2
inst✝⁷ : Category.{u_1, u_2} C
inst✝⁶ : HasZeroMorphisms C
S₁ S₂ S₃ S₄ : ShortComplex C
inst✝⁵ : S₁.HasHomology
inst✝⁴ : S₂.HasHomology
inst✝³ : S₃.HasHomology
inst✝² : S₄.HasHomology
φ : S₁ ⟶ S₂
hg₁ : S₁.g = 0
hf₂ : S₂.f = 0
hg₂ : S₂.g = 0
inst✝¹ : S₁.HasHomology
inst✝ : S₂.HasHomology
⊢ S₁.f ≫ φ.τ₂ = 0
state_after: no goals
Theorem: CliffordAlgebra.isUnit_of_isUnit_ι
File: Mathlib/LinearAlgebra/CliffordAlgebra/Inversion.lean

tactic: cases h.nonempty_invertible
state_before: R : Type u_1
M : Type u_2
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
Q : QuadraticForm R M
inst✝ : Invertible 2
m : M
h : IsUnit ((ι Q) m)
⊢ IsUnit (Q m)
state_after: case intro
R : Type u_1
M : Type u_2
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
Q : QuadraticForm R M
inst✝ : Invertible 2
m : M
h : IsUnit ((ι Q) m)
val✝ : Invertible ((ι Q) m)
⊢ IsUnit (Q m)

tactic: letI := invertibleOfInvertibleι Q m
state_before: case intro
R : Type u_1
M : Type u_2
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
Q : QuadraticForm R M
inst✝ : Invertible 2
m : M
h : IsUnit ((ι Q) m)
val✝ : Invertible ((ι Q) m)
⊢ IsUnit (Q m)
state_after: case intro
R : Type u_1
M : Type u_2
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
Q : QuadraticForm R M
inst✝ : Invertible 2
m : M
h : IsUnit ((ι Q) m)
val✝ : Invertible ((ι Q) m)
this : Invertible (Q m) := invertibleOfInvertibleι Q m
⊢ IsUnit (Q m)

tactic: exact isUnit_of_invertible (Q m)
state_before: case intro
R : Type u_1
M : Type u_2
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
Q : QuadraticForm R M
inst✝ : Invertible 2
m : M
h : IsUnit ((ι Q) m)
val✝ : Invertible ((ι Q) m)
this : Invertible (Q m) := invertibleOfInvertibleι Q m
⊢ IsUnit (Q m)
state_after: no goals
Theorem: TopCat.openEmbedding_of_pullback_open_embeddings
File: Mathlib/Topology/Category/TopCat/Limits/Pullbacks.lean

tactic: convert H₂.comp (snd_openEmbedding_of_left_openEmbedding H₁ g)
state_before: J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z : TopCat
X Y S : TopCat
f : X ⟶ S
g : Y ⟶ S
H₁ : OpenEmbedding ⇑f
H₂ : OpenEmbedding ⇑g
⊢ OpenEmbedding ⇑(limit.π (cospan f g) WalkingCospan.one)
state_after: case h.e'_5.h
J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z : TopCat
X Y S : TopCat
f : X ⟶ S
g : Y ⟶ S
H₁ : OpenEmbedding ⇑f
H₂ : OpenEmbedding ⇑g
e_2✝ : ↑((cospan f g).obj WalkingCospan.one) = ↑S
⊢ ⇑(limit.π (cospan f g) WalkingCospan.one) = ⇑g ∘ ⇑pullback.snd

tactic: erw [← coe_comp]
state_before: case h.e'_5.h
J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z : TopCat
X Y S : TopCat
f : X ⟶ S
g : Y ⟶ S
H₁ : OpenEmbedding ⇑f
H₂ : OpenEmbedding ⇑g
e_2✝ : ↑((cospan f g).obj WalkingCospan.one) = ↑S
⊢ ⇑(limit.π (cospan f g) WalkingCospan.one) = ⇑g ∘ ⇑pullback.snd
state_after: case h.e'_5.h
J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z : TopCat
X Y S : TopCat
f : X ⟶ S
g : Y ⟶ S
H₁ : OpenEmbedding ⇑f
H₂ : OpenEmbedding ⇑g
e_2✝ : ↑((cospan f g).obj WalkingCospan.one) = ↑S
⊢ ⇑(limit.π (cospan f g) WalkingCospan.one) = ⇑(pullback.snd ≫ g)

tactic: rw [← limit.w _ WalkingCospan.Hom.inr]
state_before: case h.e'_5.h
J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z : TopCat
X Y S : TopCat
f : X ⟶ S
g : Y ⟶ S
H₁ : OpenEmbedding ⇑f
H₂ : OpenEmbedding ⇑g
e_2✝ : ↑((cospan f g).obj WalkingCospan.one) = ↑S
⊢ ⇑(limit.π (cospan f g) WalkingCospan.one) = ⇑(pullback.snd ≫ g)
state_after: case h.e'_5.h
J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z : TopCat
X Y S : TopCat
f : X ⟶ S
g : Y ⟶ S
H₁ : OpenEmbedding ⇑f
H₂ : OpenEmbedding ⇑g
e_2✝ : ↑((cospan f g).obj WalkingCospan.one) = ↑S
⊢ ⇑(limit.π (cospan f g) WalkingCospan.right ≫ (cospan f g).map WalkingCospan.Hom.inr) = ⇑(pullback.snd ≫ g)

tactic: rfl
state_before: case h.e'_5.h
J : Type v
inst✝ : SmallCategory J
X✝ Y✝ Z : TopCat
X Y S : TopCat
f : X ⟶ S
g : Y ⟶ S
H₁ : OpenEmbedding ⇑f
H₂ : OpenEmbedding ⇑g
e_2✝ : ↑((cospan f g).obj WalkingCospan.one) = ↑S
⊢ ⇑(limit.π (cospan f g) WalkingCospan.right ≫ (cospan f g).map WalkingCospan.Hom.inr) = ⇑(pullback.snd ≫ g)
state_after: no goals
Theorem: MeasureTheory.Measure.sum_apply_of_countable
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: apply le_antisymm ?_ (le_sum_apply _ _)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f✝ : α → β
inst✝ : Countable ι
f : ι → Measure α
s : Set α
⊢ (sum f) s = ∑' (i : ι), (f i) s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f✝ : α → β
inst✝ : Countable ι
f : ι → Measure α
s : Set α
⊢ (sum f) s ≤ ∑' (i : ι), (f i) s

tactic: rcases exists_measurable_superset_forall_eq f s with ⟨t, hst, htm, ht⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f✝ : α → β
inst✝ : Countable ι
f : ι → Measure α
s : Set α
⊢ (sum f) s ≤ ∑' (i : ι), (f i) s
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
f✝ : α → β
inst✝ : Countable ι
f : ι → Measure α
s t : Set α
hst : s ⊆ t
htm : MeasurableSet t
ht : ∀ (i : ι), (f i) t = (f i) s
⊢ (sum f) s ≤ ∑' (i : ι), (f i) s

tactic: calc
sum f s ≤ sum f t := measure_mono hst
_ = ∑' i, f i t := sum_apply _ htm
_ = ∑' i, f i s := by simp [ht]
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
f✝ : α → β
inst✝ : Countable ι
f : ι → Measure α
s t : Set α
hst : s ⊆ t
htm : MeasurableSet t
ht : ∀ (i : ι), (f i) t = (f i) s
⊢ (sum f) s ≤ ∑' (i : ι), (f i) s
state_after: no goals

tactic: simp [ht]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
f✝ : α → β
inst✝ : Countable ι
f : ι → Measure α
s t : Set α
hst : s ⊆ t
htm : MeasurableSet t
ht : ∀ (i : ι), (f i) t = (f i) s
⊢ ∑' (i : ι), (f i) t = ∑' (i : ι), (f i) s
state_after: no goals
Theorem: continuousOn_prod_of_discrete_right
File: Mathlib/Topology/ContinuousOn.lean

tactic: simp_rw [ContinuousOn, Prod.forall, continuousWithinAt_prod_of_discrete_right]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : (i : ι) → TopologicalSpace (π i)
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology β
f : α × β → γ
s : Set (α × β)
⊢ ContinuousOn f s ↔ ∀ (b : β), ContinuousOn (fun x => f (x, b)) {a | (a, b) ∈ s}
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : (i : ι) → TopologicalSpace (π i)
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology β
f : α × β → γ
s : Set (α × β)
⊢ (∀ (a : α) (b : β), (a, b) ∈ s → ContinuousWithinAt (fun x => f (x, b)) {a | (a, b) ∈ s} a) ↔
    ∀ (b : β), ∀ x ∈ {a | (a, b) ∈ s}, ContinuousWithinAt (fun x => f (x, b)) {a | (a, b) ∈ s} x

tactic: apply forall_swap
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁵ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝⁴ : (i : ι) → TopologicalSpace (π i)
inst✝³ : TopologicalSpace β
inst✝² : TopologicalSpace γ
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology β
f : α × β → γ
s : Set (α × β)
⊢ (∀ (a : α) (b : β), (a, b) ∈ s → ContinuousWithinAt (fun x => f (x, b)) {a | (a, b) ∈ s} a) ↔
    ∀ (b : β), ∀ x ∈ {a | (a, b) ∈ s}, ContinuousWithinAt (fun x => f (x, b)) {a | (a, b) ∈ s} x
state_after: no goals
Theorem: mul_self_pos
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: constructor
state_before: α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a✝ b c d : α
inst✝ : ExistsAddOfLE α
a : α
⊢ 0 < a * a ↔ a ≠ 0
state_after: case mp
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a✝ b c d : α
inst✝ : ExistsAddOfLE α
a : α
⊢ 0 < a * a → a ≠ 0

case mpr
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a✝ b c d : α
inst✝ : ExistsAddOfLE α
a : α
⊢ a ≠ 0 → 0 < a * a

tactic: rintro h rfl
state_before: case mp
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a✝ b c d : α
inst✝ : ExistsAddOfLE α
a : α
⊢ 0 < a * a → a ≠ 0
state_after: case mp
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
h : 0 < 0 * 0
⊢ False

tactic: rw [mul_zero] at h
state_before: case mp
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
h : 0 < 0 * 0
⊢ False
state_after: case mp
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
h : 0 < 0
⊢ False

tactic: exact h.false
state_before: case mp
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
h : 0 < 0
⊢ False
state_after: no goals

tactic: intro h
state_before: case mpr
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a✝ b c d : α
inst✝ : ExistsAddOfLE α
a : α
⊢ a ≠ 0 → 0 < a * a
state_after: case mpr
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a✝ b c d : α
inst✝ : ExistsAddOfLE α
a : α
h : a ≠ 0
⊢ 0 < a * a

tactic: cases' h.lt_or_lt with h h
state_before: case mpr
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a✝ b c d : α
inst✝ : ExistsAddOfLE α
a : α
h : a ≠ 0
⊢ 0 < a * a
state_after: case mpr.inl
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a✝ b c d : α
inst✝ : ExistsAddOfLE α
a : α
h✝ : a ≠ 0
h : a < 0
⊢ 0 < a * a

case mpr.inr
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a✝ b c d : α
inst✝ : ExistsAddOfLE α
a : α
h✝ : a ≠ 0
h : 0 < a
⊢ 0 < a * a

tactic: exacts [mul_pos_of_neg_of_neg h h, mul_pos h h]
state_before: case mpr.inl
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a✝ b c d : α
inst✝ : ExistsAddOfLE α
a : α
h✝ : a ≠ 0
h : a < 0
⊢ 0 < a * a

case mpr.inr
α : Type u
β : Type u_1
inst✝¹ : LinearOrderedSemiring α
a✝ b c d : α
inst✝ : ExistsAddOfLE α
a : α
h✝ : a ≠ 0
h : 0 < a
⊢ 0 < a * a
state_after: no goals
Theorem: NumberField.ComplexEmbedding.IsConj.isUnramified_mk_iff
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: rw [h.ext_iff, ComplexEmbedding.isConj_one_iff, ← not_iff_not, not_isUnramified_iff,
  ← not_isReal_iff_isComplex, comap_mk, isReal_mk_iff, isReal_mk_iff, eq_true h.isReal_comp,
  and_true]
state_before: k : Type u_1
inst✝⁷ : Field k
K : Type u_2
inst✝⁶ : Field K
F : Type u_3
inst✝⁵ : Field F
inst✝⁴ : NumberField K
inst✝³ : Algebra k K
inst✝² : Algebra k F
inst✝¹ : Algebra K F
inst✝ : IsScalarTower k K F
σ : K ≃ₐ[k] K
w : InfinitePlace K
φ : K →+* ℂ
h : ComplexEmbedding.IsConj φ σ
⊢ IsUnramified k (mk φ) ↔ σ = 1
state_after: no goals
Theorem: IsArtinian.exists_pow_succ_smul_dvd
File: Mathlib/RingTheory/Artinian.lean

tactic: obtain ⟨n, hn⟩ := IsArtinian.range_smul_pow_stabilizes M r
state_before: R : Type u_1
M : Type u_2
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
r : R
x : M
⊢ ∃ n y, r ^ n.succ • y = r ^ n • x
state_after: case intro
R : Type u_1
M : Type u_2
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
r : R
x : M
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → LinearMap.range (r ^ n • LinearMap.id) = LinearMap.range (r ^ m • LinearMap.id)
⊢ ∃ n y, r ^ n.succ • y = r ^ n • x

tactic: simp_rw [SetLike.ext_iff] at hn
state_before: case intro
R : Type u_1
M : Type u_2
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
r : R
x : M
n : ℕ
hn : ∀ (m : ℕ), n ≤ m → LinearMap.range (r ^ n • LinearMap.id) = LinearMap.range (r ^ m • LinearMap.id)
⊢ ∃ n y, r ^ n.succ • y = r ^ n • x
state_after: case intro
R : Type u_1
M : Type u_2
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
r : R
x : M
n : ℕ
hn :
  ∀ (m : ℕ), n ≤ m → ∀ (x : M), x ∈ LinearMap.range (r ^ n • LinearMap.id) ↔ x ∈ LinearMap.range (r ^ m • LinearMap.id)
⊢ ∃ n y, r ^ n.succ • y = r ^ n • x

tactic: exact ⟨n, by simpa using hn n.succ n.le_succ (r ^ n • x)⟩
state_before: case intro
R : Type u_1
M : Type u_2
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
r : R
x : M
n : ℕ
hn :
  ∀ (m : ℕ), n ≤ m → ∀ (x : M), x ∈ LinearMap.range (r ^ n • LinearMap.id) ↔ x ∈ LinearMap.range (r ^ m • LinearMap.id)
⊢ ∃ n y, r ^ n.succ • y = r ^ n • x
state_after: no goals

tactic: simpa using hn n.succ n.le_succ (r ^ n • x)
state_before: R : Type u_1
M : Type u_2
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
inst✝ : IsArtinian R M
r : R
x : M
n : ℕ
hn :
  ∀ (m : ℕ), n ≤ m → ∀ (x : M), x ∈ LinearMap.range (r ^ n • LinearMap.id) ↔ x ∈ LinearMap.range (r ^ m • LinearMap.id)
⊢ ∃ y, r ^ n.succ • y = r ^ n • x
state_after: no goals
Theorem: Bool.eq_not_iff
File: Mathlib/Data/Bool/Basic.lean

tactic: decide
state_before: ⊢ ∀ {a b : Bool}, a = !b ↔ a ≠ b
state_after: no goals
Theorem: WittVector.wittPolyProd_vars
File: Mathlib/RingTheory/WittVector/MulCoeff.lean

tactic: rw [wittPolyProd]
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ (wittPolyProd p n).vars ⊆ univ ×ˢ range (n + 1)
state_after: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ ((rename (Prod.mk 0)) (wittPolynomial p ℤ n) * (rename (Prod.mk 1)) (wittPolynomial p ℤ n)).vars ⊆
    univ ×ˢ range (n + 1)

tactic: apply Subset.trans (vars_mul _ _)
state_before: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ ((rename (Prod.mk 0)) (wittPolynomial p ℤ n) * (rename (Prod.mk 1)) (wittPolynomial p ℤ n)).vars ⊆
    univ ×ˢ range (n + 1)
state_after: p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ ((rename (Prod.mk 0)) (wittPolynomial p ℤ n)).vars ∪ ((rename (Prod.mk 1)) (wittPolynomial p ℤ n)).vars ⊆
    univ ×ˢ range (n + 1)

tactic: refine Subset.trans (vars_rename _ _) ?_
state_before: case refine_2
p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ ((rename (Prod.mk 1)) (wittPolynomial p ℤ n)).vars ⊆ univ ×ˢ range (n + 1)
state_after: case refine_2
p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ image (Prod.mk 1) (wittPolynomial p ℤ n).vars ⊆ univ ×ˢ range (n + 1)

tactic: simp [wittPolynomial_vars, image_subset_iff]
state_before: case refine_2
p : ℕ
hp : Fact (Nat.Prime p)
k : Type u_1
inst✝ : CommRing k
n : ℕ
⊢ image (Prod.mk 1) (wittPolynomial p ℤ n).vars ⊆ univ ×ˢ range (n + 1)
state_after: no goals
Theorem: MeasureTheory.injective_diracProba
File: Mathlib/MeasureTheory/Measure/DiracProba.lean

tactic: intro x y x_eq_y
state_before: X✝ : Type u_1
inst✝² : MeasurableSpace X✝
X : Type u_2
inst✝¹ : MeasurableSpace X
inst✝ : MeasurableSpace.SeparatesPoints X
⊢ Function.Injective fun x => diracProba x
state_after: X✝ : Type u_1
inst✝² : MeasurableSpace X✝
X : Type u_2
inst✝¹ : MeasurableSpace X
inst✝ : MeasurableSpace.SeparatesPoints X
x y : X
x_eq_y : (fun x => diracProba x) x = (fun x => diracProba x) y
⊢ x = y

tactic: rw [← dirac_eq_dirac_iff]
state_before: X✝ : Type u_1
inst✝² : MeasurableSpace X✝
X : Type u_2
inst✝¹ : MeasurableSpace X
inst✝ : MeasurableSpace.SeparatesPoints X
x y : X
x_eq_y : (fun x => diracProba x) x = (fun x => diracProba x) y
⊢ x = y
state_after: X✝ : Type u_1
inst✝² : MeasurableSpace X✝
X : Type u_2
inst✝¹ : MeasurableSpace X
inst✝ : MeasurableSpace.SeparatesPoints X
x y : X
x_eq_y : (fun x => diracProba x) x = (fun x => diracProba x) y
⊢ Measure.dirac x = Measure.dirac y

tactic: rwa [Subtype.ext_iff] at x_eq_y
state_before: X✝ : Type u_1
inst✝² : MeasurableSpace X✝
X : Type u_2
inst✝¹ : MeasurableSpace X
inst✝ : MeasurableSpace.SeparatesPoints X
x y : X
x_eq_y : (fun x => diracProba x) x = (fun x => diracProba x) y
⊢ Measure.dirac x = Measure.dirac y
state_after: no goals
Theorem: MvPolynomial.degrees_sum
File: Mathlib/Algebra/MvPolynomial/Degrees.lean

tactic: simp_rw [degrees_def]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s✝ : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_3
inst✝ : DecidableEq σ
s : Finset ι
f : ι → MvPolynomial σ R
⊢ (∑ i ∈ s, f i).degrees ≤ s.sup fun i => (f i).degrees
state_after: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s✝ : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_3
inst✝ : DecidableEq σ
s : Finset ι
f : ι → MvPolynomial σ R
⊢ ((∑ i ∈ s, f i).support.sup fun s => toMultiset s) ≤ s.sup fun i => (f i).support.sup fun s => toMultiset s

tactic: exact supDegree_sum_le
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s✝ : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_3
inst✝ : DecidableEq σ
s : Finset ι
f : ι → MvPolynomial σ R
⊢ ((∑ i ∈ s, f i).support.sup fun s => toMultiset s) ≤ s.sup fun i => (f i).support.sup fun s => toMultiset s
state_after: no goals
Theorem: Int.floor_fract
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [floor_eq_iff, Int.cast_zero, zero_add]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a : α
⊢ ⌊fract a⌋ = 0
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a : α
⊢ 0 ≤ fract a ∧ fract a < 1

tactic: exact ⟨fract_nonneg _, fract_lt_one _⟩
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a✝ a : α
⊢ 0 ≤ fract a ∧ fract a < 1
state_after: no goals
Theorem: List.head!_eq_head?
File: Mathlib/Data/List/Basic.lean

tactic: cases l <;> rfl
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : Inhabited α
l : List α
⊢ l.head! = l.head?.iget
state_after: no goals
Theorem: HahnSeries.SummableFamily.hsum_add
File: Mathlib/RingTheory/HahnSeries/Summable.lean

tactic: ext g
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
s t : SummableFamily Γ R α
⊢ (s + t).hsum = s.hsum + t.hsum
state_after: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
s t : SummableFamily Γ R α
g : Γ
⊢ (s + t).hsum.coeff g = (s.hsum + t.hsum).coeff g

tactic: simp only [hsum_coeff, add_coeff, add_apply]
state_before: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
s t : SummableFamily Γ R α
g : Γ
⊢ (s + t).hsum.coeff g = (s.hsum + t.hsum).coeff g
state_after: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
s t : SummableFamily Γ R α
g : Γ
⊢ ∑ᶠ (i : α), ((s i).coeff g + (t i).coeff g) = ∑ᶠ (i : α), (s i).coeff g + ∑ᶠ (i : α), (t i).coeff g

tactic: exact finsum_add_distrib (s.finite_co_support _) (t.finite_co_support _)
state_before: case coeff.h
Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddCommMonoid R
α : Type u_3
s t : SummableFamily Γ R α
g : Γ
⊢ ∑ᶠ (i : α), ((s i).coeff g + (t i).coeff g) = ∑ᶠ (i : α), (s i).coeff g + ∑ᶠ (i : α), (t i).coeff g
state_after: no goals
Theorem: Real.fderiv_fourierChar_neg_bilinear_right_apply
File: Mathlib/Analysis/Fourier/FourierTransformDeriv.lean

tactic: simp only [(hasFDerivAt_fourierChar_neg_bilinear_right L v w).fderiv, neg_mul,
  ContinuousLinearMap.coe_smul', ContinuousLinearMap.coe_comp', Pi.smul_apply,
  Function.comp_apply, ofRealCLM_apply, smul_eq_mul, neg_inj]
state_before: V : Type u_1
W : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : NormedAddCommGroup W
inst✝ : NormedSpace ℝ W
L : V →L[ℝ] W →L[ℝ] ℝ
v : V
w y : W
⊢ (fderiv ℝ (fun w => ↑(𝐞 (-(L v) w))) w) y = -2 * ↑π * I * ↑((L v) y) * ↑(𝐞 (-(L v) w))
state_after: V : Type u_1
W : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : NormedAddCommGroup W
inst✝ : NormedSpace ℝ W
L : V →L[ℝ] W →L[ℝ] ℝ
v : V
w y : W
⊢ 2 * ↑π * I * ↑(𝐞 (-(L v) w)) * ↑((L v) y) = 2 * ↑π * I * ↑((L v) y) * ↑(𝐞 (-(L v) w))

tactic: ring
state_before: V : Type u_1
W : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : NormedSpace ℝ V
inst✝¹ : NormedAddCommGroup W
inst✝ : NormedSpace ℝ W
L : V →L[ℝ] W →L[ℝ] ℝ
v : V
w y : W
⊢ 2 * ↑π * I * ↑(𝐞 (-(L v) w)) * ↑((L v) y) = 2 * ↑π * I * ↑((L v) y) * ↑(𝐞 (-(L v) w))
state_after: no goals