The tutorial is the best place to learn F* , however the tutorial is far from perfect. Often the included code is outdated and will not verify properly.

This issue is most pronounced in section 2.3.2 which shows the following seemingly harmless piece of code

open FStar . All open FStar . List . Tot open FStar . Ref val new_counter : int -> St ( unit -> St int ) let new_counter init = let c = ST .alloc init in fun () -> c := ! c + 1; ! c

If you were to try to verify this code, they would get (Error) could not prove psot-condition . This is not because the type signature is incorrect but due to an issues which can be seen here, here, and here.