fact: Fixpoint put (T:Type) (t:T) (a:pos) (u : table T) {struct a} : table T := match a with one => match u with stop x => node t (stop x) (stop x) | node x v w => node t v w end | xL b => match u with stop x => node x (put t b (stop x)) (stop x) | node x v w => node x (put t b v) w end | xR b => match u with stop x => node x (stop x) (put t b (stop x)) | node x v w => node x v (put t b w) end end.