ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Int.Matrix.exists_ne_zero_int_vec_norm_le'
File: Mathlib/NumberTheory/SiegelsLemma.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Fintype α
inst✝ : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
hA : A ≠ 0
⊢ ∃ t, t ≠ 0 ∧ A *ᵥ t = 0 ∧ ‖t‖ ≤ (↑n * ‖A‖) ^ e
state_after: α : Type u_1
β : Type u_2
inst✝¹ : Fintype α
inst✝ : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
hA : A ≠ 0
this : ∃ t, t ≠ 0 ∧ A *ᵥ t = 0 ∧ ‖t‖ ≤ (↑n * max 1 ‖A‖) ^ e
⊢ ∃ t, t ≠ 0 ∧ A *ᵥ t = 0 ∧ ‖t‖ ≤ (↑n * ‖A‖) ^ e
tactic: have := exists_ne_zero_int_vec_norm_le A hn hm
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Fintype α
inst✝ : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
hA : A ≠ 0
this : ∃ t, t ≠ 0 ∧ A *ᵥ t = 0 ∧ ‖t‖ ≤ (↑n * max 1 ‖A‖) ^ e
⊢ ∃ t, t ≠ 0 ∧ A *ᵥ t = 0 ∧ ‖t‖ ≤ (↑n * ‖A‖) ^ e
state_after: α : Type u_1
β : Type u_2
inst✝¹ : Fintype α
inst✝ : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
hA : A ≠ 0
this : ∃ t, t ≠ 0 ∧ A *ᵥ t = 0 ∧ ‖t‖ ≤ (↑n * max 1 ‖A‖) ^ e
⊢ 1 ≤ ‖A‖
tactic: rwa [max_eq_right] at this
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Fintype α
inst✝ : Fintype β
A : Matrix α β ℤ
v : β → ℤ
hn : m < n
hm : 0 < m
hA : A ≠ 0
this : ∃ t, t ≠ 0 ∧ A *ᵥ t = 0 ∧ ‖t‖ ≤ (↑n * max 1 ‖A‖) ^ e
⊢ 1 ≤ ‖A‖
state_after: no goals
tactic: exact Int.Matrix.one_le_norm_A_of_ne_zero _ hA
Theorem: CategoryTheory.NonPreadditiveAbelian.neg_sub
File: Mathlib/CategoryTheory/Abelian/NonPreadditive.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : NonPreadditiveAbelian C
X Y : C
a b : X ⟶ Y
⊢ -a - b = -b - a
state_after: no goals
tactic: conv_lhs => rw [neg_def, ← sub_zero b, sub_sub_sub, sub_zero, ← neg_def]
Theorem: Finset.dens_inter_add_dens_union
File: Mathlib/Data/Finset/Density.lean

Proof steps:
state_before: 𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Fintype α
s✝ t✝ : Finset α
a b : α
inst✝ : DecidableEq α
s t : Finset α
⊢ (s ∩ t).dens + (s ∪ t).dens = s.dens + t.dens
state_after: no goals
tactic: rw [add_comm, dens_union_add_dens_inter]
Theorem: Rat.divInt_div_divInt
File: Mathlib/Data/Rat/Defs.lean

Proof steps:
state_before: q : ℚ
n₁ d₁ n₂ d₂ : ℤ
⊢ n₁ /. d₁ / (n₂ /. d₂) = n₁ * d₂ /. (d₁ * n₂)
state_after: no goals
tactic: rw [div_def, inv_divInt, divInt_mul_divInt']
Theorem: ArithmeticFunction.pmul_zeta
File: Mathlib/NumberTheory/ArithmeticFunction.lean

Proof steps:
state_before: R : Type u_1
inst✝ : NonAssocSemiring R
f : ArithmeticFunction R
⊢ f.pmul ↑ζ = f
state_after: case h
R : Type u_1
inst✝ : NonAssocSemiring R
f : ArithmeticFunction R
x : ℕ
⊢ (f.pmul ↑ζ) x = f x
tactic: ext x
state_before: case h
R : Type u_1
inst✝ : NonAssocSemiring R
f : ArithmeticFunction R
x : ℕ
⊢ (f.pmul ↑ζ) x = f x
state_after: no goals
tactic: cases x <;> simp [Nat.succ_ne_zero]
Theorem: sSup_within_of_ordConnected
File: Mathlib/Order/CompleteLatticeIntervals.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u_2
s✝ : Set α
inst✝ : ConditionallyCompleteLinearOrder α
s : Set α
hs : s.OrdConnected
t : Set ↑s
ht : t.Nonempty
h_bdd : BddAbove t
⊢ sSup (Subtype.val '' t) ∈ s
state_after: case intro
ι : Sort u_1
α : Type u_2
s✝ : Set α
inst✝ : ConditionallyCompleteLinearOrder α
s : Set α
hs : s.OrdConnected
t : Set ↑s
h_bdd : BddAbove t
c : ↑s
hct : c ∈ t
⊢ sSup (Subtype.val '' t) ∈ s
tactic: obtain ⟨c, hct⟩ : ∃ c, c ∈ t := ht
state_before: case intro
ι : Sort u_1
α : Type u_2
s✝ : Set α
inst✝ : ConditionallyCompleteLinearOrder α
s : Set α
hs : s.OrdConnected
t : Set ↑s
h_bdd : BddAbove t
c : ↑s
hct : c ∈ t
⊢ sSup (Subtype.val '' t) ∈ s
state_after: case intro.intro
ι : Sort u_1
α : Type u_2
s✝ : Set α
inst✝ : ConditionallyCompleteLinearOrder α
s : Set α
hs : s.OrdConnected
t : Set ↑s
c : ↑s
hct : c ∈ t
B : ↑s
hB : B ∈ upperBounds t
⊢ sSup (Subtype.val '' t) ∈ s
tactic: obtain ⟨B, hB⟩ : ∃ B, B ∈ upperBounds t := h_bdd
state_before: case intro.intro
ι : Sort u_1
α : Type u_2
s✝ : Set α
inst✝ : ConditionallyCompleteLinearOrder α
s : Set α
hs : s.OrdConnected
t : Set ↑s
c : ↑s
hct : c ∈ t
B : ↑s
hB : B ∈ upperBounds t
⊢ sSup (Subtype.val '' t) ∈ s
state_after: case intro.intro.refine_1
ι : Sort u_1
α : Type u_2
s✝ : Set α
inst✝ : ConditionallyCompleteLinearOrder α
s : Set α
hs : s.OrdConnected
t : Set ↑s
c : ↑s
hct : c ∈ t
B : ↑s
hB : B ∈ upperBounds t
⊢ ↑c ≤ sSup (Subtype.val '' t)

case intro.intro.refine_2
ι : Sort u_1
α : Type u_2
s✝ : Set α
inst✝ : ConditionallyCompleteLinearOrder α
s : Set α
hs : s.OrdConnected
t : Set ↑s
c : ↑s
hct : c ∈ t
B : ↑s
hB : B ∈ upperBounds t
⊢ sSup (Subtype.val '' t) ≤ ↑B
tactic: refine hs.out c.2 B.2 ⟨?_, ?_⟩
Theorem: AddConstMapClass.map_sub_int
File: Mathlib/Algebra/AddConstMap/Basic.lean

Proof steps:
state_before: F : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : FunLike F G H
a : G
b : H
inst✝² : AddGroupWithOne G
inst✝¹ : AddGroupWithOne H
inst✝ : AddConstMapClass F G H 1 1
f : F
x : G
n : ℤ
⊢ f (x - ↑n) = f x - ↑n
state_after: no goals
tactic: simp
Theorem: CategoryTheory.ShortComplex.FunctorEquivalence.inverse_obj_X₁
File: Mathlib/Algebra/Homology/ShortComplex/FunctorEquivalence.lean

Proof steps:
state_before: J : Type u_1
C : Type u_2
inst✝² : Category.{?u.17393, u_1} J
inst✝¹ : Category.{?u.17397, u_2} C
inst✝ : HasZeroMorphisms C
F : J ⥤ ShortComplex C
⊢ whiskerLeft F π₁Toπ₂ ≫ whiskerLeft F π₂Toπ₃ = 0
state_after: no goals
tactic: aesop_cat
state_before: J : Type u_1
C : Type u_2
inst✝² : Category.{?u.17393, u_1} J
inst✝¹ : Category.{?u.17397, u_2} C
inst✝ : HasZeroMorphisms C
X✝ Y✝ : J ⥤ ShortComplex C
φ : X✝ ⟶ Y✝
⊢ whiskerRight φ π₁ ≫ ((fun F => mk (whiskerLeft F π₁Toπ₂) (whiskerLeft F π₂Toπ₃) ⋯) Y✝).f =
    ((fun F => mk (whiskerLeft F π₁Toπ₂) (whiskerLeft F π₂Toπ₃) ⋯) X✝).f ≫ whiskerRight φ π₂
state_after: no goals
tactic: aesop_cat
state_before: J : Type u_1
C : Type u_2
inst✝² : Category.{?u.17393, u_1} J
inst✝¹ : Category.{?u.17397, u_2} C
inst✝ : HasZeroMorphisms C
X✝ Y✝ : J ⥤ ShortComplex C
φ : X✝ ⟶ Y✝
⊢ whiskerRight φ π₂ ≫ ((fun F => mk (whiskerLeft F π₁Toπ₂) (whiskerLeft F π₂Toπ₃) ⋯) Y✝).g =
    ((fun F => mk (whiskerLeft F π₁Toπ₂) (whiskerLeft F π₂Toπ₃) ⋯) X✝).g ≫ whiskerRight φ π₃
state_after: no goals
tactic: aesop_cat
Theorem: MulChar.exists_apply_eq_pow
File: Mathlib/NumberTheory/MulChar/Lemmas.lean

Proof steps:
state_before: F : Type u_1
inst✝³ : Field F
inst✝² : Finite F
R : Type u_2
inst✝¹ : CommRing R
inst✝ : IsDomain R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
μ : R
hμ : IsPrimitiveRoot μ n
a : F
ha : a ≠ 0
⊢ ∃ k < n, χ a = μ ^ k
state_after: F : Type u_1
inst✝³ : Field F
inst✝² : Finite F
R : Type u_2
inst✝¹ : CommRing R
inst✝ : IsDomain R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
μ : R
hμ : IsPrimitiveRoot μ n
a : F
ha : a ≠ 0
hn' : 0 < n
⊢ ∃ k < n, χ a = μ ^ k
tactic: have hn' := Nat.pos_of_ne_zero hn
state_before: F : Type u_1
inst✝³ : Field F
inst✝² : Finite F
R : Type u_2
inst✝¹ : CommRing R
inst✝ : IsDomain R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
μ : R
hμ : IsPrimitiveRoot μ n
a : F
ha : a ≠ 0
hn' : 0 < n
⊢ ∃ k < n, χ a = μ ^ k
state_after: case intro.intro
F : Type u_1
inst✝³ : Field F
inst✝² : Finite F
R : Type u_2
inst✝¹ : CommRing R
inst✝ : IsDomain R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
μ : R
hμ : IsPrimitiveRoot μ n
a : F
ha : a ≠ 0
hn' : 0 < n
ζ : Rˣ
hζ₁ : ζ ∈ rootsOfUnity ⟨n, ⋯⟩ R
hζ₂ : ↑ζ = χ a
⊢ ∃ k < n, χ a = μ ^ k
tactic: obtain ⟨ζ, hζ₁, hζ₂⟩ := apply_mem_rootsOfUnity_of_pow_eq_one hn hχ ha
state_before: case intro.intro
F : Type u_1
inst✝³ : Field F
inst✝² : Finite F
R : Type u_2
inst✝¹ : CommRing R
inst✝ : IsDomain R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
μ : R
hμ : IsPrimitiveRoot μ n
a : F
ha : a ≠ 0
hn' : 0 < n
ζ : Rˣ
hζ₁ : ζ ∈ rootsOfUnity ⟨n, ⋯⟩ R
hζ₂ : ↑ζ = χ a
⊢ ∃ k < n, χ a = μ ^ k
state_after: case intro.intro
F : Type u_1
inst✝³ : Field F
inst✝² : Finite F
R : Type u_2
inst✝¹ : CommRing R
inst✝ : IsDomain R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
μ : R
hμ : IsPrimitiveRoot μ n
a : F
ha : a ≠ 0
hn' : 0 < n
ζ : Rˣ
hζ₁ : ζ ∈ rootsOfUnity ⟨n, ⋯⟩ R
hζ₂ : ↑ζ = χ a
hζ' : ↑ζ ^ n = 1
⊢ ∃ k < n, χ a = μ ^ k
tactic: have hζ' : ζ.val ^ n = 1 := (mem_rootsOfUnity' ⟨n, hn'⟩ ↑ζ).mp hζ₁
state_before: case intro.intro
F : Type u_1
inst✝³ : Field F
inst✝² : Finite F
R : Type u_2
inst✝¹ : CommRing R
inst✝ : IsDomain R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
μ : R
hμ : IsPrimitiveRoot μ n
a : F
ha : a ≠ 0
hn' : 0 < n
ζ : Rˣ
hζ₁ : ζ ∈ rootsOfUnity ⟨n, ⋯⟩ R
hζ₂ : ↑ζ = χ a
hζ' : ↑ζ ^ n = 1
⊢ ∃ k < n, χ a = μ ^ k
state_after: case intro.intro.intro.intro
F : Type u_1
inst✝³ : Field F
inst✝² : Finite F
R : Type u_2
inst✝¹ : CommRing R
inst✝ : IsDomain R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
μ : R
hμ : IsPrimitiveRoot μ n
a : F
ha : a ≠ 0
hn' : 0 < n
ζ : Rˣ
hζ₁ : ζ ∈ rootsOfUnity ⟨n, ⋯⟩ R
hζ₂ : ↑ζ = χ a
hζ' : ↑ζ ^ n = 1
k : ℕ
hk₁ : k < n
hk₂ : μ ^ k = ↑ζ
⊢ ∃ k < n, χ a = μ ^ k
tactic: obtain ⟨k, hk₁, hk₂⟩ := hμ.eq_pow_of_pow_eq_one hζ' hn'
state_before: case intro.intro.intro.intro
F : Type u_1
inst✝³ : Field F
inst✝² : Finite F
R : Type u_2
inst✝¹ : CommRing R
inst✝ : IsDomain R
χ : MulChar F R
n : ℕ
hn : n ≠ 0
hχ : χ ^ n = 1
μ : R
hμ : IsPrimitiveRoot μ n
a : F
ha : a ≠ 0
hn' : 0 < n
ζ : Rˣ
hζ₁ : ζ ∈ rootsOfUnity ⟨n, ⋯⟩ R
hζ₂ : ↑ζ = χ a
hζ' : ↑ζ ^ n = 1
k : ℕ
hk₁ : k < n
hk₂ : μ ^ k = ↑ζ
⊢ ∃ k < n, χ a = μ ^ k
state_after: no goals
tactic: exact ⟨k, hk₁, (hζ₂ ▸ hk₂).symm⟩
Theorem: Real.rpow_inv_lt_iff_of_neg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

Proof steps:
state_before: x y z : ℝ
n : ℕ
hx : 0 < x
hy : 0 < y
hz : z < 0
⊢ x ^ z⁻¹ < y ↔ y ^ z < x
state_after: no goals
tactic: rw [← rpow_lt_rpow_iff_of_neg hy _ hz, rpow_inv_rpow _ hz.ne] <;> positivity
Theorem: Matrix.conjTranspose_circulant
File: Mathlib/LinearAlgebra/Matrix/Circulant.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
R : Type u_5
inst✝¹ : Star α
inst✝ : AddGroup n
v : n → α
⊢ (circulant v)ᴴ = circulant (star fun i => v (-i))
state_after: case a
α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
R : Type u_5
inst✝¹ : Star α
inst✝ : AddGroup n
v : n → α
i✝ j✝ : n
⊢ (circulant v)ᴴ i✝ j✝ = circulant (star fun i => v (-i)) i✝ j✝
tactic: ext
state_before: case a
α : Type u_1
β : Type u_2
m : Type u_3
n : Type u_4
R : Type u_5
inst✝¹ : Star α
inst✝ : AddGroup n
v : n → α
i✝ j✝ : n
⊢ (circulant v)ᴴ i✝ j✝ = circulant (star fun i => v (-i)) i✝ j✝
state_after: no goals
tactic: simp
Theorem: List.toFinset_replicate_of_ne_zero
File: Mathlib/Data/Finset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
l l' : List α
a : α
n : ℕ
hn : n ≠ 0
⊢ (replicate n a).toFinset = {a}
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
l l' : List α
a : α
n : ℕ
hn : n ≠ 0
x : α
⊢ x ∈ (replicate n a).toFinset ↔ x ∈ {a}
tactic: ext x
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
l l' : List α
a : α
n : ℕ
hn : n ≠ 0
x : α
⊢ x ∈ (replicate n a).toFinset ↔ x ∈ {a}
state_after: no goals
tactic: simp [hn, List.mem_replicate]
Theorem: Ordinal.limitRecOn_succ
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
C : Ordinal.{u_4} → Sort u_5
o : Ordinal.{u_4}
H₁ : C 0
H₂ : (o : Ordinal.{u_4}) → C o → C (succ o)
H₃ : (o : Ordinal.{u_4}) → o.IsLimit → ((o' : Ordinal.{u_4}) → o' < o → C o') → C o
⊢ (succ o).limitRecOn H₁ H₂ H₃ = H₂ o (o.limitRecOn H₁ H₂ H₃)
state_after: no goals
tactic: simp_rw [limitRecOn, SuccOrder.limitRecOn_succ _ _ (not_isMax _)]
Theorem: ZMod.χ₈'_int_eq_χ₄_mul_χ₈
File: Mathlib/NumberTheory/LegendreSymbol/ZModChar.lean

Proof steps:
state_before: a : ℤ
⊢ χ₈' ↑a = χ₄ ↑a * χ₈ ↑a
state_after: a : ℤ
⊢ χ₈' ↑a = χ₄ (↑a).cast * χ₈ ↑a
tactic: rw [← @cast_intCast 8 (ZMod 4) _ 4 _ (by omega) a]
state_before: a : ℤ
⊢ χ₈' ↑a = χ₄ (↑a).cast * χ₈ ↑a
state_after: no goals
tactic: exact χ₈'_eq_χ₄_mul_χ₈ a
Theorem: PiTensorProduct.lift_comp_reindex
File: Mathlib/LinearAlgebra/PiTensorProduct.lean

Proof steps:
state_before: ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
e : ι ≃ ι₂
φ : MultilinearMap R (fun i => s (e.symm i)) E
⊢ lift φ ∘ₗ ↑(reindex R s e) = lift ((domDomCongrLinearEquiv' R R s E e).symm φ)
state_after: case H.H
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
e : ι ≃ ι₂
φ : MultilinearMap R (fun i => s (e.symm i)) E
x✝ : (i : ι) → s i
⊢ ((lift φ ∘ₗ ↑(reindex R s e)).compMultilinearMap (tprod R)) x✝ =
    ((lift ((domDomCongrLinearEquiv' R R s E e).symm φ)).compMultilinearMap (tprod R)) x✝
tactic: ext
state_before: case H.H
ι : Type u_1
ι₂ : Type u_2
ι₃ : Type u_3
R : Type u_4
inst✝⁷ : CommSemiring R
R₁ : Type u_5
R₂ : Type u_6
s : ι → Type u_7
inst✝⁶ : (i : ι) → AddCommMonoid (s i)
inst✝⁵ : (i : ι) → Module R (s i)
M : Type u_8
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
E : Type u_9
inst✝² : AddCommMonoid E
inst✝¹ : Module R E
F : Type u_10
inst✝ : AddCommMonoid F
e : ι ≃ ι₂
φ : MultilinearMap R (fun i => s (e.symm i)) E
x✝ : (i : ι) → s i
⊢ ((lift φ ∘ₗ ↑(reindex R s e)).compMultilinearMap (tprod R)) x✝ =
    ((lift ((domDomCongrLinearEquiv' R R s E e).symm φ)).compMultilinearMap (tprod R)) x✝
state_after: no goals
tactic: simp [reindex]
Theorem: rank_finsupp_self'
File: Mathlib/LinearAlgebra/Dimension/Constructions.lean

Proof steps:
state_before: R S : Type u
M : Type v
M' : Type v'
M₁ : Type v
ι✝ : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type u_1
inst✝¹⁰ : Ring R
inst✝⁹ : CommRing S
inst✝⁸ : AddCommGroup M
inst✝⁷ : AddCommGroup M'
inst✝⁶ : AddCommGroup M₁
inst✝⁵ : Module R M
inst✝⁴ : Module R M'
inst✝³ : Module R M₁
inst✝² : StrongRankCondition R
inst✝¹ : Module.Free R M
inst✝ : Module.Free R M'
ι : Type u
⊢ Module.rank R (ι →₀ R) = #ι
state_after: no goals
tactic: simp
Theorem: SimpleGraph.Subgraph.singletonSubgraph_eq_induce
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
s s' : Set V
v : V
⊢ G.singletonSubgraph v = ⊤.induce {v}
state_after: no goals
tactic: ext <;> simp (config := { contextual := true }) [-Set.bot_eq_empty, Prop.bot_eq_false]
Theorem: completeSpace_coe_iff_isComplete
File: Mathlib/Topology/UniformSpace/UniformEmbedding.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝² : UniformSpace α
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
s : Set α
⊢ IsComplete (range Subtype.val) ↔ IsComplete s
state_after: no goals
tactic: rw [Subtype.range_coe]
Theorem: Path.continuous_uncurry_extend_of_continuous_family
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
γ✝ : Path x y
ι : Type u_4
inst✝ : TopologicalSpace ι
a b : ι → X
γ : (t : ι) → Path (a t) (b t)
h : Continuous ↿γ
⊢ Continuous ↿fun t => (γ t).extend
state_after: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι✝ : Type u_3
γ✝ : Path x y
ι : Type u_4
inst✝ : TopologicalSpace ι
a b : ι → X
γ : (t : ι) → Path (a t) (b t)
h : Continuous ↿γ
⊢ 0 ≤ 1
tactic: apply h.comp (continuous_id.prod_map continuous_projIcc)
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
x y z : X
ι✝ : Type u_3
γ✝ : Path x y
ι : Type u_4
inst✝ : TopologicalSpace ι
a b : ι → X
γ : (t : ι) → Path (a t) (b t)
h : Continuous ↿γ
⊢ 0 ≤ 1
state_after: no goals
tactic: exact zero_le_one
Theorem: AddSubmonoid.le_prod_iff
File: Mathlib/Algebra/Group/Submonoid/Operations.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
s : Submonoid M
t : Submonoid N
u : Submonoid (M × N)
⊢ u ≤ s.prod t ↔ map (fst M N) u ≤ s ∧ map (snd M N) u ≤ t
state_after: case mp
M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
s : Submonoid M
t : Submonoid N
u : Submonoid (M × N)
⊢ u ≤ s.prod t → map (fst M N) u ≤ s ∧ map (snd M N) u ≤ t

case mpr
M : Type u_1
N : Type u_2
P : Type u_3
inst✝³ : MulOneClass M
inst✝² : MulOneClass N
inst✝¹ : MulOneClass P
S : Submonoid M
A : Type u_4
inst✝ : SetLike A M
hA : SubmonoidClass A M
S' : A
s : Submonoid M
t : Submonoid N
u : Submonoid (M × N)
⊢ map (fst M N) u ≤ s ∧ map (snd M N) u ≤ t → u ≤ s.prod t
tactic: constructor
Theorem: Complex.re_eq_abs
File: Mathlib/Data/Complex/Order.lean

Proof steps:
state_before: z : ℂ
this : 0 ≤ abs z
x✝ : 0 ≤ z
h₁ : re 0 ≤ z.re
h₂ : im 0 = z.im
⊢ z.re = abs z
state_after: no goals
tactic: rw [← abs_re_eq_abs.2 h₂.symm, _root_.abs_of_nonneg h₁]
Theorem: ONote.NFBelow.mono
File: Mathlib/SetTheory/Ordinal/Notation.lean

Proof steps:
state_before: o : ONote
b₁ b₂ : Ordinal.{0}
bb : b₁ ≤ b₂
h : o.NFBelow b₁
⊢ o.NFBelow b₂
state_after: case oadd'.a
o : ONote
b₁ b₂ : Ordinal.{0}
e : ONote
n : ℕ+
a : ONote
eb b : Ordinal.{0}
h₁ : e.NFBelow eb
h₂ : a.NFBelow e.repr
h₃ : e.repr < b
a_ih✝¹ : eb ≤ b₂ → e.NFBelow b₂
a_ih✝ : e.repr ≤ b₂ → a.NFBelow b₂
bb : b ≤ b₂
⊢ e.NFBelow ?oadd'.eb

case oadd'.a
o : ONote
b₁ b₂ : Ordinal.{0}
e : ONote
n : ℕ+
a : ONote
eb b : Ordinal.{0}
h₁ : e.NFBelow eb
h₂ : a.NFBelow e.repr
h₃ : e.repr < b
a_ih✝¹ : eb ≤ b₂ → e.NFBelow b₂
a_ih✝ : e.repr ≤ b₂ → a.NFBelow b₂
bb : b ≤ b₂
⊢ a.NFBelow e.repr

case oadd'.a
o : ONote
b₁ b₂ : Ordinal.{0}
e : ONote
n : ℕ+
a : ONote
eb b : Ordinal.{0}
h₁ : e.NFBelow eb
h₂ : a.NFBelow e.repr
h₃ : e.repr < b
a_ih✝¹ : eb ≤ b₂ → e.NFBelow b₂
a_ih✝ : e.repr ≤ b₂ → a.NFBelow b₂
bb : b ≤ b₂
⊢ e.repr < b₂

case oadd'.eb
o : ONote
b₁ b₂ : Ordinal.{0}
e : ONote
n : ℕ+
a : ONote
eb b : Ordinal.{0}
h₁ : e.NFBelow eb
h₂ : a.NFBelow e.repr
h₃ : e.repr < b
a_ih✝¹ : eb ≤ b₂ → e.NFBelow b₂
a_ih✝ : e.repr ≤ b₂ → a.NFBelow b₂
bb : b ≤ b₂
⊢ Ordinal.{0}
tactic: induction' h with _ e n a eb b h₁ h₂ h₃ _ _ <;> constructor
state_before: case oadd'.a
o : ONote
b₁ b₂ : Ordinal.{0}
e : ONote
n : ℕ+
a : ONote
eb b : Ordinal.{0}
h₁ : e.NFBelow eb
h₂ : a.NFBelow e.repr
h₃ : e.repr < b
a_ih✝¹ : eb ≤ b₂ → e.NFBelow b₂
a_ih✝ : e.repr ≤ b₂ → a.NFBelow b₂
bb : b ≤ b₂
⊢ e.NFBelow ?oadd'.eb

case oadd'.a
o : ONote
b₁ b₂ : Ordinal.{0}
e : ONote
n : ℕ+
a : ONote
eb b : Ordinal.{0}
h₁ : e.NFBelow eb
h₂ : a.NFBelow e.repr
h₃ : e.repr < b
a_ih✝¹ : eb ≤ b₂ → e.NFBelow b₂
a_ih✝ : e.repr ≤ b₂ → a.NFBelow b₂
bb : b ≤ b₂
⊢ a.NFBelow e.repr

case oadd'.a
o : ONote
b₁ b₂ : Ordinal.{0}
e : ONote
n : ℕ+
a : ONote
eb b : Ordinal.{0}
h₁ : e.NFBelow eb
h₂ : a.NFBelow e.repr
h₃ : e.repr < b
a_ih✝¹ : eb ≤ b₂ → e.NFBelow b₂
a_ih✝ : e.repr ≤ b₂ → a.NFBelow b₂
bb : b ≤ b₂
⊢ e.repr < b₂

case oadd'.eb
o : ONote
b₁ b₂ : Ordinal.{0}
e : ONote
n : ℕ+
a : ONote
eb b : Ordinal.{0}
h₁ : e.NFBelow eb
h₂ : a.NFBelow e.repr
h₃ : e.repr < b
a_ih✝¹ : eb ≤ b₂ → e.NFBelow b₂
a_ih✝ : e.repr ≤ b₂ → a.NFBelow b₂
bb : b ≤ b₂
⊢ Ordinal.{0}
state_after: no goals
tactic: exacts [h₁, h₂, lt_of_lt_of_le h₃ bb]
Theorem: Equiv.Perm.IsCycleOn.subtypePerm
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
hf : f.IsCycleOn s
⊢ (f.subtypePerm ⋯).IsCycleOn _root_.Set.univ
state_after: case inl
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
hf : f.IsCycleOn s
hs : s.Subsingleton
⊢ (f.subtypePerm ⋯).IsCycleOn _root_.Set.univ

case inr
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
hf : f.IsCycleOn s
hs : s.Nontrivial
⊢ (f.subtypePerm ⋯).IsCycleOn _root_.Set.univ
tactic: obtain hs | hs := s.subsingleton_or_nontrivial
state_before: case inr
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
hf : f.IsCycleOn s
hs : s.Nontrivial
⊢ (f.subtypePerm ⋯).IsCycleOn _root_.Set.univ
state_after: case h.e'_3
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
hf : f.IsCycleOn s
hs : s.Nontrivial
⊢ _root_.Set.univ = {x | (f.subtypePerm ⋯) x ≠ x}
tactic: convert (hf.isCycle_subtypePerm hs).isCycleOn
state_before: case h.e'_3
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
hf : f.IsCycleOn s
hs : s.Nontrivial
⊢ _root_.Set.univ = {x | (f.subtypePerm ⋯) x ≠ x}
state_after: case h.e'_3
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
hf : f.IsCycleOn s
hs : s.Nontrivial
⊢ ∀ (x : { x // x ∈ s }), x ∈ {x | (f.subtypePerm ⋯) x ≠ x}
tactic: rw [eq_comm, Set.eq_univ_iff_forall]
state_before: case h.e'_3
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
hf : f.IsCycleOn s
hs : s.Nontrivial
⊢ ∀ (x : { x // x ∈ s }), x ∈ {x | (f.subtypePerm ⋯) x ≠ x}
state_after: no goals
tactic: exact fun x => ne_of_apply_ne ((↑) : s → α) (hf.apply_ne hs x.2)
Theorem: EReal.image_coe_Ioi
File: Mathlib/Data/Real/EReal.lean

Proof steps:
state_before: x : ℝ
⊢ Real.toEReal '' Ioi x = Ioo ↑x ⊤
state_after: x : ℝ
⊢ WithBot.some '' (WithTop.some '' Ioi x) = Ioo ↑x ⊤
tactic: refine (image_comp WithBot.some WithTop.some _).trans ?_
state_before: x : ℝ
⊢ WithBot.some '' (WithTop.some '' Ioi x) = Ioo ↑x ⊤
state_after: x : ℝ
⊢ Ioo ↑↑x ↑⊤ = Ioo ↑x ⊤
tactic: rw [WithTop.image_coe_Ioi, WithBot.image_coe_Ioo]
state_before: x : ℝ
⊢ Ioo ↑↑x ↑⊤ = Ioo ↑x ⊤
state_after: no goals
tactic: rfl
Theorem: EuclideanGeometry.Sphere.two_zsmul_oangle_center_add_two_zsmul_oangle_eq_pi
File: Mathlib/Geometry/Euclidean/Angle/Sphere.lean

Proof steps:
state_before: V : Type u_1
P : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : MetricSpace P
inst✝¹ : NormedAddTorsor V P
hd2 : Fact (finrank ℝ V = 2)
inst✝ : Module.Oriented ℝ V (Fin 2)
s : Sphere P
p₁ p₂ p₃ : P
hp₁ : p₁ ∈ s
hp₂ : p₂ ∈ s
hp₃ : p₃ ∈ s
hp₂p₁ : p₂ ≠ p₁
hp₂p₃ : p₂ ≠ p₃
hp₁p₃ : p₁ ≠ p₃
⊢ 2 • ∡ p₃ p₁ s.center + 2 • ∡ p₁ p₂ p₃ = ↑π
state_after: no goals
tactic: rw [← oangle_center_eq_two_zsmul_oangle hp₁ hp₂ hp₃ hp₂p₁ hp₂p₃,
    oangle_eq_pi_sub_two_zsmul_oangle_center_right hp₁ hp₃ hp₁p₃, add_sub_cancel]
Theorem: birkhoffAverage_congr_ring'
File: Mathlib/Dynamics/BirkhoffSum/Average.lean

Proof steps:
state_before: R : Type u_1
α : Type u_2
M : Type u_3
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
S : Type u_4
inst✝¹ : DivisionSemiring S
inst✝ : Module S M
⊢ birkhoffAverage R = birkhoffAverage S
state_after: case h.h.h.h
R : Type u_1
α : Type u_2
M : Type u_3
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
S : Type u_4
inst✝¹ : DivisionSemiring S
inst✝ : Module S M
x✝³ : α → α
x✝² : α → M
x✝¹ : ℕ
x✝ : α
⊢ birkhoffAverage R x✝³ x✝² x✝¹ x✝ = birkhoffAverage S x✝³ x✝² x✝¹ x✝
tactic: ext
state_before: case h.h.h.h
R : Type u_1
α : Type u_2
M : Type u_3
inst✝⁴ : DivisionSemiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
S : Type u_4
inst✝¹ : DivisionSemiring S
inst✝ : Module S M
x✝³ : α → α
x✝² : α → M
x✝¹ : ℕ
x✝ : α
⊢ birkhoffAverage R x✝³ x✝² x✝¹ x✝ = birkhoffAverage S x✝³ x✝² x✝¹ x✝
state_after: no goals
tactic: apply birkhoffAverage_congr_ring