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)
  ly : Z
  lx : Z
  K := if n <=? 0 then Z.max lx (Z.succ ly - n) else Z.max lx (Z.succ ly) : Z
  G' := G' (s G) x K : t
  Vx : VSet.In x (V G)
  Hly : lsp G (s G) y = Some ly
  Hpos : 0 <= ly
  Hlab : Z.of_nat (to_label (lsp G (s G) y)) = ly
  Hlx : lsp G (s G) x = Some lx
  poskx : 0 <= lx
  Hlab' : Z.of_nat (to_label (lsp G (s G) x)) = lx
  xs : lsp G x (s G) = None
  HI' : invariants G'
  HG' : acyclic_no_loop G'
  kx' : Z
  Hkx' : lsp G' (s G) x = Some kx'
  kx'pos : 0 <= kx'
  zofx' : Z.of_nat (to_label (lsp G' (s G) x)) = kx'
  XX : K <= kx'
  ky' : Z
  Hky' : lsp G' (s G) y = Some ky'
  ky'pos : 0 <= ky'
  zofy' : Z.of_nat (to_label (lsp G' (s G) y)) = ky'
  Hle'' : K + n <= ky'
  ============================
   ((Some ky' <= Some K + lsp G x y)%nbar -> (Some n <= lsp G x y)%nbar)


DEBUG:Going to execute:
destruct (lsp G x 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)
  ly : Z
  lx : Z
  K := if n <=? 0 then Z.max lx (Z.succ ly - n) else Z.max lx (Z.succ ly) : Z
  G' := G' (s G) x K : t
  Vx : VSet.In x (V G)
  Hly : lsp G (s G) y = Some ly
  Hpos : 0 <= ly
  Hlab : Z.of_nat (to_label (lsp G (s G) y)) = ly
  Hlx : lsp G (s G) x = Some lx
  poskx : 0 <= lx
  Hlab' : Z.of_nat (to_label (lsp G (s G) x)) = lx
  xs : lsp G x (s G) = None
  HI' : invariants G'
  HG' : acyclic_no_loop G'
  kx' : Z
  Hkx' : lsp G' (s G) x = Some kx'
  kx'pos : 0 <= kx'
  zofx' : Z.of_nat (to_label (lsp G' (s G) x)) = kx'
  XX : K <= kx'
  ky' : Z
  Hky' : lsp G' (s G) y = Some ky'
  ky'pos : 0 <= ky'
  zofy' : Z.of_nat (to_label (lsp G' (s G) y)) = ky'
  Hle'' : K + n <= ky'
  z : Z
  ============================
   ((Some ky' <= Some K + Some z)%nbar -> (Some n <= Some z)%nbar)

  
  G : t
  HI : invariants G
  HG : acyclic_no_loop G
  n : Z
  x : V.t
  y : VSet.elt
  Vy : VSet.In y (V G)
  ly : Z
  lx : Z
  K := if n <=? 0 then Z.max lx (Z.succ ly - n) else Z.max lx (Z.succ ly) : Z
  G' := G' (s G) x K : t
  Vx : VSet.In x (V G)
  Hly : lsp G (s G) y = Some ly
  Hpos : 0 <= ly
  Hlab : Z.of_nat (to_label (lsp G (s G) y)) = ly
  Hlx : lsp G (s G) x = Some lx
  poskx : 0 <= lx
  Hlab' : Z.of_nat (to_label (lsp G (s G) x)) = lx
  xs : lsp G x (s G) = None
  HI' : invariants G'
  HG' : acyclic_no_loop G'
  kx' : Z
  Hkx' : lsp G' (s G) x = Some kx'
  kx'pos : 0 <= kx'
  zofx' : Z.of_nat (to_label (lsp G' (s G) x)) = kx'
  XX : K <= kx'
  ky' : Z
  Hky' : lsp G' (s G) y = Some ky'
  ky'pos : 0 <= ky'
  zofy' : Z.of_nat (to_label (lsp G' (s G) y)) = ky'
  Hle'' : K + n <= ky'
  ============================
   ((Some ky' <= Some K + None)%nbar -> (Some n <= None)%nbar)


DEBUG:Going to execute:
cbn
DEBUG LTAC Evaluated term: (lsp G x 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)
  ly : Z
  lx : Z
  K := if n <=? 0 then Z.max lx (Z.succ ly - n) else Z.max lx (Z.succ ly) : Z
  G' := G' (s G) x K : t
  Vx : VSet.In x (V G)
  Hly : lsp G (s G) y = Some ly
  Hpos : 0 <= ly
  Hlab : Z.of_nat (to_label (lsp G (s G) y)) = ly
  Hlx : lsp G (s G) x = Some lx
  poskx : 0 <= lx
  Hlab' : Z.of_nat (to_label (lsp G (s G) x)) = lx
  xs : lsp G x (s G) = None
  HI' : invariants G'
  HG' : acyclic_no_loop G'
  kx' : Z
  Hkx' : lsp G' (s G) x = Some kx'
  kx'pos : 0 <= kx'
  zofx' : Z.of_nat (to_label (lsp G' (s G) x)) = kx'
  XX : K <= kx'
  ky' : Z
  Hky' : lsp G' (s G) y = Some ky'
  ky'pos : 0 <= ky'
  zofy' : Z.of_nat (to_label (lsp G' (s G) y)) = ky'
  Hle'' : K + n <= ky'
  z : Z
  ============================
   (ky' <= K + z -> n <= z)

  
  G : t
  HI : invariants G
  HG : acyclic_no_loop G
  n : Z
  x : V.t
  y : VSet.elt
  Vy : VSet.In y (V G)
  ly : Z
  lx : Z
  K := if n <=? 0 then Z.max lx (Z.succ ly - n) else Z.max lx (Z.succ ly) : Z
  G' := G' (s G) x K : t
  Vx : VSet.In x (V G)
  Hly : lsp G (s G) y = Some ly
  Hpos : 0 <= ly
  Hlab : Z.of_nat (to_label (lsp G (s G) y)) = ly
  Hlx : lsp G (s G) x = Some lx
  poskx : 0 <= lx
  Hlab' : Z.of_nat (to_label (lsp G (s G) x)) = lx
  xs : lsp G x (s G) = None
  HI' : invariants G'
  HG' : acyclic_no_loop G'
  kx' : Z
  Hkx' : lsp G' (s G) x = Some kx'
  kx'pos : 0 <= kx'
  zofx' : Z.of_nat (to_label (lsp G' (s G) x)) = kx'
  XX : K <= kx'
  ky' : Z
  Hky' : lsp G' (s G) y = Some ky'
  ky'pos : 0 <= ky'
  zofy' : Z.of_nat (to_label (lsp G' (s G) y)) = ky'
  Hle'' : K + n <= ky'
  ============================
   (False -> False)


DEBUG:Going to execute:
auto

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)
  ly : Z
  lx : Z
  K := if n <=? 0 then Z.max lx (Z.succ ly - n) else Z.max lx (Z.succ ly) : Z
  G' := G' (s G) x K : t
  Vx : VSet.In x (V G)
  Hly : lsp G (s G) y = Some ly
  Hpos : 0 <= ly
  Hlab : Z.of_nat (to_label (lsp G (s G) y)) = ly
  Hlx : lsp G (s G) x = Some lx
  poskx : 0 <= lx
  Hlab' : Z.of_nat (to_label (lsp G (s G) x)) = lx
  xs : lsp G x (s G) = None
  HI' : invariants G'
  HG' : acyclic_no_loop G'
  kx' : Z
  Hkx' : lsp G' (s G) x = Some kx'
  kx'pos : 0 <= kx'
  zofx' : Z.of_nat (to_label (lsp G' (s G) x)) = kx'
  XX : K <= kx'
  ky' : Z
  Hky' : lsp G' (s G) y = Some ky'
  ky'pos : 0 <= ky'
  zofy' : Z.of_nat (to_label (lsp G' (s G) y)) = ky'
  Hle'' : K + n <= ky'
  z : Z
  ============================
   (ky' <= K + z -> n <= z)

  
  G : t
  HI : invariants G
  HG : acyclic_no_loop G
  n : Z
  x : V.t
  y : VSet.elt
  Vy : VSet.In y (V G)
  ly : Z
  lx : Z
  K := if n <=? 0 then Z.max lx (Z.succ ly - n) else Z.max lx (Z.succ ly) : Z
  G' := G' (s G) x K : t
  Vx : VSet.In x (V G)
  Hly : lsp G (s G) y = Some ly
  Hpos : 0 <= ly
  Hlab : Z.of_nat (to_label (lsp G (s G) y)) = ly
  Hlx : lsp G (s G) x = Some lx
  poskx : 0 <= lx
  Hlab' : Z.of_nat (to_label (lsp G (s G) x)) = lx
  xs : lsp G x (s G) = None
  HI' : invariants G'
  HG' : acyclic_no_loop G'
  kx' : Z
  Hkx' : lsp G' (s G) x = Some kx'
  kx'pos : 0 <= kx'
  zofx' : Z.of_nat (to_label (lsp G' (s G) x)) = kx'
  XX : K <= kx'
  ky' : Z
  Hky' : lsp G' (s G) y = Some ky'
  ky'pos : 0 <= ky'
  zofy' : Z.of_nat (to_label (lsp G' (s G) y)) = ky'
  Hle'' : K + n <= ky'
  ============================
   (False -> False)


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