classif_user(_User_name) :- 
	user_type(_User_name, _User_type),		% from defaults
	( u_type(_User_type, __)			% changed?
	;
		( u_type(__, kset)			% user set?
		;
			kset(user_type, _User_type),
			( abolish(u_type,2) ; true ),
			assert(u_type(_User_type, kset)),
	 		tell_usr(user_type, _User_type),
			name(_User_type,_User_type_str),
			append("${IFE_HOME}bin/change_cpt_set ",_User_type_str,_Cmd),
			shell(_Cmd)
		)
	),
	user_level(_User_name, _User_level),
	( u_level(_User_level, __)			% changed?
	;
		( u_level(__, kset)			% user set?
		;
			kset(user_level, _User_level),
			( abolish(u_level,1) ; true ),
			assert(u_level(_User_level)),
		 	tell_usr(user_level, _User_level)
		)
	).

user_name(_User_name) :- 
	uset(user_name, _User_name),
	tell_usr(user_name, _User_name),
	classif_user(_User_name).

user_type(_User_type) :- 
	u_type(_User_type, uset).
user_type(_User_type) :- 		%% changed
	uset(user_type, _User_type),
	( abolish(u_type,2) ; true ),
	assert(u_type(_User_type, uset)),
	tell_usr(user_type, _User_type),
	name(_User_type,_User_type_str),
	append("${IFE_HOME}bin/change_cpt_set ", _User_type_str,_Cmd),
	shell(_Cmd).

user_level(_User_level) :- 
	u_level(_User_level, uset).
user_level(_User_level) :- 			%% changed
	uset(user_level, _User_level),
	( abolish(u_level,2) ; true ),
	assert(u_level(_User_level, uset)),
	tell_usr(user_level, _User_level).

