ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: SimpleGraph.Subgraph.map_adj
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

Proof steps:
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : SimpleGraph W
f : G →g G'
H : G.Subgraph
⊢ ∀ {v w : W}, Relation.Map H.Adj (⇑f) (⇑f) v w → G'.Adj v w
state_after: case intro.intro.intro.intro
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : SimpleGraph W
f : G →g G'
H : G.Subgraph
u v : V
h : H.Adj u v
⊢ G'.Adj (f u) (f v)
tactic: rintro _ _ ⟨u, v, h, rfl, rfl⟩
state_before: case intro.intro.intro.intro
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : SimpleGraph W
f : G →g G'
H : G.Subgraph
u v : V
h : H.Adj u v
⊢ G'.Adj (f u) (f v)
state_after: no goals
tactic: exact f.map_rel (H.adj_sub h)
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : SimpleGraph W
f : G →g G'
H : G.Subgraph
⊢ ∀ {v w : W}, Relation.Map H.Adj (⇑f) (⇑f) v w → v ∈ ⇑f '' H.verts
state_after: case intro.intro.intro.intro
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : SimpleGraph W
f : G →g G'
H : G.Subgraph
u v : V
h : H.Adj u v
⊢ f u ∈ ⇑f '' H.verts
tactic: rintro _ _ ⟨u, v, h, rfl, rfl⟩
state_before: case intro.intro.intro.intro
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : SimpleGraph W
f : G →g G'
H : G.Subgraph
u v : V
h : H.Adj u v
⊢ f u ∈ ⇑f '' H.verts
state_after: no goals
tactic: exact Set.mem_image_of_mem _ (H.edge_vert h)
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : SimpleGraph W
f : G →g G'
H : G.Subgraph
⊢ Symmetric (Relation.Map H.Adj ⇑f ⇑f)
state_after: case intro.intro.intro.intro
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : SimpleGraph W
f : G →g G'
H : G.Subgraph
u v : V
h : H.Adj u v
⊢ Relation.Map H.Adj (⇑f) (⇑f) (f v) (f u)
tactic: rintro _ _ ⟨u, v, h, rfl, rfl⟩
state_before: case intro.intro.intro.intro
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
G' : SimpleGraph W
f : G →g G'
H : G.Subgraph
u v : V
h : H.Adj u v
⊢ Relation.Map H.Adj (⇑f) (⇑f) (f v) (f u)
state_after: no goals
tactic: exact ⟨v, u, H.symm h, rfl, rfl⟩
Theorem: MeasureTheory.StronglyMeasurable.integral_kernel_prod_right'
File: Mathlib/Probability/Kernel/MeasurableIntegral.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
κ : Kernel α β
η : Kernel (α × β) γ
a : α
E : Type u_4
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : IsSFiniteKernel κ
inst✝ : IsSFiniteKernel η
f : α × β → E
hf : StronglyMeasurable f
⊢ StronglyMeasurable fun x => ∫ (y : β), f (x, y) ∂κ x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
κ : Kernel α β
η : Kernel (α × β) γ
a : α
E : Type u_4
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : IsSFiniteKernel κ
inst✝ : IsSFiniteKernel η
f : α × β → E
hf : StronglyMeasurable (uncurry (Function.curry f))
⊢ StronglyMeasurable fun x => ∫ (y : β), f (x, y) ∂κ x
tactic: rw [← uncurry_curry f] at hf
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
κ : Kernel α β
η : Kernel (α × β) γ
a : α
E : Type u_4
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : IsSFiniteKernel κ
inst✝ : IsSFiniteKernel η
f : α × β → E
hf : StronglyMeasurable (uncurry (Function.curry f))
⊢ StronglyMeasurable fun x => ∫ (y : β), f (x, y) ∂κ x
state_after: no goals
tactic: exact hf.integral_kernel_prod_right
Theorem: Finset.map_subtype_embedding_Ioc
File: Mathlib/Order/Interval/Finset/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : LocallyFiniteOrder α
a b : Subtype p
hp : ∀ ⦃a b x : α⦄, a ≤ x → x ≤ b → p a → p b → p x
⊢ map (Embedding.subtype p) (Ioc a b) = Ioc ↑a ↑b
state_after: α : Type u_1
β : Type u_2
inst✝² : Preorder α
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : LocallyFiniteOrder α
a b : Subtype p
hp : ∀ ⦃a b x : α⦄, a ≤ x → x ≤ b → p a → p b → p x
⊢ map (Embedding.subtype p) (Finset.subtype p (Ioc ↑a ↑b)) = Ioc ↑a ↑b
tactic: rw [subtype_Ioc_eq]
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : LocallyFiniteOrder α
a b : Subtype p
hp : ∀ ⦃a b x : α⦄, a ≤ x → x ≤ b → p a → p b → p x
⊢ map (Embedding.subtype p) (Finset.subtype p (Ioc ↑a ↑b)) = Ioc ↑a ↑b
state_after: α : Type u_1
β : Type u_2
inst✝² : Preorder α
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : LocallyFiniteOrder α
a b : Subtype p
hp : ∀ ⦃a b x : α⦄, a ≤ x → x ≤ b → p a → p b → p x
x : α
hx : x ∈ Ioc ↑a ↑b
⊢ p x
tactic: refine Finset.subtype_map_of_mem fun x hx => ?_
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : LocallyFiniteOrder α
a b : Subtype p
hp : ∀ ⦃a b x : α⦄, a ≤ x → x ≤ b → p a → p b → p x
x : α
hx : x ∈ Ioc ↑a ↑b
⊢ p x
state_after: α : Type u_1
β : Type u_2
inst✝² : Preorder α
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : LocallyFiniteOrder α
a b : Subtype p
hp : ∀ ⦃a b x : α⦄, a ≤ x → x ≤ b → p a → p b → p x
x : α
hx : ↑a < x ∧ x ≤ ↑b
⊢ p x
tactic: rw [mem_Ioc] at hx
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
p : α → Prop
inst✝¹ : DecidablePred p
inst✝ : LocallyFiniteOrder α
a b : Subtype p
hp : ∀ ⦃a b x : α⦄, a ≤ x → x ≤ b → p a → p b → p x
x : α
hx : ↑a < x ∧ x ≤ ↑b
⊢ p x
state_after: no goals
tactic: exact hp hx.1.le hx.2 a.prop b.prop
Theorem: SimpleGraph.trace_adjMatrix
File: Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean

Proof steps:
state_before: V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝³ : DecidableRel G.Adj
inst✝² : Fintype V
inst✝¹ : AddCommMonoid α
inst✝ : One α
⊢ (adjMatrix α G).trace = 0
state_after: no goals
tactic: simp [Matrix.trace]
Theorem: ADEInequality.lt_three
File: Mathlib/NumberTheory/ADEInequality.lean

Proof steps:
state_before: p q r : ℕ+
hpq : p ≤ q
hqr : q ≤ r
H : 1 < sumInv {p, q, r}
⊢ p < 3
state_after: p q r : ℕ+
hpq : p ≤ q
hqr : q ≤ r
H : 1 < sumInv {p, q, r}
h3 : 0 < 3
⊢ p < 3
tactic: have h3 : (0 : ℚ) < 3 := by norm_num
state_before: p q r : ℕ+
hpq : p ≤ q
hqr : q ≤ r
H : 1 < sumInv {p, q, r}
h3 : 0 < 3
⊢ p < 3
state_after: p q r : ℕ+
hpq : p ≤ q
hqr : q ≤ r
h3 : 0 < 3
H : 3 ≤ p
⊢ sumInv {p, q, r} ≤ 1
tactic: contrapose! H
state_before: p q r : ℕ+
hpq : p ≤ q
hqr : q ≤ r
h3 : 0 < 3
H : 3 ≤ p
⊢ sumInv {p, q, r} ≤ 1
state_after: p q r : ℕ+
hpq : p ≤ q
hqr : q ≤ r
h3 : 0 < 3
H : 3 ≤ p
⊢ (↑↑p)⁻¹ + (↑↑q)⁻¹ + (↑↑r)⁻¹ ≤ 1
tactic: rw [sumInv_pqr]
state_before: p q r : ℕ+
hpq : p ≤ q
hqr : q ≤ r
h3 : 0 < 3
H : 3 ≤ p
⊢ (↑↑p)⁻¹ + (↑↑q)⁻¹ + (↑↑r)⁻¹ ≤ 1
state_after: p q r : ℕ+
hpq : p ≤ q
hqr : q ≤ r
h3 : 0 < 3
H : 3 ≤ p
h3q : 3 ≤ q
⊢ (↑↑p)⁻¹ + (↑↑q)⁻¹ + (↑↑r)⁻¹ ≤ 1
tactic: have h3q := H.trans hpq
state_before: p q r : ℕ+
hpq : p ≤ q
hqr : q ≤ r
h3 : 0 < 3
H : 3 ≤ p
h3q : 3 ≤ q
⊢ (↑↑p)⁻¹ + (↑↑q)⁻¹ + (↑↑r)⁻¹ ≤ 1
state_after: p q r : ℕ+
hpq : p ≤ q
hqr : q ≤ r
h3 : 0 < 3
H : 3 ≤ p
h3q : 3 ≤ q
h3r : 3 ≤ r
⊢ (↑↑p)⁻¹ + (↑↑q)⁻¹ + (↑↑r)⁻¹ ≤ 1
tactic: have h3r := h3q.trans hqr
state_before: p q r : ℕ+
hpq : p ≤ q
hqr : q ≤ r
h3 : 0 < 3
H : 3 ≤ p
h3q : 3 ≤ q
h3r : 3 ≤ r
hp : (↑↑p)⁻¹ ≤ 3⁻¹
hq : (↑↑q)⁻¹ ≤ 3⁻¹
hr : (↑↑r)⁻¹ ≤ 3⁻¹
⊢ (↑↑p)⁻¹ + (↑↑q)⁻¹ + (↑↑r)⁻¹ ≤ 1
state_after: no goals
tactic: calc
    (p : ℚ)⁻¹ + (q : ℚ)⁻¹ + (r : ℚ)⁻¹ ≤ 3⁻¹ + 3⁻¹ + 3⁻¹ := add_le_add (add_le_add hp hq) hr
    _ = 1 := by norm_num
Theorem: SignType.pos_iff
File: Mathlib/Data/Sign.lean

Proof steps:
state_before: a : SignType
⊢ 0 < a ↔ a = 1
state_after: no goals
tactic: cases a <;> decide
Theorem: WittVector.init_nsmul
File: Mathlib/RingTheory/WittVector/InitTail.lean

Proof steps:
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
m : ℕ
x : 𝕎 R
n : ℕ
⊢ init n (m • x) = init n (m • init n x)
state_after: no goals
tactic: init_ring using fun p [Fact (Nat.Prime p)] n => wittNSMul_vars p m n
Theorem: Subring.comap_map_eq
File: Mathlib/Algebra/Ring/Subring/Basic.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
inst✝² : Ring R
inst✝¹ : Ring S
inst✝ : Ring T
f : R →+* S
s : Subring R
⊢ comap f (map f s) = s ⊔ closure (⇑f ⁻¹' {0})
state_after: case a
R : Type u
S : Type v
T : Type w
inst✝² : Ring R
inst✝¹ : Ring S
inst✝ : Ring T
f : R →+* S
s : Subring R
⊢ comap f (map f s) ≤ s ⊔ closure (⇑f ⁻¹' {0})

case a
R : Type u
S : Type v
T : Type w
inst✝² : Ring R
inst✝¹ : Ring S
inst✝ : Ring T
f : R →+* S
s : Subring R
⊢ s ⊔ closure (⇑f ⁻¹' {0}) ≤ comap f (map f s)
tactic: apply le_antisymm
Theorem: _private.Mathlib.Data.Sign.0.SignType.le_antisymm
File: Mathlib/Data/Sign.lean

Proof steps:
state_before: a b : SignType
x✝¹ : a ≤ b
x✝ : b ≤ a
⊢ a = b
state_after: no goals
tactic: cases a <;> cases b <;> trivial
Theorem: Set.Nonempty.div_zero
File: Mathlib/Data/Set/Pointwise/Basic.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : GroupWithZero α
s t : Set α
hs : s.Nonempty
⊢ 0 ⊆ s / 0
state_after: no goals
tactic: simpa [mem_div] using hs
Theorem: AlgebraicGeometry.PresheafedSpace.map_comp_c_app
File: Mathlib/Geometry/RingedSpace/PresheafedSpace/HasColimits.lean

Proof steps:
state_before: J : Type u'
inst✝¹ : Category.{v', u'} J
C : Type u
inst✝ : Category.{v, u} C
F : J ⥤ PresheafedSpace C
j₁ j₂ j₃ : J
f : j₁ ⟶ j₂
g : j₂ ⟶ j₃
U : (Opens ↑↑(F.obj j₃))ᵒᵖ
⊢ (F.map (f ≫ g)).c.app U =
    (F.map g).c.app U ≫
      ((pushforward C (F.map g).base).map (F.map f).c).app U ≫ (pushforwardEq ⋯ (F.obj j₁).presheaf).hom.app U
state_after: no goals
tactic: simp [PresheafedSpace.congr_app (F.map_comp f g)]
Theorem: ContinuousMap.sup_mem_subalgebra_closure
File: Mathlib/Topology/ContinuousFunction/StoneWeierstrass.lean

Proof steps:
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
f g : ↥A
⊢ ↑f ⊔ ↑g ∈ A.topologicalClosure
state_after: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
f g : ↥A
⊢ 2⁻¹ • (↑f + ↑g + |↑g - ↑f|) ∈ A.topologicalClosure
tactic: rw [sup_eq_half_smul_add_add_abs_sub' ℝ]
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
f g : ↥A
⊢ 2⁻¹ • (↑f + ↑g + |↑g - ↑f|) ∈ A.topologicalClosure
state_after: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
f g : ↥A
⊢ |↑g - ↑f| ∈ A.topologicalClosure
tactic: refine
    A.topologicalClosure.smul_mem
      (A.topologicalClosure.add_mem
        (A.topologicalClosure.add_mem (A.le_topologicalClosure f.property)
          (A.le_topologicalClosure g.property))
        ?_)
      _
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
f g : ↥A
⊢ |↑g - ↑f| ∈ A.topologicalClosure
state_after: no goals
tactic: exact mod_cast abs_mem_subalgebra_closure A _
Theorem: AddMonoidAlgebra.mapDomain_mul
File: Mathlib/Algebra/MonoidAlgebra/Basic.lean

Proof steps:
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ mapDomain (⇑f) (x * y) = mapDomain (⇑f) x * mapDomain (⇑f) y
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ (sum x fun a b => sum y fun a_1 b_1 => single (f a + f a_1) (b * b_1)) =
    sum (mapDomain (⇑f) x) fun a₁ b₁ => sum (mapDomain (⇑f) y) fun a₂ b₂ => single (a₁ + a₂) (b₁ * b₂)
tactic: simp_rw [mul_def, mapDomain_sum, mapDomain_single, map_add]
state_before: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ (sum x fun a b => sum y fun a_1 b_1 => single (f a + f a_1) (b * b_1)) =
    sum (mapDomain (⇑f) x) fun a₁ b₁ => sum (mapDomain (⇑f) y) fun a₂ b₂ => single (a₁ + a₂) (b₁ * b₂)
state_after: k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ (sum x fun a b => sum y fun a_1 b_1 => single (f a + f a_1) (b * b_1)) =
    sum x fun a m => sum (mapDomain (⇑f) y) fun a₂ b₂ => single (f a + a₂) (m * b₂)

case h_zero
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ ∀ (b : α₂), (sum (mapDomain (⇑f) y) fun a₂ b₂ => single (b + a₂) (0 * b₂)) = 0

case h_add
k : Type u₁
G : Type u₂
H : Type u_1
R : Type u_2
inst✝⁵ : Semiring k
α : Type u_3
β : Type u_4
α₂ : Type u_5
inst✝⁴ : Semiring β
inst✝³ : Add α
inst✝² : Add α₂
F : Type u_6
inst✝¹ : FunLike F α α₂
inst✝ : AddHomClass F α α₂
f : F
x y : β[α]
⊢ ∀ (b : α₂) (m₁ m₂ : β),
    (sum (mapDomain (⇑f) y) fun a₂ b₂ => single (b + a₂) ((m₁ + m₂) * b₂)) =
      (sum (mapDomain (⇑f) y) fun a₂ b₂ => single (b + a₂) (m₁ * b₂)) +
        sum (mapDomain (⇑f) y) fun a₂ b₂ => single (b + a₂) (m₂ * b₂)
tactic: rw [Finsupp.sum_mapDomain_index]
Theorem: USize.le_size
File: .lake/packages/batteries/Batteries/Data/UInt.lean

Proof steps:
state_before: ⊢ 2 ^ 32 ≤ size
state_after: ⊢ 2 ^ 32 ≤ 2 ^ System.Platform.numBits
tactic: rw [size_eq]
state_before: ⊢ 2 ^ 32 ≤ 2 ^ System.Platform.numBits
state_after: ⊢ 32 ≤ System.Platform.numBits
tactic: apply Nat.pow_le_pow_of_le_right (by decide)
state_before: ⊢ 32 ≤ System.Platform.numBits
state_after: no goals
tactic: cases System.Platform.numBits_eq <;> simp_arith [*]
Theorem: Orientation.oangle_sign_neg_left
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

Proof steps:
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
⊢ (o.oangle (-x) y).sign = -(o.oangle x y).sign
state_after: case pos
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
hx : x = 0
⊢ (o.oangle (-x) y).sign = -(o.oangle x y).sign

case neg
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
hx : ¬x = 0
⊢ (o.oangle (-x) y).sign = -(o.oangle x y).sign
tactic: by_cases hx : x = 0
state_before: case neg
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
hx : ¬x = 0
⊢ (o.oangle (-x) y).sign = -(o.oangle x y).sign
state_after: case pos
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
hx : ¬x = 0
hy : y = 0
⊢ (o.oangle (-x) y).sign = -(o.oangle x y).sign

case neg
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
hx : ¬x = 0
hy : ¬y = 0
⊢ (o.oangle (-x) y).sign = -(o.oangle x y).sign
tactic: by_cases hy : y = 0
state_before: case neg
V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
hx : ¬x = 0
hy : ¬y = 0
⊢ (o.oangle (-x) y).sign = -(o.oangle x y).sign
state_after: no goals
tactic: rw [o.oangle_neg_left hx hy, Real.Angle.sign_add_pi]
Theorem: Stream'.get_odd
File: Mathlib/Data/Stream/Init.lean

Proof steps:
state_before: α : Type u
β : Type v
δ : Type w
n : ℕ
s : Stream' α
⊢ s.odd.get n = s.get (2 * n + 1)
state_after: α : Type u
β : Type v
δ : Type w
n : ℕ
s : Stream' α
⊢ s.tail.get (2 * n) = s.get (2 * n + 1)
tactic: rw [odd_eq, get_even]
state_before: α : Type u
β : Type v
δ : Type w
n : ℕ
s : Stream' α
⊢ s.tail.get (2 * n) = s.get (2 * n + 1)
state_after: no goals
tactic: rfl
Theorem: LinearMap.isIdempotentElem_apply_one_iff
File: Mathlib/LinearAlgebra/Span.lean

Proof steps:
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
f : Module.End R R
⊢ IsIdempotentElem (f 1) ↔ IsIdempotentElem f
state_after: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
f : Module.End R R
⊢ f (f 1) = f 1 ↔ ∀ (x : R), (f * f) x = f x
tactic: rw [IsIdempotentElem, ← smul_eq_mul, ← map_smul, smul_eq_mul, mul_one, IsIdempotentElem,
    LinearMap.ext_iff]
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
f : Module.End R R
⊢ f (f 1) = f 1 ↔ ∀ (x : R), (f * f) x = f x
state_after: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝² : Semiring R
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
f : Module.End R R
⊢ f (f 1) = f 1 ↔ ∀ (x : R), f (f x) = f x
tactic: simp_rw [mul_apply]
Theorem: Finset.noncommProd_insert_of_not_mem'
File: Mathlib/Data/Finset/NoncommProd.lean

Proof steps:
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : α → β → β
op : α → α → α
inst✝² : Monoid β
inst✝¹ : Monoid γ
inst✝ : DecidableEq α
s : Finset α
a : α
f : α → β
comm : (↑(insert a s)).Pairwise fun a b => Commute (f a) (f b)
ha : a ∉ s
⊢ (insert a s).noncommProd f comm = s.noncommProd f ⋯ * f a
state_after: no goals
tactic: simp only [← cons_eq_insert _ _ ha, noncommProd_cons']
Theorem: sdiff_inf_distrib
File: Mathlib/Order/Heyting/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a✝ b✝ c✝ d✝ a b c d : α
⊢ a \ (b ⊓ c) ≤ d ↔ a \ b ⊔ a \ c ≤ d
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a✝ b✝ c✝ d✝ a b c d : α
⊢ a \ d ≤ b ∧ a \ d ≤ c ↔ a \ b ≤ d ∧ a \ c ≤ d
tactic: rw [sup_le_iff, sdiff_le_comm, le_inf_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a✝ b✝ c✝ d✝ a b c d : α
⊢ a \ d ≤ b ∧ a \ d ≤ c ↔ a \ b ≤ d ∧ a \ c ≤ d
state_after: no goals
tactic: simp_rw [sdiff_le_comm]
Theorem: EMetric.infEdist_le_infEdist_add_edist
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t : Set α
Φ : α → β
⊢ ⨅ z ∈ s, edist y z + edist x y = (⨅ z ∈ s, edist y z) + edist x y
state_after: no goals
tactic: simp only [ENNReal.iInf_add]
Theorem: SemiNormedGrp₁.mkIso_inv
File: Mathlib/Analysis/Normed/Group/SemiNormedGrp.lean

Proof steps:
state_before: M N : SemiNormedGrp
f : M ≅ N
i : NormedAddGroupHom.NormNoninc f.hom
i' : NormedAddGroupHom.NormNoninc f.inv
⊢ mkHom f.hom i ≫ mkHom f.inv i' = 𝟙 (of ↑M)
state_after: case a
M N : SemiNormedGrp
f : M ≅ N
i : NormedAddGroupHom.NormNoninc f.hom
i' : NormedAddGroupHom.NormNoninc f.inv
⊢ ↑(mkHom f.hom i ≫ mkHom f.inv i') = ↑(𝟙 (of ↑M))
tactic: apply Subtype.eq
state_before: case a
M N : SemiNormedGrp
f : M ≅ N
i : NormedAddGroupHom.NormNoninc f.hom
i' : NormedAddGroupHom.NormNoninc f.inv
⊢ ↑(mkHom f.hom i ≫ mkHom f.inv i') = ↑(𝟙 (of ↑M))
state_after: no goals
tactic: exact f.hom_inv_id
state_before: M N : SemiNormedGrp
f : M ≅ N
i : NormedAddGroupHom.NormNoninc f.hom
i' : NormedAddGroupHom.NormNoninc f.inv
⊢ mkHom f.inv i' ≫ mkHom f.hom i = 𝟙 (of ↑N)
state_after: case a
M N : SemiNormedGrp
f : M ≅ N
i : NormedAddGroupHom.NormNoninc f.hom
i' : NormedAddGroupHom.NormNoninc f.inv
⊢ ↑(mkHom f.inv i' ≫ mkHom f.hom i) = ↑(𝟙 (of ↑N))
tactic: apply Subtype.eq
state_before: case a
M N : SemiNormedGrp
f : M ≅ N
i : NormedAddGroupHom.NormNoninc f.hom
i' : NormedAddGroupHom.NormNoninc f.inv
⊢ ↑(mkHom f.inv i' ≫ mkHom f.hom i) = ↑(𝟙 (of ↑N))
state_after: no goals
tactic: exact f.inv_hom_id
Theorem: AlgebraicGeometry.Scheme.OpenCover.gluedCover_t'
File: Mathlib/AlgebraicGeometry/Gluing.lean

Proof steps:
state_before: X : Scheme
𝒰 : X.OpenCover
x : 𝒰.J
⊢ (fun x y => (pullbackSymmetry (𝒰.map x) (𝒰.map y)).hom) x x =
    𝟙
      ((fun x =>
          match x with
          | (x, y) => pullback (𝒰.map x) (𝒰.map y))
        (x, x))
state_after: no goals
tactic: simp
state_before: X : Scheme
𝒰 : X.OpenCover
x y z : 𝒰.J
⊢ (fun x y z => 𝒰.gluedCoverT' x y z) x y z ≫
      pullback.snd ((fun x y => pullback.fst (𝒰.map x) (𝒰.map y)) y z)
        ((fun x y => pullback.fst (𝒰.map x) (𝒰.map y)) y x) =
    pullback.fst ((fun x y => pullback.fst (𝒰.map x) (𝒰.map y)) x y)
        ((fun x y => pullback.fst (𝒰.map x) (𝒰.map y)) x z) ≫
      (fun x y => (pullbackSymmetry (𝒰.map x) (𝒰.map y)).hom) x y
state_after: no goals
tactic: apply pullback.hom_ext <;> simp
Theorem: Polynomial.monic_scaleRoots_iff
File: Mathlib/RingTheory/Polynomial/ScaleRoots.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
A : Type u_3
K : Type u_4
inst✝¹ : Semiring R
inst✝ : Semiring S
p : R[X]
s : R
⊢ (p.scaleRoots s).Monic ↔ p.Monic
state_after: no goals
tactic: simp only [Monic, leadingCoeff, natDegree_scaleRoots, coeff_scaleRoots_natDegree]
Theorem: sSup_inf_eq
File: Mathlib/Order/CompleteBooleanAlgebra.lean

Proof steps:
state_before: α : Type u
β : Type v
ι : Sort w
κ : ι → Sort w'
inst✝ : Frame α
s t : Set α
a b : α
⊢ sSup s ⊓ b = ⨆ a ∈ s, a ⊓ b
state_after: no goals
tactic: simpa only [inf_comm] using @inf_sSup_eq α _ s b
Theorem: LinearMap.equivariantProjection_apply
File: Mathlib/RepresentationTheory/Maschke.lean

Proof steps:
state_before: k : Type u
inst✝¹¹ : CommRing k
G : Type u
inst✝¹⁰ : Group G
V : Type v
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module k V
inst✝⁷ : Module (MonoidAlgebra k G) V
inst✝⁶ : IsScalarTower k (MonoidAlgebra k G) V
W : Type w
inst✝⁵ : AddCommGroup W
inst✝⁴ : Module k W
inst✝³ : Module (MonoidAlgebra k G) W
inst✝² : IsScalarTower k (MonoidAlgebra k G) W
π : W →ₗ[k] V
i : V →ₗ[MonoidAlgebra k G] W
h : ∀ (v : V), π (i v) = v
inst✝¹ : Fintype G
inst✝ : Invertible ↑(Fintype.card G)
v : W
⊢ (equivariantProjection G π) v = ⅟↑(Fintype.card G) • ∑ g : G, (π.conjugate g) v
state_after: no goals
tactic: simp only [equivariantProjection, smul_apply, sumOfConjugatesEquivariant_apply]