ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: add_bounded_of_bounded_of_bounded
File: Mathlib/Topology/Bornology/BoundedOperation.lean

Proof steps:
state_before: R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
⊢ ∃ C, ∀ (x y : X), dist ((f + g) x) ((f + g) y) ≤ C
state_after: case intro
R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
C : ℝ
hC : ∀ ⦃x : R⦄, x ∈ Set.range f + Set.range g → ∀ ⦃y : R⦄, y ∈ Set.range f + Set.range g → dist x y ≤ C
⊢ ∃ C, ∀ (x y : X), dist ((f + g) x) ((f + g) y) ≤ C
tactic: obtain ⟨C, hC⟩ := Metric.isBounded_iff.mp <|
    isBounded_add (Metric.isBounded_range_iff.mpr f_bdd) (Metric.isBounded_range_iff.mpr g_bdd)
state_before: case intro
R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
C : ℝ
hC : ∀ ⦃x : R⦄, x ∈ Set.range f + Set.range g → ∀ ⦃y : R⦄, y ∈ Set.range f + Set.range g → dist x y ≤ C
⊢ ∃ C, ∀ (x y : X), dist ((f + g) x) ((f + g) y) ≤ C
state_after: case h
R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
C : ℝ
hC : ∀ ⦃x : R⦄, x ∈ Set.range f + Set.range g → ∀ ⦃y : R⦄, y ∈ Set.range f + Set.range g → dist x y ≤ C
⊢ ∀ (x y : X), dist ((f + g) x) ((f + g) y) ≤ C
tactic: use C
state_before: case h
R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
C : ℝ
hC : ∀ ⦃x : R⦄, x ∈ Set.range f + Set.range g → ∀ ⦃y : R⦄, y ∈ Set.range f + Set.range g → dist x y ≤ C
⊢ ∀ (x y : X), dist ((f + g) x) ((f + g) y) ≤ C
state_after: case h
R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
C : ℝ
hC : ∀ ⦃x : R⦄, x ∈ Set.range f + Set.range g → ∀ ⦃y : R⦄, y ∈ Set.range f + Set.range g → dist x y ≤ C
x y : X
⊢ dist ((f + g) x) ((f + g) y) ≤ C
tactic: intro x y
state_before: case h
R : Type u_1
X : Type u_2
inst✝² : PseudoMetricSpace R
inst✝¹ : Add R
inst✝ : BoundedAdd R
f g : X → R
f_bdd : ∃ C, ∀ (x y : X), dist (f x) (f y) ≤ C
g_bdd : ∃ C, ∀ (x y : X), dist (g x) (g y) ≤ C
C : ℝ
hC : ∀ ⦃x : R⦄, x ∈ Set.range f + Set.range g → ∀ ⦃y : R⦄, y ∈ Set.range f + Set.range g → dist x y ≤ C
x y : X
⊢ dist ((f + g) x) ((f + g) y) ≤ C
state_after: no goals
tactic: exact hC (Set.add_mem_add (Set.mem_range_self (f := f) x) (Set.mem_range_self (f := g) x))
           (Set.add_mem_add (Set.mem_range_self (f := f) y) (Set.mem_range_self (f := g) y))
Theorem: exists_open_nhds_zero_half
File: Mathlib/Topology/Algebra/Monoid.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : MulOneClass M
inst✝ : ContinuousMul M
s : Set M
hs : s ∈ 𝓝 1
⊢ ∃ V, IsOpen V ∧ 1 ∈ V ∧ ∀ v ∈ V, ∀ w ∈ V, v * w ∈ s
state_after: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : MulOneClass M
inst✝ : ContinuousMul M
s : Set M
hs : s ∈ 𝓝 1
this : (fun a => a.1 * a.2) ⁻¹' s ∈ 𝓝 (1, 1)
⊢ ∃ V, IsOpen V ∧ 1 ∈ V ∧ ∀ v ∈ V, ∀ w ∈ V, v * w ∈ s
tactic: have : (fun a : M × M => a.1 * a.2) ⁻¹' s ∈ 𝓝 ((1, 1) : M × M) :=
    tendsto_mul (by simpa only [one_mul] using hs)
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
X : Type u_5
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : MulOneClass M
inst✝ : ContinuousMul M
s : Set M
hs : s ∈ 𝓝 1
this : (fun a => a.1 * a.2) ⁻¹' s ∈ 𝓝 (1, 1)
⊢ ∃ V, IsOpen V ∧ 1 ∈ V ∧ ∀ v ∈ V, ∀ w ∈ V, v * w ∈ s
state_after: no goals
tactic: simpa only [prod_subset_iff] using exists_nhds_square this
Theorem: iSup_le_iSup_of_partialSups_le_partialSups
File: Mathlib/Order/PartialSups.lean

Proof steps:
state_before: α : Type u_1
inst✝ : CompleteLattice α
f g : ℕ → α
h : partialSups f ≤ partialSups g
⊢ ⨆ n, f n ≤ ⨆ n, g n
state_after: α : Type u_1
inst✝ : CompleteLattice α
f g : ℕ → α
h : partialSups f ≤ partialSups g
⊢ ⨆ n, (partialSups f) n ≤ ⨆ n, (partialSups g) n
tactic: rw [← iSup_partialSups_eq f, ← iSup_partialSups_eq g]
state_before: α : Type u_1
inst✝ : CompleteLattice α
f g : ℕ → α
h : partialSups f ≤ partialSups g
⊢ ⨆ n, (partialSups f) n ≤ ⨆ n, (partialSups g) n
state_after: no goals
tactic: exact iSup_mono h
Theorem: Finsupp.total_unique
File: Mathlib/LinearAlgebra/Finsupp.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
R : Type u_5
S : Type u_6
inst✝¹⁰ : Semiring R
inst✝⁹ : Semiring S
inst✝⁸ : AddCommMonoid M
inst✝⁷ : Module R M
inst✝⁶ : AddCommMonoid N
inst✝⁵ : Module R N
inst✝⁴ : AddCommMonoid P
inst✝³ : Module R P
α' : Type u_7
M' : Type u_8
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
v✝ : α → M
v' : α' → M'
inst✝ : Unique α
l : α →₀ R
v : α → M
⊢ (Finsupp.total α M R v) l = l default • v default
state_after: no goals
tactic: rw [← total_single, ← unique_single l]
Theorem: sigma_mk_preimage_image'
File: Mathlib/Data/Set/Image.lean

Proof steps:
state_before: α : Type u_1
β : α → Type u_2
i j : α
s : Set (β i)
h : i ≠ j
⊢ Sigma.mk j ⁻¹' (Sigma.mk i '' s) = ∅
state_after: no goals
tactic: simp [image, h]
Theorem: complementedLattice_iff_isAtomistic
File: Mathlib/Order/CompactlyGenerated/Basic.lean

Proof steps:
state_before: ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : IsModularLattice α
inst✝ : IsCompactlyGenerated α
⊢ ComplementedLattice α ↔ IsAtomistic α
state_after: case mp
ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : IsModularLattice α
inst✝ : IsCompactlyGenerated α
a✝ : ComplementedLattice α
⊢ IsAtomistic α

case mpr
ι : Sort u_1
α : Type u_2
inst✝² : CompleteLattice α
f : ι → α
inst✝¹ : IsModularLattice α
inst✝ : IsCompactlyGenerated α
a✝ : IsAtomistic α
⊢ ComplementedLattice α
tactic: constructor <;> intros
Theorem: SimpleGraph.adjMatrix_mul_self_apply_self
File: Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean

Proof steps:
state_before: V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝² : DecidableRel G.Adj
inst✝¹ : Fintype V
inst✝ : NonAssocSemiring α
i : V
⊢ (adjMatrix α G * adjMatrix α G) i i = ↑(G.degree i)
state_after: no goals
tactic: simp [filter_true_of_mem]
Theorem: not_isMin_iff
File: Mathlib/Order/Max.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : Preorder α
a b : α
⊢ ¬IsMin a ↔ ∃ b, b < a
state_after: no goals
tactic: simp [lt_iff_le_not_le, IsMin, not_forall, exists_prop]
Theorem: AddUnits.embedProduct_apply
File: Mathlib/Algebra/Group/Prod.lean

Proof steps:
state_before: A : Type u_1
B : Type u_2
G : Type u_3
H : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
α : Type u_8
inst✝ : Monoid α
⊢ (fun x => (↑x, op ↑x⁻¹)) 1 = 1
state_after: no goals
tactic: simp only [inv_one, eq_self_iff_true, Units.val_one, op_one, Prod.mk_eq_one, and_self_iff]
state_before: A : Type u_1
B : Type u_2
G : Type u_3
H : Type u_4
M : Type u_5
N : Type u_6
P : Type u_7
α : Type u_8
inst✝ : Monoid α
x y : αˣ
⊢ { toFun := fun x => (↑x, op ↑x⁻¹), map_one' := ⋯ }.toFun (x * y) =
    { toFun := fun x => (↑x, op ↑x⁻¹), map_one' := ⋯ }.toFun x *
      { toFun := fun x => (↑x, op ↑x⁻¹), map_one' := ⋯ }.toFun y
state_after: no goals
tactic: simp only [mul_inv_rev, op_mul, Units.val_mul, Prod.mk_mul_mk]
Theorem: MeasureTheory.setIntegral_condexp
File: Mathlib/MeasureTheory/Function/ConditionalExpectation/Basic.lean

Proof steps:
state_before: α : Type u_1
F : Type u_2
F' : Type u_3
𝕜 : Type u_4
p : ℝ≥0∞
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace 𝕜 F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : CompleteSpace F'
m m0 : MeasurableSpace α
μ : Measure α
f g : α → F'
s : Set α
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
hf : Integrable f μ
hs : MeasurableSet s
⊢ ∫ (x : α) in s, (μ[f|m]) x ∂μ = ∫ (x : α) in s, f x ∂μ
state_after: α : Type u_1
F : Type u_2
F' : Type u_3
𝕜 : Type u_4
p : ℝ≥0∞
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace 𝕜 F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : CompleteSpace F'
m m0 : MeasurableSpace α
μ : Measure α
f g : α → F'
s : Set α
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
hf : Integrable f μ
hs : MeasurableSet s
⊢ ∫ (x : α) in s, ↑↑(condexpL1 hm μ f) x ∂μ = ∫ (x : α) in s, f x ∂μ
tactic: rw [setIntegral_congr_ae (hm s hs) ((condexp_ae_eq_condexpL1 hm f).mono fun x hx _ => hx)]
state_before: α : Type u_1
F : Type u_2
F' : Type u_3
𝕜 : Type u_4
p : ℝ≥0∞
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace 𝕜 F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : CompleteSpace F'
m m0 : MeasurableSpace α
μ : Measure α
f g : α → F'
s : Set α
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
hf : Integrable f μ
hs : MeasurableSet s
⊢ ∫ (x : α) in s, ↑↑(condexpL1 hm μ f) x ∂μ = ∫ (x : α) in s, f x ∂μ
state_after: no goals
tactic: exact setIntegral_condexpL1 hf hs
Theorem: MeasurableSet.exists_isCompact_isClosed_lt_add
File: Mathlib/MeasureTheory/Measure/Regular.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝⁴ : MeasurableSpace α
inst✝³ : TopologicalSpace α
μ : Measure α
inst✝² : μ.InnerRegularCompactLTTop
inst✝¹ : R1Space α
inst✝ : BorelSpace α
A : Set α
hA : MeasurableSet A
h'A : μ A ≠ ⊤
ε : ℝ≥0∞
hε : ε ≠ 0
K : Set α
hKA : K ⊆ A
hK : IsCompact K
hμK : μ A < μ K + ε
⊢ μ A < μ (closure K) + ε
state_after: no goals
tactic: rwa [hK.measure_closure]
Theorem: Matrix.fromBlocks_zero
File: Mathlib/Data/Matrix/Block.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝ : Zero α
⊢ fromBlocks 0 0 0 0 = 0
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝ : Zero α
i : n ⊕ o
j : l ⊕ m
⊢ fromBlocks 0 0 0 0 i j = 0 i j
tactic: ext i j
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
p : Type u_5
q : Type u_6
m' : o → Type u_7
n' : o → Type u_8
p' : o → Type u_9
R : Type u_10
S : Type u_11
α : Type u_12
β : Type u_13
inst✝ : Zero α
i : n ⊕ o
j : l ⊕ m
⊢ fromBlocks 0 0 0 0 i j = 0 i j
state_after: no goals
tactic: rcases i with ⟨⟩ <;> rcases j with ⟨⟩ <;> rfl
Theorem: DirectSum.coe_decompose_mul_of_left_mem_of_le
File: Mathlib/RingTheory/GradedAlgebra/Basic.lean

Proof steps:
state_before: ι : Type u_1
R : Type u_2
A : Type u_3
σ : Type u_4
inst✝⁸ : Semiring A
inst✝⁷ : DecidableEq ι
inst✝⁶ : CanonicallyOrderedAddCommMonoid ι
inst✝⁵ : SetLike σ A
inst✝⁴ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝³ : GradedRing 𝒜
a b : A
n i : ι
inst✝² : Sub ι
inst✝¹ : OrderedSub ι
inst✝ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
a_mem : a ∈ 𝒜 i
h : i ≤ n
⊢ ↑(((decompose 𝒜) (a * b)) n) = a * ↑(((decompose 𝒜) b) (n - i))
state_after: case intro
ι : Type u_1
R : Type u_2
A : Type u_3
σ : Type u_4
inst✝⁸ : Semiring A
inst✝⁷ : DecidableEq ι
inst✝⁶ : CanonicallyOrderedAddCommMonoid ι
inst✝⁵ : SetLike σ A
inst✝⁴ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝³ : GradedRing 𝒜
b : A
n i : ι
inst✝² : Sub ι
inst✝¹ : OrderedSub ι
inst✝ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
h : i ≤ n
a : ↥(𝒜 i)
⊢ ↑(((decompose 𝒜) (↑a * b)) n) = ↑a * ↑(((decompose 𝒜) b) (n - i))
tactic: lift a to 𝒜 i using a_mem
state_before: case intro
ι : Type u_1
R : Type u_2
A : Type u_3
σ : Type u_4
inst✝⁸ : Semiring A
inst✝⁷ : DecidableEq ι
inst✝⁶ : CanonicallyOrderedAddCommMonoid ι
inst✝⁵ : SetLike σ A
inst✝⁴ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝³ : GradedRing 𝒜
b : A
n i : ι
inst✝² : Sub ι
inst✝¹ : OrderedSub ι
inst✝ : ContravariantClass ι ι (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
h : i ≤ n
a : ↥(𝒜 i)
⊢ ↑(((decompose 𝒜) (↑a * b)) n) = ↑a * ↑(((decompose 𝒜) b) (n - i))
state_after: no goals
tactic: rwa [decompose_mul, decompose_coe, coe_of_mul_apply_of_le]
Theorem: CompleteSublattice.disjoint_iff
File: Mathlib/Order/CompleteSublattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : CompleteLattice α
inst✝ : CompleteLattice β
f : CompleteLatticeHom α β
L : CompleteSublattice α
a b : ↥L
⊢ Disjoint a b ↔ Disjoint ↑a ↑b
state_after: no goals
tactic: rw [disjoint_iff, disjoint_iff, ← Sublattice.coe_inf, ← coe_bot (L := L),
    Subtype.coe_injective.eq_iff]
Theorem: ContinuousAt.oscillation_eq_zero
File: Mathlib/Analysis/Oscillation.lean

Proof steps:
state_before: E : Type u
F : Type v
inst✝¹ : PseudoEMetricSpace F
inst✝ : TopologicalSpace E
f : E → F
x : E
hf : ContinuousAt f x
⊢ oscillation f x = 0
state_after: E : Type u
F : Type v
inst✝¹ : PseudoEMetricSpace F
inst✝ : TopologicalSpace E
f : E → F
x : E
hf : ContinuousWithinAt f univ x
⊢ oscillation f x = 0
tactic: rw [← continuousWithinAt_univ f x] at hf
state_before: E : Type u
F : Type v
inst✝¹ : PseudoEMetricSpace F
inst✝ : TopologicalSpace E
f : E → F
x : E
hf : ContinuousWithinAt f univ x
⊢ oscillation f x = 0
state_after: no goals
tactic: exact oscillationWithin_univ_eq_oscillation f x ▸ hf.oscillationWithin_eq_zero
Theorem: CategoryTheory.extensiveTopology.presheafIsLocallySurjective_iff
File: Mathlib/CategoryTheory/Sites/Coherent/LocallySurjective.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
inst✝⁴ : ConcreteCategory D
inst✝³ : FinitaryPreExtensive C
F G : Cᵒᵖ ⥤ D
f : F ⟶ G
inst✝² : PreservesFiniteProducts F
inst✝¹ : PreservesFiniteProducts G
inst✝ : PreservesFiniteProducts (forget D)
⊢ Presheaf.IsLocallySurjective (extensiveTopology C) f ↔ ∀ (X : C), Function.Surjective ⇑(f.app (op X))
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
inst✝⁴ : ConcreteCategory D
inst✝³ : FinitaryPreExtensive C
F G : Cᵒᵖ ⥤ D
f : F ⟶ G
inst✝² : PreservesFiniteProducts F
inst✝¹ : PreservesFiniteProducts G
inst✝ : PreservesFiniteProducts (forget D)
⊢ Presheaf.IsLocallySurjective (extensiveTopology C) f → ∀ (X : C), Function.Surjective ⇑(f.app (op X))

case mpr
C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{u_4, u_2} D
inst✝⁴ : ConcreteCategory D
inst✝³ : FinitaryPreExtensive C
F G : Cᵒᵖ ⥤ D
f : F ⟶ G
inst✝² : PreservesFiniteProducts F
inst✝¹ : PreservesFiniteProducts G
inst✝ : PreservesFiniteProducts (forget D)
⊢ (∀ (X : C), Function.Surjective ⇑(f.app (op X))) → Presheaf.IsLocallySurjective (extensiveTopology C) f
tactic: constructor
Theorem: closure_sUnion
File: Mathlib/Topology/AlexandrovDiscrete.lean

Proof steps:
state_before: ι : Sort u_1
κ : ι → Sort u_2
α : Type u_3
β : Type u_4
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
inst✝ : AlexandrovDiscrete α
S✝ : Set (Set α)
f : ι → Set α
S : Set (Set α)
⊢ closure (⋃₀ S) = ⋃ s ∈ S, closure s
state_after: no goals
tactic: simp_rw [sUnion_eq_biUnion, closure_iUnion]
Theorem: _private.Mathlib.CategoryTheory.Galois.Decomposition.0.CategoryTheory.PreGaloisCategory.selfProdProj_fiber
File: Mathlib/CategoryTheory/Galois/Decomposition.lean

Proof steps:
state_before: C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
x : ↑(F.obj X)
⊢ F.map (CategoryTheory.PreGaloisCategory.selfProdProj u x) a = x
state_after: C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
x : ↑(F.obj X)
⊢ F.map (Pi.π (fun x => X) x) (CategoryTheory.PreGaloisCategory.mkSelfProdFib F X) = x
tactic: simp only [selfProdProj, selfProd, F.map_comp, FintypeCat.comp_apply, h]
state_before: C : Type u₁
inst✝⁴ : Category.{u₂, u₁} C
inst✝³ : GaloisCategory C
F : C ⥤ FintypeCat
inst✝² : FiberFunctor F
X A : C
inst✝¹ : IsConnected A
u : A ⟶ CategoryTheory.PreGaloisCategory.selfProd F X
inst✝ : Mono u
a : ↑(F.obj A)
h : F.map u a = CategoryTheory.PreGaloisCategory.mkSelfProdFib F X
x : ↑(F.obj X)
⊢ F.map (Pi.π (fun x => X) x) (CategoryTheory.PreGaloisCategory.mkSelfProdFib F X) = x
state_after: no goals
tactic: rw [mkSelfProdFib_map_π F X x]
Theorem: Ordinal.add_absorp
File: Mathlib/SetTheory/Ordinal/Principal.lean

Proof steps:
state_before: a b c : Ordinal.{u_1}
h₁ : a < ω ^ b
h₂ : ω ^ b ≤ c
⊢ a + c = c
state_after: no goals
tactic: rw [← Ordinal.add_sub_cancel_of_le h₂, ← add_assoc, add_omega_opow h₁]
Theorem: Polynomial.natDegree_sum_le_of_forall_le
File: Mathlib/Algebra/Polynomial/BigOperators.lean

Proof steps:
state_before: R : Type u
ι : Type w
s : Finset ι
S : Type u_1
inst✝ : Semiring S
n : ℕ
f : ι → S[X]
h : ∀ i ∈ s, (f i).natDegree ≤ n
⊢ 0 ≤ n ∧ ∀ x ∈ s, (natDegree ∘ f) x ≤ n
state_after: no goals
tactic: simpa
Theorem: List.cons_bagInter_of_pos
File: Mathlib/Data/List/Lattice.lean

Proof steps:
state_before: α : Type u_1
l l₁✝ l₂ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
l₁ : List α
h : a ∈ l₂
⊢ (a :: l₁).bagInter l₂ = a :: l₁.bagInter (l₂.erase a)
state_after: case nil
α : Type u_1
l l₁✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
l₁ : List α
h : a ∈ []
⊢ (a :: l₁).bagInter [] = a :: l₁.bagInter ([].erase a)

case cons
α : Type u_1
l l₁✝ : List α
p : α → Prop
a : α
inst✝ : DecidableEq α
l₁ : List α
head✝ : α
tail✝ : List α
h : a ∈ head✝ :: tail✝
⊢ (a :: l₁).bagInter (head✝ :: tail✝) = a :: l₁.bagInter ((head✝ :: tail✝).erase a)
tactic: cases l₂
Theorem: SimpleGraph.IsAcyclic.path_unique
File: Mathlib/Combinatorics/SimpleGraph/Acyclic.lean

Proof steps:
state_before: V : Type u
G✝ G : SimpleGraph V
h : G.IsAcyclic
v w : V
p q : G.Path v w
⊢ p = q
state_after: case mk
V : Type u
G✝ G : SimpleGraph V
h : G.IsAcyclic
v w : V
q : G.Path v w
p : G.Walk v w
hp : p.IsPath
⊢ ⟨p, hp⟩ = q
tactic: obtain ⟨p, hp⟩ := p
state_before: case mk
V : Type u
G✝ G : SimpleGraph V
h : G.IsAcyclic
v w : V
q : G.Path v w
p : G.Walk v w
hp : p.IsPath
⊢ ⟨p, hp⟩ = q
state_after: case mk.mk
V : Type u
G✝ G : SimpleGraph V
h : G.IsAcyclic
v w : V
p : G.Walk v w
hp : p.IsPath
q : G.Walk v w
hq : q.IsPath
⊢ ⟨p, hp⟩ = ⟨q, hq⟩
tactic: obtain ⟨q, hq⟩ := q
state_before: case mk.mk
V : Type u
G✝ G : SimpleGraph V
h : G.IsAcyclic
v w : V
p : G.Walk v w
hp : p.IsPath
q : G.Walk v w
hq : q.IsPath
⊢ ⟨p, hp⟩ = ⟨q, hq⟩
state_after: case mk.mk
V : Type u
G✝ G : SimpleGraph V
h : G.IsAcyclic
v w : V
p : G.Walk v w
hp : p.IsPath
q : G.Walk v w
hq : q.IsPath
⊢ p = q
tactic: rw [Subtype.mk.injEq]
Theorem: Set.indicator_diff
File: Mathlib/Algebra/Group/Indicator.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
M : Type u_4
N : Type u_5
G : Type u_6
inst✝ : Group G
s t : Set α
f✝ g : α → G
a : α
h : s ⊆ t
f : α → G
⊢ (t \ s).mulIndicator f = t.mulIndicator f / s.mulIndicator f
state_after: no goals
tactic: rw [mulIndicator_diff h, div_eq_mul_inv]
Theorem: List.mem_of_formPerm_apply_ne
File: Mathlib/GroupTheory/Perm/List.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x : α
h : l.formPerm x ≠ x
⊢ x ∈ l
state_after: no goals
tactic: simpa [or_iff_left_of_imp mem_of_mem_tail] using mem_or_mem_of_zipWith_swap_prod_ne h
Theorem: Filter.HasBasis.disjoint_iff
File: Mathlib/Order/Filter/Bases.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
l l' : Filter α
p : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
hl : l.HasBasis p s
hl' : l'.HasBasis p' s'
⊢ ¬Disjoint l l' ↔ ¬∃ i, p i ∧ ∃ i', p' i' ∧ Disjoint (s i) (s' i')
state_after: no goals
tactic: simp only [_root_.disjoint_iff, ← Ne.eq_def, ← neBot_iff, inf_eq_inter,
    hl.inf_basis_neBot_iff hl', not_exists, not_and, bot_eq_empty, ← nonempty_iff_ne_empty]
Theorem: LiouvilleWith.rat_add_iff
File: Mathlib/NumberTheory/Liouville/LiouvilleWith.lean

Proof steps:
state_before: p q x y : ℝ
r : ℚ
m : ℤ
n : ℕ
⊢ LiouvilleWith p (↑r + x) ↔ LiouvilleWith p x
state_after: no goals
tactic: rw [add_comm, add_rat_iff]
Theorem: Equiv.Perm.support_swap_mul_ge_support_diff
File: Mathlib/GroupTheory/Perm/Support.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x y : α
⊢ f.support \ {x, y} ≤ (swap x y * f).support
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x y a✝ : α
⊢ a✝ ∈ f.support \ {x, y} → a✝ ∈ (swap x y * f).support
tactic: intro
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x y a✝ : α
⊢ a✝ ∈ f.support \ {x, y} → a✝ ∈ (swap x y * f).support
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x y a✝ : α
⊢ ¬f a✝ = a✝ → ¬(a✝ = x ∨ a✝ = y) → ¬(swap x y) (f a✝) = a✝
tactic: simp only [and_imp, Perm.coe_mul, Function.comp_apply, Ne, mem_support, mem_insert, mem_sdiff,
    mem_singleton]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x y a✝ : α
⊢ ¬f a✝ = a✝ → ¬(a✝ = x ∨ a✝ = y) → ¬(swap x y) (f a✝) = a✝
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x y a✝ : α
⊢ f a✝ ≠ a✝ → a✝ ≠ x ∧ a✝ ≠ y → (swap x y) (f a✝) ≠ a✝
tactic: push_neg
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x y a✝ : α
⊢ f a✝ ≠ a✝ → a✝ ≠ x ∧ a✝ ≠ y → (swap x y) (f a✝) ≠ a✝
state_after: case intro
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x y a✝ : α
ha : f a✝ ≠ a✝
hx : a✝ ≠ x
hy : a✝ ≠ y
H : (swap x y) (f a✝) = a✝
⊢ False
tactic: rintro ha ⟨hx, hy⟩ H
state_before: case intro
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x y a✝ : α
ha : f a✝ ≠ a✝
hx : a✝ ≠ x
hy : a✝ ≠ y
H : (swap x y) (f a✝) = a✝
⊢ False
state_after: case intro
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x y a✝ : α
ha : f a✝ ≠ a✝
hx : a✝ ≠ x
hy : a✝ ≠ y
H : f a✝ = a✝
⊢ False
tactic: rw [swap_apply_eq_iff, swap_apply_of_ne_of_ne hx hy] at H
state_before: case intro
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
x y a✝ : α
ha : f a✝ ≠ a✝
hx : a✝ ≠ x
hy : a✝ ≠ y
H : f a✝ = a✝
⊢ False
state_after: no goals
tactic: exact ha H
Theorem: Mathlib.Vector.scanl_singleton
File: Mathlib/Data/Vector/Basic.lean

Proof steps:
state_before: n : ℕ
α : Type u_1
β : Type u_2
f : β → α → β
b : β
v✝ : Vector α n
v : Vector α 1
⊢ scanl f b v = b ::ᵥ f b v.head ::ᵥ nil
state_after: n : ℕ
α : Type u_1
β : Type u_2
f : β → α → β
b : β
v✝ : Vector α n
v : Vector α 1
⊢ scanl f b (v.head ::ᵥ v.tail) = b ::ᵥ f b (v.head ::ᵥ v.tail).head ::ᵥ nil
tactic: rw [← cons_head_tail v]
state_before: n : ℕ
α : Type u_1
β : Type u_2
f : β → α → β
b : β
v✝ : Vector α n
v : Vector α 1
⊢ scanl f b (v.head ::ᵥ v.tail) = b ::ᵥ f b (v.head ::ᵥ v.tail).head ::ᵥ nil
state_after: no goals
tactic: simp only [scanl_cons, scanl_nil, head_cons, singleton_tail]
Theorem: IsAdjoinRootMonic.coeff_one
File: Mathlib/RingTheory/IsAdjoinRoot.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝³ : CommRing R
inst✝² : Ring S
f : R[X]
inst✝¹ : Algebra R S
inst✝ : Nontrivial S
h : IsAdjoinRootMonic S f
⊢ h.coeff 1 = Pi.single 0 1
state_after: no goals
tactic: rw [← h.coeff_root_pow h.deg_pos, pow_zero]
Theorem: Matroid.dual_dual
File: Mathlib/Data/Matroid/Dual.lean

Proof steps:
state_before: α : Type u_1
M✝ : Matroid α
I B✝ X : Set α
M : Matroid α
B : Set α
h : B ⊆ M.E
⊢ M✶✶.Base B ↔ M.Base B
state_after: no goals
tactic: rw [dual_base_iff, dual_base_iff, dual_ground, diff_diff_cancel_left h]