ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Seminorm.closedBall_eq_emptyset
File: Mathlib/Analysis/Seminorm.lean

Proof steps:
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p✝ p : Seminorm 𝕜 E
x : E
r : ℝ
hr : r < 0
⊢ p.closedBall x r = ∅
state_after: case h
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p✝ p : Seminorm 𝕜 E
x : E
r : ℝ
hr : r < 0
x✝ : E
⊢ x✝ ∈ p.closedBall x r ↔ x✝ ∈ ∅
tactic: ext
state_before: case h
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p✝ p : Seminorm 𝕜 E
x : E
r : ℝ
hr : r < 0
x✝ : E
⊢ x✝ ∈ p.closedBall x r ↔ x✝ ∈ ∅
state_after: case h
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p✝ p : Seminorm 𝕜 E
x : E
r : ℝ
hr : r < 0
x✝ : E
⊢ r < p (x✝ - x)
tactic: rw [Seminorm.mem_closedBall, Set.mem_empty_iff_false, iff_false_iff, not_le]
state_before: case h
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝⁶ : SeminormedRing 𝕜
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SeminormedRing 𝕜₂
inst✝² : AddCommGroup E₂
inst✝¹ : Module 𝕜₂ E₂
σ₁₂ : 𝕜 →+* 𝕜₂
inst✝ : RingHomIsometric σ₁₂
p✝ p : Seminorm 𝕜 E
x : E
r : ℝ
hr : r < 0
x✝ : E
⊢ r < p (x✝ - x)
state_after: no goals
tactic: exact hr.trans_le (apply_nonneg _ _)
Theorem: Set.bijOn_singleton
File: Mathlib/Data/Set/Function.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b : β
⊢ BijOn f {a} {b} ↔ f a = b
state_after: no goals
tactic: simp [BijOn, eq_comm]
Theorem: CategoryTheory.ShortComplex.opcyclesMapIso_hom
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

Proof steps:
state_before: C : Type u_1
inst✝³ : Category.{?u.123075, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
e : S₁ ≅ S₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ opcyclesMap e.hom ≫ opcyclesMap e.inv = 𝟙 S₁.opcycles
state_after: no goals
tactic: rw [← opcyclesMap_comp, e.hom_inv_id, opcyclesMap_id]
state_before: C : Type u_1
inst✝³ : Category.{?u.123075, u_1} C
inst✝² : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
e : S₁ ≅ S₂
inst✝¹ : S₁.HasRightHomology
inst✝ : S₂.HasRightHomology
⊢ opcyclesMap e.inv ≫ opcyclesMap e.hom = 𝟙 S₂.opcycles
state_after: no goals
tactic: rw [← opcyclesMap_comp, e.inv_hom_id, opcyclesMap_id]
Theorem: summable_condensed_iff_of_nonneg
File: Mathlib/Analysis/PSeries.lean

Proof steps:
state_before: f : ℕ → ℝ
h_nonneg : ∀ (n : ℕ), 0 ≤ f n
h_mono : ∀ ⦃m n : ℕ⦄, 0 < m → m ≤ n → f n ≤ f m
h_succ_diff : SuccDiffBounded 2 fun x => 2 ^ x
⊢ (Summable fun k => 2 ^ k * f (2 ^ k)) ↔ Summable f
state_after: case h.e'_1.h.e'_5.h.h.e'_5
f : ℕ → ℝ
h_nonneg : ∀ (n : ℕ), 0 ≤ f n
h_mono : ∀ ⦃m n : ℕ⦄, 0 < m → m ≤ n → f n ≤ f m
h_succ_diff : SuccDiffBounded 2 fun x => 2 ^ x
x✝ : ℕ
⊢ 2 ^ x✝ = ↑(2 ^ (x✝ + 1)) - ↑(2 ^ x✝)
tactic: convert summable_schlomilch_iff_of_nonneg h_nonneg h_mono (pow_pos zero_lt_two)
    (pow_right_strictMono one_lt_two) two_ne_zero h_succ_diff
state_before: case h.e'_1.h.e'_5.h.h.e'_5
f : ℕ → ℝ
h_nonneg : ∀ (n : ℕ), 0 ≤ f n
h_mono : ∀ ⦃m n : ℕ⦄, 0 < m → m ≤ n → f n ≤ f m
h_succ_diff : SuccDiffBounded 2 fun x => 2 ^ x
x✝ : ℕ
⊢ 2 ^ x✝ = ↑(2 ^ (x✝ + 1)) - ↑(2 ^ x✝)
state_after: no goals
tactic: simp [pow_succ, mul_two, two_mul]
Theorem: Set.ncard_diff_singleton_le
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
⊢ (s \ {a}).ncard ≤ s.ncard
state_after: case inl
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Finite
⊢ (s \ {a}).ncard ≤ s.ncard

case inr
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ (s \ {a}).ncard ≤ s.ncard
tactic: obtain hs | hs := s.finite_or_infinite
state_before: case inr
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ (s \ {a}).ncard ≤ s.ncard
state_after: case h.e'_3
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ (s \ {a}).ncard = 0
tactic: convert @zero_le ℕ _ _
state_before: case h.e'_3
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ (s \ {a}).ncard = 0
state_after: no goals
tactic: exact (hs.diff (by simp : Set.Finite {a})).ncard
Theorem: Int.bit_coe_nat
File: Mathlib/Data/Int/Bitwise.lean

Proof steps:
state_before: b : Bool
n : ℕ
⊢ bit b ↑n = ↑(Nat.bit b n)
state_after: b : Bool
n : ℕ
⊢ (2 * ↑n + bif b then 1 else 0) = ↑(2 * n + bif b then 1 else 0)
tactic: rw [bit_val, Nat.bit_val]
state_before: b : Bool
n : ℕ
⊢ (2 * ↑n + bif b then 1 else 0) = ↑(2 * n + bif b then 1 else 0)
state_after: no goals
tactic: cases b <;> rfl
Theorem: OrderIso.complementedLattice
File: Mathlib/Order/Hom/Basic.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁴ : Lattice α
inst✝³ : Lattice β
inst✝² : BoundedOrder α
inst✝¹ : BoundedOrder β
f✝ : α ≃o β
inst✝ : ComplementedLattice α
f : α ≃o β
x : β
⊢ ∃ b, IsCompl x b
state_after: case intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁴ : Lattice α
inst✝³ : Lattice β
inst✝² : BoundedOrder α
inst✝¹ : BoundedOrder β
f✝ : α ≃o β
inst✝ : ComplementedLattice α
f : α ≃o β
x : β
y : α
hy : IsCompl (f.symm x) y
⊢ ∃ b, IsCompl x b
tactic: obtain ⟨y, hy⟩ := exists_isCompl (f.symm x)
state_before: case intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁴ : Lattice α
inst✝³ : Lattice β
inst✝² : BoundedOrder α
inst✝¹ : BoundedOrder β
f✝ : α ≃o β
inst✝ : ComplementedLattice α
f : α ≃o β
x : β
y : α
hy : IsCompl (f.symm x) y
⊢ ∃ b, IsCompl x b
state_after: case intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁴ : Lattice α
inst✝³ : Lattice β
inst✝² : BoundedOrder α
inst✝¹ : BoundedOrder β
f✝ : α ≃o β
inst✝ : ComplementedLattice α
f : α ≃o β
x : β
y : α
hy : IsCompl (f.symm x) (f.symm (f y))
⊢ ∃ b, IsCompl x b
tactic: rw [← f.symm_apply_apply y] at hy
state_before: case intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
inst✝⁴ : Lattice α
inst✝³ : Lattice β
inst✝² : BoundedOrder α
inst✝¹ : BoundedOrder β
f✝ : α ≃o β
inst✝ : ComplementedLattice α
f : α ≃o β
x : β
y : α
hy : IsCompl (f.symm x) (f.symm (f y))
⊢ ∃ b, IsCompl x b
state_after: no goals
tactic: exact ⟨f y, f.symm.isCompl_iff.2 hy⟩
Theorem: WeierstrassCurve.Affine.CoordinateRing.mk_XYIdeal'_mul_mk_XYIdeal'_of_Yeq
File: Mathlib/AlgebraicGeometry/EllipticCurve/Group.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W✝ : Affine R
f : R →+* S
F : Type u
inst✝ : Field F
W : Affine F
x y : F
h : W.Nonsingular x y
⊢ ClassGroup.mk (XYIdeal' ⋯) * ClassGroup.mk (XYIdeal' h) = 1
state_after: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W✝ : Affine R
f : R →+* S
F : Type u
inst✝ : Field F
W : Affine F
x y : F
h : W.Nonsingular x y
⊢ ClassGroup.mk (XYIdeal' ⋯ * XYIdeal' h) = 1
tactic: rw [← _root_.map_mul]
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : CommRing S
W✝ : Affine R
f : R →+* S
F : Type u
inst✝ : Field F
W : Affine F
x y : F
h : W.Nonsingular x y
⊢ ClassGroup.mk (XYIdeal' ⋯ * XYIdeal' h) = 1
state_after: no goals
tactic: exact
    (ClassGroup.mk_eq_one_of_coe_ideal <| by exact (FractionalIdeal.coeIdeal_mul ..).symm.trans <|
      FractionalIdeal.coeIdeal_inj.mpr <| XYIdeal_neg_mul h).mpr ⟨_, XClass_ne_zero W _, rfl⟩
Theorem: SimpleGraph.Walk.IsTrail.even_countP_edges_iff
File: Mathlib/Combinatorics/SimpleGraph/Trails.lean

Proof steps:
state_before: V : Type u_1
G : SimpleGraph V
inst✝ : DecidableEq V
u v : V
p : G.Walk u v
ht : p.IsTrail
x : V
⊢ Even (List.countP (fun e => decide (x ∈ e)) p.edges) ↔ u ≠ v → x ≠ u ∧ x ≠ v
state_after: case nil
V : Type u_1
G : SimpleGraph V
inst✝ : DecidableEq V
u✝ v x u : V
ht : Walk.nil.IsTrail
⊢ Even (List.countP (fun e => decide (x ∈ e)) Walk.nil.edges) ↔ u ≠ u → x ≠ u ∧ x ≠ u

case cons
V : Type u_1
G : SimpleGraph V
inst✝ : DecidableEq V
u✝ v✝ x u v w : V
huv : G.Adj u v
p : G.Walk v w
ih : p.IsTrail → (Even (List.countP (fun e => decide (x ∈ e)) p.edges) ↔ v ≠ w → x ≠ v ∧ x ≠ w)
ht : (cons huv p).IsTrail
⊢ Even (List.countP (fun e => decide (x ∈ e)) (cons huv p).edges) ↔ u ≠ w → x ≠ u ∧ x ≠ w
tactic: induction' p with u u v w huv p ih
Theorem: Finset.sum_subtype
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 : α → β
inst✝ : CommMonoid β
p : α → Prop
F : Fintype (Subtype p)
s : Finset α
h : ∀ (x : α), x ∈ s ↔ p x
f : α → β
this : (fun x => x ∈ s) = p
⊢ ∏ a ∈ s, f a = ∏ a : Subtype p, f ↑a
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
f : α → β
F : Fintype { x // x ∈ s }
h : ∀ (x : α), x ∈ s ↔ (fun x => x ∈ s) x
⊢ ∏ a ∈ s, f a = ∏ a : { x // x ∈ s }, f ↑a
tactic: subst p
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
f : α → β
F : Fintype { x // x ∈ s }
h : ∀ (x : α), x ∈ s ↔ (fun x => x ∈ s) x
⊢ ∏ a ∈ s, f a = ∏ a : { x // x ∈ s }, f ↑a
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
f : α → β
F : Fintype { x // x ∈ s }
h : ∀ (x : α), x ∈ s ↔ (fun x => x ∈ s) x
⊢ ∏ i : { x // x ∈ s }, f ↑i = ∏ a : { x // x ∈ s }, f ↑a
tactic: rw [← prod_coe_sort]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
f : α → β
F : Fintype { x // x ∈ s }
h : ∀ (x : α), x ∈ s ↔ (fun x => x ∈ s) x
⊢ ∏ i : { x // x ∈ s }, f ↑i = ∏ a : { x // x ∈ s }, f ↑a
state_after: no goals
tactic: congr!
Theorem: Polynomial.map_expand_pow_char
File: Mathlib/Algebra/Polynomial/Expand.lean

Proof steps:
state_before: R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
n : ℕ
⊢ map (frobenius R p ^ n) ((expand R (p ^ n)) f) = f ^ p ^ n
state_after: case zero
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
⊢ map (frobenius R p ^ 0) ((expand R (p ^ 0)) f) = f ^ p ^ 0

case succ
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
n✝ : ℕ
n_ih : map (frobenius R p ^ n✝) ((expand R (p ^ n✝)) f) = f ^ p ^ n✝
⊢ map (frobenius R p ^ (n✝ + 1)) ((expand R (p ^ (n✝ + 1))) f) = f ^ p ^ (n✝ + 1)
tactic: induction' n with _ n_ih
state_before: case succ
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
n✝ : ℕ
n_ih : map (frobenius R p ^ n✝) ((expand R (p ^ n✝)) f) = f ^ p ^ n✝
⊢ map (frobenius R p ^ (n✝ + 1)) ((expand R (p ^ (n✝ + 1))) f) = f ^ p ^ (n✝ + 1)
state_after: case succ
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
n✝ : ℕ
n_ih : map (frobenius R p ^ n✝) ((expand R (p ^ n✝)) f) = f ^ p ^ n✝
⊢ f ^ p ^ (n✝ + 1) = map (frobenius R p ^ (n✝ + 1)) ((expand R (p ^ (n✝ + 1))) f)
tactic: symm
state_before: case succ
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : CommSemiring S
p q : ℕ
inst✝ : ExpChar R p
f : R[X]
n✝ : ℕ
n_ih : map (frobenius R p ^ n✝) ((expand R (p ^ n✝)) f) = f ^ p ^ n✝
⊢ f ^ p ^ (n✝ + 1) = map (frobenius R p ^ (n✝ + 1)) ((expand R (p ^ (n✝ + 1))) f)
state_after: no goals
tactic: rw [pow_succ, pow_mul, ← n_ih, ← expand_char, pow_succ', RingHom.mul_def, ← map_map, mul_comm,
    expand_mul, ← map_expand]
Theorem: Subgroup.isComplement_singleton_right
File: Mathlib/GroupTheory/Complement.lean

Proof steps:
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
⊢ IsComplement S {g} ↔ S = univ
state_after: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
h : IsComplement S {g}
x : G
x✝ : x ∈ ⊤
⊢ x ∈ S
tactic: refine
    ⟨fun h => top_le_iff.mp fun x _ => ?_, fun h => h ▸ isComplement_univ_singleton⟩
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
h : IsComplement S {g}
x : G
x✝ : x ∈ ⊤
⊢ x ∈ S
state_after: case intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
h : IsComplement S {g}
x : G
x✝ : x ∈ ⊤
y : ↑S × ↑{g}
hy : (fun x => ↑x.1 * ↑x.2) y = x * g
⊢ x ∈ S
tactic: obtain ⟨y, hy⟩ := h.2 (x * g)
state_before: case intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
h : IsComplement S {g}
x : G
x✝ : x ∈ ⊤
y : ↑S × ↑{g}
hy : (fun x => ↑x.1 * ↑x.2) y = x * g
⊢ x ∈ S
state_after: case intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
h : IsComplement S {g}
x : G
x✝ : x ∈ ⊤
y : ↑S × ↑{g}
hy : (fun x => ↑x.1 * ↑x.2) y = x * ↑y.2
⊢ x ∈ S
tactic: conv_rhs at hy => rw [← show y.2.1 = g from y.2.2]
state_before: case intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
h : IsComplement S {g}
x : G
x✝ : x ∈ ⊤
y : ↑S × ↑{g}
hy : (fun x => ↑x.1 * ↑x.2) y = x * ↑y.2
⊢ x ∈ S
state_after: case intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
h : IsComplement S {g}
x : G
x✝ : x ∈ ⊤
y : ↑S × ↑{g}
hy : (fun x => ↑x.1 * ↑x.2) y = x * ↑y.2
⊢ ↑y.1 ∈ S
tactic: rw [← mul_right_cancel hy]
state_before: case intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
g : G
h : IsComplement S {g}
x : G
x✝ : x ∈ ⊤
y : ↑S × ↑{g}
hy : (fun x => ↑x.1 * ↑x.2) y = x * ↑y.2
⊢ ↑y.1 ∈ S
state_after: no goals
tactic: exact y.1.2
Theorem: TopologicalSpace.noetherianSpace_set_iff
File: Mathlib/Topology/NoetherianSpace.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
s : Set α
⊢ NoetherianSpace ↑s ↔ ∀ t ⊆ s, IsCompact t
state_after: no goals
tactic: simp only [noetherianSpace_iff_isCompact, embedding_subtype_val.isCompact_iff,
    Subtype.forall_set_subtype]
Theorem: Complex.frontier_reProdIm
File: Mathlib/Analysis/Complex/ReImTopology.lean

Proof steps:
state_before: s t : Set ℝ
⊢ frontier (s ×ℂ t) = closure s ×ℂ frontier t ∪ frontier s ×ℂ closure t
state_after: no goals
tactic: simpa only [← preimage_eq_preimage equivRealProdCLM.symm.toHomeomorph.surjective,
    equivRealProdCLM.symm.toHomeomorph.preimage_frontier] using frontier_prod_eq s t
Theorem: List.mem_or_mem_of_zipWith_swap_prod_ne
File: Mathlib/GroupTheory/Perm/List.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l x✝¹ : List α
x✝ : α
⊢ (zipWith swap [] x✝¹).prod x✝ ≠ x✝ → x✝ ∈ [] ∨ x✝ ∈ x✝¹
state_after: no goals
tactic: simp
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l x✝¹ : List α
x✝ : α
⊢ (zipWith swap x✝¹ []).prod x✝ ≠ x✝ → x✝ ∈ x✝¹ ∨ x✝ ∈ []
state_after: no goals
tactic: simp
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
a : α
l : List α
b : α
l' : List α
x : α
hx : (zipWith swap (a :: l) (b :: l')).prod x ≠ x
h : (zipWith swap l l').prod x = x
⊢ (swap a b) x ≠ x
state_after: no goals
tactic: simpa [h] using hx
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
a : α
l : List α
b : α
l' : List α
x : α
hx : (zipWith swap (a :: l) (b :: l')).prod x ≠ x
h : (zipWith swap l l').prod x = x
⊢ x = a → x ∈ a :: l
state_after: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ l : List α
b : α
l' : List α
x : α
h : (zipWith swap l l').prod x = x
hx : (zipWith swap (x :: l) (b :: l')).prod x ≠ x
⊢ x ∈ x :: l
tactic: rintro rfl
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ l : List α
b : α
l' : List α
x : α
h : (zipWith swap l l').prod x = x
hx : (zipWith swap (x :: l) (b :: l')).prod x ≠ x
⊢ x ∈ x :: l
state_after: no goals
tactic: exact .head _
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
a : α
l : List α
b : α
l' : List α
x : α
hx : (zipWith swap (a :: l) (b :: l')).prod x ≠ x
h : (zipWith swap l l').prod x = x
⊢ x = b → x ∈ b :: l'
state_after: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
a : α
l l' : List α
x : α
h : (zipWith swap l l').prod x = x
hx : (zipWith swap (a :: l) (x :: l')).prod x ≠ x
⊢ x ∈ x :: l'
tactic: rintro rfl
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l✝ : List α
a : α
l l' : List α
x : α
h : (zipWith swap l l').prod x = x
hx : (zipWith swap (a :: l) (x :: l')).prod x ≠ x
⊢ x ∈ x :: l'
state_after: no goals
tactic: exact .head _
Theorem: Finset.univ_filter_exists
File: Mathlib/Data/Fintype/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : Fintype α
s t : Finset α
f : α → β
inst✝² : Fintype β
inst✝¹ : DecidablePred fun y => ∃ x, f x = y
inst✝ : DecidableEq β
⊢ filter (fun y => ∃ x, f x = y) univ = image f univ
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : Fintype α
s t : Finset α
f : α → β
inst✝² : Fintype β
inst✝¹ : DecidablePred fun y => ∃ x, f x = y
inst✝ : DecidableEq β
a✝ : β
⊢ a✝ ∈ filter (fun y => ∃ x, f x = y) univ ↔ a✝ ∈ image f univ
tactic: ext
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : Fintype α
s t : Finset α
f : α → β
inst✝² : Fintype β
inst✝¹ : DecidablePred fun y => ∃ x, f x = y
inst✝ : DecidableEq β
a✝ : β
⊢ a✝ ∈ filter (fun y => ∃ x, f x = y) univ ↔ a✝ ∈ image f univ
state_after: no goals
tactic: simp
Theorem: PNat.Prime.ne_one
File: Mathlib/Data/PNat/Prime.lean

Proof steps:
state_before: p : ℕ+
⊢ p.Prime → p ≠ 1
state_after: p : ℕ+
pp : p.Prime
⊢ p ≠ 1
tactic: intro pp
state_before: p : ℕ+
pp : p.Prime
⊢ p ≠ 1
state_after: p : ℕ+
pp : p.Prime
contra : p = 1
⊢ False
tactic: intro contra
state_before: p : ℕ+
pp : p.Prime
contra : p = 1
⊢ False
state_after: p : ℕ+
pp : p.Prime
contra : p = 1
⊢ ↑p = 1
tactic: apply Nat.Prime.ne_one pp
state_before: p : ℕ+
pp : p.Prime
contra : p = 1
⊢ ↑p = 1
state_after: p : ℕ+
pp : p.Prime
contra : p = 1
⊢ p = 1
tactic: rw [PNat.coe_eq_one_iff]
state_before: p : ℕ+
pp : p.Prime
contra : p = 1
⊢ p = 1
state_after: no goals
tactic: apply contra
Theorem: AlgebraicTopology.DoldKan.Γ₀'_obj
File: Mathlib/AlgebraicTopology/DoldKan/FunctorGamma.lean

Proof steps:
state_before: C : Type u_1
inst✝² : Category.{?u.75509, u_1} C
inst✝¹ : Preadditive C
K✝ K'✝ : ChainComplex C ℕ
f✝ : K✝ ⟶ K'✝
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K K' : ChainComplex C ℕ
f : K ⟶ K'
n : ℕ
⊢ ((fun K => Split.mk' (Γ₀.splitting K)) K).s.ι n ≫ (Γ₀.map f).app (op [n]) =
    f.f n ≫ ((fun K => Split.mk' (Γ₀.splitting K)) K').s.ι n
state_after: C : Type u_1
inst✝² : Category.{?u.75509, u_1} C
inst✝¹ : Preadditive C
K✝ K'✝ : ChainComplex C ℕ
f✝ : K✝ ⟶ K'✝
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K K' : ChainComplex C ℕ
f : K ⟶ K'
n : ℕ
⊢ ((Γ₀.splitting K).ι n ≫
      (Γ₀.splitting K).desc (op [n]) fun A => f.f (unop A.fst).len ≫ ((Γ₀.splitting K').cofan (op [n])).inj A) =
    f.f n ≫ (Γ₀.splitting K').ι n
tactic: dsimp
state_before: C : Type u_1
inst✝² : Category.{?u.75509, u_1} C
inst✝¹ : Preadditive C
K✝ K'✝ : ChainComplex C ℕ
f✝ : K✝ ⟶ K'✝
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K K' : ChainComplex C ℕ
f : K ⟶ K'
n : ℕ
⊢ ((Γ₀.splitting K).ι n ≫
      (Γ₀.splitting K).desc (op [n]) fun A => f.f (unop A.fst).len ≫ ((Γ₀.splitting K').cofan (op [n])).inj A) =
    f.f n ≫ (Γ₀.splitting K').ι n
state_after: C : Type u_1
inst✝² : Category.{?u.75509, u_1} C
inst✝¹ : Preadditive C
K✝ K'✝ : ChainComplex C ℕ
f✝ : K✝ ⟶ K'✝
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K K' : ChainComplex C ℕ
f : K ⟶ K'
n : ℕ
⊢ f.f (unop (Splitting.IndexSet.id (op [n])).fst).len ≫
      ((Γ₀.splitting K').cofan (op [n])).inj (Splitting.IndexSet.id (op [n])) =
    f.f n ≫ ((Γ₀.splitting K').cofan (op [n])).inj (Splitting.IndexSet.id (op [n]))
tactic: simp only [← Splitting.cofan_inj_id, (Γ₀.splitting K).ι_desc]
state_before: C : Type u_1
inst✝² : Category.{?u.75509, u_1} C
inst✝¹ : Preadditive C
K✝ K'✝ : ChainComplex C ℕ
f✝ : K✝ ⟶ K'✝
Δ Δ' Δ'' : SimplexCategory
inst✝ : HasFiniteCoproducts C
K K' : ChainComplex C ℕ
f : K ⟶ K'
n : ℕ
⊢ f.f (unop (Splitting.IndexSet.id (op [n])).fst).len ≫
      ((Γ₀.splitting K').cofan (op [n])).inj (Splitting.IndexSet.id (op [n])) =
    f.f n ≫ ((Γ₀.splitting K').cofan (op [n])).inj (Splitting.IndexSet.id (op [n]))
state_after: no goals
tactic: rfl
Theorem: Matrix.fromColumns_mul_fromRows
File: Mathlib/Data/Matrix/ColumnRowPartitioned.lean

Proof steps:
state_before: R : Type u_1
m : Type u_2
m₁ : Type u_3
m₂ : Type u_4
n : Type u_5
n₁ : Type u_6
n₂ : Type u_7
inst✝¹² : Fintype m
inst✝¹¹ : Fintype m₁
inst✝¹⁰ : Fintype m₂
inst✝⁹ : Fintype n
inst✝⁸ : Fintype n₁
inst✝⁷ : Fintype n₂
inst✝⁶ : DecidableEq m
inst✝⁵ : DecidableEq m₁
inst✝⁴ : DecidableEq m₂
inst✝³ : DecidableEq n
inst✝² : DecidableEq n₁
inst✝¹ : DecidableEq n₂
inst✝ : Semiring R
A₁ : Matrix m n₁ R
A₂ : Matrix m n₂ R
B₁ : Matrix n₁ n R
B₂ : Matrix n₂ n R
⊢ A₁.fromColumns A₂ * B₁.fromRows B₂ = A₁ * B₁ + A₂ * B₂
state_after: case a
R : Type u_1
m : Type u_2
m₁ : Type u_3
m₂ : Type u_4
n : Type u_5
n₁ : Type u_6
n₂ : Type u_7
inst✝¹² : Fintype m
inst✝¹¹ : Fintype m₁
inst✝¹⁰ : Fintype m₂
inst✝⁹ : Fintype n
inst✝⁸ : Fintype n₁
inst✝⁷ : Fintype n₂
inst✝⁶ : DecidableEq m
inst✝⁵ : DecidableEq m₁
inst✝⁴ : DecidableEq m₂
inst✝³ : DecidableEq n
inst✝² : DecidableEq n₁
inst✝¹ : DecidableEq n₂
inst✝ : Semiring R
A₁ : Matrix m n₁ R
A₂ : Matrix m n₂ R
B₁ : Matrix n₁ n R
B₂ : Matrix n₂ n R
i✝ : m
j✝ : n
⊢ (A₁.fromColumns A₂ * B₁.fromRows B₂) i✝ j✝ = (A₁ * B₁ + A₂ * B₂) i✝ j✝
tactic: ext
state_before: case a
R : Type u_1
m : Type u_2
m₁ : Type u_3
m₂ : Type u_4
n : Type u_5
n₁ : Type u_6
n₂ : Type u_7
inst✝¹² : Fintype m
inst✝¹¹ : Fintype m₁
inst✝¹⁰ : Fintype m₂
inst✝⁹ : Fintype n
inst✝⁸ : Fintype n₁
inst✝⁷ : Fintype n₂
inst✝⁶ : DecidableEq m
inst✝⁵ : DecidableEq m₁
inst✝⁴ : DecidableEq m₂
inst✝³ : DecidableEq n
inst✝² : DecidableEq n₁
inst✝¹ : DecidableEq n₂
inst✝ : Semiring R
A₁ : Matrix m n₁ R
A₂ : Matrix m n₂ R
B₁ : Matrix n₁ n R
B₂ : Matrix n₂ n R
i✝ : m
j✝ : n
⊢ (A₁.fromColumns A₂ * B₁.fromRows B₂) i✝ j✝ = (A₁ * B₁ + A₂ * B₂) i✝ j✝
state_after: no goals
tactic: simp [mul_apply]