ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: polynomialFunctions.eq_adjoin_X
File: Mathlib/Topology/ContinuousFunction/Polynomial.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
s : Set R
⊢ polynomialFunctions s = Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}
state_after: R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
s : Set R
⊢ polynomialFunctions s ≤ Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}
tactic: refine le_antisymm ?_
    (Algebra.adjoin_le fun _ h => ⟨X, trivial, (Set.mem_singleton_iff.1 h).symm⟩)
state_before: R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
s : Set R
⊢ polynomialFunctions s ≤ Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}
state_after: case intro.intro
R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
s : Set R
p : R[X]
⊢ ↑(toContinuousMapOnAlgHom s) p ∈ Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}
tactic: rintro - ⟨p, -, rfl⟩
state_before: case intro.intro
R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
s : Set R
p : R[X]
⊢ ↑(toContinuousMapOnAlgHom s) p ∈ Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}
state_after: case intro.intro
R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
s : Set R
p : R[X]
⊢ (toContinuousMapOnAlgHom s) p ∈ Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}
tactic: rw [AlgHom.coe_toRingHom]
state_before: case intro.intro
R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
s : Set R
p : R[X]
⊢ (toContinuousMapOnAlgHom s) p ∈ Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}
state_after: case intro.intro.refine_1
R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
s : Set R
p : R[X]
r : R
⊢ (toContinuousMapOnAlgHom s) (Polynomial.C r) ∈ Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}

case intro.intro.refine_2
R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
s : Set R
p f g : R[X]
hf : (toContinuousMapOnAlgHom s) f ∈ Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}
hg : (toContinuousMapOnAlgHom s) g ∈ Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}
⊢ (toContinuousMapOnAlgHom s) (f + g) ∈ Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}

case intro.intro.refine_3
R : Type u_1
inst✝² : CommSemiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
s : Set R
p : R[X]
n : ℕ
r : R
hn : (toContinuousMapOnAlgHom s) (Polynomial.C r * X ^ n) ∈ Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}
⊢ (toContinuousMapOnAlgHom s) (Polynomial.C r * X ^ (n + 1)) ∈ Algebra.adjoin R {(toContinuousMapOnAlgHom s) X}
tactic: refine p.induction_on (fun r => ?_) (fun f g hf hg => ?_) fun n r hn => ?_
Theorem: MulChar.IsNontrivial.comp
File: Mathlib/NumberTheory/MulChar/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
χ : MulChar R R'
hχ : χ.IsNontrivial
f : R' →+* R''
hf : Function.Injective ⇑f
⊢ (χ.ringHomComp f).IsNontrivial
state_after: case intro
R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
χ : MulChar R R'
f : R' →+* R''
hf : Function.Injective ⇑f
a : Rˣ
ha : χ ↑a ≠ 1
⊢ (χ.ringHomComp f).IsNontrivial
tactic: obtain ⟨a, ha⟩ := hχ
state_before: case intro
R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
χ : MulChar R R'
f : R' →+* R''
hf : Function.Injective ⇑f
a : Rˣ
ha : χ ↑a ≠ 1
⊢ (χ.ringHomComp f).IsNontrivial
state_after: case h
R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
χ : MulChar R R'
f : R' →+* R''
hf : Function.Injective ⇑f
a : Rˣ
ha : χ ↑a ≠ 1
⊢ (χ.ringHomComp f) ↑a ≠ 1
tactic: use a
state_before: case h
R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
χ : MulChar R R'
f : R' →+* R''
hf : Function.Injective ⇑f
a : Rˣ
ha : χ ↑a ≠ 1
⊢ (χ.ringHomComp f) ↑a ≠ 1
state_after: case h
R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
χ : MulChar R R'
f : R' →+* R''
hf : Function.Injective ⇑f
a : Rˣ
ha : χ ↑a ≠ 1
⊢ f (χ ↑a) ≠ f 1
tactic: simp_rw [ringHomComp_apply, ← RingHom.map_one f]
state_before: case h
R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
χ : MulChar R R'
f : R' →+* R''
hf : Function.Injective ⇑f
a : Rˣ
ha : χ ↑a ≠ 1
⊢ f (χ ↑a) ≠ f 1
state_after: no goals
tactic: exact fun h => ha (hf h)
Theorem: CategoryTheory.FinitaryPreExtensive.isUniversal_finiteCoproducts
File: Mathlib/CategoryTheory/Extensive.lean

Proof steps:
state_before: J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryPreExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
⊢ IsUniversalColimit c
state_after: case intro.intro
J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryPreExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
n : ℕ
e : ι ≃ Fin n
⊢ IsUniversalColimit c
tactic: obtain ⟨n, ⟨e⟩⟩ := Finite.exists_equiv_fin ι
state_before: case intro.intro
J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryPreExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
n : ℕ
e : ι ≃ Fin n
⊢ IsUniversalColimit c
state_after: case intro.intro
J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryPreExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
n : ℕ
e : ι ≃ Fin n
⊢ IsUniversalColimit (Cocone.whisker (Discrete.equivalence e).symm.functor c)
tactic: apply (IsUniversalColimit.whiskerEquivalence_iff (Discrete.equivalence e).symm).mp
state_before: case intro.intro
J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryPreExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
n : ℕ
e : ι ≃ Fin n
⊢ IsUniversalColimit (Cocone.whisker (Discrete.equivalence e).symm.functor c)
state_after: case intro.intro.hc
J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryPreExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
n : ℕ
e : ι ≃ Fin n
⊢ IsColimit (Cocone.whisker (Discrete.equivalence e).symm.functor c)
tactic: apply FinitaryPreExtensive.isUniversal_finiteCoproducts_Fin
state_before: case intro.intro.hc
J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryPreExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
n : ℕ
e : ι ≃ Fin n
⊢ IsColimit (Cocone.whisker (Discrete.equivalence e).symm.functor c)
state_after: no goals
tactic: exact (IsColimit.whiskerEquivalenceEquiv (Discrete.equivalence e).symm) hc
Theorem: negPart_neg
File: Mathlib/Algebra/Order/Group/PosPart.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Lattice α
inst✝ : Group α
a✝ a : α
⊢ a⁻¹⁻ᵐ = a⁺ᵐ
state_after: no goals
tactic: simp [oneLePart, leOnePart]
Theorem: Finset.inter_singleton_of_mem
File: Mathlib/Data/Finset/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ s₁ s₂ t t₁ t₂ u v : Finset α
a✝ b a : α
s : Finset α
h : a ∈ s
⊢ s ∩ {a} = {a}
state_after: no goals
tactic: rw [inter_comm, singleton_inter_of_mem h]
Theorem: SemiconjBy.zero_left
File: Mathlib/Algebra/GroupWithZero/Semiconj.lean

Proof steps:
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : MulZeroClass G₀
x y : G₀
⊢ SemiconjBy 0 x y
state_after: no goals
tactic: simp only [SemiconjBy, mul_zero, zero_mul]
Theorem: Comon_.Comon_ToMon_OpOp_obj'_mul
File: Mathlib/CategoryTheory/Monoidal/Comon_.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M A : Comon_ C
⊢ A.counit.op ▷ op A.X ≫ A.comul.op = (λ_ (op A.X)).hom
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M A : Comon_ C
⊢ (λ_ A.X).inv.op = (λ_ (op A.X)).hom
tactic: rw [← op_whiskerRight, ← op_comp, counit_comul]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M A : Comon_ C
⊢ (λ_ A.X).inv.op = (λ_ (op A.X)).hom
state_after: no goals
tactic: rfl
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M A : Comon_ C
⊢ op A.X ◁ A.counit.op ≫ A.comul.op = (ρ_ (op A.X)).hom
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M A : Comon_ C
⊢ (ρ_ A.X).inv.op = (ρ_ (op A.X)).hom
tactic: rw [← op_whiskerLeft, ← op_comp, comul_counit]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M A : Comon_ C
⊢ (ρ_ A.X).inv.op = (ρ_ (op A.X)).hom
state_after: no goals
tactic: rfl
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M A : Comon_ C
⊢ A.comul.op ▷ op A.X ≫ A.comul.op = (α_ (op A.X) (op A.X) (op A.X)).hom ≫ op A.X ◁ A.comul.op ≫ A.comul.op
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M A : Comon_ C
⊢ (α_ A.X A.X A.X).inv.op ≫ (A.X ◁ A.comul).op ≫ A.comul.op = (α_ A.X A.X A.X).inv.op ≫ (A.comul ≫ A.X ◁ A.comul).op
tactic: rw [← op_inv_associator, ← op_whiskerRight, ← op_comp, ← op_whiskerLeft, ← op_comp,
      comul_assoc_flip, op_comp, op_comp_assoc]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
M A : Comon_ C
⊢ (α_ A.X A.X A.X).inv.op ≫ (A.X ◁ A.comul).op ≫ A.comul.op = (α_ A.X A.X A.X).inv.op ≫ (A.comul ≫ A.X ◁ A.comul).op
state_after: no goals
tactic: rfl
Theorem: AlgebraicGeometry.IsClosedImmersion.iff_isPreimmersion
File: Mathlib/AlgebraicGeometry/Morphisms/ClosedImmersion.lean

Proof steps:
state_before: X Y : Scheme
f : X ⟶ Y
⊢ IsClosedImmersion f ↔ IsPreimmersion f ∧ IsClosed (Set.range ⇑f.val.base)
state_after: no goals
tactic: rw [and_comm, isClosedImmersion_iff, isPreimmersion_iff, ← and_assoc, closedEmbedding_iff,
    @and_comm (Embedding _)]
Theorem: Polynomial.algEquivAevalXAddC_symm_apply
File: Mathlib/Algebra/Polynomial/AlgebraMap.lean

Proof steps:
state_before: R✝ : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R✝
n : ℕ
inst✝⁷ : CommSemiring R✝
inst✝⁶ : Semiring A
inst✝⁵ : CommSemiring A'
inst✝⁴ : Semiring B
inst✝³ : Algebra R✝ A
inst✝² : Algebra R✝ A'
inst✝¹ : Algebra R✝ B
p q : R✝[X]
x : A
R : Type ?u.88197
inst✝ : CommRing R
t : R
⊢ (X + C t).comp (X - C t) = X
state_after: no goals
tactic: simp
state_before: R✝ : Type u
S : Type v
T : Type w
A : Type z
A' : Type u_1
B : Type u_2
a b : R✝
n : ℕ
inst✝⁷ : CommSemiring R✝
inst✝⁶ : Semiring A
inst✝⁵ : CommSemiring A'
inst✝⁴ : Semiring B
inst✝³ : Algebra R✝ A
inst✝² : Algebra R✝ A'
inst✝¹ : Algebra R✝ B
p q : R✝[X]
x : A
R : Type ?u.88197
inst✝ : CommRing R
t : R
⊢ (X - C t).comp (X + C t) = X
state_after: no goals
tactic: simp
Theorem: Mathlib.Tactic.RingNF.rat_rawCast_neg
File: Mathlib/Tactic/Ring/RingNF.lean

Proof steps:
state_before: R✝ : Type u_1
inst✝¹ : CommSemiring R✝
n d : ℕ
R : Type u_2
inst✝ : DivisionRing R
⊢ Rat.rawCast (Int.negOfNat n) d = (Int.negOfNat n).rawCast / d.rawCast
state_after: no goals
tactic: simp
Theorem: Polynomial.eval_eq_sum_range
File: Mathlib/Algebra/Polynomial/Eval.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p✝ q r : R[X]
x✝ : R
p : R[X]
x : R
⊢ eval x p = ∑ i ∈ range (p.natDegree + 1), p.coeff i * x ^ i
state_after: case h
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p✝ q r : R[X]
x✝ : R
p : R[X]
x : R
⊢ ∀ (n : ℕ), 0 * x ^ n = 0
tactic: rw [eval_eq_sum, sum_over_range]
state_before: case h
R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p✝ q r : R[X]
x✝ : R
p : R[X]
x : R
⊢ ∀ (n : ℕ), 0 * x ^ n = 0
state_after: no goals
tactic: simp
Theorem: IsPreconnected.infinite_of_nontrivial
File: Mathlib/Topology/Separation.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
s : Set X
h : IsPreconnected s
hs : s.Nontrivial
⊢ s.Infinite
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
s : Set X
h : IsPreconnected s
hs : s.Nontrivial
hf : s.Finite
⊢ Subsingleton ↑s
tactic: refine mt (fun hf => (subsingleton_coe s).mp ?_) (not_subsingleton_iff.mpr hs)
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
s : Set X
h : IsPreconnected s
hs : s.Nontrivial
hf : s.Finite
⊢ Subsingleton ↑s
state_after: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
s : Set X
h : IsPreconnected s
hs : s.Nontrivial
hf : s.Finite
this : DiscreteTopology ↑s
⊢ Subsingleton ↑s
tactic: haveI := @Finite.instDiscreteTopology s _ _ hf.to_subtype
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : T1Space X
s : Set X
h : IsPreconnected s
hs : s.Nontrivial
hf : s.Finite
this : DiscreteTopology ↑s
⊢ Subsingleton ↑s
state_after: no goals
tactic: exact @PreconnectedSpace.trivial_of_discrete _ _ (Subtype.preconnectedSpace h) _
Theorem: CategoryTheory.IsPushout.of_map_of_faithful
File: Mathlib/CategoryTheory/Limits/Shapes/Pullback/CommSq.lean

Proof steps:
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
F : C ⥤ D
W X Y Z : C
f : W ⟶ X
g : W ⟶ Y
h : X ⟶ Z
i : Y ⟶ Z
inst✝¹ : ReflectsColimit (span f g) F
inst✝ : F.Faithful
H : IsPushout (F.map f) (F.map g) (F.map h) (F.map i)
⊢ F.map (f ≫ h) = F.map (g ≫ i)
state_after: no goals
tactic: simpa only [F.map_comp] using H.w
Theorem: Equiv.Perm.card_support_le_one
File: Mathlib/GroupTheory/Perm/Support.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g f : Perm α
⊢ f.support.card ≤ 1 ↔ f = 1
state_after: no goals
tactic: rw [le_iff_lt_or_eq, Nat.lt_succ_iff, Nat.le_zero, card_support_eq_zero, or_iff_not_imp_right,
    imp_iff_right f.card_support_ne_one]
Theorem: CategoryTheory.Subobject.mk_eq_of_comm
File: Mathlib/CategoryTheory/Subobject/Basic.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
X✝ Y Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
B A : C
X : Subobject B
f : A ⟶ B
inst✝ : Mono f
i : A ≅ underlying.obj X
w : i.hom ≫ X.arrow = f
⊢ i.symm.hom ≫ f = X.arrow
state_after: no goals
tactic: rw [Iso.symm_hom, Iso.inv_comp_eq, w]
Theorem: StarSubalgebra.mem_sInf
File: Mathlib/Algebra/Star/Subalgebra.lean

Proof steps:
state_before: F : Type u_1
R : Type u_2
A : Type u_3
B : Type u_4
inst✝⁹ : CommSemiring R
inst✝⁸ : StarRing R
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
inst✝⁵ : StarRing A
inst✝⁴ : StarModule R A
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : StarModule R B
S : Set (StarSubalgebra R A)
x : A
⊢ x ∈ sInf S ↔ ∀ p ∈ S, x ∈ p
state_after: no goals
tactic: simp only [← SetLike.mem_coe, coe_sInf, Set.mem_iInter₂]
Theorem: List.exists_lt_of_prod_lt'
File: Mathlib/Algebra/Order/BigOperators/Group/List.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
P : Type u_5
M₀ : Type u_6
G : Type u_7
R : Type u_8
inst✝³ : Monoid M
inst✝² : LinearOrder M
inst✝¹ : CovariantClass M M (Function.swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
l : List ι
f g : ι → M
h : (map f l).prod < (map g l).prod
⊢ ∃ i ∈ l, f i < g i
state_after: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
P : Type u_5
M₀ : Type u_6
G : Type u_7
R : Type u_8
inst✝³ : Monoid M
inst✝² : LinearOrder M
inst✝¹ : CovariantClass M M (Function.swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
l : List ι
f g : ι → M
h : ∀ i ∈ l, g i ≤ f i
⊢ (map g l).prod ≤ (map f l).prod
tactic: contrapose! h
state_before: ι : Type u_1
α : Type u_2
M : Type u_3
N : Type u_4
P : Type u_5
M₀ : Type u_6
G : Type u_7
R : Type u_8
inst✝³ : Monoid M
inst✝² : LinearOrder M
inst✝¹ : CovariantClass M M (Function.swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
l : List ι
f g : ι → M
h : ∀ i ∈ l, g i ≤ f i
⊢ (map g l).prod ≤ (map f l).prod
state_after: no goals
tactic: exact prod_le_prod' h
Theorem: Finset.truncatedSup_of_isAntichain
File: Mathlib/Combinatorics/SetFamily/AhlswedeZhang.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝⁶ : SemilatticeSup α
inst✝⁵ : OrderTop α
inst✝⁴ : DecidableRel fun x x_1 => x ≤ x_1
inst✝³ : SemilatticeSup β
inst✝² : BoundedOrder β
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a b : α
inst✝ : DecidableEq α
hs : IsAntichain (fun x x_1 => x ≤ x_1) ↑s
ha : a ∈ s
⊢ s.truncatedSup a = a
state_after: α : Type u_1
β : Type u_2
inst✝⁶ : SemilatticeSup α
inst✝⁵ : OrderTop α
inst✝⁴ : DecidableRel fun x x_1 => x ≤ x_1
inst✝³ : SemilatticeSup β
inst✝² : BoundedOrder β
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a b : α
inst✝ : DecidableEq α
hs : IsAntichain (fun x x_1 => x ≤ x_1) ↑s
ha : a ∈ s
⊢ s.truncatedSup a ≤ a
tactic: refine le_antisymm ?_ le_truncatedSup
state_before: α : Type u_1
β : Type u_2
inst✝⁶ : SemilatticeSup α
inst✝⁵ : OrderTop α
inst✝⁴ : DecidableRel fun x x_1 => x ≤ x_1
inst✝³ : SemilatticeSup β
inst✝² : BoundedOrder β
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a b : α
inst✝ : DecidableEq α
hs : IsAntichain (fun x x_1 => x ≤ x_1) ↑s
ha : a ∈ s
⊢ s.truncatedSup a ≤ a
state_after: α : Type u_1
β : Type u_2
inst✝⁶ : SemilatticeSup α
inst✝⁵ : OrderTop α
inst✝⁴ : DecidableRel fun x x_1 => x ≤ x_1
inst✝³ : SemilatticeSup β
inst✝² : BoundedOrder β
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a b : α
inst✝ : DecidableEq α
hs : IsAntichain (fun x x_1 => x ≤ x_1) ↑s
ha : a ∈ s
⊢ ∀ (b : α), b ∈ s ∧ a ≤ b → id b ≤ a
tactic: simp_rw [truncatedSup_of_mem (subset_lowerClosure ha), sup'_le_iff, mem_filter]
state_before: α : Type u_1
β : Type u_2
inst✝⁶ : SemilatticeSup α
inst✝⁵ : OrderTop α
inst✝⁴ : DecidableRel fun x x_1 => x ≤ x_1
inst✝³ : SemilatticeSup β
inst✝² : BoundedOrder β
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a b : α
inst✝ : DecidableEq α
hs : IsAntichain (fun x x_1 => x ≤ x_1) ↑s
ha : a ∈ s
⊢ ∀ (b : α), b ∈ s ∧ a ≤ b → id b ≤ a
state_after: case intro
α : Type u_1
β : Type u_2
inst✝⁶ : SemilatticeSup α
inst✝⁵ : OrderTop α
inst✝⁴ : DecidableRel fun x x_1 => x ≤ x_1
inst✝³ : SemilatticeSup β
inst✝² : BoundedOrder β
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a b✝ : α
inst✝ : DecidableEq α
hs : IsAntichain (fun x x_1 => x ≤ x_1) ↑s
ha : a ∈ s
b : α
hb : b ∈ s
hab : a ≤ b
⊢ id b ≤ a
tactic: rintro b ⟨hb, hab⟩
state_before: case intro
α : Type u_1
β : Type u_2
inst✝⁶ : SemilatticeSup α
inst✝⁵ : OrderTop α
inst✝⁴ : DecidableRel fun x x_1 => x ≤ x_1
inst✝³ : SemilatticeSup β
inst✝² : BoundedOrder β
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s t : Finset α
a b✝ : α
inst✝ : DecidableEq α
hs : IsAntichain (fun x x_1 => x ≤ x_1) ↑s
ha : a ∈ s
b : α
hb : b ∈ s
hab : a ≤ b
⊢ id b ≤ a
state_after: no goals
tactic: exact (hs.eq ha hb hab).ge
Theorem: Polynomial.zero_comp
File: Mathlib/Algebra/Polynomial/Eval.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝ : Semiring R
p q r : R[X]
⊢ comp 0 p = 0
state_after: no goals
tactic: rw [← C_0, C_comp]
Theorem: ultrafilter_converges_iff
File: Mathlib/Topology/StoneCech.lean

Proof steps:
state_before: α : Type u
u : Ultrafilter (Ultrafilter α)
x : Ultrafilter α
⊢ ↑u ≤ 𝓝 x ↔ x = joinM u
state_after: α : Type u
u : Ultrafilter (Ultrafilter α)
x : Ultrafilter α
⊢ ↑u ≤ 𝓝 x ↔ ↑(joinM u) ≤ ↑x
tactic: rw [eq_comm, ← Ultrafilter.coe_le_coe]
state_before: α : Type u
u : Ultrafilter (Ultrafilter α)
x : Ultrafilter α
⊢ ↑u ≤ 𝓝 x ↔ ↑(joinM u) ≤ ↑x
state_after: α : Type u
u : Ultrafilter (Ultrafilter α)
x : Ultrafilter α
⊢ ↑u ≤ 𝓝 x ↔ ∀ s ∈ x, {v | s ∈ v} ∈ u
tactic: change ↑u ≤ 𝓝 x ↔ ∀ s ∈ x, { v : Ultrafilter α | s ∈ v } ∈ u
state_before: α : Type u
u : Ultrafilter (Ultrafilter α)
x : Ultrafilter α
⊢ ↑u ≤ 𝓝 x ↔ ∀ s ∈ x, {v | s ∈ v} ∈ u
state_after: α : Type u
u : Ultrafilter (Ultrafilter α)
x : Ultrafilter α
⊢ (∀ (i : Set (Ultrafilter α)), (x ∈ i ∧ i ∈ range fun s => {u | s ∈ u}) → i ∈ ↑u) ↔ ∀ s ∈ x, {v | s ∈ v} ∈ u
tactic: simp only [TopologicalSpace.nhds_generateFrom, le_iInf_iff, ultrafilterBasis, le_principal_iff,
    mem_setOf_eq]
state_before: α : Type u
u : Ultrafilter (Ultrafilter α)
x : Ultrafilter α
⊢ (∀ (i : Set (Ultrafilter α)), (x ∈ i ∧ i ∈ range fun s => {u | s ∈ u}) → i ∈ ↑u) ↔ ∀ s ∈ x, {v | s ∈ v} ∈ u
state_after: case mp
α : Type u
u : Ultrafilter (Ultrafilter α)
x : Ultrafilter α
⊢ (∀ (i : Set (Ultrafilter α)), (x ∈ i ∧ i ∈ range fun s => {u | s ∈ u}) → i ∈ ↑u) → ∀ s ∈ x, {v | s ∈ v} ∈ u

case mpr
α : Type u
u : Ultrafilter (Ultrafilter α)
x : Ultrafilter α
⊢ (∀ s ∈ x, {v | s ∈ v} ∈ u) → ∀ (i : Set (Ultrafilter α)), (x ∈ i ∧ i ∈ range fun s => {u | s ∈ u}) → i ∈ ↑u
tactic: constructor
Theorem: MeasureTheory.tilted_eq_withDensity_nnreal
File: Mathlib/MeasureTheory/Measure/Tilted.lean

Proof steps:
state_before: α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f✝ : α → ℝ
μ : Measure α
f : α → ℝ
x : α
⊢ 0 ≤ rexp (f x) / ∫ (x : α), rexp (f x) ∂μ
state_after: no goals
tactic: positivity
state_before: α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f✝ : α → ℝ
μ : Measure α
f : α → ℝ
⊢ μ.tilted f = μ.withDensity fun x => ↑⟨rexp (f x) / ∫ (x : α), rexp (f x) ∂μ, ⋯⟩
state_after: α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f✝ : α → ℝ
μ : Measure α
f : α → ℝ
⊢ (μ.withDensity fun x => ENNReal.ofReal (rexp (f x) / ∫ (x : α), rexp (f x) ∂μ)) =
    μ.withDensity fun x => ↑⟨rexp (f x) / ∫ (x : α), rexp (f x) ∂μ, ⋯⟩
tactic: rw [Measure.tilted]
state_before: α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f✝ : α → ℝ
μ : Measure α
f : α → ℝ
⊢ (μ.withDensity fun x => ENNReal.ofReal (rexp (f x) / ∫ (x : α), rexp (f x) ∂μ)) =
    μ.withDensity fun x => ↑⟨rexp (f x) / ∫ (x : α), rexp (f x) ∂μ, ⋯⟩
state_after: case e_f.h
α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f✝ : α → ℝ
μ : Measure α
f : α → ℝ
x : α
⊢ ENNReal.ofReal (rexp (f x) / ∫ (x : α), rexp (f x) ∂μ) = ↑⟨rexp (f x) / ∫ (x : α), rexp (f x) ∂μ, ⋯⟩
tactic: congr with x
state_before: case e_f.h
α : Type u_1
mα : MeasurableSpace α
μ✝ : Measure α
f✝ : α → ℝ
μ : Measure α
f : α → ℝ
x : α
⊢ ENNReal.ofReal (rexp (f x) / ∫ (x : α), rexp (f x) ∂μ) = ↑⟨rexp (f x) / ∫ (x : α), rexp (f x) ∂μ, ⋯⟩
state_after: no goals
tactic: rw [ENNReal.ofReal_eq_coe_nnreal]