1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: EuclideanGeometry.exists_circumcenter_eq_of_cospherical
File: Mathlib/Geometry/Euclidean/Circumcenter.lean

tactic: haveI : Nonempty (⊤ : AffineSubspace ℝ P) := Set.univ.nonempty
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ V = n
hc : Cospherical ps
⊢ ∃ c, ∀ (sx : Simplex ℝ P n), Set.range sx.points ⊆ ps → sx.circumcenter = c
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ V = n
hc : Cospherical ps
this : Nonempty ↥⊤
⊢ ∃ c, ∀ (sx : Simplex ℝ P n), Set.range sx.points ⊆ ps → sx.circumcenter = c

tactic: rw [← finrank_top, ← direction_top ℝ V P] at hd
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ V = n
hc : Cospherical ps
this : Nonempty ↥⊤
⊢ ∃ c, ∀ (sx : Simplex ℝ P n), Set.range sx.points ⊆ ps → sx.circumcenter = c
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ ↥⊤.direction = n
hc : Cospherical ps
this : Nonempty ↥⊤
⊢ ∃ c, ∀ (sx : Simplex ℝ P n), Set.range sx.points ⊆ ps → sx.circumcenter = c

tactic: refine exists_circumcenter_eq_of_cospherical_subset ?_ hd hc
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ ↥⊤.direction = n
hc : Cospherical ps
this : Nonempty ↥⊤
⊢ ∃ c, ∀ (sx : Simplex ℝ P n), Set.range sx.points ⊆ ps → sx.circumcenter = c
state_after: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ ↥⊤.direction = n
hc : Cospherical ps
this : Nonempty ↥⊤
⊢ ps ⊆ ↑⊤

tactic: exact Set.subset_univ _
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
ps : Set P
n : ℕ
inst✝ : FiniteDimensional ℝ V
hd : finrank ℝ ↥⊤.direction = n
hc : Cospherical ps
this : Nonempty ↥⊤
⊢ ps ⊆ ↑⊤
state_after: no goals
Theorem: SimpleGraph.Walk.IsPath.reverse
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: simpa [isPath_def] using h
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y u v : V
p : G.Walk u v
h : p.IsPath
⊢ p.reverse.IsPath
state_after: no goals
Theorem: Subring.coe_iInf
File: Mathlib/Algebra/Ring/Subring/Basic.lean

tactic: simp only [iInf, coe_sInf, Set.biInter_range]
state_before: R : Type u
S✝ : Type v
T : Type w
inst✝² : Ring R
inst✝¹ : Ring S✝
inst✝ : Ring T
ι : Sort u_1
S : ι → Subring R
⊢ ↑(⨅ i, S i) = ⋂ i, ↑(S i)
state_after: no goals
Theorem: List.chain'_range_succ
File: Mathlib/Data/List/Range.lean

tactic: rw [range_succ]
state_before: α : Type u
r : ℕ → ℕ → Prop
n : ℕ
⊢ Chain' r (range n.succ) ↔ ∀ m < n, r m m.succ
state_after: α : Type u
r : ℕ → ℕ → Prop
n : ℕ
⊢ Chain' r (range n ++ [n]) ↔ ∀ m < n, r m m.succ

tactic: induction' n with n hn
state_before: α : Type u
r : ℕ → ℕ → Prop
n : ℕ
⊢ Chain' r (range n ++ [n]) ↔ ∀ m < n, r m m.succ
state_after: case zero
α : Type u
r : ℕ → ℕ → Prop
⊢ Chain' r (range 0 ++ [0]) ↔ ∀ m < 0, r m m.succ

case succ
α : Type u
r : ℕ → ℕ → Prop
n : ℕ
hn : Chain' r (range n ++ [n]) ↔ ∀ m < n, r m m.succ
⊢ Chain' r (range (n + 1) ++ [n + 1]) ↔ ∀ m < n + 1, r m m.succ

tactic: simp
state_before: case zero
α : Type u
r : ℕ → ℕ → Prop
⊢ Chain' r (range 0 ++ [0]) ↔ ∀ m < 0, r m m.succ
state_after: no goals

tactic: rw [range_succ]
state_before: case succ
α : Type u
r : ℕ → ℕ → Prop
n : ℕ
hn : Chain' r (range n ++ [n]) ↔ ∀ m < n, r m m.succ
⊢ Chain' r (range (n + 1) ++ [n + 1]) ↔ ∀ m < n + 1, r m m.succ
state_after: case succ
α : Type u
r : ℕ → ℕ → Prop
n : ℕ
hn : Chain' r (range n ++ [n]) ↔ ∀ m < n, r m m.succ
⊢ Chain' r (range n ++ [n] ++ [n + 1]) ↔ ∀ m < n + 1, r m m.succ

tactic: simp only [append_assoc, singleton_append, chain'_append_cons_cons, chain'_singleton,
  and_true_iff]
state_before: case succ
α : Type u
r : ℕ → ℕ → Prop
n : ℕ
hn : Chain' r (range n ++ [n]) ↔ ∀ m < n, r m m.succ
⊢ Chain' r (range n ++ [n] ++ [n + 1]) ↔ ∀ m < n + 1, r m m.succ
state_after: case succ
α : Type u
r : ℕ → ℕ → Prop
n : ℕ
hn : Chain' r (range n ++ [n]) ↔ ∀ m < n, r m m.succ
⊢ Chain' r (range n ++ [n]) ∧ r n (n + 1) ↔ ∀ m < n + 1, r m m.succ

tactic: rw [hn, forall_lt_succ]
state_before: case succ
α : Type u
r : ℕ → ℕ → Prop
n : ℕ
hn : Chain' r (range n ++ [n]) ↔ ∀ m < n, r m m.succ
⊢ Chain' r (range n ++ [n]) ∧ r n (n + 1) ↔ ∀ m < n + 1, r m m.succ
state_after: no goals
Theorem: Nat.factorization_choose_le_one
File: Mathlib/Data/Nat/Choose/Factorization.lean

tactic: apply factorization_choose_le_log.trans
state_before: p n k : ℕ
p_large : n < p ^ 2
⊢ (n.choose k).factorization p ≤ 1
state_after: p n k : ℕ
p_large : n < p ^ 2
⊢ log p n ≤ 1

tactic: rcases eq_or_ne n 0 with (rfl | hn0)
state_before: p n k : ℕ
p_large : n < p ^ 2
⊢ log p n ≤ 1
state_after: case inl
p k : ℕ
p_large : 0 < p ^ 2
⊢ log p 0 ≤ 1

case inr
p n k : ℕ
p_large : n < p ^ 2
hn0 : n ≠ 0
⊢ log p n ≤ 1

tactic: exact Nat.lt_succ_iff.1 (log_lt_of_lt_pow hn0 p_large)
state_before: case inr
p n k : ℕ
p_large : n < p ^ 2
hn0 : n ≠ 0
⊢ log p n ≤ 1
state_after: no goals

tactic: simp
state_before: case inl
p k : ℕ
p_large : 0 < p ^ 2
⊢ log p 0 ≤ 1
state_after: no goals
Theorem: OrderIso.map_sInf_eq_sInf_symm_preimage
File: Mathlib/Order/CompleteLattice.lean

tactic: rw [map_sInf, ← sInf_image, f.image_eq_preimage]
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 : α
inst✝ : CompleteLattice β
f : α ≃o β
s : Set α
⊢ f (sInf s) = sInf (⇑f.symm ⁻¹' s)
state_after: no goals
Theorem: Submodule.orthogonal_orthogonal_eq_closure
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: refine le_antisymm ?_ ?_
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace E
⊢ Kᗮᗮ = K.topologicalClosure
state_after: case refine_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace E
⊢ Kᗮᗮ ≤ K.topologicalClosure

case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace E
⊢ K.topologicalClosure ≤ Kᗮᗮ

tactic: convert Submodule.orthogonal_orthogonal_monotone K.le_topologicalClosure using 1
state_before: case refine_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace E
⊢ Kᗮᗮ ≤ K.topologicalClosure
state_after: case h.e'_4
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace E
⊢ K.topologicalClosure = K.topologicalClosureᗮᗮ

tactic: rw [K.topologicalClosure.orthogonal_orthogonal]
state_before: case h.e'_4
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace E
⊢ K.topologicalClosure = K.topologicalClosureᗮᗮ
state_after: no goals

tactic: exact K.topologicalClosure_minimal K.le_orthogonal_orthogonal Kᗮ.isClosed_orthogonal
state_before: case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : _root_.RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace E
⊢ K.topologicalClosure ≤ Kᗮᗮ
state_after: no goals
Theorem: Polynomial.monic_toSubring
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: simp_rw [Monic, leadingCoeff, natDegree_toSubring, ← coeff_toSubring p T hp]
state_before: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
p : R[X]
T : Subring R
hp : ↑p.coeffs ⊆ ↑T
⊢ (p.toSubring T hp).Monic ↔ p.Monic
state_after: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
p : R[X]
T : Subring R
hp : ↑p.coeffs ⊆ ↑T
⊢ (p.toSubring T hp).coeff p.natDegree = 1 ↔ ↑((p.toSubring T hp).coeff p.natDegree) = 1

tactic: exact ⟨fun H => by rw [H, OneMemClass.coe_one], fun H => Subtype.coe_injective H⟩
state_before: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
p : R[X]
T : Subring R
hp : ↑p.coeffs ⊆ ↑T
⊢ (p.toSubring T hp).coeff p.natDegree = 1 ↔ ↑((p.toSubring T hp).coeff p.natDegree) = 1
state_after: no goals

tactic: rw [H, OneMemClass.coe_one]
state_before: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
p : R[X]
T : Subring R
hp : ↑p.coeffs ⊆ ↑T
H : (p.toSubring T hp).coeff p.natDegree = 1
⊢ ↑((p.toSubring T hp).coeff p.natDegree) = 1
state_after: no goals
Theorem: SimpleGraph.Walk.rotate_darts
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: simp only [rotate, darts_append]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y : V
inst✝ : DecidableEq V
u v : V
c : G.Walk v v
h : u ∈ c.support
⊢ (c.rotate h).darts ~r c.darts
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y : V
inst✝ : DecidableEq V
u v : V
c : G.Walk v v
h : u ∈ c.support
⊢ ((c.dropUntil u h).darts ++ (c.takeUntil u h).darts) ~r c.darts

tactic: apply List.IsRotated.trans List.isRotated_append
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y : V
inst✝ : DecidableEq V
u v : V
c : G.Walk v v
h : u ∈ c.support
⊢ ((c.dropUntil u h).darts ++ (c.takeUntil u h).darts) ~r c.darts
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y : V
inst✝ : DecidableEq V
u v : V
c : G.Walk v v
h : u ∈ c.support
⊢ ((c.takeUntil u h).darts ++ (c.dropUntil u h).darts) ~r c.darts

tactic: rw [← darts_append, take_spec]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w x y : V
inst✝ : DecidableEq V
u v : V
c : G.Walk v v
h : u ∈ c.support
⊢ ((c.takeUntil u h).darts ++ (c.dropUntil u h).darts) ~r c.darts
state_after: no goals
Theorem: CategoryTheory.IsPullback.inl_snd'
File: Mathlib/CategoryTheory/Limits/Shapes/CommSq.lean

tactic: refine of_right ?_ (by simp) (of_isBilimit h)
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
P X Y Z : C
fst : P ⟶ X
snd : P ⟶ Y
f : X ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
b : BinaryBicone X Y
h : b.IsBilimit
⊢ IsPullback b.inl 0 b.snd 0
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
P X Y Z : C
fst : P ⟶ X
snd : P ⟶ Y
f : X ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
b : BinaryBicone X Y
h : b.IsBilimit
⊢ IsPullback (b.inl ≫ b.fst) 0 0 (0 ≫ 0)

tactic: simp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
P X Y Z : C
fst : P ⟶ X
snd : P ⟶ Y
f : X ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
b : BinaryBicone X Y
h : b.IsBilimit
⊢ IsPullback (b.inl ≫ b.fst) 0 0 (0 ≫ 0)
state_after: no goals

tactic: simp
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
P X Y Z : C
fst : P ⟶ X
snd : P ⟶ Y
f : X ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
b : BinaryBicone X Y
h : b.IsBilimit
⊢ b.inl ≫ b.snd = 0 ≫ 0
state_after: no goals
Theorem: MeasureTheory.tilted_apply'
File: Mathlib/MeasureTheory/Measure/Tilted.lean

tactic: rw [Measure.tilted, withDensity_apply _ hs]
state_before: α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f✝ : α → ℝ
μ : Measure α
f : α → ℝ
s : Set α
hs : MeasurableSet s
⊢ (μ.tilted f) s = ∫⁻ (a : α) in s, ENNReal.ofReal (rexp (f a) / ∫ (x : α), rexp (f x) ∂μ) ∂μ
state_after: no goals
Theorem: Batteries.TransCmp.ge_trans
File: .lake/packages/batteries/Batteries/Classes/Order.lean

tactic: have := @TransCmp.le_trans _ cmp _ z y x
state_before: cmp✝ : ?m.2679 → ?m.2679 → Ordering
inst✝¹ : TransCmp cmp✝
x✝ : Sort ?u.2677
cmp : x✝ → x✝ → Ordering
inst✝ : TransCmp cmp
x y z : x✝
h₁ : cmp x y ≠ Ordering.lt
h₂ : cmp y z ≠ Ordering.lt
⊢ cmp x z ≠ Ordering.lt
state_after: cmp✝ : ?m.2679 → ?m.2679 → Ordering
inst✝¹ : TransCmp cmp✝
x✝ : Sort ?u.2677
cmp : x✝ → x✝ → Ordering
inst✝ : TransCmp cmp
x y z : x✝
h₁ : cmp x y ≠ Ordering.lt
h₂ : cmp y z ≠ Ordering.lt
this : cmp z y ≠ Ordering.gt → cmp y x ≠ Ordering.gt → cmp z x ≠ Ordering.gt
⊢ cmp x z ≠ Ordering.lt

tactic: simp [cmp_eq_gt] at *
state_before: cmp✝ : ?m.2679 → ?m.2679 → Ordering
inst✝¹ : TransCmp cmp✝
x✝ : Sort ?u.2677
cmp : x✝ → x✝ → Ordering
inst✝ : TransCmp cmp
x y z : x✝
h₁ : cmp x y ≠ Ordering.lt
h₂ : cmp y z ≠ Ordering.lt
this : cmp z y ≠ Ordering.gt → cmp y x ≠ Ordering.gt → cmp z x ≠ Ordering.gt
⊢ cmp x z ≠ Ordering.lt
state_after: cmp✝ : ?m.2679 → ?m.2679 → Ordering
inst✝¹ : TransCmp cmp✝
x✝ : Sort ?u.2677
cmp : x✝ → x✝ → Ordering
inst✝ : TransCmp cmp
x y z : x✝
h₁ : ¬cmp x y = Ordering.lt
h₂ : ¬cmp y z = Ordering.lt
this : ¬cmp y z = Ordering.lt → ¬cmp x y = Ordering.lt → ¬cmp x z = Ordering.lt
⊢ ¬cmp x z = Ordering.lt

tactic: exact this h₂ h₁
state_before: cmp✝ : ?m.2679 → ?m.2679 → Ordering
inst✝¹ : TransCmp cmp✝
x✝ : Sort ?u.2677
cmp : x✝ → x✝ → Ordering
inst✝ : TransCmp cmp
x y z : x✝
h₁ : ¬cmp x y = Ordering.lt
h₂ : ¬cmp y z = Ordering.lt
this : ¬cmp y z = Ordering.lt → ¬cmp x y = Ordering.lt → ¬cmp x z = Ordering.lt
⊢ ¬cmp x z = Ordering.lt
state_after: no goals
Theorem: MeasureTheory.Measure.restrict_prod_eq_prod_univ
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

tactic: have : ν = ν.restrict Set.univ := Measure.restrict_univ.symm
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SFinite ν
inst✝ : SFinite μ
s : Set α
⊢ (μ.restrict s).prod ν = (μ.prod ν).restrict (s ×ˢ univ)
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SFinite ν
inst✝ : SFinite μ
s : Set α
this : ν = ν.restrict univ
⊢ (μ.restrict s).prod ν = (μ.prod ν).restrict (s ×ˢ univ)

tactic: rw [this, Measure.prod_restrict, ← this]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SFinite ν
inst✝ : SFinite μ
s : Set α
this : ν = ν.restrict univ
⊢ (μ.restrict s).prod ν = (μ.prod ν).restrict (s ×ˢ univ)
state_after: no goals
Theorem: vsub_right_cancel
File: Mathlib/Algebra/AddTorsor.lean

tactic: refine vadd_left_cancel (p -ᵥ p₂) ?_
state_before: G : Type u_1
P : Type u_2
inst✝ : AddGroup G
T : AddTorsor G P
p₁ p₂ p : P
h : p -ᵥ p₁ = p -ᵥ p₂
⊢ p₁ = p₂
state_after: G : Type u_1
P : Type u_2
inst✝ : AddGroup G
T : AddTorsor G P
p₁ p₂ p : P
h : p -ᵥ p₁ = p -ᵥ p₂
⊢ p -ᵥ p₂ +ᵥ p₁ = p -ᵥ p₂ +ᵥ p₂

tactic: rw [vsub_vadd, ← h, vsub_vadd]
state_before: G : Type u_1
P : Type u_2
inst✝ : AddGroup G
T : AddTorsor G P
p₁ p₂ p : P
h : p -ᵥ p₁ = p -ᵥ p₂
⊢ p -ᵥ p₂ +ᵥ p₁ = p -ᵥ p₂ +ᵥ p₂
state_after: no goals
Theorem: Primrec.sum_casesOn
File: Mathlib/Computability/Primrec.lean

tactic: cases' f a with b c <;> simp [Nat.div2_val, encodek]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α → β ⊕ γ
g : α → β → σ
h : α → γ → σ
hf : Primrec f
hg : Primrec₂ g
hh : Primrec₂ h
a : α
⊢ (bif (encode (f a)).bodd then Option.map (h a) (decode (encode (f a)).div2)
    else Option.map (g a) (decode (encode (f a)).div2)) =
    some (Sum.casesOn (f a) (g a) (h a))
state_after: no goals
Theorem: Option.exists_ne_none
File: Mathlib/Data/Option/Basic.lean

tactic: simp only [← exists_prop, bex_ne_none]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
p : Option α → Prop
⊢ (∃ x, x ≠ none ∧ p x) ↔ ∃ x, p (some x)
state_after: no goals
Theorem: ContinuousLinearMap.fderivWithin
File: Mathlib/Analysis/Calculus/FDeriv/Linear.lean

tactic: rw [DifferentiableAt.fderivWithin e.differentiableAt hxs]
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
hxs : UniqueDiffWithinAt 𝕜 s x
⊢ fderivWithin 𝕜 (⇑e) s x = e
state_after: 𝕜 : 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
hxs : UniqueDiffWithinAt 𝕜 s x
⊢ fderiv 𝕜 (⇑e) x = e

tactic: exact e.fderiv
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
hxs : UniqueDiffWithinAt 𝕜 s x
⊢ fderiv 𝕜 (⇑e) x = e
state_after: no goals
Theorem: ENNReal.continuous_sub_left
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: refine continuousOn_sub.comp_continuous (Continuous.Prod.mk a) fun x => ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
a : ℝ≥0∞
a_ne_top : a ≠ ⊤
⊢ Continuous (uncurry Sub.sub ∘ fun x => (a, x))
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
a : ℝ≥0∞
a_ne_top : a ≠ ⊤
x : ℝ≥0∞
⊢ (a, x) ∈ {p | p ≠ (⊤, ⊤)}

tactic: simp only [a_ne_top, Ne, mem_setOf_eq, Prod.mk.inj_iff, false_and_iff, not_false_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x✝ y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
a : ℝ≥0∞
a_ne_top : a ≠ ⊤
x : ℝ≥0∞
⊢ (a, x) ∈ {p | p ≠ (⊤, ⊤)}
state_after: no goals
Theorem: MeasureTheory.SignedMeasure.integrable_rnDeriv
File: Mathlib/MeasureTheory/Decomposition/SignedLebesgue.lean

tactic: constructor
state_before: case refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ Integrable (fun x => (s.toJordanDecomposition.negPart.rnDeriv μ x).toReal) μ
state_after: case refine_2.left
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ AEStronglyMeasurable (fun x => (s.toJordanDecomposition.negPart.rnDeriv μ x).toReal) μ

case refine_2.right
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ HasFiniteIntegral (fun x => (s.toJordanDecomposition.negPart.rnDeriv μ x).toReal) μ

tactic: exact hasFiniteIntegral_toReal_of_lintegral_ne_top (lintegral_rnDeriv_lt_top _ μ).ne
state_before: case refine_2.right
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ HasFiniteIntegral (fun x => (s.toJordanDecomposition.negPart.rnDeriv μ x).toReal) μ
state_after: no goals

tactic: exact (((Measure.measurable_rnDeriv _ μ
  ).ennreal_toNNReal).coe_nnreal_real).aestronglyMeasurable
state_before: case refine_2.left
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s✝ t s : SignedMeasure α
μ : Measure α
⊢ AEStronglyMeasurable (fun x => (s.toJordanDecomposition.negPart.rnDeriv μ x).toReal) μ
state_after: no goals
Theorem: fundSystem_mk
File: Mathlib/NumberTheory/NumberField/Units/DirichletTheorem.lean

tactic: rw [fundSystem, Equiv.apply_eq_iff_eq_symm_apply, @Quotient.mk_eq_iff_out,
  Quotient.out', Quotient.out_equiv_out]
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
i : Fin (rank K)
⊢ Additive.ofMul ⟦fundSystem K i⟧ = (basisModTorsion K) i
state_after: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
i : Fin (rank K)
⊢ Additive.toMul ((basisModTorsion K) i) = Additive.ofMul.symm ((basisModTorsion K) i)

tactic: rfl
state_before: K : Type u_1
inst✝² : Field K
inst✝¹ inst✝ : NumberField K
i : Fin (rank K)
⊢ Additive.toMul ((basisModTorsion K) i) = Additive.ofMul.symm ((basisModTorsion K) i)
state_after: no goals
Theorem: CategoryTheory.ShortComplex.Exact.isZero_X₂
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: have := hS.mono_g hf
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.73517, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S : ShortComplex C
hS : S.Exact
hf : S.f = 0
hg : S.g = 0
⊢ IsZero S.X₂
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.73517, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S : ShortComplex C
hS : S.Exact
hf : S.f = 0
hg : S.g = 0
this : Mono S.g
⊢ IsZero S.X₂

tactic: rw [IsZero.iff_id_eq_zero, ← cancel_mono S.g, hg, comp_zero, comp_zero]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.73517, u_2} D
inst✝¹ : Preadditive C
inst✝ : Preadditive D
S : ShortComplex C
hS : S.Exact
hf : S.f = 0
hg : S.g = 0
this : Mono S.g
⊢ IsZero S.X₂
state_after: no goals
Theorem: div_nonneg_iff
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: simp [division_def, mul_nonneg_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
⊢ 0 ≤ a / b ↔ 0 ≤ a ∧ 0 ≤ b ∨ a ≤ 0 ∧ b ≤ 0
state_after: no goals
Theorem: List.takeWhile_idem
File: Mathlib/Data/List/Basic.lean

tactic: simp_rw [takeWhile_takeWhile, and_self_iff, Bool.decide_coe]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
p : α → Bool
l : List α
⊢ takeWhile p (takeWhile p l) = takeWhile p l
state_after: no goals
Theorem: neg_of_smul_neg_right
File: Mathlib/Algebra/Order/Module/Defs.lean

tactic: rwa [zero_smul]
state_before: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝⁵ : Zero α
inst✝⁴ : Zero β
inst✝³ : SMulWithZero α β
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : SMulPosReflectLT α β
h : a • b < 0
hb : 0 ≤ b
⊢ a • b < 0 • b
state_after: no goals