Goal:
  
  G : t
  HI : invariants G
  HG : acyclic_no_loop G
  n : Z
  x : V.t
  y : V.t
  Vy : ~ VSet.In y (V G)
  Hle : leq_vertices G n x y
  nneg : n <= 0
  n0 : x <> y
  Hxs : lsp G x (s G) = None
  Vx : ~ VSet.In x (V G)
  K := to_label (lsp G (s G) x) : nat
  l := fun z : V.t =>
       if is_left (V.eq_dec z y)
       then 0%nat
       else
        if is_left (V.eq_dec z x)
        then (Z.to_nat (- n) + 1)%nat
        else to_label (lsp G (s G) z) : V.t -> nat
  ============================
   False


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

Goals:
  
  G : t
  HI : invariants G
  HG : acyclic_no_loop G
  n : Z
  x : V.t
  y : V.t
  Vy : ~ VSet.In y (V G)
  Hle : leq_vertices G n x y
  nneg : n <= 0
  n0 : x <> y
  Hxs : lsp G x (s G) = None
  Vx : ~ VSet.In x (V G)
  K := to_label (lsp G (s G) x) : nat
  l := fun z : V.t =>
       if is_left (V.eq_dec z y)
       then 0%nat
       else
        if is_left (V.eq_dec z x)
        then (Z.to_nat (- n) + 1)%nat
        else to_label (lsp G (s G) z) : V.t -> nat
  ============================
   (correct_labelling G l)

  
  G : t
  HI : invariants G
  HG : acyclic_no_loop G
  n : Z
  x : V.t
  y : V.t
  Vy : ~ VSet.In y (V G)
  Hle : leq_vertices G n x y
  nneg : n <= 0
  n0 : x <> y
  Hxs : lsp G x (s G) = None
  Vx : ~ VSet.In x (V G)
  K := to_label (lsp G (s G) x) : nat
  l := fun z : V.t =>
       if is_left (V.eq_dec z y)
       then 0%nat
       else
        if is_left (V.eq_dec z x)
        then (Z.to_nat (- n) + 1)%nat
        else to_label (lsp G (s G) z) : V.t -> nat
  XX := Hle l ?Goal0 : Z.of_nat (l x) + n <= Z.of_nat (l y)
  ============================
   False


DEBUG:Going to execute:
subst l K