ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Set.ordConnected_image
File: Mathlib/Order/Interval/Set/OrdConnected.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : Preorder α
inst✝² : Preorder β
s✝ t : Set α
E : Type u_3
inst✝¹ : EquivLike E α β
inst✝ : OrderIsoClass E α β
e : E
s : Set α
hs : s.OrdConnected
⊢ (⇑e '' s).OrdConnected
state_after: α : Type u_1
β : Type u_2
inst✝³ : Preorder α
inst✝² : Preorder β
s✝ t : Set α
E : Type u_3
inst✝¹ : EquivLike E α β
inst✝ : OrderIsoClass E α β
e : E
s : Set α
hs : s.OrdConnected
⊢ (⇑(↑e).symm ⁻¹' s).OrdConnected
tactic: erw [(e : α ≃o β).image_eq_preimage]
state_before: α : Type u_1
β : Type u_2
inst✝³ : Preorder α
inst✝² : Preorder β
s✝ t : Set α
E : Type u_3
inst✝¹ : EquivLike E α β
inst✝ : OrderIsoClass E α β
e : E
s : Set α
hs : s.OrdConnected
⊢ (⇑(↑e).symm ⁻¹' s).OrdConnected
state_after: no goals
tactic: apply ordConnected_preimage (e : α ≃o β).symm
Theorem: EisensteinSeries.eisSummand_SL2_apply
File: Mathlib/NumberTheory/ModularForms/EisensteinSeries/Defs.lean

Proof steps:
state_before: N : ℕ
a : Fin 2 → ZMod N
k : ℤ
i : Fin 2 → ℤ
A : SL(2, ℤ)
z : ℍ
⊢ eisSummand k i (A • z) = denom (↑A) z ^ k * eisSummand k (i ᵥ* ↑A) z
state_after: N : ℕ
a : Fin 2 → ZMod N
k : ℤ
i : Fin 2 → ℤ
A : SL(2, ℤ)
z : ℍ
⊢ (↑(i 0) * ↑(A • z) + ↑(i 1)) ^ (-k) =
    denom (↑A) z ^ k * (↑(i 0 * ↑A 0 0 + i 1 * ↑A 1 0) * ↑z + ↑(i 0 * ↑A 0 1 + i 1 * ↑A 1 1)) ^ (-k)
tactic: simp only [eisSummand, vecMul, vec2_dotProduct]
state_before: N : ℕ
a : Fin 2 → ZMod N
k : ℤ
i : Fin 2 → ℤ
A : SL(2, ℤ)
z : ℍ
⊢ (↑(i 0) * ↑(A • z) + ↑(i 1)) ^ (-k) =
    denom (↑A) z ^ k * (↑(i 0 * ↑A 0 0 + i 1 * ↑A 1 0) * ↑z + ↑(i 0 * ↑A 0 1 + i 1 * ↑A 1 1)) ^ (-k)
state_after: N : ℕ
a : Fin 2 → ZMod N
k : ℤ
i : Fin 2 → ℤ
A : SL(2, ℤ)
z : ℍ
⊢ (↑(i 0) * ↑(A • z) + ↑(i 1)) ^ (-k) =
    denom (↑A) z ^ k *
      ((↑(i 0) * ↑(↑A 0 0) + ↑(i 1) * ↑(↑A 1 0)) * ↑z + (↑(i 0) * ↑(↑A 0 1) + ↑(i 1) * ↑(↑A 1 1))) ^ (-k)
tactic: push_cast
state_before: N : ℕ
a : Fin 2 → ZMod N
k : ℤ
i : Fin 2 → ℤ
A : SL(2, ℤ)
z : ℍ
⊢ (↑(i 0) * ↑(A • z) + ↑(i 1)) ^ (-k) =
    denom (↑A) z ^ k *
      ((↑(i 0) * ↑(↑A 0 0) + ↑(i 1) * ↑(↑A 1 0)) * ↑z + (↑(i 0) * ↑(↑A 0 1) + ↑(i 1) * ↑(↑A 1 1))) ^ (-k)
state_after: N : ℕ
a : Fin 2 → ZMod N
k : ℤ
i : Fin 2 → ℤ
A : SL(2, ℤ)
z : ℍ
h :
  ∀ (a b c d u v : ℂ),
    c * ↑z + d ≠ 0 →
      (u * ((a * ↑z + b) / (c * ↑z + d)) + v) ^ (-k) =
        (c * ↑z + d) ^ k * ((u * a + v * c) * ↑z + (u * b + v * d)) ^ (-k)
⊢ (↑(i 0) * ↑(A • z) + ↑(i 1)) ^ (-k) =
    denom (↑A) z ^ k *
      ((↑(i 0) * ↑(↑A 0 0) + ↑(i 1) * ↑(↑A 1 0)) * ↑z + (↑(i 0) * ↑(↑A 0 1) + ↑(i 1) * ↑(↑A 1 1))) ^ (-k)
tactic: have h (a b c d u v : ℂ) (hc : c * z + d ≠ 0) : (u * ((a * z + b) / (c * z + d)) + v) ^ (-k) =
      (c * z + d) ^ k * ((u * a + v * c) * z + (u * b + v * d)) ^ (-k) := by
    field_simp [hc]
    ring_nf
state_before: N : ℕ
a : Fin 2 → ZMod N
k : ℤ
i : Fin 2 → ℤ
A : SL(2, ℤ)
z : ℍ
h :
  ∀ (a b c d u v : ℂ),
    c * ↑z + d ≠ 0 →
      (u * ((a * ↑z + b) / (c * ↑z + d)) + v) ^ (-k) =
        (c * ↑z + d) ^ k * ((u * a + v * c) * ↑z + (u * b + v * d)) ^ (-k)
⊢ (↑(i 0) * ↑(A • z) + ↑(i 1)) ^ (-k) =
    denom (↑A) z ^ k *
      ((↑(i 0) * ↑(↑A 0 0) + ↑(i 1) * ↑(↑A 1 0)) * ↑z + (↑(i 0) * ↑(↑A 0 1) + ↑(i 1) * ↑(↑A 1 1))) ^ (-k)
state_after: no goals
tactic: apply h (hc := z.denom_ne_zero A)
Theorem: pNilradical_eq_bot
File: Mathlib/FieldTheory/IsPerfectClosure.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommSemiring R
p : ℕ
hp : ¬1 < p
⊢ pNilradical R p = ⊥
state_after: no goals
tactic: rw [pNilradical, if_neg hp]
Theorem: MeasureTheory.measure_union_add_inter₀'
File: Mathlib/MeasureTheory/Measure/NullMeasurable.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
m0 : MeasurableSpace α
μ : Measure α
s t✝ : Set α
hs : NullMeasurableSet s μ
t : Set α
⊢ μ (s ∪ t) + μ (s ∩ t) = μ s + μ t
state_after: no goals
tactic: rw [union_comm, inter_comm, measure_union_add_inter₀ t hs, add_comm]
Theorem: card_zpowers_le
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✝¹ : Group G
inst✝ : Fintype G
x : G
n : ℕ
a : G
k : ℕ
k_pos : k ≠ 0
ha : a ^ k = 1
⊢ card ↥(zpowers a) ≤ k
state_after: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Fintype G
x : G
n : ℕ
a : G
k : ℕ
k_pos : k ≠ 0
ha : a ^ k = 1
⊢ orderOf a ≤ k
tactic: rw [Fintype.card_zpowers]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Fintype G
x : G
n : ℕ
a : G
k : ℕ
k_pos : k ≠ 0
ha : a ^ k = 1
⊢ orderOf a ≤ k
state_after: no goals
tactic: apply orderOf_le_of_pow_eq_one k_pos.bot_lt ha
Theorem: surjective_algebraMap_of_linearMap
File: Mathlib/Algebra/Algebra/Basic.lean

Proof steps:
state_before: F : Type u_1
E : Type u_2
inst✝² : CommSemiring F
inst✝¹ : Semiring E
inst✝ : Algebra F E
b : F →ₗ[F] E
hb : Function.Surjective ⇑b
x : E
⊢ ∃ a, (algebraMap F E) a = x
state_after: case intro
F : Type u_1
E : Type u_2
inst✝² : CommSemiring F
inst✝¹ : Semiring E
inst✝ : Algebra F E
b : F →ₗ[F] E
hb : Function.Surjective ⇑b
x : F
⊢ ∃ a, (algebraMap F E) a = b x
tactic: obtain ⟨x, rfl⟩ := hb x
state_before: case intro
F : Type u_1
E : Type u_2
inst✝² : CommSemiring F
inst✝¹ : Semiring E
inst✝ : Algebra F E
b : F →ₗ[F] E
hb : Function.Surjective ⇑b
x : F
⊢ ∃ a, (algebraMap F E) a = b x
state_after: case intro.intro
F : Type u_1
E : Type u_2
inst✝² : CommSemiring F
inst✝¹ : Semiring E
inst✝ : Algebra F E
b : F →ₗ[F] E
hb : Function.Surjective ⇑b
x y : F
hy : b y = b 1 * b 1
⊢ ∃ a, (algebraMap F E) a = b x
tactic: obtain ⟨y, hy⟩ := hb (b 1 * b 1)
state_before: case intro.intro
F : Type u_1
E : Type u_2
inst✝² : CommSemiring F
inst✝¹ : Semiring E
inst✝ : Algebra F E
b : F →ₗ[F] E
hb : Function.Surjective ⇑b
x y : F
hy : b y = b 1 * b 1
⊢ ∃ a, (algebraMap F E) a = b x
state_after: case intro.intro
F : Type u_1
E : Type u_2
inst✝² : CommSemiring F
inst✝¹ : Semiring E
inst✝ : Algebra F E
b : F →ₗ[F] E
hb : Function.Surjective ⇑b
x y : F
hy : b y = b 1 * b 1
⊢ (algebraMap F E) (x * y) = b x
tactic: refine ⟨x * y, ?_⟩
state_before: case intro.intro
F : Type u_1
E : Type u_2
inst✝² : CommSemiring F
inst✝¹ : Semiring E
inst✝ : Algebra F E
b : F →ₗ[F] E
hb : Function.Surjective ⇑b
x y : F
hy : b y = b 1 * b 1
⊢ (algebraMap F E) (x * y) = b x
state_after: case intro.intro.intro
F : Type u_1
E : Type u_2
inst✝² : CommSemiring F
inst✝¹ : Semiring E
inst✝ : Algebra F E
b : F →ₗ[F] E
hb : Function.Surjective ⇑b
x y : F
hy : b y = b 1 * b 1
z : F
hz : b z = 1
⊢ (algebraMap F E) (x * y) = b x
tactic: obtain ⟨z, hz⟩ := hb 1
state_before: case intro.intro.intro
F : Type u_1
E : Type u_2
inst✝² : CommSemiring F
inst✝¹ : Semiring E
inst✝ : Algebra F E
b : F →ₗ[F] E
hb : Function.Surjective ⇑b
x y z : F
hz : b z = 1
hy : x • z • b y = x • z • (b 1 * b 1)
⊢ (algebraMap F E) (x * y) = b x
state_after: no goals
tactic: rwa [← map_smul, smul_eq_mul, mul_comm, ← smul_mul_assoc, ← map_smul _ z, smul_eq_mul, mul_one,
    ← smul_eq_mul, map_smul, hz, one_mul, ← map_smul, smul_eq_mul, mul_one, smul_smul,
    ← Algebra.algebraMap_eq_smul_one] at hy
Theorem: Cardinal.lt_aleph0_iff_finite
File: Mathlib/SetTheory/Cardinal/Basic.lean

Proof steps:
state_before: α✝ β α : Type u
⊢ #α < ℵ₀ ↔ Finite α
state_after: no goals
tactic: simp only [lt_aleph0, mk_eq_nat_iff, finite_iff_exists_equiv_fin]
Theorem: Matroid.sum_ground
File: Mathlib/Data/Matroid/Sum.lean

Proof steps:
state_before: α : Type u
β : Type v
M✝ N✝ M : Matroid α
N : Matroid β
⊢ (M.sum N).E = Sum.inl '' M.E ∪ Sum.inr '' N.E
state_after: no goals
tactic: simp [Matroid.sum, Set.ext_iff, mapEquiv, mapEmbedding, Equiv.ulift, Equiv.sumEquivSigmaBool]
Theorem: le_symmDiff_iff_left
File: Mathlib/Order/SymmDiff.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedBooleanAlgebra α
a b c d : α
⊢ a ≤ a ∆ b ↔ Disjoint a b
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedBooleanAlgebra α
a b c d : α
h : a ≤ a ∆ b
⊢ Disjoint a b
tactic: refine ⟨fun h => ?_, fun h => h.symmDiff_eq_sup.symm ▸ le_sup_left⟩
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedBooleanAlgebra α
a b c d : α
h : a ≤ a ∆ b
⊢ Disjoint a b
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedBooleanAlgebra α
a b c d : α
h : a ≤ (a ⊔ b) \ (a ⊓ b)
⊢ Disjoint a b
tactic: rw [symmDiff_eq_sup_sdiff_inf] at h
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedBooleanAlgebra α
a b c d : α
h : a ≤ (a ⊔ b) \ (a ⊓ b)
⊢ Disjoint a b
state_after: no goals
tactic: exact disjoint_iff_inf_le.mpr (le_sdiff_iff.1 <| inf_le_of_left_le h).le
Theorem: Polynomial.erase_zero
File: Mathlib/Algebra/Polynomial/Basic.lean

Proof steps:
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
⊢ (erase n 0).toFinsupp = toFinsupp 0
state_after: no goals
tactic: simp
Theorem: List.get_ofFn_go
File: Mathlib/Data/List/OfFn.lean

Proof steps:
state_before: α : Type u
n : ℕ
f : Fin n → α
i j : ℕ
h : i + j = n
k : ℕ
hk : k < (ofFn.go f i j h).length
⊢ j + k < n
state_after: α : Type u
n : ℕ
f : Fin n → α
i j : ℕ
h : i + j = n
k : ℕ
hk : k < i
⊢ j + k < n
tactic: simp at hk
state_before: α : Type u
n : ℕ
f : Fin n → α
i j : ℕ
h : i + j = n
k : ℕ
hk : k < i
⊢ j + k < n
state_after: no goals
tactic: omega
state_before: α : Type u
n : ℕ
f : Fin n → α
i j : ℕ
h : i + j = n
k : ℕ
hk : k < (ofFn.go f i j h).length
⊢ (ofFn.go f i j h).get ⟨k, hk⟩ = f ⟨j + k, ⋯⟩
state_after: no goals
tactic: simp [getElem_ofFn_go]
Theorem: Partrec.bind
File: Mathlib/Computability/Partrec.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α →. β
g : α → β →. σ
hf : Partrec f
hg : Partrec₂ g
n : ℕ
⊢ (do
      let n ← Seq.seq (Nat.pair <$> Part.some n) fun x => (↑(decode n)).bind fun a => map encode (f a)
      (↑(decode n)).bind fun a => map encode ((fun p => g p.1 p.2) a)) =
    (↑(decode n)).bind fun a => map encode ((fun a => (f a).bind (g a)) a)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α →. β
g : α → β →. σ
hf : Partrec f
hg : Partrec₂ g
n : ℕ
⊢ (((↑(decode n)).bind fun y => map (Nat.pair n) (map encode (f y))).bind fun n =>
      (↑((decode (Nat.unpair n).1).bind fun a => Option.map (Prod.mk a) (decode (Nat.unpair n).2))).bind fun a =>
        map encode (g a.1 a.2)) =
    (↑(decode n)).bind fun a => (f a).bind fun y => map encode (g a y)
tactic: simp [Seq.seq]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
inst✝³ : Primcodable α
inst✝² : Primcodable β
inst✝¹ : Primcodable γ
inst✝ : Primcodable σ
f : α →. β
g : α → β →. σ
hf : Partrec f
hg : Partrec₂ g
n : ℕ
⊢ (((↑(decode n)).bind fun y => map (Nat.pair n) (map encode (f y))).bind fun n =>
      (↑((decode (Nat.unpair n).1).bind fun a => Option.map (Prod.mk a) (decode (Nat.unpair n).2))).bind fun a =>
        map encode (g a.1 a.2)) =
    (↑(decode n)).bind fun a => (f a).bind fun y => map encode (g a y)
state_after: no goals
tactic: cases' e : decode (α := α) n with a <;> simp [e, encodek]
Theorem: Subgroup.map_eq_map_iff
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
f✝ f : G →* N
H K : Subgroup G
⊢ map f H = map f K ↔ H ⊔ f.ker = K ⊔ f.ker
state_after: no goals
tactic: simp only [le_antisymm_iff, map_le_map_iff']
Theorem: AddSubgroup.map_eq_range_iff
File: Mathlib/Algebra/Group/Subgroup/Basic.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
G'' : Type u_3
inst✝⁴ : Group G
inst✝³ : Group G'
inst✝² : Group G''
A : Type u_4
inst✝¹ : AddGroup A
N : Type u_5
inst✝ : Group N
f✝ f : G →* N
H : Subgroup G
⊢ map f H = f.range ↔ Codisjoint H f.ker
state_after: no goals
tactic: rw [f.range_eq_map, map_eq_map_iff, codisjoint_iff, top_sup_eq]
Theorem: Matrix.Pivot.listTransvecCol_mul_last_col
File: Mathlib/LinearAlgebra/Matrix/Transvection.lean

Proof steps:
state_before: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
r : ℕ
M : Matrix (Fin r ⊕ Unit) (Fin r ⊕ Unit) 𝕜
hM : M (inr ()) (inr ()) ≠ 0
i : Fin r
⊢ ((listTransvecCol M).prod * M) (inl i) (inr ()) = 0
state_after: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
r : ℕ
M : Matrix (Fin r ⊕ Unit) (Fin r ⊕ Unit) 𝕜
hM : M (inr ()) (inr ()) ≠ 0
i : Fin r
⊢ ∀ k ≤ r, ((List.drop k (listTransvecCol M)).prod * M) (inl i) (inr ()) = if k ≤ ↑i then 0 else M (inl i) (inr ())
tactic: suffices H :
    ∀ k : ℕ,
      k ≤ r →
        (((listTransvecCol M).drop k).prod * M) (inl i) (inr unit) =
          if k ≤ i then 0 else M (inl i) (inr unit) by
    simpa only [List.drop, _root_.zero_le, ite_true] using H 0 (zero_le _)
state_before: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
r : ℕ
M : Matrix (Fin r ⊕ Unit) (Fin r ⊕ Unit) 𝕜
hM : M (inr ()) (inr ()) ≠ 0
i : Fin r
⊢ ∀ k ≤ r, ((List.drop k (listTransvecCol M)).prod * M) (inl i) (inr ()) = if k ≤ ↑i then 0 else M (inl i) (inr ())
state_after: n : Type u_1
p : Type u_2
R : Type u₂
𝕜 : Type u_3
inst✝³ : Field 𝕜
inst✝² : DecidableEq n
inst✝¹ : DecidableEq p
inst✝ : CommRing R
r : ℕ
M : Matrix (Fin r ⊕ Unit) (Fin r ⊕ Unit) 𝕜
hM : M (inr ()) (inr ()) ≠ 0
i : Fin r
k : ℕ
hk : k ≤ r
⊢ ((List.drop k (listTransvecCol M)).prod * M) (inl i) (inr ()) = if k ≤ ↑i then 0 else M (inl i) (inr ())
tactic: intro k hk
Theorem: Homeomorph.piSplitAt_apply
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'
ι : Type u_6
inst✝¹ : DecidableEq ι
i : ι
Y : ι → Type u_7
inst✝ : (j : ι) → TopologicalSpace (Y j)
j : ι
⊢ Continuous fun a => (Equiv.piSplitAt i Y).invFun a j
state_after: 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'
ι : Type u_6
inst✝¹ : DecidableEq ι
i : ι
Y : ι → Type u_7
inst✝ : (j : ι) → TopologicalSpace (Y j)
j : ι
⊢ Continuous fun a => if h : j = i then ⋯ ▸ a.1 else a.2 ⟨j, h⟩
tactic: dsimp only [Equiv.piSplitAt]
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'
ι : Type u_6
inst✝¹ : DecidableEq ι
i : ι
Y : ι → Type u_7
inst✝ : (j : ι) → TopologicalSpace (Y j)
j : ι
⊢ Continuous fun a => if h : j = i then ⋯ ▸ a.1 else a.2 ⟨j, h⟩
state_after: case pos
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'
ι : Type u_6
inst✝¹ : DecidableEq ι
i : ι
Y : ι → Type u_7
inst✝ : (j : ι) → TopologicalSpace (Y j)
j : ι
h : j = i
⊢ Continuous fun a => ⋯ ▸ a.1

case neg
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'
ι : Type u_6
inst✝¹ : DecidableEq ι
i : ι
Y : ι → Type u_7
inst✝ : (j : ι) → TopologicalSpace (Y j)
j : ι
h : ¬j = i
⊢ Continuous fun a => a.2 ⟨j, h⟩
tactic: split_ifs with h
Theorem: Submodule.mem_smul_top_iff
File: Mathlib/RingTheory/Ideal/Operations.lean

Proof steps:
state_before: R : Type u
M : Type v
M'✝ : Type u_1
F : Type u_2
G : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'✝
inst✝² : Module R M'✝
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
N : Submodule R M
x : ↥N
⊢ x ∈ I • ⊤ ↔ ↑x ∈ I • N
state_after: R : Type u
M : Type v
M'✝ : Type u_1
F : Type u_2
G : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'✝
inst✝² : Module R M'✝
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
N : Submodule R M
x : ↥N
⊢ x ∈ I • ⊤ ↔ N.subtype x ∈ I • N
tactic: change _ ↔ N.subtype x ∈ I • N
state_before: R : Type u
M : Type v
M'✝ : Type u_1
F : Type u_2
G : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'✝
inst✝² : Module R M'✝
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
N : Submodule R M
x : ↥N
⊢ x ∈ I • ⊤ ↔ N.subtype x ∈ I • N
state_after: R : Type u
M : Type v
M'✝ : Type u_1
F : Type u_2
G : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'✝
inst✝² : Module R M'✝
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
N : Submodule R M
x : ↥N
this : map N.subtype (I • ⊤) = I • N
⊢ x ∈ I • ⊤ ↔ N.subtype x ∈ I • N
tactic: have : Submodule.map N.subtype (I • ⊤) = I • N := by
    rw [Submodule.map_smul'', Submodule.map_top, Submodule.range_subtype]
state_before: R : Type u
M : Type v
M'✝ : Type u_1
F : Type u_2
G : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'✝
inst✝² : Module R M'✝
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
N : Submodule R M
x : ↥N
this : map N.subtype (I • ⊤) = I • N
⊢ x ∈ I • ⊤ ↔ N.subtype x ∈ I • N
state_after: R : Type u
M : Type v
M'✝ : Type u_1
F : Type u_2
G : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'✝
inst✝² : Module R M'✝
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
N : Submodule R M
x : ↥N
this : map N.subtype (I • ⊤) = I • N
⊢ x ∈ I • ⊤ ↔ N.subtype x ∈ map N.subtype (I • ⊤)
tactic: rw [← this]
state_before: R : Type u
M : Type v
M'✝ : Type u_1
F : Type u_2
G : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Module R M
inst✝³ : AddCommMonoid M'✝
inst✝² : Module R M'✝
I J : Ideal R
N✝ P : Submodule R M
S : Set R
T : Set M
M' : Type w
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
N : Submodule R M
x : ↥N
this : map N.subtype (I • ⊤) = I • N
⊢ x ∈ I • ⊤ ↔ N.subtype x ∈ map N.subtype (I • ⊤)
state_after: no goals
tactic: exact (Function.Injective.mem_set_image N.injective_subtype).symm
Theorem: Function.Periodic.nsmul
File: Mathlib/Algebra/Periodic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x : α
inst✝ : AddMonoid α
h : Periodic f c
n : ℕ
⊢ Periodic f (n • c)
state_after: no goals
tactic: induction n <;> simp_all [add_nsmul, ← add_assoc, zero_nsmul]
Theorem: TypeVec.toSubtype_of_subtype
File: Mathlib/Data/TypeVec.lean

Proof steps:
state_before: n : ℕ
α : TypeVec.{u_1} n
p : α ⟹ repeat n Prop
⊢ toSubtype p ⊚ ofSubtype p = id
state_after: case a.h
n : ℕ
α : TypeVec.{u_1} n
p : α ⟹ repeat n Prop
i : Fin2 n
x : Subtype_ p i
⊢ (toSubtype p ⊚ ofSubtype p) i x = id i x
tactic: ext i x
state_before: case a.h
n : ℕ
α : TypeVec.{u_1} n
p : α ⟹ repeat n Prop
i : Fin2 n
x : Subtype_ p i
⊢ (toSubtype p ⊚ ofSubtype p) i x = id i x
state_after: case a.h.fs
n n✝ : ℕ
a✝ : Fin2 n✝
a_ih✝ : ∀ {α : TypeVec.{u_1} n✝} (p : α ⟹ repeat n✝ Prop) (x : Subtype_ p a✝), toSubtype p a✝ (ofSubtype p a✝ x) = x
α : TypeVec.{u_1} (n✝ + 1)
p : α ⟹ repeat (n✝ + 1) Prop
x : Subtype_ p a✝.fs
⊢ toSubtype (dropFun p) a✝ (ofSubtype (dropFun p) a✝ x) = x
tactic: induction i <;> dsimp only [id, toSubtype, comp, ofSubtype] at *
state_before: case a.h.fs
n n✝ : ℕ
a✝ : Fin2 n✝
a_ih✝ : ∀ {α : TypeVec.{u_1} n✝} (p : α ⟹ repeat n✝ Prop) (x : Subtype_ p a✝), toSubtype p a✝ (ofSubtype p a✝ x) = x
α : TypeVec.{u_1} (n✝ + 1)
p : α ⟹ repeat (n✝ + 1) Prop
x : Subtype_ p a✝.fs
⊢ toSubtype (dropFun p) a✝ (ofSubtype (dropFun p) a✝ x) = x
state_after: no goals
tactic: simp [*]
Theorem: Hyperreal.IsSt.inv
File: Mathlib/Data/Real/Hyperreal.lean

Proof steps:
state_before: x : ℝ*
r : ℝ
hi : ¬x.Infinitesimal
hr : x.IsSt r
⊢ r ≠ 0
state_after: x : ℝ*
hi : ¬x.Infinitesimal
hr : x.IsSt 0
⊢ False
tactic: rintro rfl
state_before: x : ℝ*
hi : ¬x.Infinitesimal
hr : x.IsSt 0
⊢ False
state_after: no goals
tactic: exact hi hr
Theorem: Algebra.norm_zero
File: Mathlib/RingTheory/Norm/Basic.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹¹ : CommRing R
inst✝¹⁰ : Ring S
inst✝⁹ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁸ : Field K
inst✝⁷ : Field L
inst✝⁶ : Field F
inst✝⁵ : Algebra K L
inst✝⁴ : Algebra K F
ι : Type w
inst✝³ : Finite ι
inst✝² : Nontrivial S
inst✝¹ : Module.Free R S
inst✝ : Module.Finite R S
⊢ (norm R) 0 = 0
state_after: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹¹ : CommRing R
inst✝¹⁰ : Ring S
inst✝⁹ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁸ : Field K
inst✝⁷ : Field L
inst✝⁶ : Field F
inst✝⁵ : Algebra K L
inst✝⁴ : Algebra K F
ι : Type w
inst✝³ : Finite ι
inst✝² : Nontrivial S
inst✝¹ : Module.Free R S
inst✝ : Module.Finite R S
a✝ : Nontrivial R
⊢ (norm R) 0 = 0
tactic: nontriviality
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹¹ : CommRing R
inst✝¹⁰ : Ring S
inst✝⁹ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝⁸ : Field K
inst✝⁷ : Field L
inst✝⁶ : Field F
inst✝⁵ : Algebra K L
inst✝⁴ : Algebra K F
ι : Type w
inst✝³ : Finite ι
inst✝² : Nontrivial S
inst✝¹ : Module.Free R S
inst✝ : Module.Finite R S
a✝ : Nontrivial R
⊢ (norm R) 0 = 0
state_after: no goals
tactic: rw [norm_apply, coe_lmul_eq_mul, map_zero, LinearMap.det_zero' (Module.Free.chooseBasis R S)]