anchor.diff:          (ensures (fun m0 vv m1->
               (isNonEmpty (st m0)) /\ (isNonEmpty (st m1))
               /\ allocatedInRegion (reveal (asRef vv)) (topRegion m0) (topRegion m1) init
  -            /\ refLoc (reveal (asRef vv)) = InStack (topRegionId m0) /\ (topRegionId m0 = topRegionId m1)
  +            /\ regionOf (reveal (asRef vv)) = InStack (topRegionId m0) /\ (topRegionId m0 = topRegionId m1)
               /\ tail m0 = tail m1))
           (hide empty)
   
  
positive.code:         (requires  (fun m -> True))
          (ensures (fun m0 v m1->
              allocatedInRegion (reveal (asRef v)) (hp m0) (hp m1) init
              /\ refLoc (reveal (asRef v)) = InHeap /\ (snd m0 = snd m1)))
          (hide empty)
  
  val screate :  #a:Type -> len:nat -> init:a
  
negative.code:         (requires  (fun m -> True))
          (ensures (fun m0 v m1->
              allocatedInRegion (reveal (asRef v)) (hp m0) (hp m1) (Seq.create len init)
              /\ regionOf (reveal (asRef v)) = InHeap /\ (snd m0 = snd m1)))
          (hide empty)
  
  
  