constructive mathematics in F#