1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MeasureTheory.upperCrossingTime_mono
File: Mathlib/Probability/Martingale/Upcrossing.lean

tactic: suffices Monotone fun n => upperCrossingTime a b f N n ω by exact this hnm
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝ : ConditionallyCompleteLinearOrderBot ι
a b : ℝ
f : ι → Ω → ℝ
N : ι
n m : ℕ
ω : Ω
hnm : n ≤ m
⊢ upperCrossingTime a b f N n ω ≤ upperCrossingTime a b f N m ω
state_after: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝ : ConditionallyCompleteLinearOrderBot ι
a b : ℝ
f : ι → Ω → ℝ
N : ι
n m : ℕ
ω : Ω
hnm : n ≤ m
⊢ Monotone fun n => upperCrossingTime a b f N n ω

tactic: exact monotone_nat_of_le_succ fun n =>
  le_trans upperCrossingTime_le_lowerCrossingTime lowerCrossingTime_le_upperCrossingTime_succ
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝ : ConditionallyCompleteLinearOrderBot ι
a b : ℝ
f : ι → Ω → ℝ
N : ι
n m : ℕ
ω : Ω
hnm : n ≤ m
⊢ Monotone fun n => upperCrossingTime a b f N n ω
state_after: no goals

tactic: exact this hnm
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝ : ConditionallyCompleteLinearOrderBot ι
a b : ℝ
f : ι → Ω → ℝ
N : ι
n m : ℕ
ω : Ω
hnm : n ≤ m
this : Monotone fun n => upperCrossingTime a b f N n ω
⊢ upperCrossingTime a b f N n ω ≤ upperCrossingTime a b f N m ω
state_after: no goals
Theorem: Filter.mem_interior
File: Mathlib/Topology/Filter.lean

tactic: rw [mem_interior_iff_mem_nhds, Filter.mem_nhds_iff]
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
X : Type u_4
Y : Type u_5
s : Set (Filter α)
l : Filter α
⊢ l ∈ interior s ↔ ∃ t ∈ l, Iic (𝓟 t) ⊆ s
state_after: no goals
Theorem: CategoryTheory.Equalizer.Sieve.w
File: Mathlib/CategoryTheory/Sites/EqualizerSheafCondition.lean

tactic: ext
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 { unop := X }
Y✝ Z✝ : C
g✝ : Z✝ ⟶ Y✝
f✝ : Y✝ ⟶ X
hf✝ : S.arrows f✝
⊢ Pi.π (fun f => P.obj { unop := f.snd.fst }) ⟨Y✝, ⟨Z✝, ⟨g✝, ⟨f✝, hf✝⟩⟩⟩⟩ ((forkMap P S.arrows ≫ firstMap P S) a✝) =
    Pi.π (fun f => P.obj { unop := f.snd.fst }) ⟨Y✝, ⟨Z✝, ⟨g✝, ⟨f✝, hf✝⟩⟩⟩⟩ ((forkMap P S.arrows ≫ secondMap P S) a✝)

tactic: simp [firstMap, secondMap, forkMap]
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 { unop := X }
Y✝ Z✝ : C
g✝ : Z✝ ⟶ Y✝
f✝ : Y✝ ⟶ X
hf✝ : S.arrows f✝
⊢ Pi.π (fun f => P.obj { unop := f.snd.fst }) ⟨Y✝, ⟨Z✝, ⟨g✝, ⟨f✝, hf✝⟩⟩⟩⟩ ((forkMap P S.arrows ≫ firstMap P S) a✝) =
    Pi.π (fun f => P.obj { unop := f.snd.fst }) ⟨Y✝, ⟨Z✝, ⟨g✝, ⟨f✝, hf✝⟩⟩⟩⟩ ((forkMap P S.arrows ≫ secondMap P S) a✝)
state_after: no goals
Theorem: Homeomorph.locallyCompactSpace_iff
File: Mathlib/Topology/Homeomorph.lean

tactic: exact ⟨fun _ => h.symm.openEmbedding.locallyCompactSpace,
  fun _ => h.closedEmbedding.locallyCompactSpace⟩
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝⁴ : TopologicalSpace X
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Z
X' : Type u_4
Y' : Type u_5
inst✝¹ : TopologicalSpace X'
inst✝ : TopologicalSpace Y'
h : X ≃ₜ Y
⊢ LocallyCompactSpace X ↔ LocallyCompactSpace Y
state_after: no goals
Theorem: LieDerivation.IsKilling.ad_mem_orthogonal_of_mem_orthogonal
File: Mathlib/Algebra/Lie/Derivation/Killing.lean

tactic: simp only [ad_apply_lieDerivation, LieHom.range_coeSubmodule, neg_mem_iff]
state_before: R : Type u_1
L : Type u_2
inst✝³ : Field R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : Module.Finite R L
D : LieDerivation R L L
hD : D ∈ (killingForm R (LieDerivation R L L)).orthogonal (ad R L).range.toSubmodule
x : L
⊢ (ad R L) (D x) ∈ (killingForm R (LieDerivation R L L)).orthogonal (ad R L).range.toSubmodule
state_after: R : Type u_1
L : Type u_2
inst✝³ : Field R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : Module.Finite R L
D : LieDerivation R L L
hD : D ∈ (killingForm R (LieDerivation R L L)).orthogonal (ad R L).range.toSubmodule
x : L
⊢ ⁅x, D⁆ ∈ (killingForm R (LieDerivation R L L)).orthogonal (LinearMap.range ↑(ad R L))

tactic: exact (rangeAdOrthogonal R L).lie_mem hD
state_before: R : Type u_1
L : Type u_2
inst✝³ : Field R
inst✝² : LieRing L
inst✝¹ : LieAlgebra R L
inst✝ : Module.Finite R L
D : LieDerivation R L L
hD : D ∈ (killingForm R (LieDerivation R L L)).orthogonal (ad R L).range.toSubmodule
x : L
⊢ ⁅x, D⁆ ∈ (killingForm R (LieDerivation R L L)).orthogonal (LinearMap.range ↑(ad R L))
state_after: no goals
Theorem: AlgebraicGeometry.StructureSheaf.comap_basicOpen
File: Mathlib/AlgebraicGeometry/StructureSheaf.lean

tactic: simpa using toOpen_comp_comap f _
state_before: R : Type u
inst✝² : CommRing R
S : Type u
inst✝¹ : CommRing S
P : Type u
inst✝ : CommRing P
f : R →+* S
x : R
⊢ (comap f (PrimeSpectrum.basicOpen x) (PrimeSpectrum.basicOpen (f x)) ⋯).comp
      (algebraMap R ↑((structureSheaf R).val.obj { unop := PrimeSpectrum.basicOpen x })) =
    (IsLocalization.map (↑((structureSheaf S).val.obj { unop := PrimeSpectrum.basicOpen (f x) })) f ⋯).comp
      (algebraMap R ↑((structureSheaf R).val.obj { unop := PrimeSpectrum.basicOpen x }))
state_after: no goals
Theorem: isSemisimpleModule_of_isSemisimpleModule_submodule
File: Mathlib/RingTheory/SimpleModule.lean

tactic: refine complementedLattice_of_complementedLattice_Iic (fun i hi ↦ ?_) hp'
state_before: ι : Type u_1
R : Type u_2
S : Type u_3
inst✝⁵ : Ring R
inst✝⁴ : Ring S
M : Type u_4
inst✝³ : AddCommGroup M
inst✝² : Module R M
m : Submodule R M
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
s : Set ι
p : ι → Submodule R M
hp : ∀ i ∈ s, IsSemisimpleModule R ↥(p i)
hp' : ⨆ i ∈ s, p i = ⊤
⊢ IsSemisimpleModule R M
state_after: ι : Type u_1
R : Type u_2
S : Type u_3
inst✝⁵ : Ring R
inst✝⁴ : Ring S
M : Type u_4
inst✝³ : AddCommGroup M
inst✝² : Module R M
m : Submodule R M
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
s : Set ι
p : ι → Submodule R M
hp : ∀ i ∈ s, IsSemisimpleModule R ↥(p i)
hp' : ⨆ i ∈ s, p i = ⊤
i : ι
hi : i ∈ s
⊢ ComplementedLattice ↑(Set.Iic (p i))

tactic: simpa only [← (p i).mapIic.complementedLattice_iff] using hp i hi
state_before: ι : Type u_1
R : Type u_2
S : Type u_3
inst✝⁵ : Ring R
inst✝⁴ : Ring S
M : Type u_4
inst✝³ : AddCommGroup M
inst✝² : Module R M
m : Submodule R M
N : Type u_5
inst✝¹ : AddCommGroup N
inst✝ : Module R N
s : Set ι
p : ι → Submodule R M
hp : ∀ i ∈ s, IsSemisimpleModule R ↥(p i)
hp' : ⨆ i ∈ s, p i = ⊤
i : ι
hi : i ∈ s
⊢ ComplementedLattice ↑(Set.Iic (p i))
state_after: no goals
Theorem: HasStrictDerivAt.div_const
File: Mathlib/Analysis/Calculus/Deriv/Mul.lean

tactic: simpa only [div_eq_mul_inv] using hc.mul_const d⁻¹
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
F : Type v
inst✝⁷ : NormedAddCommGroup F
inst✝⁶ : NormedSpace 𝕜 F
E : Type w
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
G : Type u_1
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L L₁ L₂ : Filter 𝕜
𝕜' : Type u_2
inst✝¹ : NontriviallyNormedField 𝕜'
inst✝ : NormedAlgebra 𝕜 𝕜'
c d✝ : 𝕜 → 𝕜'
c' d' : 𝕜'
hc : HasStrictDerivAt c c' x
d : 𝕜'
⊢ HasStrictDerivAt (fun x => c x / d) (c' / d) x
state_after: no goals
Theorem: groupCohomology.groupCohomologyπ_comp_isoH1_hom
File: Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

tactic: simp [isoH1, isoOneCocycles]
state_before: k G : Type u
inst✝¹ : CommRing k
inst✝ : Group G
A : Rep k G
⊢ groupCohomologyπ A 1 ≫ (isoH1 A).hom = (isoOneCocycles A).hom ≫ (shortComplexH1 A).moduleCatHomologyπ
state_after: no goals
Theorem: CategoryTheory.shiftFunctorComm_eq
File: Mathlib/CategoryTheory/Shift/Basic.lean

tactic: rw [add_comm j i, h]
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j k : A
h : i + j = k
⊢ j + i = k
state_after: no goals

tactic: subst h
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j k : A
h : i + j = k
⊢ shiftFunctorComm C i j = (shiftFunctorAdd' C i j k h).symm ≪≫ shiftFunctorAdd' C j i k ⋯
state_after: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j : A
⊢ shiftFunctorComm C i j = (shiftFunctorAdd' C i j (i + j) ⋯).symm ≪≫ shiftFunctorAdd' C j i (i + j) ⋯

tactic: rw [shiftFunctorAdd'_eq_shiftFunctorAdd]
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j : A
⊢ shiftFunctorComm C i j = (shiftFunctorAdd' C i j (i + j) ⋯).symm ≪≫ shiftFunctorAdd' C j i (i + j) ⋯
state_after: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j : A
⊢ shiftFunctorComm C i j = (shiftFunctorAdd C i j).symm ≪≫ shiftFunctorAdd' C j i (i + j) ⋯

tactic: rfl
state_before: C : Type u
A : Type u_1
inst✝² : Category.{v, u} C
inst✝¹ : AddCommMonoid A
inst✝ : HasShift C A
i j : A
⊢ shiftFunctorComm C i j = (shiftFunctorAdd C i j).symm ≪≫ shiftFunctorAdd' C j i (i + j) ⋯
state_after: no goals
Theorem: Set.image_update_Ico
File: Mathlib/Order/Interval/Set/Pi.lean

tactic: rw [← Icc_diff_right, ← Icc_diff_right, image_diff (update_injective _ _), image_singleton,
  image_update_Icc]
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → PartialOrder (α i)
f : (i : ι) → α i
i : ι
a b : α i
⊢ update f i '' Ico a b = Ico (update f i a) (update f i b)
state_after: no goals
Theorem: EReal.add_top_iff_ne_bot
File: Mathlib/Data/Real/EReal.lean

tactic: rw [add_comm, top_add_iff_ne_bot]
state_before: x : EReal
⊢ x + ⊤ = ⊤ ↔ x ≠ ⊥
state_after: no goals
Theorem: CategoryTheory.ShortComplex.exact_and_mono_f_iff_of_iso
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: have : Mono S₁.f ↔ Mono S₂.f :=
  MorphismProperty.RespectsIso.arrow_mk_iso_iff
    (MorphismProperty.RespectsIso.monomorphisms C)
    (Arrow.isoMk (ShortComplex.π₁.mapIso e) (ShortComplex.π₂.mapIso e) e.hom.comm₁₂)
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.7354, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
e : S₁ ≅ S₂
⊢ S₁.Exact ∧ Mono S₁.f ↔ S₂.Exact ∧ Mono S₂.f
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.7354, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
e : S₁ ≅ S₂
this : Mono S₁.f ↔ Mono S₂.f
⊢ S₁.Exact ∧ Mono S₁.f ↔ S₂.Exact ∧ Mono S₂.f

tactic: rw [exact_iff_of_iso e, this]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_3, u_1} C
inst✝² : Category.{?u.7354, u_2} D
inst✝¹ : HasZeroMorphisms C
inst✝ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
e : S₁ ≅ S₂
this : Mono S₁.f ↔ Mono S₂.f
⊢ S₁.Exact ∧ Mono S₁.f ↔ S₂.Exact ∧ Mono S₂.f
state_after: no goals
Theorem: ProbabilityTheory.kernel.compProd_eq_tsum_compProd
File: Mathlib/Probability/Kernel/Composition.lean

tactic: simp_rw [compProd_apply_eq_compProdFun _ _ _ hs]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
inst✝ : IsSFiniteKernel η
a : α
hs : MeasurableSet s
⊢ ((κ ⊗ₖ η) a) s = ∑' (n : ℕ) (m : ℕ), ((seq κ n ⊗ₖ seq η m) a) s
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
inst✝ : IsSFiniteKernel η
a : α
hs : MeasurableSet s
⊢ compProdFun κ η a s = ∑' (n : ℕ) (m : ℕ), compProdFun (seq κ n) (seq η m) a s

tactic: exact compProdFun_eq_tsum κ η a hs
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
inst✝ : IsSFiniteKernel η
a : α
hs : MeasurableSet s
⊢ compProdFun κ η a s = ∑' (n : ℕ) (m : ℕ), compProdFun (seq κ n) (seq η m) a s
state_after: no goals
Theorem: leftLim_eq_of_eq_bot
File: Mathlib/Topology/Order/LeftRightLim.lean

tactic: simp [leftLim, ite_eq_left_iff, h]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : LinearOrder α
inst✝ : TopologicalSpace β
hα : TopologicalSpace α
h'α : OrderTopology α
f : α → β
a : α
h : 𝓝[<] a = ⊥
⊢ leftLim f a = f a
state_after: no goals
Theorem: Polynomial.opRingEquiv_op_monomial
File: Mathlib/RingTheory/Polynomial/Opposites.lean

tactic: simp only [opRingEquiv, RingEquiv.coe_trans, Function.comp_apply,
  AddMonoidAlgebra.opRingEquiv_apply, RingEquiv.op_apply_apply, toFinsuppIso_apply, unop_op,
  toFinsupp_monomial, Finsupp.mapRange_single, toFinsuppIso_symm_apply, ofFinsupp_single]
state_before: R : Type u_1
inst✝ : Semiring R
n : ℕ
r : R
⊢ (opRingEquiv R) (op ((monomial n) r)) = (monomial n) (op r)
state_after: no goals
Theorem: Complex.arg_lt_pi_iff
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: rw [(arg_le_pi z).lt_iff_ne, not_iff_comm, not_or, not_le, Classical.not_not, arg_eq_pi_iff]
state_before: a x z✝ z : ℂ
⊢ z.arg < π ↔ 0 ≤ z.re ∨ z.im ≠ 0
state_after: no goals
Theorem: Stream'.take_take
File: Mathlib/Data/Stream/Init.lean

tactic: rw [Nat.min_zero, List.take_zero, take_zero]
state_before: α : Type u
β : Type v
δ : Type w
s : Stream' α
n : ℕ
⊢ List.take 0 (take n s) = take (min n 0) s
state_after: no goals

tactic: rw [Nat.zero_min, take_zero, List.take_nil]
state_before: α : Type u
β : Type v
δ : Type w
s : Stream' α
m : ℕ
⊢ List.take m (take 0 s) = take (min 0 m) s
state_after: no goals

tactic: rw [take_succ, List.take_cons, Nat.succ_min_succ, take_succ, take_take]
state_before: α : Type u
β : Type v
δ : Type w
s : Stream' α
m n : ℕ
⊢ List.take (m + 1) (take (n + 1) s) = take (min (n + 1) (m + 1)) s
state_after: no goals
Theorem: Polynomial.Separable.inj_of_prod_X_sub_C
File: Mathlib/FieldTheory/Separable.lean

tactic: by_contra hxy
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : Nontrivial R
ι : Type u_1
f : ι → R
s : Finset ι
hfs : (∏ i ∈ s, (X - C (f i))).Separable
x y : ι
hx : x ∈ s
hy : y ∈ s
hfxy : f x = f y
⊢ x = y
state_after: R : Type u
inst✝¹ : CommRing R
inst✝ : Nontrivial R
ι : Type u_1
f : ι → R
s : Finset ι
hfs : (∏ i ∈ s, (X - C (f i))).Separable
x y : ι
hx : x ∈ s
hy : y ∈ s
hfxy : f x = f y
hxy : ¬x = y
⊢ False

tactic: rw [← insert_erase hx, prod_insert (not_mem_erase _ _), ←
  insert_erase (mem_erase_of_ne_of_mem (Ne.symm hxy) hy), prod_insert (not_mem_erase _ _), ←
  mul_assoc, hfxy, ← sq] at hfs
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : Nontrivial R
ι : Type u_1
f : ι → R
s : Finset ι
hfs : (∏ i ∈ s, (X - C (f i))).Separable
x y : ι
hx : x ∈ s
hy : y ∈ s
hfxy : f x = f y
hxy : ¬x = y
⊢ False
state_after: R : Type u
inst✝¹ : CommRing R
inst✝ : Nontrivial R
ι : Type u_1
f : ι → R
s : Finset ι
x y : ι
hfs : ((X - C (f y)) ^ 2 * ∏ x ∈ (s.erase x).erase y, (X - C (f x))).Separable
hx : x ∈ s
hy : y ∈ s
hfxy : f x = f y
hxy : ¬x = y
⊢ False

tactic: cases (hfs.of_mul_left.of_pow (not_isUnit_X_sub_C _) two_ne_zero).2
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : Nontrivial R
ι : Type u_1
f : ι → R
s : Finset ι
x y : ι
hfs : ((X - C (f y)) ^ 2 * ∏ x ∈ (s.erase x).erase y, (X - C (f x))).Separable
hx : x ∈ s
hy : y ∈ s
hfxy : f x = f y
hxy : ¬x = y
⊢ False
state_after: no goals
Theorem: PartialHomeomorph.isOpen_image_of_subset_source
File: Mathlib/Topology/PartialHomeomorph.lean

tactic: rw [(image_eq_target_inter_inv_preimage (e := e) hse)]
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
s : Set X
hs : IsOpen s
hse : s ⊆ e.source
⊢ IsOpen (↑e '' s)
state_after: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
s : Set X
hs : IsOpen s
hse : s ⊆ e.source
⊢ IsOpen (e.target ∩ ↑e.symm ⁻¹' s)

tactic: exact e.continuousOn_invFun.isOpen_inter_preimage e.open_target hs
state_before: X : Type u_1
X' : Type u_2
Y : Type u_3
Y' : Type u_4
Z : Type u_5
Z' : Type u_6
inst✝⁵ : TopologicalSpace X
inst✝⁴ : TopologicalSpace X'
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Y'
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
e : PartialHomeomorph X Y
s : Set X
hs : IsOpen s
hse : s ⊆ e.source
⊢ IsOpen (e.target ∩ ↑e.symm ⁻¹' s)
state_after: no goals
Theorem: ONote.fastGrowingε₀_two
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: norm_num [fastGrowingε₀, show oadd 0 1 0 = 1 from rfl, @fastGrowing_limit (oadd 1 1 0) _ rfl,
  show oadd 0 (2 : Nat).succPNat 0 = 3 from rfl, @fastGrowing_succ 3 2 rfl]
state_before: ⊢ fastGrowingε₀ 2 = 2048
state_after: no goals
Theorem: FirstOrder.Language.DirectLimit.relMap_unify_equiv
File: Mathlib/ModelTheory/DirectLimit.lean

tactic: rw [← (f i k ik).map_rel, comp_unify, ← (f j k jk).map_rel, comp_unify]
state_before: case intro.intro
L : Language
ι : Type v
inst✝³ : Preorder ι
G : ι → Type w
inst✝² : (i : ι) → L.Structure (G i)
f : (i j : ι) → i ≤ j → G i ↪[L] G j
inst✝¹ : IsDirected ι fun x x_1 => x ≤ x_1
inst✝ : DirectedSystem G fun i j h => ⇑(f i j h)
n : ℕ
R : L.Relations n
x : Fin n → Σˣ f
i j : ι
hi : i ∈ upperBounds (range (Sigma.fst ∘ x))
hj : j ∈ upperBounds (range (Sigma.fst ∘ x))
k : ι
ik : i ≤ k
jk : j ≤ k
⊢ RelMap R (unify f x i hi) = RelMap R (unify f x j hj)
state_after: no goals
Theorem: Pell.n_lt_a_pow
File: Mathlib/NumberTheory/PellMatiyasevic.lean

tactic: have IH := n_lt_a_pow n
state_before: a : ℕ
a1 : 1 < a
n : ℕ
⊢ n + 1 < a ^ (n + 1)
state_after: a : ℕ
a1 : 1 < a
n : ℕ
IH : n < a ^ n
⊢ n + 1 < a ^ (n + 1)

tactic: have : a ^ n + a ^ n ≤ a ^ n * a := by
  rw [← mul_two]
  exact Nat.mul_le_mul_left _ a1
state_before: a : ℕ
a1 : 1 < a
n : ℕ
IH : n < a ^ n
⊢ n + 1 < a ^ (n + 1)
state_after: a : ℕ
a1 : 1 < a
n : ℕ
IH : n < a ^ n
this : a ^ n + a ^ n ≤ a ^ n * a
⊢ n + 1 < a ^ (n + 1)

tactic: simp only [_root_.pow_succ, gt_iff_lt]
state_before: a : ℕ
a1 : 1 < a
n : ℕ
IH : n < a ^ n
this : a ^ n + a ^ n ≤ a ^ n * a
⊢ n + 1 < a ^ (n + 1)
state_after: a : ℕ
a1 : 1 < a
n : ℕ
IH : n < a ^ n
this : a ^ n + a ^ n ≤ a ^ n * a
⊢ n + 1 < a ^ n * a

tactic: refine lt_of_lt_of_le ?_ this
state_before: a : ℕ
a1 : 1 < a
n : ℕ
IH : n < a ^ n
this : a ^ n + a ^ n ≤ a ^ n * a
⊢ n + 1 < a ^ n * a
state_after: a : ℕ
a1 : 1 < a
n : ℕ
IH : n < a ^ n
this : a ^ n + a ^ n ≤ a ^ n * a
⊢ n + 1 < a ^ n + a ^ n

tactic: exact add_lt_add_of_lt_of_le IH (lt_of_le_of_lt (Nat.zero_le _) IH)
state_before: a : ℕ
a1 : 1 < a
n : ℕ
IH : n < a ^ n
this : a ^ n + a ^ n ≤ a ^ n * a
⊢ n + 1 < a ^ n + a ^ n
state_after: no goals

tactic: rw [← mul_two]
state_before: a : ℕ
a1 : 1 < a
n : ℕ
IH : n < a ^ n
⊢ a ^ n + a ^ n ≤ a ^ n * a
state_after: a : ℕ
a1 : 1 < a
n : ℕ
IH : n < a ^ n
⊢ a ^ n * 2 ≤ a ^ n * a

tactic: exact Nat.mul_le_mul_left _ a1
state_before: a : ℕ
a1 : 1 < a
n : ℕ
IH : n < a ^ n
⊢ a ^ n * 2 ≤ a ^ n * a
state_after: no goals
Theorem: CategoryTheory.IsIso.inv_id
File: Mathlib/CategoryTheory/Iso.lean

tactic: apply inv_eq_of_hom_inv_id
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y Z : C
f g : X ⟶ Y
h : Y ⟶ Z
⊢ inv (𝟙 X) = 𝟙 X
state_after: case hom_inv_id
C : Type u
inst✝ : Category.{v, u} C
X Y Z : C
f g : X ⟶ Y
h : Y ⟶ Z
⊢ 𝟙 X ≫ 𝟙 X = 𝟙 X

tactic: simp
state_before: case hom_inv_id
C : Type u
inst✝ : Category.{v, u} C
X Y Z : C
f g : X ⟶ Y
h : Y ⟶ Z
⊢ 𝟙 X ≫ 𝟙 X = 𝟙 X
state_after: no goals
Theorem: Int.csInf_of_not_bdd_below
File: Mathlib/Data/Int/ConditionallyCompleteOrder.lean

tactic: simp [h]
state_before: s : Set ℤ
h : ¬BddBelow s
⊢ ¬(s.Nonempty ∧ BddBelow s)
state_after: no goals
Theorem: Set.pairwise_disjoint_Ico_add_intCast
File: Mathlib/Algebra/Order/Interval/Set/Group.lean

tactic: simpa only [zsmul_one, Int.cast_add, Int.cast_one, ← add_assoc] using
  pairwise_disjoint_Ico_add_zsmul a (1 : α)
state_before: α : Type u_1
inst✝ : OrderedRing α
a : α
⊢ Pairwise (Disjoint on fun n => Ico (a + ↑n) (a + ↑n + 1))
state_after: no goals
Theorem: Set.div_zero_subset
File: Mathlib/Data/Set/Pointwise/Basic.lean

tactic: simp [subset_def, mem_div]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : GroupWithZero α
s✝ t s : Set α
⊢ s / 0 ⊆ 0
state_after: no goals
Theorem: Ideal.factors_decreasing
File: Mathlib/RingTheory/Ideal/Basic.lean

tactic: rwa [mul_one, ← Ideal.span_singleton_le_span_singleton]
state_before: α : Type u
β : Type v
a b : α
inst✝¹ : CommSemiring α
I : Ideal α
inst✝ : IsDomain α
b₁ b₂ : α
h₁ : b₁ ≠ 0
h₂ : ¬IsUnit b₂
h : span {b₁} ≤ span {b₁ * b₂}
⊢ b₁ * b₂ ∣ b₁ * 1
state_after: no goals
Theorem: Pi.card_Ioi
File: Mathlib/Data/Pi/Interval.lean

tactic: rw [card_Ioi_eq_card_Ici_sub_one, card_Ici]
state_before: ι : Type u_1
α : ι → Type u_2
inst✝⁴ : Fintype ι
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → DecidableEq (α i)
inst✝¹ : (i : ι) → PartialOrder (α i)
inst✝ : (i : ι) → LocallyFiniteOrderTop (α i)
a : (i : ι) → α i
⊢ (Ioi a).card = ∏ i : ι, (Ici (a i)).card - 1
state_after: no goals
Theorem: CategoryTheory.Localization.comp_liftNatTrans
File: Mathlib/CategoryTheory/Localization/Predicate.lean

tactic: simp only [NatTrans.comp_app, liftNatTrans_app, assoc, Iso.inv_hom_id_app_assoc]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{u_4, u_1} C
inst✝² : Category.{u_6, u_2} D
L : C ⥤ D
W : MorphismProperty C
E : Type u_3
inst✝¹ : Category.{u_5, u_3} E
inst✝ : L.IsLocalization W
F₁ F₂ F₃ : C ⥤ E
F₁' F₂' F₃' : D ⥤ E
h₁ : Lifting L W F₁ F₁'
h₂ : Lifting L W F₂ F₂'
h₃ : Lifting L W F₃ F₃'
τ : F₁ ⟶ F₂
τ' : F₂ ⟶ F₃
X : C
⊢ (liftNatTrans L W F₁ F₂ F₁' F₂' τ ≫ liftNatTrans L W F₂ F₃ F₂' F₃' τ').app (L.obj X) =
    (liftNatTrans L W F₁ F₃ F₁' F₃' (τ ≫ τ')).app (L.obj X)
state_after: no goals
Theorem: Monoid.not_isTorsionFree_iff
File: Mathlib/GroupTheory/Torsion.lean

tactic: simp_rw [IsTorsionFree, Ne, not_forall, Classical.not_not, exists_prop]
state_before: G : Type u_1
H : Type u_2
inst✝ : Monoid G
⊢ ¬IsTorsionFree G ↔ ∃ g, g ≠ 1 ∧ IsOfFinOrder g
state_after: no goals
Theorem: image_minimals_univ
File: Mathlib/Order/Minimal.lean

tactic: rw [image_minimals_of_rel_iff_rel, image_univ, Subtype.range_val]
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b : α
inst✝² : PartialOrder α
f : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
⊢ Subtype.val '' minimals (fun x x_1 => x ≤ x_1) univ = minimals (fun x x_1 => x ≤ x_1) s
state_after: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b : α
inst✝² : PartialOrder α
f : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
⊢ ∀ ⦃a a' : { x // x ∈ s }⦄, a ∈ univ → a' ∈ univ → (a ≤ a' ↔ ↑a ≤ ↑a')

tactic: intros
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b : α
inst✝² : PartialOrder α
f : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
⊢ ∀ ⦃a a' : { x // x ∈ s }⦄, a ∈ univ → a' ∈ univ → (a ≤ a' ↔ ↑a ≤ ↑a')
state_after: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b : α
inst✝² : PartialOrder α
f : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
a✝² a'✝ : { x // x ∈ s }
a✝¹ : a✝² ∈ univ
a✝ : a'✝ ∈ univ
⊢ a✝² ≤ a'✝ ↔ ↑a✝² ≤ ↑a'✝

tactic: rfl
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝¹ t✝ : Set α
a b : α
inst✝² : PartialOrder α
f : α → β
r : α → α → Prop
s✝ : β → β → Prop
inst✝¹ : LE α
inst✝ : LE β
s : Set α
t : Set β
a✝² a'✝ : { x // x ∈ s }
a✝¹ : a✝² ∈ univ
a✝ : a'✝ ∈ univ
⊢ a✝² ≤ a'✝ ↔ ↑a✝² ≤ ↑a'✝
state_after: no goals