ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: List.prod_rotate_eq_one_of_prod_eq_one
File: Mathlib/Algebra/BigOperators/Group/List.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : Group G
x✝¹ : [].prod = 1
x✝ : ℕ
⊢ ([].rotate x✝).prod = 1
state_after: no goals
tactic: simp
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : Group G
a : G
l : List G
hl : (a :: l).prod = 1
n : ℕ
⊢ ((a :: l).rotate n).prod = 1
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : Group G
a : G
l : List G
hl : (a :: l).prod = 1
n : ℕ
this : n % (a :: l).length ≤ (a :: l).length
⊢ ((a :: l).rotate n).prod = 1
tactic: have : n % List.length (a :: l) ≤ List.length (a :: l) := le_of_lt (Nat.mod_lt _ (by simp))
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : Group G
a : G
l : List G
hl : (a :: l).prod = 1
n : ℕ
this : n % (a :: l).length ≤ (a :: l).length
⊢ ((a :: l).rotate n).prod = 1
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : Group G
a : G
l : List G
n : ℕ
hl : (take (n % (a :: l).length) (a :: l) ++ drop (n % (a :: l).length) (a :: l)).prod = 1
this : n % (a :: l).length ≤ (a :: l).length
⊢ ((a :: l).rotate n).prod = 1
tactic: rw [← List.take_append_drop (n % List.length (a :: l)) (a :: l)] at hl
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
inst✝ : Group G
a : G
l : List G
n : ℕ
hl : (take (n % (a :: l).length) (a :: l) ++ drop (n % (a :: l).length) (a :: l)).prod = 1
this : n % (a :: l).length ≤ (a :: l).length
⊢ ((a :: l).rotate n).prod = 1
state_after: no goals
tactic: rw [← rotate_mod, rotate_eq_drop_append_take this, List.prod_append, mul_eq_one_iff_inv_eq,
      ← one_mul (List.prod _)⁻¹, ← hl, List.prod_append, mul_assoc, mul_inv_self, mul_one]
Theorem: isClosed_setOf_clusterPt
File: Mathlib/Topology/Basic.lean

Proof steps:
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
f : Filter X
⊢ IsClosed {x | ClusterPt x f}
state_after: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
f : Filter X
⊢ IsClosed (⋂ i, {x | (¬∀ᶠ (x : X) in 𝓝 x, i x) ∨ ∃ᶠ (x : X) in f, i x})
tactic: simp only [ClusterPt, inf_neBot_iff_frequently_left, setOf_forall, imp_iff_not_or]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
f : Filter X
⊢ IsClosed (⋂ i, {x | (¬∀ᶠ (x : X) in 𝓝 x, i x) ∨ ∃ᶠ (x : X) in f, i x})
state_after: case refine_1
X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p✝ p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
f : Filter X
p : X → Prop
⊢ IsOpen fun x => (𝓝 x).sets {x | (fun x => p x) x}

case refine_2
X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p✝ p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
f : Filter X
p : X → Prop
⊢ IsOpen fun x => f.sets {x | (fun x => ¬(fun x => p x) x) x}
tactic: refine isClosed_iInter fun p => IsClosed.union ?_ ?_ <;> apply isClosed_compl_iff.2
state_before: case refine_1
X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p✝ p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
f : Filter X
p : X → Prop
⊢ IsOpen fun x => (𝓝 x).sets {x | (fun x => p x) x}

case refine_2
X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p✝ p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
f : Filter X
p : X → Prop
⊢ IsOpen fun x => f.sets {x | (fun x => ¬(fun x => p x) x) x}
state_after: no goals
tactic: exacts [isOpen_setOf_eventually_nhds, isOpen_const]
Theorem: MeasureTheory.integral_map
File: Mathlib/MeasureTheory/Integral/Bochner.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : SMulCommClass ℝ 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : CompleteSpace F
G : Type u_5
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
f✝ g✝ : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
ν : Measure α
β : Type u_7
inst✝ : MeasurableSpace β
φ : α → β
hφ : AEMeasurable φ μ
f : β → G
hfm : AEStronglyMeasurable f (Measure.map φ μ)
g : β → G := AEStronglyMeasurable.mk f hfm
⊢ ∫ (y : β), g y ∂Measure.map φ μ = ∫ (y : β), g y ∂Measure.map (AEMeasurable.mk φ hφ) μ
state_after: case e_μ
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : SMulCommClass ℝ 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : CompleteSpace F
G : Type u_5
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
f✝ g✝ : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
ν : Measure α
β : Type u_7
inst✝ : MeasurableSpace β
φ : α → β
hφ : AEMeasurable φ μ
f : β → G
hfm : AEStronglyMeasurable f (Measure.map φ μ)
g : β → G := AEStronglyMeasurable.mk f hfm
⊢ Measure.map φ μ = Measure.map (AEMeasurable.mk φ hφ) μ
tactic: congr 1
state_before: case e_μ
α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝¹² : NormedAddCommGroup E
inst✝¹¹ : NormedSpace ℝ E
hE : CompleteSpace E
inst✝¹⁰ : NontriviallyNormedField 𝕜
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : SMulCommClass ℝ 𝕜 E
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace ℝ F
inst✝⁵ : CompleteSpace F
G : Type u_5
inst✝⁴ : NormedAddCommGroup G
inst✝³ : NormedSpace ℝ G
f✝ g✝ : α → E
m : MeasurableSpace α
μ : Measure α
X : Type u_6
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
ν : Measure α
β : Type u_7
inst✝ : MeasurableSpace β
φ : α → β
hφ : AEMeasurable φ μ
f : β → G
hfm : AEStronglyMeasurable f (Measure.map φ μ)
g : β → G := AEStronglyMeasurable.mk f hfm
⊢ Measure.map φ μ = Measure.map (AEMeasurable.mk φ hφ) μ
state_after: no goals
tactic: exact Measure.map_congr hφ.ae_eq_mk
Theorem: CochainComplex.HomComplex.Cocycle.homOf_f
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplex.lean

Proof steps:
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
z : Cocycle F G 0
⊢ ∀ (i j : ℤ), (ComplexShape.up ℤ).Rel i j → (fun i => (↑z).v i i ⋯) i ≫ G.d i j = F.d i j ≫ (fun i => (↑z).v i i ⋯) j
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
z : Cocycle F G 0
i : ℤ
⊢ (fun i => (↑z).v i i ⋯) i ≫ G.d i (i + 1) = F.d i (i + 1) ≫ (fun i => (↑z).v i i ⋯) (i + 1)
tactic: rintro i j rfl
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m : ℤ
z : Cocycle F G 0
i : ℤ
⊢ (fun i => (↑z).v i i ⋯) i ≫ G.d i (i + 1) = F.d i (i + 1) ≫ (fun i => (↑z).v i i ⋯) (i + 1)
state_after: case mk
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m i : ℤ
z : Cochain F G 0
hz : z ∈ cocycle F G 0
⊢ (fun i => (↑⟨z, hz⟩).v i i ⋯) i ≫ G.d i (i + 1) = F.d i (i + 1) ≫ (fun i => (↑⟨z, hz⟩).v i i ⋯) (i + 1)
tactic: rcases z with ⟨z, hz⟩
state_before: case mk
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m i : ℤ
z : Cochain F G 0
hz : z ∈ cocycle F G 0
⊢ (fun i => (↑⟨z, hz⟩).v i i ⋯) i ≫ G.d i (i + 1) = F.d i (i + 1) ≫ (fun i => (↑⟨z, hz⟩).v i i ⋯) (i + 1)
state_after: case mk
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m i : ℤ
z : Cochain F G 0
hz : z ∈ cocycle F G 0
⊢ z.v i i ⋯ ≫ G.d i (i + 1) = F.d i (i + 1) ≫ z.v (i + 1) (i + 1) ⋯
tactic: dsimp
state_before: case mk
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m i : ℤ
z : Cochain F G 0
hz : z ∈ cocycle F G 0
⊢ z.v i i ⋯ ≫ G.d i (i + 1) = F.d i (i + 1) ≫ z.v (i + 1) (i + 1) ⋯
state_after: case mk
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m i : ℤ
z : Cochain F G 0
hz : δ 0 1 z = 0
⊢ z.v i i ⋯ ≫ G.d i (i + 1) = F.d i (i + 1) ≫ z.v (i + 1) (i + 1) ⋯
tactic: rw [mem_iff 0 1 (zero_add 1)] at hz
state_before: case mk
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
F G K L : CochainComplex C ℤ
n m i : ℤ
z : Cochain F G 0
hz : δ 0 1 z = 0
⊢ z.v i i ⋯ ≫ G.d i (i + 1) = F.d i (i + 1) ≫ z.v (i + 1) (i + 1) ⋯
state_after: no goals
tactic: simpa only [δ_zero_cochain_v, Cochain.zero_v, sub_eq_zero]
      using Cochain.congr_v hz i (i + 1) rfl
Theorem: IsGalois.of_card_aut_eq_finrank
File: Mathlib/FieldTheory/Galois.lean

Proof steps:
state_before: F : Type u_1
inst✝³ : Field F
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : FiniteDimensional F E
h : Fintype.card (E ≃ₐ[F] E) = finrank F E
⊢ IsGalois F E
state_after: case h
F : Type u_1
inst✝³ : Field F
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : FiniteDimensional F E
h : Fintype.card (E ≃ₐ[F] E) = finrank F E
⊢ IntermediateField.fixedField ⊤ = ⊥
tactic: apply of_fixedField_eq_bot
state_before: case h
F : Type u_1
inst✝³ : Field F
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : FiniteDimensional F E
h : Fintype.card (E ≃ₐ[F] E) = finrank F E
⊢ IntermediateField.fixedField ⊤ = ⊥
state_after: case h
F : Type u_1
inst✝³ : Field F
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : FiniteDimensional F E
h : Fintype.card (E ≃ₐ[F] E) = finrank F E
p : 0 < finrank (↥(IntermediateField.fixedField ⊤)) E
⊢ IntermediateField.fixedField ⊤ = ⊥
tactic: have p : 0 < finrank (IntermediateField.fixedField (⊤ : Subgroup (E ≃ₐ[F] E))) E := finrank_pos
state_before: case h
F : Type u_1
inst✝³ : Field F
E : Type u_2
inst✝² : Field E
inst✝¹ : Algebra F E
inst✝ : FiniteDimensional F E
h : Fintype.card (E ≃ₐ[F] E) = finrank F E
p : 0 < finrank (↥(IntermediateField.fixedField ⊤)) E
⊢ IntermediateField.fixedField ⊤ = ⊥
state_after: no goals
tactic: classical
  rw [← IntermediateField.finrank_eq_one_iff, ← mul_left_inj' (ne_of_lt p).symm,
    finrank_mul_finrank, ← h, one_mul, IntermediateField.finrank_fixedField_eq_card]
  apply Fintype.card_congr
  exact
    { toFun := fun g => ⟨g, Subgroup.mem_top g⟩
      invFun := (↑)
      left_inv := fun g => rfl
      right_inv := fun _ => by ext; rfl }
Theorem: jacobiSym.zero_right
File: Mathlib/NumberTheory/LegendreSymbol/JacobiSymbol.lean

Proof steps:
state_before: a : ℤ
⊢ J(a | 0) = 1
state_after: no goals
tactic: simp only [jacobiSym, primeFactorsList_zero, List.prod_nil, List.pmap]
Theorem: ContinuousWithinAt.diff_iff
File: Mathlib/Topology/ContinuousOn.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι : Type u_5
π : ι → Type u_6
inst✝³ : (i : ι) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α → β
s t : Set α
x : α
ht : ContinuousWithinAt f t x
h : ContinuousWithinAt f (s \ t) x
⊢ s ⊆ s \ t ∪ t
state_after: no goals
tactic: simp only [diff_union_self, subset_union_left]
Theorem: Real.exp_bound
File: Mathlib/Data/Complex/Exponential.lean

Proof steps:
state_before: x : ℝ
hx : |x| ≤ 1
n : ℕ
hn : 0 < n
⊢ |rexp x - ∑ m ∈ range n, x ^ m / ↑m.factorial| ≤ |x| ^ n * (↑n.succ / (↑n.factorial * ↑n))
state_after: x : ℝ
hx : |x| ≤ 1
n : ℕ
hn : 0 < n
hxc : Complex.abs ↑x ≤ 1
⊢ |rexp x - ∑ m ∈ range n, x ^ m / ↑m.factorial| ≤ |x| ^ n * (↑n.succ / (↑n.factorial * ↑n))
tactic: have hxc : Complex.abs x ≤ 1 := mod_cast hx
state_before: x : ℝ
hx : |x| ≤ 1
n : ℕ
hn : 0 < n
hxc : Complex.abs ↑x ≤ 1
⊢ |rexp x - ∑ m ∈ range n, x ^ m / ↑m.factorial| ≤ |x| ^ n * (↑n.succ / (↑n.factorial * ↑n))
state_after: no goals
tactic: convert exp_bound hxc hn using 2 <;>
  -- Porting note: was `norm_cast`
  simp only [← abs_ofReal, ← ofReal_sub, ← ofReal_exp, ← ofReal_sum, ← ofReal_pow,
    ← ofReal_div, ← ofReal_natCast]
Theorem: ProbabilityTheory.Kernel.lintegral_swapRight
File: Mathlib/Probability/Kernel/Composition.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g✝ : γ → α
κ : Kernel α (β × γ)
a : α
g : γ × β → ℝ≥0∞
hg : Measurable g
⊢ ∫⁻ (c : γ × β), g c ∂κ.swapRight a = ∫⁻ (bc : β × γ), g bc.swap ∂κ a
state_after: no goals
tactic: rw [swapRight, lintegral_map _ measurable_swap a hg]
Theorem: Ordnode.all_balanceL
File: Mathlib/Data/Ordmap/Ordset.lean

Proof steps:
state_before: α : Type u_1
P : α → Prop
l : Ordnode α
x : α
r : Ordnode α
hl : l.Balanced
hr : r.Balanced
sl : l.Sized
sr : r.Sized
H : (∃ l', Raised l' l.size ∧ BalancedSz l' r.size) ∨ ∃ r', Raised r.size r' ∧ BalancedSz l.size r'
⊢ All P (l.balanceL x r) ↔ All P l ∧ P x ∧ All P r
state_after: no goals
tactic: rw [balanceL_eq_balance' hl hr sl sr H, all_balance']
Theorem: lt_one_div
File: Mathlib/Algebra/Order/Field/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
ha : 0 < a
hb : 0 < b
⊢ a < 1 / b ↔ b < 1 / a
state_after: no goals
tactic: simpa using lt_inv ha hb
Theorem: Seminorm.continuous_of_le
File: Mathlib/Analysis/Seminorm.lean

Proof steps:
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : TopologicalAddGroup E
p q : Seminorm 𝕝 E
hq : Continuous ⇑q
hpq : p ≤ q
⊢ Continuous ⇑p
state_after: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : TopologicalAddGroup E
p q : Seminorm 𝕝 E
hq : Continuous ⇑q
hpq : p ≤ q
r : ℝ
hr : r > 0
⊢ IsOpen (q.ball 0 r)
tactic: refine Seminorm.continuous_of_forall (fun r hr ↦ Filter.mem_of_superset
    (IsOpen.mem_nhds ?_ <| q.mem_ball_self hr) (ball_antitone hpq))
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : TopologicalAddGroup E
p q : Seminorm 𝕝 E
hq : Continuous ⇑q
hpq : p ≤ q
r : ℝ
hr : r > 0
⊢ IsOpen (q.ball 0 r)
state_after: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : TopologicalAddGroup E
p q : Seminorm 𝕝 E
hq : Continuous ⇑q
hpq : p ≤ q
r : ℝ
hr : r > 0
⊢ IsOpen {y | q y < r}
tactic: rw [ball_zero_eq]
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : SeminormedRing 𝕝
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module 𝕝 E
inst✝¹ : TopologicalSpace E
inst✝ : TopologicalAddGroup E
p q : Seminorm 𝕝 E
hq : Continuous ⇑q
hpq : p ≤ q
r : ℝ
hr : r > 0
⊢ IsOpen {y | q y < r}
state_after: no goals
tactic: exact isOpen_lt hq continuous_const
Theorem: Ordinal.exists_lt_add_of_not_principal_add
File: Mathlib/SetTheory/Ordinal/Principal.lean

Proof steps:
state_before: a : Ordinal.{u_1}
ha : ¬Principal (fun x x_1 => x + x_1) a
⊢ ∃ b c, b < a ∧ c < a ∧ b + c = a
state_after: a : Ordinal.{u_1}
ha : ¬∀ ⦃a_1 b : Ordinal.{u_1}⦄, a_1 < a → b < a → (fun x x_1 => x + x_1) a_1 b < a
⊢ ∃ b c, b < a ∧ c < a ∧ b + c = a
tactic: unfold Principal at ha
state_before: a : Ordinal.{u_1}
ha : ¬∀ ⦃a_1 b : Ordinal.{u_1}⦄, a_1 < a → b < a → (fun x x_1 => x + x_1) a_1 b < a
⊢ ∃ b c, b < a ∧ c < a ∧ b + c = a
state_after: a : Ordinal.{u_1}
ha : ∃ a_1 b, a_1 < a ∧ b < a ∧ a ≤ a_1 + b
⊢ ∃ b c, b < a ∧ c < a ∧ b + c = a
tactic: push_neg at ha
state_before: a : Ordinal.{u_1}
ha : ∃ a_1 b, a_1 < a ∧ b < a ∧ a ≤ a_1 + b
⊢ ∃ b c, b < a ∧ c < a ∧ b + c = a
state_after: case intro.intro.intro.intro
a b c : Ordinal.{u_1}
hb : b < a
hc : c < a
H : a ≤ b + c
⊢ ∃ b c, b < a ∧ c < a ∧ b + c = a
tactic: rcases ha with ⟨b, c, hb, hc, H⟩
state_before: case intro.intro.intro.intro
a b c : Ordinal.{u_1}
hb : b < a
hc : c < a
H : a ≤ b + c
⊢ ∃ b c, b < a ∧ c < a ∧ b + c = a
state_after: case intro.intro.intro.intro
a b c : Ordinal.{u_1}
hb : b < a
hc : c < a
H : a ≤ b + c
hab : a - b = a
⊢ False
tactic: refine
    ⟨b, _, hb, lt_of_le_of_ne (sub_le_self a b) fun hab => ?_, Ordinal.add_sub_cancel_of_le hb.le⟩
state_before: case intro.intro.intro.intro
a b c : Ordinal.{u_1}
hb : b < a
hc : c < a
H : a ≤ b + c
hab : a - b = a
⊢ False
state_after: case intro.intro.intro.intro
a b c : Ordinal.{u_1}
hb : b < a
hc : c < a
H : a ≤ c
hab : a - b = a
⊢ False
tactic: rw [← sub_le, hab] at H
state_before: case intro.intro.intro.intro
a b c : Ordinal.{u_1}
hb : b < a
hc : c < a
H : a ≤ c
hab : a - b = a
⊢ False
state_after: no goals
tactic: exact H.not_lt hc
Theorem: AlgebraicTopology.DoldKan.PInfty_on_Γ₀_splitting_summand_eq_self
File: Mathlib/AlgebraicTopology/DoldKan/FunctorGamma.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K✝ K' : ChainComplex C ℕ
f : K✝ ⟶ K'
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ ((Γ₀.splitting K).cofan (op [n])).inj (Splitting.IndexSet.id (op [n])) ≫ PInfty.f n =
    ((Γ₀.splitting K).cofan (op [n])).inj (Splitting.IndexSet.id (op [n]))
state_after: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K✝ K' : ChainComplex C ℕ
f : K✝ ⟶ K'
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ ((Γ₀.splitting K).cofan (op [n])).inj (Splitting.IndexSet.id (op [n])) ≫ (P n).f n =
    ((Γ₀.splitting K).cofan (op [n])).inj (Splitting.IndexSet.id (op [n]))
tactic: rw [PInfty_f]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K✝ K' : ChainComplex C ℕ
f : K✝ ⟶ K'
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ ((Γ₀.splitting K).cofan (op [n])).inj (Splitting.IndexSet.id (op [n])) ≫ (P n).f n =
    ((Γ₀.splitting K).cofan (op [n])).inj (Splitting.IndexSet.id (op [n]))
state_after: case zero
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K✝ K' : ChainComplex C ℕ
f : K✝ ⟶ K'
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
⊢ ((Γ₀.splitting K).cofan (op [0])).inj (Splitting.IndexSet.id (op [0])) ≫ (P 0).f 0 =
    ((Γ₀.splitting K).cofan (op [0])).inj (Splitting.IndexSet.id (op [0]))

case succ
C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
K✝ K' : ChainComplex C ℕ
f : K✝ ⟶ K'
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K : ChainComplex C ℕ
n : ℕ
⊢ ((Γ₀.splitting K).cofan (op [n + 1])).inj (Splitting.IndexSet.id (op [n + 1])) ≫ (P (n + 1)).f (n + 1) =
    ((Γ₀.splitting K).cofan (op [n + 1])).inj (Splitting.IndexSet.id (op [n + 1]))
tactic: rcases n with _|n
Theorem: RatFunc.liftMonoidWithZeroHom_apply
File: Mathlib/FieldTheory/RatFunc/Basic.lean

Proof steps:
state_before: K : Type u
inst✝¹ : Field K
L : Type u_1
inst✝ : CommGroupWithZero L
φ : K[X] →*₀ L
hφ : K[X]⁰ ≤ Submonoid.comap φ L⁰
f : RatFunc K
⊢ (liftMonoidWithZeroHom φ hφ) f = φ f.num / φ f.denom
state_after: no goals
tactic: rw [← num_div_denom f, liftMonoidWithZeroHom_apply_div, num_div_denom]
Theorem: ContinuousLinearMap.inner_map_map_iff_adjoint_comp_self
File: Mathlib/Analysis/InnerProductSpace/Adjoint.lean

Proof steps:
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
H : Type u_5
inst✝⁵ : NormedAddCommGroup H
inst✝⁴ : InnerProductSpace 𝕜 H
inst✝³ : CompleteSpace H
K : Type u_6
inst✝² : NormedAddCommGroup K
inst✝¹ : InnerProductSpace 𝕜 K
inst✝ : CompleteSpace K
u : H →L[𝕜] K
⊢ (∀ (x y : H), ⟪u x, u y⟫_𝕜 = ⟪x, y⟫_𝕜) ↔ (adjoint u).comp u = 1
state_after: case refine_1
𝕜 : 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
H : Type u_5
inst✝⁵ : NormedAddCommGroup H
inst✝⁴ : InnerProductSpace 𝕜 H
inst✝³ : CompleteSpace H
K : Type u_6
inst✝² : NormedAddCommGroup K
inst✝¹ : InnerProductSpace 𝕜 K
inst✝ : CompleteSpace K
u : H →L[𝕜] K
h : ∀ (x y : H), ⟪u x, u y⟫_𝕜 = ⟪x, y⟫_𝕜
x : H
⊢ ((adjoint u).comp u) x = 1 x

case refine_2
𝕜 : 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
H : Type u_5
inst✝⁵ : NormedAddCommGroup H
inst✝⁴ : InnerProductSpace 𝕜 H
inst✝³ : CompleteSpace H
K : Type u_6
inst✝² : NormedAddCommGroup K
inst✝¹ : InnerProductSpace 𝕜 K
inst✝ : CompleteSpace K
u : H →L[𝕜] K
h : (adjoint u).comp u = 1
⊢ ∀ (x y : H), ⟪u x, u y⟫_𝕜 = ⟪x, y⟫_𝕜
tactic: refine ⟨fun h ↦ ext fun x ↦ ?_, fun h ↦ ?_⟩
Theorem: Basis.tensorProduct_apply
File: Mathlib/LinearAlgebra/TensorProduct/Basis.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
M : Type u_3
N : Type u_4
ι : Type u_5
κ : Type u_6
inst✝⁸ : CommSemiring R
inst✝⁷ : Semiring S
inst✝⁶ : Algebra R S
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : Module S M
inst✝² : IsScalarTower R S M
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
b : Basis ι S M
c : Basis κ R N
i : ι
j : κ
⊢ (b.tensorProduct c) (i, j) = b i ⊗ₜ[R] c j
state_after: no goals
tactic: simp [Basis.tensorProduct]