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


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

Found no subterm matching "set ?M1760 ?M1759 Empty" in the current goal.

Goals:
  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xI i <> xI j
  ============================
   (get (xI i) (Node Empty None (set j x Empty)) = get (xI i) Empty)

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

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xI i <> xO j
  ============================
   (get (xI i) (Node (set j x Empty) None Empty) = get (xI i) Empty)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xI i <> xO j -> get (xI i) (set (xO j) x m1) = get (xI i) m1
  IHm2 : xI i <> xO j -> get (xI i) (set (xO j) x m2) = get (xI i) m2
  H0 : xI i <> xO j
  ============================
   (get (xI i) (Node (set j x m1) o m2) = get (xI i) (Node m1 o m2))

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  x : A
  H : xI i <> xH
  ============================
   (get (xI i) (Node Empty (Some x) Empty) = get (xI i) Empty)

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

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xO i <> xI j
  ============================
   (get (xO i) (Node Empty None (set j x Empty)) = get (xO i) Empty)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xO i <> xI j -> get (xO i) (set (xI j) x m1) = get (xO i) m1
  IHm2 : xO i <> xI j -> get (xO i) (set (xI j) x m2) = get (xO i) m2
  H0 : xO i <> xI j
  ============================
   (get (xO i) (Node m1 o (set j x m2)) = get (xO i) (Node m1 o m2))

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xO i <> xO j
  ============================
   (get (xO i) (Node (set j x Empty) None Empty) = get (xO i) Empty)

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

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  x : A
  H : xO i <> xH
  ============================
   (get (xO i) (Node Empty (Some x) Empty) = get (xO i) Empty)

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

    A : Type  j : positive  x : A  H : xH <> xI j
  ============================
   (get xH (Node Empty None (set j x Empty)) = get xH Empty)

  
  A : Type
  j : positive
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xH <> xI j -> get xH (set (xI j) x m1) = get xH m1
  IHm2 : xH <> xI j -> get xH (set (xI j) x m2) = get xH m2
  H0 : xH <> xI j
  ============================
   (get xH (Node m1 o (set j x m2)) = get xH (Node m1 o m2))

    A : Type  j : positive  x : A  H : xH <> xO j
  ============================
   (get xH (Node (set j x Empty) None Empty) = get xH Empty)

  
  A : Type
  j : positive
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xH <> xO j -> get xH (set (xO j) x m1) = get xH m1
  IHm2 : xH <> xO j -> get xH (set (xO j) x m2) = get xH m2
  H0 : xH <> xO j
  ============================
   (get xH (Node (set j x m1) o m2) = get xH (Node m1 o m2))

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

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


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 (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xI i <> xI j
  ============================
   (get i (set j x Empty) = get (xI i) Empty)

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

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xI i <> xO j
  ============================
   (get i Empty = get (xI i) Empty)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xI i <> xO j -> get (xI i) (set (xO j) x m1) = get (xI i) m1
  IHm2 : xI i <> xO j -> get (xI i) (set (xO j) x m2) = get (xI i) m2
  H0 : xI i <> xO j
  ============================
   (get i m2 = get i m2)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  x : A
  H : xI i <> xH
  ============================
   (get i Empty = get (xI i) Empty)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xI i <> xH -> get (xI i) (set xH x m1) = get (xI i) m1
  IHm2 : xI i <> xH -> get (xI i) (set xH x m2) = get (xI i) m2
  H0 : xI i <> xH
  ============================
   (get i m2 = get i m2)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xO i <> xI j
  ============================
   (get i Empty = get (xO i) Empty)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xO i <> xI j -> get (xO i) (set (xI j) x m1) = get (xO i) m1
  IHm2 : xO i <> xI j -> get (xO i) (set (xI j) x m2) = get (xO i) m2
  H0 : xO i <> xI j
  ============================
   (get i m1 = get i m1)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xO i <> xO j
  ============================
   (get i (set j x Empty) = get (xO i) Empty)

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

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  x : A
  H : xO i <> xH
  ============================
   (get i Empty = get (xO i) Empty)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xO i <> xH -> get (xO i) (set xH x m1) = get (xO i) m1
  IHm2 : xO i <> xH -> get (xO i) (set xH x m2) = get (xO i) m2
  H0 : xO i <> xH
  ============================
   (get i m1 = get i m1)

    A : Type  j : positive  x : A  H : xH <> xI j
  ============================
   (None = get xH Empty)

  
  A : Type
  j : positive
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xH <> xI j -> get xH (set (xI j) x m1) = get xH m1
  IHm2 : xH <> xI j -> get xH (set (xI j) x m2) = get xH m2
  H0 : xH <> xI j
  ============================
   (o = o)

    A : Type  j : positive  x : A  H : xH <> xO j
  ============================
   (None = get xH Empty)

  
  A : Type
  j : positive
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xH <> xO j -> get xH (set (xO j) x m1) = get xH m1
  IHm2 : xH <> xO j -> get xH (set (xO j) x m2) = get xH m2
  H0 : xH <> xO j
  ============================
   (o = o)

    A : Type  x : A  H : xH <> xH
  ============================
   (Some x = get xH Empty)

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


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
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
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
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
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
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode
DEBUG LTAC Evaluated term: gNode

Goals:
  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xI i <> xI j
  ============================
   (get i (set j x Empty) = get (xI i) Empty)

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

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xI i <> xO j
  ============================
   (get i Empty = get (xI i) Empty)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xI i <> xO j -> get (xI i) (set (xO j) x m1) = get (xI i) m1
  IHm2 : xI i <> xO j -> get (xI i) (set (xO j) x m2) = get (xI i) m2
  H0 : xI i <> xO j
  ============================
   (get i m2 = get i m2)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  x : A
  H : xI i <> xH
  ============================
   (get i Empty = get (xI i) Empty)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xI i <> xH -> get (xI i) (set xH x m1) = get (xI i) m1
  IHm2 : xI i <> xH -> get (xI i) (set xH x m2) = get (xI i) m2
  H0 : xI i <> xH
  ============================
   (get i m2 = get i m2)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xO i <> xI j
  ============================
   (get i Empty = get (xO i) Empty)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xO i <> xI j -> get (xO i) (set (xI j) x m1) = get (xO i) m1
  IHm2 : xO i <> xI j -> get (xO i) (set (xI j) x m2) = get (xO i) m2
  H0 : xO i <> xI j
  ============================
   (get i m1 = get i m1)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xO i <> xO j
  ============================
   (get i (set j x Empty) = get (xO i) Empty)

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

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  x : A
  H : xO i <> xH
  ============================
   (get i Empty = get (xO i) Empty)

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xO i <> xH -> get (xO i) (set xH x m1) = get (xO i) m1
  IHm2 : xO i <> xH -> get (xO i) (set xH x m2) = get (xO i) m2
  H0 : xO i <> xH
  ============================
   (get i m1 = get i m1)

    A : Type  j : positive  x : A  H : xH <> xI j
  ============================
   (None = get xH Empty)

  
  A : Type
  j : positive
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xH <> xI j -> get xH (set (xI j) x m1) = get xH m1
  IHm2 : xH <> xI j -> get xH (set (xI j) x m2) = get xH m2
  H0 : xH <> xI j
  ============================
   (o = o)

    A : Type  j : positive  x : A  H : xH <> xO j
  ============================
   (None = get xH Empty)

  
  A : Type
  j : positive
  x : A
  m1 : tree A
  o : option A
  m2 : tree A
  H : not_trivially_empty m1 o m2
  IHm1 : xH <> xO j -> get xH (set (xO j) x m1) = get xH m1
  IHm2 : xH <> xO j -> get xH (set (xO j) x m2) = get xH m2
  H0 : xH <> xO j
  ============================
   (o = o)

    A : Type  x : A  H : xH <> xH
  ============================
   (Some x = get xH Empty)

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


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

Goals:
  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xI i <> xI j
  ============================
   (get i (set j x Empty) = get (xI i) Empty)

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

  
  A : Type
  i : positive
  IHi : forall (j : positive) (x : A) (m : tree A),
        i <> j -> get i (set j x m) = get i m
  j : positive
  x : A
  H : xO i <> xO j
  ============================
   (get i (set j x Empty) = get (xO i) Empty)

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

    A : Type  x : A  H : xH <> xH
  ============================
   (Some x = get xH Empty)

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


DEBUG:Going to execute:
try apply IHi