ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Polynomial.degree_X_pow
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

Proof steps:
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝¹ : Semiring R
inst✝ : Nontrivial R
p q : R[X]
n : ℕ
⊢ (X ^ n).degree = ↑n
state_after: no goals
tactic: rw [X_pow_eq_monomial, degree_monomial _ (one_ne_zero' R)]
Theorem: IsPrimitiveRoot.norm_of_cyclotomic_irreducible
File: Mathlib/NumberTheory/Cyclotomic/PrimitiveRoots.lean

Proof steps:
state_before: p n : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K
inst✝² : Algebra K L
inst✝¹ : IsDomain L
inst✝ : IsCyclotomicExtension {n} K L
hirr : Irreducible (cyclotomic (↑n) K)
⊢ (Algebra.norm K) ζ = if n = 2 then -1 else 1
state_after: case pos
p n : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K
inst✝² : Algebra K L
inst✝¹ : IsDomain L
inst✝ : IsCyclotomicExtension {n} K L
hirr : Irreducible (cyclotomic (↑n) K)
hn : n = 2
⊢ (Algebra.norm K) ζ = -1

case neg
p n : ℕ+
A : Type w
B : Type z
K : Type u
L : Type v
C : Type w
inst✝⁸ : CommRing A
inst✝⁷ : CommRing B
inst✝⁶ : Algebra A B
inst✝⁵ : IsCyclotomicExtension {n} A B
inst✝⁴ : CommRing L
ζ : L
hζ : IsPrimitiveRoot ζ ↑n
inst✝³ : Field K
inst✝² : Algebra K L
inst✝¹ : IsDomain L
inst✝ : IsCyclotomicExtension {n} K L
hirr : Irreducible (cyclotomic (↑n) K)
hn : ¬n = 2
⊢ (Algebra.norm K) ζ = 1
tactic: split_ifs with hn
Theorem: NormedField.continuousAt_zpow
File: Mathlib/Analysis/SpecificLimits/Normed.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
𝕜 : Type u_4
inst✝ : NontriviallyNormedField 𝕜
m : ℤ
x : 𝕜
⊢ ContinuousAt (fun x => x ^ m) x ↔ x ≠ 0 ∨ 0 ≤ m
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
𝕜 : Type u_4
inst✝ : NontriviallyNormedField 𝕜
m : ℤ
x : 𝕜
⊢ ContinuousAt (fun x => x ^ m) x → x ≠ 0 ∨ 0 ≤ m
tactic: refine ⟨?_, continuousAt_zpow₀ _ _⟩
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
𝕜 : Type u_4
inst✝ : NontriviallyNormedField 𝕜
m : ℤ
x : 𝕜
⊢ ContinuousAt (fun x => x ^ m) x → x ≠ 0 ∨ 0 ≤ m
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
𝕜 : Type u_4
inst✝ : NontriviallyNormedField 𝕜
m : ℤ
x : 𝕜
⊢ x = 0 ∧ m < 0 → ¬ContinuousAt (fun x => x ^ m) x
tactic: contrapose!
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
𝕜 : Type u_4
inst✝ : NontriviallyNormedField 𝕜
m : ℤ
x : 𝕜
⊢ x = 0 ∧ m < 0 → ¬ContinuousAt (fun x => x ^ m) x
state_after: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
𝕜 : Type u_4
inst✝ : NontriviallyNormedField 𝕜
m : ℤ
hm : m < 0
hc : ContinuousAt (fun x => x ^ m) 0
⊢ False
tactic: rintro ⟨rfl, hm⟩ hc
state_before: case intro
α : Type u_1
β : Type u_2
ι : Type u_3
𝕜 : Type u_4
inst✝ : NontriviallyNormedField 𝕜
m : ℤ
hm : m < 0
hc : ContinuousAt (fun x => x ^ m) 0
⊢ False
state_after: no goals
tactic: exact not_tendsto_atTop_of_tendsto_nhds (hc.tendsto.mono_left nhdsWithin_le_nhds).norm
    (tendsto_norm_zpow_nhdsWithin_0_atTop hm)
Theorem: Multiset.card_sym2
File: Mathlib/Data/Multiset/Sym.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
m : Multiset α
⊢ card m.sym2 = (card m + 1).choose 2
state_after: α : Type u_1
β : Type u_2
m : Multiset α
xs : List α
⊢ card (Multiset.sym2 ⟦xs⟧) = (card ⟦xs⟧ + 1).choose 2
tactic: refine m.inductionOn fun xs => ?_
state_before: α : Type u_1
β : Type u_2
m : Multiset α
xs : List α
⊢ card (Multiset.sym2 ⟦xs⟧) = (card ⟦xs⟧ + 1).choose 2
state_after: no goals
tactic: simp [List.length_sym2]
Theorem: List.indexOf_append_of_not_mem
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a : α
h : ¬a ∈ l₁
⊢ indexOf a (l₁ ++ l₂) = l₁.length + indexOf a l₂
state_after: case nil
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a : α
h : ¬a ∈ []
⊢ indexOf a ([] ++ l₂) = [].length + indexOf a l₂

case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a d₁ : α
t₁ : List α
ih : ¬a ∈ t₁ → indexOf a (t₁ ++ l₂) = t₁.length + indexOf a l₂
h : ¬a ∈ d₁ :: t₁
⊢ indexOf a (d₁ :: t₁ ++ l₂) = (d₁ :: t₁).length + indexOf a l₂
tactic: induction' l₁ with d₁ t₁ ih
state_before: case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
inst✝ : DecidableEq α
a d₁ : α
t₁ : List α
ih : ¬a ∈ t₁ → indexOf a (t₁ ++ l₂) = t₁.length + indexOf a l₂
h : ¬a ∈ d₁ :: t₁
⊢ indexOf a (d₁ :: t₁ ++ l₂) = (d₁ :: t₁).length + indexOf a l₂
state_after: no goals
tactic: rw [List.cons_append, indexOf_cons_ne _ (ne_of_not_mem_cons h).symm, List.length,
    ih (not_mem_of_not_mem_cons h), Nat.succ_add]
Theorem: MeasureTheory.eLpNorm_exponent_zero
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
⊢ eLpNorm f 0 μ = 0
state_after: no goals
tactic: simp [eLpNorm]
Theorem: SimpleGraph.Walk.toSubgraph_connected
File: Mathlib/Combinatorics/SimpleGraph/Connectivity/Subgraph.lean

Proof steps:
state_before: V : Type u
V' : Type v
G : SimpleGraph V
G' : SimpleGraph V'
u v : V
p : G.Walk u v
⊢ p.toSubgraph.Connected
state_after: no goals
tactic: induction p with
  | nil => apply singletonSubgraph_connected
  | @cons _ w _ h p ih =>
    apply (subgraphOfAdj_connected h).sup ih
    exists w
    simp
Theorem: Equiv.toHomeomorph_toEquiv
File: Mathlib/Topology/Homeomorph.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z✝ : Type u_3
Z : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
e : X ≃ Y
he : ∀ (s : Set Y), IsOpen (⇑e ⁻¹' s) ↔ IsOpen s
s : Set X
⊢ IsOpen s → IsOpen (e.invFun ⁻¹' s)
state_after: case h.h.e'_3
X : Type u_1
Y : Type u_2
Z✝ : Type u_3
Z : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
e : X ≃ Y
he : ∀ (s : Set Y), IsOpen (⇑e ⁻¹' s) ↔ IsOpen s
s : Set X
⊢ s = ⇑e ⁻¹' (e.invFun ⁻¹' s)
tactic: convert (he _).1
state_before: case h.h.e'_3
X : Type u_1
Y : Type u_2
Z✝ : Type u_3
Z : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
e : X ≃ Y
he : ∀ (s : Set Y), IsOpen (⇑e ⁻¹' s) ↔ IsOpen s
s : Set X
⊢ s = ⇑e ⁻¹' (e.invFun ⁻¹' s)
state_after: no goals
tactic: simp
Theorem: Multiset.prod_lt_prod'
File: Mathlib/Algebra/Order/BigOperators/Group/Multiset.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
hle : ∀ i ∈ s, f i ≤ g i
hlt : ∃ i ∈ s, f i < g i
⊢ (map f s).prod < (map g s).prod
state_after: case mk
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
l : List ι
hle : ∀ i ∈ Quot.mk Setoid.r l, f i ≤ g i
hlt : ∃ i ∈ Quot.mk Setoid.r l, f i < g i
⊢ (map f (Quot.mk Setoid.r l)).prod < (map g (Quot.mk Setoid.r l)).prod
tactic: obtain ⟨l⟩ := s
state_before: case mk
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
l : List ι
hle : ∀ i ∈ Quot.mk Setoid.r l, f i ≤ g i
hlt : ∃ i ∈ Quot.mk Setoid.r l, f i < g i
⊢ (map f (Quot.mk Setoid.r l)).prod < (map g (Quot.mk Setoid.r l)).prod
state_after: case mk
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
l : List ι
hle : ∀ i ∈ Quot.mk Setoid.r l, f i ≤ g i
hlt : ∃ i ∈ Quot.mk Setoid.r l, f i < g i
⊢ (List.map f l).prod < (List.map g l).prod
tactic: simp only [Multiset.quot_mk_to_coe'', Multiset.map_coe, Multiset.prod_coe]
state_before: case mk
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
l : List ι
hle : ∀ i ∈ Quot.mk Setoid.r l, f i ≤ g i
hlt : ∃ i ∈ Quot.mk Setoid.r l, f i < g i
⊢ (List.map f l).prod < (List.map g l).prod
state_after: no goals
tactic: exact List.prod_lt_prod' f g hle hlt
Theorem: AlgebraicGeometry.Scheme.OpenCover.gluedCoverT'_fst_snd
File: Mathlib/AlgebraicGeometry/Gluing.lean

Proof steps:
state_before: X : Scheme
𝒰 : X.OpenCover
x y z : 𝒰.J
⊢ 𝒰.gluedCoverT' x y z ≫
      pullback.fst (pullback.fst (𝒰.map y) (𝒰.map z)) (pullback.fst (𝒰.map y) (𝒰.map x)) ≫
        pullback.snd (𝒰.map y) (𝒰.map z) =
    pullback.snd (pullback.fst (𝒰.map x) (𝒰.map y)) (pullback.fst (𝒰.map x) (𝒰.map z)) ≫
      pullback.snd (𝒰.map x) (𝒰.map z)
state_after: X : Scheme
𝒰 : X.OpenCover
x y z : 𝒰.J
⊢ ((pullbackRightPullbackFstIso (𝒰.map x) (𝒰.map z) (pullback.fst (𝒰.map x) (𝒰.map y))).hom ≫
        (pullback.map (pullback.fst (𝒰.map x) (𝒰.map y) ≫ 𝒰.map x) (𝒰.map z)
              (pullback.fst (𝒰.map y) (𝒰.map x) ≫ 𝒰.map y) (𝒰.map z) (pullbackSymmetry (𝒰.map x) (𝒰.map y)).hom
              (𝟙 (𝒰.obj z)) (𝟙 X) ⋯ ⋯ ≫
            (pullbackRightPullbackFstIso (𝒰.map y) (𝒰.map z) (pullback.fst (𝒰.map y) (𝒰.map x))).inv) ≫
          (pullbackSymmetry (pullback.fst (𝒰.map y) (𝒰.map x)) (pullback.fst (𝒰.map y) (𝒰.map z))).hom) ≫
      pullback.fst (pullback.fst (𝒰.map y) (𝒰.map z)) (pullback.fst (𝒰.map y) (𝒰.map x)) ≫
        pullback.snd (𝒰.map y) (𝒰.map z) =
    pullback.snd (pullback.fst (𝒰.map x) (𝒰.map y)) (pullback.fst (𝒰.map x) (𝒰.map z)) ≫
      pullback.snd (𝒰.map x) (𝒰.map z)
tactic: delta gluedCoverT'
state_before: X : Scheme
𝒰 : X.OpenCover
x y z : 𝒰.J
⊢ ((pullbackRightPullbackFstIso (𝒰.map x) (𝒰.map z) (pullback.fst (𝒰.map x) (𝒰.map y))).hom ≫
        (pullback.map (pullback.fst (𝒰.map x) (𝒰.map y) ≫ 𝒰.map x) (𝒰.map z)
              (pullback.fst (𝒰.map y) (𝒰.map x) ≫ 𝒰.map y) (𝒰.map z) (pullbackSymmetry (𝒰.map x) (𝒰.map y)).hom
              (𝟙 (𝒰.obj z)) (𝟙 X) ⋯ ⋯ ≫
            (pullbackRightPullbackFstIso (𝒰.map y) (𝒰.map z) (pullback.fst (𝒰.map y) (𝒰.map x))).inv) ≫
          (pullbackSymmetry (pullback.fst (𝒰.map y) (𝒰.map x)) (pullback.fst (𝒰.map y) (𝒰.map z))).hom) ≫
      pullback.fst (pullback.fst (𝒰.map y) (𝒰.map z)) (pullback.fst (𝒰.map y) (𝒰.map x)) ≫
        pullback.snd (𝒰.map y) (𝒰.map z) =
    pullback.snd (pullback.fst (𝒰.map x) (𝒰.map y)) (pullback.fst (𝒰.map x) (𝒰.map z)) ≫
      pullback.snd (𝒰.map x) (𝒰.map z)
state_after: no goals
tactic: simp
Theorem: LipschitzWith.pow_end
File: Mathlib/Topology/EMetricSpace/Lipschitz.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K✝ : ℝ≥0
f✝ : α → β
x y : α
r : ℝ≥0∞
f : Function.End α
K : ℝ≥0
h : LipschitzWith K f
⊢ LipschitzWith (K ^ 0) (f ^ 0)
state_after: no goals
tactic: simpa only [pow_zero] using LipschitzWith.id
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K✝ : ℝ≥0
f✝ : α → β
x y : α
r : ℝ≥0∞
f : Function.End α
K : ℝ≥0
h : LipschitzWith K f
n : ℕ
⊢ LipschitzWith (K ^ (n + 1)) (f ^ (n + 1))
state_after: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K✝ : ℝ≥0
f✝ : α → β
x y : α
r : ℝ≥0∞
f : Function.End α
K : ℝ≥0
h : LipschitzWith K f
n : ℕ
⊢ LipschitzWith (K ^ n * K) (f ^ n * f)
tactic: rw [pow_succ, pow_succ]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : PseudoEMetricSpace α
inst✝¹ : PseudoEMetricSpace β
inst✝ : PseudoEMetricSpace γ
K✝ : ℝ≥0
f✝ : α → β
x y : α
r : ℝ≥0∞
f : Function.End α
K : ℝ≥0
h : LipschitzWith K f
n : ℕ
⊢ LipschitzWith (K ^ n * K) (f ^ n * f)
state_after: no goals
tactic: exact (LipschitzWith.pow_end h n).mul_end h
Theorem: UniqueAdd.addHom_preimage
File: Mathlib/Algebra/Group/UniqueProds.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A✝ B✝ : Finset G
a0✝ b0✝ : G
f : G →ₙ* H
hf : Function.Injective ⇑f
a0 b0 : G
A B : Finset H
u : UniqueMul A B (f a0) (f b0)
⊢ UniqueMul (A.preimage ⇑f ⋯) (B.preimage ⇑f ⋯) a0 b0
state_after: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A✝ B✝ : Finset G
a0✝ b0✝ : G
f : G →ₙ* H
hf : Function.Injective ⇑f
a0 b0 : G
A B : Finset H
u : UniqueMul A B (f a0) (f b0)
a b : G
ha : a ∈ A.preimage ⇑f ⋯
hb : b ∈ B.preimage ⇑f ⋯
ab : a * b = a0 * b0
⊢ a = a0 ∧ b = b0
tactic: intro a b ha hb ab
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A✝ B✝ : Finset G
a0✝ b0✝ : G
f : G →ₙ* H
hf : Function.Injective ⇑f
a0 b0 : G
A B : Finset H
u : UniqueMul A B (f a0) (f b0)
a b : G
ha : a ∈ A.preimage ⇑f ⋯
hb : b ∈ B.preimage ⇑f ⋯
ab : a * b = a0 * b0
⊢ a = a0 ∧ b = b0
state_after: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A✝ B✝ : Finset G
a0✝ b0✝ : G
f : G →ₙ* H
hf : Function.Injective ⇑f
a0 b0 : G
A B : Finset H
u : UniqueMul A B (f a0) (f b0)
a b : G
ha : a ∈ A.preimage ⇑f ⋯
hb : b ∈ B.preimage ⇑f ⋯
ab : f a * f b = f a0 * f b0
⊢ f a = f a0 ∧ f b = f b0
tactic: simp only [← hf.eq_iff, map_mul] at ab ⊢
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A✝ B✝ : Finset G
a0✝ b0✝ : G
f : G →ₙ* H
hf : Function.Injective ⇑f
a0 b0 : G
A B : Finset H
u : UniqueMul A B (f a0) (f b0)
a b : G
ha : a ∈ A.preimage ⇑f ⋯
hb : b ∈ B.preimage ⇑f ⋯
ab : f a * f b = f a0 * f b0
⊢ f a = f a0 ∧ f b = f b0
state_after: no goals
tactic: exact u (Finset.mem_preimage.mp ha) (Finset.mem_preimage.mp hb) ab
Theorem: Bool.symmDiff_eq_xor
File: Mathlib/Order/SymmDiff.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
⊢ ∀ (p q : Bool), p ∆ q = xor p q
state_after: no goals
tactic: decide
Theorem: WeierstrassCurve.Jacobian.nonsingular_iff_of_Y_eq_negY
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → F
hPz : P z ≠ 0
hy : P y = W.negY P
⊢ W.Nonsingular P ↔ W.Equation P ∧ (eval P) W.polynomialX ≠ 0
state_after: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → F
hPz : P z ≠ 0
hy : P y = W.negY P
this : (eval P) W.polynomialY = P y - W.negY P
⊢ W.Nonsingular P ↔ W.Equation P ∧ (eval P) W.polynomialX ≠ 0
tactic: have : eval P W.polynomialY = P y - W.negY P := by
    rw [negY, eval_polynomialY]; ring1
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → F
hPz : P z ≠ 0
hy : P y = W.negY P
this : (eval P) W.polynomialY = P y - W.negY P
⊢ W.Nonsingular P ↔ W.Equation P ∧ (eval P) W.polynomialX ≠ 0
state_after: no goals
tactic: rw [nonsingular_iff_of_Z_ne_zero hPz, this, hy, sub_self, ne_self_iff_false, or_false]
Theorem: measurable_const_smul_iff
File: Mathlib/MeasureTheory/Group/Arithmetic.lean

Proof steps:
state_before: α✝ : Type u_1
M : Type u_2
β : Type u_3
α : Type u_4
inst✝⁹ : MeasurableSpace M
inst✝⁸ : MeasurableSpace β
inst✝⁷ : Monoid M
inst✝⁶ : MulAction M β
inst✝⁵ : MeasurableSMul M β
inst✝⁴ : MeasurableSpace α
f : α → β
μ : Measure α
G : Type u_5
inst✝³ : Group G
inst✝² : MeasurableSpace G
inst✝¹ : MulAction G β
inst✝ : MeasurableSMul G β
c : G
h : Measurable fun x => c • f x
⊢ Measurable f
state_after: no goals
tactic: simpa only [inv_smul_smul] using h.const_smul' c⁻¹
Theorem: UnitAddCircle.norm_eq
File: Mathlib/Analysis/Normed/Group/AddCircle.lean

Proof steps:
state_before: x : ℝ
⊢ ‖↑x‖ = |x - ↑(round x)|
state_after: no goals
tactic: simp [AddCircle.norm_eq]
Theorem: CategoryTheory.PresheafOfGroups.OneCohomologyRelation.symm
File: Mathlib/CategoryTheory/Sites/NonabelianCohomology/H1.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
G : Cᵒᵖ ⥤ Grp
X : C
I : Type w'
U : I → C
γ₁ γ₂ : OneCochain G U
α : ZeroCochain G U
h : OneCohomologyRelation γ₁ γ₂ α
i j : I
T : C
a : T ⟶ U i
b : T ⟶ U j
⊢ (G.map a.op) (α⁻¹ i) * γ₂.ev i j a b = γ₁.ev i j a b * (G.map b.op) (α⁻¹ j)
state_after: no goals
tactic: rw [← mul_left_inj (G.map b.op (α j)), mul_assoc, ← h i j a b,
    mul_assoc, Cochain₀.inv_apply, map_inv, inv_mul_cancel_left,
    Cochain₀.inv_apply, map_inv, mul_left_inv, mul_one]
Theorem: CategoryTheory.Functor.IsLocallyFull.ext
File: Mathlib/CategoryTheory/Sites/LocallyFullyFaithful.lean

Proof steps:
state_before: C : Type uC
inst✝³ : Category.{vC, uC} C
D : Type uD
inst✝² : Category.{vD, uD} D
G✝ : C ⥤ D
J : GrothendieckTopology C
K : GrothendieckTopology D
A : Type u_1
inst✝¹ : Category.{?u.7470, u_1} A
G : C ⥤ D
inst✝ : G.IsLocallyFull K
ℱ : SheafOfTypes K
X Y : C
i : G.obj X ⟶ G.obj Y
s t : ℱ.val.obj (op (G.obj X))
h : ∀ ⦃Z : C⦄ (j : Z ⟶ X) (f : Z ⟶ Y), G.map f = G.map j ≫ i → ℱ.val.map (G.map j).op s = ℱ.val.map (G.map j).op t
⊢ s = t
state_after: C : Type uC
inst✝³ : Category.{vC, uC} C
D : Type uD
inst✝² : Category.{vD, uD} D
G✝ : C ⥤ D
J : GrothendieckTopology C
K : GrothendieckTopology D
A : Type u_1
inst✝¹ : Category.{?u.7470, u_1} A
G : C ⥤ D
inst✝ : G.IsLocallyFull K
ℱ : SheafOfTypes K
X Y : C
i : G.obj X ⟶ G.obj Y
s t : ℱ.val.obj (op (G.obj X))
h : ∀ ⦃Z : C⦄ (j : Z ⟶ X) (f : Z ⟶ Y), G.map f = G.map j ≫ i → ℱ.val.map (G.map j).op s = ℱ.val.map (G.map j).op t
⊢ ∀ ⦃Y_1 : D⦄ ⦃f : Y_1 ⟶ G.obj X⦄,
    (Sieve.functorPushforward G (G.imageSieve i)).arrows f → ℱ.val.map f.op s = ℱ.val.map f.op t
tactic: apply (ℱ.cond _ (G.functorPushforward_imageSieve_mem K i)).isSeparatedFor.ext
state_before: C : Type uC
inst✝³ : Category.{vC, uC} C
D : Type uD
inst✝² : Category.{vD, uD} D
G✝ : C ⥤ D
J : GrothendieckTopology C
K : GrothendieckTopology D
A : Type u_1
inst✝¹ : Category.{?u.7470, u_1} A
G : C ⥤ D
inst✝ : G.IsLocallyFull K
ℱ : SheafOfTypes K
X Y : C
i : G.obj X ⟶ G.obj Y
s t : ℱ.val.obj (op (G.obj X))
h : ∀ ⦃Z : C⦄ (j : Z ⟶ X) (f : Z ⟶ Y), G.map f = G.map j ≫ i → ℱ.val.map (G.map j).op s = ℱ.val.map (G.map j).op t
⊢ ∀ ⦃Y_1 : D⦄ ⦃f : Y_1 ⟶ G.obj X⦄,
    (Sieve.functorPushforward G (G.imageSieve i)).arrows f → ℱ.val.map f.op s = ℱ.val.map f.op t
state_after: case intro.intro.intro.intro.intro
C : Type uC
inst✝³ : Category.{vC, uC} C
D : Type uD
inst✝² : Category.{vD, uD} D
G✝ : C ⥤ D
J : GrothendieckTopology C
K : GrothendieckTopology D
A : Type u_1
inst✝¹ : Category.{?u.7470, u_1} A
G : C ⥤ D
inst✝ : G.IsLocallyFull K
ℱ : SheafOfTypes K
X Y : C
i : G.obj X ⟶ G.obj Y
s t : ℱ.val.obj (op (G.obj X))
h : ∀ ⦃Z : C⦄ (j : Z ⟶ X) (f : Z ⟶ Y), G.map f = G.map j ≫ i → ℱ.val.map (G.map j).op s = ℱ.val.map (G.map j).op t
Z : D
W : C
iWX : W ⟶ X
iZW : Z ⟶ G.obj W
iWY : W ⟶ Y
e : G.map iWY = G.map iWX ≫ i
⊢ ℱ.val.map (iZW ≫ G.map iWX).op s = ℱ.val.map (iZW ≫ G.map iWX).op t
tactic: rintro Z _ ⟨W, iWX, iZW, ⟨iWY, e⟩, rfl⟩
state_before: case intro.intro.intro.intro.intro
C : Type uC
inst✝³ : Category.{vC, uC} C
D : Type uD
inst✝² : Category.{vD, uD} D
G✝ : C ⥤ D
J : GrothendieckTopology C
K : GrothendieckTopology D
A : Type u_1
inst✝¹ : Category.{?u.7470, u_1} A
G : C ⥤ D
inst✝ : G.IsLocallyFull K
ℱ : SheafOfTypes K
X Y : C
i : G.obj X ⟶ G.obj Y
s t : ℱ.val.obj (op (G.obj X))
h : ∀ ⦃Z : C⦄ (j : Z ⟶ X) (f : Z ⟶ Y), G.map f = G.map j ≫ i → ℱ.val.map (G.map j).op s = ℱ.val.map (G.map j).op t
Z : D
W : C
iWX : W ⟶ X
iZW : Z ⟶ G.obj W
iWY : W ⟶ Y
e : G.map iWY = G.map iWX ≫ i
⊢ ℱ.val.map (iZW ≫ G.map iWX).op s = ℱ.val.map (iZW ≫ G.map iWX).op t
state_after: no goals
tactic: simp [h iWX iWY e]
Theorem: PosNum.natSize_pos
File: Mathlib/Data/Num/Lemmas.lean

Proof steps:
state_before: α : Type u_1
n : PosNum
⊢ 0 < n.natSize
state_after: no goals
tactic: cases n <;> apply Nat.succ_pos
Theorem: generateFrom_prod_eq
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

Proof steps:
state_before: α✝ : Type u_1
α' : Type u_2
β✝ : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁵ : MeasurableSpace α✝
inst✝⁴ : MeasurableSpace α'
inst✝³ : MeasurableSpace β✝
inst✝² : MeasurableSpace β'
inst✝¹ : MeasurableSpace γ
μ μ' : Measure α✝
ν ν' : Measure β✝
τ : Measure γ
inst✝ : NormedAddCommGroup E
α : Type u_7
β : Type u_8
C : Set (Set α)
D : Set (Set β)
hC : IsCountablySpanning C
hD : IsCountablySpanning D
⊢ Prod.instMeasurableSpace = generateFrom (image2 (fun x x_1 => x ×ˢ x_1) C D)
state_after: case a
α✝ : Type u_1
α' : Type u_2
β✝ : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁵ : MeasurableSpace α✝
inst✝⁴ : MeasurableSpace α'
inst✝³ : MeasurableSpace β✝
inst✝² : MeasurableSpace β'
inst✝¹ : MeasurableSpace γ
μ μ' : Measure α✝
ν ν' : Measure β✝
τ : Measure γ
inst✝ : NormedAddCommGroup E
α : Type u_7
β : Type u_8
C : Set (Set α)
D : Set (Set β)
hC : IsCountablySpanning C
hD : IsCountablySpanning D
⊢ Prod.instMeasurableSpace ≤ generateFrom (image2 (fun x x_1 => x ×ˢ x_1) C D)

case a
α✝ : Type u_1
α' : Type u_2
β✝ : Type u_3
β' : Type u_4
γ : Type u_5
E : Type u_6
inst✝⁵ : MeasurableSpace α✝
inst✝⁴ : MeasurableSpace α'
inst✝³ : MeasurableSpace β✝
inst✝² : MeasurableSpace β'
inst✝¹ : MeasurableSpace γ
μ μ' : Measure α✝
ν ν' : Measure β✝
τ : Measure γ
inst✝ : NormedAddCommGroup E
α : Type u_7
β : Type u_8
C : Set (Set α)
D : Set (Set β)
hC : IsCountablySpanning C
hD : IsCountablySpanning D
⊢ generateFrom (image2 (fun x x_1 => x ×ˢ x_1) C D) ≤ Prod.instMeasurableSpace
tactic: apply le_antisymm
Theorem: continuousWithinAt_Icc_iff_Ici
File: Mathlib/Topology/Order/OrderClosed.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : ClosedIciTopology α
inst✝ : TopologicalSpace β
a b c : α
f : α → β
h : a < b
⊢ ContinuousWithinAt f (Icc a b) a ↔ ContinuousWithinAt f (Ici a) a
state_after: no goals
tactic: simp only [ContinuousWithinAt, nhdsWithin_Icc_eq_nhdsWithin_Ici h]
Theorem: Vector.continuousAt_eraseIdx
File: Mathlib/Topology/List.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
n : ℕ
i : Fin (n + 1)
l : List α
hl : l.length = n + 1
⊢ ContinuousAt (Vector.eraseIdx i) ⟨l, hl⟩
state_after: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
n : ℕ
i : Fin (n + 1)
l : List α
hl : l.length = n + 1
⊢ Tendsto (fun x => ↑(Vector.eraseIdx i x)) (𝓝 ⟨l, hl⟩)
    (𝓝
      ↑(match ⟨l, hl⟩ with
        | ⟨l, p⟩ => ⟨l.eraseIdx ↑i, ⋯⟩))
tactic: rw [ContinuousAt, Vector.eraseIdx, tendsto_subtype_rng]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
n : ℕ
i : Fin (n + 1)
l : List α
hl : l.length = n + 1
⊢ Tendsto (fun x => ↑(Vector.eraseIdx i x)) (𝓝 ⟨l, hl⟩)
    (𝓝
      ↑(match ⟨l, hl⟩ with
        | ⟨l, p⟩ => ⟨l.eraseIdx ↑i, ⋯⟩))
state_after: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
n : ℕ
i : Fin (n + 1)
l : List α
hl : l.length = n + 1
⊢ Tendsto (fun x => (↑x).eraseIdx ↑i) (𝓝 ⟨l, hl⟩) (𝓝 (l.eraseIdx ↑i))
tactic: simp only [Vector.eraseIdx_val]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
n : ℕ
i : Fin (n + 1)
l : List α
hl : l.length = n + 1
⊢ Tendsto (fun x => (↑x).eraseIdx ↑i) (𝓝 ⟨l, hl⟩) (𝓝 (l.eraseIdx ↑i))
state_after: no goals
tactic: exact Tendsto.comp List.tendsto_eraseIdx continuousAt_subtype_val