ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Fin.exists_eq_add_of_le
File: Mathlib/Data/Fin/Basic.lean

Proof steps:
state_before: n✝ m n : ℕ
a b : Fin n
h : a ≤ b
⊢ ∃ k ≤ b, b = a + k
state_after: case intro
n✝ m n : ℕ
a b : Fin n
h : a ≤ b
k : ℕ
hk : ↑b = ↑a + k
⊢ ∃ k ≤ b, b = a + k
tactic: obtain ⟨k, hk⟩ : ∃ k : ℕ, (b : ℕ) = a + k := Nat.exists_eq_add_of_le h
state_before: case intro
n✝ m n : ℕ
a b : Fin n
h : a ≤ b
k : ℕ
hk : ↑b = ↑a + k
⊢ ∃ k ≤ b, b = a + k
state_after: case intro
n✝ m n : ℕ
a b : Fin n
h : a ≤ b
k : ℕ
hk : ↑b = ↑a + k
hkb : k ≤ ↑b
⊢ ∃ k ≤ b, b = a + k
tactic: have hkb : k ≤ b := by omega
state_before: case intro
n✝ m n : ℕ
a b : Fin n
h : a ≤ b
k : ℕ
hk : ↑b = ↑a + k
hkb : k ≤ ↑b
⊢ ∃ k ≤ b, b = a + k
state_after: case intro
n✝ m n : ℕ
a b : Fin n
h : a ≤ b
k : ℕ
hk : ↑b = ↑a + k
hkb : k ≤ ↑b
⊢ b = a + ⟨k, ⋯⟩
tactic: refine ⟨⟨k, hkb.trans_lt b.is_lt⟩, hkb, ?_⟩
state_before: case intro
n✝ m n : ℕ
a b : Fin n
h : a ≤ b
k : ℕ
hk : ↑b = ↑a + k
hkb : k ≤ ↑b
⊢ b = a + ⟨k, ⋯⟩
state_after: no goals
tactic: simp [Fin.ext_iff, Fin.val_add, ← hk, Nat.mod_eq_of_lt b.is_lt]
Theorem: OnePoint.isOpen_image_coe
File: Mathlib/Topology/Compactification/OnePoint.lean

Proof steps:
state_before: X : Type u_1
inst✝ : TopologicalSpace X
s✝ : Set (OnePoint X)
t s : Set X
⊢ IsOpen (some '' s) ↔ IsOpen s
state_after: no goals
tactic: rw [isOpen_iff_of_not_mem infty_not_mem_image_coe, preimage_image_eq _ coe_injective]
Theorem: MeasureTheory.AEStronglyMeasurable.integral_condexpKernel
File: Mathlib/Probability/Kernel/Condexp.lean

Proof steps:
state_before: Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
inst✝³ : Nonempty Ω
μ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : NormedAddCommGroup F
f : Ω → F
inst✝ : NormedSpace ℝ F
hf : AEStronglyMeasurable f μ
⊢ AEStronglyMeasurable (fun ω => ∫ (y : Ω), f y ∂(condexpKernel μ m) ω) μ
state_after: Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
inst✝³ : Nonempty Ω
μ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : NormedAddCommGroup F
f : Ω → F
inst✝ : NormedSpace ℝ F
hf : AEStronglyMeasurable f μ
⊢ AEStronglyMeasurable (fun ω => ∫ (y : Ω), f y ∂(condDistrib id id μ) (id ω)) μ
tactic: simp_rw [condexpKernel_apply_eq_condDistrib]
state_before: Ω : Type u_1
F : Type u_2
m mΩ : MeasurableSpace Ω
inst✝⁴ : StandardBorelSpace Ω
inst✝³ : Nonempty Ω
μ : Measure Ω
inst✝² : IsFiniteMeasure μ
inst✝¹ : NormedAddCommGroup F
f : Ω → F
inst✝ : NormedSpace ℝ F
hf : AEStronglyMeasurable f μ
⊢ AEStronglyMeasurable (fun ω => ∫ (y : Ω), f y ∂(condDistrib id id μ) (id ω)) μ
state_after: no goals
tactic: exact AEStronglyMeasurable.integral_condDistrib
    (aemeasurable_id'' μ (inf_le_right : m ⊓ mΩ ≤ mΩ)) aemeasurable_id
    (hf.comp_snd_map_prod_id inf_le_right)
Theorem: WeierstrassCurve.Affine.equation_iff
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
W : Affine R
x y : R
⊢ W.Equation x y ↔ y ^ 2 + W.a₁ * x * y + W.a₃ * y = x ^ 3 + W.a₂ * x ^ 2 + W.a₄ * x + W.a₆
state_after: no goals
tactic: rw [equation_iff', sub_eq_zero]
Theorem: connectedComponentIn_eq
File: Mathlib/Topology/Connected/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x y : α
F : Set α
h : y ∈ connectedComponentIn F x
⊢ connectedComponentIn F x = connectedComponentIn F y
state_after: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x y : α
F : Set α
h : y ∈ connectedComponentIn F x
hx : x ∈ F
⊢ connectedComponentIn F x = connectedComponentIn F y
tactic: have hx : x ∈ F := connectedComponentIn_nonempty_iff.mp ⟨y, h⟩
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x y : α
F : Set α
h : y ∈ connectedComponentIn F x
hx : x ∈ F
⊢ connectedComponentIn F x = connectedComponentIn F y
state_after: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x y : α
F : Set α
hx : x ∈ F
h : y ∈ Subtype.val '' connectedComponent ⟨x, hx⟩
⊢ Subtype.val '' connectedComponent ⟨x, hx⟩ = connectedComponentIn F y
tactic: simp_rw [connectedComponentIn_eq_image hx] at h ⊢
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x y : α
F : Set α
hx : x ∈ F
h : y ∈ Subtype.val '' connectedComponent ⟨x, hx⟩
⊢ Subtype.val '' connectedComponent ⟨x, hx⟩ = connectedComponentIn F y
state_after: case intro.mk.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x : α
F : Set α
hx : x ∈ F
y : α
hy : y ∈ F
h2y : ⟨y, hy⟩ ∈ connectedComponent ⟨x, hx⟩
⊢ Subtype.val '' connectedComponent ⟨x, hx⟩ = connectedComponentIn F ↑⟨y, hy⟩
tactic: obtain ⟨⟨y, hy⟩, h2y, rfl⟩ := h
state_before: case intro.mk.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x : α
F : Set α
hx : x ∈ F
y : α
hy : y ∈ F
h2y : ⟨y, hy⟩ ∈ connectedComponent ⟨x, hx⟩
⊢ Subtype.val '' connectedComponent ⟨x, hx⟩ = connectedComponentIn F ↑⟨y, hy⟩
state_after: no goals
tactic: simp_rw [connectedComponentIn_eq_image hy, connectedComponent_eq h2y]
Theorem: Set.ncard_coe_Finset
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s✝ t : Set α
s : Finset α
⊢ (↑s).ncard = s.card
state_after: no goals
tactic: rw [ncard_eq_toFinset_card _, Finset.finite_toSet_toFinset]
Theorem: AList.mem_replace
File: Mathlib/Data/List/AList.lean

Proof steps:
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
a a' : α
b : β a
s : AList β
⊢ a' ∈ replace a b s ↔ a' ∈ s
state_after: no goals
tactic: rw [mem_keys, keys_replace, ← mem_keys]
Theorem: CategoryTheory.Equalizer.Sieve.w
File: Mathlib/CategoryTheory/Sites/EqualizerSheafCondition.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
P : Cᵒᵖ ⥤ Type (max v u)
X : C
R : Presieve X
S : Sieve X
⊢ forkMap P S.arrows ≫ firstMap P S = forkMap P S.arrows ≫ secondMap P S
state_after: case h.h
C : Type u
inst✝ : Category.{v, u} C
P : Cᵒᵖ ⥤ Type (max v u)
X : C
R : Presieve X
S : Sieve X
a✝ : P.obj (op X)
Y✝ Z✝ : C
g✝ : Z✝ ⟶ Y✝
f✝ : Y✝ ⟶ X
hf✝ : S.arrows f✝
⊢ Pi.π (fun f => P.obj (op f.snd.fst)) ⟨Y✝, ⟨Z✝, ⟨g✝, ⟨f✝, hf✝⟩⟩⟩⟩ ((forkMap P S.arrows ≫ firstMap P S) a✝) =
    Pi.π (fun f => P.obj (op f.snd.fst)) ⟨Y✝, ⟨Z✝, ⟨g✝, ⟨f✝, hf✝⟩⟩⟩⟩ ((forkMap P S.arrows ≫ secondMap P S) a✝)
tactic: ext
state_before: case h.h
C : Type u
inst✝ : Category.{v, u} C
P : Cᵒᵖ ⥤ Type (max v u)
X : C
R : Presieve X
S : Sieve X
a✝ : P.obj (op X)
Y✝ Z✝ : C
g✝ : Z✝ ⟶ Y✝
f✝ : Y✝ ⟶ X
hf✝ : S.arrows f✝
⊢ Pi.π (fun f => P.obj (op f.snd.fst)) ⟨Y✝, ⟨Z✝, ⟨g✝, ⟨f✝, hf✝⟩⟩⟩⟩ ((forkMap P S.arrows ≫ firstMap P S) a✝) =
    Pi.π (fun f => P.obj (op f.snd.fst)) ⟨Y✝, ⟨Z✝, ⟨g✝, ⟨f✝, hf✝⟩⟩⟩⟩ ((forkMap P S.arrows ≫ secondMap P S) a✝)
state_after: no goals
tactic: simp [firstMap, secondMap, forkMap]
Theorem: CategoryTheory.ShortComplex.isIso_homologyπ
File: Mathlib/Algebra/Homology/ShortComplex/Homology.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
hf : S.f = 0
inst✝ : S.HasHomology
⊢ IsIso S.homologyπ
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
hf : S.f = 0
inst✝ : S.HasHomology
this : IsIso S.leftHomologyπ
⊢ IsIso S.homologyπ
tactic: have := S.isIso_leftHomologyπ hf
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
hf : S.f = 0
inst✝ : S.HasHomology
this : IsIso S.leftHomologyπ
⊢ IsIso S.homologyπ
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
hf : S.f = 0
inst✝ : S.HasHomology
this : IsIso S.leftHomologyπ
⊢ IsIso (S.leftHomologyπ ≫ S.leftHomologyIso.hom)
tactic: dsimp only [homologyπ]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ S₄ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.HomologyData
h₂ : S₂.HomologyData
A : C
hf : S.f = 0
inst✝ : S.HasHomology
this : IsIso S.leftHomologyπ
⊢ IsIso (S.leftHomologyπ ≫ S.leftHomologyIso.hom)
state_after: no goals
tactic: infer_instance
Theorem: Filter.prod_map_left
File: Mathlib/Order/Filter/Prod.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f✝ : Filter α
g : Filter β
f : α → β
F : Filter α
G : Filter γ
⊢ map f F ×ˢ G = map (Prod.map f id) (F ×ˢ G)
state_after: no goals
tactic: rw [← prod_map_map_eq', map_id]
Theorem: HomologicalComplex.cycles_left_exact
File: Mathlib/Algebra/Homology/HomologySequence.lean

Proof steps:
state_before: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{?u.64473, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Mono S.f
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
⊢ cyclesMap S.f i ≫ cyclesMap S.g i = 0
state_after: no goals
tactic: rw [← cyclesMap_comp, S.zero, cyclesMap_zero]
state_before: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Mono S.f
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
⊢ (ShortComplex.mk (cyclesMap S.f i) (cyclesMap S.g i) ⋯).Exact
state_after: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Mono S.f
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Mono (S.map (eval C c i)).f
⊢ (ShortComplex.mk (cyclesMap S.f i) (cyclesMap S.g i) ⋯).Exact
tactic: have : Mono (ShortComplex.map S (eval C c i)).f := by dsimp; infer_instance
state_before: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Mono S.f
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Mono (S.map (eval C c i)).f
⊢ (ShortComplex.mk (cyclesMap S.f i) (cyclesMap S.g i) ⋯).Exact
state_after: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Mono S.f
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Mono (S.map (eval C c i)).f
hi : IsLimit (KernelFork.ofι (S.map (eval C c i)).f ⋯)
⊢ (ShortComplex.mk (cyclesMap S.f i) (cyclesMap S.g i) ⋯).Exact
tactic: have hi := (hS.map (HomologicalComplex.eval C c i)).fIsKernel
state_before: C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Mono S.f
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Mono (S.map (eval C c i)).f
hi : IsLimit (KernelFork.ofι (S.map (eval C c i)).f ⋯)
⊢ (ShortComplex.mk (cyclesMap S.f i) (cyclesMap S.g i) ⋯).Exact
state_after: case hS
C : Type u_1
ι : Type u_2
inst✝⁵ : Category.{u_3, u_1} C
inst✝⁴ : Abelian C
c : ComplexShape ι
S : ShortComplex (HomologicalComplex C c)
hS : S.Exact
inst✝³ : Mono S.f
i : ι
inst✝² : S.X₁.HasHomology i
inst✝¹ : S.X₂.HasHomology i
inst✝ : S.X₃.HasHomology i
this : Mono (S.map (eval C c i)).f
hi : IsLimit (KernelFork.ofι (S.map (eval C c i)).f ⋯)
⊢ IsLimit (KernelFork.ofι (ShortComplex.mk (cyclesMap S.f i) (cyclesMap S.g i) ⋯).f ⋯)
tactic: apply ShortComplex.exact_of_f_is_kernel
Theorem: ZMod.nontrivial_iff
File: Mathlib/Data/ZMod/Basic.lean

Proof steps:
state_before: m n✝ n : ℕ
⊢ Nontrivial (ZMod n) ↔ n ≠ 1
state_after: no goals
tactic: rw [← not_subsingleton_iff_nontrivial, subsingleton_iff]
Theorem: Metric.isClosed_of_pairwise_le_dist
File: Mathlib/Topology/MetricSpace/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝¹ : PseudoMetricSpace α
γ : Type w
inst✝ : MetricSpace γ
x : γ
s✝ s : Set γ
ε : ℝ
hε : 0 < ε
hs : s.Pairwise fun x y => ε ≤ dist x y
⊢ s.Pairwise fun x y => (x, y) ∉ {p | dist p.1 p.2 < ε}
state_after: no goals
tactic: simpa using hs
Theorem: MeasureTheory.SignedMeasure.toJordanDecomposition_smul_real
File: Mathlib/MeasureTheory/Decomposition/Jordan.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
⊢ (r • s).toJordanDecomposition = r • s.toJordanDecomposition
state_after: case pos
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : 0 ≤ r
⊢ (r • s).toJordanDecomposition = r • s.toJordanDecomposition

case neg
α : Type u_1
β : Type u_2
inst✝ : MeasurableSpace α
s : SignedMeasure α
r : ℝ
hr : ¬0 ≤ r
⊢ (r • s).toJordanDecomposition = r • s.toJordanDecomposition
tactic: by_cases hr : 0 ≤ r
Theorem: LieAlgebra.hasTrivialRadical_iff_no_abelian_ideals
File: Mathlib/Algebra/Lie/Semisimple/Basic.lean

Proof steps:
state_before: R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
⊢ HasTrivialRadical R L ↔ ∀ (I : LieIdeal R L), IsLieAbelian ↥↑I → I = ⊥
state_after: R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
⊢ (∀ (I : LieIdeal R L), IsSolvable R ↥↑I → I = ⊥) ↔ ∀ (I : LieIdeal R L), IsLieAbelian ↥↑I → I = ⊥
tactic: rw [hasTrivialRadical_iff_no_solvable_ideals]
state_before: R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
⊢ (∀ (I : LieIdeal R L), IsSolvable R ↥↑I → I = ⊥) ↔ ∀ (I : LieIdeal R L), IsLieAbelian ↥↑I → I = ⊥
state_after: case mp
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
h₁ : ∀ (I : LieIdeal R L), IsSolvable R ↥↑I → I = ⊥
I : LieIdeal R L
h₂ : IsLieAbelian ↥↑I
⊢ I = ⊥

case mpr
R : Type u_1
L : Type u_2
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
h₁ : ∀ (I : LieIdeal R L), IsLieAbelian ↥↑I → I = ⊥
I : LieIdeal R L
h₂ : IsSolvable R ↥↑I
⊢ I = ⊥
tactic: constructor <;> intro h₁ I h₂
Theorem: QuotientAddGroup.mk_out'_eq_mul
File: Mathlib/GroupTheory/Coset.lean

Proof steps:
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
g : α
⊢ Quotient.out' ↑g = g * ↑⟨g⁻¹ * Quotient.out' ↑g, ⋯⟩
state_after: no goals
tactic: rw [mul_inv_cancel_left]
Theorem: Submodule.dualAnnihilator_map_linearEquiv_flip_symm
File: Mathlib/LinearAlgebra/PerfectPairing.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : IsReflexive R M
e : N ≃ₗ[R] Dual R M
p : Submodule R (Dual R N)
⊢ (map e.flip.symm p).dualAnnihilator = map e p.dualCoannihilator
state_after: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : IsReflexive R M
e : N ≃ₗ[R] Dual R M
p : Submodule R (Dual R N)
this : IsReflexive R N
⊢ (map e.flip.symm p).dualAnnihilator = map e p.dualCoannihilator
tactic: have : IsReflexive R N := e.isReflexive_of_equiv_dual_of_isReflexive
state_before: R : Type u_1
M : Type u_2
N : Type u_3
inst✝⁵ : CommRing R
inst✝⁴ : AddCommGroup M
inst✝³ : Module R M
inst✝² : AddCommGroup N
inst✝¹ : Module R N
inst✝ : IsReflexive R M
e : N ≃ₗ[R] Dual R M
p : Submodule R (Dual R N)
this : IsReflexive R N
⊢ (map e.flip.symm p).dualAnnihilator = map e p.dualCoannihilator
state_after: no goals
tactic: rw [← map_dualCoannihilator_linearEquiv_flip, flip_flip]
Theorem: EReal.neg_add
File: Mathlib/Data/Real/EReal.lean

Proof steps:
state_before: x y : EReal
h1 : x ≠ ⊥ ∨ y ≠ ⊤
h2 : x ≠ ⊤ ∨ y ≠ ⊥
⊢ -(x + y) = -x - y
state_after: case h_real.h_real
a✝¹ a✝ : ℝ
h1 : ↑a✝¹ ≠ ⊥ ∨ ↑a✝ ≠ ⊤
h2 : ↑a✝¹ ≠ ⊤ ∨ ↑a✝ ≠ ⊥
⊢ -(↑a✝¹ + ↑a✝) = -↑a✝¹ - ↑a✝
tactic: induction x <;> induction y <;> try tauto
state_before: case h_real.h_real
a✝¹ a✝ : ℝ
h1 : ↑a✝¹ ≠ ⊥ ∨ ↑a✝ ≠ ⊤
h2 : ↑a✝¹ ≠ ⊤ ∨ ↑a✝ ≠ ⊥
⊢ -(↑a✝¹ + ↑a✝) = -↑a✝¹ - ↑a✝
state_after: no goals
tactic: rw [← coe_add, ← coe_neg, ← coe_neg, ← coe_sub, neg_add']
Theorem: _private.Mathlib.Order.Interval.Finset.Box.0.Finset.Icc_neg_mono
File: Mathlib/Order/Interval/Finset/Box.lean

Proof steps:
state_before: α : Type u_1
inst✝² : OrderedRing α
inst✝¹ : LocallyFiniteOrder α
inst✝ : DecidableEq α
n : ℕ
⊢ Monotone fun n => Icc (-↑n) ↑n
state_after: no goals
tactic: refine fun m n hmn ↦ by apply Icc_subset_Icc <;> simpa using Nat.mono_cast hmn
Theorem: MeasureTheory.IsAddFundamentalDomain.integral_eq_tsum
File: Mathlib/MeasureTheory/Group/FundamentalDomain.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝¹² : Group G
inst✝¹¹ : Group H
inst✝¹⁰ : MulAction G α
inst✝⁹ : MeasurableSpace α
inst✝⁸ : MulAction H β
inst✝⁷ : MeasurableSpace β
inst✝⁶ : NormedAddCommGroup E
s t : Set α
μ : Measure α
inst✝⁵ : MeasurableSpace G
inst✝⁴ : MeasurableSMul G α
inst✝³ : SMulInvariantMeasure G α μ
inst✝² : Countable G
ν : Measure α
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
h : IsFundamentalDomain G s μ
f : α → E
hf : Integrable f μ
⊢ μ ≪ μ
state_after: no goals
tactic: rfl
Theorem: IsOfFinOrder.of_mem_zpowers
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
x y : G
i : ℤ
h : IsOfFinOrder x
h' : y ∈ zpowers x
⊢ IsOfFinOrder y
state_after: case intro
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x : G
i : ℤ
h : IsOfFinOrder x
k : ℤ
h' : x ^ k ∈ zpowers x
⊢ IsOfFinOrder (x ^ k)
tactic: obtain ⟨k, rfl⟩ := Subgroup.mem_zpowers_iff.mp h'
state_before: case intro
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x : G
i : ℤ
h : IsOfFinOrder x
k : ℤ
h' : x ^ k ∈ zpowers x
⊢ IsOfFinOrder (x ^ k)
state_after: no goals
tactic: exact h.zpow
Theorem: Multiset.powersetCard_cons
File: Mathlib/Data/Multiset/Powerset.lean

Proof steps:
state_before: α : Type u_1
n : ℕ
a : α
s : Multiset α
l : List α
⊢ powersetCard (n + 1) (a ::ₘ ⟦l⟧) = powersetCard (n + 1) ⟦l⟧ + map (cons a) (powersetCard n ⟦l⟧)
state_after: no goals
tactic: simp [powersetCard_coe']
Theorem: PicardLindelof.FunSpace.dist_iterate_next_le
File: Mathlib/Analysis/ODE/PicardLindelof.lean

Proof steps:
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
inst✝ : CompleteSpace E
f₁ f₂ : v.FunSpace
n : ℕ
⊢ dist (next^[n] f₁) (next^[n] f₂) ≤ (↑v.L * v.tDist) ^ n / ↑n ! * dist f₁ f₂
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
inst✝ : CompleteSpace E
f₁ f₂ : v.FunSpace
n : ℕ
t : ↑(Icc v.tMin v.tMax)
⊢ (↑v.L * |↑t - ↑v.t₀|) ^ n / ↑n ! * dist f₁ f₂ ≤ (↑v.L * v.tDist) ^ n / ↑n ! * dist f₁ f₂
tactic: refine dist_le_of_forall fun t => (dist_iterate_next_apply_le _ _ _ _).trans ?_
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
inst✝ : CompleteSpace E
f₁ f₂ : v.FunSpace
n : ℕ
t : ↑(Icc v.tMin v.tMax)
⊢ (↑v.L * |↑t - ↑v.t₀|) ^ n / ↑n ! * dist f₁ f₂ ≤ (↑v.L * v.tDist) ^ n / ↑n ! * dist f₁ f₂
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
inst✝ : CompleteSpace E
f₁ f₂ : v.FunSpace
n : ℕ
t : ↑(Icc v.tMin v.tMax)
this : |↑t - ↑v.t₀| ≤ v.tDist
⊢ (↑v.L * |↑t - ↑v.t₀|) ^ n / ↑n ! * dist f₁ f₂ ≤ (↑v.L * v.tDist) ^ n / ↑n ! * dist f₁ f₂
tactic: have : |(t - v.t₀ : ℝ)| ≤ v.tDist := v.dist_t₀_le t
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
v : PicardLindelof E
f : v.FunSpace
inst✝ : CompleteSpace E
f₁ f₂ : v.FunSpace
n : ℕ
t : ↑(Icc v.tMin v.tMax)
this : |↑t - ↑v.t₀| ≤ v.tDist
⊢ (↑v.L * |↑t - ↑v.t₀|) ^ n / ↑n ! * dist f₁ f₂ ≤ (↑v.L * v.tDist) ^ n / ↑n ! * dist f₁ f₂
state_after: no goals
tactic: gcongr
Theorem: iterateFrobeniusEquiv_symm_add_apply
File: Mathlib/FieldTheory/Perfect.lean

Proof steps:
state_before: R : Type u_1
p m n : ℕ
inst✝² : CommSemiring R
inst✝¹ : ExpChar R p
inst✝ : PerfectRing R p
x : R
⊢ (iterateFrobeniusEquiv R p (m + n)) ((iterateFrobeniusEquiv R p (m + n)).symm x) =
    (iterateFrobeniusEquiv R p (m + n)) ((iterateFrobeniusEquiv R p m).symm ((iterateFrobeniusEquiv R p n).symm x))
state_after: no goals
tactic: rw [RingEquiv.apply_symm_apply, add_comm,
    iterateFrobeniusEquiv_add_apply, RingEquiv.apply_symm_apply, RingEquiv.apply_symm_apply]
Theorem: essSup_mono_measure
File: Mathlib/MeasureTheory/Function/EssSup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : CompleteLattice β
f : α → β
hμν : ν ≪ μ
⊢ essSup f ν ≤ essSup f μ
state_after: case refine_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : CompleteLattice β
f : α → β
hμν : ν ≪ μ
⊢ IsCoboundedUnder (fun x x_1 => x ≤ x_1) (ae ν) f

case refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : CompleteLattice β
f : α → β
hμν : ν ≪ μ
⊢ IsBoundedUnder (fun x x_1 => x ≤ x_1) (ae μ) f
tactic: refine limsup_le_limsup_of_le (Measure.ae_le_iff_absolutelyContinuous.mpr hμν) ?_ ?_
state_before: case refine_1
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : CompleteLattice β
f : α → β
hμν : ν ≪ μ
⊢ IsCoboundedUnder (fun x x_1 => x ≤ x_1) (ae ν) f

case refine_2
α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
inst✝ : CompleteLattice β
f : α → β
hμν : ν ≪ μ
⊢ IsBoundedUnder (fun x x_1 => x ≤ x_1) (ae μ) f
state_after: no goals
tactic: all_goals isBoundedDefault
Theorem: CircleDeg1Lift.iterate_le_of_map_le_add_int
File: Mathlib/Dynamics/Circle/RotationNumber/TranslationNumber.lean

Proof steps:
state_before: f g : CircleDeg1Lift
x : ℝ
m : ℤ
h : f x ≤ x + ↑m
n : ℕ
⊢ (⇑f)^[n] x ≤ x + ↑n * ↑m
state_after: no goals
tactic: simpa only [nsmul_eq_mul, add_right_iterate] using
    (f.commute_add_int m).iterate_le_of_map_le f.monotone (monotone_id.add_const (m : ℝ)) h n
Theorem: PNat.XgcdType.flip_v
File: Mathlib/Data/PNat/Xgcd.lean

Proof steps:
state_before: u : XgcdType
⊢ u.flip.v = u.v.swap
state_after: u : XgcdType
⊢ (↑u.z * ↑u.b + u.y * ↑u.a, u.x * ↑u.b + ↑u.w * ↑u.a) = (u.y * ↑u.a + ↑u.z * ↑u.b, ↑u.w * ↑u.a + u.x * ↑u.b)
tactic: dsimp [v]
state_before: u : XgcdType
⊢ (↑u.z * ↑u.b + u.y * ↑u.a, u.x * ↑u.b + ↑u.w * ↑u.a) = (u.y * ↑u.a + ↑u.z * ↑u.b, ↑u.w * ↑u.a + u.x * ↑u.b)
state_after: case a
u : XgcdType
⊢ (↑u.z * ↑u.b + u.y * ↑u.a, u.x * ↑u.b + ↑u.w * ↑u.a).1 = (u.y * ↑u.a + ↑u.z * ↑u.b, ↑u.w * ↑u.a + u.x * ↑u.b).1

case a
u : XgcdType
⊢ (↑u.z * ↑u.b + u.y * ↑u.a, u.x * ↑u.b + ↑u.w * ↑u.a).2 = (u.y * ↑u.a + ↑u.z * ↑u.b, ↑u.w * ↑u.a + u.x * ↑u.b).2
tactic: ext
Theorem: Polynomial.natSepDegree_X
File: Mathlib/FieldTheory/SeparableDegree.lean

Proof steps:
state_before: F : Type u
E : Type v
inst✝⁴ : Field F
inst✝³ : Field E
inst✝² : Algebra F E
K : Type w
inst✝¹ : Field K
inst✝ : Algebra F K
f : F[X]
⊢ X.natSepDegree = 1
state_after: no goals
tactic: simp only [natSepDegree, aroots_X, Multiset.toFinset_singleton, Finset.card_singleton]