ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Finmap.mem_singleton
File: Mathlib/Data/Finmap.lean

Proof steps:
state_before: α : Type u
β : α → Type v
x y : α
b : β y
⊢ x ∈ singleton y b ↔ x = y
state_after: α : Type u
β : α → Type v
x y : α
b : β y
⊢ x ∈ ⟦AList.singleton y b⟧ ↔ x = y
tactic: simp only [singleton]
state_before: α : Type u
β : α → Type v
x y : α
b : β y
⊢ x ∈ ⟦AList.singleton y b⟧ ↔ x = y
state_after: no goals
tactic: erw [mem_cons, mem_nil_iff, or_false_iff]
Theorem: QuadraticMap.restrictScalars_apply
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

Proof steps:
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
A : Type u_7
inst✝¹⁰ : CommSemiring R
inst✝⁹ : CommSemiring S
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
inst✝⁴ : Module S M
inst✝³ : Module S N
inst✝² : Algebra S R
inst✝¹ : IsScalarTower S R M
inst✝ : IsScalarTower S R N
Q : QuadraticMap R M N
a : S
x : M
⊢ (fun x => Q x) (a • x) = (a * a) • (fun x => Q x) x
state_after: no goals
tactic: simp [map_smul_of_tower]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
A : Type u_7
inst✝¹⁰ : CommSemiring R
inst✝⁹ : CommSemiring S
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
inst✝⁴ : Module S M
inst✝³ : Module S N
inst✝² : Algebra S R
inst✝¹ : IsScalarTower S R M
inst✝ : IsScalarTower S R N
Q : QuadraticMap R M N
B : BilinMap R M N
h : ∀ (x y : M), Q (x + y) = Q x + Q y + (B x) y
x y : M
⊢ (fun x => Q x) (x + y) = (fun x => Q x) x + (fun x => Q x) y + ((LinearMap.restrictScalars₁₂ S S B) x) y
state_after: no goals
tactic: simp only [LinearMap.restrictScalars₁₂_apply_apply, h]
Theorem: List.oldMapIdx_append
File: Mathlib/Data/List/Indexes.lean

Proof steps:
state_before: α : Type u
β : Type v
⊢ ∀ (f : ℕ → α → β) (l : List α) (e : α), List.oldMapIdx f (l ++ [e]) = List.oldMapIdx f l ++ [f l.length e]
state_after: α : Type u
β : Type v
f : ℕ → α → β
l : List α
e : α
⊢ List.oldMapIdx f (l ++ [e]) = List.oldMapIdx f l ++ [f l.length e]
tactic: intros f l e
state_before: α : Type u
β : Type v
f : ℕ → α → β
l : List α
e : α
⊢ List.oldMapIdx f (l ++ [e]) = List.oldMapIdx f l ++ [f l.length e]
state_after: α : Type u
β : Type v
f : ℕ → α → β
l : List α
e : α
⊢ List.oldMapIdxCore f 0 (l ++ [e]) = List.oldMapIdxCore f 0 l ++ [f l.length e]
tactic: unfold List.oldMapIdx
state_before: α : Type u
β : Type v
f : ℕ → α → β
l : List α
e : α
⊢ List.oldMapIdxCore f 0 (l ++ [e]) = List.oldMapIdxCore f 0 l ++ [f l.length e]
state_after: α : Type u
β : Type v
f : ℕ → α → β
l : List α
e : α
⊢ List.oldMapIdxCore f 0 l ++ List.oldMapIdxCore f (0 + l.length) [e] = List.oldMapIdxCore f 0 l ++ [f l.length e]
tactic: rw [List.oldMapIdxCore_append f 0 l [e]]
state_before: α : Type u
β : Type v
f : ℕ → α → β
l : List α
e : α
⊢ List.oldMapIdxCore f 0 l ++ List.oldMapIdxCore f (0 + l.length) [e] = List.oldMapIdxCore f 0 l ++ [f l.length e]
state_after: α : Type u
β : Type v
f : ℕ → α → β
l : List α
e : α
⊢ List.oldMapIdxCore f 0 l ++ List.oldMapIdxCore f l.length [e] = List.oldMapIdxCore f 0 l ++ [f l.length e]
tactic: simp only [Nat.zero_add]
state_before: α : Type u
β : Type v
f : ℕ → α → β
l : List α
e : α
⊢ List.oldMapIdxCore f 0 l ++ List.oldMapIdxCore f l.length [e] = List.oldMapIdxCore f 0 l ++ [f l.length e]
state_after: no goals
tactic: rfl
Theorem: irrational_div_rat_iff
File: Mathlib/Data/Real/Irrational.lean

Proof steps:
state_before: q : ℚ
m : ℤ
n : ℕ
x : ℝ
⊢ Irrational (x / ↑q) ↔ q ≠ 0 ∧ Irrational x
state_after: no goals
tactic: rw [div_eq_mul_inv, ← cast_inv, irrational_mul_rat_iff, Ne, inv_eq_zero]
Theorem: CategoryTheory.MorphismProperty.map_eq_iff_postcomp
File: Mathlib/CategoryTheory/Localization/CalculusOfFractions.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{u_4, u_2} D
L : C ⥤ D
W : MorphismProperty C
inst✝¹ : L.IsLocalization W
inst✝ : W.HasLeftCalculusOfFractions
X Y : C
f₁ f₂ : X ⟶ Y
⊢ L.map f₁ = L.map f₂ ↔ ∃ Z s, ∃ (_ : W s), f₁ ≫ s = f₂ ≫ s
state_after: case mp
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{u_4, u_2} D
L : C ⥤ D
W : MorphismProperty C
inst✝¹ : L.IsLocalization W
inst✝ : W.HasLeftCalculusOfFractions
X Y : C
f₁ f₂ : X ⟶ Y
⊢ L.map f₁ = L.map f₂ → ∃ Z s, ∃ (_ : W s), f₁ ≫ s = f₂ ≫ s

case mpr
C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{u_4, u_2} D
L : C ⥤ D
W : MorphismProperty C
inst✝¹ : L.IsLocalization W
inst✝ : W.HasLeftCalculusOfFractions
X Y : C
f₁ f₂ : X ⟶ Y
⊢ (∃ Z s, ∃ (_ : W s), f₁ ≫ s = f₂ ≫ s) → L.map f₁ = L.map f₂
tactic: constructor
Theorem: Filter.comap_eval_neBot_iff'
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α✝ : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
l f✝ f₁ f₂ : Filter α✝
g g₁ g₂ : Filter β
m : α✝ → β
m' : β → γ
s : Set α✝
t : Set β
ι : Type u_2
α : ι → Type u_3
i : ι
f : Filter (α i)
⊢ (comap (eval i) f).NeBot ↔ (∀ (j : ι), Nonempty (α j)) ∧ f.NeBot
state_after: case inl
α✝ : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
l f✝ f₁ f₂ : Filter α✝
g g₁ g₂ : Filter β
m : α✝ → β
m' : β → γ
s : Set α✝
t : Set β
ι : Type u_2
α : ι → Type u_3
i : ι
f : Filter (α i)
H : IsEmpty ((j : ι) → α j)
⊢ (comap (eval i) f).NeBot ↔ (∀ (j : ι), Nonempty (α j)) ∧ f.NeBot

case inr
α✝ : Type u
β : Type v
γ : Type w
δ : Type u_1
ι✝ : Sort x
l f✝ f₁ f₂ : Filter α✝
g g₁ g₂ : Filter β
m : α✝ → β
m' : β → γ
s : Set α✝
t : Set β
ι : Type u_2
α : ι → Type u_3
i : ι
f : Filter (α i)
H : Nonempty ((j : ι) → α j)
⊢ (comap (eval i) f).NeBot ↔ (∀ (j : ι), Nonempty (α j)) ∧ f.NeBot
tactic: cases' isEmpty_or_nonempty (∀ j, α j) with H H
Theorem: _private.Mathlib.RingTheory.AdicCompletion.AsTensorProduct.0.AdicCompletion.secondRow_exact
File: Mathlib/RingTheory/AdicCompletion/AsTensorProduct.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝¹⁰ : CommRing R✝
I✝ : Ideal R✝
M✝ : Type u_2
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
N : Type u_3
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R✝ N
R : Type u
inst✝⁵ : CommRing R
I : Ideal R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : IsNoetherianRing R
ι : Type
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
f : (ι → R) →ₗ[R] M
hf : Function.Surjective ⇑f
k : ℕ
x✝ : autoParam (k + 2 ≤ 4) _auto✝
⊢ ((AdicCompletion.secondRow I M f).sc ⋯ k ⋯).Exact
state_after: R✝ : Type u_1
inst✝¹⁰ : CommRing R✝
I✝ : Ideal R✝
M✝ : Type u_2
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
N : Type u_3
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R✝ N
R : Type u
inst✝⁵ : CommRing R
I : Ideal R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : IsNoetherianRing R
ι : Type
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
f : (ι → R) →ₗ[R] M
hf : Function.Surjective ⇑f
k : ℕ
x✝ : autoParam (k + 2 ≤ 4) _auto✝
⊢ ∀ (x₂ : ↑((AdicCompletion.secondRow I M f).sc ⋯ k ⋯).X₂),
    ((AdicCompletion.secondRow I M f).sc ⋯ k ⋯).g x₂ = 0 → ∃ x₁, ((AdicCompletion.secondRow I M f).sc ⋯ k ⋯).f x₁ = x₂
tactic: rw [ShortComplex.moduleCat_exact_iff]
state_before: R✝ : Type u_1
inst✝¹⁰ : CommRing R✝
I✝ : Ideal R✝
M✝ : Type u_2
inst✝⁹ : AddCommGroup M✝
inst✝⁸ : Module R✝ M✝
N : Type u_3
inst✝⁷ : AddCommGroup N
inst✝⁶ : Module R✝ N
R : Type u
inst✝⁵ : CommRing R
I : Ideal R
M : Type u
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : IsNoetherianRing R
ι : Type
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
f : (ι → R) →ₗ[R] M
hf : Function.Surjective ⇑f
k : ℕ
x✝ : autoParam (k + 2 ≤ 4) _auto✝
⊢ ∀ (x₂ : ↑((AdicCompletion.secondRow I M f).sc ⋯ k ⋯).X₂),
    ((AdicCompletion.secondRow I M f).sc ⋯ k ⋯).g x₂ = 0 → ∃ x₁, ((AdicCompletion.secondRow I M f).sc ⋯ k ⋯).f x₁ = x₂
state_after: no goals
tactic: match k with
    | 0 => intro x hx; exact (adic_exact I M f hf x).mp hx
    | 1 => intro x _; exact (adic_surj I M f hf) x
    | 2 => intro _ _; exact ⟨0, rfl⟩
Theorem: MeasureTheory.Measure.Regular.exists_compact_not_null
File: Mathlib/MeasureTheory/Measure/Regular.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : MeasurableSpace α
inst✝¹ : TopologicalSpace α
μ : Measure α
inst✝ : μ.Regular
⊢ (∃ K, IsCompact K ∧ μ K ≠ 0) ↔ μ ≠ 0
state_after: no goals
tactic: simp_rw [Ne, ← measure_univ_eq_zero, isOpen_univ.measure_eq_iSup_isCompact,
    ENNReal.iSup_eq_zero, not_forall, exists_prop, subset_univ, true_and_iff]
Theorem: CategoryTheory.ShortComplex.homology_π_ι
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝ : S.HasHomology
⊢ S.homologyπ ≫ S.homologyι = S.iCycles ≫ S.pOpcycles
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝ : S.HasHomology
⊢ (S.leftHomologyπ ≫ S.leftHomologyIso.hom) ≫ S.rightHomologyIso.inv ≫ S.rightHomologyι = S.iCycles ≫ S.pOpcycles
tactic: dsimp only [homologyπ, homologyι]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
inst✝ : S.HasHomology
⊢ (S.leftHomologyπ ≫ S.leftHomologyIso.hom) ≫ S.rightHomologyIso.inv ≫ S.rightHomologyι = S.iCycles ≫ S.pOpcycles
state_after: no goals
tactic: simpa only [assoc, S.leftRightHomologyComparison_fac] using S.π_leftRightHomologyComparison_ι
Theorem: Multiset.Ioc_eq_zero_iff
File: Mathlib/Order/Interval/Multiset.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ Ioc a b = 0 ↔ ¬a < b
state_after: no goals
tactic: rw [Ioc, Finset.val_eq_zero, Finset.Ioc_eq_empty_iff]
Theorem: FirstOrder.Language.card_relations_sum
File: Mathlib/ModelTheory/Basic.lean

Proof steps:
state_before: L : Language
L' : Language
i : ℕ
⊢ #((L.sum L').Relations i) = lift.{v', v} #(L.Relations i) + lift.{v, v'} #(L'.Relations i)
state_after: no goals
tactic: simp [Language.sum]
Theorem: NormedSpace.star_exp
File: Mathlib/Analysis/NormedSpace/Exponential.lean

Proof steps:
state_before: 𝕂 : Type u_1
𝔸 : Type u_2
inst✝⁷ : Field 𝕂
inst✝⁶ : Ring 𝔸
inst✝⁵ : Algebra 𝕂 𝔸
inst✝⁴ : TopologicalSpace 𝔸
inst✝³ : TopologicalRing 𝔸
inst✝² : T2Space 𝔸
inst✝¹ : StarRing 𝔸
inst✝ : ContinuousStar 𝔸
x : 𝔸
⊢ star (exp 𝕂 x) = exp 𝕂 (star x)
state_after: no goals
tactic: simp_rw [exp_eq_tsum, ← star_pow, ← star_inv_natCast_smul, ← tsum_star]
Theorem: pathConnectedSpace_iff_eq
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
⊢ PathConnectedSpace X ↔ ∃ x, pathComponent x = univ
state_after: no goals
tactic: simp [pathConnectedSpace_iff_univ, isPathConnected_iff_eq]
Theorem: inseparable_iff_forall_open
File: Mathlib/Topology/Inseparable.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ (x ~ᵢ y) ↔ ∀ (s : Set X), IsOpen s → (x ∈ s ↔ y ∈ s)
state_after: no goals
tactic: simp only [inseparable_iff_specializes_and, specializes_iff_forall_open, ← forall_and, ← iff_def,
    Iff.comm]
Theorem: PartialHomeomorph.continuous_iff_continuous_comp_left
File: Mathlib/Topology/PartialHomeomorph.lean

Proof steps:
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
f : Z → X
h : f ⁻¹' e.source = univ
⊢ Continuous f ↔ Continuous (↑e ∘ f)
state_after: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
f : Z → X
h : f ⁻¹' e.source = univ
⊢ ContinuousOn f univ ↔ ContinuousOn (↑e ∘ f) univ
tactic: simp only [continuous_iff_continuousOn_univ]
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
f : Z → X
h : f ⁻¹' e.source = univ
⊢ ContinuousOn f univ ↔ ContinuousOn (↑e ∘ f) univ
state_after: no goals
tactic: exact e.continuousOn_iff_continuousOn_comp_left (Eq.symm h).subset
Theorem: CategoryTheory.ChosenFiniteProducts.lift_snd
File: Mathlib/CategoryTheory/ChosenFiniteProducts.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : ChosenFiniteProducts C
T X Y : C
f : T ⟶ X
g : T ⟶ Y
⊢ lift f g ≫ snd X Y = g
state_after: no goals
tactic: simp [lift, snd]
Theorem: LipschitzWith.lipschitzWith_compLp
File: Mathlib/MeasureTheory/Function/LpSpace.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
g✝ : E → F
c : ℝ≥0
inst✝ : Fact (1 ≤ p)
hg : LipschitzWith c g✝
g0 : g✝ 0 = 0
f g : ↥(Lp E p μ)
⊢ dist (hg.compLp g0 f) (hg.compLp g0 g) ≤ ↑c * dist f g
state_after: no goals
tactic: simp [dist_eq_norm, norm_compLp_sub_le]
Theorem: Num.succ_ofInt'
File: Mathlib/Data/Num/Lemmas.lean

Proof steps:
state_before: α : Type u_1
n : ℕ
⊢ ZNum.ofInt' (↑n + 1) = ZNum.ofInt' ↑n + 1
state_after: α : Type u_1
n : ℕ
⊢ ZNum.ofInt' ↑(n + 1) = ZNum.ofInt' ↑n + 1
tactic: change ZNum.ofInt' (n + 1 : ℕ) = ZNum.ofInt' (n : ℕ) + 1
state_before: α : Type u_1
n : ℕ
⊢ ZNum.ofInt' ↑(n + 1) = ZNum.ofInt' ↑n + 1
state_after: α : Type u_1
n : ℕ
⊢ (ofNat' (n + 1)).toZNum = (ofNat' n).toZNum + 1
tactic: dsimp only [ZNum.ofInt', ZNum.ofInt']
state_before: α : Type u_1
n : ℕ
⊢ (ofNat' (n + 1)).toZNum = (ofNat' n).toZNum + 1
state_after: no goals
tactic: rw [Num.ofNat'_succ, Num.add_one, toZNum_succ, ZNum.add_one]
state_before: α : Type u_1
⊢ ZNum.ofInt' (-[0+1] + 1) = ZNum.ofInt' -[0+1] + 1
state_after: α : Type u_1
⊢ ZNum.ofInt' 0 = ZNum.ofInt' -[0+1] + 1
tactic: change ZNum.ofInt' 0 = ZNum.ofInt' (-[0+1]) + 1
state_before: α : Type u_1
⊢ ZNum.ofInt' 0 = ZNum.ofInt' -[0+1] + 1
state_after: α : Type u_1
⊢ (ofNat' 0).toZNum = (ofNat' (0 + 1)).toZNumNeg + 1
tactic: dsimp only [ZNum.ofInt', ZNum.ofInt']
state_before: α : Type u_1
⊢ (ofNat' 0).toZNum = (ofNat' (0 + 1)).toZNumNeg + 1
state_after: α : Type u_1
⊢ toZNum 0 = (0 + 1).toZNumNeg + 1
tactic: rw [ofNat'_succ, ofNat'_zero]
state_before: α : Type u_1
⊢ toZNum 0 = (0 + 1).toZNumNeg + 1
state_after: no goals
tactic: rfl
state_before: α : Type u_1
n : ℕ
⊢ ZNum.ofInt' (-[n + 1+1] + 1) = ZNum.ofInt' -[n + 1+1] + 1
state_after: α : Type u_1
n : ℕ
⊢ ZNum.ofInt' -[n+1] = ZNum.ofInt' -[n + 1+1] + 1
tactic: change ZNum.ofInt' -[n+1] = ZNum.ofInt' -[(n + 1)+1] + 1
state_before: α : Type u_1
n : ℕ
⊢ ZNum.ofInt' -[n+1] = ZNum.ofInt' -[n + 1+1] + 1
state_after: α : Type u_1
n : ℕ
⊢ (ofNat' (n + 1)).toZNumNeg = (ofNat' (n + 1 + 1)).toZNumNeg + 1
tactic: dsimp only [ZNum.ofInt', ZNum.ofInt']
state_before: α : Type u_1
n : ℕ
⊢ (ofNat' (n + 1)).toZNumNeg = (ofNat' (n + 1 + 1)).toZNumNeg + 1
state_after: no goals
tactic: rw [@Num.ofNat'_succ (n + 1), Num.add_one, toZNumNeg_succ,
      @ofNat'_succ n, Num.add_one, ZNum.add_one, pred_succ]
Theorem: FirstOrder.Language.BoundedFormula.realize_foldr_sup
File: Mathlib/ModelTheory/Semantics.lean

Proof steps:
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n l✝ : ℕ
φ ψ : L.BoundedFormula α l✝
θ : L.BoundedFormula α l✝.succ
v✝ : α → M
xs✝ : Fin l✝ → M
l : List (L.BoundedFormula α n)
v : α → M
xs : Fin n → M
⊢ (List.foldr (fun x x_1 => x ⊔ x_1) ⊥ l).Realize v xs ↔ ∃ φ ∈ l, φ.Realize v xs
state_after: case nil
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n l : ℕ
φ ψ : L.BoundedFormula α l
θ : L.BoundedFormula α l.succ
v✝ : α → M
xs✝ : Fin l → M
v : α → M
xs : Fin n → M
⊢ (List.foldr (fun x x_1 => x ⊔ x_1) ⊥ []).Realize v xs ↔ ∃ φ ∈ [], φ.Realize v xs

case cons
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n l✝ : ℕ
φ✝ ψ : L.BoundedFormula α l✝
θ : L.BoundedFormula α l✝.succ
v✝ : α → M
xs✝ : Fin l✝ → M
v : α → M
xs : Fin n → M
φ : L.BoundedFormula α n
l : List (L.BoundedFormula α n)
ih : (List.foldr (fun x x_1 => x ⊔ x_1) ⊥ l).Realize v xs ↔ ∃ φ ∈ l, φ.Realize v xs
⊢ (List.foldr (fun x x_1 => x ⊔ x_1) ⊥ (φ :: l)).Realize v xs ↔ ∃ φ_1 ∈ φ :: l, φ_1.Realize v xs
tactic: induction' l with φ l ih
Theorem: Homeomorph.isOpen_image
File: Mathlib/Topology/Homeomorph.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
X' : Type u_4
Y' : Type u_5
inst✝¹ : TopologicalSpace X'
inst✝ : TopologicalSpace Y'
h : X ≃ₜ Y
s : Set X
⊢ IsOpen (⇑h '' s) ↔ IsOpen s
state_after: no goals
tactic: rw [← preimage_symm, isOpen_preimage]
Theorem: Filter.tendsto_comap'_iff
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l : Filter α
m : α → β
f : Filter α
g : Filter β
i : γ → α
h : range i ∈ f
⊢ Tendsto (m ∘ i) (comap i f) g ↔ Tendsto m f g
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l : Filter α
m : α → β
f : Filter α
g : Filter β
i : γ → α
h : range i ∈ f
⊢ (map m ∘ map i) (comap i f) ≤ g ↔ Tendsto m f g
tactic: rw [Tendsto, ← map_compose]
Theorem: sInf_neg
File: Mathlib/Algebra/Order/Pointwise.lean

Proof steps:
state_before: α : Type u_1
inst✝³ : CompleteLattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
s✝ t s : Set α
⊢ sInf s⁻¹ = (sSup s)⁻¹
state_after: α : Type u_1
inst✝³ : CompleteLattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
s✝ t s : Set α
⊢ ⨅ a ∈ s, a⁻¹ = (sSup s)⁻¹
tactic: rw [← image_inv, sInf_image]
state_before: α : Type u_1
inst✝³ : CompleteLattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
s✝ t s : Set α
⊢ ⨅ a ∈ s, a⁻¹ = (sSup s)⁻¹
state_after: no goals
tactic: exact ((OrderIso.inv α).map_sSup _).symm
Theorem: strictMonoOn_dual_iff
File: Mathlib/Order/Monotone/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
δ : Type u_2
π : ι → Type u_3
r : α → α → Prop
inst✝¹ : Preorder α
inst✝ : Preorder β
f : α → β
s : Set α
⊢ StrictMonoOn (⇑toDual ∘ f ∘ ⇑ofDual) s ↔ StrictMonoOn f s
state_after: no goals
tactic: rw [strictMonoOn_toDual_comp_iff, strictAntiOn_comp_ofDual_iff]
Theorem: SMulPosReflectLT.of_pos
File: Mathlib/Algebra/Order/Module/Defs.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
a a₁✝ a₂✝ : α
b✝ b₁ b₂ : β
inst✝⁴ : Zero α
inst✝³ : Zero β
inst✝² : SMulWithZero α β
inst✝¹ : Preorder α
inst✝ : PartialOrder β
h₀ : ∀ (b : β), 0 < b → ∀ (a₁ a₂ : α), a₁ • b < a₂ • b → a₁ < a₂
b : β
hb : 0 ≤ b
a₁ a₂ : α
h : a₁ • b < a₂ • b
⊢ a₁ < a₂
state_after: case inl
α : Type u_1
β : Type u_2
a a₁✝ a₂✝ : α
b✝ b₁ b₂ : β
inst✝⁴ : Zero α
inst✝³ : Zero β
inst✝² : SMulWithZero α β
inst✝¹ : Preorder α
inst✝ : PartialOrder β
h₀ : ∀ (b : β), 0 < b → ∀ (a₁ a₂ : α), a₁ • b < a₂ • b → a₁ < a₂
b : β
hb✝ : 0 ≤ b
a₁ a₂ : α
h : a₁ • b < a₂ • b
hb : 0 = b
⊢ a₁ < a₂

case inr
α : Type u_1
β : Type u_2
a a₁✝ a₂✝ : α
b✝ b₁ b₂ : β
inst✝⁴ : Zero α
inst✝³ : Zero β
inst✝² : SMulWithZero α β
inst✝¹ : Preorder α
inst✝ : PartialOrder β
h₀ : ∀ (b : β), 0 < b → ∀ (a₁ a₂ : α), a₁ • b < a₂ • b → a₁ < a₂
b : β
hb✝ : 0 ≤ b
a₁ a₂ : α
h : a₁ • b < a₂ • b
hb : 0 < b
⊢ a₁ < a₂
tactic: obtain hb | hb := hb.eq_or_lt
Theorem: DoubleQuot.quotQuotEquivComm_symm
File: Mathlib/RingTheory/Ideal/QuotientOperations.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
I J : Ideal R
⊢ (quotQuotEquivComm I J).symm = quotQuotEquivComm J I
state_after: R : Type u
inst✝ : CommRing R
I J : Ideal R
⊢ (((quotQuotEquivQuotSup I J).trans (quotEquivOfEq ⋯)).trans (quotQuotEquivQuotSup J I).symm).symm =
    ((quotQuotEquivQuotSup J I).trans (quotEquivOfEq ⋯)).trans (quotQuotEquivQuotSup I J).symm
tactic: change (((quotQuotEquivQuotSup I J).trans (quotEquivOfEq (sup_comm ..))).trans
    (quotQuotEquivQuotSup J I).symm).symm =
      ((quotQuotEquivQuotSup J I).trans (quotEquivOfEq (sup_comm ..))).trans
        (quotQuotEquivQuotSup I J).symm
state_before: R : Type u
inst✝ : CommRing R
I J : Ideal R
⊢ (((quotQuotEquivQuotSup I J).trans (quotEquivOfEq ⋯)).trans (quotQuotEquivQuotSup J I).symm).symm =
    ((quotQuotEquivQuotSup J I).trans (quotEquivOfEq ⋯)).trans (quotQuotEquivQuotSup I J).symm
state_after: case h
R : Type u
inst✝ : CommRing R
I J : Ideal R
r : (R ⧸ J) ⧸ map (Ideal.Quotient.mk J) I
⊢ (((quotQuotEquivQuotSup I J).trans (quotEquivOfEq ⋯)).trans (quotQuotEquivQuotSup J I).symm).symm r =
    (((quotQuotEquivQuotSup J I).trans (quotEquivOfEq ⋯)).trans (quotQuotEquivQuotSup I J).symm) r
tactic: ext r
state_before: case h
R : Type u
inst✝ : CommRing R
I J : Ideal R
r : (R ⧸ J) ⧸ map (Ideal.Quotient.mk J) I
⊢ (((quotQuotEquivQuotSup I J).trans (quotEquivOfEq ⋯)).trans (quotQuotEquivQuotSup J I).symm).symm r =
    (((quotQuotEquivQuotSup J I).trans (quotEquivOfEq ⋯)).trans (quotQuotEquivQuotSup I J).symm) r
state_after: case h
R : Type u
inst✝ : CommRing R
I J : Ideal R
r : (R ⧸ J) ⧸ map (Ideal.Quotient.mk J) I
⊢ (quotQuotEquivQuotSup I J).symm ((quotEquivOfEq ⋯).symm ((quotQuotEquivQuotSup J I).symm.symm r)) =
    (quotQuotEquivQuotSup I J).symm ((quotEquivOfEq ⋯) ((quotQuotEquivQuotSup J I) r))
tactic: dsimp
state_before: case h
R : Type u
inst✝ : CommRing R
I J : Ideal R
r : (R ⧸ J) ⧸ map (Ideal.Quotient.mk J) I
⊢ (quotQuotEquivQuotSup I J).symm ((quotEquivOfEq ⋯).symm ((quotQuotEquivQuotSup J I).symm.symm r)) =
    (quotQuotEquivQuotSup I J).symm ((quotEquivOfEq ⋯) ((quotQuotEquivQuotSup J I) r))
state_after: no goals
tactic: rfl