relevant_cst_profile_entry(cprofile(RT,WT,PropWT,Calls,PP,Kind,Ann,Phase,IDInfo,InstItself,ValInfo,InstList)) :-
(try_get_unique_constants_state(CstState) -> true ; CstState=[]),
(Category = constant_computation(Phase,IDInfo0),
relevant_total_runtime(PP,Category,RT,WT,Calls,_MaxWT,_MaxWitnessID,_Min),
Phase \= propagate_value,
(abstract_constant(PP,_) -> Kind=abstract ; concrete_constant(PP,_) -> Kind=concrete ; Kind=unknown)
;
(constants_profiling_on -> Phase = no_equation_detected
; Phase = '-'), % constants profiling on needed to keep track of all equations (except arith. at the moment)
RT=0, WT=0, PropWT=0, Calls=0, IDInfo0 = [],
(abstract_constant(PP,_), Kind=abstract ; concrete_constant(PP,_), Kind=concrete),
\+ total_runtime(PP,constant_computation(_,_),_,_,_,_,_,_) % we have no profiling info at all for PP
),
(get_det_solution_for_constant_value_kind(PP,DetValInfo)
-> DetSolFound = true,
exclude(is_value_info,IDInfo0,IDInfo)
; DetValInfo = '-',
DetSolFound = false, IDInfo0=IDInfo
),
( (DetSolFound=false ; DetValInfo='LARGE-VALUE'),
member(bind(PP,CstVal),CstState), translate_bvalue_kind(CstVal,ValInfo)
-> SolFound=true
; ValInfo=DetValInfo, SolFound=DetSolFound
),
% now check whether there are infos about propagation phase:
(total_runtime(PP,constant_computation(propagate_value,PropInfo),_,PropWT,_,_,_,_)
-> (member(instantiates(IList),PropInfo) ->
(select(PP,IList,InstList)
-> InstItself=yes, % Equation determined directly the value
% check if we have a long closure expansion entry
% this has already been counted in the regular entry for the constant computation
(member(long_closure_expansion,IDInfo), Phase=phase0 -> fail ; true)
; (DetSolFound=true -> InstItself = 'delayed'
; SolFound=true -> InstItself = 'non-det'
; InstItself='NO'),
InstList=IList)
; % no instantiation list stored; performance monitoring not on
(SolFound=true -> InstItself='-' ; InstItself='NO'),
InstList = '-'
)
; PropWT = 0,
(DetSolFound=true -> InstItself='-' ; InstItself='NO'),
InstList='-'
),
(constant_variable_marked_as_expand(PP) -> Ann=expand
; constant_variable_marked_as_memo(PP) -> Ann=memo
; Ann = ''
).