Goal:
  
  A : Type
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : get xH (set xH x m1) = Some x
  IHm2 : get xH (set xH x m2) = Some x
  ============================
   (get xH (set xH x (Node m1 o m2)) = Some x)


DEBUG:Going to execute:
rewrite set_Node
DEBUG LTAC Evaluated term: set_Empty
Level 0: Backtrace:

Found no subterm matching "set ?M1553 ?M1552 Empty" in the current goal.

Goals:
  
  A : Type
  i : positive
  IHi : forall (x : A) (m : tree A), get i (set i x m) = Some x
  x : A
  ============================
   (get (xI i) (Node Empty None (set i x Empty)) = Some x)

  
  A : Type
  i : positive
  IHi : forall (x : A) (m : tree A), get i (set i x m) = Some x
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : get (xI i) (set (xI i) x m1) = Some x
  IHm2 : get (xI i) (set (xI i) x m2) = Some x
  ============================
   (get (xI i) (Node m1 o (set i x m2)) = Some x)

  
  A : Type
  i : positive
  IHi : forall (x : A) (m : tree A), get i (set i x m) = Some x
  x : A
  ============================
   (get (xO i) (Node (set i x Empty) None Empty) = Some x)

  
  A : Type
  i : positive
  IHi : forall (x : A) (m : tree A), get i (set i x m) = Some x
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : get (xO i) (set (xO i) x m1) = Some x
  IHm2 : get (xO i) (set (xO i) x m2) = Some x
  ============================
   (get (xO i) (Node (set i x m1) o m2) = Some x)

    A : Type  x : A
  ============================
   (get xH (Node Empty (Some x) Empty) = Some x)

  
  A : Type
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : get xH (set xH x m1) = Some x
  IHm2 : get xH (set xH x m2) = Some x
  ============================
   (get xH (Node m1 (Some x) m2) = Some x)


DEBUG:Going to execute:
rewrite gNode
DEBUG LTAC Evaluated term: set_Node
DEBUG LTAC Evaluated term: set_Node

Goals:
  
  A : Type
  i : positive
  IHi : forall (x : A) (m : tree A), get i (set i x m) = Some x
  x : A
  ============================
   (get i (set i x Empty) = Some x)

  
  A : Type
  i : positive
  IHi : forall (x : A) (m : tree A), get i (set i x m) = Some x
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : get (xI i) (set (xI i) x m1) = Some x
  IHm2 : get (xI i) (set (xI i) x m2) = Some x
  ============================
   (get i (set i x m2) = Some x)

  
  A : Type
  i : positive
  IHi : forall (x : A) (m : tree A), get i (set i x m) = Some x
  x : A
  ============================
   (get i (set i x Empty) = Some x)

  
  A : Type
  i : positive
  IHi : forall (x : A) (m : tree A), get i (set i x m) = Some x
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : get (xO i) (set (xO i) x m1) = Some x
  IHm2 : get (xO i) (set (xO i) x m2) = Some x
  ============================
   (get i (set i x m1) = Some x)

    A : Type  x : A
  ============================
   (Some x = Some x)

  
  A : Type
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : get xH (set xH x m1) = Some x
  IHm2 : get xH (set xH x m2) = Some x
  ============================
   (Some x = Some x)


DEBUG:Going to execute:
auto
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode

Goals:
  
  A : Type
  i : positive
  IHi : forall (x : A) (m : tree A), get i (set i x m) = Some x
  x : A
  ============================
   (get i (set i x Empty) = Some x)

  
  A : Type
  i : positive
  IHi : forall (x : A) (m : tree A), get i (set i x m) = Some x
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : get (xI i) (set (xI i) x m1) = Some x
  IHm2 : get (xI i) (set (xI i) x m2) = Some x
  ============================
   (get i (set i x m2) = Some x)

  
  A : Type
  i : positive
  IHi : forall (x : A) (m : tree A), get i (set i x m) = Some x
  x : A
  ============================
   (get i (set i x Empty) = Some x)

  
  A : Type
  i : positive
  IHi : forall (x : A) (m : tree A), get i (set i x m) = Some x
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : get (xO i) (set (xO i) x m1) = Some x
  IHm2 : get (xO i) (set (xO i) x m2) = Some x
  ============================
   (get i (set i x m1) = Some x)

    A : Type  x : A
  ============================
   (Some x = Some x)

  
  A : Type
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : get xH (set xH x m1) = Some x
  IHm2 : get xH (set xH x m2) = Some x
  ============================
   (Some x = Some x)


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