1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ProbabilityTheory.gaussianReal_add_const
File: Mathlib/Probability/Distributions/Gaussian.lean

tactic: have hXm : AEMeasurable X := aemeasurable_of_map_neZero (by rw [hX]; infer_instance)
state_before: μ : ℝ
v : ℝ≥0
Ω : Type
inst✝ : MeasureSpace Ω
X : Ω → ℝ
hX : Measure.map X ℙ = gaussianReal μ v
y : ℝ
⊢ Measure.map (fun ω => X ω + y) ℙ = gaussianReal (μ + y) v
state_after: μ : ℝ
v : ℝ≥0
Ω : Type
inst✝ : MeasureSpace Ω
X : Ω → ℝ
hX : Measure.map X ℙ = gaussianReal μ v
y : ℝ
hXm : AEMeasurable X ℙ
⊢ Measure.map (fun ω => X ω + y) ℙ = gaussianReal (μ + y) v

tactic: change Measure.map ((fun ω ↦ ω + y) ∘ X) ℙ = gaussianReal (μ + y) v
state_before: μ : ℝ
v : ℝ≥0
Ω : Type
inst✝ : MeasureSpace Ω
X : Ω → ℝ
hX : Measure.map X ℙ = gaussianReal μ v
y : ℝ
hXm : AEMeasurable X ℙ
⊢ Measure.map (fun ω => X ω + y) ℙ = gaussianReal (μ + y) v
state_after: μ : ℝ
v : ℝ≥0
Ω : Type
inst✝ : MeasureSpace Ω
X : Ω → ℝ
hX : Measure.map X ℙ = gaussianReal μ v
y : ℝ
hXm : AEMeasurable X ℙ
⊢ Measure.map ((fun ω => ω + y) ∘ X) ℙ = gaussianReal (μ + y) v

tactic: rw [← AEMeasurable.map_map_of_aemeasurable (measurable_id'.add_const _).aemeasurable hXm, hX,
  gaussianReal_map_add_const y]
state_before: μ : ℝ
v : ℝ≥0
Ω : Type
inst✝ : MeasureSpace Ω
X : Ω → ℝ
hX : Measure.map X ℙ = gaussianReal μ v
y : ℝ
hXm : AEMeasurable X ℙ
⊢ Measure.map ((fun ω => ω + y) ∘ X) ℙ = gaussianReal (μ + y) v
state_after: no goals

tactic: rw [hX]
state_before: μ : ℝ
v : ℝ≥0
Ω : Type
inst✝ : MeasureSpace Ω
X : Ω → ℝ
hX : Measure.map X ℙ = gaussianReal μ v
y : ℝ
⊢ NeZero (Measure.map X ℙ)
state_after: μ : ℝ
v : ℝ≥0
Ω : Type
inst✝ : MeasureSpace Ω
X : Ω → ℝ
hX : Measure.map X ℙ = gaussianReal μ v
y : ℝ
⊢ NeZero (gaussianReal μ v)

tactic: infer_instance
state_before: μ : ℝ
v : ℝ≥0
Ω : Type
inst✝ : MeasureSpace Ω
X : Ω → ℝ
hX : Measure.map X ℙ = gaussianReal μ v
y : ℝ
⊢ NeZero (gaussianReal μ v)
state_after: no goals
Theorem: AffineMap.lineMap_symm
File: Mathlib/LinearAlgebra/AffineSpace/AffineMap.lean

tactic: rw [comp_lineMap]
state_before: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
p₀ p₁ : P1
⊢ lineMap p₀ p₁ = (lineMap p₁ p₀).comp (lineMap 1 0)
state_after: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
p₀ p₁ : P1
⊢ lineMap p₀ p₁ = lineMap ((lineMap p₁ p₀) 1) ((lineMap p₁ p₀) 0)

tactic: simp
state_before: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
p₀ p₁ : P1
⊢ lineMap p₀ p₁ = lineMap ((lineMap p₁ p₀) 1) ((lineMap p₁ p₀) 0)
state_after: no goals
Theorem: Cardinal.aleph'_zero
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [← nonpos_iff_eq_zero, ← aleph'_alephIdx 0, aleph'_le]
state_before: ⊢ aleph' 0 = 0
state_after: ⊢ 0 ≤ alephIdx 0

tactic: apply Ordinal.zero_le
state_before: ⊢ 0 ≤ alephIdx 0
state_after: no goals
Theorem: tangentMap_prod_snd
File: Mathlib/Geometry/Manifold/MFDeriv/SpecificFunctions.lean

tactic: simp [tangentMap]
state_before: 𝕜 : Type u_1
inst✝¹⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁷ : NormedAddCommGroup E
inst✝¹⁶ : NormedSpace 𝕜 E
H : Type u_3
inst✝¹⁵ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹⁴ : TopologicalSpace M
inst✝¹³ : ChartedSpace H M
inst✝¹² : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹¹ : NormedAddCommGroup E'
inst✝¹⁰ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁹ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝⁸ : TopologicalSpace M'
inst✝⁷ : ChartedSpace H' M'
inst✝⁶ : SmoothManifoldWithCorners I' M'
E'' : Type u_8
inst✝⁵ : NormedAddCommGroup E''
inst✝⁴ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝³ : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝² : TopologicalSpace M''
inst✝¹ : ChartedSpace H'' M''
inst✝ : SmoothManifoldWithCorners I'' M''
s : Set M
x : M
p : TangentBundle (I.prod I') (M × M')
⊢ tangentMap (I.prod I') I' Prod.snd p = { proj := p.proj.2, snd := p.snd.2 }
state_after: 𝕜 : Type u_1
inst✝¹⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁷ : NormedAddCommGroup E
inst✝¹⁶ : NormedSpace 𝕜 E
H : Type u_3
inst✝¹⁵ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹⁴ : TopologicalSpace M
inst✝¹³ : ChartedSpace H M
inst✝¹² : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹¹ : NormedAddCommGroup E'
inst✝¹⁰ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁹ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝⁸ : TopologicalSpace M'
inst✝⁷ : ChartedSpace H' M'
inst✝⁶ : SmoothManifoldWithCorners I' M'
E'' : Type u_8
inst✝⁵ : NormedAddCommGroup E''
inst✝⁴ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝³ : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝² : TopologicalSpace M''
inst✝¹ : ChartedSpace H'' M''
inst✝ : SmoothManifoldWithCorners I'' M''
s : Set M
x : M
p : TangentBundle (I.prod I') (M × M')
⊢ (ContinuousLinearMap.snd 𝕜 (TangentSpace I p.proj.1) (TangentSpace I' p.proj.2)) p.snd = p.snd.2

tactic: rfl
state_before: 𝕜 : Type u_1
inst✝¹⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁷ : NormedAddCommGroup E
inst✝¹⁶ : NormedSpace 𝕜 E
H : Type u_3
inst✝¹⁵ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝¹⁴ : TopologicalSpace M
inst✝¹³ : ChartedSpace H M
inst✝¹² : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝¹¹ : NormedAddCommGroup E'
inst✝¹⁰ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝⁹ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝⁸ : TopologicalSpace M'
inst✝⁷ : ChartedSpace H' M'
inst✝⁶ : SmoothManifoldWithCorners I' M'
E'' : Type u_8
inst✝⁵ : NormedAddCommGroup E''
inst✝⁴ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝³ : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝² : TopologicalSpace M''
inst✝¹ : ChartedSpace H'' M''
inst✝ : SmoothManifoldWithCorners I'' M''
s : Set M
x : M
p : TangentBundle (I.prod I') (M × M')
⊢ (ContinuousLinearMap.snd 𝕜 (TangentSpace I p.proj.1) (TangentSpace I' p.proj.2)) p.snd = p.snd.2
state_after: no goals
Theorem: Bimod.TensorBimod.π_tensor_id_actRight
File: Mathlib/CategoryTheory/Monoidal/Bimod.lean

tactic: erw [map_π_preserves_coequalizer_inv_colimMap (tensorRight _)]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ coequalizer.π (P.actRight ▷ Q.X) ((α_ P.X S.X Q.X).hom ≫ P.X ◁ Q.actLeft) ▷ T.X ≫ actRight P Q =
    (α_ P.X Q.X T.X).hom ≫ P.X ◁ Q.actRight ≫ coequalizer.π (P.actRight ▷ Q.X) ((α_ P.X S.X Q.X).hom ≫ P.X ◁ Q.actLeft)
state_after: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ P.X Q.X T.X).hom ≫ P.X ◁ Q.actRight) ≫
      coequalizer.π (P.actRight ▷ Q.X) ((α_ P.X S.X Q.X).hom ≫ P.X ◁ Q.actLeft) =
    (α_ P.X Q.X T.X).hom ≫ P.X ◁ Q.actRight ≫ coequalizer.π (P.actRight ▷ Q.X) ((α_ P.X S.X Q.X).hom ≫ P.X ◁ Q.actLeft)

tactic: simp only [Category.assoc]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
A B : Mon_ C
M : Bimod A B
inst✝¹ : HasCoequalizers C
R S T : Mon_ C
P : Bimod R S
Q : Bimod S T
inst✝ : (X : C) → PreservesColimitsOfSize.{0, 0, v₁, v₁, u₁, u₁} (tensorRight X)
⊢ ((α_ P.X Q.X T.X).hom ≫ P.X ◁ Q.actRight) ≫
      coequalizer.π (P.actRight ▷ Q.X) ((α_ P.X S.X Q.X).hom ≫ P.X ◁ Q.actLeft) =
    (α_ P.X Q.X T.X).hom ≫ P.X ◁ Q.actRight ≫ coequalizer.π (P.actRight ▷ Q.X) ((α_ P.X S.X Q.X).hom ≫ P.X ◁ Q.actLeft)
state_after: no goals
Theorem: Nat.bodd_succ
File: Mathlib/Data/Nat/Bits.lean

tactic: simp only [bodd, boddDiv2]
state_before: m n✝ n : ℕ
⊢ n.succ.bodd = !n.bodd
state_after: m n✝ n : ℕ
⊢ (match n.boddDiv2 with
      | (false, m) => (true, m)
      | (true, m) => (false, m.succ)).1 =
    !n.boddDiv2.1

tactic: let ⟨b,m⟩ := boddDiv2 n
state_before: m n✝ n : ℕ
⊢ (match n.boddDiv2 with
      | (false, m) => (true, m)
      | (true, m) => (false, m.succ)).1 =
    !n.boddDiv2.1
state_after: m✝ n✝ n : ℕ
b : Bool
m : ℕ
⊢ (match (b, m) with
      | (false, m) => (true, m)
      | (true, m) => (false, m.succ)).1 =
    !(b, m).1

tactic: cases b <;> rfl
state_before: m✝ n✝ n : ℕ
b : Bool
m : ℕ
⊢ (match (b, m) with
      | (false, m) => (true, m)
      | (true, m) => (false, m.succ)).1 =
    !(b, m).1
state_after: no goals
Theorem: Complex.neg_pi_lt_log_im
File: Mathlib/Analysis/SpecialFunctions/Complex/Log.lean

tactic: simp only [log_im, neg_pi_lt_arg]
state_before: x : ℂ
⊢ -π < (log x).im
state_after: no goals
Theorem: Cardinal.toENatAux_le_nat
File: Mathlib/SetTheory/Cardinal/ENat.lean

tactic: cases lt_or_le x ℵ₀ with
| inl hx => lift x to ℕ using hx; simp
| inr hx => simp [toENatAux_eq_top hx, (nat_lt_aleph0 n).trans_le hx]
state_before: x : Cardinal.{u_1}
n : ℕ
⊢ x.toENatAux ≤ ↑n ↔ x ≤ ↑n
state_after: no goals

tactic: lift x to ℕ using hx
state_before: case inl
x : Cardinal.{u_1}
n : ℕ
hx : x < ℵ₀
⊢ x.toENatAux ≤ ↑n ↔ x ≤ ↑n
state_after: case inl.intro
n x : ℕ
⊢ (↑x).toENatAux ≤ ↑n ↔ ↑x ≤ ↑n

tactic: simp
state_before: case inl.intro
n x : ℕ
⊢ (↑x).toENatAux ≤ ↑n ↔ ↑x ≤ ↑n
state_after: no goals

tactic: simp [toENatAux_eq_top hx, (nat_lt_aleph0 n).trans_le hx]
state_before: case inr
x : Cardinal.{u_1}
n : ℕ
hx : ℵ₀ ≤ x
⊢ x.toENatAux ≤ ↑n ↔ x ≤ ↑n
state_after: no goals
Theorem: Monoid.PushoutI.of_apply_eq_base
File: Mathlib/GroupTheory/PushoutI.lean

tactic: rw [← MonoidHom.comp_apply, of_comp_eq_base]
state_before: ι : Type u_1
G : ι → Type u_2
H : Type u_3
K : Type u_4
inst✝² : Monoid K
inst✝¹ : (i : ι) → Monoid (G i)
inst✝ : Monoid H
φ : (i : ι) → H →* G i
i : ι
x : H
⊢ (of i) ((φ i) x) = (base φ) x
state_after: no goals
Theorem: PolyEquivTensor.toFunLinear_one_tmul_one
File: Mathlib/RingTheory/PolynomialAlgebra.lean

tactic: rw [toFunLinear_tmul_apply, toFunBilinear_apply_apply, Polynomial.aeval_one, one_smul]
state_before: R : Type u_1
A : Type u_2
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
⊢ (toFunLinear R A) (1 ⊗ₜ[R] 1) = 1
state_after: no goals
Theorem: MeasureTheory.SimpleFunc.finset_sup_apply
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: refine Finset.induction_on s rfl ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : MeasurableSpace α
K : Type u_5
inst✝¹ : SemilatticeSup β
inst✝ : OrderBot β
f : γ → α →ₛ β
s : Finset γ
a : α
⊢ ↑(s.sup f) a = s.sup fun c => ↑(f c) a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : MeasurableSpace α
K : Type u_5
inst✝¹ : SemilatticeSup β
inst✝ : OrderBot β
f : γ → α →ₛ β
s : Finset γ
a : α
⊢ ∀ ⦃a_1 : γ⦄ {s : Finset γ},
    a_1 ∉ s →
      (↑(s.sup f) a = s.sup fun c => ↑(f c) a) → ↑((insert a_1 s).sup f) a = (insert a_1 s).sup fun c => ↑(f c) a

tactic: intro a s _ ih
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : MeasurableSpace α
K : Type u_5
inst✝¹ : SemilatticeSup β
inst✝ : OrderBot β
f : γ → α →ₛ β
s : Finset γ
a : α
⊢ ∀ ⦃a_1 : γ⦄ {s : Finset γ},
    a_1 ∉ s →
      (↑(s.sup f) a = s.sup fun c => ↑(f c) a) → ↑((insert a_1 s).sup f) a = (insert a_1 s).sup fun c => ↑(f c) a
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : MeasurableSpace α
K : Type u_5
inst✝¹ : SemilatticeSup β
inst✝ : OrderBot β
f : γ → α →ₛ β
s✝ : Finset γ
a✝¹ : α
a : γ
s : Finset γ
a✝ : a ∉ s
ih : ↑(s.sup f) a✝¹ = s.sup fun c => ↑(f c) a✝¹
⊢ ↑((insert a s).sup f) a✝¹ = (insert a s).sup fun c => ↑(f c) a✝¹

tactic: rw [Finset.sup_insert, Finset.sup_insert, sup_apply, ih]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝² : MeasurableSpace α
K : Type u_5
inst✝¹ : SemilatticeSup β
inst✝ : OrderBot β
f : γ → α →ₛ β
s✝ : Finset γ
a✝¹ : α
a : γ
s : Finset γ
a✝ : a ∉ s
ih : ↑(s.sup f) a✝¹ = s.sup fun c => ↑(f c) a✝¹
⊢ ↑((insert a s).sup f) a✝¹ = (insert a s).sup fun c => ↑(f c) a✝¹
state_after: no goals
Theorem: MonoidHom.map_range
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

tactic: rw [range_eq_map, range_eq_map]
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
N : Type u_5
P : Type u_6
inst✝¹ : Group N
inst✝ : Group P
K : Subgroup G
g : N →* P
f : G →* N
⊢ map g f.range = (g.comp f).range
state_after: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
N : Type u_5
P : Type u_6
inst✝¹ : Group N
inst✝ : Group P
K : Subgroup G
g : N →* P
f : G →* N
⊢ map g (map f ⊤) = map (g.comp f) ⊤

tactic: exact (⊤ : Subgroup G).map_map g f
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁵ : Group G
inst✝⁴ : Group G'
inst✝³ : Group G''
A : Type u_4
inst✝² : AddGroup A
N : Type u_5
P : Type u_6
inst✝¹ : Group N
inst✝ : Group P
K : Subgroup G
g : N →* P
f : G →* N
⊢ map g (map f ⊤) = map (g.comp f) ⊤
state_after: no goals
Theorem: CategoryTheory.Limits.Fork.π_comp_hom
File: Mathlib/CategoryTheory/Limits/Shapes/Equalizers.lean

tactic: cases s
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
f✝ g : X ⟶ Y
s t : Cofork f✝ g
f : s ⟶ t
⊢ s.π ≫ f.hom = t.π
state_after: case mk
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f✝ g : X ⟶ Y
t : Cofork f✝ g
pt✝ : C
ι✝ : parallelPair f✝ g ⟶ (Functor.const WalkingParallelPair).obj pt✝
f : { pt := pt✝, ι := ι✝ } ⟶ t
⊢ Cofork.π { pt := pt✝, ι := ι✝ } ≫ f.hom = t.π

tactic: cases t
state_before: case mk
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f✝ g : X ⟶ Y
t : Cofork f✝ g
pt✝ : C
ι✝ : parallelPair f✝ g ⟶ (Functor.const WalkingParallelPair).obj pt✝
f : { pt := pt✝, ι := ι✝ } ⟶ t
⊢ Cofork.π { pt := pt✝, ι := ι✝ } ≫ f.hom = t.π
state_after: case mk.mk
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f✝ g : X ⟶ Y
pt✝¹ : C
ι✝¹ : parallelPair f✝ g ⟶ (Functor.const WalkingParallelPair).obj pt✝¹
pt✝ : C
ι✝ : parallelPair f✝ g ⟶ (Functor.const WalkingParallelPair).obj pt✝
f : { pt := pt✝¹, ι := ι✝¹ } ⟶ { pt := pt✝, ι := ι✝ }
⊢ Cofork.π { pt := pt✝¹, ι := ι✝¹ } ≫ f.hom = Cofork.π { pt := pt✝, ι := ι✝ }

tactic: cases f
state_before: case mk.mk
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f✝ g : X ⟶ Y
pt✝¹ : C
ι✝¹ : parallelPair f✝ g ⟶ (Functor.const WalkingParallelPair).obj pt✝¹
pt✝ : C
ι✝ : parallelPair f✝ g ⟶ (Functor.const WalkingParallelPair).obj pt✝
f : { pt := pt✝¹, ι := ι✝¹ } ⟶ { pt := pt✝, ι := ι✝ }
⊢ Cofork.π { pt := pt✝¹, ι := ι✝¹ } ≫ f.hom = Cofork.π { pt := pt✝, ι := ι✝ }
state_after: case mk.mk.mk
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f g : X ⟶ Y
pt✝¹ : C
ι✝¹ : parallelPair f g ⟶ (Functor.const WalkingParallelPair).obj pt✝¹
pt✝ : C
ι✝ : parallelPair f g ⟶ (Functor.const WalkingParallelPair).obj pt✝
hom✝ : { pt := pt✝¹, ι := ι✝¹ }.pt ⟶ { pt := pt✝, ι := ι✝ }.pt
w✝ : ∀ (j : WalkingParallelPair), { pt := pt✝¹, ι := ι✝¹ }.ι.app j ≫ hom✝ = { pt := pt✝, ι := ι✝ }.ι.app j
⊢ Cofork.π { pt := pt✝¹, ι := ι✝¹ } ≫ { hom := hom✝, w := w✝ }.hom = Cofork.π { pt := pt✝, ι := ι✝ }

tactic: aesop
state_before: case mk.mk.mk
C : Type u
inst✝ : Category.{v, u} C
X Y : C
f g : X ⟶ Y
pt✝¹ : C
ι✝¹ : parallelPair f g ⟶ (Functor.const WalkingParallelPair).obj pt✝¹
pt✝ : C
ι✝ : parallelPair f g ⟶ (Functor.const WalkingParallelPair).obj pt✝
hom✝ : { pt := pt✝¹, ι := ι✝¹ }.pt ⟶ { pt := pt✝, ι := ι✝ }.pt
w✝ : ∀ (j : WalkingParallelPair), { pt := pt✝¹, ι := ι✝¹ }.ι.app j ≫ hom✝ = { pt := pt✝, ι := ι✝ }.ι.app j
⊢ Cofork.π { pt := pt✝¹, ι := ι✝¹ } ≫ { hom := hom✝, w := w✝ }.hom = Cofork.π { pt := pt✝, ι := ι✝ }
state_after: no goals
Theorem: ZMod.χ₄_eq_neg_one_pow
File: Mathlib/NumberTheory/LegendreSymbol/ZModChar.lean

tactic: rw [χ₄_nat_eq_if_mod_four]
state_before: n : ℕ
hn : n % 2 = 1
⊢ χ₄ ↑n = (-1) ^ (n / 2)
state_after: n : ℕ
hn : n % 2 = 1
⊢ (if n % 2 = 0 then 0 else if n % 4 = 1 then 1 else -1) = (-1) ^ (n / 2)

tactic: simp only [hn, Nat.one_ne_zero, if_false]
state_before: n : ℕ
hn : n % 2 = 1
⊢ (if n % 2 = 0 then 0 else if n % 4 = 1 then 1 else -1) = (-1) ^ (n / 2)
state_after: n : ℕ
hn : n % 2 = 1
⊢ (if n % 4 = 1 then 1 else -1) = (-1) ^ (n / 2)

tactic: nth_rewrite 3 [← Nat.div_add_mod n 4]
state_before: n : ℕ
hn : n % 2 = 1
⊢ (if n % 4 = 1 then 1 else -1) = (-1) ^ (n / 2)
state_after: n : ℕ
hn : n % 2 = 1
⊢ (if n % 4 = 1 then 1 else -1) = (-1) ^ ((4 * (n / 4) + n % 4) / 2)

tactic: nth_rewrite 3 [show 4 = 2 * 2 by omega]
state_before: n : ℕ
hn : n % 2 = 1
⊢ (if n % 4 = 1 then 1 else -1) = (-1) ^ ((4 * (n / 4) + n % 4) / 2)
state_after: n : ℕ
hn : n % 2 = 1
⊢ (if n % 4 = 1 then 1 else -1) = (-1) ^ ((2 * 2 * (n / 4) + n % 4) / 2)

tactic: rw [mul_assoc, add_comm, Nat.add_mul_div_left _ _ zero_lt_two, pow_add, pow_mul,
  neg_one_sq, one_pow, mul_one]
state_before: n : ℕ
hn : n % 2 = 1
⊢ (if n % 4 = 1 then 1 else -1) = (-1) ^ ((2 * 2 * (n / 4) + n % 4) / 2)
state_after: n : ℕ
hn : n % 2 = 1
⊢ (if n % 4 = 1 then 1 else -1) = (-1) ^ (n % 4 / 2)

tactic: have help : ∀ m : ℕ, m < 4 → m % 2 = 1 → ite (m = 1) (1 : ℤ) (-1) = (-1) ^ (m / 2) := by decide
state_before: n : ℕ
hn : n % 2 = 1
⊢ (if n % 4 = 1 then 1 else -1) = (-1) ^ (n % 4 / 2)
state_after: n : ℕ
hn : n % 2 = 1
help : ∀ m < 4, m % 2 = 1 → (if m = 1 then 1 else -1) = (-1) ^ (m / 2)
⊢ (if n % 4 = 1 then 1 else -1) = (-1) ^ (n % 4 / 2)

tactic: exact help _ (Nat.mod_lt n (by omega)) <| (Nat.mod_mod_of_dvd n (by omega : 2 ∣ 4)).trans hn
state_before: n : ℕ
hn : n % 2 = 1
help : ∀ m < 4, m % 2 = 1 → (if m = 1 then 1 else -1) = (-1) ^ (m / 2)
⊢ (if n % 4 = 1 then 1 else -1) = (-1) ^ (n % 4 / 2)
state_after: no goals

tactic: omega
state_before: n : ℕ
hn : n % 2 = 1
⊢ 4 = 2 * 2
state_after: no goals

tactic: decide
state_before: n : ℕ
hn : n % 2 = 1
⊢ ∀ m < 4, m % 2 = 1 → (if m = 1 then 1 else -1) = (-1) ^ (m / 2)
state_after: no goals

tactic: omega
state_before: n : ℕ
hn : n % 2 = 1
help : ∀ m < 4, m % 2 = 1 → (if m = 1 then 1 else -1) = (-1) ^ (m / 2)
⊢ 4 > 0
state_after: no goals

tactic: omega
state_before: n : ℕ
hn : n % 2 = 1
help : ∀ m < 4, m % 2 = 1 → (if m = 1 then 1 else -1) = (-1) ^ (m / 2)
⊢ 2 ∣ 4
state_after: no goals
Theorem: Decidable.List.eq_or_ne_mem_of_mem
File: Mathlib/Data/List/Basic.lean

tactic: by_cases hab : a = b
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a b : α
l : List α
h : a ∈ b :: l
⊢ a = b ∨ a ≠ b ∧ a ∈ l
state_after: case pos
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a b : α
l : List α
h : a ∈ b :: l
hab : a = b
⊢ a = b ∨ a ≠ b ∧ a ∈ l

case neg
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a b : α
l : List α
h : a ∈ b :: l
hab : ¬a = b
⊢ a = b ∨ a ≠ b ∧ a ∈ l

tactic: exact Or.inl hab
state_before: case pos
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a b : α
l : List α
h : a ∈ b :: l
hab : a = b
⊢ a = b ∨ a ≠ b ∧ a ∈ l
state_after: no goals

tactic: exact ((List.mem_cons.1 h).elim Or.inl (fun h => Or.inr ⟨hab, h⟩))
state_before: case neg
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a b : α
l : List α
h : a ∈ b :: l
hab : ¬a = b
⊢ a = b ∨ a ≠ b ∧ a ∈ l
state_after: no goals
Theorem: differentiableAt_add_const_iff
File: Mathlib/Analysis/Calculus/FDeriv/Add.lean

tactic: simpa using h.add_const (-c)
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
c : F
h : DifferentiableAt 𝕜 (fun y => f y + c) x
⊢ DifferentiableAt 𝕜 f x
state_after: no goals
Theorem: Finset.sym2_mono
File: Mathlib/Data/Finset/Sym.lean

tactic: rw [← val_le_iff, sym2_val, sym2_val]
state_before: α : Type u_1
s t : Finset α
a b : α
h : s ⊆ t
⊢ s.sym2 ⊆ t.sym2
state_after: α : Type u_1
s t : Finset α
a b : α
h : s ⊆ t
⊢ s.val.sym2 ≤ t.val.sym2

tactic: apply Multiset.sym2_mono
state_before: α : Type u_1
s t : Finset α
a b : α
h : s ⊆ t
⊢ s.val.sym2 ≤ t.val.sym2
state_after: case h
α : Type u_1
s t : Finset α
a b : α
h : s ⊆ t
⊢ s.val ≤ t.val

tactic: rwa [val_le_iff]
state_before: case h
α : Type u_1
s t : Finset α
a b : α
h : s ⊆ t
⊢ s.val ≤ t.val
state_after: no goals
Theorem: Zspan.fundamentalDomain_reindex
File: Mathlib/Algebra/Module/Zlattice/Basic.lean

tactic: ext
state_before: E : Type u_1
ι : Type u_2
K : Type u_3
inst✝² : NormedLinearOrderedField K
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace K E
b : Basis ι K E
ι' : Type u_4
e : ι ≃ ι'
⊢ fundamentalDomain (b.reindex e) = fundamentalDomain b
state_after: case h
E : Type u_1
ι : Type u_2
K : Type u_3
inst✝² : NormedLinearOrderedField K
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace K E
b : Basis ι K E
ι' : Type u_4
e : ι ≃ ι'
x✝ : E
⊢ x✝ ∈ fundamentalDomain (b.reindex e) ↔ x✝ ∈ fundamentalDomain b

tactic: simp_rw [mem_fundamentalDomain, Basis.repr_reindex_apply]
state_before: case h
E : Type u_1
ι : Type u_2
K : Type u_3
inst✝² : NormedLinearOrderedField K
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace K E
b : Basis ι K E
ι' : Type u_4
e : ι ≃ ι'
x✝ : E
⊢ x✝ ∈ fundamentalDomain (b.reindex e) ↔ x✝ ∈ fundamentalDomain b
state_after: case h
E : Type u_1
ι : Type u_2
K : Type u_3
inst✝² : NormedLinearOrderedField K
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace K E
b : Basis ι K E
ι' : Type u_4
e : ι ≃ ι'
x✝ : E
⊢ (∀ (i : ι'), (b.repr x✝) (e.symm i) ∈ Set.Ico 0 1) ↔ ∀ (i : ι), (b.repr x✝) i ∈ Set.Ico 0 1

tactic: rw [Equiv.forall_congr' e]
state_before: case h
E : Type u_1
ι : Type u_2
K : Type u_3
inst✝² : NormedLinearOrderedField K
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace K E
b : Basis ι K E
ι' : Type u_4
e : ι ≃ ι'
x✝ : E
⊢ (∀ (i : ι'), (b.repr x✝) (e.symm i) ∈ Set.Ico 0 1) ↔ ∀ (i : ι), (b.repr x✝) i ∈ Set.Ico 0 1
state_after: case h
E : Type u_1
ι : Type u_2
K : Type u_3
inst✝² : NormedLinearOrderedField K
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace K E
b : Basis ι K E
ι' : Type u_4
e : ι ≃ ι'
x✝ : E
⊢ ∀ (b_1 : ι'), (b.repr x✝) (e.symm b_1) ∈ Set.Ico 0 1 ↔ (b.repr x✝) (e.symm b_1) ∈ Set.Ico 0 1

tactic: simp_rw [implies_true]
state_before: case h
E : Type u_1
ι : Type u_2
K : Type u_3
inst✝² : NormedLinearOrderedField K
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace K E
b : Basis ι K E
ι' : Type u_4
e : ι ≃ ι'
x✝ : E
⊢ ∀ (b_1 : ι'), (b.repr x✝) (e.symm b_1) ∈ Set.Ico 0 1 ↔ (b.repr x✝) (e.symm b_1) ∈ Set.Ico 0 1
state_after: no goals
Theorem: Ioi_mem_nhdsSet_Ioc
File: Mathlib/Topology/Order/NhdsSet.lean

tactic: simpa
state_before: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
a b c d : α
h : a ≤ b
⊢ Ioi a ∈ 𝓝ˢ (Ioi b)
state_after: no goals