1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: contractible_iff_id_nullhomotopic
File: Mathlib/Topology/Homotopy/Contractible.lean

tactic: constructor
state_before: Y : Type u_1
inst✝ : TopologicalSpace Y
⊢ ContractibleSpace Y ↔ (ContinuousMap.id Y).Nullhomotopic
state_after: case mp
Y : Type u_1
inst✝ : TopologicalSpace Y
⊢ ContractibleSpace Y → (ContinuousMap.id Y).Nullhomotopic

case mpr
Y : Type u_1
inst✝ : TopologicalSpace Y
⊢ (ContinuousMap.id Y).Nullhomotopic → ContractibleSpace Y

tactic: rintro ⟨p, h⟩
state_before: case mpr
Y : Type u_1
inst✝ : TopologicalSpace Y
⊢ (ContinuousMap.id Y).Nullhomotopic → ContractibleSpace Y
state_after: case mpr.intro
Y : Type u_1
inst✝ : TopologicalSpace Y
p : Y
h : (ContinuousMap.id Y).Homotopic (const Y p)
⊢ ContractibleSpace Y

tactic: refine
  { hequiv_unit' :=
      ⟨{  toFun := ContinuousMap.const _ ()
          invFun := ContinuousMap.const _ p
          left_inv := ?_
          right_inv := ?_ }⟩ }
state_before: case mpr.intro
Y : Type u_1
inst✝ : TopologicalSpace Y
p : Y
h : (ContinuousMap.id Y).Homotopic (const Y p)
⊢ ContractibleSpace Y
state_after: case mpr.intro.refine_1
Y : Type u_1
inst✝ : TopologicalSpace Y
p : Y
h : (ContinuousMap.id Y).Homotopic (const Y p)
⊢ ((const Unit p).comp (const Y ())).Homotopic (ContinuousMap.id Y)

case mpr.intro.refine_2
Y : Type u_1
inst✝ : TopologicalSpace Y
p : Y
h : (ContinuousMap.id Y).Homotopic (const Y p)
⊢ ((const Y ()).comp (const Unit p)).Homotopic (ContinuousMap.id Unit)

tactic: intro
state_before: case mp
Y : Type u_1
inst✝ : TopologicalSpace Y
⊢ ContractibleSpace Y → (ContinuousMap.id Y).Nullhomotopic
state_after: case mp
Y : Type u_1
inst✝ : TopologicalSpace Y
a✝ : ContractibleSpace Y
⊢ (ContinuousMap.id Y).Nullhomotopic

tactic: apply id_nullhomotopic
state_before: case mp
Y : Type u_1
inst✝ : TopologicalSpace Y
a✝ : ContractibleSpace Y
⊢ (ContinuousMap.id Y).Nullhomotopic
state_after: no goals

tactic: exact h.symm
state_before: case mpr.intro.refine_1
Y : Type u_1
inst✝ : TopologicalSpace Y
p : Y
h : (ContinuousMap.id Y).Homotopic (const Y p)
⊢ ((const Unit p).comp (const Y ())).Homotopic (ContinuousMap.id Y)
state_after: no goals

tactic: convert Homotopic.refl (ContinuousMap.id Unit)
state_before: case mpr.intro.refine_2
Y : Type u_1
inst✝ : TopologicalSpace Y
p : Y
h : (ContinuousMap.id Y).Homotopic (const Y p)
⊢ ((const Y ()).comp (const Unit p)).Homotopic (ContinuousMap.id Unit)
state_after: no goals
Theorem: Finset.sdiff_union_erase_cancel
File: Mathlib/Data/Finset/Basic.lean

tactic: simp_rw [erase_eq, sdiff_union_sdiff_cancel hts (singleton_subset_iff.2 ha)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s t u v : Finset α
a b : α
hts : t ⊆ s
ha : a ∈ t
⊢ s \ t ∪ t.erase a = s.erase a
state_after: no goals
Theorem: IsAlgClosed.splits_codomain
File: Mathlib/FieldTheory/IsAlgClosed/Basic.lean

tactic: convert IsAlgClosed.splits (p.map f)
state_before: k✝ : Type u
inst✝³ : Field k✝
k : Type u_1
K : Type u_2
inst✝² : Field k
inst✝¹ : IsAlgClosed k
inst✝ : Field K
f : K →+* k
p : K[X]
⊢ Splits f p
state_after: case a
k✝ : Type u
inst✝³ : Field k✝
k : Type u_1
K : Type u_2
inst✝² : Field k
inst✝¹ : IsAlgClosed k
inst✝ : Field K
f : K →+* k
p : K[X]
⊢ Splits f p ↔ Splits (RingHom.id k) (map f p)

tactic: simp [splits_map_iff]
state_before: case a
k✝ : Type u
inst✝³ : Field k✝
k : Type u_1
K : Type u_2
inst✝² : Field k
inst✝¹ : IsAlgClosed k
inst✝ : Field K
f : K →+* k
p : K[X]
⊢ Splits f p ↔ Splits (RingHom.id k) (map f p)
state_after: no goals
Theorem: HasFPowerSeriesOnBall.neg
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: rw [pf.radius_neg]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
⊢ r ≤ (-pf).radius
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
⊢ r ≤ pf.radius

tactic: exact hf.r_le
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
f g : E → F
p pf pg : FormalMultilinearSeries 𝕜 E F
x : E
r r' : ℝ≥0∞
hf : HasFPowerSeriesOnBall f pf x r
⊢ r ≤ pf.radius
state_after: no goals
Theorem: SemistandardYoungTableau.row_weak_of_le
File: Mathlib/Combinatorics/Young/SemistandardTableau.lean

tactic: cases' eq_or_lt_of_le hj with h h
state_before: μ : YoungDiagram
T : SemistandardYoungTableau μ
i j1 j2 : ℕ
hj : j1 ≤ j2
cell : (i, j2) ∈ μ
⊢ T i j1 ≤ T i j2
state_after: case inl
μ : YoungDiagram
T : SemistandardYoungTableau μ
i j1 j2 : ℕ
hj : j1 ≤ j2
cell : (i, j2) ∈ μ
h : j1 = j2
⊢ T i j1 ≤ T i j2

case inr
μ : YoungDiagram
T : SemistandardYoungTableau μ
i j1 j2 : ℕ
hj : j1 ≤ j2
cell : (i, j2) ∈ μ
h : j1 < j2
⊢ T i j1 ≤ T i j2

tactic: rw [h]
state_before: case inl
μ : YoungDiagram
T : SemistandardYoungTableau μ
i j1 j2 : ℕ
hj : j1 ≤ j2
cell : (i, j2) ∈ μ
h : j1 = j2
⊢ T i j1 ≤ T i j2
state_after: no goals

tactic: exact T.row_weak h cell
state_before: case inr
μ : YoungDiagram
T : SemistandardYoungTableau μ
i j1 j2 : ℕ
hj : j1 ≤ j2
cell : (i, j2) ∈ μ
h : j1 < j2
⊢ T i j1 ≤ T i j2
state_after: no goals
Theorem: CategoryTheory.ShortComplex.HomologyData.right_homologyIso_eq_left_homologyIso_trans_iso
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

tactic: suffices h.iso = h.left.homologyIso.symm ≪≫ h.right.homologyIso by
  rw [this, Iso.self_symm_id_assoc]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
h : S.HomologyData
inst✝ : S.HasHomology
⊢ h.right.homologyIso = h.left.homologyIso ≪≫ h.iso
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
h : S.HomologyData
inst✝ : S.HasHomology
⊢ h.iso = h.left.homologyIso.symm ≪≫ h.right.homologyIso

tactic: ext
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
h : S.HomologyData
inst✝ : S.HasHomology
⊢ h.iso = h.left.homologyIso.symm ≪≫ h.right.homologyIso
state_after: case w
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
h : S.HomologyData
inst✝ : S.HasHomology
⊢ h.iso.hom = (h.left.homologyIso.symm ≪≫ h.right.homologyIso).hom

tactic: dsimp
state_before: case w
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
h : S.HomologyData
inst✝ : S.HasHomology
⊢ h.iso.hom = (h.left.homologyIso.symm ≪≫ h.right.homologyIso).hom
state_after: case w
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
h : S.HomologyData
inst✝ : S.HasHomology
⊢ h.iso.hom = h.left.homologyIso.inv ≫ h.right.homologyIso.hom

tactic: rw [← leftRightHomologyComparison'_fac, leftRightHomologyComparison'_eq]
state_before: case w
C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
h : S.HomologyData
inst✝ : S.HasHomology
⊢ h.iso.hom = h.left.homologyIso.inv ≫ h.right.homologyIso.hom
state_after: no goals

tactic: rw [this, Iso.self_symm_id_assoc]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
h : S.HomologyData
inst✝ : S.HasHomology
this : h.iso = h.left.homologyIso.symm ≪≫ h.right.homologyIso
⊢ h.right.homologyIso = h.left.homologyIso ≪≫ h.iso
state_after: no goals
Theorem: coe_finRotate_of_ne_last
File: Mathlib/Logic/Equiv/Fin.lean

tactic: rw [finRotate_succ_apply]
state_before: m n : ℕ
i : Fin n.succ
h : i ≠ Fin.last n
⊢ ↑((finRotate (n + 1)) i) = ↑i + 1
state_after: m n : ℕ
i : Fin n.succ
h : i ≠ Fin.last n
⊢ ↑(i + 1) = ↑i + 1

tactic: have : (i : ℕ) < n := Fin.val_lt_last h
state_before: m n : ℕ
i : Fin n.succ
h : i ≠ Fin.last n
⊢ ↑(i + 1) = ↑i + 1
state_after: m n : ℕ
i : Fin n.succ
h : i ≠ Fin.last n
this : ↑i < n
⊢ ↑(i + 1) = ↑i + 1

tactic: exact Fin.val_add_one_of_lt this
state_before: m n : ℕ
i : Fin n.succ
h : i ≠ Fin.last n
this : ↑i < n
⊢ ↑(i + 1) = ↑i + 1
state_after: no goals
Theorem: CategoryTheory.Limits.pullback_lift_map_isPullback
File: Mathlib/CategoryTheory/Limits/Shapes/Diagonal.lean

tactic: rw [lift_fst, lift_fst]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
X✝ Y✝ Z : C
inst✝¹ : HasPullbacks C
X Y S X' Y' S' : C
f : X ⟶ S
g : Y ⟶ S
f' : X' ⟶ S'
g' : Y' ⟶ S'
i₁ : X ⟶ X'
i₂ : Y ⟶ Y'
i₃ : S ⟶ S'
e₁ : f ≫ i₃ = i₁ ≫ f'
e₂ : g ≫ i₃ = i₂ ≫ g'
inst✝ : Mono i₃
⊢ lift (map f g f' g' i₁ i₂ i₃ e₁ e₂) fst ⋯ ≫ fst = lift (map f g f' g' i₁ i₂ i₃ e₁ e₂) snd ⋯ ≫ fst
state_after: no goals

tactic: simp
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
X✝ Y✝ Z : C
inst✝¹ : HasPullbacks C
X Y S X' Y' S' : C
f : X ⟶ S
g : Y ⟶ S
f' : X' ⟶ S'
g' : Y' ⟶ S'
i₁ : X ⟶ X'
i₂ : Y ⟶ Y'
i₃ : S ⟶ S'
e₁ : f ≫ i₃ = i₁ ≫ f'
e₂ : g ≫ i₃ = i₂ ≫ g'
inst✝ : Mono i₃
⊢ (pullbackFstFstIso f g f' g' i₁ i₂ i₃ e₁ e₂).symm.hom ≫ fst = lift (map f g f' g' i₁ i₂ i₃ e₁ e₂) fst ⋯
state_after: no goals

tactic: simp
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
X✝ Y✝ Z : C
inst✝¹ : HasPullbacks C
X Y S X' Y' S' : C
f : X ⟶ S
g : Y ⟶ S
f' : X' ⟶ S'
g' : Y' ⟶ S'
i₁ : X ⟶ X'
i₂ : Y ⟶ Y'
i₃ : S ⟶ S'
e₁ : f ≫ i₃ = i₁ ≫ f'
e₂ : g ≫ i₃ = i₂ ≫ g'
inst✝ : Mono i₃
⊢ (pullbackFstFstIso f g f' g' i₁ i₂ i₃ e₁ e₂).symm.hom ≫ snd = lift (map f g f' g' i₁ i₂ i₃ e₁ e₂) snd ⋯
state_after: no goals
Theorem: IsometryEquiv.map_hausdorffMeasure
File: Mathlib/MeasureTheory/Measure/Hausdorff.lean

tactic: rw [e.isometry.map_hausdorffMeasure (Or.inr e.surjective), e.surjective.range_eq, restrict_univ]
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁵ : EMetricSpace X
inst✝⁴ : EMetricSpace Y
inst✝³ : MeasurableSpace X
inst✝² : BorelSpace X
inst✝¹ : MeasurableSpace Y
inst✝ : BorelSpace Y
e : X ≃ᵢ Y
d : ℝ
⊢ Measure.map ⇑e μH[d] = μH[d]
state_after: no goals
Theorem: Nat.cast_mul
File: Mathlib/Data/Nat/Cast/Basic.lean

tactic: induction n <;> simp [mul_succ, mul_add, *]
state_before: α : Type u_1
β : Type u_2
inst✝ : NonAssocSemiring α
m n : ℕ
⊢ ↑(m * n) = ↑m * ↑n
state_after: no goals
Theorem: nhds_inter_eq_singleton_of_mem_discrete
File: Mathlib/Topology/Separation.lean

tactic: simpa using (𝓝 x).basis_sets.exists_inter_eq_singleton_of_mem_discrete hx
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
s : Set X
inst✝ : DiscreteTopology ↑s
x : X
hx : x ∈ s
⊢ ∃ U ∈ 𝓝 x, U ∩ s = {x}
state_after: no goals
Theorem: AlgebraicGeometry.IsOpenImmersion.app_eq_invApp_app_of_comp_eq
File: Mathlib/AlgebraicGeometry/OpenImmersion.lean

tactic: subst H
state_before: C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Z
g✝ : Y✝ ⟶ Z
H✝ : IsOpenImmersion f✝
X Y U : Scheme
f : Y ⟶ U
g : U ⟶ X
fg : Y ⟶ X
H : fg = f ≫ g
h : IsOpenImmersion g
V : Opens ↑↑U.toPresheafedSpace
⊢ Scheme.Hom.app f V = Scheme.Hom.invApp g V ≫ Scheme.Hom.app fg (g ''ᵁ V) ≫ Y.presheaf.map (eqToHom ⋯).op
state_after: C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Z
g✝ : Y✝ ⟶ Z
H : IsOpenImmersion f✝
X Y U : Scheme
f : Y ⟶ U
g : U ⟶ X
h : IsOpenImmersion g
V : Opens ↑↑U.toPresheafedSpace
⊢ Scheme.Hom.app f V = Scheme.Hom.invApp g V ≫ Scheme.Hom.app (f ≫ g) (g ''ᵁ V) ≫ Y.presheaf.map (eqToHom ⋯).op

tactic: rw [Scheme.comp_app, Category.assoc, Scheme.Hom.invApp_app_assoc, f.naturality_assoc,
  ← Functor.map_comp, ← op_comp, Quiver.Hom.unop_op, eqToHom_map, eqToHom_trans,
  eqToHom_op, eqToHom_refl, CategoryTheory.Functor.map_id, Category.comp_id]
state_before: C : Type u
inst✝ : Category.{v, u} C
X✝ Y✝ Z : Scheme
f✝ : X✝ ⟶ Z
g✝ : Y✝ ⟶ Z
H : IsOpenImmersion f✝
X Y U : Scheme
f : Y ⟶ U
g : U ⟶ X
h : IsOpenImmersion g
V : Opens ↑↑U.toPresheafedSpace
⊢ Scheme.Hom.app f V = Scheme.Hom.invApp g V ≫ Scheme.Hom.app (f ≫ g) (g ''ᵁ V) ≫ Y.presheaf.map (eqToHom ⋯).op
state_after: no goals
Theorem: inv_le_inv
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [← one_div, div_le_iff ha, ← div_eq_inv_mul, le_div_iff hb, one_mul]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
hb : 0 < b
⊢ a⁻¹ ≤ b⁻¹ ↔ b ≤ a
state_after: no goals
Theorem: trans_trichotomous_left
File: Mathlib/Order/RelClasses.lean

tactic: intro h₁ h₂
state_before: α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
⊢ ¬r b a → r b c → r a c
state_after: α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
h₁ : ¬r b a
h₂ : r b c
⊢ r a c

tactic: rcases trichotomous_of r a b with (h₃ | rfl | h₃)
state_before: α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
h₁ : ¬r b a
h₂ : r b c
⊢ r a c
state_after: case inl
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
h₁ : ¬r b a
h₂ : r b c
h₃ : r a b
⊢ r a c

case inr.inl
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a c : α
h₁ : ¬r a a
h₂ : r a c
⊢ r a c

case inr.inr
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
h₁ : ¬r b a
h₂ : r b c
h₃ : r b a
⊢ r a c

tactic: exacts [_root_.trans h₃ h₂, h₂, absurd h₃ h₁]
state_before: case inl
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
h₁ : ¬r b a
h₂ : r b c
h₃ : r a b
⊢ r a c

case inr.inl
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a c : α
h₁ : ¬r a a
h₂ : r a c
⊢ r a c

case inr.inr
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
h₁ : ¬r b a
h₂ : r b c
h₃ : r b a
⊢ r a c
state_after: no goals
Theorem: Nat.cast_lt_one
File: Mathlib/Data/Nat/Cast/Order.lean

tactic: rw [← cast_one, cast_lt, Nat.lt_succ_iff, ← bot_eq_zero, le_bot_iff]
state_before: α : Type u_1
β : Type u_2
inst✝⁴ : AddMonoidWithOne α
inst✝³ : PartialOrder α
inst✝² : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝¹ : ZeroLEOneClass α
inst✝ : CharZero α
m n : ℕ
⊢ ↑n < 1 ↔ n = 0
state_after: no goals
Theorem: PointedCone.toConvexCone_injective
File: Mathlib/Analysis/Convex/Cone/Pointed.lean

tactic: simp [toConvexCone]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : Module 𝕜 E
x✝¹ x✝ : PointedCone 𝕜 E
⊢ ↑x✝¹ = ↑x✝ → x✝¹ = x✝
state_after: no goals
Theorem: MeasurableEmbedding.integrableOn_iff_comap
File: Mathlib/MeasureTheory/Integral/IntegrableOn.lean

tactic: simp_rw [← he.integrableOn_map_iff, he.map_comap, IntegrableOn,
  Measure.restrict_restrict_of_subset hs]
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
inst✝² : MeasurableSpace α
inst✝¹ : NormedAddCommGroup E
f✝ g : α → E
s✝ t : Set α
μ✝ ν : Measure α
inst✝ : MeasurableSpace β
e : α → β
he : MeasurableEmbedding e
f : β → E
μ : Measure β
s : Set β
hs : s ⊆ range e
⊢ IntegrableOn f s μ ↔ IntegrableOn (f ∘ e) (e ⁻¹' s) (Measure.comap e μ)
state_after: no goals
Theorem: QuadraticForm.polarBilin_comp
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: simp [polar]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
inst✝⁸ : CommRing R
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
B : BilinForm R M
inst✝⁵ : CommRing S
inst✝⁴ : Algebra S R
inst✝³ : Module S M
inst✝² : IsScalarTower S R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
Q : QuadraticForm R N
f : M →ₗ[R] N
x y : M
⊢ ((Q.comp f).polarBilin x) y = ((compl₁₂ Q.polarBilin f f) x) y
state_after: no goals
Theorem: Real.exists_isGLB
File: Mathlib/Data/Real/Archimedean.lean

tactic: have hne' : (-S).Nonempty := Set.nonempty_neg.mpr hne
state_before: S : Set ℝ
hne : S.Nonempty
hbdd : BddBelow S
⊢ ∃ x, IsGLB S x
state_after: S : Set ℝ
hne : S.Nonempty
hbdd : BddBelow S
hne' : (-S).Nonempty
⊢ ∃ x, IsGLB S x

tactic: have hbdd' : BddAbove (-S) := bddAbove_neg.mpr hbdd
state_before: S : Set ℝ
hne : S.Nonempty
hbdd : BddBelow S
hne' : (-S).Nonempty
⊢ ∃ x, IsGLB S x
state_after: S : Set ℝ
hne : S.Nonempty
hbdd : BddBelow S
hne' : (-S).Nonempty
hbdd' : BddAbove (-S)
⊢ ∃ x, IsGLB S x

tactic: use -Classical.choose (Real.exists_isLUB hne' hbdd')
state_before: S : Set ℝ
hne : S.Nonempty
hbdd : BddBelow S
hne' : (-S).Nonempty
hbdd' : BddAbove (-S)
⊢ ∃ x, IsGLB S x
state_after: case h
S : Set ℝ
hne : S.Nonempty
hbdd : BddBelow S
hne' : (-S).Nonempty
hbdd' : BddAbove (-S)
⊢ IsGLB S (-Classical.choose ⋯)

tactic: rw [← isLUB_neg]
state_before: case h
S : Set ℝ
hne : S.Nonempty
hbdd : BddBelow S
hne' : (-S).Nonempty
hbdd' : BddAbove (-S)
⊢ IsGLB S (-Classical.choose ⋯)
state_after: case h
S : Set ℝ
hne : S.Nonempty
hbdd : BddBelow S
hne' : (-S).Nonempty
hbdd' : BddAbove (-S)
⊢ IsLUB (-S) (Classical.choose ⋯)

tactic: exact Classical.choose_spec (Real.exists_isLUB hne' hbdd')
state_before: case h
S : Set ℝ
hne : S.Nonempty
hbdd : BddBelow S
hne' : (-S).Nonempty
hbdd' : BddAbove (-S)
⊢ IsLUB (-S) (Classical.choose ⋯)
state_after: no goals
Theorem: List.rdropWhile_concat_neg
File: Mathlib/Data/List/DropRight.lean

tactic: rw [rdropWhile_concat, if_neg h]
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
x : α
h : ¬p x = true
⊢ rdropWhile p (l ++ [x]) = l ++ [x]
state_after: no goals
Theorem: PMF.support_uniformOfFinset
File: Mathlib/Probability/Distributions/Uniform.lean

tactic: let ⟨a, ha⟩ := hs
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
hs : s.Nonempty
a : α
⊢ ∀ (x : α), x ∈ (uniformOfFinset s hs).support ↔ x ∈ ↑s
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
hs : s.Nonempty
a✝ a : α
ha : a ∈ s
⊢ ∀ (x : α), x ∈ (uniformOfFinset s ⋯).support ↔ x ∈ ↑s

tactic: simp [mem_support_iff, Finset.ne_empty_of_mem ha]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s : Finset α
hs : s.Nonempty
a✝ a : α
ha : a ∈ s
⊢ ∀ (x : α), x ∈ (uniformOfFinset s ⋯).support ↔ x ∈ ↑s
state_after: no goals
Theorem: Finset.eq_singleton_iff_unique_mem
File: Mathlib/Data/Finset/Basic.lean

tactic: constructor <;> intro t
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a✝ b : α
s : Finset α
a : α
⊢ s = {a} ↔ a ∈ s ∧ ∀ x ∈ s, x = a
state_after: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a✝ b : α
s : Finset α
a : α
t : s = {a}
⊢ a ∈ s ∧ ∀ x ∈ s, x = a

case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a✝ b : α
s : Finset α
a : α
t : a ∈ s ∧ ∀ x ∈ s, x = a
⊢ s = {a}

tactic: rw [t]
state_before: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a✝ b : α
s : Finset α
a : α
t : s = {a}
⊢ a ∈ s ∧ ∀ x ∈ s, x = a
state_after: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a✝ b : α
s : Finset α
a : α
t : s = {a}
⊢ a ∈ {a} ∧ ∀ x ∈ {a}, x = a

tactic: exact ⟨Finset.mem_singleton_self _, fun _ => Finset.mem_singleton.1⟩
state_before: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a✝ b : α
s : Finset α
a : α
t : s = {a}
⊢ a ∈ {a} ∧ ∀ x ∈ {a}, x = a
state_after: no goals

tactic: ext
state_before: case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a✝ b : α
s : Finset α
a : α
t : a ∈ s ∧ ∀ x ∈ s, x = a
⊢ s = {a}
state_after: case mpr.a
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a✝¹ b : α
s : Finset α
a : α
t : a ∈ s ∧ ∀ x ∈ s, x = a
a✝ : α
⊢ a✝ ∈ s ↔ a✝ ∈ {a}

tactic: rw [Finset.mem_singleton]
state_before: case mpr.a
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a✝¹ b : α
s : Finset α
a : α
t : a ∈ s ∧ ∀ x ∈ s, x = a
a✝ : α
⊢ a✝ ∈ s ↔ a✝ ∈ {a}
state_after: case mpr.a
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a✝¹ b : α
s : Finset α
a : α
t : a ∈ s ∧ ∀ x ∈ s, x = a
a✝ : α
⊢ a✝ ∈ s ↔ a✝ = a

tactic: exact ⟨t.right _, fun r => r.symm ▸ t.left⟩
state_before: case mpr.a
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ : Finset α
a✝¹ b : α
s : Finset α
a : α
t : a ∈ s ∧ ∀ x ∈ s, x = a
a✝ : α
⊢ a✝ ∈ s ↔ a✝ = a
state_after: no goals
Theorem: CategoryTheory.ShortComplex.HomologyData.exact_iff'
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: haveI := HasHomology.mk' h
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.4458, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.HomologyData
⊢ S.Exact ↔ IsZero h.right.H
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.4458, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.HomologyData
this : S.HasHomology
⊢ S.Exact ↔ IsZero h.right.H

tactic: exact RightHomologyData.exact_iff h.right
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.4458, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
h : S.HomologyData
this : S.HasHomology
⊢ S.Exact ↔ IsZero h.right.H
state_after: no goals
Theorem: Polynomial.iterate_derivative_X_sub_pow_self
File: Mathlib/Algebra/Polynomial/Derivative.lean

tactic: rw [iterate_derivative_X_sub_pow, n.sub_self, pow_zero, nsmul_one, n.descFactorial_self]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝ : CommRing R
n : ℕ
c : R
⊢ (⇑derivative)^[n] ((X - C c) ^ n) = ↑n.factorial
state_after: no goals
Theorem: NumberField.mixedEmbedding.normAtPlace_apply_isComplex
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/Basic.lean

tactic: rw [normAtPlace, MonoidWithZeroHom.coe_mk, ZeroHom.coe_mk,
  dif_neg (not_isReal_iff_isComplex.mpr hw)]
state_before: K : Type u_1
inst✝ : Field K
w : InfinitePlace K
hw : w.IsComplex
x : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
⊢ (normAtPlace w) x = ‖x.2 ⟨w, hw⟩‖
state_after: no goals
Theorem: Finsupp.inner_sum
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: convert _root_.inner_sum (𝕜 := 𝕜) l.support (fun a => l a • v a) x
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
l : ι →₀ 𝕜
v : ι → E
x : E
⊢ ⟪x, l.sum fun i a => a • v i⟫_𝕜 = l.sum fun i a => a • ⟪x, v i⟫_𝕜
state_after: case h.e'_3
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
l : ι →₀ 𝕜
v : ι → E
x : E
⊢ (l.sum fun i a => a • ⟪x, v i⟫_𝕜) = ∑ i ∈ l.support, ⟪x, l i • v i⟫_𝕜

tactic: simp only [inner_smul_right, Finsupp.sum, smul_eq_mul]
state_before: case h.e'_3
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
l : ι →₀ 𝕜
v : ι → E
x : E
⊢ (l.sum fun i a => a • ⟪x, v i⟫_𝕜) = ∑ i ∈ l.support, ⟪x, l i • v i⟫_𝕜
state_after: no goals
Theorem: Int.strictAntiOn_natAbs
File: Mathlib/Data/Int/Lemmas.lean

tactic: simpa [Int.natAbs_neg] using
  natAbs_lt_natAbs_of_nonneg_of_lt (Right.nonneg_neg_iff.mpr hb) (neg_lt_neg_iff.mpr hab)
state_before: a✝ b✝ : ℤ
n : ℕ
a : ℤ
x✝ : a ∈ Iic 0
b : ℤ
hb : b ∈ Iic 0
hab : a < b
⊢ b.natAbs < a.natAbs
state_after: no goals