Veriication of Erlang Programs: Factoring out the Side-eeect-free Fragment