ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: pow_eq_one_iff_of_nonneg
File: Mathlib/Algebra/Order/Ring/Basic.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : LinearOrderedSemiring R
a b : R
m n : ℕ
ha : 0 ≤ a
hn : n ≠ 0
⊢ a ^ n = 1 ↔ a = 1
state_after: no goals
tactic: simpa only [one_pow] using pow_left_inj ha zero_le_one hn
Theorem: QuasispectrumRestricts.nnreal_iff
File: Mathlib/Analysis/Normed/Algebra/Spectrum.lean

Proof steps:
state_before: 𝕜 : Type u_1
A✝ : Type u_2
A : Type u_3
inst✝³ : NonUnitalRing A
inst✝² : Module ℝ A
inst✝¹ : IsScalarTower ℝ A A
inst✝ : SMulCommClass ℝ A A
a : A
⊢ QuasispectrumRestricts a ⇑ContinuousMap.realToNNReal ↔ ∀ x ∈ σₙ ℝ a, 0 ≤ x
state_after: no goals
tactic: rw [quasispectrumRestricts_iff_spectrumRestricts_inr,
    Unitization.quasispectrum_eq_spectrum_inr' _ ℝ, SpectrumRestricts.nnreal_iff]
Theorem: IsOfFinAddOrder.natCard_multiples_le_addOrderOf
File: Mathlib/GroupTheory/OrderOfElement.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n m : ℕ
ha : IsOfFinOrder a
⊢ Nat.card ↑↑(powers a) ≤ orderOf a
state_after: no goals
tactic: classical
  simpa [ha.powers_eq_image_range_orderOf, Finset.card_range, Nat.Iio_eq_range]
    using Finset.card_image_le (s := Finset.range (orderOf a))
Theorem: CategoryTheory.SimplicialCategory.sHomWhiskerRight_id
File: Mathlib/AlgebraicTopology/SimplicialCategory/Basic.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : SimplicialCategory C
K L : C
⊢ sHomWhiskerRight (𝟙 K) L = 𝟙 (sHom K L)
state_after: no goals
tactic: simp [sHomWhiskerRight, homEquiv_id]
Theorem: BoxIntegral.Prepartition.biUnion_assoc
File: Mathlib/Analysis/BoxIntegral/Partition/Basic.lean

Proof steps:
state_before: ι : Type u_1
I J J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
πi' : Box ι → (J : Box ι) → Prepartition J
⊢ (π.biUnion fun J => (πi J).biUnion (πi' J)) = (π.biUnion πi).biUnion fun J => πi' (π.biUnionIndex πi J) J
state_after: case h
ι : Type u_1
I J✝ J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
πi' : Box ι → (J : Box ι) → Prepartition J
J : Box ι
⊢ (J ∈ π.biUnion fun J => (πi J).biUnion (πi' J)) ↔ J ∈ (π.biUnion πi).biUnion fun J => πi' (π.biUnionIndex πi J) J
tactic: ext J
state_before: case h
ι : Type u_1
I J✝ J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
πi' : Box ι → (J : Box ι) → Prepartition J
J : Box ι
⊢ (J ∈ π.biUnion fun J => (πi J).biUnion (πi' J)) ↔ J ∈ (π.biUnion πi).biUnion fun J => πi' (π.biUnionIndex πi J) J
state_after: case h
ι : Type u_1
I J✝ J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
πi' : Box ι → (J : Box ι) → Prepartition J
J : Box ι
⊢ (∃ J' ∈ π, ∃ J'_1 ∈ πi J', J ∈ πi' J' J'_1) ↔ ∃ J', (∃ J'_1 ∈ π, J' ∈ πi J'_1) ∧ J ∈ πi' (π.biUnionIndex πi J') J'
tactic: simp only [mem_biUnion, exists_prop]
state_before: case h
ι : Type u_1
I J✝ J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
πi' : Box ι → (J : Box ι) → Prepartition J
J : Box ι
⊢ (∃ J' ∈ π, ∃ J'_1 ∈ πi J', J ∈ πi' J' J'_1) ↔ ∃ J', (∃ J'_1 ∈ π, J' ∈ πi J'_1) ∧ J ∈ πi' (π.biUnionIndex πi J') J'
state_after: case h.mp
ι : Type u_1
I J✝ J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
πi' : Box ι → (J : Box ι) → Prepartition J
J : Box ι
⊢ (∃ J' ∈ π, ∃ J'_1 ∈ πi J', J ∈ πi' J' J'_1) → ∃ J', (∃ J'_1 ∈ π, J' ∈ πi J'_1) ∧ J ∈ πi' (π.biUnionIndex πi J') J'

case h.mpr
ι : Type u_1
I J✝ J₁ J₂ : Box ι
π π₁ π₂ : Prepartition I
x : ι → ℝ
πi✝ πi₁ πi₂ πi : (J : Box ι) → Prepartition J
πi' : Box ι → (J : Box ι) → Prepartition J
J : Box ι
⊢ (∃ J', (∃ J'_1 ∈ π, J' ∈ πi J'_1) ∧ J ∈ πi' (π.biUnionIndex πi J') J') → ∃ J' ∈ π, ∃ J'_1 ∈ πi J', J ∈ πi' J' J'_1
tactic: constructor
Theorem: Field.finSepDegree_mul_finSepDegree_of_isAlgebraic
File: Mathlib/FieldTheory/SeparableDegree.lean

Proof steps:
state_before: F : Type u
E : Type v
inst✝⁷ : Field F
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
K : Type w
inst✝⁴ : Field K
inst✝³ : Algebra F K
inst✝² : Algebra E K
inst✝¹ : IsScalarTower F E K
inst✝ : Algebra.IsAlgebraic E K
⊢ finSepDegree F E * finSepDegree E K = finSepDegree F K
state_after: no goals
tactic: simpa only [Nat.card_prod] using Nat.card_congr (embProdEmbOfIsAlgebraic F E K)
Theorem: Ring.inverse_star
File: Mathlib/Algebra/Star/Basic.lean

Proof steps:
state_before: R : Type u
inst✝¹ : Semiring R
inst✝ : StarRing R
a : R
⊢ inverse (star a) = star (inverse a)
state_after: case pos
R : Type u
inst✝¹ : Semiring R
inst✝ : StarRing R
a : R
ha : IsUnit a
⊢ inverse (star a) = star (inverse a)

case neg
R : Type u
inst✝¹ : Semiring R
inst✝ : StarRing R
a : R
ha : ¬IsUnit a
⊢ inverse (star a) = star (inverse a)
tactic: by_cases ha : IsUnit a
state_before: case neg
R : Type u
inst✝¹ : Semiring R
inst✝ : StarRing R
a : R
ha : ¬IsUnit a
⊢ inverse (star a) = star (inverse a)
state_after: no goals
tactic: rw [Ring.inverse_non_unit _ ha, Ring.inverse_non_unit _ (mt isUnit_star.mp ha), star_zero]
Theorem: Subgroup.rank_le_index_mul_rank
File: Mathlib/GroupTheory/Schreier.lean

Proof steps:
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
R S : Set G
hG : Group.FG G
inst✝ : H.FiniteIndex
⊢ Group.rank ↥H ≤ H.index * Group.rank G
state_after: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
R S : Set G
hG : Group.FG G
inst✝ : H.FiniteIndex
this : Group.FG ↥H
⊢ Group.rank ↥H ≤ H.index * Group.rank G
tactic: haveI := H.fg_of_index_ne_zero
state_before: G : Type u_1
inst✝¹ : Group G
H : Subgroup G
R S : Set G
hG : Group.FG G
inst✝ : H.FiniteIndex
this : Group.FG ↥H
⊢ Group.rank ↥H ≤ H.index * Group.rank G
state_after: case intro.intro
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
R S✝ : Set G
hG : Group.FG G
inst✝ : H.FiniteIndex
this : Group.FG ↥H
S : Finset G
hS₀ : S.card = Group.rank G
hS : closure ↑S = ⊤
⊢ Group.rank ↥H ≤ H.index * Group.rank G
tactic: obtain ⟨S, hS₀, hS⟩ := Group.rank_spec G
state_before: case intro.intro
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
R S✝ : Set G
hG : Group.FG G
inst✝ : H.FiniteIndex
this : Group.FG ↥H
S : Finset G
hS₀ : S.card = Group.rank G
hS : closure ↑S = ⊤
⊢ Group.rank ↥H ≤ H.index * Group.rank G
state_after: case intro.intro.intro.intro
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
R S✝ : Set G
hG : Group.FG G
inst✝ : H.FiniteIndex
this : Group.FG ↥H
S : Finset G
hS₀ : S.card = Group.rank G
hS : closure ↑S = ⊤
T : Finset ↥H
hT₀ : T.card ≤ H.index * S.card
hT : closure ↑T = ⊤
⊢ Group.rank ↥H ≤ H.index * Group.rank G
tactic: obtain ⟨T, hT₀, hT⟩ := exists_finset_card_le_mul H hS
Theorem: Finset.sum_card_fiberwise_eq_card_filter
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
κ✝ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f g✝ : α → β
κ : Type u_6
inst✝ : DecidableEq κ
s : Finset ι
t : Finset κ
g : ι → κ
⊢ ∑ j ∈ t, (filter (fun i => g i = j) s).card = (filter (fun i => g i ∈ t) s).card
state_after: no goals
tactic: simpa only [card_eq_sum_ones] using sum_fiberwise_eq_sum_filter _ _ _ _
Theorem: intermediate_value_uIcc
File: Mathlib/Topology/Order/IntermediateValue.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝¹⁰ : ConditionallyCompleteLinearOrder α
inst✝⁹ : TopologicalSpace α
inst✝⁸ : OrderTopology α
inst✝⁷ : ConditionallyCompleteLinearOrder β
inst✝⁶ : TopologicalSpace β
inst✝⁵ : OrderTopology β
inst✝⁴ : Nonempty γ
inst✝³ : DenselyOrdered α
a✝ b✝ : α
δ : Type u_1
inst✝² : LinearOrder δ
inst✝¹ : TopologicalSpace δ
inst✝ : OrderClosedTopology δ
a b : α
f : α → δ
hf : ContinuousOn f (uIcc a b)
⊢ uIcc (f a) (f b) ⊆ f '' uIcc a b
state_after: no goals
tactic: cases le_total (f a) (f b) <;> simp [*, isPreconnected_uIcc.intermediate_value]
Theorem: Continuous.closure_preimage_subset
File: Mathlib/Topology/Basic.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : X → Y
s : Set X
x : X
y : Y
hf : Continuous f
t : Set Y
⊢ closure (f ⁻¹' t) ⊆ f ⁻¹' closure t
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : X → Y
s : Set X
x : X
y : Y
hf : Continuous f
t : Set Y
⊢ closure (f ⁻¹' t) ⊆ closure (f ⁻¹' closure t)
tactic: rw [← (isClosed_closure.preimage hf).closure_eq]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : X → Y
s : Set X
x : X
y : Y
hf : Continuous f
t : Set Y
⊢ closure (f ⁻¹' t) ⊆ closure (f ⁻¹' closure t)
state_after: no goals
tactic: exact closure_mono (preimage_mono subset_closure)
Theorem: Sym.card_sym_eq_multichoose
File: Mathlib/Data/Sym/Card.lean

Proof steps:
state_before: α✝ : Type u_1
β : Type u_2
n : ℕ
α : Type u_3
k : ℕ
inst✝¹ : Fintype α
inst✝ : Fintype (Sym α k)
⊢ Fintype.card (Sym α k) = (Fintype.card α).multichoose k
state_after: α✝ : Type u_1
β : Type u_2
n : ℕ
α : Type u_3
k : ℕ
inst✝¹ : Fintype α
inst✝ : Fintype (Sym α k)
⊢ Fintype.card (Sym α k) = Fintype.card (Sym (Fin (Fintype.card α)) k)
tactic: rw [← card_sym_fin_eq_multichoose]
state_before: α✝ : Type u_1
β : Type u_2
n : ℕ
α : Type u_3
k : ℕ
inst✝¹ : Fintype α
inst✝ : Fintype (Sym α k)
⊢ Fintype.card (Sym α k) = Fintype.card (Sym (Fin (Fintype.card α)) k)
state_after: no goals
tactic: exact Fintype.card_congr (equivCongr (equivFin α))
Theorem: isPathConnected_iff_pathConnectedSpace
File: Mathlib/Topology/Connected/PathConnected.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
⊢ IsPathConnected F ↔ PathConnectedSpace ↑F
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
⊢ (F.Nonempty ∧ ∀ x ∈ F, ∀ y ∈ F, JoinedIn F x y) ↔ PathConnectedSpace ↑F
tactic: rw [isPathConnected_iff]
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
⊢ (F.Nonempty ∧ ∀ x ∈ F, ∀ y ∈ F, JoinedIn F x y) ↔ PathConnectedSpace ↑F
state_after: case mp
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
⊢ (F.Nonempty ∧ ∀ x ∈ F, ∀ y ∈ F, JoinedIn F x y) → PathConnectedSpace ↑F

case mpr
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F : Set X
⊢ PathConnectedSpace ↑F → F.Nonempty ∧ ∀ x ∈ F, ∀ y ∈ F, JoinedIn F x y
tactic: constructor
Theorem: CompositionSeries.total
File: Mathlib/Order/JordanHolder.lean

Proof steps:
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
x y : X
hx : x ∈ s
hy : y ∈ s
⊢ x ≤ y ∨ y ≤ x
state_after: case intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
y : X
hy : y ∈ s
i : Fin (s.length + 1)
hx : s.toFun i ∈ s
⊢ s.toFun i ≤ y ∨ y ≤ s.toFun i
tactic: rcases Set.mem_range.1 hx with ⟨i, rfl⟩
state_before: case intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
y : X
hy : y ∈ s
i : Fin (s.length + 1)
hx : s.toFun i ∈ s
⊢ s.toFun i ≤ y ∨ y ≤ s.toFun i
state_after: case intro.intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
i : Fin (s.length + 1)
hx : s.toFun i ∈ s
j : Fin (s.length + 1)
hy : s.toFun j ∈ s
⊢ s.toFun i ≤ s.toFun j ∨ s.toFun j ≤ s.toFun i
tactic: rcases Set.mem_range.1 hy with ⟨j, rfl⟩
state_before: case intro.intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
i : Fin (s.length + 1)
hx : s.toFun i ∈ s
j : Fin (s.length + 1)
hy : s.toFun j ∈ s
⊢ s.toFun i ≤ s.toFun j ∨ s.toFun j ≤ s.toFun i
state_after: case intro.intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
i : Fin (s.length + 1)
hx : s.toFun i ∈ s
j : Fin (s.length + 1)
hy : s.toFun j ∈ s
⊢ i ≤ j ∨ j ≤ i
tactic: rw [s.strictMono.le_iff_le, s.strictMono.le_iff_le]
state_before: case intro.intro
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s : CompositionSeries X
i : Fin (s.length + 1)
hx : s.toFun i ∈ s
j : Fin (s.length + 1)
hy : s.toFun j ∈ s
⊢ i ≤ j ∨ j ≤ i
state_after: no goals
tactic: exact le_total i j
Theorem: swap_idRel
File: Mathlib/Topology/UniformSpace/Basic.lean

Proof steps:
state_before: α : Type ua
β : Type ub
γ : Type uc
δ : Type ud
ι : Sort u_1
x✝ : α × α
a b : α
⊢ (a, b) ∈ Prod.swap '' idRel ↔ (a, b) ∈ idRel
state_after: no goals
tactic: simpa [image_swap_eq_preimage_swap] using eq_comm
Theorem: CochainComplex.cochainComplex_d_succ_succ_zero
File: Mathlib/Algebra/Homology/Augment.lean

Proof steps:
state_before: V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
C : CochainComplex V ℕ
i : ℕ
⊢ C.d 0 (i + 2) = 0
state_after: case a
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
C : CochainComplex V ℕ
i : ℕ
⊢ ¬(ComplexShape.up ℕ).Rel 0 (i + 2)
tactic: rw [C.shape]
state_before: case a
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
C : CochainComplex V ℕ
i : ℕ
⊢ ¬(ComplexShape.up ℕ).Rel 0 (i + 2)
state_after: case a
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
C : CochainComplex V ℕ
i : ℕ
⊢ ¬1 = i + 2
tactic: simp only [ComplexShape.up_Rel, zero_add]
state_before: case a
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
C : CochainComplex V ℕ
i : ℕ
⊢ ¬1 = i + 2
state_after: no goals
tactic: exact (Nat.one_lt_succ_succ _).ne
Theorem: MeasureTheory.OuterMeasure.top_caratheodory
File: Mathlib/MeasureTheory/OuterMeasure/Caratheodory.lean

Proof steps:
state_before: α : Type u_1
s : Set α
x✝ : MeasurableSet s
t : Set α
ht : t = ∅
⊢ ⊤ (t ∩ s) + ⊤ (t \ s) ≤ ⊤ t
state_after: no goals
tactic: simp [ht]
state_before: α : Type u_1
s : Set α
x✝ : MeasurableSet s
t : Set α
ht : t.Nonempty
⊢ ⊤ (t ∩ s) + ⊤ (t \ s) ≤ ⊤ t
state_after: no goals
tactic: simp only [ht, top_apply, le_top]
Theorem: FirstOrder.Language.Theory.SemanticallyEquivalent.imp
File: Mathlib/ModelTheory/Satisfiability.lean

Proof steps:
state_before: L : Language
T : L.Theory
α : Type w
n : ℕ
φ ψ φ' ψ' : L.BoundedFormula α n
h : T.SemanticallyEquivalent φ ψ
h' : T.SemanticallyEquivalent φ' ψ'
⊢ T.SemanticallyEquivalent (φ ⟹ φ') (ψ ⟹ ψ')
state_after: L : Language
T : L.Theory
α : Type w
n : ℕ
φ ψ φ' ψ' : L.BoundedFormula α n
h : T.SemanticallyEquivalent φ ψ
h' : T.SemanticallyEquivalent φ' ψ'
⊢ ∀ (M : T.ModelType) (v : α → ↑M) (xs : Fin n → ↑M),
    φ.Realize v xs → φ'.Realize v xs ↔ ψ.Realize v xs → ψ'.Realize v xs
tactic: simp_rw [SemanticallyEquivalent, ModelsBoundedFormula, BoundedFormula.realize_iff,
    BoundedFormula.realize_imp]
state_before: L : Language
T : L.Theory
α : Type w
n : ℕ
φ ψ φ' ψ' : L.BoundedFormula α n
h : T.SemanticallyEquivalent φ ψ
h' : T.SemanticallyEquivalent φ' ψ'
⊢ ∀ (M : T.ModelType) (v : α → ↑M) (xs : Fin n → ↑M),
    φ.Realize v xs → φ'.Realize v xs ↔ ψ.Realize v xs → ψ'.Realize v xs
state_after: no goals
tactic: exact fun M v xs => imp_congr h.realize_bd_iff h'.realize_bd_iff
Theorem: IsAddUnit.exists_neg'
File: Mathlib/Algebra/Group/Units.lean

Proof steps:
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
a✝ b a : M
h : IsUnit a
⊢ ∃ b, b * a = 1
state_after: case intro.mk
α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
a✝ b✝ a b : M
val_inv✝ : a * b = 1
hba : b * a = 1
⊢ ∃ b_1, b_1 * ↑{ val := a, inv := b, val_inv := val_inv✝, inv_val := hba } = 1
tactic: rcases h with ⟨⟨a, b, _, hba⟩, rfl⟩
state_before: case intro.mk
α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
a✝ b✝ a b : M
val_inv✝ : a * b = 1
hba : b * a = 1
⊢ ∃ b_1, b_1 * ↑{ val := a, inv := b, val_inv := val_inv✝, inv_val := hba } = 1
state_after: no goals
tactic: exact ⟨b, hba⟩
Theorem: Valued.continuous_extension
File: Mathlib/Topology/Algebra/Valued/ValuedField.lean

Proof steps:
state_before: K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
⊢ Continuous extension
state_after: K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
⊢ ∀ (b : hat K), ∃ c, Tendsto (⇑v) (Filter.comap (↑K) (𝓝 b)) (𝓝 c)
tactic: refine Completion.denseInducing_coe.continuous_extend ?_
state_before: K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
⊢ ∀ (b : hat K), ∃ c, Tendsto (⇑v) (Filter.comap (↑K) (𝓝 b)) (𝓝 c)
state_after: K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
x₀ : hat K
⊢ ∃ c, Tendsto (⇑v) (Filter.comap (↑K) (𝓝 x₀)) (𝓝 c)
tactic: intro x₀
state_before: K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
x₀ : hat K
⊢ ∃ c, Tendsto (⇑v) (Filter.comap (↑K) (𝓝 x₀)) (𝓝 c)
state_after: case inl
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
⊢ ∃ c, Tendsto (⇑v) (Filter.comap (↑K) (𝓝 0)) (𝓝 c)

case inr
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
x₀ : hat K
h : x₀ ≠ 0
⊢ ∃ c, Tendsto (⇑v) (Filter.comap (↑K) (𝓝 x₀)) (𝓝 c)
tactic: rcases eq_or_ne x₀ 0 with (rfl | h)
Theorem: Function.support_update_eq_ite
File: Mathlib/Algebra/Group/Support.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
A : Type u_3
B : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
inst✝⁴ : One M
inst✝³ : One N
inst✝² : One P
inst✝¹ : DecidableEq α
inst✝ : DecidableEq M
f : α → M
x : α
y : M
⊢ mulSupport (update f x y) = if y = 1 then mulSupport f \ {x} else insert x (mulSupport f)
state_after: no goals
tactic: rcases eq_or_ne y 1 with rfl | hy <;> simp [mulSupport_update_one, mulSupport_update_of_ne_one, *]
Theorem: Poly.sumsq_eq_zero
File: Mathlib/NumberTheory/Dioph.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
x : α → ℕ
p : Poly α
ps : List (Poly α)
⊢ (sumsq (p :: ps)) x = 0 ↔ List.Forall (fun a => a x = 0) (p :: ps)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
x : α → ℕ
p : Poly α
ps : List (Poly α)
⊢ (sumsq (p :: ps)) x = 0 ↔ p x = 0 ∧ (sumsq ps) x = 0
tactic: rw [List.forall_cons, ← sumsq_eq_zero _ ps]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
x : α → ℕ
p : Poly α
ps : List (Poly α)
⊢ (sumsq (p :: ps)) x = 0 ↔ p x = 0 ∧ (sumsq ps) x = 0
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
x : α → ℕ
p : Poly α
ps : List (Poly α)
⊢ (p * p + sumsq ps) x = 0 ↔ p x = 0 ∧ (sumsq ps) x = 0
tactic: rw [sumsq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
x : α → ℕ
p : Poly α
ps : List (Poly α)
⊢ (p * p + sumsq ps) x = 0 ↔ p x = 0 ∧ (sumsq ps) x = 0
state_after: no goals
tactic: exact
      ⟨fun h : p x * p x + sumsq ps x = 0 =>
        have : p x = 0 :=
          eq_zero_of_mul_self_eq_zero <|
            le_antisymm
              (by
                rw [← h]
                have t := add_le_add_left (sumsq_nonneg x ps) (p x * p x)
                rwa [add_zero] at t)
              (mul_self_nonneg _)
        ⟨this, by simpa [this] using h⟩,
      fun ⟨h1, h2⟩ => by rw [add_apply, mul_apply, h1, h2]; rfl⟩
Theorem: CategoryTheory.Presheaf.IsSheaf.isSheafFor
File: Mathlib/CategoryTheory/Sites/Sheaf.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝ : Category.{v₂, u₂} A
P : Cᵒᵖ ⥤ Type w
hP : IsSheaf J P
X : C
S : Sieve X
hS : S ∈ J.sieves X
⊢ Presieve.IsSheafFor P S.arrows
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝ : Category.{v₂, u₂} A
P : Cᵒᵖ ⥤ Type w
hP : Presieve.IsSheaf J P
X : C
S : Sieve X
hS : S ∈ J.sieves X
⊢ Presieve.IsSheafFor P S.arrows
tactic: rw [isSheaf_iff_isSheaf_of_type] at hP
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
J : GrothendieckTopology C
A : Type u₂
inst✝ : Category.{v₂, u₂} A
P : Cᵒᵖ ⥤ Type w
hP : Presieve.IsSheaf J P
X : C
S : Sieve X
hS : S ∈ J.sieves X
⊢ Presieve.IsSheafFor P S.arrows
state_after: no goals
tactic: exact hP S hS
Theorem: IsLUB.exists_seq_monotone_tendsto
File: Mathlib/Topology/Order/IsLUB.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁶ : TopologicalSpace α
inst✝⁵ : TopologicalSpace β
inst✝⁴ : LinearOrder α
inst✝³ : LinearOrder β
inst✝² : OrderTopology α
inst✝¹ : OrderTopology β
t : Set α
x : α
inst✝ : (𝓝 x).IsCountablyGenerated
htx : IsLUB t x
ht : t.Nonempty
⊢ ∃ u, Monotone u ∧ (∀ (n : ℕ), u n ≤ x) ∧ Tendsto u atTop (𝓝 x) ∧ ∀ (n : ℕ), u n ∈ t
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁶ : TopologicalSpace α
inst✝⁵ : TopologicalSpace β
inst✝⁴ : LinearOrder α
inst✝³ : LinearOrder β
inst✝² : OrderTopology α
inst✝¹ : OrderTopology β
t : Set α
x : α
inst✝ : (𝓝 x).IsCountablyGenerated
htx : IsLUB t x
ht : t.Nonempty
h : x ∈ t
⊢ ∃ u, Monotone u ∧ (∀ (n : ℕ), u n ≤ x) ∧ Tendsto u atTop (𝓝 x) ∧ ∀ (n : ℕ), u n ∈ t

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁶ : TopologicalSpace α
inst✝⁵ : TopologicalSpace β
inst✝⁴ : LinearOrder α
inst✝³ : LinearOrder β
inst✝² : OrderTopology α
inst✝¹ : OrderTopology β
t : Set α
x : α
inst✝ : (𝓝 x).IsCountablyGenerated
htx : IsLUB t x
ht : t.Nonempty
h : x ∉ t
⊢ ∃ u, Monotone u ∧ (∀ (n : ℕ), u n ≤ x) ∧ Tendsto u atTop (𝓝 x) ∧ ∀ (n : ℕ), u n ∈ t
tactic: by_cases h : x ∈ t
Theorem: Cardinal.ofENat_pos
File: Mathlib/SetTheory/Cardinal/ENat.lean

Proof steps:
state_before: m : ℕ∞
⊢ 0 < ↑m ↔ 0 < m
state_after: no goals
tactic: norm_cast
Theorem: CategoryTheory.WithInitial.mapId_inv_app
File: Mathlib/CategoryTheory/WithTerminal.lean

Proof steps:
state_before: C✝ : Type u
inst✝¹ : Category.{v, u} C✝
C : Type u_1
inst✝ : Category.{?u.248293, u_1} C
⊢ ∀ {X Y : WithInitial C} (f : X ⟶ Y),
    (map (𝟭 C)).map f ≫
        ((fun X =>
              match X with
              | of x => Iso.refl ((map (𝟭 C)).obj (of x))
              | star => Iso.refl ((map (𝟭 C)).obj star))
            Y).hom =
      ((fun X =>
              match X with
              | of x => Iso.refl ((map (𝟭 C)).obj (of x))
              | star => Iso.refl ((map (𝟭 C)).obj star))
            X).hom ≫
        (𝟭 (WithInitial C)).map f
state_after: no goals
tactic: aesop_cat
Theorem: Localization.mk_eq_monoidOf_mk'_apply
File: Mathlib/GroupTheory/MonoidLocalization/Basic.lean

Proof steps:
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
x : M
y : ↥S
⊢ mk x y * (monoidOf S).toMap ↑y = (monoidOf S).toMap x
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
x : M
y : ↥S
⊢ mk (x * ↑y) (1 * y) = mk x 1
tactic: rw [← mk_one_eq_monoidOf_mk, ← mk_one_eq_monoidOf_mk, mk_mul x y y 1, mul_comm y 1]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
x : M
y : ↥S
⊢ mk (x * ↑y) (1 * y) = mk x 1
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
x : M
y : ↥S
⊢ mk (x * ↑y) (1 * y) = mk (x * 1) (1 * 1)
tactic: conv => rhs; rw [← mul_one 1]; rw [← mul_one x]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
x : M
y : ↥S
⊢ mk (x * ↑y) (1 * y) = mk (x * 1) (1 * 1)
state_after: no goals
tactic: exact mk_eq_mk_iff.2 (Con.symm _ <| (Localization.r S).mul (Con.refl _ (x, 1)) <| one_rel _)
Theorem: eq_empty_relation
File: Mathlib/Order/RelClasses.lean

Proof steps:
state_before: α : Type u
β : Type v
r✝ : α → α → Prop
s : β → β → Prop
r : α → α → Prop
inst✝¹ : IsIrrefl α r
inst✝ : Subsingleton α
⊢ ∀ (a b : α), r a b = EmptyRelation a b
state_after: no goals
tactic: simpa using not_rel_of_subsingleton r