Goal:
  
  b : Byte.byte
  x : string
  IHx : forall y z : t,
        compare x y = Lt -> compare y z = Lt -> compare x z = Lt
  b0 : Byte.byte
  y : string
  H : ByteCompareSpec.lt b b0
  ============================
   (forall z : t,
    Lt = Lt ->
    match z with
    | ""%bs => Gt
    | String y0 ys =>
        match ByteCompare.compare b0 y0 with
        | Eq => compare y ys
        | Lt => Lt
        | Gt => Gt
        end
    end = Lt ->
    match z with
    | ""%bs => Gt
    | String y ys =>
        match ByteCompare.compare b y with
        | Eq => compare x ys
        | Lt => Lt
        | Gt => Gt
        end
    end = Lt)


DEBUG:Going to execute:
destruct z

Goals:
  
  b : Byte.byte
  x : string
  IHx : forall y z : t,
        compare x y = Lt -> compare y z = Lt -> compare x z = Lt
  b0 : Byte.byte
  y : string
  H : ByteCompareSpec.lt b b0
  ============================
   (Lt = Lt -> Gt = Lt -> Gt = Lt)

  
  b : Byte.byte
  x : string
  IHx : forall y z : t,
        compare x y = Lt -> compare y z = Lt -> compare x z = Lt
  b0 : Byte.byte
  y : string
  H : ByteCompareSpec.lt b b0
  b1 : Byte.byte
  z : string
  ============================
   (Lt = Lt ->
    match ByteCompare.compare b0 b1 with
    | Eq => compare y z
    | Lt => Lt
    | Gt => Gt
    end = Lt ->
    match ByteCompare.compare b b1 with
    | Eq => compare x z
    | Lt => Lt
    | Gt => Gt
    end = Lt)


DEBUG:Going to execute:
auto

Goals:
  
  b : Byte.byte
  x : string
  IHx : forall y z : t,
        compare x y = Lt -> compare y z = Lt -> compare x z = Lt
  b0 : Byte.byte
  y : string
  H : ByteCompareSpec.lt b b0
  ============================
   (Lt = Lt -> Gt = Lt -> Gt = Lt)

  
  b : Byte.byte
  x : string
  IHx : forall y z : t,
        compare x y = Lt -> compare y z = Lt -> compare x z = Lt
  b0 : Byte.byte
  y : string
  H : ByteCompareSpec.lt b b0
  b1 : Byte.byte
  z : string
  ============================
   (Lt = Lt ->
    match ByteCompare.compare b0 b1 with
    | Eq => compare y z
    | Lt => Lt
    | Gt => Gt
    end = Lt ->
    match ByteCompare.compare b b1 with
    | Eq => compare x z
    | Lt => Lt
    | Gt => Gt
    end = Lt)


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