ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: LocallyConstant.ofIsClopen_fiber_one
File: Mathlib/Topology/LocallyConstant/Basic.lean

Proof steps:
state_before: X✝ : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : TopologicalSpace X
U : Set X
inst✝ : (x : X) → Decidable (x ∈ U)
hU : IsClopen U
⊢ ⇑(ofIsClopen hU) ⁻¹' {1} = Uᶜ
state_after: case h
X✝ : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : TopologicalSpace X
U : Set X
inst✝ : (x : X) → Decidable (x ∈ U)
hU : IsClopen U
x✝ : X
⊢ x✝ ∈ ⇑(ofIsClopen hU) ⁻¹' {1} ↔ x✝ ∈ Uᶜ
tactic: ext
state_before: case h
X✝ : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
inst✝² : TopologicalSpace X✝
X : Type u_5
inst✝¹ : TopologicalSpace X
U : Set X
inst✝ : (x : X) → Decidable (x ∈ U)
hU : IsClopen U
x✝ : X
⊢ x✝ ∈ ⇑(ofIsClopen hU) ⁻¹' {1} ↔ x✝ ∈ Uᶜ
state_after: no goals
tactic: simp only [ofIsClopen, mem_singleton_iff, coe_mk, Fin.zero_eq_one_iff, mem_preimage,
    ite_eq_right_iff, mem_compl_iff, Nat.succ_succ_ne_one]
Theorem: dist_lineMap_right
File: Mathlib/Analysis/NormedSpace/AddTorsor.lean

Proof steps:
state_before: α : Type u_1
V : Type u_2
P : Type u_3
W : Type u_4
Q : Type u_5
inst✝⁸ : SeminormedAddCommGroup V
inst✝⁷ : PseudoMetricSpace P
inst✝⁶ : NormedAddTorsor V P
inst✝⁵ : NormedAddCommGroup W
inst✝⁴ : MetricSpace Q
inst✝³ : NormedAddTorsor W Q
𝕜 : Type u_6
inst✝² : NormedField 𝕜
inst✝¹ : NormedSpace 𝕜 V
inst✝ : NormedSpace 𝕜 W
p₁ p₂ : P
c : 𝕜
⊢ dist ((lineMap p₁ p₂) c) p₂ = ‖1 - c‖ * dist p₁ p₂
state_after: no goals
tactic: simpa only [lineMap_apply_one, dist_eq_norm'] using dist_lineMap_lineMap p₁ p₂ c 1
Theorem: OrthonormalBasis.repr_self
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

Proof steps:
state_before: ι : Type u_1
ι' : Type u_2
𝕜 : Type u_3
inst✝¹⁰ : _root_.RCLike 𝕜
E : Type u_4
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type u_5
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type u_6
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type u_7
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : OrthonormalBasis ι 𝕜 E
i : ι
⊢ b.repr (b i) = EuclideanSpace.single i 1
state_after: no goals
tactic: rw [← b.repr_symm_single i, LinearIsometryEquiv.apply_symm_apply]
Theorem: Submonoid.LocalizationMap.mk'_spec'
File: Mathlib/GroupTheory/MonoidLocalization/Basic.lean

Proof steps:
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x : M
y : ↥S
⊢ f.toMap ↑y * f.mk' x y = f.toMap x
state_after: no goals
tactic: rw [mul_comm, mk'_spec]
Theorem: ProbabilityTheory.IndepFun.exp_mul
File: Mathlib/Probability/Moments.lean

Proof steps:
state_before: Ω : Type u_1
ι : Type u_2
m : MeasurableSpace Ω
X✝ : Ω → ℝ
p : ℕ
μ : Measure Ω
t✝ : ℝ
X Y : Ω → ℝ
h_indep : IndepFun X Y μ
s t : ℝ
⊢ IndepFun (fun ω => rexp (s * X ω)) (fun ω => rexp (t * Y ω)) μ
state_after: Ω : Type u_1
ι : Type u_2
m : MeasurableSpace Ω
X✝ : Ω → ℝ
p : ℕ
μ : Measure Ω
t✝ : ℝ
X Y : Ω → ℝ
h_indep : IndepFun X Y μ
s t : ℝ
h_meas : ∀ (t : ℝ), Measurable fun x => rexp (t * x)
⊢ IndepFun (fun ω => rexp (s * X ω)) (fun ω => rexp (t * Y ω)) μ
tactic: have h_meas : ∀ t, Measurable fun x => exp (t * x) := fun t => (measurable_id'.const_mul t).exp
state_before: Ω : Type u_1
ι : Type u_2
m : MeasurableSpace Ω
X✝ : Ω → ℝ
p : ℕ
μ : Measure Ω
t✝ : ℝ
X Y : Ω → ℝ
h_indep : IndepFun X Y μ
s t : ℝ
h_meas : ∀ (t : ℝ), Measurable fun x => rexp (t * x)
⊢ IndepFun (fun ω => rexp (s * X ω)) (fun ω => rexp (t * Y ω)) μ
state_after: Ω : Type u_1
ι : Type u_2
m : MeasurableSpace Ω
X✝ : Ω → ℝ
p : ℕ
μ : Measure Ω
t✝ : ℝ
X Y : Ω → ℝ
h_indep : IndepFun X Y μ
s t : ℝ
h_meas : ∀ (t : ℝ), Measurable fun x => rexp (t * x)
⊢ IndepFun ((fun x => rexp (s * x)) ∘ X) ((fun x => rexp (t * x)) ∘ Y) μ
tactic: change IndepFun ((fun x => exp (s * x)) ∘ X) ((fun x => exp (t * x)) ∘ Y) μ
state_before: Ω : Type u_1
ι : Type u_2
m : MeasurableSpace Ω
X✝ : Ω → ℝ
p : ℕ
μ : Measure Ω
t✝ : ℝ
X Y : Ω → ℝ
h_indep : IndepFun X Y μ
s t : ℝ
h_meas : ∀ (t : ℝ), Measurable fun x => rexp (t * x)
⊢ IndepFun ((fun x => rexp (s * x)) ∘ X) ((fun x => rexp (t * x)) ∘ Y) μ
state_after: no goals
tactic: exact IndepFun.comp h_indep (h_meas s) (h_meas t)
Theorem: RatFunc.eval_C
File: Mathlib/FieldTheory/RatFunc/AsPolynomial.lean

Proof steps:
state_before: K : Type u
inst✝¹ : Field K
L : Type u
inst✝ : Field L
f : K →+* L
a : L
c : K
⊢ eval f a (C c) = f c
state_after: no goals
tactic: simp [eval]
Theorem: Set.encard_eq_top_iff
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s t : Set α
⊢ s.encard = ⊤ ↔ s.Infinite
state_after: no goals
tactic: rw [← not_iff_not, ← Ne, ← lt_top_iff_ne_top, encard_lt_top_iff, not_infinite]
Theorem: Ring.choose_one_right
File: Mathlib/RingTheory/Binomial.lean

Proof steps:
state_before: R : Type u_1
inst✝³ : NonAssocRing R
inst✝² : Pow R ℕ
inst✝¹ : BinomialRing R
inst✝ : NatPowAssoc R
r : R
⊢ choose r 1 = r
state_after: no goals
tactic: rw [choose_one_right', npow_one]
Theorem: CategoryTheory.CosimplicialObject.augment_hom_app
File: Mathlib/AlgebraicTopology/SimplicialObject.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
X✝ X : CosimplicialObject C
X₀ : C
f : X₀ ⟶ X.obj [0]
w : ∀ (i : SimplexCategory) (g₁ g₂ : [0] ⟶ i), f ≫ X.map g₁ = f ≫ X.map g₂
⊢ ∀ ⦃X_1 Y : SimplexCategory⦄ (f_1 : X_1 ⟶ Y),
    ((const C).obj X₀).map f_1 ≫ (fun i => f ≫ X.map ([0].const i 0)) Y =
      (fun i => f ≫ X.map ([0].const i 0)) X_1 ≫ ((𝟭 (CosimplicialObject C)).obj X).map f_1
state_after: C : Type u
inst✝ : Category.{v, u} C
X✝ X : CosimplicialObject C
X₀ : C
f : X₀ ⟶ X.obj [0]
w : ∀ (i : SimplexCategory) (g₁ g₂ : [0] ⟶ i), f ≫ X.map g₁ = f ≫ X.map g₂
i j : SimplexCategory
g : i ⟶ j
⊢ ((const C).obj X₀).map g ≫ (fun i => f ≫ X.map ([0].const i 0)) j =
    (fun i => f ≫ X.map ([0].const i 0)) i ≫ ((𝟭 (CosimplicialObject C)).obj X).map g
tactic: intro i j g
state_before: C : Type u
inst✝ : Category.{v, u} C
X✝ X : CosimplicialObject C
X₀ : C
f : X₀ ⟶ X.obj [0]
w : ∀ (i : SimplexCategory) (g₁ g₂ : [0] ⟶ i), f ≫ X.map g₁ = f ≫ X.map g₂
i j : SimplexCategory
g : i ⟶ j
⊢ ((const C).obj X₀).map g ≫ (fun i => f ≫ X.map ([0].const i 0)) j =
    (fun i => f ≫ X.map ([0].const i 0)) i ≫ ((𝟭 (CosimplicialObject C)).obj X).map g
state_after: C : Type u
inst✝ : Category.{v, u} C
X✝ X : CosimplicialObject C
X₀ : C
f : X₀ ⟶ X.obj [0]
w : ∀ (i : SimplexCategory) (g₁ g₂ : [0] ⟶ i), f ≫ X.map g₁ = f ≫ X.map g₂
i j : SimplexCategory
g : i ⟶ j
⊢ 𝟙 X₀ ≫ f ≫ X.map ([0].const j 0) = (f ≫ X.map ([0].const i 0)) ≫ X.map g
tactic: dsimp
state_before: C : Type u
inst✝ : Category.{v, u} C
X✝ X : CosimplicialObject C
X₀ : C
f : X₀ ⟶ X.obj [0]
w : ∀ (i : SimplexCategory) (g₁ g₂ : [0] ⟶ i), f ≫ X.map g₁ = f ≫ X.map g₂
i j : SimplexCategory
g : i ⟶ j
⊢ 𝟙 X₀ ≫ f ≫ X.map ([0].const j 0) = (f ≫ X.map ([0].const i 0)) ≫ X.map g
state_after: no goals
tactic: rw [Category.id_comp, Category.assoc, ← X.map_comp, w]
Theorem: Relation.reflTransGen_of_transitive_reflexive
File: Mathlib/Logic/Relation.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b c d : α
r' : α → α → Prop
hr : Reflexive r
ht : Transitive r
h : ∀ (a b : α), r' a b → r a b
h' : ReflTransGen r' a b
⊢ r a b
state_after: case refl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b c d : α
r' : α → α → Prop
hr : Reflexive r
ht : Transitive r
h : ∀ (a b : α), r' a b → r a b
⊢ r a a

case tail
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a b✝ c✝ d : α
r' : α → α → Prop
hr : Reflexive r
ht : Transitive r
h : ∀ (a b : α), r' a b → r a b
b c : α
a✝ : ReflTransGen r' a b
hbc : r' b c
ih : r a b
⊢ r a c
tactic: induction' h' with b c _ hbc ih
Theorem: QPF.suppPreservation_iff_uniform
File: Mathlib/Data/QPF/Univariate/Basic.lean

Proof steps:
state_before: F : Type u → Type u
q : QPF F
⊢ SuppPreservation ↔ IsUniform
state_after: case mp
F : Type u → Type u
q : QPF F
⊢ SuppPreservation → IsUniform

case mpr
F : Type u → Type u
q : QPF F
⊢ IsUniform → SuppPreservation
tactic: constructor
Theorem: singleton_add_ball_zero
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

Proof steps:
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x y : E
⊢ {x} * ball 1 δ = ball x δ
state_after: no goals
tactic: simp
Theorem: Computability.decode_encodeNat
File: Mathlib/Computability/Encoding.lean

Proof steps:
state_before: ⊢ ∀ (n : ℕ), decodeNat (encodeNat n) = n
state_after: n : ℕ
⊢ decodeNat (encodeNat n) = n
tactic: intro n
state_before: n : ℕ
⊢ decodeNat (encodeNat n) = n
state_after: n : ℕ
⊢ decodeNat (encodeNat n) = ↑↑n
tactic: conv_rhs => rw [← Num.to_of_nat n]
state_before: n : ℕ
⊢ decodeNat (encodeNat n) = ↑↑n
state_after: no goals
tactic: exact congr_arg ((↑) : Num → ℕ) (decode_encodeNum n)
Theorem: schnirelmannDensity_le_of_subset
File: Mathlib/Combinatorics/Schnirelmann.lean

Proof steps:
state_before: A : Set ℕ
inst✝¹ : DecidablePred fun x => x ∈ A
B : Set ℕ
inst✝ : DecidablePred fun x => x ∈ B
h : A ⊆ B
x✝¹ : ℝ
x✝ : x✝¹ ∈ Set.range fun n => ↑(filter (fun x => x ∈ A) (Ioc 0 ↑n)).card / ↑↑n
w✝ : { n // 0 < n }
hx : (fun n => ↑(filter (fun x => x ∈ A) (Ioc 0 ↑n)).card / ↑↑n) w✝ = x✝¹
⊢ 0 ≤ (fun n => ↑(filter (fun x => x ∈ A) (Ioc 0 ↑n)).card / ↑↑n) w✝
state_after: no goals
tactic: positivity
state_before: A : Set ℕ
inst✝¹ : DecidablePred fun x => x ∈ A
B : Set ℕ
inst✝ : DecidablePred fun x => x ∈ B
h : A ⊆ B
x✝ : { n // 0 < n }
⊢ ↑(filter (fun x => x ∈ A) (Ioc 0 ↑x✝)).card / ↑↑x✝ ≤ ↑(filter (fun x => x ∈ B) (Ioc 0 ↑x✝)).card / ↑↑x✝
state_after: case hab.h.a
A : Set ℕ
inst✝¹ : DecidablePred fun x => x ∈ A
B : Set ℕ
inst✝ : DecidablePred fun x => x ∈ B
h : A ⊆ B
x✝ : { n // 0 < n }
⊢ filter (fun x => x ∈ A) (Ioc 0 ↑x✝) ⊆ filter (fun x => x ∈ B) (Ioc 0 ↑x✝)
tactic: gcongr
state_before: case hab.h.a
A : Set ℕ
inst✝¹ : DecidablePred fun x => x ∈ A
B : Set ℕ
inst✝ : DecidablePred fun x => x ∈ B
h : A ⊆ B
x✝ : { n // 0 < n }
⊢ filter (fun x => x ∈ A) (Ioc 0 ↑x✝) ⊆ filter (fun x => x ∈ B) (Ioc 0 ↑x✝)
state_after: no goals
tactic: exact monotone_filter_right _ h
Theorem: SpectrumRestricts.cfc_eq_restrict
File: Mathlib/Analysis/CstarAlgebra/ContinuousFunctionalCalculus/Restrict.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
A : Type u_3
p q : A → Prop
inst✝²³ : Semifield R
inst✝²² : StarRing R
inst✝²¹ : MetricSpace R
inst✝²⁰ : TopologicalSemiring R
inst✝¹⁹ : ContinuousStar R
inst✝¹⁸ : Semifield S
inst✝¹⁷ : StarRing S
inst✝¹⁶ : MetricSpace S
inst✝¹⁵ : TopologicalSemiring S
inst✝¹⁴ : ContinuousStar S
inst✝¹³ : TopologicalSpace A
inst✝¹² : Ring A
inst✝¹¹ : StarRing A
inst✝¹⁰ : Algebra S A
inst✝⁹ : ContinuousFunctionalCalculus S q
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R A
inst✝⁶ : IsScalarTower R S A
inst✝⁵ : StarModule R S
inst✝⁴ : ContinuousSMul R S
inst✝³ : CompleteSpace R
inst✝² : ContinuousFunctionalCalculus R p
inst✝¹ : UniqueContinuousFunctionalCalculus R A
f : C(S, R)
halg : UniformEmbedding ⇑(algebraMap R S)
a : A
hpa : p a
hqa : q a
h : SpectrumRestricts a ⇑f
inst✝ : CompactSpace ↑(spectrum S a)
g : R → R
⊢ cfc g a = cfc (fun x => (algebraMap R S) (g (f x))) a
state_after: case pos
R : Type u_1
S : Type u_2
A : Type u_3
p q : A → Prop
inst✝²³ : Semifield R
inst✝²² : StarRing R
inst✝²¹ : MetricSpace R
inst✝²⁰ : TopologicalSemiring R
inst✝¹⁹ : ContinuousStar R
inst✝¹⁸ : Semifield S
inst✝¹⁷ : StarRing S
inst✝¹⁶ : MetricSpace S
inst✝¹⁵ : TopologicalSemiring S
inst✝¹⁴ : ContinuousStar S
inst✝¹³ : TopologicalSpace A
inst✝¹² : Ring A
inst✝¹¹ : StarRing A
inst✝¹⁰ : Algebra S A
inst✝⁹ : ContinuousFunctionalCalculus S q
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R A
inst✝⁶ : IsScalarTower R S A
inst✝⁵ : StarModule R S
inst✝⁴ : ContinuousSMul R S
inst✝³ : CompleteSpace R
inst✝² : ContinuousFunctionalCalculus R p
inst✝¹ : UniqueContinuousFunctionalCalculus R A
f : C(S, R)
halg : UniformEmbedding ⇑(algebraMap R S)
a : A
hpa : p a
hqa : q a
h : SpectrumRestricts a ⇑f
inst✝ : CompactSpace ↑(spectrum S a)
g : R → R
hg : ContinuousOn g (spectrum R a)
⊢ cfc g a = cfc (fun x => (algebraMap R S) (g (f x))) a

case neg
R : Type u_1
S : Type u_2
A : Type u_3
p q : A → Prop
inst✝²³ : Semifield R
inst✝²² : StarRing R
inst✝²¹ : MetricSpace R
inst✝²⁰ : TopologicalSemiring R
inst✝¹⁹ : ContinuousStar R
inst✝¹⁸ : Semifield S
inst✝¹⁷ : StarRing S
inst✝¹⁶ : MetricSpace S
inst✝¹⁵ : TopologicalSemiring S
inst✝¹⁴ : ContinuousStar S
inst✝¹³ : TopologicalSpace A
inst✝¹² : Ring A
inst✝¹¹ : StarRing A
inst✝¹⁰ : Algebra S A
inst✝⁹ : ContinuousFunctionalCalculus S q
inst✝⁸ : Algebra R S
inst✝⁷ : Algebra R A
inst✝⁶ : IsScalarTower R S A
inst✝⁵ : StarModule R S
inst✝⁴ : ContinuousSMul R S
inst✝³ : CompleteSpace R
inst✝² : ContinuousFunctionalCalculus R p
inst✝¹ : UniqueContinuousFunctionalCalculus R A
f : C(S, R)
halg : UniformEmbedding ⇑(algebraMap R S)
a : A
hpa : p a
hqa : q a
h : SpectrumRestricts a ⇑f
inst✝ : CompactSpace ↑(spectrum S a)
g : R → R
hg : ¬ContinuousOn g (spectrum R a)
⊢ cfc g a = cfc (fun x => (algebraMap R S) (g (f x))) a
tactic: by_cases hg : ContinuousOn g (spectrum R a)
Theorem: Submodule.le_one_toAddSubmonoid
File: Mathlib/Algebra/Algebra/Operations.lean

Proof steps:
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n : A
⊢ 1 ≤ toAddSubmonoid 1
state_after: case intro
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n✝ : A
n : ℕ
⊢ (Nat.castAddMonoidHom A) n ∈ toAddSubmonoid 1
tactic: rintro x ⟨n, rfl⟩
state_before: case intro
ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : Semiring A
inst✝ : Algebra R A
S T : Set A
M N P Q : Submodule R A
m n✝ : A
n : ℕ
⊢ (Nat.castAddMonoidHom A) n ∈ toAddSubmonoid 1
state_after: no goals
tactic: exact ⟨n, map_natCast (algebraMap R A) n⟩
Theorem: PartialHomeomorph.extend_image_source_inter
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
M : Type u_3
H : Type u_4
E' : Type u_5
M' : Type u_6
H' : Type u_7
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : PartialHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
s t : Set M
⊢ ↑(f.extend I) '' (f.source ∩ f'.source) = ((f.extend I).symm ≫ f'.extend I).source
state_after: no goals
tactic: simp_rw [f.extend_coord_change_source, f.extend_coe, image_comp I f, trans_source'', symm_symm,
    symm_target]
Theorem: ArithmeticFunction.moebius_ne_zero_iff_squarefree
File: Mathlib/NumberTheory/ArithmeticFunction.lean

Proof steps:
state_before: R : Type u_1
n : ℕ
⊢ μ n ≠ 0 ↔ Squarefree n
state_after: case mp
R : Type u_1
n : ℕ
h : μ n ≠ 0
⊢ Squarefree n

case mpr
R : Type u_1
n : ℕ
h : Squarefree n
⊢ μ n ≠ 0
tactic: constructor <;> intro h
Theorem: Function.iterate_add_apply
File: Mathlib/Logic/Function/Iterate.lean

Proof steps:
state_before: α : Type u
β : Type v
f : α → α
m n : ℕ
x : α
⊢ f^[m + n] x = f^[m] (f^[n] x)
state_after: α : Type u
β : Type v
f : α → α
m n : ℕ
x : α
⊢ (f^[m] ∘ f^[n]) x = f^[m] (f^[n] x)
tactic: rw [iterate_add f m n]
state_before: α : Type u
β : Type v
f : α → α
m n : ℕ
x : α
⊢ (f^[m] ∘ f^[n]) x = f^[m] (f^[n] x)
state_after: no goals
tactic: rfl
Theorem: PrimeSpectrum.vanishingIdeal_anti_mono_iff
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s t : Set (PrimeSpectrum R)
ht : IsClosed t
h : vanishingIdeal t ≤ vanishingIdeal s
⊢ s ⊆ t
state_after: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s t : Set (PrimeSpectrum R)
ht : IsClosed t
h : vanishingIdeal t ≤ vanishingIdeal s
⊢ closure s ⊆ closure t
tactic: rw [← ht.closure_subset_iff, ← ht.closure_eq]
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s t : Set (PrimeSpectrum R)
ht : IsClosed t
h : vanishingIdeal t ≤ vanishingIdeal s
⊢ closure s ⊆ closure t
state_after: no goals
tactic: convert ← zeroLocus_anti_mono_ideal h <;> apply zeroLocus_vanishingIdeal_eq_closure
Theorem: Int.le_induction_down
File: Mathlib/Data/Int/Defs.lean

Proof steps:
state_before: a b c d m✝ n✝ : ℤ
P : ℤ → Prop
m : ℤ
h0 : P m
h1 : ∀ (n : ℤ), n ≤ m → P n → P (n - 1)
n k : ℤ
hle : m ≤ k
x✝ : k ≤ m → P k
hle' : k + 1 ≤ m
⊢ P (k + 1)
state_after: no goals
tactic: omega
Theorem: Primrec.pair
File: Mathlib/Computability/Primrec.lean

Proof steps:
state_before: α✝ : Type u_1
σ : Type u_2
inst✝⁴ : Primcodable α✝
inst✝³ : Primcodable σ
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝² : Primcodable α
inst✝¹ : Primcodable β
inst✝ : Primcodable γ
f : α → β
g : α → γ
hf : Primrec f
hg : Primrec g
n : ℕ
⊢ (Nat.casesOn (encode (decode n)) 0 fun n =>
      (Nat.pair (encode (Option.map f (decode n))).pred (encode (Option.map g (decode n))).pred).succ) =
    encode (Option.map (fun a => (f a, g a)) (decode n))
state_after: no goals
tactic: cases @decode α _ n <;> simp [encodek]
Theorem: AlgEquiv.symm_symm
File: Mathlib/Algebra/Algebra/Equiv.lean

Proof steps:
state_before: R : Type uR
A₁ : Type uA₁
A₂ : Type uA₂
A₃ : Type uA₃
A₁' : Type uA₁'
A₂' : Type uA₂'
A₃' : Type uA₃'
inst✝¹² : CommSemiring R
inst✝¹¹ : Semiring A₁
inst✝¹⁰ : Semiring A₂
inst✝⁹ : Semiring A₃
inst✝⁸ : Semiring A₁'
inst✝⁷ : Semiring A₂'
inst✝⁶ : Semiring A₃'
inst✝⁵ : Algebra R A₁
inst✝⁴ : Algebra R A₂
inst✝³ : Algebra R A₃
inst✝² : Algebra R A₁'
inst✝¹ : Algebra R A₂'
inst✝ : Algebra R A₃'
e✝ e : A₁ ≃ₐ[R] A₂
⊢ e.symm.symm = e
state_after: case h
R : Type uR
A₁ : Type uA₁
A₂ : Type uA₂
A₃ : Type uA₃
A₁' : Type uA₁'
A₂' : Type uA₂'
A₃' : Type uA₃'
inst✝¹² : CommSemiring R
inst✝¹¹ : Semiring A₁
inst✝¹⁰ : Semiring A₂
inst✝⁹ : Semiring A₃
inst✝⁸ : Semiring A₁'
inst✝⁷ : Semiring A₂'
inst✝⁶ : Semiring A₃'
inst✝⁵ : Algebra R A₁
inst✝⁴ : Algebra R A₂
inst✝³ : Algebra R A₃
inst✝² : Algebra R A₁'
inst✝¹ : Algebra R A₂'
inst✝ : Algebra R A₃'
e✝ e : A₁ ≃ₐ[R] A₂
a✝ : A₁
⊢ e.symm.symm a✝ = e a✝
tactic: ext
state_before: case h
R : Type uR
A₁ : Type uA₁
A₂ : Type uA₂
A₃ : Type uA₃
A₁' : Type uA₁'
A₂' : Type uA₂'
A₃' : Type uA₃'
inst✝¹² : CommSemiring R
inst✝¹¹ : Semiring A₁
inst✝¹⁰ : Semiring A₂
inst✝⁹ : Semiring A₃
inst✝⁸ : Semiring A₁'
inst✝⁷ : Semiring A₂'
inst✝⁶ : Semiring A₃'
inst✝⁵ : Algebra R A₁
inst✝⁴ : Algebra R A₂
inst✝³ : Algebra R A₃
inst✝² : Algebra R A₁'
inst✝¹ : Algebra R A₂'
inst✝ : Algebra R A₃'
e✝ e : A₁ ≃ₐ[R] A₂
a✝ : A₁
⊢ e.symm.symm a✝ = e a✝
state_after: no goals
tactic: rfl
Theorem: Asymptotics.IsBigOWith.rpow
File: Mathlib/Analysis/SpecialFunctions/Pow/Asymptotics.lean

Proof steps:
state_before: α : Type u_1
r c : ℝ
l : Filter α
f g : α → ℝ
h : IsBigOWith c l f g
hc : 0 ≤ c
hr : 0 ≤ r
hg : 0 ≤ᶠ[l] g
⊢ IsBigOWith (c ^ r) l (fun x => f x ^ r) fun x => g x ^ r
state_after: case a
α : Type u_1
r c : ℝ
l : Filter α
f g : α → ℝ
h : IsBigOWith c l f g
hc : 0 ≤ c
hr : 0 ≤ r
hg : 0 ≤ᶠ[l] g
⊢ ∀ᶠ (x : α) in l, ‖f x ^ r‖ ≤ c ^ r * ‖g x ^ r‖
tactic: apply IsBigOWith.of_bound
state_before: case a
α : Type u_1
r c : ℝ
l : Filter α
f g : α → ℝ
h : IsBigOWith c l f g
hc : 0 ≤ c
hr : 0 ≤ r
hg : 0 ≤ᶠ[l] g
⊢ ∀ᶠ (x : α) in l, ‖f x ^ r‖ ≤ c ^ r * ‖g x ^ r‖
state_after: case h
α : Type u_1
r c : ℝ
l : Filter α
f g : α → ℝ
h : IsBigOWith c l f g
hc : 0 ≤ c
hr : 0 ≤ r
hg : 0 ≤ᶠ[l] g
x : α
hgx : 0 x ≤ g x
hx : ‖f x‖ ≤ c * ‖g x‖
⊢ ‖f x ^ r‖ ≤ c ^ r * ‖g x ^ r‖
tactic: filter_upwards [hg, h.bound] with x hgx hx
state_before: case h
α : Type u_1
r c : ℝ
l : Filter α
f g : α → ℝ
h : IsBigOWith c l f g
hc : 0 ≤ c
hr : 0 ≤ r
hg : 0 ≤ᶠ[l] g
x : α
hgx : 0 x ≤ g x
hx : ‖f x‖ ≤ c * ‖g x‖
⊢ ‖f x ^ r‖ ≤ c ^ r * ‖g x ^ r‖
state_after: no goals
tactic: calc
    |f x ^ r| ≤ |f x| ^ r := abs_rpow_le_abs_rpow _ _
    _ ≤ (c * |g x|) ^ r := rpow_le_rpow (abs_nonneg _) hx hr
    _ = c ^ r * |g x ^ r| := by rw [mul_rpow hc (abs_nonneg _), abs_rpow_of_nonneg hgx]
Theorem: MeasureTheory.OuterMeasure.exists_measurable_superset_of_trim_eq_zero
File: Mathlib/MeasureTheory/OuterMeasure/Induced.lean

Proof steps:
state_before: α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
h : m.trim s = 0
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ m t = 0
state_after: case intro.intro.intro
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
h : m.trim s = 0
t : Set α
hst : s ⊆ t
ht : MeasurableSet t
hm : m t = m.trim s
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ m t = 0
tactic: rcases exists_measurable_superset_eq_trim m s with ⟨t, hst, ht, hm⟩
state_before: case intro.intro.intro
α : Type u_1
inst✝ : MeasurableSpace α
m✝ m : OuterMeasure α
s : Set α
h : m.trim s = 0
t : Set α
hst : s ⊆ t
ht : MeasurableSet t
hm : m t = m.trim s
⊢ ∃ t, s ⊆ t ∧ MeasurableSet t ∧ m t = 0
state_after: no goals
tactic: exact ⟨t, hst, ht, h ▸ hm⟩
Theorem: Nat.multinomial_singleton
File: Mathlib/Data/Nat/Choose/Multinomial.lean

Proof steps:
state_before: α : Type u_1
s : Finset α
f✝ : α → ℕ
a✝ b : α
n : ℕ
a : α
f : α → ℕ
⊢ multinomial {a} f = 1
state_after: α : Type u_1
s : Finset α
f✝ : α → ℕ
a✝ b : α
n : ℕ
a : α
f : α → ℕ
⊢ (f a + ∑ i ∈ ∅, f i).choose (f a) * multinomial ∅ f = 1
tactic: rw [← cons_empty, multinomial_cons]
state_before: α : Type u_1
s : Finset α
f✝ : α → ℕ
a✝ b : α
n : ℕ
a : α
f : α → ℕ
⊢ (f a + ∑ i ∈ ∅, f i).choose (f a) * multinomial ∅ f = 1
state_after: no goals
tactic: simp
Theorem: WeierstrassCurve.Projective.equation_smul_iff
File: Mathlib/AlgebraicGeometry/EllipticCurve/Projective.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h : W.Equation P
⊢ W.Equation (u • P)
state_after: R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h :
  P 1 ^ 2 * P 2 + W.a₁ * P 0 * P 1 * P 2 + W.a₃ * P 1 * P 2 ^ 2 =
    P 0 ^ 3 + W.a₂ * P 0 ^ 2 * P 2 + W.a₄ * P 0 * P 2 ^ 2 + W.a₆ * P 2 ^ 3
⊢ (u • P) 1 ^ 2 * (u • P) 2 + W.a₁ * (u • P) 0 * (u • P) 1 * (u • P) 2 + W.a₃ * (u • P) 1 * (u • P) 2 ^ 2 =
    (u • P) 0 ^ 3 + W.a₂ * (u • P) 0 ^ 2 * (u • P) 2 + W.a₄ * (u • P) 0 * (u • P) 2 ^ 2 + W.a₆ * (u • P) 2 ^ 3
tactic: rw [equation_iff] at h ⊢
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P✝ : Fin 3 → R
u✝ u : Rˣ
P : Fin 3 → R
h :
  P 1 ^ 2 * P 2 + W.a₁ * P 0 * P 1 * P 2 + W.a₃ * P 1 * P 2 ^ 2 =
    P 0 ^ 3 + W.a₂ * P 0 ^ 2 * P 2 + W.a₄ * P 0 * P 2 ^ 2 + W.a₆ * P 2 ^ 3
⊢ (u • P) 1 ^ 2 * (u • P) 2 + W.a₁ * (u • P) 0 * (u • P) 1 * (u • P) 2 + W.a₃ * (u • P) 1 * (u • P) 2 ^ 2 =
    (u • P) 0 ^ 3 + W.a₂ * (u • P) 0 ^ 2 * (u • P) 2 + W.a₄ * (u • P) 0 * (u • P) 2 ^ 2 + W.a₆ * (u • P) 2 ^ 3
state_after: no goals
tactic: linear_combination (norm := (simp only [smul_fin3_ext]; ring1)) (u : R) ^ 3 * h
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
u : Rˣ
this : ∀ (u : Rˣ) {P : Fin 3 → R}, W.Equation P → W.Equation (u • P)
h : W.Equation (u • P)
⊢ W.Equation P
state_after: case h.e'_4
R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
u : Rˣ
this : ∀ (u : Rˣ) {P : Fin 3 → R}, W.Equation P → W.Equation (u • P)
h : W.Equation (u • P)
⊢ P = u⁻¹ • u • P
tactic: convert this u⁻¹ h
state_before: case h.e'_4
R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
u : Rˣ
this : ∀ (u : Rˣ) {P : Fin 3 → R}, W.Equation P → W.Equation (u • P)
h : W.Equation (u • P)
⊢ P = u⁻¹ • u • P
state_after: no goals
tactic: rw [inv_smul_smul]