1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Subgroup.closure_mul_image_eq_top
File: Mathlib/GroupTheory/Schreier.lean

tactic: rw [eq_top_iff, ← map_subtype_le_map_subtype, MonoidHom.map_closure, Set.image_image]
state_before: G : Type u_1
inst✝ : Group G
H : Subgroup G
R S : Set G
hR : R ∈ rightTransversals ↑H
hR1 : 1 ∈ R
hS : closure S = ⊤
⊢ closure ((fun g => ⟨g * (↑(toFun hR g))⁻¹, ⋯⟩) '' (R * S)) = ⊤
state_after: G : Type u_1
inst✝ : Group G
H : Subgroup G
R S : Set G
hR : R ∈ rightTransversals ↑H
hR1 : 1 ∈ R
hS : closure S = ⊤
⊢ map H.subtype ⊤ ≤ closure ((fun x => H.subtype ⟨x * (↑(toFun hR x))⁻¹, ⋯⟩) '' (R * S))

tactic: exact (map_subtype_le ⊤).trans (ge_of_eq (closure_mul_image_eq hR hR1 hS))
state_before: G : Type u_1
inst✝ : Group G
H : Subgroup G
R S : Set G
hR : R ∈ rightTransversals ↑H
hR1 : 1 ∈ R
hS : closure S = ⊤
⊢ map H.subtype ⊤ ≤ closure ((fun x => H.subtype ⟨x * (↑(toFun hR x))⁻¹, ⋯⟩) '' (R * S))
state_after: no goals
Theorem: BoxIntegral.Prepartition.IsPartition.compl_eq_bot
File: Mathlib/Analysis/BoxIntegral/Partition/Split.lean

tactic: rw [← iUnion_eq_empty, iUnion_compl, h.iUnion_eq, diff_self]
state_before: ι : Type u_1
M : Type u_2
n : ℕ
I J : Box ι
i : ι
x : ℝ
inst✝ : Finite ι
π : Prepartition I
h : π.IsPartition
⊢ π.compl = ⊥
state_after: no goals
Theorem: dimH_image_le_of_locally_lipschitzOn
File: Mathlib/Topology/MetricSpace/HausdorffDimension.lean

tactic: have : ∀ x ∈ s, ∃ C : ℝ≥0, ∃ t ∈ 𝓝[s] x, HolderOnWith C 1 f t := by
  simpa only [holderOnWith_one] using hf
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
C K r : ℝ≥0
f✝ : X → Y
s✝ t : Set X
inst✝ : SecondCountableTopology X
f : X → Y
s : Set X
hf : ∀ x ∈ s, ∃ C, ∃ t ∈ 𝓝[s] x, LipschitzOnWith C f t
⊢ dimH (f '' s) ≤ dimH s
state_after: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
C K r : ℝ≥0
f✝ : X → Y
s✝ t : Set X
inst✝ : SecondCountableTopology X
f : X → Y
s : Set X
hf : ∀ x ∈ s, ∃ C, ∃ t ∈ 𝓝[s] x, LipschitzOnWith C f t
this : ∀ x ∈ s, ∃ C, ∃ t ∈ 𝓝[s] x, HolderOnWith C 1 f t
⊢ dimH (f '' s) ≤ dimH s

tactic: simpa only [ENNReal.coe_one, div_one] using dimH_image_le_of_locally_holder_on zero_lt_one this
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
C K r : ℝ≥0
f✝ : X → Y
s✝ t : Set X
inst✝ : SecondCountableTopology X
f : X → Y
s : Set X
hf : ∀ x ∈ s, ∃ C, ∃ t ∈ 𝓝[s] x, LipschitzOnWith C f t
this : ∀ x ∈ s, ∃ C, ∃ t ∈ 𝓝[s] x, HolderOnWith C 1 f t
⊢ dimH (f '' s) ≤ dimH s
state_after: no goals

tactic: simpa only [holderOnWith_one] using hf
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝² : EMetricSpace X
inst✝¹ : EMetricSpace Y
C K r : ℝ≥0
f✝ : X → Y
s✝ t : Set X
inst✝ : SecondCountableTopology X
f : X → Y
s : Set X
hf : ∀ x ∈ s, ∃ C, ∃ t ∈ 𝓝[s] x, LipschitzOnWith C f t
⊢ ∀ x ∈ s, ∃ C, ∃ t ∈ 𝓝[s] x, HolderOnWith C 1 f t
state_after: no goals
Theorem: QuotientMap.continuous_iff
File: Mathlib/Topology/Maps.lean

tactic: rw [continuous_iff_coinduced_le, continuous_iff_coinduced_le, hf.right, coinduced_compose]
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
hf : QuotientMap f
⊢ Continuous g ↔ Continuous (g ∘ f)
state_after: no goals
Theorem: LinearMap.isNilpotent_mulRight_iff
File: Mathlib/RingTheory/Nilpotent/Lemmas.lean

tactic: constructor <;> rintro ⟨n, hn⟩ <;> use n <;>
    simp only [mulRight_eq_zero_iff, pow_mulRight] at hn ⊢ <;>
  exact hn
state_before: R : Type u_1
S : Type u_2
x y : R
A : Type v
inst✝² : CommSemiring R
inst✝¹ : Semiring A
inst✝ : Algebra R A
a : A
⊢ IsNilpotent (mulRight R a) ↔ IsNilpotent a
state_after: no goals
Theorem: MeasureTheory.Measure.toSignedMeasure_zero
File: Mathlib/MeasureTheory/Measure/VectorMeasure.lean

tactic: ext i
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
⊢ toSignedMeasure 0 = 0
state_after: case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
i : Set α
a✝ : MeasurableSet i
⊢ ↑(toSignedMeasure 0) i = ↑0 i

tactic: simp
state_before: case h
α : Type u_1
β : Type u_2
m : MeasurableSpace α
i : Set α
a✝ : MeasurableSet i
⊢ ↑(toSignedMeasure 0) i = ↑0 i
state_after: no goals
Theorem: Int.bit_coe_nat
File: Mathlib/Data/Int/Bitwise.lean

tactic: rw [bit_val, Nat.bit_val]
state_before: b : Bool
n : ℕ
⊢ bit b ↑n = ↑(Nat.bit b n)
state_after: b : Bool
n : ℕ
⊢ (2 * ↑n + bif b then 1 else 0) = ↑(2 * n + bif b then 1 else 0)

tactic: cases b <;> rfl
state_before: b : Bool
n : ℕ
⊢ (2 * ↑n + bif b then 1 else 0) = ↑(2 * n + bif b then 1 else 0)
state_after: no goals
Theorem: IsLocalMinOn.hasFDerivWithinAt_nonneg
File: Mathlib/Analysis/Calculus/LocalExtr/Basic.lean

tactic: simpa using h.neg.hasFDerivWithinAt_nonpos hf.neg hy
state_before: E : Type u
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f : E → ℝ
a : E
f' : E →L[ℝ] ℝ
s : Set E
h : IsLocalMinOn f s a
hf : HasFDerivWithinAt f f' s a
y : E
hy : y ∈ posTangentConeAt s a
⊢ 0 ≤ f' y
state_after: no goals
Theorem: Inducing.closure_eq_preimage_closure_image
File: Mathlib/Topology/Maps.lean

tactic: ext x
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
hf : Inducing f
s : Set X
⊢ closure s = f ⁻¹' closure (f '' s)
state_after: case h
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
hf : Inducing f
s : Set X
x : X
⊢ x ∈ closure s ↔ x ∈ f ⁻¹' closure (f '' s)

tactic: rw [Set.mem_preimage, ← closure_induced, hf.induced]
state_before: case h
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
hf : Inducing f
s : Set X
x : X
⊢ x ∈ closure s ↔ x ∈ f ⁻¹' closure (f '' s)
state_after: no goals
Theorem: AddChar.not_isPrimitive_mulShift
File: Mathlib/NumberTheory/LegendreSymbol/AddCharacter.lean

tactic: simp only [IsPrimitive, not_forall]
state_before: R : Type u
inst✝² : CommRing R
R' : Type v
inst✝¹ : CommMonoid R'
inst✝ : Finite R
e : AddChar R R'
r : R
hr : ¬IsUnit r
⊢ ¬(e.mulShift r).IsPrimitive
state_after: R : Type u
inst✝² : CommRing R
R' : Type v
inst✝¹ : CommMonoid R'
inst✝ : Finite R
e : AddChar R R'
r : R
hr : ¬IsUnit r
⊢ ∃ x, ∃ (_ : x ≠ 0), ¬(e.mulShift r).mulShift x ≠ 1

tactic: simp only [isUnit_iff_mem_nonZeroDivisors_of_finite, mem_nonZeroDivisors_iff, not_forall] at hr
state_before: R : Type u
inst✝² : CommRing R
R' : Type v
inst✝¹ : CommMonoid R'
inst✝ : Finite R
e : AddChar R R'
r : R
hr : ¬IsUnit r
⊢ ∃ x, ∃ (_ : x ≠ 0), ¬(e.mulShift r).mulShift x ≠ 1
state_after: R : Type u
inst✝² : CommRing R
R' : Type v
inst✝¹ : CommMonoid R'
inst✝ : Finite R
e : AddChar R R'
r : R
hr : ∃ x, ∃ (_ : x * r = 0), ¬x = 0
⊢ ∃ x, ∃ (_ : x ≠ 0), ¬(e.mulShift r).mulShift x ≠ 1

tactic: rcases hr with ⟨x, h, h'⟩
state_before: R : Type u
inst✝² : CommRing R
R' : Type v
inst✝¹ : CommMonoid R'
inst✝ : Finite R
e : AddChar R R'
r : R
hr : ∃ x, ∃ (_ : x * r = 0), ¬x = 0
⊢ ∃ x, ∃ (_ : x ≠ 0), ¬(e.mulShift r).mulShift x ≠ 1
state_after: case intro.intro
R : Type u
inst✝² : CommRing R
R' : Type v
inst✝¹ : CommMonoid R'
inst✝ : Finite R
e : AddChar R R'
r x : R
h : x * r = 0
h' : ¬x = 0
⊢ ∃ x, ∃ (_ : x ≠ 0), ¬(e.mulShift r).mulShift x ≠ 1

tactic: exact ⟨x, h', by simp only [mulShift_mulShift, mul_comm r, h, mulShift_zero, not_ne_iff]⟩
state_before: case intro.intro
R : Type u
inst✝² : CommRing R
R' : Type v
inst✝¹ : CommMonoid R'
inst✝ : Finite R
e : AddChar R R'
r x : R
h : x * r = 0
h' : ¬x = 0
⊢ ∃ x, ∃ (_ : x ≠ 0), ¬(e.mulShift r).mulShift x ≠ 1
state_after: no goals

tactic: simp only [mulShift_mulShift, mul_comm r, h, mulShift_zero, not_ne_iff]
state_before: R : Type u
inst✝² : CommRing R
R' : Type v
inst✝¹ : CommMonoid R'
inst✝ : Finite R
e : AddChar R R'
r x : R
h : x * r = 0
h' : ¬x = 0
⊢ ¬(e.mulShift r).mulShift x ≠ 1
state_after: no goals
Theorem: Set.indicator_mul
File: Mathlib/Algebra/GroupWithZero/Indicator.lean

tactic: funext
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
⊢ (s.indicator fun i => f i * g i) = fun i => s.indicator f i * s.indicator g i
state_after: case h
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
x✝ : ι
⊢ s.indicator (fun i => f i * g i) x✝ = s.indicator f x✝ * s.indicator g x✝

tactic: simp only [indicator]
state_before: case h
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
x✝ : ι
⊢ s.indicator (fun i => f i * g i) x✝ = s.indicator f x✝ * s.indicator g x✝
state_after: case h
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
x✝ : ι
⊢ (if x✝ ∈ s then f x✝ * g x✝ else 0) = (if x✝ ∈ s then f x✝ else 0) * if x✝ ∈ s then g x✝ else 0

tactic: split_ifs
state_before: case h
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
x✝ : ι
⊢ (if x✝ ∈ s then f x✝ * g x✝ else 0) = (if x✝ ∈ s then f x✝ else 0) * if x✝ ∈ s then g x✝ else 0
state_after: case pos
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
x✝ : ι
h✝ : x✝ ∈ s
⊢ f x✝ * g x✝ = f x✝ * g x✝

case neg
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
x✝ : ι
h✝ : x✝ ∉ s
⊢ 0 = 0 * 0

tactic: rw [mul_zero]
state_before: case neg
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
x✝ : ι
h✝ : x✝ ∉ s
⊢ 0 = 0 * 0
state_after: no goals

tactic: rfl
state_before: case pos
ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝ : MulZeroClass M₀
s✝ t : Set ι
f✝ g✝ : ι → M₀
i : ι
s : Set ι
f g : ι → M₀
x✝ : ι
h✝ : x✝ ∈ s
⊢ f x✝ * g x✝ = f x✝ * g x✝
state_after: no goals
Theorem: Subsemiring.coe_pow
File: Mathlib/Algebra/Ring/Subsemiring/Basic.lean

tactic: induction' n with n ih
state_before: R✝ : Type u
S : Type v
T : Type w
inst✝³ : NonAssocSemiring R✝
M : Submonoid R✝
inst✝² : NonAssocSemiring S
inst✝¹ : NonAssocSemiring T
s✝ : Subsemiring R✝
R : Type u_1
inst✝ : Semiring R
s : Subsemiring R
x : ↥s
n : ℕ
⊢ ↑(x ^ n) = ↑x ^ n
state_after: case zero
R✝ : Type u
S : Type v
T : Type w
inst✝³ : NonAssocSemiring R✝
M : Submonoid R✝
inst✝² : NonAssocSemiring S
inst✝¹ : NonAssocSemiring T
s✝ : Subsemiring R✝
R : Type u_1
inst✝ : Semiring R
s : Subsemiring R
x : ↥s
⊢ ↑(x ^ 0) = ↑x ^ 0

case succ
R✝ : Type u
S : Type v
T : Type w
inst✝³ : NonAssocSemiring R✝
M : Submonoid R✝
inst✝² : NonAssocSemiring S
inst✝¹ : NonAssocSemiring T
s✝ : Subsemiring R✝
R : Type u_1
inst✝ : Semiring R
s : Subsemiring R
x : ↥s
n : ℕ
ih : ↑(x ^ n) = ↑x ^ n
⊢ ↑(x ^ (n + 1)) = ↑x ^ (n + 1)

tactic: simp
state_before: case zero
R✝ : Type u
S : Type v
T : Type w
inst✝³ : NonAssocSemiring R✝
M : Submonoid R✝
inst✝² : NonAssocSemiring S
inst✝¹ : NonAssocSemiring T
s✝ : Subsemiring R✝
R : Type u_1
inst✝ : Semiring R
s : Subsemiring R
x : ↥s
⊢ ↑(x ^ 0) = ↑x ^ 0
state_after: no goals

tactic: simp [pow_succ, ih]
state_before: case succ
R✝ : Type u
S : Type v
T : Type w
inst✝³ : NonAssocSemiring R✝
M : Submonoid R✝
inst✝² : NonAssocSemiring S
inst✝¹ : NonAssocSemiring T
s✝ : Subsemiring R✝
R : Type u_1
inst✝ : Semiring R
s : Subsemiring R
x : ↥s
n : ℕ
ih : ↑(x ^ n) = ↑x ^ n
⊢ ↑(x ^ (n + 1)) = ↑x ^ (n + 1)
state_after: no goals
Theorem: ContDiffWithinAt.dist
File: Mathlib/Analysis/InnerProductSpace/Calculus.lean

tactic: simp only [dist_eq_norm]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : _root_.RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
inst✝² : NormedSpace ℝ E
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
f g : G → E
f' g' : G →L[ℝ] E
s : Set G
x : G
n : ℕ∞
hf : ContDiffWithinAt ℝ n f s x
hg : ContDiffWithinAt ℝ n g s x
hne : f x ≠ g x
⊢ ContDiffWithinAt ℝ n (fun y => Dist.dist (f y) (g y)) s x
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : _root_.RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
inst✝² : NormedSpace ℝ E
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
f g : G → E
f' g' : G →L[ℝ] E
s : Set G
x : G
n : ℕ∞
hf : ContDiffWithinAt ℝ n f s x
hg : ContDiffWithinAt ℝ n g s x
hne : f x ≠ g x
⊢ ContDiffWithinAt ℝ n (fun y => ‖f y - g y‖) s x

tactic: exact (hf.sub hg).norm 𝕜 (sub_ne_zero.2 hne)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁷ : _root_.RCLike 𝕜
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : InnerProductSpace 𝕜 E
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
inst✝² : NormedSpace ℝ E
G : Type u_4
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace ℝ G
f g : G → E
f' g' : G →L[ℝ] E
s : Set G
x : G
n : ℕ∞
hf : ContDiffWithinAt ℝ n f s x
hg : ContDiffWithinAt ℝ n g s x
hne : f x ≠ g x
⊢ ContDiffWithinAt ℝ n (fun y => ‖f y - g y‖) s x
state_after: no goals
Theorem: ContinuousLinearMap.adjointAux_inner_right
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

tactic: rw [← inner_conj_symm, adjointAux_inner_left, inner_conj_symm]
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
A : E →L[𝕜] F
x : E
y : F
⊢ ⟪x, (adjointAux A) y⟫_𝕜 = ⟪A x, y⟫_𝕜
state_after: no goals
Theorem: EuclideanGeometry.dist_div_cos_oangle_right_of_oangle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Oriented/RightAngle.lean

tactic: have hs : (∡ p₂ p₃ p₁).sign = 1 := by rw [oangle_rotate_sign, h, Real.Angle.sign_coe_pi_div_two]
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)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
⊢ dist p₃ p₂ / (∡ p₂ p₃ p₁).cos = dist p₁ p₃
state_after: 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)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
hs : (∡ p₂ p₃ p₁).sign = 1
⊢ dist p₃ p₂ / (∡ p₂ p₃ p₁).cos = dist p₁ p₃

tactic: rw [oangle_eq_angle_of_sign_eq_one hs, Real.Angle.cos_coe,
  dist_div_cos_angle_of_angle_eq_pi_div_two (angle_eq_pi_div_two_of_oangle_eq_pi_div_two h)
    (Or.inr (right_ne_of_oangle_eq_pi_div_two h))]
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)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
hs : (∡ p₂ p₃ p₁).sign = 1
⊢ dist p₃ p₂ / (∡ p₂ p₃ p₁).cos = dist p₁ p₃
state_after: no goals

tactic: rw [oangle_rotate_sign, h, Real.Angle.sign_coe_pi_div_two]
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)
p₁ p₂ p₃ : P
h : ∡ p₁ p₂ p₃ = ↑(π / 2)
⊢ (∡ p₂ p₃ p₁).sign = 1
state_after: no goals
Theorem: IsRelPrime.ne_zero_or_ne_zero
File: Mathlib/Algebra/GroupWithZero/Divisibility.lean

tactic: rintro rfl rfl
state_before: α : Type u_1
inst✝¹ : CommMonoidWithZero α
x y : α
inst✝ : Nontrivial α
h : IsRelPrime x y
⊢ x = 0 → y ≠ 0
state_after: α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : Nontrivial α
h : IsRelPrime 0 0
⊢ False

tactic: exact not_isRelPrime_zero_zero h
state_before: α : Type u_1
inst✝¹ : CommMonoidWithZero α
inst✝ : Nontrivial α
h : IsRelPrime 0 0
⊢ False
state_after: no goals
Theorem: OrdinalApprox.lfp_mem_range_lfpApprox
File: Mathlib/SetTheory/Ordinal/FixedPointApproximants.lean

tactic: use ord <| succ #α
state_before: α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
⊢ lfp f ∈ Set.range (lfpApprox f ⊥)
state_after: case h
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
⊢ lfpApprox f ⊥ (succ #α).ord = lfp f

tactic: exact lfpApprox_ord_eq_lfp f
state_before: case h
α : Type u
inst✝ : CompleteLattice α
f : α →o α
x : α
⊢ lfpApprox f ⊥ (succ #α).ord = lfp f
state_after: no goals
Theorem: EuclideanGeometry.Sphere.ne_iff
File: Mathlib/Geometry/Euclidean/Sphere/Basic.lean

tactic: rw [← not_and_or, ← Sphere.ext_iff]
state_before: V : Type u_1
P : Type u_2
inst✝ : MetricSpace P
s₁ s₂ : Sphere P
⊢ s₁ ≠ s₂ ↔ s₁.center ≠ s₂.center ∨ s₁.radius ≠ s₂.radius
state_after: no goals
Theorem: ascPochhammer_succ_right
File: Mathlib/RingTheory/Polynomial/Pochhammer.lean

tactic: suffices h : ascPochhammer ℕ (n + 1) = ascPochhammer ℕ n * (X + (n : ℕ[X])) by
  apply_fun Polynomial.map (algebraMap ℕ S) at h
  simpa only [ascPochhammer_map, Polynomial.map_mul, Polynomial.map_add, map_X,
    Polynomial.map_natCast] using h
state_before: S : Type u
inst✝ : Semiring S
n : ℕ
⊢ ascPochhammer S (n + 1) = ascPochhammer S n * (X + ↑n)
state_after: S : Type u
inst✝ : Semiring S
n : ℕ
⊢ ascPochhammer ℕ (n + 1) = ascPochhammer ℕ n * (X + ↑n)

tactic: induction' n with n ih
state_before: S : Type u
inst✝ : Semiring S
n : ℕ
⊢ ascPochhammer ℕ (n + 1) = ascPochhammer ℕ n * (X + ↑n)
state_after: case zero
S : Type u
inst✝ : Semiring S
⊢ ascPochhammer ℕ (0 + 1) = ascPochhammer ℕ 0 * (X + ↑0)

case succ
S : Type u
inst✝ : Semiring S
n : ℕ
ih : ascPochhammer ℕ (n + 1) = ascPochhammer ℕ n * (X + ↑n)
⊢ ascPochhammer ℕ (n + 1 + 1) = ascPochhammer ℕ (n + 1) * (X + ↑(n + 1))

tactic: apply_fun Polynomial.map (algebraMap ℕ S) at h
state_before: S : Type u
inst✝ : Semiring S
n : ℕ
h : ascPochhammer ℕ (n + 1) = ascPochhammer ℕ n * (X + ↑n)
⊢ ascPochhammer S (n + 1) = ascPochhammer S n * (X + ↑n)
state_after: S : Type u
inst✝ : Semiring S
n : ℕ
h : map (algebraMap ℕ S) (ascPochhammer ℕ (n + 1)) = map (algebraMap ℕ S) (ascPochhammer ℕ n * (X + ↑n))
⊢ ascPochhammer S (n + 1) = ascPochhammer S n * (X + ↑n)

tactic: simpa only [ascPochhammer_map, Polynomial.map_mul, Polynomial.map_add, map_X,
  Polynomial.map_natCast] using h
state_before: S : Type u
inst✝ : Semiring S
n : ℕ
h : map (algebraMap ℕ S) (ascPochhammer ℕ (n + 1)) = map (algebraMap ℕ S) (ascPochhammer ℕ n * (X + ↑n))
⊢ ascPochhammer S (n + 1) = ascPochhammer S n * (X + ↑n)
state_after: no goals

tactic: simp
state_before: case zero
S : Type u
inst✝ : Semiring S
⊢ ascPochhammer ℕ (0 + 1) = ascPochhammer ℕ 0 * (X + ↑0)
state_after: no goals

tactic: conv_lhs =>
  rw [ascPochhammer_succ_left, ih, mul_comp, ← mul_assoc, ← ascPochhammer_succ_left, add_comp,
      X_comp, natCast_comp, add_assoc, add_comm (1 : ℕ[X]), ← Nat.cast_succ]
state_before: case succ
S : Type u
inst✝ : Semiring S
n : ℕ
ih : ascPochhammer ℕ (n + 1) = ascPochhammer ℕ n * (X + ↑n)
⊢ ascPochhammer ℕ (n + 1 + 1) = ascPochhammer ℕ (n + 1) * (X + ↑(n + 1))
state_after: no goals
Theorem: RatFunc.num_div_dvd'
File: Mathlib/FieldTheory/RatFunc/Basic.lean

tactic: simpa using num_div_dvd p hq
state_before: K : Type u
inst✝ : Field K
p q : K[X]
hq : q ≠ 0
⊢ C (q / gcd p q).leadingCoeff⁻¹ * (p / gcd p q) ∣ p
state_after: no goals
Theorem: SetTheory.PGame.moveRight_nim_hEq
File: Mathlib/SetTheory/Game/Nim.lean

tactic: rw [nim_def]
state_before: o : Ordinal.{u_1}
⊢ let_fun this := ⋯;
  HEq (nim o).moveRight fun i => nim (typein (fun x x_1 => x < x_1) i)
state_after: o : Ordinal.{u_1}
⊢ let_fun this := ⋯;
  HEq
    (mk (Quotient.out o).α (Quotient.out o).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)) fun o₂ =>
        nim (typein (fun x x_1 => x < x_1) o₂)).moveRight
    fun i => nim (typein (fun x x_1 => x < x_1) i)

tactic: rfl
state_before: o : Ordinal.{u_1}
⊢ let_fun this := ⋯;
  HEq
    (mk (Quotient.out o).α (Quotient.out o).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)) fun o₂ =>
        nim (typein (fun x x_1 => x < x_1) o₂)).moveRight
    fun i => nim (typein (fun x x_1 => x < x_1) i)
state_after: no goals
Theorem: Finset.mem_image_const
File: Mathlib/Data/Finset/Image.lean

tactic: rw [mem_image]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
⊢ c ∈ image (const α b) s ↔ s.Nonempty ∧ b = c
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
⊢ (∃ a ∈ s, const α b a = c) ↔ s.Nonempty ∧ b = c

tactic: simp only [exists_prop, const_apply, exists_and_right]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
⊢ (∃ a ∈ s, const α b a = c) ↔ s.Nonempty ∧ b = c
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
⊢ (∃ x, x ∈ s) ∧ b = c ↔ s.Nonempty ∧ b = c

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq β
f g : α → β
s : Finset α
t : Finset β
a : α
b c : β
⊢ (∃ x, x ∈ s) ∧ b = c ↔ s.Nonempty ∧ b = c
state_after: no goals
Theorem: hasDerivAt_tsum
File: Mathlib/Analysis/Calculus/SmoothSeries.lean

tactic: exact hasDerivAt_tsum_of_isPreconnected hu isOpen_univ isPreconnected_univ
  (fun n y _ => hg n y) (fun n y _ => hg' n y) (mem_univ _) hg0 (mem_univ _)
state_before: α : Type u_1
β : Type u_2
𝕜 : Type u_3
E : Type u_4
F : Type u_5
inst✝⁵ : RCLike 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace 𝕜 E
inst✝² : NormedAddCommGroup F
inst✝¹ : CompleteSpace F
u : α → ℝ
inst✝ : NormedSpace 𝕜 F
f : α → E → F
f' : α → E → E →L[𝕜] F
g g' : α → 𝕜 → F
v : ℕ → α → ℝ
s : Set E
t : Set 𝕜
x₀ x : E
y₀ y✝ : 𝕜
N : ℕ∞
hu : Summable u
hg : ∀ (n : α) (y : 𝕜), HasDerivAt (g n) (g' n y) y
hg' : ∀ (n : α) (y : 𝕜), ‖g' n y‖ ≤ u n
hg0 : Summable fun n => g n y₀
y : 𝕜
⊢ HasDerivAt (fun z => ∑' (n : α), g n z) (∑' (n : α), g' n y) y
state_after: no goals
Theorem: Pretrivialization.target_inter_preimage_symm_source_eq
File: Mathlib/Topology/FiberBundle/Trivialization.lean

tactic: rw [inter_comm, f.target_eq, e.source_eq, f.preimage_symm_proj_inter]
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝¹ : TopologicalSpace B
inst✝ : TopologicalSpace F
proj : Z → B
e✝ : Pretrivialization F proj
x : Z
e f : Pretrivialization F proj
⊢ f.target ∩ ↑f.symm ⁻¹' e.source = (e.baseSet ∩ f.baseSet) ×ˢ univ
state_after: no goals
Theorem: Set.iInter_eq_empty_iff
File: Mathlib/Data/Set/Lattice.lean

tactic: simp [Set.eq_empty_iff_forall_not_mem]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : ι → Set α
⊢ ⋂ i, f i = ∅ ↔ ∀ (x : α), ∃ i, x ∉ f i
state_after: no goals
Theorem: HilbertBasis.coe_mk
File: Mathlib/Analysis/InnerProductSpace/l2Space.lean

tactic: apply funext <| Orthonormal.linearIsometryEquiv_symm_apply_single_one hv hsp
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : RCLike 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
v : ι → E
hv : Orthonormal 𝕜 v
hsp : ⊤ ≤ (span 𝕜 (Set.range v)).topologicalClosure
⊢ (fun i => (HilbertBasis.mk hv hsp).repr.symm (lp.single 2 i 1)) = v
state_after: no goals