Goal:
  
  G : t
  HI : invariants G
  HG : acyclic_no_loop G
  n : Z
  x : V.t
  y : VSet.elt
  Vy : VSet.In y (V G)
  Hle : Z.of_nat (to_label (lsp G (s G) x)) + n <=
        Z.of_nat (to_label (lsp G (s G) y))
  Vx : ~ VSet.In x (V G)
  Hx : x = x
  Hy : y <> x
  XX : Z.of_nat
         (if is_left (left Hx)
          then
           if n <=? 0
           then (Z.to_nat (Z.of_nat (to_label (lsp G (s G) y)) - n) + 1)%nat
           else to_label (lsp G (s G) y)
          else to_label (lsp G (s G) x)) + n <=
       Z.of_nat
         (if is_left (right Hy)
          then
           if n <=? 0
           then (Z.to_nat (Z.of_nat (to_label (lsp G (s G) y)) - n) + 1)%nat
           else to_label (lsp G (s G) y)
          else to_label (lsp G (s G) y))
  H : correct_labelling G (fun x : V.t => to_label (lsp G (s G) x))
  ============================
   False


DEBUG:Going to execute:
destruct (Z_of_to_label_s G y) as [zl [eq [pos zof]]]
DEBUG LTAC Evaluated term: (Hle (fun x : V.t => to_label (lsp G (s G) x)) H)

Goals:
  
  G : t
  HI : invariants G
  HG : acyclic_no_loop G
  n : Z
  x : V.t
  y : VSet.elt
  Vy : VSet.In y (V G)
  Hle : Z.of_nat (to_label (lsp G (s G) x)) + n <=
        Z.of_nat (to_label (lsp G (s G) y))
  Vx : ~ VSet.In x (V G)
  Hx : x = x
  Hy : y <> x
  XX : Z.of_nat
         (if is_left (left Hx)
          then
           if n <=? 0
           then (Z.to_nat (Z.of_nat (to_label (lsp G (s G) y)) - n) + 1)%nat
           else to_label (lsp G (s G) y)
          else to_label (lsp G (s G) x)) + n <=
       Z.of_nat
         (if is_left (right Hy)
          then
           if n <=? 0
           then (Z.to_nat (Z.of_nat (to_label (lsp G (s G) y)) - n) + 1)%nat
           else to_label (lsp G (s G) y)
          else to_label (lsp G (s G) y))
  H : correct_labelling G (fun x : V.t => to_label (lsp G (s G) x))
  ============================
   (VSet.In y (V G))

  
  G : t
  HI : invariants G
  HG : acyclic_no_loop G
  n : Z
  x : V.t
  y : VSet.elt
  Vy : VSet.In y (V G)
  Hle : Z.of_nat (to_label (lsp G (s G) x)) + n <=
        Z.of_nat (to_label (lsp G (s G) y))
  Vx : ~ VSet.In x (V G)
  Hx : x = x
  Hy : y <> x
  XX : Z.of_nat
         (if is_left (left Hx)
          then
           if n <=? 0
           then (Z.to_nat (Z.of_nat (to_label (lsp G (s G) y)) - n) + 1)%nat
           else to_label (lsp G (s G) y)
          else to_label (lsp G (s G) x)) + n <=
       Z.of_nat
         (if is_left (right Hy)
          then
           if n <=? 0
           then (Z.to_nat (Z.of_nat (to_label (lsp G (s G) y)) - n) + 1)%nat
           else to_label (lsp G (s G) y)
          else to_label (lsp G (s G) y))
  H : correct_labelling G (fun x : V.t => to_label (lsp G (s G) x))
  zl : Z
  eq : lsp G (s G) y = Some zl
  pos : 0 <= zl
  zof : Z.of_nat (to_label (lsp G (s G) y)) = zl
  ============================
   False


DEBUG:Going to execute:
eauto
DEBUG LTAC Evaluated term: (Z_of_to_label_s G y)

Goals:
  
  G : t
  HI : invariants G
  HG : acyclic_no_loop G
  n : Z
  x : V.t
  y : VSet.elt
  Vy : VSet.In y (V G)
  Hle : Z.of_nat (to_label (lsp G (s G) x)) + n <=
        Z.of_nat (to_label (lsp G (s G) y))
  Vx : ~ VSet.In x (V G)
  Hx : x = x
  Hy : y <> x
  XX : Z.of_nat
         (if is_left (left Hx)
          then
           if n <=? 0
           then (Z.to_nat (Z.of_nat (to_label (lsp G (s G) y)) - n) + 1)%nat
           else to_label (lsp G (s G) y)
          else to_label (lsp G (s G) x)) + n <=
       Z.of_nat
         (if is_left (right Hy)
          then
           if n <=? 0
           then (Z.to_nat (Z.of_nat (to_label (lsp G (s G) y)) - n) + 1)%nat
           else to_label (lsp G (s G) y)
          else to_label (lsp G (s G) y))
  H : correct_labelling G (fun x : V.t => to_label (lsp G (s G) x))
  ============================
   (VSet.In y (V G))

  
  G : t
  HI : invariants G
  HG : acyclic_no_loop G
  n : Z
  x : V.t
  y : VSet.elt
  Vy : VSet.In y (V G)
  Hle : Z.of_nat (to_label (lsp G (s G) x)) + n <=
        Z.of_nat (to_label (lsp G (s G) y))
  Vx : ~ VSet.In x (V G)
  Hx : x = x
  Hy : y <> x
  XX : Z.of_nat
         (if is_left (left Hx)
          then
           if n <=? 0
           then (Z.to_nat (Z.of_nat (to_label (lsp G (s G) y)) - n) + 1)%nat
           else to_label (lsp G (s G) y)
          else to_label (lsp G (s G) x)) + n <=
       Z.of_nat
         (if is_left (right Hy)
          then
           if n <=? 0
           then (Z.to_nat (Z.of_nat (to_label (lsp G (s G) y)) - n) + 1)%nat
           else to_label (lsp G (s G) y)
          else to_label (lsp G (s G) y))
  H : correct_labelling G (fun x : V.t => to_label (lsp G (s G) x))
  zl : Z
  eq : lsp G (s G) y = Some zl
  pos : 0 <= zl
  zof : Z.of_nat (to_label (lsp G (s G) y)) = zl
  ============================
   False


DEBUG:Going to execute:
<coq-core.plugins.ltac::eauto@0> $1 $2 $3