ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- Cardinal.mk_equiv_of_lift_eq
theorem mk_equiv_of_lift_eq (leq : lift.{v} #α = lift.{u} #β') : #(α ≃ β') = 2 ^ lift.{v} #α 
Arguments: {α : Type u} {β' : Type v} [Infinite α] (leq : Cardinal.lift.{v, u} #α = Cardinal.lift.{u, v} #β')
Goal: #(α ≃ β') = 2 ^ Cardinal.lift.{v, u} #α
-- Cardinal.mk_equiv_of_eq
theorem mk_equiv_of_eq (eq : #α = #β) : #(α ≃ β) = 2 ^ #α 
Arguments: {α β : Type u} [Infinite α] (eq : #α = #β)
Goal: #(α ≃ β) = 2 ^ #α
-- Cardinal.mk_embedding_eq_arrow_of_lift_le
theorem mk_embedding_eq_arrow_of_lift_le (lle : lift.{u} #β' ≤ lift.{v} #α) :
    #(β' ↪ α) = #(β' → α) 
Arguments: {α : Type u} {β' : Type v} [Infinite α] (lle : Cardinal.lift.{u, v} #β' ≤ Cardinal.lift.{v, u} #α)
Goal: #(β' ↪ α) = #(β' → α)
-- Cardinal.mk_embedding_eq_arrow_of_le
theorem mk_embedding_eq_arrow_of_le (le : #β ≤ #α) : #(β ↪ α) = #(β → α) 
Arguments: {α β : Type u} [Infinite α] (le : #β ≤ #α)
Goal: #(β ↪ α) = #(β → α)
-- Cardinal.mk_surjective_eq_arrow_of_lift_le
theorem mk_surjective_eq_arrow_of_lift_le (lle : lift.{u} #β' ≤ lift.{v} #α) :
    #{f : α → β' | Surjective f} = #(α → β') 
Arguments: {α : Type u} {β' : Type v} [Infinite α] (lle : Cardinal.lift.{u, v} #β' ≤ Cardinal.lift.{v, u} #α)
Goal: #↑{f | Function.Surjective f} = #(α → β')
-- Cardinal.mk_surjective_eq_arrow_of_le
theorem mk_surjective_eq_arrow_of_le (le : #β ≤ #α) : #{f : α → β | Surjective f} = #(α → β) 
Arguments: {α β : Type u} [Infinite α] (le : #β ≤ #α)
Goal: #↑{f | Function.Surjective f} = #(α → β)
-- Cardinal.mk_list_eq_mk
@[simp]
theorem mk_list_eq_mk (α : Type u) [Infinite α] : #(List α) = #α 
Arguments: (α : Type u) [Infinite α]
Goal: #(List α) = #α
-- Cardinal.mk_list_eq_aleph0
theorem mk_list_eq_aleph0 (α : Type u) [Countable α] [Nonempty α] : #(List α) = ℵ₀ 
Arguments: (α : Type u) [Countable α] [Nonempty α]
Goal: #(List α) = ℵ₀
-- Cardinal.mk_list_eq_max_mk_aleph0
theorem mk_list_eq_max_mk_aleph0 (α : Type u) [Nonempty α] : #(List α) = max #α ℵ₀ 
Arguments: (α : Type u) [Nonempty α]
Goal: #(List α) = max #α ℵ₀
-- Cardinal.mk_list_le_max
theorem mk_list_le_max (α : Type u) : #(List α) ≤ max ℵ₀ #α 
Arguments: (α : Type u)
Goal: #(List α) ≤ max ℵ₀ #α
-- Cardinal.mk_finset_of_infinite
@[simp]
theorem mk_finset_of_infinite (α : Type u) [Infinite α] : #(Finset α) = #α 
Arguments: (α : Type u) [Infinite α]
Goal: #(Finset α) = #α
-- Cardinal.mk_finsupp_lift_of_infinite
@[simp]
theorem mk_finsupp_lift_of_infinite (α : Type u) (β : Type v) [Infinite α] [Zero β] [Nontrivial β] :
    #(α →₀ β) = max (lift.{v} #α) (lift.{u} #β) 
Arguments: (α : Type u) (β : Type v) [Infinite α] [Zero β] [Nontrivial β]
Goal: #(α →₀ β) = max (Cardinal.lift.{v, u} #α) (Cardinal.lift.{u, v} #β)
-- Cardinal.mk_finsupp_of_infinite
theorem mk_finsupp_of_infinite (α β : Type u) [Infinite α] [Zero β] [Nontrivial β] :
    #(α →₀ β) = max #α #β 
Arguments: (α β : Type u) [Infinite α] [Zero β] [Nontrivial β]
Goal: #(α →₀ β) = max #α #β
-- Cardinal.mk_finsupp_lift_of_infinite'
@[simp]
theorem mk_finsupp_lift_of_infinite' (α : Type u) (β : Type v) [Nonempty α] [Zero β] [Infinite β] :
    #(α →₀ β) = max (lift.{v} #α) (lift.{u} #β) 
Arguments: (α : Type u) (β : Type v) [Nonempty α] [Zero β] [Infinite β]
Goal: #(α →₀ β) = max (Cardinal.lift.{v, u} #α) (Cardinal.lift.{u, v} #β)
-- Cardinal.mk_finsupp_of_infinite'
theorem mk_finsupp_of_infinite' (α β : Type u) [Nonempty α] [Zero β] [Infinite β] :
    #(α →₀ β) = max #α #β 
Arguments: (α β : Type u) [Nonempty α] [Zero β] [Infinite β]
Goal: #(α →₀ β) = max #α #β
-- Cardinal.mk_finsupp_nat
theorem mk_finsupp_nat (α : Type u) [Nonempty α] : #(α →₀ ℕ) = max #α ℵ₀ 
Arguments: (α : Type u) [Nonempty α]
Goal: #(α →₀ ℕ) = max #α ℵ₀
-- Cardinal.mk_multiset_of_nonempty
@[simp]
theorem mk_multiset_of_nonempty (α : Type u) [Nonempty α] : #(Multiset α) = max #α ℵ₀ 
Arguments: (α : Type u) [Nonempty α]
Goal: #(Multiset α) = max #α ℵ₀
-- Cardinal.mk_multiset_of_infinite
theorem mk_multiset_of_infinite (α : Type u) [Infinite α] : #(Multiset α) = #α 
Arguments: (α : Type u) [Infinite α]
Goal: #(Multiset α) = #α
-- Cardinal.mk_multiset_of_isEmpty
theorem mk_multiset_of_isEmpty (α : Type u) [IsEmpty α] : #(Multiset α) = 1 
Arguments: (α : Type u) [IsEmpty α]
Goal: #(Multiset α) = 1
-- Cardinal.mk_multiset_of_countable
theorem mk_multiset_of_countable (α : Type u) [Countable α] [Nonempty α] : #(Multiset α) = ℵ₀ 
Arguments: (α : Type u) [Countable α] [Nonempty α]
Goal: #(Multiset α) = ℵ₀
-- Cardinal.mk_bounded_set_le_of_infinite
theorem mk_bounded_set_le_of_infinite (α : Type u) [Infinite α] (c : Cardinal) :
    #{ t : Set α // #t ≤ c } ≤ #α ^ c 
Arguments: (α : Type u) [Infinite α] (c : Cardinal.{u})
Goal: #{ t // #↑t ≤ c } ≤ #α ^ c
-- Cardinal.mk_bounded_set_le
theorem mk_bounded_set_le (α : Type u) (c : Cardinal) :
    #{ t : Set α // #t ≤ c } ≤ max #α ℵ₀ ^ c 
Arguments: (α : Type u) (c : Cardinal.{u})
Goal: #{ t // #↑t ≤ c } ≤ max #α ℵ₀ ^ c
-- Cardinal.mk_bounded_subset_le
theorem mk_bounded_subset_le {α : Type u} (s : Set α) (c : Cardinal.{u}) :
    #{ t : Set α // t ⊆ s ∧ #t ≤ c } ≤ max #s ℵ₀ ^ c 
Arguments: {α : Type u} (s : Set α) (c : Cardinal.{u})
Goal: #{ t // t ⊆ s ∧ #↑t ≤ c } ≤ max #↑s ℵ₀ ^ c
-- Cardinal.mk_compl_of_infinite
theorem mk_compl_of_infinite {α : Type*} [Infinite α] (s : Set α) (h2 : #s < #α) :
    #(sᶜ : Set α) = #α 
Arguments: {α : Type u_1} [Infinite α] (s : Set α) (h2 : #↑s < #α)
Goal: #↑sᶜ = #α
-- Cardinal.mk_compl_finset_of_infinite
theorem mk_compl_finset_of_infinite {α : Type*} [Infinite α] (s : Finset α) :
    #((↑s)ᶜ : Set α) = #α 
Arguments: {α : Type u_1} [Infinite α] (s : Finset α)
Goal: #↑(↑s)ᶜ = #α
-- Cardinal.mk_compl_eq_mk_compl_infinite
theorem mk_compl_eq_mk_compl_infinite {α : Type*} [Infinite α] {s t : Set α} (hs : #s < #α)
    (ht : #t < #α) : #(sᶜ : Set α) = #(tᶜ : Set α) 
Arguments: {α : Type u_1} [Infinite α] {s t : Set α} (hs : #↑s < #α) (ht : #↑t < #α)
Goal: #↑sᶜ = #↑tᶜ
-- Cardinal.mk_compl_eq_mk_compl_finite_lift
theorem mk_compl_eq_mk_compl_finite_lift {α : Type u} {β : Type v} [Finite α] {s : Set α}
    {t : Set β} (h1 : (lift.{max v w, u} #α) = (lift.{max u w, v} #β))
    (h2 : lift.{max v w, u} #s = lift.{max u w, v} #t) :
    lift.{max v w} #(sᶜ : Set α) = lift.{max u w} #(tᶜ : Set β) 
Arguments: {α : Type u} {β : Type v} [Finite α] {s : Set α} {t : Set β} (h1 : Cardinal.lift.{max v w, u} #α = Cardinal.lift.{max u w, v} #β) (h2 : Cardinal.lift.{max v w, u} #↑s = Cardinal.lift.{max u w, v} #↑t)
Goal: Cardinal.lift.{max v w, u} #↑sᶜ = Cardinal.lift.{max u w, v} #↑tᶜ
-- Cardinal.mk_compl_eq_mk_compl_finite
theorem mk_compl_eq_mk_compl_finite {α β : Type u} [Finite α] {s : Set α} {t : Set β}
    (h1 : #α = #β) (h : #s = #t) : #(sᶜ : Set α) = #(tᶜ : Set β) 
Arguments: {α β : Type u} [Finite α] {s : Set α} {t : Set β} (h1 : #α = #β) (h : #↑s = #↑t)
Goal: #↑sᶜ = #↑tᶜ
-- Cardinal.mk_compl_eq_mk_compl_finite_same
theorem mk_compl_eq_mk_compl_finite_same {α : Type u} [Finite α] {s t : Set α} (h : #s = #t) :
    #(sᶜ : Set α) = #(tᶜ : Set α) 
Arguments: {α : Type u} [Finite α] {s t : Set α} (h : #↑s = #↑t)
Goal: #↑sᶜ = #↑tᶜ
-- Cardinal.extend_function
theorem extend_function {α β : Type*} {s : Set α} (f : s ↪ β)
    (h : Nonempty ((sᶜ : Set α) ≃ ((range f)ᶜ : Set β))) : ∃ g : α ≃ β, ∀ x : s, g x = f x 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} (f : ↑s ↪ β) (h : Nonempty (↑sᶜ ≃ ↑(Set.range ⇑f)ᶜ))
Goal: ∃ g, ∀ (x : ↑s), g ↑x = f x
-- Cardinal.extend_function_finite
theorem extend_function_finite {α : Type u} {β : Type v} [Finite α] {s : Set α} (f : s ↪ β)
    (h : Nonempty (α ≃ β)) : ∃ g : α ≃ β, ∀ x : s, g x = f x 
Arguments: {α : Type u} {β : Type v} [Finite α] {s : Set α} (f : ↑s ↪ β) (h : Nonempty (α ≃ β))
Goal: ∃ g, ∀ (x : ↑s), g ↑x = f x
-- Cardinal.extend_function_of_lt
theorem extend_function_of_lt {α β : Type*} {s : Set α} (f : s ↪ β) (hs : #s < #α)
    (h : Nonempty (α ≃ β)) : ∃ g : α ≃ β, ∀ x : s, g x = f x 
Arguments: {α : Type u_1} {β : Type u_2} {s : Set α} (f : ↑s ↪ β) (hs : #↑s < #α) (h : Nonempty (α ≃ β))
Goal: ∃ g, ∀ (x : ↑s), g ↑x = f x
-- Ordinal.omega_lt_omega1
lemma omega_lt_omega1 : ω < ω₁ 
Goal: ω < (Cardinal.aleph 1).ord
-- Ordinal.Cardinal.mk_iUnion_Ordinal_le_of_le
lemma mk_iUnion_Ordinal_le_of_le {β : Type*} {o : Ordinal} {c : Cardinal}
    (ho : o.card ≤ c) (hc : ℵ₀ ≤ c) (A : Ordinal → Set β)
    (hA : ∀ j < o, #(A j) ≤ c) :
    #(⋃ j < o, A j) ≤ c 
Arguments: {β : Type u_1} {o : Ordinal.{u_1}} {c : Cardinal.{u_1}} (ho : o.card ≤ c) (hc : ℵ₀ ≤ c) (A : Ordinal.{u_1} → Set β) (hA : ∀ j < o, #↑(A j) ≤ c)
Goal: #↑(⋃ j, ⋃ (_ : j < o), A j) ≤ c
-- Surreal.Multiplication.P3_comm
lemma P3_comm : P3 x₁ x₂ y₁ y₂ ↔ P3 y₁ y₂ x₁ x₂ 
Arguments: {x₁ x₂ y₁ y₂ : SetTheory.PGame}
Goal: Surreal.Multiplication.P3 x₁ x₂ y₁ y₂ ↔ Surreal.Multiplication.P3 y₁ y₂ x₁ x₂
-- Surreal.Multiplication.P3.trans
lemma P3.trans (h₁ : P3 x₁ x₂ y₁ y₂) (h₂ : P3 x₂ x₃ y₁ y₂) : P3 x₁ x₃ y₁ y₂ 
Arguments: {x₁ x₂ x₃ y₁ y₂ : SetTheory.PGame} (h₁ : Surreal.Multiplication.P3 x₁ x₂ y₁ y₂) (h₂ : Surreal.Multiplication.P3 x₂ x₃ y₁ y₂)
Goal: Surreal.Multiplication.P3 x₁ x₃ y₁ y₂
-- Surreal.Multiplication.P3_neg
lemma P3_neg : P3 x₁ x₂ y₁ y₂ ↔ P3 (-x₂) (-x₁) y₁ y₂ 
Arguments: {x₁ x₂ y₁ y₂ : SetTheory.PGame}
Goal: Surreal.Multiplication.P3 x₁ x₂ y₁ y₂ ↔ Surreal.Multiplication.P3 (-x₂) (-x₁) y₁ y₂
-- Surreal.Multiplication.P2_neg_left
lemma P2_neg_left : P2 x₁ x₂ y ↔ P2 (-x₂) (-x₁) y 
Arguments: {x₁ x₂ y : SetTheory.PGame}
Goal: Surreal.Multiplication.P2 x₁ x₂ y ↔ Surreal.Multiplication.P2 (-x₂) (-x₁) y
-- Surreal.Multiplication.P2_neg_right
lemma P2_neg_right : P2 x₁ x₂ y ↔ P2 x₁ x₂ (-y) 
Arguments: {x₁ x₂ y : SetTheory.PGame}
Goal: Surreal.Multiplication.P2 x₁ x₂ y ↔ Surreal.Multiplication.P2 x₁ x₂ (-y)
-- Surreal.Multiplication.P4_neg_left
lemma P4_neg_left : P4 x₁ x₂ y ↔ P4 (-x₂) (-x₁) y 
Arguments: {x₁ x₂ y : SetTheory.PGame}
Goal: Surreal.Multiplication.P4 x₁ x₂ y ↔ Surreal.Multiplication.P4 (-x₂) (-x₁) y
-- Surreal.Multiplication.P4_neg_right
lemma P4_neg_right : P4 x₁ x₂ y ↔ P4 x₁ x₂ (-y) 
Arguments: {x₁ x₂ y : SetTheory.PGame}
Goal: Surreal.Multiplication.P4 x₁ x₂ y ↔ Surreal.Multiplication.P4 x₁ x₂ (-y)
-- Surreal.Multiplication.P24_neg_left
lemma P24_neg_left : P24 x₁ x₂ y ↔ P24 (-x₂) (-x₁) y 
Arguments: {x₁ x₂ y : SetTheory.PGame}
Goal: Surreal.Multiplication.P24 x₁ x₂ y ↔ Surreal.Multiplication.P24 (-x₂) (-x₁) y
-- Surreal.Multiplication.P24_neg_right
lemma P24_neg_right : P24 x₁ x₂ y ↔ P24 x₁ x₂ (-y) 
Arguments: {x₁ x₂ y : SetTheory.PGame}
Goal: Surreal.Multiplication.P24 x₁ x₂ y ↔ Surreal.Multiplication.P24 x₁ x₂ (-y)
-- Surreal.Multiplication.mulOption_lt_iff_P1
lemma mulOption_lt_iff_P1 {i j k l} :
    (⟦mulOption x y i k⟧ : Game) < -⟦mulOption x (-y) j l⟧ ↔
    P1 (x.moveLeft i) x (x.moveLeft j) y (y.moveLeft k) (-(-y).moveLeft l) 
Arguments: {x y : SetTheory.PGame} {i j : x.LeftMoves} {k : y.LeftMoves} {l : (-y).LeftMoves}
Goal: ⟦x.mulOption y i k⟧ < -⟦x.mulOption (-y) j l⟧ ↔
  Surreal.Multiplication.P1 (x.moveLeft i) x (x.moveLeft j) y (y.moveLeft k) (-(-y).moveLeft l)
-- Surreal.Multiplication.mulOption_lt_mul_iff_P3
lemma mulOption_lt_mul_iff_P3 {i j} :
    ⟦mulOption x y i j⟧ < (⟦x * y⟧ : Game) ↔ P3 (x.moveLeft i) x (y.moveLeft j) y 
Arguments: {x y : SetTheory.PGame} {i : x.LeftMoves} {j : y.LeftMoves}
Goal: ⟦x.mulOption y i j⟧ < ⟦x * y⟧ ↔ Surreal.Multiplication.P3 (x.moveLeft i) x (y.moveLeft j) y
-- Surreal.Multiplication.P1_of_eq
lemma P1_of_eq (he : x₁ ≈ x₃) (h₁ : P2 x₁ x₃ y₁) (h₃ : P2 x₁ x₃ y₃) (h3 : P3 x₁ x₂ y₂ y₃) :
    P1 x₁ x₂ x₃ y₁ y₂ y₃ 
Arguments: {x₁ x₂ x₃ y₁ y₂ y₃ : SetTheory.PGame} (he : x₁ ≈ x₃) (h₁ : Surreal.Multiplication.P2 x₁ x₃ y₁) (h₃ : Surreal.Multiplication.P2 x₁ x₃ y₃) (h3 : Surreal.Multiplication.P3 x₁ x₂ y₂ y₃)
Goal: Surreal.Multiplication.P1 x₁ x₂ x₃ y₁ y₂ y₃
-- Surreal.Multiplication.P1_of_lt
lemma P1_of_lt (h₁ : P3 x₃ x₂ y₂ y₃) (h₂ : P3 x₁ x₃ y₂ y₁) : P1 x₁ x₂ x₃ y₁ y₂ y₃ 
Arguments: {x₁ x₂ x₃ y₁ y₂ y₃ : SetTheory.PGame} (h₁ : Surreal.Multiplication.P3 x₃ x₂ y₂ y₃) (h₂ : Surreal.Multiplication.P3 x₁ x₃ y₂ y₁)
Goal: Surreal.Multiplication.P1 x₁ x₂ x₃ y₁ y₂ y₃
-- Surreal.Multiplication.Args.numeric_P1
lemma Args.numeric_P1 {x y} : (Args.P1 x y).Numeric ↔ x.Numeric ∧ y.Numeric 
Arguments: {x y : SetTheory.PGame}
Goal: (Surreal.Multiplication.Args.P1 x y).Numeric ↔ x.Numeric ∧ y.Numeric
-- Surreal.Multiplication.Args.numeric_P24
lemma Args.numeric_P24 {x₁ x₂ y} :
    (Args.P24 x₁ x₂ y).Numeric ↔ x₁.Numeric ∧ x₂.Numeric ∧ y.Numeric 
Arguments: {x₁ x₂ y : SetTheory.PGame}
Goal: (Surreal.Multiplication.Args.P24 x₁ x₂ y).Numeric ↔ x₁.Numeric ∧ x₂.Numeric ∧ y.Numeric
-- Surreal.Multiplication.argsRel_wf
theorem argsRel_wf : WellFounded ArgsRel 
Goal: WellFounded Surreal.Multiplication.ArgsRel
-- Surreal.Multiplication.ArgsRel.numeric_closed
lemma ArgsRel.numeric_closed {a' a} : ArgsRel a' a → a.Numeric → a'.Numeric 
Arguments: {a' a : Surreal.Multiplication.Args}
Goal: Surreal.Multiplication.ArgsRel a' a → a.Numeric → a'.Numeric
-- Surreal.Multiplication.ih1_neg_left
lemma ih1_neg_left : IH1 x y → IH1 (-x) y 
Arguments: {x y : SetTheory.PGame}
Goal: Surreal.Multiplication.IH1 x y → Surreal.Multiplication.IH1 (-x) y
-- Surreal.Multiplication.ih1_neg_right
lemma ih1_neg_right : IH1 x y → IH1 x (-y) 
Arguments: {x y : SetTheory.PGame}
Goal: Surreal.Multiplication.IH1 x y → Surreal.Multiplication.IH1 x (-y)
-- Surreal.Multiplication.numeric_option_mul
lemma numeric_option_mul (ih : ∀ a, ArgsRel a (Args.P1 x y) → P124 a) (h : IsOption x' x) :
    (x' * y).Numeric 
Arguments: {x x' y : SetTheory.PGame} (ih :
  ∀ (a : Surreal.Multiplication.Args),
    Surreal.Multiplication.ArgsRel a (Surreal.Multiplication.Args.P1 x y) → Surreal.Multiplication.P124 a) (h : x'.IsOption x)
Goal: (x' * y).Numeric
-- Surreal.Multiplication.numeric_mul_option
lemma numeric_mul_option (ih : ∀ a, ArgsRel a (Args.P1 x y) → P124 a) (h : IsOption y' y) :
    (x * y').Numeric 
Arguments: {x y y' : SetTheory.PGame} (ih :
  ∀ (a : Surreal.Multiplication.Args),
    Surreal.Multiplication.ArgsRel a (Surreal.Multiplication.Args.P1 x y) → Surreal.Multiplication.P124 a) (h : y'.IsOption y)
Goal: (x * y').Numeric
-- Surreal.Multiplication.numeric_option_mul_option
lemma numeric_option_mul_option (ih : ∀ a, ArgsRel a (Args.P1 x y) → P124 a) (hx : IsOption x' x)
    (hy : IsOption y' y) : (x' * y').Numeric 
Arguments: {x x' y y' : SetTheory.PGame} (ih :
  ∀ (a : Surreal.Multiplication.Args),
    Surreal.Multiplication.ArgsRel a (Surreal.Multiplication.Args.P1 x y) → Surreal.Multiplication.P124 a) (hx : x'.IsOption x) (hy : y'.IsOption y)
Goal: (x' * y').Numeric
-- Surreal.Multiplication.ih1
lemma ih1 (ih : ∀ a, ArgsRel a (Args.P1 x y) → P124 a) : IH1 x y 
Arguments: {x y : SetTheory.PGame} (ih :
  ∀ (a : Surreal.Multiplication.Args),
    Surreal.Multiplication.ArgsRel a (Surreal.Multiplication.Args.P1 x y) → Surreal.Multiplication.P124 a)
Goal: Surreal.Multiplication.IH1 x y
-- Surreal.Multiplication.ih1_swap
lemma ih1_swap (ih : ∀ a, ArgsRel a (Args.P1 x y) → P124 a) : IH1 y x 
Arguments: {x y : SetTheory.PGame} (ih :
  ∀ (a : Surreal.Multiplication.Args),
    Surreal.Multiplication.ArgsRel a (Surreal.Multiplication.Args.P1 x y) → Surreal.Multiplication.P124 a)
Goal: Surreal.Multiplication.IH1 y x
-- Surreal.Multiplication.P3_of_ih
lemma P3_of_ih (hy : Numeric y) (ihyx : IH1 y x) (i k l) :
    P3 (x.moveLeft i) x (y.moveLeft k) (-(-y).moveLeft l) 
Arguments: {x y : SetTheory.PGame} (hy : y.Numeric) (ihyx : Surreal.Multiplication.IH1 y x) (i : x.LeftMoves) (k : y.LeftMoves) (l : (-y).LeftMoves)
Goal: Surreal.Multiplication.P3 (x.moveLeft i) x (y.moveLeft k) (-(-y).moveLeft l)
-- Surreal.Multiplication.P24_of_ih
lemma P24_of_ih (ihxy : IH1 x y) (i j) : P24 (x.moveLeft i) (x.moveLeft j) y 
Arguments: {x y : SetTheory.PGame} (ihxy : Surreal.Multiplication.IH1 x y) (i j : x.LeftMoves)
Goal: Surreal.Multiplication.P24 (x.moveLeft i) (x.moveLeft j) y
-- Surreal.Multiplication.mulOption_lt_of_lt
lemma mulOption_lt_of_lt (hy : y.Numeric) (ihxy : IH1 x y) (ihyx : IH1 y x) (i j k l)
    (h : x.moveLeft i < x.moveLeft j) :
    (⟦mulOption x y i k⟧ : Game) < -⟦mulOption x (-y) j l⟧ 
Arguments: {x y : SetTheory.PGame} (hy : y.Numeric) (ihxy : Surreal.Multiplication.IH1 x y) (ihyx : Surreal.Multiplication.IH1 y x) (i j : x.LeftMoves) (k : y.LeftMoves) (l : (-y).LeftMoves) (h : x.moveLeft i < x.moveLeft j)
Goal: ⟦x.mulOption y i k⟧ < -⟦x.mulOption (-y) j l⟧
-- Surreal.Multiplication.mulOption_lt
lemma mulOption_lt (hx : x.Numeric) (hy : y.Numeric) (ihxy : IH1 x y) (ihyx : IH1 y x) (i j k l) :
    (⟦mulOption x y i k⟧ : Game) < -⟦mulOption x (-y) j l⟧ 
Arguments: {x y : SetTheory.PGame} (hx : x.Numeric) (hy : y.Numeric) (ihxy : Surreal.Multiplication.IH1 x y) (ihyx : Surreal.Multiplication.IH1 y x) (i j : x.LeftMoves) (k : y.LeftMoves) (l : (-y).LeftMoves)
Goal: ⟦x.mulOption y i k⟧ < -⟦x.mulOption (-y) j l⟧
-- Surreal.Multiplication.P1_of_ih
theorem P1_of_ih (ih : ∀ a, ArgsRel a (Args.P1 x y) → P124 a) (hx : x.Numeric) (hy : y.Numeric) :
    (x * y).Numeric 
Arguments: {x y : SetTheory.PGame} (ih :
  ∀ (a : Surreal.Multiplication.Args),
    Surreal.Multiplication.ArgsRel a (Surreal.Multiplication.Args.P1 x y) → Surreal.Multiplication.P124 a) (hx : x.Numeric) (hy : y.Numeric)
Goal: (x * y).Numeric
-- Surreal.Multiplication.ih₁₂
lemma ih₁₂ (ih' : ∀ a, ArgsRel a (Args.P24 x₁ x₂ y) → P124 a) : IH24 x₁ x₂ y 
Arguments: {x₁ x₂ y : SetTheory.PGame} (ih' :
  ∀ (a : Surreal.Multiplication.Args),
    Surreal.Multiplication.ArgsRel a (Surreal.Multiplication.Args.P24 x₁ x₂ y) → Surreal.Multiplication.P124 a)
Goal: Surreal.Multiplication.IH24 x₁ x₂ y
-- Surreal.Multiplication.ih₂₁
lemma ih₂₁ (ih' : ∀ a, ArgsRel a (Args.P24 x₁ x₂ y) → P124 a) : IH24 x₂ x₁ y 
Arguments: {x₁ x₂ y : SetTheory.PGame} (ih' :
  ∀ (a : Surreal.Multiplication.Args),
    Surreal.Multiplication.ArgsRel a (Surreal.Multiplication.Args.P24 x₁ x₂ y) → Surreal.Multiplication.P124 a)
Goal: Surreal.Multiplication.IH24 x₂ x₁ y
-- Surreal.Multiplication.ih4
lemma ih4 (ih' : ∀ a, ArgsRel a (Args.P24 x₁ x₂ y) → P124 a) : IH4 x₁ x₂ y 
Arguments: {x₁ x₂ y : SetTheory.PGame} (ih' :
  ∀ (a : Surreal.Multiplication.Args),
    Surreal.Multiplication.ArgsRel a (Surreal.Multiplication.Args.P24 x₁ x₂ y) → Surreal.Multiplication.P124 a)
Goal: Surreal.Multiplication.IH4 x₁ x₂ y
-- Surreal.Multiplication.numeric_of_ih
lemma numeric_of_ih (ih' : ∀ a, ArgsRel a (Args.P24 x₁ x₂ y) → P124 a) :
    (x₁ * y).Numeric ∧ (x₂ * y).Numeric 
Arguments: {x₁ x₂ y : SetTheory.PGame} (ih' :
  ∀ (a : Surreal.Multiplication.Args),
    Surreal.Multiplication.ArgsRel a (Surreal.Multiplication.Args.P24 x₁ x₂ y) → Surreal.Multiplication.P124 a)
Goal: (x₁ * y).Numeric ∧ (x₂ * y).Numeric
-- Surreal.Multiplication.ih24_neg
lemma ih24_neg : IH24 x₁ x₂ y → IH24 (-x₂) (-x₁) y ∧ IH24 x₁ x₂ (-y) 
Arguments: {x₁ x₂ y : SetTheory.PGame}
Goal: Surreal.Multiplication.IH24 x₁ x₂ y → Surreal.Multiplication.IH24 (-x₂) (-x₁) y ∧ Surreal.Multiplication.IH24 x₁ x₂ (-y)
-- Surreal.Multiplication.ih4_neg
lemma ih4_neg : IH4 x₁ x₂ y → IH4 (-x₂) (-x₁) y ∧ IH4 x₁ x₂ (-y) 
Arguments: {x₁ x₂ y : SetTheory.PGame}
Goal: Surreal.Multiplication.IH4 x₁ x₂ y → Surreal.Multiplication.IH4 (-x₂) (-x₁) y ∧ Surreal.Multiplication.IH4 x₁ x₂ (-y)
-- Surreal.Multiplication.mulOption_lt_mul_of_equiv
lemma mulOption_lt_mul_of_equiv (hn : x₁.Numeric) (h : IH24 x₁ x₂ y) (he : x₁ ≈ x₂) (i j) :
    ⟦mulOption x₁ y i j⟧ < (⟦x₂ * y⟧ : Game) 
Arguments: {x₁ x₂ y : SetTheory.PGame} (hn : x₁.Numeric) (h : Surreal.Multiplication.IH24 x₁ x₂ y) (he : x₁ ≈ x₂) (i : x₁.LeftMoves) (j : y.LeftMoves)
Goal: ⟦x₁.mulOption y i j⟧ < ⟦x₂ * y⟧
-- Surreal.Multiplication.mul_right_le_of_equiv
theorem mul_right_le_of_equiv (h₁ : x₁.Numeric) (h₂ : x₂.Numeric)
    (h₁₂ : IH24 x₁ x₂ y) (h₂₁ : IH24 x₂ x₁ y) (he : x₁ ≈ x₂) : x₁ * y ≤ x₂ * y 
Arguments: {x₁ x₂ y : SetTheory.PGame} (h₁ : x₁.Numeric) (h₂ : x₂.Numeric) (h₁₂ : Surreal.Multiplication.IH24 x₁ x₂ y) (h₂₁ : Surreal.Multiplication.IH24 x₂ x₁ y) (he : x₁ ≈ x₂)
Goal: x₁ * y ≤ x₂ * y
-- Surreal.Multiplication.mulOptionsLTMul_of_numeric
lemma mulOptionsLTMul_of_numeric (hn : (x * y).Numeric) :
    (MulOptionsLTMul x y ∧ MulOptionsLTMul (-x) (-y)) ∧
    (MulOptionsLTMul x (-y) ∧ MulOptionsLTMul (-x) y) 
Arguments: {x y : SetTheory.PGame} (hn : (x * y).Numeric)
Goal: (Surreal.Multiplication.MulOptionsLTMul x y ∧ Surreal.Multiplication.MulOptionsLTMul (-x) (-y)) ∧
  Surreal.Multiplication.MulOptionsLTMul x (-y) ∧ Surreal.Multiplication.MulOptionsLTMul (-x) y
-- Surreal.Multiplication.ih3_of_ih
lemma ih3_of_ih (h24 : IH24 x₁ x₂ y) (h4 : IH4 x₁ x₂ y) (hl : MulOptionsLTMul x₂ y) (i j) :
    IH3 x₁ (x₂.moveLeft i) x₂ (y.moveLeft j) y 
Arguments: {x₁ x₂ y : SetTheory.PGame} (h24 : Surreal.Multiplication.IH24 x₁ x₂ y) (h4 : Surreal.Multiplication.IH4 x₁ x₂ y) (hl : Surreal.Multiplication.MulOptionsLTMul x₂ y) (i : x₂.LeftMoves) (j : y.LeftMoves)
Goal: Surreal.Multiplication.IH3 x₁ (x₂.moveLeft i) x₂ (y.moveLeft j) y
-- Surreal.Multiplication.P3_of_le_left
lemma P3_of_le_left {y₁ y₂} (i) (h : IH3 x₁ (x₂.moveLeft i) x₂ y₁ y₂) (hl : x₁ ≤ x₂.moveLeft i) :
    P3 x₁ x₂ y₁ y₂ 
Arguments: {x₁ x₂ y₁ y₂ : SetTheory.PGame} (i : x₂.LeftMoves) (h : Surreal.Multiplication.IH3 x₁ (x₂.moveLeft i) x₂ y₁ y₂) (hl : x₁ ≤ x₂.moveLeft i)
Goal: Surreal.Multiplication.P3 x₁ x₂ y₁ y₂
-- Surreal.Multiplication.P3_of_lt
theorem P3_of_lt {y₁ y₂} (h : ∀ i, IH3 x₁ (x₂.moveLeft i) x₂ y₁ y₂)
    (hs : ∀ i, IH3 (-x₂) ((-x₁).moveLeft i) (-x₁) y₁ y₂) (hl : x₁ < x₂) :
    P3 x₁ x₂ y₁ y₂ 
Arguments: {x₁ x₂ y₁ y₂ : SetTheory.PGame} (h : ∀ (i : x₂.LeftMoves), Surreal.Multiplication.IH3 x₁ (x₂.moveLeft i) x₂ y₁ y₂) (hs : ∀ (i : (-x₁).LeftMoves), Surreal.Multiplication.IH3 (-x₂) ((-x₁).moveLeft i) (-x₁) y₁ y₂) (hl : x₁ < x₂)
Goal: Surreal.Multiplication.P3 x₁ x₂ y₁ y₂
-- Surreal.Multiplication.main
theorem main (a : Args) : a.Numeric → P124 a 
Arguments: (a : Surreal.Multiplication.Args)
Goal: a.Numeric → Surreal.Multiplication.P124 a
-- SetTheory.PGame.Numeric.mul
theorem Numeric.mul : Numeric (x * y) 
Arguments: {x y : SetTheory.PGame} (hx : x.Numeric) (hy : y.Numeric)
Goal: (x * y).Numeric
-- SetTheory.PGame.P24
theorem P24 : P24 x₁ x₂ y 
Arguments: {x₁ x₂ y : SetTheory.PGame} (hx₁ : x₁.Numeric) (hx₂ : x₂.Numeric) (hy : y.Numeric)
Goal: Surreal.Multiplication.P24 x₁ x₂ y
-- SetTheory.PGame.Equiv.mul_congr_left
theorem Equiv.mul_congr_left (he : x₁ ≈ x₂) : x₁ * y ≈ x₂ * y 
Arguments: {x₁ x₂ y : SetTheory.PGame} (hx₁ : x₁.Numeric) (hx₂ : x₂.Numeric) (hy : y.Numeric) (he : x₁ ≈ x₂)
Goal: x₁ * y ≈ x₂ * y
-- SetTheory.PGame.Equiv.mul_congr_right
theorem Equiv.mul_congr_right (he : y₁ ≈ y₂) : x * y₁ ≈ x * y₂ 
Arguments: {x y₁ y₂ : SetTheory.PGame} (hx : x.Numeric) (hy₁ : y₁.Numeric) (hy₂ : y₂.Numeric) (he : y₁ ≈ y₂)
Goal: x * y₁ ≈ x * y₂
-- SetTheory.PGame.Equiv.mul_congr
theorem Equiv.mul_congr (hx : x₁ ≈ x₂) (hy : y₁ ≈ y₂) : x₁ * y₁ ≈ x₂ * y₂ 
Arguments: {x₁ x₂ y₁ y₂ : SetTheory.PGame} (hx₁ : x₁.Numeric) (hx₂ : x₂.Numeric) (hy₁ : y₁.Numeric) (hy₂ : y₂.Numeric) (hx : x₁ ≈ x₂) (hy : y₁ ≈ y₂)
Goal: x₁ * y₁ ≈ x₂ * y₂
-- SetTheory.PGame.P3_of_lt_of_lt
theorem P3_of_lt_of_lt (hx : x₁ < x₂) (hy : y₁ < y₂) : P3 x₁ x₂ y₁ y₂ 
Arguments: {x₁ x₂ y₁ y₂ : SetTheory.PGame} (hx₁ : x₁.Numeric) (hx₂ : x₂.Numeric) (hy₁ : y₁.Numeric) (hy₂ : y₂.Numeric) (hx : x₁ < x₂) (hy : y₁ < y₂)
Goal: Surreal.Multiplication.P3 x₁ x₂ y₁ y₂
-- SetTheory.PGame.Numeric.mul_pos
theorem Numeric.mul_pos (hp₁ : 0 < x₁) (hp₂ : 0 < x₂) : 0 < x₁ * x₂ 
Arguments: {x₁ x₂ : SetTheory.PGame} (hx₁ : x₁.Numeric) (hx₂ : x₂.Numeric) (hp₁ : 0 < x₁) (hp₂ : 0 < x₂)
Goal: 0 < x₁ * x₂
-- Set.Intersecting.mono
@[mono]
theorem Intersecting.mono (h : t ⊆ s) (hs : s.Intersecting) : t.Intersecting 
Arguments: {α : Type u_1} [SemilatticeInf α] [OrderBot α] {s t : Set α} (h : t ⊆ s) (hs : s.Intersecting)
Goal: t.Intersecting
-- Set.Intersecting.not_bot_mem
theorem Intersecting.not_bot_mem (hs : s.Intersecting) : ⊥ ∉ s 
Arguments: {α : Type u_1} [SemilatticeInf α] [OrderBot α] {s : Set α} (hs : s.Intersecting)
Goal: ⊥ ∉ s
-- Set.Intersecting.ne_bot
theorem Intersecting.ne_bot (hs : s.Intersecting) (ha : a ∈ s) : a ≠ ⊥ 
Arguments: {α : Type u_1} [SemilatticeInf α] [OrderBot α] {s : Set α} {a : α} (hs : s.Intersecting) (ha : a ∈ s)
Goal: a ≠ ⊥
-- Set.intersecting_empty
theorem intersecting_empty : (∅ : Set α).Intersecting 
Arguments: {α : Type u_1} [SemilatticeInf α] [OrderBot α]
Goal: ∅.Intersecting