1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ProbabilityTheory.iIndep_iff_iIndepSets
File: Mathlib/Probability/Independence/Basic.lean

tactic: simp only [iIndep, iIndepSets, kernel.iIndep]
state_before: Ω : Type u_1
ι : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
π : ι → Set (Set Ω)
m✝ : ι → MeasurableSpace Ω
x✝ : MeasurableSpace Ω
μ✝ : Measure Ω
S : Finset ι
s : ι → Set Ω
m : ι → MeasurableSpace Ω
_mΩ : MeasurableSpace Ω
μ : Measure Ω
⊢ iIndep m μ ↔ iIndepSets (fun x => {s | MeasurableSet s}) μ
state_after: no goals
Theorem: AddSubgroup.intCast_mul_mem_zmultiples
File: Mathlib/Algebra/Group/Subgroup/ZPowers.lean

tactic: simpa only [← zsmul_eq_mul] using zsmul_mem_zmultiples r k
state_before: G : Type u_1
inst✝³ : Group G
A : Type u_2
inst✝² : AddGroup A
N : Type u_3
inst✝¹ : Group N
R : Type u_4
inst✝ : Ring R
r : R
k : ℤ
⊢ ↑k * r ∈ zmultiples r
state_after: no goals
Theorem: Nat.coprime_mul_iff_left
File: .lake/packages/batteries/Batteries/Data/Nat/Gcd.lean

tactic: rwa [coprime_iff_gcd_eq_one, h.gcd_mul_left_cancel n]
state_before: m n k : Nat
x✝ : m.Coprime k ∧ n.Coprime k
h : m.Coprime k
right✝ : n.Coprime k
⊢ (m * n).Coprime k
state_after: no goals
Theorem: EuclideanGeometry.Sphere.two_zsmul_oangle_center_add_two_zsmul_oangle_eq_pi
File: Mathlib/Geometry/Euclidean/Angle/Sphere.lean

tactic: rw [← oangle_center_eq_two_zsmul_oangle hp₁ hp₂ hp₃ hp₂p₁ hp₂p₃,
  oangle_eq_pi_sub_two_zsmul_oangle_center_right hp₁ hp₃ hp₁p₃, add_sub_cancel]
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
s : Sphere P
p₁ p₂ p₃ : P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
hp₃ : p₃ ∈ s
hp₂p₁ : p₂ ≠ p₁
hp₂p₃ : p₂ ≠ p₃
hp₁p₃ : p₁ ≠ p₃
⊢ 2 • ∡ p₃ p₁ s.center + 2 • ∡ p₁ p₂ p₃ = ↑π
state_after: no goals
Theorem: eq_empty_relation
File: Mathlib/Order/RelClasses.lean

tactic: simpa using not_rel_of_subsingleton r
state_before: α : Type u
β : Type v
r✝ : α → α → Prop
s : β → β → Prop
r : α → α → Prop
inst✝¹ : IsIrrefl α r
inst✝ : Subsingleton α
⊢ ∀ (a b : α), r a b = EmptyRelation a b
state_after: no goals
Theorem: Set.Iic.coe_biSup
File: Mathlib/Order/CompleteLatticeIntervals.lean

tactic: simp
state_before: ι : Sort u_1
α : Type u_2
s : Set α
inst✝ : CompleteLattice α
a : α
S : Set ↑(Iic a)
f : ι → ↑(Iic a)
p : ι → Prop
⊢ ↑(⨆ i, ⨆ (_ : p i), f i) = ⨆ i, ⨆ (_ : p i), ↑(f i)
state_after: no goals
Theorem: WittVector.constantCoeff_wittAdd
File: Mathlib/RingTheory/WittVector/Defs.lean

tactic: apply constantCoeff_wittStructureInt p _ _ n
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
n : ℕ
⊢ constantCoeff (wittAdd p n) = 0
state_after: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
n : ℕ
⊢ constantCoeff (X 0 + X 1) = 0

tactic: simp only [add_zero, RingHom.map_add, constantCoeff_X]
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
n : ℕ
⊢ constantCoeff (X 0 + X 1) = 0
state_after: no goals
Theorem: Functor.Comp.id_map
File: Mathlib/Control/Functor.lean

tactic: simp only [Comp.map, id_map, id_map']
state_before: F : Type u → Type w
G : Type v → Type u
inst✝³ : Functor F
inst✝² : Functor G
inst✝¹ : LawfulFunctor F
inst✝ : LawfulFunctor G
α β γ : Type v
x : F (G α)
⊢ Comp.map id (mk x) = mk x
state_after: F : Type u → Type w
G : Type v → Type u
inst✝³ : Functor F
inst✝² : Functor G
inst✝¹ : LawfulFunctor F
inst✝ : LawfulFunctor G
α β γ : Type v
x : F (G α)
⊢ mk (mk x) = mk x

tactic: rfl
state_before: F : Type u → Type w
G : Type v → Type u
inst✝³ : Functor F
inst✝² : Functor G
inst✝¹ : LawfulFunctor F
inst✝ : LawfulFunctor G
α β γ : Type v
x : F (G α)
⊢ mk (mk x) = mk x
state_after: no goals
Theorem: Urysohns.CU.approx_of_mem_C
File: Mathlib/Topology/UrysohnsLemma.lean

tactic: induction' n with n ihn generalizing c
state_before: X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
c : CU P
n : ℕ
x : X
hx : x ∈ c.C
⊢ approx n c x = 0
state_after: case zero
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
c : CU P
hx : x ∈ c.C
⊢ approx 0 c x = 0

case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), x ∈ c.C → approx n c x = 0
c : CU P
hx : x ∈ c.C
⊢ approx (n + 1) c x = 0

tactic: exact indicator_of_not_mem (fun (hU : x ∈ c.Uᶜ) => hU <| c.subset hx) _
state_before: case zero
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
c : CU P
hx : x ∈ c.C
⊢ approx 0 c x = 0
state_after: no goals

tactic: simp only [approx]
state_before: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), x ∈ c.C → approx n c x = 0
c : CU P
hx : x ∈ c.C
⊢ approx (n + 1) c x = 0
state_after: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), x ∈ c.C → approx n c x = 0
c : CU P
hx : x ∈ c.C
⊢ midpoint ℝ (approx n c.left x) (approx n c.right x) = 0

tactic: rw [ihn, ihn, midpoint_self]
state_before: case succ
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), x ∈ c.C → approx n c x = 0
c : CU P
hx : x ∈ c.C
⊢ midpoint ℝ (approx n c.left x) (approx n c.right x) = 0
state_after: case succ.hx
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), x ∈ c.C → approx n c x = 0
c : CU P
hx : x ∈ c.C
⊢ x ∈ c.right.C

case succ.hx
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), x ∈ c.C → approx n c x = 0
c : CU P
hx : x ∈ c.C
⊢ x ∈ c.left.C

tactic: exacts [c.subset_right_C hx, hx]
state_before: case succ.hx
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), x ∈ c.C → approx n c x = 0
c : CU P
hx : x ∈ c.C
⊢ x ∈ c.right.C

case succ.hx
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
x : X
n : ℕ
ihn : ∀ (c : CU P), x ∈ c.C → approx n c x = 0
c : CU P
hx : x ∈ c.C
⊢ x ∈ c.left.C
state_after: no goals
Theorem: Right.mul_pos
File: Mathlib/Algebra/Order/GroupWithZero/Unbundled.lean

tactic: simpa only [zero_mul] using mul_lt_mul_of_pos_right ha hb
state_before: α : Type u_1
a b c d : α
inst✝² : MulZeroClass α
inst✝¹ : Preorder α
inst✝ : MulPosStrictMono α
ha : 0 < a
hb : 0 < b
⊢ 0 < a * b
state_after: no goals
Theorem: AlgebraicGeometry.Scheme.Pullback.t_fst_snd
File: Mathlib/AlgebraicGeometry/Pullbacks.lean

tactic: simp only [t, Category.assoc, pullbackSymmetry_hom_comp_fst_assoc, pullbackAssoc_hom_snd_snd,
  pullback.lift_snd, Category.comp_id, pullbackAssoc_inv_snd, pullbackSymmetry_hom_comp_snd_assoc]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : Scheme
𝒰 : X.OpenCover
f : X ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (i : 𝒰.J), HasPullback (𝒰.map i ≫ f) g
i j : 𝒰.J
⊢ t 𝒰 f g i j ≫ pullback.fst ≫ pullback.snd = pullback.fst ≫ pullback.snd
state_after: no goals
Theorem: RCLike.sqrt_normSq_eq_norm
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: rw [normSq_eq_def', Real.sqrt_sq (norm_nonneg _)]
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z✝ z : K
⊢ √(normSq z) = ‖z‖
state_after: no goals
Theorem: PowerSeries.trunc_zero
File: Mathlib/RingTheory/PowerSeries/Trunc.lean

tactic: rw [coeff_trunc, LinearMap.map_zero, Polynomial.coeff_zero]
state_before: R : Type u_1
inst✝ : Semiring R
n m : ℕ
⊢ (trunc n 0).coeff m = Polynomial.coeff 0 m
state_after: R : Type u_1
inst✝ : Semiring R
n m : ℕ
⊢ (if m < n then 0 else 0) = 0

tactic: split_ifs <;> rfl
state_before: R : Type u_1
inst✝ : Semiring R
n m : ℕ
⊢ (if m < n then 0 else 0) = 0
state_after: no goals
Theorem: Complex.cpow_nat_inv_pow
File: Mathlib/Analysis/SpecialFunctions/Pow/Complex.lean

tactic: rw [← cpow_nat_mul, mul_inv_cancel, cpow_one]
state_before: x : ℂ
n : ℕ
hn : n ≠ 0
⊢ (x ^ (↑n)⁻¹) ^ n = x
state_after: x : ℂ
n : ℕ
hn : n ≠ 0
⊢ ↑n ≠ 0

tactic: assumption_mod_cast
state_before: x : ℂ
n : ℕ
hn : n ≠ 0
⊢ ↑n ≠ 0
state_after: no goals
Theorem: IsPGroup.of_card
File: Mathlib/GroupTheory/PGroup.lean

tactic: rw [← hG, pow_card_eq_one]
state_before: p : ℕ
G : Type u_1
inst✝¹ : Group G
inst✝ : Fintype G
n : ℕ
hG : card G = p ^ n
g : G
⊢ g ^ p ^ n = 1
state_after: no goals
Theorem: LinearMap.separatingLeft_toLinearMap₂'_iff_det_ne_zero
File: Mathlib/LinearAlgebra/Matrix/SesquilinearForm.lean

tactic: rw [Matrix.separatingLeft_toLinearMap₂'_iff, Matrix.nondegenerate_iff_det_ne_zero]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M✝ : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommMonoid M₁
inst✝³ : Module R₁ M₁
inst✝² : DecidableEq ι
inst✝¹ : Fintype ι
B : M₁ →ₗ[R₁] M₁ →ₗ[R₁] R₁
inst✝ : IsDomain R₁
M : Matrix ι ι R₁
⊢ (toLinearMap₂' M).SeparatingLeft ↔ M.det ≠ 0
state_after: no goals
Theorem: EReal.embedding_coe_ennreal
File: Mathlib/Topology/Instances/EReal.lean

tactic: rw [range_coe_ennreal]
state_before: α : Type u_1
inst✝ : TopologicalSpace α
⊢ (range ENNReal.toEReal).OrdConnected
state_after: α : Type u_1
inst✝ : TopologicalSpace α
⊢ (Ici 0).OrdConnected

tactic: exact ordConnected_Ici
state_before: α : Type u_1
inst✝ : TopologicalSpace α
⊢ (Ici 0).OrdConnected
state_after: no goals
Theorem: isGLB_biInf
File: Mathlib/Order/CompleteLattice.lean

tactic: simpa only [range_comp, Subtype.range_coe, iInf_subtype'] using
  @isGLB_iInf α s _ (f ∘ fun x => (x : β))
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g s✝ t : ι → α
a b : α
s : Set β
f : β → α
⊢ IsGLB (f '' s) (⨅ x ∈ s, f x)
state_after: no goals
Theorem: Set.preimage_neg_Ioo
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [← Ioi_inter_Iio, inter_comm]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ -Ioo a b = Ioo (-b) (-a)
state_after: no goals
Theorem: SimpleGraph.adjMatrix_mulVec_const_apply_of_regular
File: Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean

tactic: simp [hd v]
state_before: V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
d : ℕ
a : α
hd : G.IsRegularOfDegree d
v : V
⊢ (adjMatrix α G *ᵥ Function.const V a) v = ↑d * a
state_after: no goals
Theorem: FormalMultilinearSeries.compAlongComposition_norm
File: Mathlib/Analysis/Analytic/Composition.lean

tactic: positivity
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
H : Type u_5
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
inst✝¹ : NormedAddCommGroup H
inst✝ : NormedSpace 𝕜 H
n : ℕ
q : FormalMultilinearSeries 𝕜 F G
p : FormalMultilinearSeries 𝕜 E F
c : Composition n
⊢ 0 ≤ ‖q c.length‖ * ∏ i : Fin c.length, ‖p (c.blocksFun i)‖
state_after: no goals
Theorem: Pi.mulSupport_mulSingle_disjoint
File: Mathlib/Algebra/Group/Support.lean

tactic: rw [mulSupport_mulSingle_of_ne hb, mulSupport_mulSingle_of_ne hb', disjoint_singleton]
state_before: A : Type u_1
B : Type u_2
inst✝¹ : DecidableEq A
inst✝ : One B
a : A
b b' : B
hb : b ≠ 1
hb' : b' ≠ 1
i j : A
⊢ Disjoint (mulSupport (mulSingle i b)) (mulSupport (mulSingle j b')) ↔ i ≠ j
state_after: no goals
Theorem: AlgebraicGeometry.pullbackRestrictIsoRestrict_inv_fst
File: Mathlib/AlgebraicGeometry/Restrict.lean

tactic: delta pullbackRestrictIsoRestrict
state_before: C : Type u₁
inst✝ : Category.{v, u₁} C
X Y : Scheme
f : X ⟶ Y
U : Opens ↑↑Y.toPresheafedSpace
⊢ (pullbackRestrictIsoRestrict f U).inv ≫ pullback.fst = X.ofRestrict ⋯
state_after: C : Type u₁
inst✝ : Category.{v, u₁} C
X Y : Scheme
f : X ⟶ Y
U : Opens ↑↑Y.toPresheafedSpace
⊢ (IsOpenImmersion.isoOfRangeEq pullback.fst (X.ofRestrict ⋯) ⋯).inv ≫ pullback.fst = X.ofRestrict ⋯

tactic: simp
state_before: C : Type u₁
inst✝ : Category.{v, u₁} C
X Y : Scheme
f : X ⟶ Y
U : Opens ↑↑Y.toPresheafedSpace
⊢ (IsOpenImmersion.isoOfRangeEq pullback.fst (X.ofRestrict ⋯) ⋯).inv ≫ pullback.fst = X.ofRestrict ⋯
state_after: no goals
Theorem: pow_div_pow_eventuallyEq_atBot
File: Mathlib/Analysis/Asymptotics/SpecificAsymptotics.lean

tactic: apply (eventually_lt_atBot (0 : 𝕜)).mono fun x hx => _
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
p q : ℕ
⊢ (fun x => x ^ p / x ^ q) =ᶠ[atBot] fun x => x ^ (↑p - ↑q)
state_after: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
p q : ℕ
⊢ ∀ x < 0, (fun x => x ^ p / x ^ q) x = (fun x => x ^ (↑p - ↑q)) x

tactic: intro x hx
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
p q : ℕ
⊢ ∀ x < 0, (fun x => x ^ p / x ^ q) x = (fun x => x ^ (↑p - ↑q)) x
state_after: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
p q : ℕ
x : 𝕜
hx : x < 0
⊢ (fun x => x ^ p / x ^ q) x = (fun x => x ^ (↑p - ↑q)) x

tactic: simp [zpow_sub₀ hx.ne]
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
p q : ℕ
x : 𝕜
hx : x < 0
⊢ (fun x => x ^ p / x ^ q) x = (fun x => x ^ (↑p - ↑q)) x
state_after: no goals
Theorem: CochainComplex.mappingConeCompHomotopyEquiv_hom_inv_id
File: Mathlib/Algebra/Homology/HomotopyCategory/Triangulated.lean

tactic: simp [mappingConeCompHomotopyEquiv]
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : Preadditive C
inst✝¹ : HasZeroObject C
inst✝ : HasBinaryBiproducts C
X₁ X₂ X₃ : CochainComplex C ℤ
f : X₁ ⟶ X₂
g : X₂ ⟶ X₃
⊢ (mappingConeCompHomotopyEquiv f g).hom ≫ (mappingConeCompHomotopyEquiv f g).inv = 𝟙 (mappingCone g)
state_after: no goals
Theorem: Ideal.comap_map_of_surjective
File: Mathlib/RingTheory/Ideal/Maps.lean

tactic: rw [map_sub, hfsr, sub_self]
state_before: R : Type u
S : Type v
F : Type u_1
inst✝³ : Ring R
inst✝² : Ring S
inst✝¹ : FunLike F R S
inst✝ : RingHomClass F R S
f : F
I✝ : Ideal R
hf : Function.Surjective ⇑f
I : Ideal R
r : R
h : f r ∈ map f I
s : R
hsi : s ∈ ↑I
hfsr : f s = f r
⊢ f (r - s) = 0
state_after: no goals
Theorem: List.rtakeWhile_concat_pos
File: Mathlib/Data/List/DropRight.lean

tactic: rw [rtakeWhile_concat, if_pos h]
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
x : α
h : p x = true
⊢ rtakeWhile p (l ++ [x]) = rtakeWhile p l ++ [x]
state_after: no goals
Theorem: HomologicalComplex.homotopyCofiber.inlX_d
File: Mathlib/Algebra/Homology/HomotopyCofiber.lean

tactic: apply ext_to_X φ j k hjk
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i j k : ι
hij : c.Rel i j
hjk : c.Rel j k
⊢ inlX φ j i hij ≫ d φ i j = -F.d j k ≫ inlX φ k j hjk + φ.f j ≫ inrX φ j
state_after: case h₁
C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i j k : ι
hij : c.Rel i j
hjk : c.Rel j k
⊢ (inlX φ j i hij ≫ d φ i j) ≫ fstX φ j k hjk = (-F.d j k ≫ inlX φ k j hjk + φ.f j ≫ inrX φ j) ≫ fstX φ j k hjk

case h₂
C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i j k : ι
hij : c.Rel i j
hjk : c.Rel j k
⊢ (inlX φ j i hij ≫ d φ i j) ≫ sndX φ j = (-F.d j k ≫ inlX φ k j hjk + φ.f j ≫ inrX φ j) ≫ sndX φ j

tactic: simp [d_fstX φ  _ _ _ hij hjk]
state_before: case h₁
C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i j k : ι
hij : c.Rel i j
hjk : c.Rel j k
⊢ (inlX φ j i hij ≫ d φ i j) ≫ fstX φ j k hjk = (-F.d j k ≫ inlX φ k j hjk + φ.f j ≫ inrX φ j) ≫ fstX φ j k hjk
state_after: no goals

tactic: simp [d_sndX φ _ _ hij]
state_before: case h₂
C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i j k : ι
hij : c.Rel i j
hjk : c.Rel j k
⊢ (inlX φ j i hij ≫ d φ i j) ≫ sndX φ j = (-F.d j k ≫ inlX φ k j hjk + φ.f j ≫ inrX φ j) ≫ sndX φ j
state_after: no goals
Theorem: intervalIntegral.integral_symm
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simp only [intervalIntegral, neg_sub]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a✝ b✝ : ℝ
f g : ℝ → E
μ : Measure ℝ
a b : ℝ
⊢ ∫ (x : ℝ) in b..a, f x ∂μ = -∫ (x : ℝ) in a..b, f x ∂μ
state_after: no goals
Theorem: Mathlib.Tactic.Ring.toProd_pf
File: Mathlib/Tactic/Ring/Basic.lean

tactic: simp [*]
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a a' : R
p : a = a'
⊢ a = a' ^ Nat.rawCast 1 * Nat.rawCast 1
state_after: no goals
Theorem: MeasureTheory.AEEqFun.comp₂Measurable_toGerm
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹⁴ : MeasurableSpace α
μ ν : Measure α
inst✝¹³ : TopologicalSpace β
inst✝¹² : TopologicalSpace γ
inst✝¹¹ : TopologicalSpace δ
inst✝¹⁰ : PseudoMetrizableSpace β
inst✝⁹ : MeasurableSpace β
inst✝⁸ : BorelSpace β
inst✝⁷ : PseudoMetrizableSpace γ
inst✝⁶ : SecondCountableTopologyEither β γ
inst✝⁵ : MeasurableSpace γ
inst✝⁴ : BorelSpace γ
inst✝³ : PseudoMetrizableSpace δ
inst✝² : SecondCountableTopology δ
inst✝¹ : MeasurableSpace δ
inst✝ : OpensMeasurableSpace δ
g : β → γ → δ
hg : Measurable (uncurry g)
f₁✝ : α →ₘ[μ] β
f₂✝ : α →ₘ[μ] γ
f₁ : α → β
x✝¹ : AEStronglyMeasurable f₁ μ
f₂ : α → γ
x✝ : AEStronglyMeasurable f₂ μ
⊢ (comp₂Measurable g hg (mk f₁ x✝¹) (mk f₂ x✝)).toGerm = Germ.map₂ g (mk f₁ x✝¹).toGerm (mk f₂ x✝).toGerm
state_after: no goals
Theorem: AlgebraicGeometry.StructureSheaf.const_ext
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

tactic: rw [mul_comm, Subtype.coe_mk, ← h, mul_comm, Subtype.coe_mk]
state_before: R : Type u
inst✝ : CommRing R
f₁ f₂ g₁ g₂ : R
U : Opens ↑(PrimeSpectrum.Top R)
hu₁ : ∀ x ∈ U, g₁ ∈ x.asIdeal.primeCompl
hu₂ : ∀ x ∈ U, g₂ ∈ x.asIdeal.primeCompl
h : f₁ * g₂ = f₂ * g₁
x : ↥{ unop := U }.unop
⊢ ↑⟨g₁, ⋯⟩ * f₂ = ↑⟨g₂, ⋯⟩ * f₁
state_after: no goals
Theorem: CategoryTheory.ShortComplex.Splitting.g_s
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: rw [← s.id, add_sub_cancel_left]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.79710, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S : ShortComplex C
s : S.Splitting
⊢ S.g ≫ s.s = 𝟙 S.X₂ - s.r ≫ S.f
state_after: no goals
Theorem: ENNReal.add_lt_add
File: Mathlib/Data/ENNReal/Operations.lean

tactic: lift a to ℝ≥0 using ac.ne_top
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
ac : a < c
bd : b < d
⊢ a + b < c + d
state_after: case intro
b c d : ℝ≥0∞
r p q : ℝ≥0
bd : b < d
a : ℝ≥0
ac : ↑a < c
⊢ ↑a + b < c + d

tactic: lift b to ℝ≥0 using bd.ne_top
state_before: case intro
b c d : ℝ≥0∞
r p q : ℝ≥0
bd : b < d
a : ℝ≥0
ac : ↑a < c
⊢ ↑a + b < c + d
state_after: case intro.intro
c d : ℝ≥0∞
r p q a : ℝ≥0
ac : ↑a < c
b : ℝ≥0
bd : ↑b < d
⊢ ↑a + ↑b < c + d

tactic: cases c
state_before: case intro.intro
c d : ℝ≥0∞
r p q a : ℝ≥0
ac : ↑a < c
b : ℝ≥0
bd : ↑b < d
⊢ ↑a + ↑b < c + d
state_after: case intro.intro.top
d : ℝ≥0∞
r p q a b : ℝ≥0
bd : ↑b < d
ac : ↑a < ⊤
⊢ ↑a + ↑b < ⊤ + d

case intro.intro.coe
d : ℝ≥0∞
r p q a b : ℝ≥0
bd : ↑b < d
x✝ : ℝ≥0
ac : ↑a < ↑x✝
⊢ ↑a + ↑b < ↑x✝ + d

tactic: cases d
state_before: case intro.intro.coe
d : ℝ≥0∞
r p q a b : ℝ≥0
bd : ↑b < d
x✝ : ℝ≥0
ac : ↑a < ↑x✝
⊢ ↑a + ↑b < ↑x✝ + d
state_after: case intro.intro.coe.top
r p q a b x✝ : ℝ≥0
ac : ↑a < ↑x✝
bd : ↑b < ⊤
⊢ ↑a + ↑b < ↑x✝ + ⊤

case intro.intro.coe.coe
r p q a b x✝¹ : ℝ≥0
ac : ↑a < ↑x✝¹
x✝ : ℝ≥0
bd : ↑b < ↑x✝
⊢ ↑a + ↑b < ↑x✝¹ + ↑x✝

tactic: simp only [← coe_add, some_eq_coe, coe_lt_coe] at *
state_before: case intro.intro.coe.coe
r p q a b x✝¹ : ℝ≥0
ac : ↑a < ↑x✝¹
x✝ : ℝ≥0
bd : ↑b < ↑x✝
⊢ ↑a + ↑b < ↑x✝¹ + ↑x✝
state_after: case intro.intro.coe.coe
r p q a b x✝¹ x✝ : ℝ≥0
ac : a < x✝¹
bd : b < x✝
⊢ a + b < x✝¹ + x✝

tactic: exact add_lt_add ac bd
state_before: case intro.intro.coe.coe
r p q a b x✝¹ x✝ : ℝ≥0
ac : a < x✝¹
bd : b < x✝
⊢ a + b < x✝¹ + x✝
state_after: no goals

tactic: simp
state_before: case intro.intro.top
d : ℝ≥0∞
r p q a b : ℝ≥0
bd : ↑b < d
ac : ↑a < ⊤
⊢ ↑a + ↑b < ⊤ + d
state_after: no goals

tactic: simp
state_before: case intro.intro.coe.top
r p q a b x✝ : ℝ≥0
ac : ↑a < ↑x✝
bd : ↑b < ⊤
⊢ ↑a + ↑b < ↑x✝ + ⊤
state_after: no goals
Theorem: Batteries.UnionFind.rootD_eq_self
File: .lake/packages/batteries/Batteries/Data/UnionFind/Basic.lean

tactic: refine ⟨fun h => by rw [← h, parent_rootD], fun h => ?_⟩
state_before: self : UnionFind
x : Nat
⊢ self.rootD x = x ↔ self.parent x = x
state_after: self : UnionFind
x : Nat
h : self.parent x = x
⊢ self.rootD x = x

tactic: rw [rootD]
state_before: self : UnionFind
x : Nat
h : self.parent x = x
⊢ self.rootD x = x
state_after: self : UnionFind
x : Nat
h : self.parent x = x
⊢ (if h : x < self.size then ↑(self.root ⟨x, h⟩) else x) = x

tactic: split <;> [rw [root, dif_pos (by rwa [parent, parentD_eq' ‹_›] at h)]; rfl]
state_before: self : UnionFind
x : Nat
h : self.parent x = x
⊢ (if h : x < self.size then ↑(self.root ⟨x, h⟩) else x) = x
state_after: no goals

tactic: rw [← h, parent_rootD]
state_before: self : UnionFind
x : Nat
h : self.rootD x = x
⊢ self.parent x = x
state_after: no goals

tactic: rwa [parent, parentD_eq' ‹_›] at h
state_before: self : UnionFind
x : Nat
h : self.parent x = x
h✝ : x < self.size
⊢ (self.arr.get ⟨x, h✝⟩).parent = ↑⟨x, h✝⟩
state_after: no goals
Theorem: WithBot.preimage_coe_Icc
File: Mathlib/Order/Interval/Set/WithBotTop.lean

tactic: simp [← Ici_inter_Iic]
state_before: α : Type u_1
inst✝ : Preorder α
a b : α
⊢ some ⁻¹' Icc ↑a ↑b = Icc a b
state_after: no goals
Theorem: Batteries.RBNode.min?_eq_toList_head?
File: .lake/packages/batteries/Batteries/Data/RBMap/Lemmas.lean

tactic: induction t with
| nil => rfl
| node _ l _ _ ih =>
  cases l <;> simp [RBNode.min?, ih]
  next ll _ _ => cases toList ll <;> rfl
state_before: α : Type u_1
t : RBNode α
⊢ t.min? = t.toList.head?
state_after: no goals

tactic: rfl
state_before: case nil
α : Type u_1
⊢ nil.min? = nil.toList.head?
state_after: no goals

tactic: cases l <;> simp [RBNode.min?, ih]
state_before: case node
α : Type u_1
c✝ : RBColor
l : RBNode α
v✝ : α
r✝ : RBNode α
ih : l.min? = l.toList.head?
r_ih✝ : r✝.min? = r✝.toList.head?
⊢ (node c✝ l v✝ r✝).min? = (node c✝ l v✝ r✝).toList.head?
state_after: case node.node
α : Type u_1
c✝¹ : RBColor
v✝¹ : α
r✝¹ : RBNode α
r_ih✝ : r✝¹.min? = r✝¹.toList.head?
c✝ : RBColor
l✝ : RBNode α
v✝ : α
r✝ : RBNode α
ih : (node c✝ l✝ v✝ r✝).min? = (node c✝ l✝ v✝ r✝).toList.head?
⊢ (l✝.toList ++ v✝ :: r✝.toList).head? = (l✝.toList ++ v✝ :: (r✝.toList ++ v✝¹ :: r✝¹.toList)).head?

tactic: next ll _ _ => cases toList ll <;> rfl
state_before: case node.node
α : Type u_1
c✝¹ : RBColor
v✝¹ : α
r✝¹ : RBNode α
r_ih✝ : r✝¹.min? = r✝¹.toList.head?
c✝ : RBColor
l✝ : RBNode α
v✝ : α
r✝ : RBNode α
ih : (node c✝ l✝ v✝ r✝).min? = (node c✝ l✝ v✝ r✝).toList.head?
⊢ (l✝.toList ++ v✝ :: r✝.toList).head? = (l✝.toList ++ v✝ :: (r✝.toList ++ v✝¹ :: r✝¹.toList)).head?
state_after: no goals

tactic: cases toList ll <;> rfl
state_before: α : Type u_1
c✝¹ : RBColor
v✝¹ : α
r✝¹ : RBNode α
r_ih✝ : r✝¹.min? = r✝¹.toList.head?
c✝ : RBColor
ll : RBNode α
v✝ : α
r✝ : RBNode α
ih : (node c✝ ll v✝ r✝).min? = (node c✝ ll v✝ r✝).toList.head?
⊢ (ll.toList ++ v✝ :: r✝.toList).head? = (ll.toList ++ v✝ :: (r✝.toList ++ v✝¹ :: r✝¹.toList)).head?
state_after: no goals