/** os_parts( +Parts, -Stem ).
    os_parts( -Parts, +Stem ).
    os_parts( ?Parts, ?Stem, +Opts ).

Construct and deconstruct stems of files from/to their constituents. 

Opts 
  * separator(Sep=Sep)
    defaults to flag filename_separator by preference

  * sep(Sep=Sep)
   shortened separator()

==
?- os_parts( Parts, abc_def ).
Parts = [abc, def].

?- os_parts( Parts, 'abc_def-xyz', sep(-) ).
Parts = [abc_def, xyz].

==
*/
os_parts( Parts, Stem ) :-
	os_parts( Parts, Stem, [] ).

os_parts( Parts, Stem, Opts ) :-
	os_sep( Sep, Opts ),
	atomic_list_concat( Parts, Sep, Stem ).