instance shortAdd : ∀ (x y : PGame.{u}) [Short x] [Short y], Short (x + y)
  | mk xl xr xL xR, mk yl yr yL yR, _, _ => by
    apply Short.mk;
    

Proof state:
case x
xl xr : Type u
xL : xl → PGame
xR : xr → PGame
yl yr : Type u
yL : yl → PGame
yR : yr → PGame
x✝¹ : Short (mk xl xr xL xR)
x✝ : Short (mk yl yr yL yR)
⊢ (i : xl ⊕ yl) →
    Short
      (Sum.rec
        (fun i =>
          (fun a =>
              rec (motive := fun x => PGame → PGame)
                (fun xl xr a a IHxl IHxr y =>
                  rec
                    (fun yl yr yL yR IHyl IHyr =>
                      let_fun y := mk yl yr yL yR;
                      mk (xl ⊕ yl) (xr ⊕ yr) (fun t => Sum.rec (fun i => IHxl i y) IHyl t) fun t =>
                        Sum.rec (fun i => IHxr i y) IHyr t)
                    y)
                (xL a))
            i (mk yl yr yL yR))
        (fun a =>
          rec
            (fun yl yr yL yR IHyl IHyr =>
              let_fun y := mk yl yr yL yR;
              mk (xl ⊕ yl) (xr ⊕ yr)
                (fun t =>
                  Sum.rec
                    (fun i =>
                      (fun a =>
                          rec (motive := fun x => PGame → PGame)
                            (fun xl xr a a IHxl IHxr y =>
                              rec
                                (fun yl yr yL yR IHyl IHyr =>
                                  let_fun y := mk yl yr yL yR;
                                  mk (xl ⊕ yl) (xr ⊕ yr) (fun t => Sum.rec (fun i => IHxl i y) IHyl t) fun t =>
                                    Sum.rec (fun i => IHxr i y) IHyr t)
                                y)
                            (xL a))
                        i y)
                    IHyl t)
                fun t =>
                Sum.rec
                  (fun i =>
                    (fun a =>
                        rec (motive := fun x => PGame → PGame)
                          (fun xl xr a a IHxl IHxr y =>
                            rec
                              (fun yl yr yL yR IHyl IHyr =>
                                let_fun y := mk yl yr yL yR;
                                mk (xl ⊕ yl) (xr ⊕ yr) (fun t => Sum.rec (fun i => IHxl i y) IHyl t) fun t =>
                                  Sum.rec (fun i => IHxr i y) IHyr t)
                              y)
                          (xR a))
                      i y)
                  IHyr t)
            (yL a))
        i)
case x
xl xr : Type u
xL : xl → PGame
xR : xr → PGame
yl yr : Type u
yL : yl → PGame
yR : yr → PGame
x✝¹ : Short (mk xl xr xL xR)
x✝ : Short (mk yl yr yL yR)
⊢ (j : xr ⊕ yr) →
    Short
      (Sum.rec
        (fun i =>
          (fun a =>
              rec (motive := fun x => PGame → PGame)
                (fun xl xr a a IHxl IHxr y =>
                  rec
                    (fun yl yr yL yR IHyl IHyr =>
                      let_fun y := mk yl yr yL yR;
                      mk (xl ⊕ yl) (xr ⊕ yr) (fun t => Sum.rec (fun i => IHxl i y) IHyl t) fun t =>
                        Sum.rec (fun i => IHxr i y) IHyr t)
                    y)
                (xR a))
            i (mk yl yr yL yR))
        (fun a =>
          rec
            (fun yl yr yL yR IHyl IHyr =>
              let_fun y := mk yl yr yL yR;
              mk (xl ⊕ yl) (xr ⊕ yr)
                (fun t =>
                  Sum.rec
                    (fun i =>
                      (fun a =>
                          rec (motive := fun x => PGame → PGame)
                            (fun xl xr a a IHxl IHxr y =>
                              rec
                                (fun yl yr yL yR IHyl IHyr =>
                                  let_fun y := mk yl yr yL yR;
                                  mk (xl ⊕ yl) (xr ⊕ yr) (fun t => Sum.rec (fun i => IHxl i y) IHyl t) fun t =>
                                    Sum.rec (fun i => IHxr i y) IHyr t)
                                y)
                            (xL a))
                        i y)
                    IHyl t)
                fun t =>
                Sum.rec
                  (fun i =>
                    (fun a =>
                        rec (motive := fun x => PGame → PGame)
                          (fun xl xr a a IHxl IHxr y =>
                            rec
                              (fun yl yr yL yR IHyl IHyr =>
                                let_fun y := mk yl yr yL yR;
                                mk (xl ⊕ yl) (xr ⊕ yr) (fun t => Sum.rec (fun i => IHxl i y) IHyl t) fun t =>
                                  Sum.rec (fun i => IHxr i y) IHyr t)
                              y)
                          (xR a))
                      i y)
                  IHyr t)
            (yR a))
        j)

Next tactic:
all_goals
      rintro ⟨i⟩
      · apply shortAdd
      · change Short (mk xl xr xL xR + _); apply shortAdd