/-- Casts a `Surreal` number into a `Game`. -/
def toGame : Surreal →+o Game where
  toFun := lift (fun x _ => ⟦x⟧) fun _ _ => Quot.sound
  map_zero' := rfl
  map_add' := by rintro ⟨_, _⟩ ⟨_, _⟩; rfl
  monotone' := by rintro ⟨_, _⟩ ⟨_, _⟩; 

Proof state:
case mk.mk.mk.mk
a✝ : Surreal
val✝¹ : PGame
property✝¹ : Numeric val✝¹
b✝ : Surreal
val✝ : PGame
property✝ : Numeric val✝
⊢ Quot.mk Setoid.r { val := val✝¹, property := property✝¹ } ≤ Quot.mk Setoid.r { val := val✝, property := property✝ } →
    ZeroHom.toFun
        (↑{
            toZeroHom :=
              {
                toFun :=
                  lift (fun x x_1 => ⟦x⟧)
                    (_ :
                      ∀ {x y : PGame},
                        Numeric x → Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y),
                map_zero' :=
                  (_ :
                    lift (fun x x_1 => ⟦x⟧)
                        (_ :
                          ∀ {x y : PGame},
                            Numeric x → Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                        0 =
                      lift (fun x x_1 => ⟦x⟧)
                        (_ :
                          ∀ {x y : PGame},
                            Numeric x → Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                        0) },
            map_add' :=
              (_ :
                ∀ (x y : Surreal),
                  ZeroHom.toFun
                      {
                        toFun :=
                          lift (fun x x_1 => ⟦x⟧)
                            (_ :
                              ∀ {x y : PGame},
                                Numeric x →
                                  Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y),
                        map_zero' :=
                          (_ :
                            lift (fun x x_1 => ⟦x⟧)
                                (_ :
                                  ∀ {x y : PGame},
                                    Numeric x →
                                      Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                                0 =
                              lift (fun x x_1 => ⟦x⟧)
                                (_ :
                                  ∀ {x y : PGame},
                                    Numeric x →
                                      Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                                0) }
                      (x + y) =
                    ZeroHom.toFun
                        {
                          toFun :=
                            lift (fun x x_1 => ⟦x⟧)
                              (_ :
                                ∀ {x y : PGame},
                                  Numeric x →
                                    Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y),
                          map_zero' :=
                            (_ :
                              lift (fun x x_1 => ⟦x⟧)
                                  (_ :
                                    ∀ {x y : PGame},
                                      Numeric x →
                                        Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                                  0 =
                                lift (fun x x_1 => ⟦x⟧)
                                  (_ :
                                    ∀ {x y : PGame},
                                      Numeric x →
                                        Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                                  0) }
                        x +
                      ZeroHom.toFun
                        {
                          toFun :=
                            lift (fun x x_1 => ⟦x⟧)
                              (_ :
                                ∀ {x y : PGame},
                                  Numeric x →
                                    Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y),
                          map_zero' :=
                            (_ :
                              lift (fun x x_1 => ⟦x⟧)
                                  (_ :
                                    ∀ {x y : PGame},
                                      Numeric x →
                                        Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                                  0 =
                                lift (fun x x_1 => ⟦x⟧)
                                  (_ :
                                    ∀ {x y : PGame},
                                      Numeric x →
                                        Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                                  0) }
                        y) })
        (Quot.mk Setoid.r { val := val✝¹, property := property✝¹ }) ≤
      ZeroHom.toFun
        (↑{
            toZeroHom :=
              {
                toFun :=
                  lift (fun x x_1 => ⟦x⟧)
                    (_ :
                      ∀ {x y : PGame},
                        Numeric x → Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y),
                map_zero' :=
                  (_ :
                    lift (fun x x_1 => ⟦x⟧)
                        (_ :
                          ∀ {x y : PGame},
                            Numeric x → Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                        0 =
                      lift (fun x x_1 => ⟦x⟧)
                        (_ :
                          ∀ {x y : PGame},
                            Numeric x → Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                        0) },
            map_add' :=
              (_ :
                ∀ (x y : Surreal),
                  ZeroHom.toFun
                      {
                        toFun :=
                          lift (fun x x_1 => ⟦x⟧)
                            (_ :
                              ∀ {x y : PGame},
                                Numeric x →
                                  Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y),
                        map_zero' :=
                          (_ :
                            lift (fun x x_1 => ⟦x⟧)
                                (_ :
                                  ∀ {x y : PGame},
                                    Numeric x →
                                      Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                                0 =
                              lift (fun x x_1 => ⟦x⟧)
                                (_ :
                                  ∀ {x y : PGame},
                                    Numeric x →
                                      Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                                0) }
                      (x + y) =
                    ZeroHom.toFun
                        {
                          toFun :=
                            lift (fun x x_1 => ⟦x⟧)
                              (_ :
                                ∀ {x y : PGame},
                                  Numeric x →
                                    Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y),
                          map_zero' :=
                            (_ :
                              lift (fun x x_1 => ⟦x⟧)
                                  (_ :
                                    ∀ {x y : PGame},
                                      Numeric x →
                                        Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                                  0 =
                                lift (fun x x_1 => ⟦x⟧)
                                  (_ :
                                    ∀ {x y : PGame},
                                      Numeric x →
                                        Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                                  0) }
                        x +
                      ZeroHom.toFun
                        {
                          toFun :=
                            lift (fun x x_1 => ⟦x⟧)
                              (_ :
                                ∀ {x y : PGame},
                                  Numeric x →
                                    Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y),
                          map_zero' :=
                            (_ :
                              lift (fun x x_1 => ⟦x⟧)
                                  (_ :
                                    ∀ {x y : PGame},
                                      Numeric x →
                                        Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                                  0 =
                                lift (fun x x_1 => ⟦x⟧)
                                  (_ :
                                    ∀ {x y : PGame},
                                      Numeric x →
                                        Numeric y → PGame.Equiv x y → Quot.mk PGame.Equiv x = Quot.mk PGame.Equiv y)
                                  0) }
                        y) })
        (Quot.mk Setoid.r { val := val✝, property := property✝ })

Next tactic:
exact id