1lower_case_list(A,B) :-
    2	findall(Y,(member(X,A),lower_case(X,Y)),B).
    3
    4p_object_declaration(L)		--> ['(',':',objects], typed_list(name, L),[')'].
    5p_init(I)                      	--> ['(',':',init], zeroOrMore(init_el, I), [')'].
    6
    7init_el(I)			--> literal(name, I).
    8init_el(at(N,L))		--> ['(',at], oneOrMore(token,List), gd(L), [')'],
    9	{atomic_list_concat(List,'',Atom),
   10	 atom_number(Atom,N)}.			% timed-initial literal
   11init_el(set(H,N))		--> ['(','='], f_head(H), (number(N) ; name(N)), [')'].				% fluents
   12
   13p_goal(G)				--> ['(',':',goal], pre_GD(G), [')'].
   14
   15%constraints(C)			--> ['(',':',constraints], pref_con_GD(C), [')'].				% constraints
   16pref_con_GD(and(P))		--> ['(',and], zeroOrMore(pref_con_GD, P), [')'].
   17%pref_con_GD(forall(L, P))	--> ['(',forall,'('], typed_list(variable, L), [')'], pref_con_GD(P), [')'].	% universal-preconditions
   18%pref_con_GD(preference(N, P))	--> ['(',preference], (pref_name(N) ; []), con_GD(P), [')'].			% prefernces
   19pref_con_GD(P)			--> con_GD(P).
   20
   21con_GD(and(L))			--> ['(',and], zeroOrMore(con_GD, L), [')'].
   22con_GD(forall(L, P))		--> ['(',forall,'('], typed_list(variable, L),[')'], con_GD(P), [')'].
   23con_GD(at_end(P))		--> ['(',at,end],	gd(P), [')'].
   24con_GD(always(P))		--> ['(',always],	gd(P), [')'].
   25con_GD(sometime(P))		--> ['(',sometime],	gd(P), [')'].
   26con_GD(within(N, P))		--> ['(',within], number(N), gd(P), [')'].
   27
   28con_GD(at_most_once(P))		--> ['(','at-most-once'], gd(P),[')'].
   29con_GD(some_time_after(P1, P2))	--> ['(','sometime-after'], gd(P1), gd(P2), [')'].
   30con_GD(some_time_before(P1, P2))--> ['(','sometime-before'], gd(P1), gd(P2), [')'].
   31con_GD(always_within(N, P1, P2))--> ['(','always-within'], number(N), gd(P1), gd(P2), [')'].
   32con_GD(hold_during(N1, N2, P))	--> ['(','hold-during'], number(N1), number(N2), gd(P), [')'].
   33con_GD(hold_after(N, P))	--> ['(','hold-after'], number(N), gd(P),[')'].
   34
   35p_metric_spec(metric(O, E))	--> ['(',':',metric], optimization(O), metric_f_exp(E), [')'].
   36
   37optimization(minimize)		--> [minimize].
   38optimization(maximize)		--> [maximize].
   39
   40metric_f_exp(E)			--> ['('], binary_op(O), metric_f_exp(E1), metric_f_exp(E2), [')'], {E =..[O, E1, E2]}.
   41metric_f_exp(multi_op(O,[E1|E]))--> ['('], multi_op(O), metric_f_exp(E1), oneOrMore(metric_f_exp, E), [')']. % I dont see meanful of this rule, in additional is missing in f-exp
   42metric_f_exp(E)			--> ['(','+'], metric_f_exp(E1), [')'], {E=..[+, E1]}.
   43metric_f_exp(E)			--> ['(','-'], metric_f_exp(E1), [')'], {E=..[-, E1]}.
   44metric_f_exp(N)			--> number(N).
   45metric_f_exp(F)			--> ['('], function_symbol(S), zeroOrMore(name, Ns), [')'], { concat_atom([S|Ns], '-', F) }.
   46metric_f_exp(function(S))	--> function_symbol(S).
   47metric_f_exp(total_time)	--> ['total-time'].
   48
   49metric_f_exp(is_violated(N))	--> ['(','is-violated'], pref_name(N), [')'].
   50
   51% Work arround
   52length_spec([])			--> [not_defined].	% there is no definition???
   53
   54float(F)			--> [F], {float(F)}.
   55
   56:- ensure_loaded('shared').