ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: map_comp_neg
File: Mathlib/Algebra/Group/Hom/Defs.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝⁶ : MulOneClass M
inst✝⁵ : MulOneClass N
inst✝⁴ : FunLike F M N
inst✝³ : FunLike F G H
inst✝² : Group G
inst✝¹ : DivisionMonoid H
inst✝ : MonoidHomClass F G H
f : F
g : ι → G
⊢ ⇑f ∘ g⁻¹ = (⇑f ∘ g)⁻¹
state_after: case h
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝⁶ : MulOneClass M
inst✝⁵ : MulOneClass N
inst✝⁴ : FunLike F M N
inst✝³ : FunLike F G H
inst✝² : Group G
inst✝¹ : DivisionMonoid H
inst✝ : MonoidHomClass F G H
f : F
g : ι → G
x✝ : ι
⊢ (⇑f ∘ g⁻¹) x✝ = (⇑f ∘ g)⁻¹ x✝
tactic: ext
state_before: case h
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝⁶ : MulOneClass M
inst✝⁵ : MulOneClass N
inst✝⁴ : FunLike F M N
inst✝³ : FunLike F G H
inst✝² : Group G
inst✝¹ : DivisionMonoid H
inst✝ : MonoidHomClass F G H
f : F
g : ι → G
x✝ : ι
⊢ (⇑f ∘ g⁻¹) x✝ = (⇑f ∘ g)⁻¹ x✝
state_after: no goals
tactic: simp
Theorem: CategoryTheory.Limits.kernelSubobject_comp_mono
File: Mathlib/CategoryTheory/Subobject/Limits.lean

Proof steps:
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
X Y Z✝ : C
inst✝³ : HasZeroMorphisms C
f✝ : X ⟶ Y
inst✝² : HasKernel f✝
f : X ⟶ Y
inst✝¹ : HasKernel f
Z : C
h : Y ⟶ Z
inst✝ : Mono h
⊢ ((kernelSubobject (f ≫ h)).arrow ≫ f) ≫ h = 0 ≫ h
state_after: no goals
tactic: simp
Theorem: finsum_mem_finset_product₃
File: Mathlib/Algebra/BigOperators/Finprod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
G : Type u_4
M : Type u_5
N : Type u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f✝ g : α → M
a b : α
s✝ t : Set α
γ : Type u_7
s : Finset (α × β × γ)
f : α × β × γ → M
⊢ ∏ᶠ (abc : α × β × γ) (_ : abc ∈ s), f abc = ∏ᶠ (a : α) (b : β) (c : γ) (_ : (a, b, c) ∈ s), f (a, b, c)
state_after: no goals
tactic: classical
    rw [finprod_mem_finset_product']
    simp_rw [finprod_mem_finset_product']
    simp
Theorem: BoundedLatticeHom.cancel_left
File: Mathlib/Order/Hom/Lattice.lean

Proof steps:
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
δ : Type u_6
inst✝⁸ : FunLike F α β
inst✝⁷ : Lattice α
inst✝⁶ : Lattice β
inst✝⁵ : Lattice γ
inst✝⁴ : Lattice δ
inst✝³ : BoundedOrder α
inst✝² : BoundedOrder β
inst✝¹ : BoundedOrder γ
inst✝ : BoundedOrder δ
g : BoundedLatticeHom β γ
f₁ f₂ : BoundedLatticeHom α β
hg : Injective ⇑g
h : g.comp f₁ = g.comp f₂
a : α
⊢ g (f₁ a) = g (f₂ a)
state_after: no goals
tactic: rw [← comp_apply, h, comp_apply]
Theorem: Algebra.isAlgebraic_iff
File: Mathlib/RingTheory/Algebraic.lean

Proof steps:
state_before: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
⊢ Algebra.IsAlgebraic R A ↔ ⊤.IsAlgebraic
state_after: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
⊢ Algebra.IsAlgebraic R A ↔ ∀ x ∈ ⊤, IsAlgebraic R x
tactic: delta Subalgebra.IsAlgebraic
state_before: R : Type u
A : Type v
inst✝² : CommRing R
inst✝¹ : Ring A
inst✝ : Algebra R A
⊢ Algebra.IsAlgebraic R A ↔ ∀ x ∈ ⊤, IsAlgebraic R x
state_after: no goals
tactic: simp only [Algebra.isAlgebraic_def, Algebra.mem_top, forall_prop_of_true, iff_self_iff]
Theorem: Real.toNNReal_of_nonneg
File: Mathlib/Data/NNReal/Basic.lean

Proof steps:
state_before: r : ℝ
hr : 0 ≤ r
⊢ r.toNNReal = ⟨r, hr⟩
state_after: no goals
tactic: simp_rw [Real.toNNReal, max_eq_left hr]
Theorem: List.mem_sym2_iff
File: Mathlib/Data/List/Sym.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
xs : List α
z : Sym2 α
⊢ z ∈ xs.sym2 ↔ ∀ y ∈ z, y ∈ xs
state_after: α : Type u_1
β : Type u_2
xs : List α
z : Sym2 α
a b : α
⊢ s(a, b) ∈ xs.sym2 ↔ ∀ y ∈ s(a, b), y ∈ xs
tactic: refine z.ind (fun a b => ?_)
state_before: α : Type u_1
β : Type u_2
xs : List α
z : Sym2 α
a b : α
⊢ s(a, b) ∈ xs.sym2 ↔ ∀ y ∈ s(a, b), y ∈ xs
state_after: no goals
tactic: simp [mk_mem_sym2_iff]
Theorem: CategoryTheory.Dial.braiding_naturality_right
File: Mathlib/CategoryTheory/Dialectica/Monoidal.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasFiniteProducts C
inst✝ : HasPullbacks C
X Y Z : Dial C
f : Y ⟶ Z
⊢ tensorHom (𝟙 X) f ≫ (X.braiding Z).hom = (X.braiding Y).hom ≫ tensorHom f (𝟙 X)
state_after: no goals
tactic: aesop_cat
Theorem: Subgroup.smul_apply_eq_smul_apply_inv_smul
File: Mathlib/GroupTheory/Complement.lean

Proof steps:
state_before: G : Type u_1
inst✝³ : Group G
H K : Subgroup G
S T✝ : Set G
F : Type u_2
inst✝² : Group F
inst✝¹ : MulAction F G
inst✝ : QuotientAction F H
f : F
T : ↑(leftTransversals ↑H)
q : G ⧸ H
⊢ ↑((toEquiv ⋯) q) = f • ↑((toEquiv ⋯) (f⁻¹ • q))
state_after: no goals
tactic: rw [smul_toEquiv, smul_inv_smul]
Theorem: SeparationQuotient.comap_mk_nhdsSet
File: Mathlib/Topology/Inseparable.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
t : Set (SeparationQuotient X)
⊢ comap mk (𝓝ˢ t) = 𝓝ˢ (mk ⁻¹' t)
state_after: no goals
tactic: conv_lhs => rw [← image_preimage_eq t surjective_mk, comap_mk_nhdsSet_image]
Theorem: Part.fix_eq
File: Mathlib/Control/LawfulFix.lean

Proof steps:
state_before: α✝ : Type u_1
β : α✝ → Type u_2
α : Type u_3
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
hc : Continuous f
⊢ Part.fix ⇑f = f (Part.fix ⇑f)
state_after: α✝ : Type u_1
β : α✝ → Type u_2
α : Type u_3
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
hc : Continuous f
⊢ ωSup (approxChain f) = ωSup ((approxChain f).map f)
tactic: rw [fix_eq_ωSup f, hc]
state_before: α✝ : Type u_1
β : α✝ → Type u_2
α : Type u_3
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
hc : Continuous f
⊢ ωSup (approxChain f) = ωSup ((approxChain f).map f)
state_after: case a
α✝ : Type u_1
β : α✝ → Type u_2
α : Type u_3
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
hc : Continuous f
⊢ ωSup (approxChain f) ≤ ωSup ((approxChain f).map f)

case a
α✝ : Type u_1
β : α✝ → Type u_2
α : Type u_3
f : ((a : α✝) → Part (β a)) →o (a : α✝) → Part (β a)
hc : Continuous f
⊢ ωSup ((approxChain f).map f) ≤ ωSup (approxChain f)
tactic: apply le_antisymm
Theorem: Finset.piDiag_subset_piFinset
File: Mathlib/Data/Fintype/Pi.lean

Proof steps:
state_before: α : Type u_1
ι : Type u_2
inst✝² : DecidableEq (ι → α)
s : Finset α
f : ι → α
inst✝¹ : DecidableEq ι
inst✝ : Fintype ι
⊢ s.piDiag ι ⊆ Fintype.piFinset fun x => s
state_after: no goals
tactic: simp [← piFinset_filter_const]
Theorem: Matrix.updateColumn_transpose
File: Mathlib/Data/Matrix/RowCol.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq m
⊢ Mᵀ.updateColumn i b = (M.updateRow i b)ᵀ
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq m
i✝ : n
j✝ : m
⊢ Mᵀ.updateColumn i b i✝ j✝ = (M.updateRow i b)ᵀ i✝ j✝
tactic: ext
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq m
i✝ : n
j✝ : m
⊢ Mᵀ.updateColumn i b i✝ j✝ = (M.updateRow i b)ᵀ i✝ j✝
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq m
i✝ : n
j✝ : m
⊢ (if j✝ = i then b i✝ else Mᵀ i✝ j✝) = if j✝ = i then b i✝ else M j✝ i✝
tactic: rw [transpose_apply, updateRow_apply, updateColumn_apply]
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
M : Matrix m n α
i : m
j : n
b : n → α
c : m → α
inst✝ : DecidableEq m
i✝ : n
j✝ : m
⊢ (if j✝ = i then b i✝ else Mᵀ i✝ j✝) = if j✝ = i then b i✝ else M j✝ i✝
state_after: no goals
tactic: rfl
Theorem: Nat.not_dvd_of_between_consec_multiples
File: Mathlib/Data/Nat/Defs.lean

Proof steps:
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
h1 : n * k < m
h2 : m < n * (k + 1)
⊢ ¬n ∣ m
state_after: case intro
a b c d✝ n k : ℕ
p q : ℕ → Prop
d : ℕ
h1 : n * k < n * d
h2 : n * d < n * (k + 1)
⊢ False
tactic: rintro ⟨d, rfl⟩
state_before: case intro
a b c d✝ n k : ℕ
p q : ℕ → Prop
d : ℕ
h1 : n * k < n * d
h2 : n * d < n * (k + 1)
⊢ False
state_after: case intro
a b c d✝ n k : ℕ
p q : ℕ → Prop
d : ℕ
h1 : n * k < n * d
h2 : n * d < n * (k + 1)
this : k < d
⊢ False
tactic: have := Nat.lt_of_mul_lt_mul_left h1
state_before: case intro
a b c d✝ n k : ℕ
p q : ℕ → Prop
d : ℕ
h1 : n * k < n * d
h2 : n * d < n * (k + 1)
this : k < d
⊢ False
state_after: case intro
a b c d✝ n k : ℕ
p q : ℕ → Prop
d : ℕ
h1 : n * k < n * d
h2 : n * d < n * (k + 1)
this✝ : k < d
this : d < k + 1
⊢ False
tactic: have := Nat.lt_of_mul_lt_mul_left h2
state_before: case intro
a b c d✝ n k : ℕ
p q : ℕ → Prop
d : ℕ
h1 : n * k < n * d
h2 : n * d < n * (k + 1)
this✝ : k < d
this : d < k + 1
⊢ False
state_after: no goals
tactic: omega
Theorem: Set.ncard_inter_add_ncard_diff_eq_ncard
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
hs : autoParam s.Finite _auto✝
⊢ (s ∩ t).ncard + (s \ t).ncard = s.ncard
state_after: no goals
tactic: rw [← ncard_union_eq (disjoint_of_subset_left inter_subset_right disjoint_sdiff_right)
    (hs.inter_of_left _) (hs.diff _), union_comm, diff_union_inter]
Theorem: CategoryTheory.LocallyDiscrete.locallyDiscreteEquiv_symm_apply_as
File: Mathlib/CategoryTheory/Bicategory/LocallyDiscrete.lean

Proof steps:
state_before: C : Type u
⊢ Function.LeftInverse mk as
state_after: no goals
tactic: aesop_cat
state_before: C : Type u
⊢ Function.RightInverse mk as
state_after: no goals
tactic: aesop_cat
Theorem: Order.Ideal.top_of_top_mem
File: Mathlib/Order/Ideal.lean

Proof steps:
state_before: P : Type u_1
inst✝¹ : LE P
inst✝ : OrderTop P
I : Ideal P
h : ⊤ ∈ I
⊢ I = ⊤
state_after: case a.h
P : Type u_1
inst✝¹ : LE P
inst✝ : OrderTop P
I : Ideal P
h : ⊤ ∈ I
x✝ : P
⊢ x✝ ∈ ↑I ↔ x✝ ∈ ↑⊤
tactic: ext
state_before: case a.h
P : Type u_1
inst✝¹ : LE P
inst✝ : OrderTop P
I : Ideal P
h : ⊤ ∈ I
x✝ : P
⊢ x✝ ∈ ↑I ↔ x✝ ∈ ↑⊤
state_after: no goals
tactic: exact iff_of_true (I.lower le_top h) trivial
Theorem: DifferentiableAt.add_iff_left
File: Mathlib/Analysis/Calculus/FDeriv/Add.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hg : DifferentiableAt 𝕜 g x
⊢ DifferentiableAt 𝕜 (fun y => f y + g y) x ↔ DifferentiableAt 𝕜 f x
state_after: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hg : DifferentiableAt 𝕜 g x
h : DifferentiableAt 𝕜 (fun y => f y + g y) x
⊢ DifferentiableAt 𝕜 f x
tactic: refine ⟨fun h ↦ ?_, fun hf ↦ hf.add hg⟩
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hg : DifferentiableAt 𝕜 g x
h : DifferentiableAt 𝕜 (fun y => f y + g y) x
⊢ DifferentiableAt 𝕜 f x
state_after: no goals
tactic: simpa only [add_sub_cancel_right] using h.sub hg
Theorem: ProbabilityTheory.integral_truncation_eq_intervalIntegral_of_nonneg
File: Mathlib/Probability/StrongLaw.lean

Proof steps:
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
f : α → ℝ
hf : AEStronglyMeasurable f μ
A : ℝ
h'f : 0 ≤ f
⊢ ∫ (x : α), truncation f A x ∂μ = ∫ (y : ℝ) in 0 ..A, y ∂Measure.map f μ
state_after: no goals
tactic: simpa using moment_truncation_eq_intervalIntegral_of_nonneg hf one_ne_zero h'f
Theorem: TrivSqZeroExt.snd_pow_of_smul_comm.aux
File: Mathlib/Algebra/TrivSqZeroExt.lean

Proof steps:
state_before: R : Type u
M : Type v
inst✝⁴ : Monoid R
inst✝³ : AddMonoid M
inst✝² : DistribMulAction R M
inst✝¹ : DistribMulAction Rᵐᵒᵖ M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
x : tsze R M
n : ℕ
h : x.snd <• x.fst = x.fst •> x.snd
⊢ (x ^ n).snd = n •> x.fst ^ n.pred •> x.snd
state_after: R : Type u
M : Type v
inst✝⁴ : Monoid R
inst✝³ : AddMonoid M
inst✝² : DistribMulAction R M
inst✝¹ : DistribMulAction Rᵐᵒᵖ M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
x : tsze R M
n : ℕ
h : x.snd <• x.fst = x.fst •> x.snd
⊢ (List.map (fun i => x.fst ^ (n.pred - i + i) •> x.snd) (List.range n)).sum = n •> x.fst ^ n.pred •> x.snd
tactic: simp_rw [snd_pow_eq_sum, ← smul_comm (_ : R) (_ : Rᵐᵒᵖ), aux, smul_smul, ← pow_add]
state_before: R : Type u
M : Type v
inst✝⁴ : Monoid R
inst✝³ : AddMonoid M
inst✝² : DistribMulAction R M
inst✝¹ : DistribMulAction Rᵐᵒᵖ M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
x : tsze R M
n : ℕ
h : x.snd <• x.fst = x.fst •> x.snd
⊢ ∀ (n : ℕ), x.snd <• x.fst ^ n = x.fst ^ n •> x.snd
state_after: R : Type u
M : Type v
inst✝⁴ : Monoid R
inst✝³ : AddMonoid M
inst✝² : DistribMulAction R M
inst✝¹ : DistribMulAction Rᵐᵒᵖ M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
x : tsze R M
n✝ : ℕ
h : x.snd <• x.fst = x.fst •> x.snd
n : ℕ
⊢ x.snd <• x.fst ^ n = x.fst ^ n •> x.snd
tactic: intro n
state_before: R : Type u
M : Type v
inst✝⁴ : Monoid R
inst✝³ : AddMonoid M
inst✝² : DistribMulAction R M
inst✝¹ : DistribMulAction Rᵐᵒᵖ M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
x : tsze R M
n✝ : ℕ
h : x.snd <• x.fst = x.fst •> x.snd
n : ℕ
⊢ x.snd <• x.fst ^ n = x.fst ^ n •> x.snd
state_after: case zero
R : Type u
M : Type v
inst✝⁴ : Monoid R
inst✝³ : AddMonoid M
inst✝² : DistribMulAction R M
inst✝¹ : DistribMulAction Rᵐᵒᵖ M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
x : tsze R M
n : ℕ
h : x.snd <• x.fst = x.fst •> x.snd
⊢ x.snd <• x.fst ^ 0 = x.fst ^ 0 •> x.snd

case succ
R : Type u
M : Type v
inst✝⁴ : Monoid R
inst✝³ : AddMonoid M
inst✝² : DistribMulAction R M
inst✝¹ : DistribMulAction Rᵐᵒᵖ M
inst✝ : SMulCommClass R Rᵐᵒᵖ M
x : tsze R M
n✝ : ℕ
h : x.snd <• x.fst = x.fst •> x.snd
n : ℕ
ih : x.snd <• x.fst ^ n = x.fst ^ n •> x.snd
⊢ x.snd <• x.fst ^ (n + 1) = x.fst ^ (n + 1) •> x.snd
tactic: induction' n with n ih
Theorem: _private.Mathlib.Algebra.Module.LocalizedModule.0.LocalizedModule.one_smul_aux
File: Mathlib/Algebra/Module/LocalizedModule.lean

Proof steps:
state_before: R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
p : LocalizedModule S M
⊢ 1 • p = p
state_after: case h
R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
m : M
s : ↥S
⊢ 1 • mk m s = mk m s
tactic: induction' p with m s
state_before: case h
R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
m : M
s : ↥S
⊢ 1 • mk m s = mk m s
state_after: case h
R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
m : M
s : ↥S
⊢ IsLocalization.mk' T 1 1 • mk m s = mk m s
tactic: rw [show (1 : T) = IsLocalization.mk' T (1 : R) (1 : S) by rw [IsLocalization.mk'_one, map_one]]
state_before: case h
R : Type u
inst✝⁵ : CommSemiring R
S : Submonoid R
M : Type v
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
T : Type u_1
inst✝² : CommSemiring T
inst✝¹ : Algebra R T
inst✝ : IsLocalization S T
m : M
s : ↥S
⊢ IsLocalization.mk' T 1 1 • mk m s = mk m s
state_after: no goals
tactic: rw [mk'_smul_mk, one_smul, one_mul]
Theorem: Mathlib.Vector.toList_singleton
File: Mathlib/Data/Vector/Basic.lean

Proof steps:
state_before: n : ℕ
α : Type u_1
v : Vector α 1
⊢ v.toList = [v.head]
state_after: n : ℕ
α : Type u_1
v : Vector α 1
⊢ (v.head ::ᵥ v.tail).toList = [(v.head ::ᵥ v.tail).head]
tactic: rw [← v.cons_head_tail]
state_before: n : ℕ
α : Type u_1
v : Vector α 1
⊢ (v.head ::ᵥ v.tail).toList = [(v.head ::ᵥ v.tail).head]
state_after: no goals
tactic: simp only [toList_cons, toList_nil, head_cons, eq_self_iff_true, and_self_iff, singleton_tail]
Theorem: Cardinal.lift_prod
File: Mathlib/SetTheory/Cardinal/Basic.lean

Proof steps:
state_before: α β ι : Type u
c : ι → Cardinal.{v}
⊢ lift.{w, max v u} (prod c) = prod fun i => lift.{w, v} (c i)
state_after: case intro
α β ι : Type u
c : ι → Type v
⊢ lift.{w, max v u} (prod fun i => #(c i)) = prod fun i => lift.{w, v} ((fun i => #(c i)) i)
tactic: lift c to ι → Type v using fun _ => trivial
state_before: case intro
α β ι : Type u
c : ι → Type v
⊢ lift.{w, max v u} (prod fun i => #(c i)) = prod fun i => lift.{w, v} ((fun i => #(c i)) i)
state_after: case intro
α β ι : Type u
c : ι → Type v
⊢ #(ULift.{w, max u v} ((i : ι) → c i)) = #((i : ι) → ULift.{w, v} (c i))
tactic: simp only [← mk_pi, ← mk_uLift]
state_before: case intro
α β ι : Type u
c : ι → Type v
⊢ #(ULift.{w, max u v} ((i : ι) → c i)) = #((i : ι) → ULift.{w, v} (c i))
state_after: no goals
tactic: exact mk_congr (Equiv.ulift.trans <| Equiv.piCongrRight fun i => Equiv.ulift.symm)
Theorem: List.getElem_tails
File: Mathlib/Data/List/Infix.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
l✝ l₁ l₂ l₃ : List α
a b : α
m n✝ : ℕ
l : List α
n : ℕ
h : n < l.tails.length
⊢ l.tails[n] = drop n l
state_after: no goals
tactic: induction l generalizing n with
  | nil => simp
  | cons a l ihl =>
    cases n with
    | zero => simp
    | succ n => simp [ihl]
Theorem: interior_subset_iff
File: Mathlib/Topology/Basic.lean

Proof steps:
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
⊢ interior s ⊆ t ↔ ∀ (U : Set X), IsOpen U → U ⊆ s → U ⊆ t
state_after: no goals
tactic: simp [interior]
Theorem: Matrix.vecMul_fromBlocks
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✝² : Fintype n
inst✝¹ : Fintype o
inst✝ : NonUnitalNonAssocSemiring α
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
x : n ⊕ o → α
⊢ x ᵥ* fromBlocks A B C D = Sum.elim (x ∘ Sum.inl ᵥ* A + x ∘ Sum.inr ᵥ* C) (x ∘ Sum.inl ᵥ* B + x ∘ Sum.inr ᵥ* D)
state_after: case h
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✝² : Fintype n
inst✝¹ : Fintype o
inst✝ : NonUnitalNonAssocSemiring α
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
x : n ⊕ o → α
i : l ⊕ m
⊢ (x ᵥ* fromBlocks A B C D) i = Sum.elim (x ∘ Sum.inl ᵥ* A + x ∘ Sum.inr ᵥ* C) (x ∘ Sum.inl ᵥ* B + x ∘ Sum.inr ᵥ* D) i
tactic: ext i
state_before: case h
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✝² : Fintype n
inst✝¹ : Fintype o
inst✝ : NonUnitalNonAssocSemiring α
A : Matrix n l α
B : Matrix n m α
C : Matrix o l α
D : Matrix o m α
x : n ⊕ o → α
i : l ⊕ m
⊢ (x ᵥ* fromBlocks A B C D) i = Sum.elim (x ∘ Sum.inl ᵥ* A + x ∘ Sum.inr ᵥ* C) (x ∘ Sum.inl ᵥ* B + x ∘ Sum.inr ᵥ* D) i
state_after: no goals
tactic: cases i <;> simp [vecMul, dotProduct]
Theorem: FirstOrder.Language.BoundedFormula.realize_foldr_inf
File: Mathlib/ModelTheory/Semantics.lean

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

case cons
L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n l✝ : ℕ
φ✝ ψ : L.BoundedFormula α l✝
θ : L.BoundedFormula α l✝.succ
v✝ : α → M
xs✝ : Fin l✝ → M
v : α → M
xs : Fin n → M
φ : L.BoundedFormula α n
l : List (L.BoundedFormula α n)
ih : (List.foldr (fun x x_1 => x ⊓ x_1) ⊤ l).Realize v xs ↔ ∀ φ ∈ l, φ.Realize v xs
⊢ (List.foldr (fun x x_1 => x ⊓ x_1) ⊤ (φ :: l)).Realize v xs ↔ ∀ φ_1 ∈ φ :: l, φ_1.Realize v xs
tactic: induction' l with φ l ih
Theorem: not_bddAbove_iff
File: Mathlib/Order/Bounds/Basic.lean

Proof steps:
state_before: α✝ : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α✝
inst✝¹ : Preorder β
s✝ t : Set α✝
a b : α✝
α : Type u_1
inst✝ : LinearOrder α
s : Set α
⊢ ¬BddAbove s ↔ ∀ (x : α), ∃ y ∈ s, x < y
state_after: no goals
tactic: simp only [not_bddAbove_iff', not_le]
Theorem: Finset.subset_inter
File: Mathlib/Data/Finset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s s₁✝ s₂✝ t t₁ t₂ u✝ v : Finset α
a b : α
s₁ s₂ u : Finset α
⊢ s₁ ⊆ s₂ → s₁ ⊆ u → s₁ ⊆ s₂ ∩ u
state_after: no goals
tactic: simp (config := { contextual := true }) [subset_iff, mem_inter]
Theorem: ModuleCat.HasLimit.lift_apply
File: Mathlib/Algebra/Category/ModuleCat/Biproducts.lean

Proof steps:
state_before: R : Type u
inst✝ : Ring R
J : Type w
f : J → ModuleCat R
s : Fan f
x y : ↑s.pt
⊢ (fun x j => (s.π.app { as := j }) x) (x + y) =
    (fun x j => (s.π.app { as := j }) x) x + (fun x j => (s.π.app { as := j }) x) y
state_after: R : Type u
inst✝ : Ring R
J : Type w
f : J → ModuleCat R
s : Fan f
x y : ↑s.pt
⊢ (fun j => (s.π.app { as := j }) x + (s.π.app { as := j }) y) =
    (fun j => (s.π.app { as := j }) x) + fun j => (s.π.app { as := j }) y
tactic: simp only [Functor.const_obj_obj, map_add]
state_before: R : Type u
inst✝ : Ring R
J : Type w
f : J → ModuleCat R
s : Fan f
x y : ↑s.pt
⊢ (fun j => (s.π.app { as := j }) x + (s.π.app { as := j }) y) =
    (fun j => (s.π.app { as := j }) x) + fun j => (s.π.app { as := j }) y
state_after: no goals
tactic: rfl
state_before: R : Type u
inst✝ : Ring R
J : Type w
f : J → ModuleCat R
s : Fan f
r : R
x : ↑s.pt
⊢ { toFun := fun x j => (s.π.app { as := j }) x, map_add' := ⋯ }.toFun (r • x) =
    (RingHom.id R) r • { toFun := fun x j => (s.π.app { as := j }) x, map_add' := ⋯ }.toFun x
state_after: R : Type u
inst✝ : Ring R
J : Type w
f : J → ModuleCat R
s : Fan f
r : R
x : ↑s.pt
⊢ (fun j => r • (s.π.app { as := j }) x) = (RingHom.id R) r • fun j => (s.π.app { as := j }) x
tactic: simp only [Functor.const_obj_obj, map_smul]
state_before: R : Type u
inst✝ : Ring R
J : Type w
f : J → ModuleCat R
s : Fan f
r : R
x : ↑s.pt
⊢ (fun j => r • (s.π.app { as := j }) x) = (RingHom.id R) r • fun j => (s.π.app { as := j }) x
state_after: no goals
tactic: rfl