1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: schnirelmannDensity_diff_singleton_zero
File: Mathlib/Combinatorics/Schnirelmann.lean

tactic: aesop
state_before: A : Set ℕ
inst✝¹ : DecidablePred fun x => x ∈ A
inst✝ : DecidablePred fun x => x ∈ A \ {0}
⊢ ∀ n > 0, n ∈ A \ {0} ↔ n ∈ A
state_after: no goals
Theorem: Set.toFinset_symmDiff
File: Mathlib/Data/Fintype/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝³ : DecidableEq α
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s ∆ t)
⊢ (s ∆ t).toFinset = s.toFinset ∆ t.toFinset
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝³ : DecidableEq α
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s ∆ t)
a✝ : α
⊢ a✝ ∈ (s ∆ t).toFinset ↔ a✝ ∈ s.toFinset ∆ t.toFinset

tactic: simp [mem_symmDiff, Finset.mem_symmDiff]
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝³ : DecidableEq α
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s ∆ t)
a✝ : α
⊢ a✝ ∈ (s ∆ t).toFinset ↔ a✝ ∈ s.toFinset ∆ t.toFinset
state_after: no goals
Theorem: IsClosedMap.comp
File: Mathlib/Topology/Maps.lean

tactic: intro s hs
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 : IsClosedMap g
hf : IsClosedMap f
⊢ IsClosedMap (g ∘ f)
state_after: 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 : IsClosedMap g
hf : IsClosedMap f
s : Set X
hs : IsClosed s
⊢ IsClosed (g ∘ f '' s)

tactic: rw [image_comp]
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 : IsClosedMap g
hf : IsClosedMap f
s : Set X
hs : IsClosed s
⊢ IsClosed (g ∘ f '' s)
state_after: 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 : IsClosedMap g
hf : IsClosedMap f
s : Set X
hs : IsClosed s
⊢ IsClosed (g '' (f '' s))

tactic: exact hg _ (hf _ hs)
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 : IsClosedMap g
hf : IsClosedMap f
s : Set X
hs : IsClosed s
⊢ IsClosed (g '' (f '' s))
state_after: no goals
Theorem: CategoryTheory.GrothendieckTopology.WEqualsLocallyBijective.transport
File: Mathlib/CategoryTheory/Sites/Equivalence.lean

tactic: rw [← W_whiskerLeft_iff J K G f, ← Presheaf.isLocallyInjective_whisker_iff K J G f hG,
  ← Presheaf.isLocallySurjective_whisker_iff K J G f hG, W_iff_isLocallyBijective]
state_before: C : Type u₁
inst✝¹³ : Category.{v₁, u₁} C
J : GrothendieckTopology C
D : Type u₂
inst✝¹² : Category.{v₂, u₂} D
K : GrothendieckTopology D
e : C ≌ D
G : D ⥤ C
A : Type u₃
inst✝¹¹ : Category.{v₃, u₃} A
inst✝¹⁰ : EssentiallySmall.{w, v₁, u₁} C
B : Type u_1
inst✝⁹ : Category.{?u.125564, u_1} B
F : A ⥤ B
inst✝⁸ : HasSheafify ⋯.inducedTopology A
inst✝⁷ : ⋯.inducedTopology.HasSheafCompose F
inst✝⁶ : G.IsCoverDense J
inst✝⁵ : G.IsContinuous K J
inst✝⁴ : G.Full
inst✝³ : (G.sheafPushforwardContinuous A K J).EssSurj
inst✝² : G.IsCocontinuous K J
hG : CoverPreserving K J G
inst✝¹ : ConcreteCategory A
inst✝ : K.WEqualsLocallyBijective A
X✝ Y✝ : Cᵒᵖ ⥤ A
f : X✝ ⟶ Y✝
⊢ J.W f ↔ Presheaf.IsLocallyInjective J f ∧ Presheaf.IsLocallySurjective J f
state_after: no goals
Theorem: update_le_update_iff
File: Mathlib/Order/Basic.lean

tactic: simp (config := { contextual := true }) [update_le_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Preorder (π i)
x y : (i : ι) → π i
i : ι
a b : π i
⊢ update x i a ≤ update y i b ↔ a ≤ b ∧ ∀ (j : ι), j ≠ i → x j ≤ y j
state_after: no goals
Theorem: MulChar.inv_mul
File: Mathlib/NumberTheory/MulChar/Basic.lean

tactic: ext x
state_before: R : Type u_1
inst✝¹ : CommMonoid R
R' : Type u_2
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
⊢ χ⁻¹ * χ = 1
state_after: case h
R : Type u_1
inst✝¹ : CommMonoid R
R' : Type u_2
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
x : Rˣ
⊢ (χ⁻¹ * χ) ↑x = 1 ↑x

tactic: rw [coeToFun_mul, Pi.mul_apply, inv_apply_eq_inv]
state_before: case h
R : Type u_1
inst✝¹ : CommMonoid R
R' : Type u_2
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
x : Rˣ
⊢ (χ⁻¹ * χ) ↑x = 1 ↑x
state_after: case h
R : Type u_1
inst✝¹ : CommMonoid R
R' : Type u_2
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
x : Rˣ
⊢ Ring.inverse (χ ↑x) * χ ↑x = 1 ↑x

tactic: simp only [Ring.inverse_mul_cancel _ (IsUnit.map χ x.isUnit)]
state_before: case h
R : Type u_1
inst✝¹ : CommMonoid R
R' : Type u_2
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
x : Rˣ
⊢ Ring.inverse (χ ↑x) * χ ↑x = 1 ↑x
state_after: case h
R : Type u_1
inst✝¹ : CommMonoid R
R' : Type u_2
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
x : Rˣ
⊢ 1 = 1 ↑x

tactic: rw [one_apply_coe]
state_before: case h
R : Type u_1
inst✝¹ : CommMonoid R
R' : Type u_2
inst✝ : CommMonoidWithZero R'
χ : MulChar R R'
x : Rˣ
⊢ 1 = 1 ↑x
state_after: no goals
Theorem: infinite_sum
File: Mathlib/Data/Fintype/Sum.lean

tactic: refine ⟨fun H => ?_, fun H => H.elim (@Sum.infinite_of_left α β) (@Sum.infinite_of_right α β)⟩
state_before: α : Type u_1
β : Type u_2
⊢ Infinite (α ⊕ β) ↔ Infinite α ∨ Infinite β
state_after: α : Type u_1
β : Type u_2
H : Infinite (α ⊕ β)
⊢ Infinite α ∨ Infinite β

tactic: contrapose! H
state_before: α : Type u_1
β : Type u_2
H : Infinite (α ⊕ β)
⊢ Infinite α ∨ Infinite β
state_after: α : Type u_1
β : Type u_2
H : ¬Infinite α ∧ ¬Infinite β
⊢ ¬Infinite (α ⊕ β)

tactic: haveI := fintypeOfNotInfinite H.1
state_before: α : Type u_1
β : Type u_2
H : ¬Infinite α ∧ ¬Infinite β
⊢ ¬Infinite (α ⊕ β)
state_after: α : Type u_1
β : Type u_2
H : ¬Infinite α ∧ ¬Infinite β
this : Fintype α
⊢ ¬Infinite (α ⊕ β)

tactic: haveI := fintypeOfNotInfinite H.2
state_before: α : Type u_1
β : Type u_2
H : ¬Infinite α ∧ ¬Infinite β
this : Fintype α
⊢ ¬Infinite (α ⊕ β)
state_after: α : Type u_1
β : Type u_2
H : ¬Infinite α ∧ ¬Infinite β
this✝ : Fintype α
this : Fintype β
⊢ ¬Infinite (α ⊕ β)

tactic: exact Infinite.false
state_before: α : Type u_1
β : Type u_2
H : ¬Infinite α ∧ ¬Infinite β
this✝ : Fintype α
this : Fintype β
⊢ ¬Infinite (α ⊕ β)
state_after: no goals
Theorem: Complex.angle_one_right
File: Mathlib/Analysis/Complex/Angle.lean

tactic: simp [angle_eq_abs_arg, hx]
state_before: a x y : ℂ
hx : x ≠ 0
⊢ angle x 1 = |x.arg|
state_after: no goals
Theorem: Turing.TM1to1.trTape_mk'
File: Mathlib/Computability/TuringMachine.lean

tactic: simp only [trTape, Tape.mk'_left, Tape.mk'_right₀]
state_before: Γ : Type u_1
inst✝² : Inhabited Γ
Λ : Type u_2
inst✝¹ : Inhabited Λ
σ : Type u_3
inst✝ : Inhabited σ
n : ℕ
enc : Γ → Vector Bool n
dec : Vector Bool n → Γ
enc0 : enc default = Vector.replicate n false
L R : ListBlank Γ
⊢ trTape enc0 (Tape.mk' L R) = trTape' enc0 L R
state_after: no goals
Theorem: one_div_neg_eq_neg_one_div
File: Mathlib/Algebra/Field/Basic.lean

tactic: rw [neg_eq_neg_one_mul]
state_before: α : Type u_1
β : Type u_2
K : Type u_3
inst✝¹ : DivisionMonoid K
inst✝ : HasDistribNeg K
a✝ b a : K
⊢ 1 / -a = 1 / (-1 * a)
state_after: no goals

tactic: rw [one_div_mul_one_div_rev]
state_before: α : Type u_1
β : Type u_2
K : Type u_3
inst✝¹ : DivisionMonoid K
inst✝ : HasDistribNeg K
a✝ b a : K
⊢ 1 / (-1 * a) = 1 / a * (1 / -1)
state_after: no goals

tactic: rw [one_div_neg_one_eq_neg_one]
state_before: α : Type u_1
β : Type u_2
K : Type u_3
inst✝¹ : DivisionMonoid K
inst✝ : HasDistribNeg K
a✝ b a : K
⊢ 1 / a * (1 / -1) = 1 / a * -1
state_after: no goals

tactic: rw [mul_neg, mul_one]
state_before: α : Type u_1
β : Type u_2
K : Type u_3
inst✝¹ : DivisionMonoid K
inst✝ : HasDistribNeg K
a✝ b a : K
⊢ 1 / a * -1 = -(1 / a)
state_after: no goals
Theorem: CategoryTheory.Limits.bicone_ι_π_ne
File: Mathlib/CategoryTheory/Limits/Shapes/Biproducts.lean

tactic: simpa [h] using B.ι_π j j'
state_before: J : Type w
C : Type uC
inst✝³ : Category.{uC', uC} C
inst✝² : HasZeroMorphisms C
D : Type uD
inst✝¹ : Category.{uD', uD} D
inst✝ : HasZeroMorphisms D
F : J → C
B : Bicone F
j j' : J
h : j ≠ j'
⊢ B.ι j ≫ B.π j' = 0
state_after: no goals
Theorem: OrderIso.image_Ico
File: Mathlib/Order/Interval/Set/OrderIso.lean

tactic: rw [e.image_eq_preimage, e.symm.preimage_Ico, e.symm_symm]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
e : α ≃o β
a b : α
⊢ ⇑e '' Ico a b = Ico (e a) (e b)
state_after: no goals
Theorem: CategoryTheory.Limits.InitialMonoClass.of_isInitial
File: Mathlib/CategoryTheory/Limits/Shapes/Terminal.lean

tactic: rw [hI'.hom_ext (hI'.to X) ((hI'.uniqueUpToIso hI).hom ≫ hI.to X)]
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
I : C
hI : IsInitial I
h : ∀ (X : C), Mono (hI.to X)
I' X : C
hI' : IsInitial I'
⊢ Mono (hI'.to X)
state_after: C : Type u₁
inst✝ : Category.{v₁, u₁} C
I : C
hI : IsInitial I
h : ∀ (X : C), Mono (hI.to X)
I' X : C
hI' : IsInitial I'
⊢ Mono ((hI'.uniqueUpToIso hI).hom ≫ hI.to X)

tactic: apply mono_comp
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
I : C
hI : IsInitial I
h : ∀ (X : C), Mono (hI.to X)
I' X : C
hI' : IsInitial I'
⊢ Mono ((hI'.uniqueUpToIso hI).hom ≫ hI.to X)
state_after: no goals
Theorem: ProbabilityTheory.kernel.integral_densityProcess
File: Mathlib/Probability/Kernel/Disintegration/Density.lean

tactic: rw [← integral_univ, setIntegral_densityProcess hκν _ _ hs MeasurableSet.univ]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : CountablyGenerated γ
κ : ↥(kernel α (γ × β))
ν : ↥(kernel α γ)
hκν : fst κ ≤ ν
inst✝ : IsFiniteKernel ν
n : ℕ
a : α
s : Set β
hs : MeasurableSet s
⊢ ∫ (x : γ), densityProcess κ ν n a x s ∂ν a = ((κ a) (univ ×ˢ s)).toReal
state_after: no goals
Theorem: WithTop.sub_top
File: Mathlib/Algebra/Order/Sub/WithTop.lean

tactic: cases a <;> rfl
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Sub α
inst✝ : Bot α
a : WithTop α
⊢ a - ⊤ = ↑⊥
state_after: no goals
Theorem: ONote.fastGrowing_two
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: rw [@fastGrowing_succ 2 1 rfl]
state_before: ⊢ fastGrowing 2 = fun n => 2 ^ n * n
state_after: ⊢ (fun i => (fastGrowing 1)^[i] i) = fun n => 2 ^ n * n

tactic: funext i
state_before: ⊢ (fun i => (fastGrowing 1)^[i] i) = fun n => 2 ^ n * n
state_after: case h
i : ℕ
⊢ (fastGrowing 1)^[i] i = 2 ^ i * i

tactic: rw [fastGrowing_one]
state_before: case h
i : ℕ
⊢ (fastGrowing 1)^[i] i = 2 ^ i * i
state_after: case h
i : ℕ
⊢ (fun n => 2 * n)^[i] i = 2 ^ i * i

tactic: suffices ∀ a b, (fun n : ℕ => 2 * n)^[a] b = (2 ^ a) * b from this _ _
state_before: case h
i : ℕ
⊢ (fun n => 2 * n)^[i] i = 2 ^ i * i
state_after: case h
i : ℕ
⊢ ∀ (a b : ℕ), (fun n => 2 * n)^[a] b = 2 ^ a * b

tactic: intro a b
state_before: case h
i : ℕ
⊢ ∀ (a b : ℕ), (fun n => 2 * n)^[a] b = 2 ^ a * b
state_after: case h
i a b : ℕ
⊢ (fun n => 2 * n)^[a] b = 2 ^ a * b

tactic: induction a <;>
simp [*, Function.iterate_succ, pow_succ, mul_assoc, -Function.iterate_succ]
state_before: case h
i a b : ℕ
⊢ (fun n => 2 * n)^[a] b = 2 ^ a * b
state_after: no goals
Theorem: Submodule.adjoint_orthogonalProjection
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

tactic: rw [← U.adjoint_subtypeL, adjoint_adjoint]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝¹⁰ : RCLike 𝕜
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : NormedAddCommGroup F
inst✝⁷ : NormedAddCommGroup G
inst✝⁶ : InnerProductSpace 𝕜 E
inst✝⁵ : InnerProductSpace 𝕜 F
inst✝⁴ : InnerProductSpace 𝕜 G
inst✝³ : CompleteSpace E
inst✝² : CompleteSpace G
inst✝¹ : CompleteSpace F
U : Submodule 𝕜 E
inst✝ : CompleteSpace ↥U
⊢ adjoint (orthogonalProjection U) = U.subtypeL
state_after: no goals
Theorem: IsLocallyConstant.exists_eq_const
File: Mathlib/Topology/LocallyConstant/Basic.lean

tactic: cases' isEmpty_or_nonempty X with h h
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : PreconnectedSpace X
inst✝ : Nonempty Y
f : X → Y
hf : IsLocallyConstant f
⊢ ∃ y, f = Function.const X y
state_after: case inl
X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : PreconnectedSpace X
inst✝ : Nonempty Y
f : X → Y
hf : IsLocallyConstant f
h : IsEmpty X
⊢ ∃ y, f = Function.const X y

case inr
X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : PreconnectedSpace X
inst✝ : Nonempty Y
f : X → Y
hf : IsLocallyConstant f
h : Nonempty X
⊢ ∃ y, f = Function.const X y

tactic: exact ⟨Classical.arbitrary Y, funext <| h.elim⟩
state_before: case inl
X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : PreconnectedSpace X
inst✝ : Nonempty Y
f : X → Y
hf : IsLocallyConstant f
h : IsEmpty X
⊢ ∃ y, f = Function.const X y
state_after: no goals

tactic: exact ⟨f (Classical.arbitrary X), hf.eq_const _⟩
state_before: case inr
X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : PreconnectedSpace X
inst✝ : Nonempty Y
f : X → Y
hf : IsLocallyConstant f
h : Nonempty X
⊢ ∃ y, f = Function.const X y
state_after: no goals
Theorem: Even.pow_abs
File: Mathlib/Algebra/Order/Ring/Abs.lean

tactic: rw [← abs_pow, abs_eq_self]
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
n : ℕ
a✝ b c : α
hn : Even n
a : α
⊢ |a| ^ n = a ^ n
state_after: α : Type u_1
inst✝ : LinearOrderedRing α
n : ℕ
a✝ b c : α
hn : Even n
a : α
⊢ 0 ≤ a ^ n

tactic: exact hn.pow_nonneg _
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
n : ℕ
a✝ b c : α
hn : Even n
a : α
⊢ 0 ≤ a ^ n
state_after: no goals
Theorem: goldConj_neg
File: Mathlib/Data/Real/GoldenRatio.lean

tactic: linarith [one_sub_goldConj, one_lt_gold]
state_before: ⊢ ψ < 0
state_after: no goals
Theorem: MeasureTheory.NullMeasurableSet.smul
File: Mathlib/MeasureTheory/Group/Action.lean

tactic: simpa only [← preimage_smul_inv] using
  hs.preimage (measurePreserving_smul _ _).quasiMeasurePreserving
state_before: G : Type u
M : Type v
α : Type w
s✝ : Set α
m : MeasurableSpace α
inst✝⁴ : Group G
inst✝³ : MulAction G α
inst✝² : MeasurableSpace G
inst✝¹ : MeasurableSMul G α
c✝ : G
μ : Measure α
inst✝ : SMulInvariantMeasure G α μ
s : Set α
hs : NullMeasurableSet s μ
c : G
⊢ NullMeasurableSet (c • s) μ
state_after: no goals
Theorem: GeneralizedContinuedFraction.convergents'_stable_of_terminated
File: Mathlib/Algebra/ContinuedFractions/TerminatedStable.lean

tactic: simp only [convergents', convergents'Aux_stable_of_terminated n_le_m terminated_at_n]
state_before: K : Type u_1
g : GeneralizedContinuedFraction K
n m : ℕ
inst✝ : DivisionRing K
n_le_m : n ≤ m
terminated_at_n : g.TerminatedAt n
⊢ g.convergents' m = g.convergents' n
state_after: no goals
Theorem: HomotopyCategory.isZero_quotient_obj_iff
File: Mathlib/Algebra/Homology/HomotopyCategory.lean

tactic: rw [IsZero.iff_id_eq_zero]
state_before: R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C : HomologicalComplex V c
⊢ IsZero ((quotient V c).obj C) ↔ Nonempty (Homotopy (𝟙 C) 0)
state_after: R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C : HomologicalComplex V c
⊢ 𝟙 ((quotient V c).obj C) = 0 ↔ Nonempty (Homotopy (𝟙 C) 0)

tactic: constructor
state_before: R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C : HomologicalComplex V c
⊢ 𝟙 ((quotient V c).obj C) = 0 ↔ Nonempty (Homotopy (𝟙 C) 0)
state_after: case mp
R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C : HomologicalComplex V c
⊢ 𝟙 ((quotient V c).obj C) = 0 → Nonempty (Homotopy (𝟙 C) 0)

case mpr
R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C : HomologicalComplex V c
⊢ Nonempty (Homotopy (𝟙 C) 0) → 𝟙 ((quotient V c).obj C) = 0

tactic: intro h
state_before: case mp
R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C : HomologicalComplex V c
⊢ 𝟙 ((quotient V c).obj C) = 0 → Nonempty (Homotopy (𝟙 C) 0)
state_after: case mp
R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C : HomologicalComplex V c
h : 𝟙 ((quotient V c).obj C) = 0
⊢ Nonempty (Homotopy (𝟙 C) 0)

tactic: exact ⟨(homotopyOfEq _ _ (by simp [h]))⟩
state_before: case mp
R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C : HomologicalComplex V c
h : 𝟙 ((quotient V c).obj C) = 0
⊢ Nonempty (Homotopy (𝟙 C) 0)
state_after: no goals

tactic: simp [h]
state_before: R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C : HomologicalComplex V c
h : 𝟙 ((quotient V c).obj C) = 0
⊢ (quotient V c).map (𝟙 C) = (quotient V c).map 0
state_after: no goals

tactic: rintro ⟨h⟩
state_before: case mpr
R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C : HomologicalComplex V c
⊢ Nonempty (Homotopy (𝟙 C) 0) → 𝟙 ((quotient V c).obj C) = 0
state_after: case mpr.intro
R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C : HomologicalComplex V c
h : Homotopy (𝟙 C) 0
⊢ 𝟙 ((quotient V c).obj C) = 0

tactic: simpa using (eq_of_homotopy _ _ h)
state_before: case mpr.intro
R : Type u_1
inst✝² : Semiring R
ι : Type u_2
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C : HomologicalComplex V c
h : Homotopy (𝟙 C) 0
⊢ 𝟙 ((quotient V c).obj C) = 0
state_after: no goals
Theorem: Filter.HasBasis.uniformEmbedding_iff'
File: Mathlib/Topology/UniformSpace/UniformEmbedding.lean

tactic: rw [uniformEmbedding_iff, and_comm, h.uniformInducing_iff h']
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
ι : Sort u_1
ι' : Sort u_2
p : ι → Prop
p' : ι' → Prop
s : ι → Set (α × α)
s' : ι' → Set (β × β)
h : (𝓤 α).HasBasis p s
h' : (𝓤 β).HasBasis p' s'
f : α → β
⊢ UniformEmbedding f ↔
    Injective f ∧
      (∀ (i : ι'), p' i → ∃ j, p j ∧ ∀ (x y : α), (x, y) ∈ s j → (f x, f y) ∈ s' i) ∧
        ∀ (j : ι), p j → ∃ i, p' i ∧ ∀ (x y : α), (f x, f y) ∈ s' i → (x, y) ∈ s j
state_after: no goals
Theorem: Polynomial.nthRootsFinset_def
File: Mathlib/Algebra/Polynomial/Roots.lean

tactic: unfold nthRootsFinset
state_before: R✝ : Type u
S : Type v
T : Type w
a b : R✝
n✝ : ℕ
inst✝⁴ : CommRing R✝
inst✝³ : IsDomain R✝
p q : R✝[X]
n : ℕ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DecidableEq R
⊢ nthRootsFinset n R = (nthRoots n 1).toFinset
state_after: R✝ : Type u
S : Type v
T : Type w
a b : R✝
n✝ : ℕ
inst✝⁴ : CommRing R✝
inst✝³ : IsDomain R✝
p q : R✝[X]
n : ℕ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DecidableEq R
⊢ (nthRoots n 1).toFinset = (nthRoots n 1).toFinset

tactic: convert rfl
state_before: R✝ : Type u
S : Type v
T : Type w
a b : R✝
n✝ : ℕ
inst✝⁴ : CommRing R✝
inst✝³ : IsDomain R✝
p q : R✝[X]
n : ℕ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DecidableEq R
⊢ (nthRoots n 1).toFinset = (nthRoots n 1).toFinset
state_after: no goals
Theorem: CategoryTheory.Limits.pullbackIsoUnopPushout_hom_inr
File: Mathlib/CategoryTheory/Limits/Opposites.lean

tactic: apply Quiver.Hom.unop_inj
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
inst✝¹ : HasPullback f g
inst✝ : HasPushout f.op g.op
⊢ pushout.inr ≫ (pullbackIsoUnopPushout f g).hom.op = pullback.snd.op
state_after: case a
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
inst✝¹ : HasPullback f g
inst✝ : HasPushout f.op g.op
⊢ (pushout.inr ≫ (pullbackIsoUnopPushout f g).hom.op).unop = pullback.snd.op.unop

tactic: dsimp
state_before: case a
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
inst✝¹ : HasPullback f g
inst✝ : HasPushout f.op g.op
⊢ (pushout.inr ≫ (pullbackIsoUnopPushout f g).hom.op).unop = pullback.snd.op.unop
state_after: case a
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
inst✝¹ : HasPullback f g
inst✝ : HasPushout f.op g.op
⊢ (pullbackIsoUnopPushout f g).hom ≫ pushout.inr.unop = pullback.snd

tactic: rw [← pullbackIsoUnopPushout_inv_snd, Iso.hom_inv_id_assoc]
state_before: case a
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
inst✝¹ : HasPullback f g
inst✝ : HasPushout f.op g.op
⊢ (pullbackIsoUnopPushout f g).hom ≫ pushout.inr.unop = pullback.snd
state_after: no goals
Theorem: Orientation.oangle_eq_zero_or_eq_pi_iff_not_linearIndependent
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

tactic: rw [oangle_eq_zero_iff_sameRay, oangle_eq_pi_iff_sameRay_neg,
  sameRay_or_ne_zero_and_sameRay_neg_iff_not_linearIndependent]
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
⊢ o.oangle x y = 0 ∨ o.oangle x y = ↑π ↔ ¬LinearIndependent ℝ ![x, y]
state_after: no goals
Theorem: Ideal.finsuppTotal_apply_eq_of_fintype
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [finsuppTotal_apply, Finsupp.sum_fintype]
state_before: ι : Type u_1
M : Type u_2
inst✝³ : AddCommGroup M
R : Type u_3
inst✝² : CommRing R
inst✝¹ : Module R M
I : Ideal R
v : ι → M
hv : Submodule.span R (Set.range v) = ⊤
inst✝ : Fintype ι
f : ι →₀ ↥I
⊢ (finsuppTotal ι M I v) f = ∑ i : ι, ↑(f i) • v i
state_after: case h
ι : Type u_1
M : Type u_2
inst✝³ : AddCommGroup M
R : Type u_3
inst✝² : CommRing R
inst✝¹ : Module R M
I : Ideal R
v : ι → M
hv : Submodule.span R (Set.range v) = ⊤
inst✝ : Fintype ι
f : ι →₀ ↥I
⊢ ∀ (i : ι), ↑0 • v i = 0

tactic: exact fun _ => zero_smul _ _
state_before: case h
ι : Type u_1
M : Type u_2
inst✝³ : AddCommGroup M
R : Type u_3
inst✝² : CommRing R
inst✝¹ : Module R M
I : Ideal R
v : ι → M
hv : Submodule.span R (Set.range v) = ⊤
inst✝ : Fintype ι
f : ι →₀ ↥I
⊢ ∀ (i : ι), ↑0 • v i = 0
state_after: no goals
Theorem: TypeVec.toSubtype'_of_subtype'
File: Mathlib/Data/TypeVec.lean

tactic: ext i x
state_before: n : ℕ
α : TypeVec.{u_1} n
r : α ⊗ α ⟹ repeat n Prop
⊢ toSubtype' r ⊚ ofSubtype' r = id
state_after: case a.h
n : ℕ
α : TypeVec.{u_1} n
r : α ⊗ α ⟹ repeat n Prop
i : Fin2 n
x : Subtype_ r i
⊢ (toSubtype' r ⊚ ofSubtype' r) i x = id i x

tactic: induction i
<;> dsimp only [id, toSubtype', comp, ofSubtype'] at *
<;> simp [Subtype.eta, *]
state_before: case a.h
n : ℕ
α : TypeVec.{u_1} n
r : α ⊗ α ⟹ repeat n Prop
i : Fin2 n
x : Subtype_ r i
⊢ (toSubtype' r ⊚ ofSubtype' r) i x = id i x
state_after: no goals
Theorem: Complex.div_im
File: Mathlib/Data/Complex/Basic.lean

tactic: simp [div_eq_mul_inv, mul_assoc, sub_eq_add_neg, add_comm]
state_before: z w : ℂ
⊢ (z / w).im = z.im * w.re / normSq w - z.re * w.im / normSq w
state_after: no goals