ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Finset.sup_sup
File: Mathlib/Data/Finset/Lattice.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝¹ : SemilatticeSup α
inst✝ : OrderBot α
s s₁ s₂ : Finset β
f g : β → α
a : α
⊢ s.sup (f ⊔ g) = s.sup f ⊔ s.sup g
state_after: no goals
tactic: induction s using Finset.cons_induction with
  | empty => rw [sup_empty, sup_empty, sup_empty, bot_sup_eq]
  | cons _ _ _ ih =>
    rw [sup_cons, sup_cons, sup_cons, ih]
    exact sup_sup_sup_comm _ _ _ _
Theorem: AddLocalization.mk_nsmul
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
n : ℕ
a : M
b : ↥S
⊢ mk a b ^ n = mk (a ^ n) (b ^ n)
state_after: no goals
tactic: induction n <;> simp [pow_succ, *, ← mk_mul, ← mk_one]
Theorem: MvPolynomial.degrees_sum
File: Mathlib/Algebra/MvPolynomial/Degrees.lean

Proof steps:
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s✝ : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_3
inst✝ : DecidableEq σ
s : Finset ι
f : ι → MvPolynomial σ R
⊢ (∑ i ∈ s, f i).degrees ≤ s.sup fun i => (f i).degrees
state_after: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s✝ : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_3
inst✝ : DecidableEq σ
s : Finset ι
f : ι → MvPolynomial σ R
⊢ ((∑ i ∈ s, f i).support.sup fun s => toMultiset s) ≤ s.sup fun i => (f i).support.sup fun s => toMultiset s
tactic: simp_rw [degrees_def]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s✝ : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_3
inst✝ : DecidableEq σ
s : Finset ι
f : ι → MvPolynomial σ R
⊢ ((∑ i ∈ s, f i).support.sup fun s => toMultiset s) ≤ s.sup fun i => (f i).support.sup fun s => toMultiset s
state_after: no goals
tactic: exact supDegree_sum_le
Theorem: List.Nat.antidiagonalTuple_two
File: Mathlib/Data/Fin/Tuple/NatAntidiagonal.lean

Proof steps:
state_before: n : ℕ
⊢ antidiagonalTuple 2 n = map (fun i => ![i.1, i.2]) (antidiagonal n)
state_after: n : ℕ
⊢ ((antidiagonal n).bind fun ni => map (fun x => Fin.cons ni.1 x) (antidiagonalTuple 1 ni.2)) =
    map (fun i => ![i.1, i.2]) (antidiagonal n)
tactic: rw [antidiagonalTuple]
state_before: n : ℕ
⊢ ((antidiagonal n).bind fun ni => map (fun x => Fin.cons ni.1 x) (antidiagonalTuple 1 ni.2)) =
    map (fun i => ![i.1, i.2]) (antidiagonal n)
state_after: n : ℕ
⊢ ((antidiagonal n).bind fun ni => [Fin.cons ni.1 ![ni.2]]) = map (fun i => ![i.1, i.2]) (antidiagonal n)
tactic: simp_rw [antidiagonalTuple_one, List.map_singleton]
state_before: n : ℕ
⊢ ((antidiagonal n).bind fun ni => [Fin.cons ni.1 ![ni.2]]) = map (fun i => ![i.1, i.2]) (antidiagonal n)
state_after: n : ℕ
⊢ ((antidiagonal n).bind fun ni => [Fin.cons ni.1 ![ni.2]]) = (antidiagonal n).bind fun x => [![x.1, x.2]]
tactic: rw [List.map_eq_bind]
state_before: n : ℕ
⊢ ((antidiagonal n).bind fun ni => [Fin.cons ni.1 ![ni.2]]) = (antidiagonal n).bind fun x => [![x.1, x.2]]
state_after: no goals
tactic: rfl
Theorem: Quaternion.normSq_def'
File: Mathlib/Algebra/Quaternion.lean

Proof steps:
state_before: S : Type u_1
T : Type u_2
R : Type u_3
inst✝ : CommRing R
r x y z : R
a b c : ℍ[R]
⊢ normSq a = a.re ^ 2 + a.imI ^ 2 + a.imJ ^ 2 + a.imK ^ 2
state_after: no goals
tactic: simp only [normSq_def, sq, mul_neg, sub_neg_eq_add, mul_re, star_re, star_imI, star_imJ,
    star_imK]
Theorem: Polynomial.sub_one_pow_totient_lt_natAbs_cyclotomic_eval
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Eval.lean

Proof steps:
state_before: n q : ℕ
hn' : 1 < n
hq : q ≠ 1
⊢ (q - 1) ^ φ n < (eval (↑q) (cyclotomic n ℤ)).natAbs
state_after: case inl
n : ℕ
hn' : 1 < n
hq : 0 ≠ 1
⊢ (0 - 1) ^ φ n < (eval (↑0) (cyclotomic n ℤ)).natAbs

case inr
n q : ℕ
hn' : 1 < n
hq : q ≠ 1
hq' : 1 < q
⊢ (q - 1) ^ φ n < (eval (↑q) (cyclotomic n ℤ)).natAbs
tactic: rcases hq.lt_or_lt.imp_left Nat.lt_one_iff.mp with (rfl | hq')
state_before: case inr
n q : ℕ
hn' : 1 < n
hq : q ≠ 1
hq' : 1 < q
⊢ (q - 1) ^ φ n < (eval (↑q) (cyclotomic n ℤ)).natAbs
state_after: case inr
n q : ℕ
hn' : 1 < n
hq : q ≠ 1
hq' : 1 < q
⊢ (↑q - 1) ^ φ n < ↑|eval (↑q) (cyclotomic n ℤ)|
tactic: rw [← @Nat.cast_lt ℝ, Nat.cast_pow, Nat.cast_sub hq'.le, Nat.cast_one, Int.cast_natAbs]
state_before: case inr
n q : ℕ
hn' : 1 < n
hq : q ≠ 1
hq' : 1 < q
⊢ (↑q - 1) ^ φ n < ↑|eval (↑q) (cyclotomic n ℤ)|
state_after: case inr
n q : ℕ
hn' : 1 < n
hq : q ≠ 1
hq' : 1 < q
⊢ eval (↑q) (cyclotomic n ℝ) ≤ ↑|eval (↑q) (cyclotomic n ℤ)|
tactic: refine (sub_one_pow_totient_lt_cyclotomic_eval hn' (Nat.one_lt_cast.2 hq')).trans_le ?_
state_before: case inr
n q : ℕ
hn' : 1 < n
hq : q ≠ 1
hq' : 1 < q
⊢ eval (↑q) (cyclotomic n ℝ) ≤ ↑|eval (↑q) (cyclotomic n ℤ)|
state_after: case h.e'_4
n q : ℕ
hn' : 1 < n
hq : q ≠ 1
hq' : 1 < q
⊢ ↑|eval (↑q) (cyclotomic n ℤ)| = |(algebraMap ℤ ℝ) (eval (↑q) (cyclotomic n ℤ))|
tactic: convert (cyclotomic.eval_apply (q : ℤ) n (algebraMap ℤ ℝ)).trans_le (le_abs_self _)
state_before: case h.e'_4
n q : ℕ
hn' : 1 < n
hq : q ≠ 1
hq' : 1 < q
⊢ ↑|eval (↑q) (cyclotomic n ℤ)| = |(algebraMap ℤ ℝ) (eval (↑q) (cyclotomic n ℤ))|
state_after: no goals
tactic: simp
Theorem: LinearMap.mul_toMatrix₂_mul
File: Mathlib/LinearAlgebra/Matrix/SesquilinearForm.lean

Proof steps:
state_before: R : Type u_1
R₁ : Type u_2
S₁ : Type u_3
R₂ : Type u_4
S₂ : Type u_5
M✝ : Type u_6
M₁ : Type u_7
M₂ : Type u_8
M₁' : Type u_9
M₂' : Type u_10
N₂ : Type u_11
n : Type u_12
m : Type u_13
n' : Type u_14
m' : Type u_15
ι : Type u_16
inst✝¹⁸ : CommSemiring R
inst✝¹⁷ : AddCommMonoid M₁
inst✝¹⁶ : Module R M₁
inst✝¹⁵ : AddCommMonoid M₂
inst✝¹⁴ : Module R M₂
inst✝¹³ : AddCommMonoid N₂
inst✝¹² : Module R N₂
inst✝¹¹ : DecidableEq n
inst✝¹⁰ : Fintype n
inst✝⁹ : DecidableEq m
inst✝⁸ : Fintype m
b₁✝ : Basis n R M₁
b₂✝ : Basis m R M₂
b₁ : Basis n R M₁
b₂ : Basis m R M₂
inst✝⁷ : AddCommMonoid M₁'
inst✝⁶ : Module R M₁'
inst✝⁵ : AddCommMonoid M₂'
inst✝⁴ : Module R M₂'
b₁' : Basis n' R M₁'
b₂' : Basis m' R M₂'
inst✝³ : Fintype n'
inst✝² : Fintype m'
inst✝¹ : DecidableEq n'
inst✝ : DecidableEq m'
B : M₁ →ₗ[R] M₂ →ₗ[R] R
M : Matrix n' n R
N : Matrix m m' R
⊢ M * (toMatrix₂ b₁ b₂) B * N = (toMatrix₂ b₁' b₂') (B.compl₁₂ ((toLin b₁' b₁) Mᵀ) ((toLin b₂' b₂) N))
state_after: no goals
tactic: simp_rw [LinearMap.toMatrix₂_compl₁₂ b₁ b₂, toMatrix_toLin, transpose_transpose]
Theorem: Equiv.Perm.Disjoint.support_mul
File: Mathlib/GroupTheory/Perm/Support.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
h : f.Disjoint g
⊢ (f * g).support = f.support ∪ g.support
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
h : f.Disjoint g
a : α
⊢ a ∈ f.support ∪ g.support → a ∈ (f * g).support
tactic: refine le_antisymm (support_mul_le _ _) fun a => ?_
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
h : f.Disjoint g
a : α
⊢ a ∈ f.support ∪ g.support → a ∈ (f * g).support
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
h : f.Disjoint g
a : α
⊢ f (g a) = a → f a = a ∧ g a = a
tactic: rw [mem_union, mem_support, mem_support, mem_support, mul_apply, ← not_and_or, not_imp_not]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
h : f.Disjoint g
a : α
⊢ f (g a) = a → f a = a ∧ g a = a
state_after: no goals
tactic: exact
    (h a).elim (fun hf h => ⟨hf, f.apply_eq_iff_eq.mp (h.trans hf.symm)⟩) fun hg h =>
      ⟨(congr_arg f hg).symm.trans h, hg⟩
Theorem: CategoryTheory.Limits.IsLimit.conePointsIsoOfNatIso_inv
File: Mathlib/CategoryTheory/Limits/IsLimit.lean

Proof steps:
state_before: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F✝ : J ⥤ C
t✝ : Cone F✝
F G : J ⥤ C
s : Cone F
t : Cone G
P : IsLimit s
Q : IsLimit t
w : F ≅ G
⊢ ∀ (j : J), (map s Q w.hom ≫ map t P w.inv) ≫ s.π.app j = 𝟙 s.pt ≫ s.π.app j
state_after: no goals
tactic: aesop_cat
state_before: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F✝ : J ⥤ C
t✝ : Cone F✝
F G : J ⥤ C
s : Cone F
t : Cone G
P : IsLimit s
Q : IsLimit t
w : F ≅ G
⊢ ∀ (j : J), (map t P w.inv ≫ map s Q w.hom) ≫ t.π.app j = 𝟙 t.pt ≫ t.π.app j
state_after: no goals
tactic: aesop_cat
Theorem: MeasureTheory.Measure.measure_neg
File: Mathlib/MeasureTheory/Group/Measure.lean

Proof steps:
state_before: 𝕜 : Type u_1
G : Type u_2
H : Type u_3
inst✝⁴ : MeasurableSpace G
inst✝³ : MeasurableSpace H
inst✝² : InvolutiveInv G
inst✝¹ : MeasurableInv G
μ : Measure G
inst✝ : μ.IsInvInvariant
A : Set G
⊢ μ A⁻¹ = μ A
state_after: no goals
tactic: rw [← inv_apply, inv_eq_self]
Theorem: Function.pred_update
File: Mathlib/Logic/Function/Basic.lean

Proof steps:
state_before: α : Sort u
β : α → Sort v
α' : Sort w
inst✝¹ : DecidableEq α
inst✝ : DecidableEq α'
f✝ g : (a : α) → β a
a✝ : α
b : β a✝
P : ⦃a : α⦄ → β a → Prop
f : (a : α) → β a
a' : α
v : β a'
a : α
⊢ P (update f a' v a) ↔ a = a' ∧ P v ∨ a ≠ a' ∧ P (f a)
state_after: no goals
tactic: rw [apply_update P, update_apply, ite_prop_iff_or]
Theorem: JordanHolderLattice.isMaximal_of_eq_inf
File: Mathlib/Order/JordanHolder.lean

Proof steps:
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
x b a y : X
ha : x ⊓ y = a
hxy : x ≠ y
hxb : IsMaximal x b
hyb : IsMaximal y b
⊢ IsMaximal a y
state_after: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
x b a y : X
ha : x ⊓ y = a
hxy : x ≠ y
hxb : IsMaximal x b
hyb : IsMaximal y b
hb : x ⊔ y = b
⊢ IsMaximal a y
tactic: have hb : x ⊔ y = b := sup_eq_of_isMaximal hxb hyb hxy
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
x b a y : X
ha : x ⊓ y = a
hxy : x ≠ y
hxb : IsMaximal x b
hyb : IsMaximal y b
hb : x ⊔ y = b
⊢ IsMaximal a y
state_after: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
x y : X
hxy : x ≠ y
hxb : IsMaximal x (x ⊔ y)
hyb : IsMaximal y (x ⊔ y)
⊢ IsMaximal (x ⊓ y) y
tactic: substs a b
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
x y : X
hxy : x ≠ y
hxb : IsMaximal x (x ⊔ y)
hyb : IsMaximal y (x ⊔ y)
⊢ IsMaximal (x ⊓ y) y
state_after: no goals
tactic: exact isMaximal_inf_right_of_isMaximal_sup hxb hyb
Theorem: CategoryTheory.hasTerminal_of_isSeparating
File: Mathlib/CategoryTheory/Generator.lean

Proof steps:
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : WellPowered Cᵒᵖ
inst✝¹ : HasColimits C
𝒢 : Set C
inst✝ : Small.{v₁, u₁} ↑𝒢
h𝒢 : IsSeparating 𝒢
⊢ HasTerminal C
state_after: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : WellPowered Cᵒᵖ
inst✝¹ : HasColimits C
𝒢 : Set C
inst✝ : Small.{v₁, u₁} ↑𝒢
h𝒢 : IsSeparating 𝒢
this : Small.{v₁, u₁} ↑𝒢.op
⊢ HasTerminal C
tactic: haveI : Small.{v₁} 𝒢.op := small_of_injective (Set.opEquiv_self 𝒢).injective
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : WellPowered Cᵒᵖ
inst✝¹ : HasColimits C
𝒢 : Set C
inst✝ : Small.{v₁, u₁} ↑𝒢
h𝒢 : IsSeparating 𝒢
this : Small.{v₁, u₁} ↑𝒢.op
⊢ HasTerminal C
state_after: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : WellPowered Cᵒᵖ
inst✝¹ : HasColimits C
𝒢 : Set C
inst✝ : Small.{v₁, u₁} ↑𝒢
h𝒢 : IsSeparating 𝒢
this✝ : Small.{v₁, u₁} ↑𝒢.op
this : HasInitial Cᵒᵖ
⊢ HasTerminal C
tactic: haveI : HasInitial Cᵒᵖ := hasInitial_of_isCoseparating ((isCoseparating_op_iff _).2 h𝒢)
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
inst✝² : WellPowered Cᵒᵖ
inst✝¹ : HasColimits C
𝒢 : Set C
inst✝ : Small.{v₁, u₁} ↑𝒢
h𝒢 : IsSeparating 𝒢
this✝ : Small.{v₁, u₁} ↑𝒢.op
this : HasInitial Cᵒᵖ
⊢ HasTerminal C
state_after: no goals
tactic: exact hasTerminal_of_hasInitial_op
Theorem: Function.Periodic.map_vadd_zmultiples
File: Mathlib/Algebra/Periodic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x✝ : α
inst✝ : AddCommGroup α
hf : Periodic f c
a : ↥(AddSubgroup.zmultiples c)
x : α
⊢ f (a +ᵥ x) = f x
state_after: case mk.intro
α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x✝ : α
inst✝ : AddCommGroup α
hf : Periodic f c
x : α
m : ℤ
⊢ f (⟨(fun x => x • c) m, ⋯⟩ +ᵥ x) = f x
tactic: rcases a with ⟨_, m, rfl⟩
state_before: case mk.intro
α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x✝ : α
inst✝ : AddCommGroup α
hf : Periodic f c
x : α
m : ℤ
⊢ f (⟨(fun x => x • c) m, ⋯⟩ +ᵥ x) = f x
state_after: no goals
tactic: simp [AddSubgroup.vadd_def, add_comm _ x, hf.zsmul m x]
Theorem: AddCircle.homeomorphCircle'_symm_apply
File: Mathlib/Analysis/SpecialFunctions/Complex/Circle.lean

Proof steps:
state_before: T : ℝ
⊢ Continuous
    { toFun := Angle.expMapCircle, invFun := fun x => ↑(↑x).arg, left_inv := Angle.arg_expMapCircle,
        right_inv := expMapCircle_arg }.invFun
state_after: T : ℝ
⊢ ∀ (x : ↥circle),
    ContinuousAt
      { toFun := Angle.expMapCircle, invFun := fun x => ↑(↑x).arg, left_inv := Angle.arg_expMapCircle,
          right_inv := expMapCircle_arg }.invFun
      x
tactic: rw [continuous_iff_continuousAt]
state_before: T : ℝ
⊢ ∀ (x : ↥circle),
    ContinuousAt
      { toFun := Angle.expMapCircle, invFun := fun x => ↑(↑x).arg, left_inv := Angle.arg_expMapCircle,
          right_inv := expMapCircle_arg }.invFun
      x
state_after: T : ℝ
x : ↥circle
⊢ ContinuousAt
    { toFun := Angle.expMapCircle, invFun := fun x => ↑(↑x).arg, left_inv := Angle.arg_expMapCircle,
        right_inv := expMapCircle_arg }.invFun
    x
tactic: intro x
state_before: T : ℝ
x : ↥circle
⊢ ContinuousAt
    { toFun := Angle.expMapCircle, invFun := fun x => ↑(↑x).arg, left_inv := Angle.arg_expMapCircle,
        right_inv := expMapCircle_arg }.invFun
    x
state_after: no goals
tactic: apply (continuousAt_arg_coe_angle (ne_zero_of_mem_circle x)).comp
      continuousAt_subtype_val
Theorem: CategoryTheory.ShortComplex.ShortExact.ab_exact_iff_function_exact
File: Mathlib/Algebra/Homology/ShortComplex/Ab.lean

Proof steps:
state_before: S : ShortComplex Ab
⊢ S.Exact ↔ Function.Exact ⇑S.f ⇑S.g
state_after: S : ShortComplex Ab
⊢ AddMonoidHom.range S.f = AddMonoidHom.ker S.g ↔ AddMonoidHom.ker S.g = AddMonoidHom.range S.f
tactic: rw [ab_exact_iff_range_eq_ker, AddMonoidHom.exact_iff]
state_before: S : ShortComplex Ab
⊢ AddMonoidHom.range S.f = AddMonoidHom.ker S.g ↔ AddMonoidHom.ker S.g = AddMonoidHom.range S.f
state_after: no goals
tactic: tauto
Theorem: MeasurableSet.pi
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t✝ u : Set α
π : δ → Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : (a : δ) → MeasurableSpace (π a)
inst✝ : MeasurableSpace γ
s : Set δ
t : (i : δ) → Set (π i)
hs : s.Countable
ht : ∀ i ∈ s, MeasurableSet (t i)
⊢ MeasurableSet (s.pi t)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t✝ u : Set α
π : δ → Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : (a : δ) → MeasurableSpace (π a)
inst✝ : MeasurableSpace γ
s : Set δ
t : (i : δ) → Set (π i)
hs : s.Countable
ht : ∀ i ∈ s, MeasurableSet (t i)
⊢ MeasurableSet (⋂ a ∈ s, eval a ⁻¹' t a)
tactic: rw [pi_def]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t✝ u : Set α
π : δ → Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : (a : δ) → MeasurableSpace (π a)
inst✝ : MeasurableSpace γ
s : Set δ
t : (i : δ) → Set (π i)
hs : s.Countable
ht : ∀ i ∈ s, MeasurableSet (t i)
⊢ MeasurableSet (⋂ a ∈ s, eval a ⁻¹' t a)
state_after: no goals
tactic: exact MeasurableSet.biInter hs fun i hi => measurable_pi_apply _ (ht i hi)
Theorem: AnalyticAt.aeval_mvPolynomial
File: Mathlib/Analysis/Analytic/Polynomial.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
A : Type u_3
B : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : CommSemiring A
z : E
s : Set E
inst✝² : NormedCommRing B
inst✝¹ : NormedAlgebra 𝕜 B
inst✝ : Algebra A B
σ : Type u_5
f : E → σ → B
hf : ∀ (i : σ), AnalyticAt 𝕜 (fun x => f x i) z
p : MvPolynomial σ A
⊢ AnalyticAt 𝕜 (fun x => (aeval (f x)) p) z
state_after: 𝕜 : Type u_1
E : Type u_2
A : Type u_3
B : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : CommSemiring A
z : E
s : Set E
inst✝² : NormedCommRing B
inst✝¹ : NormedAlgebra 𝕜 B
inst✝ : Algebra A B
σ : Type u_5
f : E → σ → B
hf : ∀ (i : σ), AnalyticAt 𝕜 (fun x => f x i) z
p : MvPolynomial σ A
k : A
⊢ AnalyticAt 𝕜 (fun x => (aeval (f x)) (C k)) z

𝕜 : Type u_1
E : Type u_2
A : Type u_3
B : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : CommSemiring A
z : E
s : Set E
inst✝² : NormedCommRing B
inst✝¹ : NormedAlgebra 𝕜 B
inst✝ : Algebra A B
σ : Type u_5
f : E → σ → B
hf : ∀ (i : σ), AnalyticAt 𝕜 (fun x => f x i) z
p✝ p q : MvPolynomial σ A
hp : AnalyticAt 𝕜 (fun x => (aeval (f x)) p) z
hq : AnalyticAt 𝕜 (fun x => (aeval (f x)) q) z
⊢ AnalyticAt 𝕜 (fun x => (aeval (f x)) (p + q)) z

𝕜 : Type u_1
E : Type u_2
A : Type u_3
B : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : CommSemiring A
z : E
s : Set E
inst✝² : NormedCommRing B
inst✝¹ : NormedAlgebra 𝕜 B
inst✝ : Algebra A B
σ : Type u_5
f : E → σ → B
hf : ∀ (i : σ), AnalyticAt 𝕜 (fun x => f x i) z
p✝ p : MvPolynomial σ A
i : σ
hp : AnalyticAt 𝕜 (fun x => (aeval (f x)) p) z
⊢ AnalyticAt 𝕜 (fun x => (aeval (f x)) (p * X i)) z
tactic: apply p.induction_on (fun k ↦ ?_) (fun p q hp hq ↦ ?_) fun p i hp ↦ ?_
Theorem: List.zipWith_flip
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : α → β → γ
a : α
as : List α
b : β
bs : List β
⊢ zipWith (flip f) (b :: bs) (a :: as) = zipWith f (a :: as) (b :: bs)
state_after: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : α → β → γ
a : α
as : List α
b : β
bs : List β
⊢ flip f b a = f a b
tactic: simp! [zipWith_flip]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
f : α → β → γ
a : α
as : List α
b : β
bs : List β
⊢ flip f b a = f a b
state_after: no goals
tactic: rfl
Theorem: Seminorm.ball_add_ball_subset
File: Mathlib/Analysis/Seminorm.lean

Proof steps:
state_before: R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝² : SeminormedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : SMul 𝕜 E
p✝ : Seminorm 𝕜 E
x y : E
r : ℝ
p : Seminorm 𝕜 E
r₁ r₂ : ℝ
x₁ x₂ : E
⊢ p.ball x₁ r₁ + p.ball x₂ r₂ ⊆ p.ball (x₁ + x₂) (r₁ + r₂)
state_after: case intro.intro.intro.intro
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝² : SeminormedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : SMul 𝕜 E
p✝ : Seminorm 𝕜 E
x y : E
r : ℝ
p : Seminorm 𝕜 E
r₁ r₂ : ℝ
x₁ x₂ y₁ : E
hy₁ : y₁ ∈ p.ball x₁ r₁
y₂ : E
hy₂ : y₂ ∈ p.ball x₂ r₂
⊢ (fun x x_1 => x + x_1) y₁ y₂ ∈ p.ball (x₁ + x₂) (r₁ + r₂)
tactic: rintro x ⟨y₁, hy₁, y₂, hy₂, rfl⟩
state_before: case intro.intro.intro.intro
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝² : SeminormedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : SMul 𝕜 E
p✝ : Seminorm 𝕜 E
x y : E
r : ℝ
p : Seminorm 𝕜 E
r₁ r₂ : ℝ
x₁ x₂ y₁ : E
hy₁ : y₁ ∈ p.ball x₁ r₁
y₂ : E
hy₂ : y₂ ∈ p.ball x₂ r₂
⊢ (fun x x_1 => x + x_1) y₁ y₂ ∈ p.ball (x₁ + x₂) (r₁ + r₂)
state_after: case intro.intro.intro.intro
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝² : SeminormedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : SMul 𝕜 E
p✝ : Seminorm 𝕜 E
x y : E
r : ℝ
p : Seminorm 𝕜 E
r₁ r₂ : ℝ
x₁ x₂ y₁ : E
hy₁ : y₁ ∈ p.ball x₁ r₁
y₂ : E
hy₂ : y₂ ∈ p.ball x₂ r₂
⊢ p (y₁ - x₁ + (y₂ - x₂)) < r₁ + r₂
tactic: rw [mem_ball, add_sub_add_comm]
state_before: case intro.intro.intro.intro
R : Type u_1
R' : Type u_2
𝕜 : Type u_3
𝕜₂ : Type u_4
𝕜₃ : Type u_5
𝕝 : Type u_6
E : Type u_7
E₂ : Type u_8
E₃ : Type u_9
F : Type u_10
G : Type u_11
ι : Type u_12
inst✝² : SeminormedRing 𝕜
inst✝¹ : AddCommGroup E
inst✝ : SMul 𝕜 E
p✝ : Seminorm 𝕜 E
x y : E
r : ℝ
p : Seminorm 𝕜 E
r₁ r₂ : ℝ
x₁ x₂ y₁ : E
hy₁ : y₁ ∈ p.ball x₁ r₁
y₂ : E
hy₂ : y₂ ∈ p.ball x₂ r₂
⊢ p (y₁ - x₁ + (y₂ - x₂)) < r₁ + r₂
state_after: no goals
tactic: exact (map_add_le_add p _ _).trans_lt (add_lt_add hy₁ hy₂)
Theorem: Nat.totient_mul_of_prime_of_dvd
File: Mathlib/Data/Nat/Totient.lean

Proof steps:
state_before: p n : ℕ
hp : Prime p
h : p ∣ n
⊢ φ (p * n) = p * φ n
state_after: p n : ℕ
hp : Prime p
h : p ∣ n
h1 : φ (p.gcd n) * φ (p * n) = φ p * φ n * p.gcd n
⊢ φ (p * n) = p * φ n
tactic: have h1 := totient_gcd_mul_totient_mul p n
state_before: p n : ℕ
hp : Prime p
h : p ∣ n
h1 : φ (p.gcd n) * φ (p * n) = φ p * φ n * p.gcd n
⊢ φ (p * n) = p * φ n
state_after: p n : ℕ
hp : Prime p
h : p ∣ n
h1 : φ p * φ (p * n) = φ p * (φ n * p)
⊢ φ (p * n) = p * φ n
tactic: rw [gcd_eq_left h, mul_assoc] at h1
state_before: p n : ℕ
hp : Prime p
h : p ∣ n
h1 : φ p * φ (p * n) = φ p * (φ n * p)
⊢ φ (p * n) = p * φ n
state_after: no goals
tactic: simpa [(totient_pos.2 hp.pos).ne', mul_comm] using h1
Theorem: AlgebraicGeometry.Scheme.affineBasisCover_map_range
File: Mathlib/AlgebraicGeometry/Cover/Open.lean

Proof steps:
state_before: X✝ Y Z : Scheme
𝒰 : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰.J), HasPullback (𝒰.map x ≫ f) g
X : Scheme
x : ↑↑X.toPresheafedSpace
r : ↑⋯.choose
⊢ Set.range ⇑(X.affineBasisCover.map ⟨x, r⟩).val.base =
    ⇑(X.affineCover.map x).val.base '' (PrimeSpectrum.basicOpen r).carrier
state_after: X✝ Y Z : Scheme
𝒰 : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰.J), HasPullback (𝒰.map x ≫ f) g
X : Scheme
x : ↑↑X.toPresheafedSpace
r : ↑⋯.choose
⊢ ⇑(X.affineCover.map ⟨x, r⟩.fst).val.base ''
      Set.range ⇑(((fun x => affineBasisCoverOfAffine ⋯.choose) ⟨x, r⟩.fst).map ⟨x, r⟩.snd).val.base =
    ⇑(X.affineCover.map x).val.base '' (PrimeSpectrum.basicOpen r).carrier
tactic: erw [coe_comp, Set.range_comp]
state_before: X✝ Y Z : Scheme
𝒰 : X✝.OpenCover
f : X✝ ⟶ Z
g : Y ⟶ Z
inst✝ : ∀ (x : 𝒰.J), HasPullback (𝒰.map x ≫ f) g
X : Scheme
x : ↑↑X.toPresheafedSpace
r : ↑⋯.choose
⊢ Set.range ⇑(((fun x => affineBasisCoverOfAffine ⋯.choose) ⟨x, r⟩.fst).map ⟨x, r⟩.snd).val.base =
    (PrimeSpectrum.basicOpen r).carrier
state_after: no goals
tactic: exact (PrimeSpectrum.localization_away_comap_range (Localization.Away r) r : _)
Theorem: CategoryTheory.Limits.biprod.add_eq_lift_desc_id
File: Mathlib/CategoryTheory/Preadditive/Biproducts.lean

Proof steps:
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : Preadditive C
X Y : C
f g : X ⟶ Y
inst✝ : HasBinaryBiproduct Y Y
⊢ f + g = lift f g ≫ desc (𝟙 Y) (𝟙 Y)
state_after: no goals
tactic: simp
Theorem: Zsqrtd.intCast_dvd
File: Mathlib/NumberTheory/Zsqrtd/Basic.lean

Proof steps:
state_before: d z : ℤ
a : ℤ√d
⊢ ↑z ∣ a ↔ z ∣ a.re ∧ z ∣ a.im
state_after: case mp
d z : ℤ
a : ℤ√d
⊢ ↑z ∣ a → z ∣ a.re ∧ z ∣ a.im

case mpr
d z : ℤ
a : ℤ√d
⊢ z ∣ a.re ∧ z ∣ a.im → ↑z ∣ a
tactic: constructor