adapt_machine_name('dummy(uses)',R) :- !,R='MAIN'.
adapt_machine_name(X,X).
Calls:
Name: =/2 |
|
Name: ! |
Called:
Name: translate_machine1/3 |
Module: translate |
adapt_record_field_according_to_type(field(Name,HTy),field(Name,H),field(Name,R)) :-
adapt_value_according_to_type(HTy,H,R).
Calls:
| Module: translate |
adapt_state([],[],[]).
adapt_state([bind(ID,Val)|T],[bind(ID,X)|TX],[bind(ID,X)|TY]) :- Val='$NONDET',!,
adapt_state(T,TX,TY).
adapt_state([bind(ID,_)|T],[bind(ID,_)|TX],TY) :- % Value is deterministic: do not copy
adapt_state(T,TX,TY).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ! |
|
Name: =/2 |
Called:
| Module: translate |
adapt_value_according_to_type(_,Var,R) :- var(Var),!,R=Var.
adapt_value_according_to_type(T,V,R) :- var(T),!,
add_internal_error('Variable type: ',adapt_value_according_to_type(T,V,R)),
R=V.
adapt_value_according_to_type(integer,V,R) :- !,R=V.
adapt_value_according_to_type(string,V,R) :- !,R=V.
adapt_value_according_to_type(boolean,V,R) :- !,R=V.
adapt_value_according_to_type(global(_),V,R) :- !,R=V.
adapt_value_according_to_type(couple(TA,TB),(VA,VB),R) :- !, R=(RA,RB),
adapt_value_according_to_type(TA,VA,RA),
adapt_value_according_to_type(TB,VB,RB).
adapt_value_according_to_type(set(Type),avl_set(A),Res) :- check_is_non_empty_avl(A),
quick_avl_approximate_size(A,S),S<20,
custom_explicit_sets:expand_custom_set_to_list(avl_set(A),List),!,
maplist(adapt_value_according_to_type(Type),List,Res).
adapt_value_according_to_type(set(_Type),V,R) :- !,R=V.
adapt_value_according_to_type(seq(Type),V,R) :- !, % the type tells us it is a sequence
(convert_set_into_sequence(V,VS)
-> l_adapt_value_according_to_type(VS,Type,AVS),
R=sequence(AVS)
; R=V).
adapt_value_according_to_type(record(Fields),rec(Values),R) :- !,
R=rec(AdaptedValues),
% fields and values should be in the same (alphabetical) order
maplist(adapt_record_field_according_to_type,Fields,Values,AdaptedValues).
adapt_value_according_to_type(freetype(_),Value,R) :-
Value = freeval(ID,_,Term),
nonvar(Term), Term=term(ID), % not a constructor, just a value
!,
R = Value.
adapt_value_according_to_type(freetype(_),freeval(ID,Case,SubValue),R) :- nonvar(Case),
!,
R = freeval(ID,Case,AdaptedSubValue),
(kernel_freetypes:get_freeval_type(ID,Case,SubType)
-> adapt_value_according_to_type(SubType,SubValue,AdaptedSubValue)
; write(could_not_get_freeval_type(ID,Case)),nl,
AdaptedSubValue = SubValue
).
adapt_value_according_to_type(freetype(_),Value,R) :- !, R=Value.
adapt_value_according_to_type(any,Value,R) :- !, R=Value.
adapt_value_according_to_type(pred,Value,R) :- !, R=Value.
adapt_value_according_to_type(_,term(V),R) :- !, R=term(V). % appears for unknown values (no_value_for) when ALLOW_INCOMPLETE_SETUP_CONSTANTS is true
adapt_value_according_to_type(Type,Value,R) :- write(adapt_value_according_to_type_unknown(Type,Value)),nl,
R=Value.
Calls:
Name: =/2 |
|
Name: nl |
|
Name: write/1 |
|
Name: ! |
|
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: get_freeval_type/3 |
Module: kernel_freetypes |
Name: ->/3 |
|
Name: nonvar/1 |
|
Name: maplist/4 |
Module: foo_error |
| Module: translate | |
| Module: translate | |
Name: maplist/3 |
Module: foo_error |
| Module: custom_explicit_sets | |
Name: </2 |
|
| Module: avl_tools | |
Name: check_is_non_empty_avl/1 |
Module: avl_tools |
Name: add_internal_error/2 |
Module: foo_error |
Name: var/1 |
add_normal_typing_predicates(Ids,In,Out) :- % used to call add_typing_predicates directly
(add_optional_typing_predicates(Ids,In,Out) -> true
; add_internal_error('Failed: ',add_normal_typing_predicates(Ids)), In=Out).
Calls:
Name: =/2 |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: true |
|
| Module: translate | |
Name: ->/3 |
Called:
Name: pp_expr_indent/3 |
Module: translate |
Name: translate_bexpr_typed/2 |
Module: banditfuzz |
Name: pp_comprehension_set5/7 |
Module: translate |
Name: fuzz_list/2 |
Module: dev.pl |
Name: pp_pred_nested/5 |
Module: translate |
Name: report_ast/2 |
Module: banditfuzz |
| Module: translate | |
Name: pp_expr2/5 |
Module: translate |
add_optional_typing_predicates(Ids,In,Out) :-
( get_preference(translate_print_typing_infos,true) -> add_typing_predicates(Ids,In,Out)
; is_truth(In) -> add_typing_predicates(Ids,In,Out)
; In=Out).
Calls:
Name: =/2 |
|
Name: add_typing_predicates/3 |
Module: translate |
Name: is_truth/1 |
Module: foo_error |
Name: ->/3 |
|
Name: get_preference/2 |
Module: preferences |
Called:
| Module: translate | |
Name: translate_subst2/3 |
Module: translate |
Block: add_outer_paren(-,?,?,?,?,?)
add_outer_paren(Prio,MinPrio,S,Srest,X,Xrest) :-
( Prio > MinPrio -> % was >=, but problem with & / or with same priority or with non associative operators !
S=X, Srest=Xrest
;
[Open] = "(", [Close] = ")",
S = [Open|X], Xrest = [Close|Srest]).
Calls:
Name: =/2 |
|
Name: >/2 |
|
Name: ->/3 |
Called:
Name: pp_expr_m/5 |
Module: translate |
add_span_label(Kind,Name,Section,Pred,NewPred) :-
(Kind=[Label] -> true % already has position info
; create_label(Kind,Name,Section,Label)),
add_labels_to_texpr(Pred,[Label],NewPred).
Calls:
Name: add_labels_to_texpr/3 |
Module: foo_error |
Name: create_label/4 |
Module: translate |
Name: true |
|
Name: =/2 |
|
Name: ->/3 |
Called:
| Module: translate | |
Name: combine_span_pred/5 |
Module: translate |
add_typing_predicates([],P,P) :- !.
add_typing_predicates(Ids,Pin,Pout) :-
remove_already_typed_ids(Pin,Ids,UntypedIds),
KeepSeq=false,
generate_typing_predicates(UntypedIds,KeepSeq,Typing),
conjunction_to_list(Pin,Pins),
remove_duplicate_predicates(Typing,Pins,Typing2),
append(Typing2,[Pin],Preds),
conjunct_predicates(Preds,Pout).
Calls:
Name: conjunct_predicates/2 |
Module: foo_error |
Name: append/3 |
|
| Module: translate | |
Name: conjunction_to_list/2 |
Module: foo_error |
| Module: translate | |
Name: =/2 |
|
| Module: translate | |
Name: ! |
Called:
Name: mpart_typing2/4 |
Module: translate |
| Module: translate | |
Name: type_infos_in_subst2/3 |
Module: translate |
| Module: translate | |
| Module: translate | |
| Module: translate |
always_surround_by_parentheses(parallel_product).
always_surround_by_parentheses(composition).
Called:
Name: pp_expr2/5 |
Module: translate |
and_symbol --> {unicode_mode},!, [8743]. % ''\x2227\''
and_symbol --> {latex_mode},!, "\\wedge ".
and_symbol --> "&".
ascii_to_unicode(Ascii,Unicode) :-
translate_prolog_constructor(BAst,Ascii), % will not backtrack
unicode_translation(BAst,Unicode).
Calls:
Name: unicode_translation/2 |
Module: translate |
| Module: translate |
Called:
| Module: prob2_interface |
asharing_csp_op(aParallel(CListX,X,CListY,Y,_SrcSpan),X,CListX,CListY,Y,' [',' || ','] ').
asharing_csp_op(eaParallel(CListX,X,CListY,Y,_SrcSpan),X,CListX,CListY,Y,' [',' || ','] ').
Called:
Name: pp_csp_process/3 |
Module: translate |
atelierb_pp_translation(set_minus,pp,'_moinsE'). % is set_subtraction ??
atelierb_pp_translation(cartesian_product,pp,'_multE').
atelierb_pp_translation('INTEGER',_,'INTEGER').
atelierb_pp_translation('NATURAL',_,'NATURAL').
atelierb_pp_translation('NATURAL1',_,'(NATURAL - {0})').
atelierb_pp_translation('NAT1',_,'(NAT - {0})').
atelierb_pp_translation(truth,_,btrue).
atelierb_pp_translation(falsity,_,bfalse).
atelierb_pp_translation(boolean_true,_,'TRUE').
atelierb_pp_translation(boolean_false,_,'FALSE').
atelierb_pp_translation(empty_sequence,_,'{}').
Called:
Name: translate_in_mode/3 |
Module: translate |
Name: integer_set_mapping/3 |
Module: translate |
atoms_to_codelist([]) --> [].
atoms_to_codelist([Atom|T]) --> ppterm(Atom), atoms_to_codelist(T).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ppterm/3 |
Module: translate |
Name: =/2 |
Called:
Name: pp_any_state/4 |
Module: translate |
b_functor(b(E,_,_),F,A) :- !,functor(E,F,A).
b_functor(E,F,A) :- functor(E,F,A).
Calls:
Name: functor/3 |
|
Name: ! |
Called:
Name: translate_subst_check/3 |
Module: translate |
b_portray_hook(X) :-
nonvar(X),
(is_texpr(X), ground(X) -> write('{# '),print_bexpr_or_subst(X),write(' #}')
; X=avl_set(_), ground(X) -> write('{#avl '), print_bvalue(X), write(')}')
; X=wfx(WF0,_,WFE,Info) -> format('wfx(~w,$mutable,~w,~w)',[WF0,WFE,Info]) % to do: short summary of prios & call stack
).
Calls:
Name: format/2 |
|
Name: =/2 |
|
Name: ->/2 |
|
Name: write/1 |
|
Name: print_bvalue/1 |
Module: translate |
Name: ground/1 |
|
Name: ->/3 |
|
Name: print_bexpr_or_subst/1 |
Module: translate |
Name: is_texpr/1 |
Module: foo_error |
Name: nonvar/1 |
b_state(root).
b_state(concrete_constants(_)).
b_state(const_and_vars(_,_)).
b_state(expanded_const_and_vars(_,_,_,_)).
b_state(expanded_vars(_,_)).
b_state([bind(_,_)|_]).
b_state([]).
Called:
Name: print_state/1 |
Module: translate |
binary_bool_op('<'(X,Y),X,Y,'<').
binary_bool_op('>'(X,Y),X,Y,'>').
binary_bool_op('>='(X,Y),X,Y,'>=').
binary_bool_op('<='(X,Y),X,Y,'=<').
binary_bool_op('=='(X,Y),X,Y,'==').
binary_bool_op('!='(X,Y),X,Y,'!=').
binary_bool_op(bool_and(X,Y),X,Y,'&&').
binary_bool_op(bool_or(X,Y),X,Y,'||').
Called:
Name: pp_csp_bool_expr/3 |
Module: translate |
binary_csp_op('|||'(X,Y,_Span),X,Y,'|||').
binary_csp_op('[]'(X,Y,_Span),X,Y,'[]').
binary_csp_op('|~|'(X,Y,_Span),X,Y,'|~|').
binary_csp_op(';'(X,Y,_Span),X,Y,';').
binary_csp_op('[>'(P,Q,_SrcSpan),P,Q,'[>').
binary_csp_op('/\\'(P,Q,_SrcSpan),P,Q,'/\\').
Called:
Name: pp_csp_process/3 |
Module: translate |
binary_infix(composition,';',20,left).
binary_infix(overwrite,'<+',160,left).
binary_infix(direct_product,'><',160,left). % Rodin requires parentheses
binary_infix(parallel_product,'||',20,left).
binary_infix(concat,'^',160,left).
binary_infix(relations,'<->',125,left).
binary_infix(partial_function,'+->',125,left).
binary_infix(total_function,'-->',125,left).
binary_infix(partial_injection,'>+>',125,left).
binary_infix(total_injection,'>->',125,left).
binary_infix(partial_surjection,'+->>',125,left).
binary_infix(total_surjection,Symbol,125,left) :-
(eventb_translation_mode -> Symbol = '->>'; Symbol = '-->>').
binary_infix(total_bijection,'>->>',125,left).
binary_infix(partial_bijection,'>+>>',125,left).
binary_infix(total_relation,'<<->',125,left). % only in Event-B
binary_infix(surjection_relation,'<->>',125,left). % only in Event-B
binary_infix(total_surjection_relation,'<<->>',125,left). % only in Event-B
binary_infix(insert_front,'->',160,left).
binary_infix(insert_tail,'<-',160,left).
binary_infix(domain_restriction,'<|',160,left).
binary_infix(domain_subtraction,'<<|',160,left).
binary_infix(range_restriction,'|>',160,left).
binary_infix(range_subtraction,'|>>',160,left).
binary_infix(intersection,'/\\',160,left).
binary_infix(union,'\\/',160,left).
binary_infix(restrict_front,'/|\\',160,left).
binary_infix(restrict_tail,'\\|/',160,left).
binary_infix(couple,'|->',160,left).
binary_infix(interval,'..',170,left).
binary_infix(add,+,180,left).
binary_infix(add_real,+,180,left).
binary_infix(minus,-,180,left).
binary_infix(minus_real,-,180,left).
binary_infix(set_subtraction,'\\',180,left) :- eventb_translation_mode,!. % symbol is not allowed by Atelier-B
binary_infix(set_subtraction,-,180,left).
binary_infix(minus_or_set_subtract,-,180,left).
binary_infix(multiplication,*,190,left).
binary_infix(multiplication_real,*,190,left).
binary_infix(cartesian_product,**,190,left) :- eventb_translation_mode,!.
binary_infix(cartesian_product,*,190,left).
binary_infix(mult_or_cart,*,190,left). % in case type checker not yet run
binary_infix(div,/,190,left).
binary_infix(div_real,/,190,left).
binary_infix(floored_div,div,190,left) :- animation_minor_mode(tla).
binary_infix(modulo,mod,190,left).
binary_infix(power_of,**,200,right).
binary_infix(power_of_real,**,200,right).
binary_infix(typeof,oftype,120,right). % Event-B oftype operator; usually removed by btypechecker, technically has no associativity in our parser, but right associativity matches better
binary_infix(ring,'\x2218\',160,left). % our B Parser gives ring same priority as direct_product or overwrite
binary_infix(implication,'=>',30,left).
binary_infix(conjunct,'&',40,left).
binary_infix(disjunct,or,40,left).
binary_infix(equivalence,'<=>',Prio,left) :- % in Rodin this has the same priority as implication
(eventb_translation_mode -> Prio=30 ; Prio=60).
binary_infix(equal,=,60,left).
binary_infix(not_equal,'/=',160,left).
binary_infix(less_equal,'<=',160,left).
binary_infix(less,'<',160,left).
binary_infix(less_equal_real,'<=',160,left).
binary_infix(less_real,'<',160,left).
binary_infix(greater_equal,'>=',160,left).
binary_infix(greater,'>',160,left).
binary_infix(member,':',60,left).
binary_infix(not_member,'/:',160,left).
binary_infix(subset,'<:',110,left).
binary_infix(subset_strict,'<<:',110,left).
binary_infix(not_subset,'/<:',110,left).
binary_infix(not_subset_strict,'/<<:',110,left).
binary_infix(values_entry,'=',60,left).
Calls:
Name: =/2 |
|
| Module: translate | |
Name: ->/3 |
|
Name: animation_minor_mode/1 |
Module: specfile |
Name: ! |
Called:
Name: kernel_predicate/7 |
Module: kernel_mappings |
Name: binary_infix_in_mode/4 |
Module: translate |
Name: is_nontrivial_negation/4 |
Module: translate |
Name: pp_pred_nested/5 |
Module: translate |
binary_infix_in_mode(Op,Trans2,Prio,Assoc) :-
binary_infix(Op,Trans,Prio,Assoc), % write(op(Op,Trans)),nl,
translate_in_mode(Op,Trans,Trans2).
Calls:
Name: translate_in_mode/3 |
Module: translate |
Name: binary_infix/4 |
Module: translate |
Called:
| Module: translate | |
Name: render_operator_arg/3 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
| Module: translate | |
Name: binary_infix_symbol/2 |
Module: translate |
Name: pretty_type2/4 |
Module: translate |
binary_infix_symbol(b(T,_,_),Symbol) :- functor(T,F,2), binary_infix_in_mode(F,Symbol,_,_).
Calls:
Name: binary_infix_in_mode/4 |
Module: translate |
Name: functor/3 |
Called:
Name: pp_expr2/5 |
Module: translate |
| Module: translate |
binary_pred('member'(X,Y),X,Y,member).
binary_pred('<'(X,Y),X,Y,'<').
binary_pred('>'(X,Y),X,Y,'>').
binary_pred('>='(X,Y),X,Y,'>=').
binary_pred('<='(X,Y),X,Y,'=<').
binary_pred('elem'(X,Y),X,Y,is_elem_list).
binary_pred('=='(X,Y),X,Y,equal_element).
binary_pred('!='(X,Y),X,Y,not_equal_element).
Called:
Name: pp_csp_bool_expr/3 |
Module: translate |
Block: block_set_up_limit_reached(-,?,?)
block_set_up_limit_reached([],_,_).
block_set_up_limit_reached([_|T],Limit,LimitReached) :-
(Limit<1 -> LimitReached=limit_reached
; L1 is Limit-1, block_set_up_limit_reached(T,L1,LimitReached)).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: is/2 |
|
Name: =/2 |
|
Name: </2 |
|
Name: ->/3 |
Called:
Name: set_up_limit_reached/3 |
Module: translate |
boolean_aux(boolean_true,pred_true).
boolean_aux(boolean_false,pred_false).
boolean_aux(value(V),BV) :- nonvar(V),!,BV=V.
Calls:
Name: =/2 |
|
Name: ! |
|
Name: nonvar/1 |
Called:
Name: is_boolean_value/2 |
Module: translate |
Dynamic: true
bugly_count(0).
Called:
Name: genbuglynr/1 |
Module: translate |
bugly_scramble_id(ID,Res) :- var(ID),!, add_internal_error('Illegal call: ',bugly_scramble_id(ID,Res)), ID=Res.
bugly_scramble_id(ID,Res) :- bugly_scramble_id_cache(ID,ScrambledID),!,
Res=ScrambledID.
bugly_scramble_id(ID,Res) :- %write(gen_id(ID,Res)),nl,
genbuglynr(Nr),
gen_bugly_id(Nr,ScrambledID),
assertz(bugly_scramble_id_cache(ID,ScrambledID)),
%format(user_output,'BUGLY scramble ~w --> ~w~n',[ID,ScrambledID]),
Res = ScrambledID.
Calls:
Name: =/2 |
|
Name: assertz/1 |
|
Name: gen_bugly_id/2 |
Module: translate |
Name: genbuglynr/1 |
Module: translate |
Name: ! |
|
Name: bugly_scramble_id_cache/2 |
dynamic predicate |
Name: add_internal_error/2 |
Module: foo_error |
Name: var/1 |
Called:
Name: opt_scramble_id/2 |
Module: translate |
Name: pp_bugly_string/3 |
Module: translate |
Name: ppatom_opt_scramble/3 |
Module: translate |
bugly_separator(32).
bugly_separator(0'-).
bugly_separator(0'_).
bugly_separator(0',).
bugly_separator(0'.).
bugly_separator(0';).
bugly_separator(0':).
bugly_separator(0'#).
bugly_separator(0'[).
bugly_separator(0']).
bugly_separator(0'().
bugly_separator(0')).
Called:
Name: decompose_string/3 |
Module: translate |
bynary_numeric_operation('+'(X,Y),X,Y,'+').
bynary_numeric_operation('-'(X,Y),X,Y,'-').
bynary_numeric_operation('*'(X,Y),X,Y,'*').
bynary_numeric_operation('/'(X,Y),X,Y,'/').
bynary_numeric_operation('%'(X,Y),X,Y,'%').
Called:
Name: pp_csp_value/3 |
Module: translate |
Meta: call_pp_with_no_limit_and_parseable(0)
call_pp_with_no_limit_and_parseable(PP_Call) :-
temporary_set_preference(translate_ids_to_parseable_format,true,CHNG),
temporary_set_preference(expand_avl_upto,-1,CHNG2),
call_cleanup(call(PP_Call),
(reset_temporary_preference(translate_ids_to_parseable_format,CHNG),
reset_temporary_preference(expand_avl_upto,CHNG2))).
Calls:
Name: call_cleanup/2 |
|
Name: temporary_set_preference/3 |
Module: foo_error |
Called:
| Module: translate | |
| Module: translate | |
Name: translate_machine/3 |
Module: translate |
call_stack_arrow_atom_symbol(' \x2192\ '). % see total function
Called:
Name: render_seperator/3 |
Module: translate |
can_indent_expr(comprehension_set(_,_)).
can_indent_expr(convert_bool(_)).
can_indent_expr(if_then_else(_,_,_)).
can_indent_expr(let_expression(_,_,_)).
Called:
Name: can_indent_texpr/1 |
Module: translate |
Name: translate_subst2/3 |
Module: translate |
can_indent_texpr(b(E,_,_)) :- can_indent_expr(E).
Calls:
Name: can_indent_expr/1 |
Module: translate |
Called:
Name: pp_pred_nested/5 |
Module: translate |
check_info(Expr,_,Info) :- var(Info), add_error(translate,'Illegal variable info field for expression: ', Expr),fail.
check_info(_,_,_).
Calls:
Name: fail |
|
Name: add_error/3 |
Module: foo_error |
Name: var/1 |
Called:
Name: pp_expr0/7 |
Module: translate |
clear_translation_constants :- %print_message(clearing),
retractall(deferred_set_constant(_,_,_)).
Calls:
Name: retractall/1 |
Called:
Name: try_pp_b_state/4 |
Module: translate |
| Module: translate |
colour_construct(pred_true,green).
colour_construct(pred_false,red).
colour_construct(boolean_true,green).
colour_construct(boolean_false,red).
colour_construct(truth,green).
colour_construct(falsity,red).
colour_construct(_,blue).
Called:
Name: colour_translation/3 |
Module: translate |
colour_translation(F,S1,Result) :- use_colour_codes,
colour_construct(F,Colour),!,
get_terminal_colour_code(Colour,R1),
get_terminal_colour_code(reset,R2),
ajoin([R1,S1,R2],Result).
Calls:
Name: ajoin/2 |
Module: foo_error |
| Module: tools_printing | |
Name: ! |
|
Name: colour_construct/2 |
Module: translate |
Name: use_colour_codes/0 |
Module: translate |
Called:
Name: translate_in_mode/3 |
Module: translate |
combine_span_pred(unknown,S,_,_,Res) :- !, Res=S.
combine_span_pred(new_scope(Kind,Paras,Vals,P1),P2,Name,Section,Res) :- !,
maplist(create_tvalue,Paras,Vals,TVals),
add_span_label(Kind,Name,Section,P1,P1L),
conjunct_predicates([P1L,P2],Body),
(Paras=[] -> Res=Body ; Res = b(let_predicate(Paras,TVals,Body),pred,[])). % translate:print_bexpr(Res),nl.
combine_span_pred(P1,P2,_,_,Res) :-
conjunct_predicates([P1,P2],Res).
Calls:
Name: conjunct_predicates/2 |
Module: foo_error |
Name: =/2 |
|
Name: ->/3 |
|
Name: add_span_label/5 |
Module: translate |
Name: maplist/4 |
Module: foo_error |
Name: ! |
Called:
Name: explain_event_trace4/6 |
Module: translate |
compute_non_det_constants2([],State) :- adapt_state(State,Template,Result),
(Result = [] -> assertz(non_det_constants(A,A)) % in case all variables are deterministic: just show them
; assertz(non_det_constants(Template,Result))).
compute_non_det_constants2([Dst|T],State) :-
state_space:visited_expression(Dst,concrete_constants(State2)),
lub_state(State,State2,NewState),
compute_non_det_constants2(T,NewState).
Calls:
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: lub_state/3 |
Module: translate |
Name: visited_expression/2 |
Module: state_space |
Name: assertz/1 |
|
Name: =/2 |
|
Name: ->/3 |
|
Name: adapt_state/3 |
Module: translate |
Called:
Name: get_non_det_constant/2 |
Module: translate |
constants(pred_true,'TRUE').
constants(pred_false,'FALSE').
constants(boolean_true,'TRUE').
constants(boolean_false,'FALSE').
constants(max_int,'MAXINT').
constants(min_int,'MININT').
constants(empty_set,'{}').
constants(bool_set,'BOOL').
constants(float_set,'FLOAT').
constants(real_set,'REAL').
constants(string_set,'STRING').
constants(empty_sequence,'[]').
constants(event_b_identity,'id').
constants(truth,Res) :- eventb_translation_mode,!,Res=true.
constants(truth,Res) :- animation_minor_mode(tla),!,Res='TRUE'.
constants(truth,Res) :- atelierb_mode(_),!,Res='(TRUE:BOOL)'. % __truth; we could also do TRUE=TRUE
constants(truth,'btrue').
constants(falsity,Res) :- eventb_translation_mode,!,Res=false.
constants(falsity,Res) :- animation_minor_mode(tla),!,Res='FALSE'.
constants(falsity,Res) :- atelierb_mode(_),!,Res='(TRUE=FALSE)'.
constants(falsity,'bfalse'). % __falsity
constants(unknown_truth_value(Msg),Res) :- % special internal constant
ajoin(['?(',Msg,')'],Res).
Calls:
Name: ajoin/2 |
Module: foo_error |
Name: =/2 |
|
Name: ! |
|
Name: atelierb_mode/1 |
dynamic predicate |
Name: animation_minor_mode/1 |
Module: specfile |
| Module: translate |
Called:
Name: constants_in_mode/2 |
Module: translate |
constants_in_mode(F,S) :-
constants(F,S1), translate_in_mode(F,S1,S).
Calls:
Name: translate_in_mode/3 |
Module: translate |
Name: constants/2 |
Module: translate |
Called:
Name: pp_expr2/5 |
Module: translate |
Name: pp_value/4 |
Module: translate |
| Module: translate |
conversion_check(Machine) :-
animation_mode(b),
animation_minor_mode(eventb),
get_section(initialisation,Machine,Init),
get_texpr_expr(Init,rlevent(_Id,_Sec,_St,_Par,_Grd,_Thms,_Act,_VW,_PW,_Ums,[])).
Calls:
Name: get_texpr_expr/2 |
Module: foo_error |
Name: get_section/3 |
Module: foo_error |
Name: animation_minor_mode/1 |
Module: specfile |
Name: animation_mode/1 |
Module: specfile |
Called:
| Module: translate |
convert_and_ajoin_ids(UsedIds,AllIdsWithCommas) :-
maplist(convert_id,UsedIds,ConvUsedIds),
ajoin_with_sep(ConvUsedIds,', ',AllIdsWithCommas).
Calls:
Name: ajoin_with_sep/3 |
Module: foo_error |
Name: maplist/3 |
Module: foo_error |
Called:
| Module: translate | |
Name: explain_classicb_path/4 |
Module: translate |
| Module: translate |
convert_avlset_into_sequence(Avl,Sequence) :-
\+ eventb_translation_mode,
convert_avlset_into_sequence2(Avl,1,Sequence).
Called:
| Module: translate | |
Name: pp_value/4 |
Module: translate |
Name: pp_tla_value/4 |
Module: translate |
convert_avlset_into_sequence2(Avl,_Index,[]) :-
empty_avl(Avl),!.
convert_avlset_into_sequence2(Avl,Index,[Head|Tail]) :-
avl_del_min(Avl, Min, _ ,NewAvl),
nonvar(Min), Min=(L,Head),
ground(L), L=int(Index),
Index2 is Index + 1,
convert_avlset_into_sequence2(NewAvl,Index2,Tail).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: is/2 |
|
Name: =/2 |
|
Name: ground/1 |
|
Name: nonvar/1 |
|
Name: avl_del_min/4 |
Module: foo_error |
Name: ! |
|
Name: empty_avl/1 |
Module: foo_error |
Called:
| Module: translate |
convert_event(TEvent,Parameters,TSubstitution) :-
get_texpr_expr(TEvent,rlevent(_Id,_Section,_Status,_Parameters,Guard,_Theorems,Actions,_VariableWitnesses,_ParameterWitnesses,_Ums,_Refined)),
in_parallel(Actions,PAction),
convert_event2(Parameters,Guard,PAction,TSubstitution).
Calls:
Name: convert_event2/4 |
Module: translate |
Name: in_parallel/2 |
Module: translate |
Name: get_texpr_expr/2 |
Module: foo_error |
Called:
Name: convert_eventop/2 |
Module: translate |
| Module: translate |
convert_event2([],Guard,Action,Action) :-
is_truth(Guard),!.
convert_event2([],Guard,Action,Select) :-
!,create_texpr(select([When]),subst,[],Select),
create_texpr(select_when(Guard,Action),subst,[],When).
convert_event2(Parameters,Guard,Action,Any) :-
create_texpr(any(Parameters,Guard,Action),subst,[],Any).
Calls:
Name: create_texpr/4 |
Module: foo_error |
Name: ! |
|
Name: is_truth/1 |
Module: foo_error |
Called:
Name: convert_event/3 |
Module: translate |
convert_eventb_classicalb(EBMachine,CBMachine) :-
select_section(operation_bodies,In,Out,EBMachine,CBMachine1),
maplist(convert_eventop,In,Out),
select_section(initialisation,IIn,IOut,CBMachine1,CBMachine),
convert_event(IIn,[],IOut).
Calls:
Name: convert_event/3 |
Module: translate |
Name: select_section/5 |
Module: foo_error |
Name: maplist/3 |
Module: foo_error |
Called:
| Module: translate |
convert_eventop(EBOp,CBOp) :-
get_texpr_expr(EBOp,operation(Id,[],Args,EBBody)),
get_texpr_info(EBOp,Info),
convert_event(EBBody,Args,CBBody),
% Remove the arguments
create_texpr(operation(Id,[],[],CBBody),op([],[]),Info,CBOp).
Calls:
Name: create_texpr/4 |
Module: foo_error |
Name: convert_event/3 |
Module: translate |
Name: get_texpr_info/2 |
Module: foo_error |
Name: get_texpr_expr/2 |
Module: foo_error |
convert_id(b(identifier(ID),_,_),CAtom) :- !, convert_id(ID,CAtom).
convert_id(Atom,CAtom) :- atom(Atom),!,pp_identifier(Atom,Codes,[]), atom_codes(CAtom,Codes).
convert_id(E,CAtom) :- add_internal_error('Illegal id: ',E), CAtom = '?'.
Calls:
Name: =/2 |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: atom_codes/2 |
|
Name: pp_identifier/3 |
Module: translate |
Name: ! |
|
Name: atom/1 |
|
Name: RECURSIVE_CALL/2 |
Module: translate |
convert_set_into_sequence(Set,Seq) :-
nonvar(Set), \+ eventb_translation_mode,
convert_set_into_sequence1(Set,Seq).
Called:
Name: pp_value/4 |
Module: translate |
| Module: translate |
convert_set_into_sequence1(avl_set(A),Seq) :- !, check_is_non_empty_avl(A),
avl_size(A,Sz),size_is_in_set_limit(Sz),convert_avlset_into_sequence(A,Seq).
convert_set_into_sequence1([],Seq) :- !, Seq=[].
convert_set_into_sequence1(Set,Seq) :-
convert_set_into_sequence2(Set,0,_,SetElems,Seq),ground(SetElems).
Calls:
Name: ground/1 |
|
| Module: translate | |
Name: =/2 |
|
Name: ! |
|
| Module: translate | |
Name: size_is_in_set_limit/1 |
Module: translate |
Name: avl_size/2 |
Module: foo_error |
Name: check_is_non_empty_avl/1 |
Module: avl_tools |
Called:
| Module: translate |
convert_set_into_sequence2([],_Max,([],[]),_,_Seq).
convert_set_into_sequence2([Pair|T],Max,Last,SetElems,Seq) :-
nonvar(Pair),nonvar(T),Pair=(Index,H),ground(Index),
Index=int(Nr),
insert_el_into_seq(Nr,H,Seq,SetElems,L),
(Nr>Max -> NMax=Nr,NLast=L ; NMax=Max,NLast=Last),
convert_set_into_sequence2(T,NMax,NLast,SetElems,Seq).
Calls:
Name: RECURSIVE_CALL/5 |
Module: translate |
Name: =/2 |
|
Name: >/2 |
|
Name: ->/3 |
|
Name: insert_el_into_seq/5 |
Module: translate |
Name: ground/1 |
|
Name: nonvar/1 |
Called:
| Module: translate |
create_label(Kind,Name,Section,Label) :- ajoin([Kind,' in ',Section,':',Name],Label).
Calls:
Name: ajoin/2 |
Module: foo_error |
Called:
Name: add_span_label/5 |
Module: translate |
dcg_set_up_limit_reached(Limit,LimitReached,InList,InList) :- set_up_limit_reached(InList,Limit,LimitReached).
Calls:
Name: set_up_limit_reached/3 |
Module: translate |
Called:
Name: pp_b_state_list/4 |
Module: translate |
Name: try_pp_b_state/4 |
Module: translate |
debug_print_bexpr(E) :- debug:debug_mode(off) -> true ; print_bexpr(E).
Calls:
Name: print_bexpr/1 |
Module: translate |
Name: true |
|
Name: debug_mode/1 |
Module: debug |
Name: ->/3 |
dec_lvl(Old,New) --> {New=Old}, !,[].
dec_lvl(_,_) --> decrease_indentation_level, indent(' '),pp_atom_indent(')').
Calls:
Name: pp_atom_indent/3 |
Module: translate |
Name: indent/3 |
Module: translate |
Name: decrease_indentation_level/2 |
Module: foo_error |
Name: =/2 |
|
Name: ! |
Called:
Name: pp_pred_nested/5 |
Module: translate |
decompose_string([Sep|T],[Sep],T) :- bugly_separator(Sep).
Calls:
Name: bugly_separator/1 |
Module: translate |
Called:
| Module: translate |
decouplise_expr(1,E,R) :- !,R=[E].
decouplise_expr(N,E,R) :-
get_texpr_expr(E,couple(A,B)),!,
N2 is N-1,
decouplise_expr(N2,A,R1),append(R1,[B],R).
decouplise_expr(N,E,[E]) :-
print_message(call_failed(decouplise_expr(N,E,_))),nl.
Calls:
Name: nl |
|
Name: print_message/1 |
Module: foo_error |
Name: append/3 |
|
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: is/2 |
|
Name: ! |
|
Name: get_texpr_expr/2 |
Module: foo_error |
Name: =/2 |
Called:
Name: pp_theory_operator/5 |
Module: translate |
decrease_indentation_level(N) --> indention_level(L,New), {New is L-N}.
Calls:
Name: =/2 |
|
Name: is/2 |
|
Name: indention_level/4 |
Module: translate |
Called:
Name: pp_let_expr_nested/5 |
Module: translate |
Name: pp_let_nested/5 |
Module: translate |
Name: pp_pred_nested/5 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
decrease_indentation_level --> indention_level(L,New), {New is L-1}.
def_description(substitution,'SUBSTITUTION ').
def_description(expression,'EXPRESSION ').
def_description(predicate,'PREDICATE ').
Called:
Name: translate_def/3 |
Module: translate |
definition_decl_from_library(definition_decl(printf,predicate,_,[_,_],_,_Deps),'LibraryIO.def').
definition_decl_from_library(definition_decl('STRING_IS_DECIMAL',predicate,_,[_],_,_Deps),'LibraryStrings.def').
definition_decl_from_library(definition_decl('SHA_HASH',expression,_,[_],_,_Deps),'LibraryHash.def').
definition_decl_from_library(definition_decl('CHOOSE',expression,_,[_],_,_Deps),'CHOOSE.def').
definition_decl_from_library(definition_decl('SCCS',expression,_,[_],_,_Deps),'SCCS.def').
definition_decl_from_library(definition_decl('SORT',expression,_,[_],_,_Deps),'SORT.def').
definition_decl_from_library(definition_decl('random_element',expression,_,[_],_,_Deps),'LibraryRandom.def').
definition_decl_from_library(definition_decl('SIN',expression,_,[_],_,_Deps),'LibraryMath.def').
definition_decl_from_library(definition_decl('RMUL',expression,_,[_,_],_,_Deps),'LibraryReals.def').
definition_decl_from_library(definition_decl('REGEX_MATCH',predicate,_,[_,_],_,_Deps),'LibraryRegex.def').
definition_decl_from_library(definition_decl('ASSERT_EXPR',expression,_,[_,_,_],_,_Deps),'LibraryProB.def').
definition_decl_from_library(definition_decl('svg_points',expression,_,[_],_,_Deps),'LibrarySVG.def').
definition_decl_from_library(definition_decl('FULL_FILES',expression,_,[_],_,_Deps),'LibraryFiles.def').
definition_decl_from_library(definition_decl('READ_XML_FROM_STRING',expression,_,[_],_,_Deps),'LibraryXML.def').
definition_decl_from_library(definition_decl('READ_CSV',expression,_,[_],_,_Deps),'LibraryCSV.def').
Called:
| Module: translate |
detect_lambda_comprehension([ID1|T],Body, FrontIDs,LambdaBody,ToExpr) :-
get_last(T,ID1,FrontIDs,LastID),
FrontIDs=[_|_], % at least one identifier for the lambda
is_lambda_result_id(LastID,Suffix),
% nl, write(lambda(Body,T,ID1)),nl,
(is_an_equality(Body,From,ToExpr) -> LambdaBody = b(truth,pred,[])
; is_a_conjunct(Body,LambdaBody,Equality),
is_an_equality(Equality,From,ToExpr)),
is_lambda_result_id(From,Suffix).
Calls:
Name: is_lambda_result_id/2 |
Module: translate |
Name: is_an_equality/3 |
Module: translate |
Name: is_a_conjunct/3 |
Module: foo_error |
Name: =/2 |
|
Name: ->/3 |
|
Name: get_last/4 |
Module: translate |
Called:
Name: pp_comprehension_set5/7 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
do_indention(0,T,R) :- !, R=T.
do_indention(N,[32|I],O) :-
N>0,N2 is N-1, do_indention(N2,I,O).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: is/2 |
|
Name: >/2 |
|
Name: =/2 |
|
Name: ! |
dot_bullet_symbol --> {latex_mode},!, "\\cdot ".
dot_bullet_symbol --> [183]. "ยท". % dot also used in Rodin
dot_symbol --> {latex_mode},!, "\\cdot ".
dot_symbol --> {unicode_mode},!, [183]. "ยท". % dot also used in Rodin
dot_symbol --> ".".
dummy_def_body(Name,Expr) :-
functor(Expr,F,_), (F=external_function_call ; F=external_pred_call),
arg(2,Expr,Name).
Calls:
Name: arg/3 |
|
Name: =/2 |
|
Name: functor/3 |
Called:
Name: translate_def/3 |
Module: translate |
empty_set_symbol --> {get_preference(translate_print_all_sequences,true)},!, pp_empty_sequence.
empty_set_symbol --> {unicode_mode},!, [8709].
empty_set_symbol --> {latex_mode},!, "\\emptyset ".
empty_set_symbol --> "{}".
end_size(RefVar,Len,X,X) :- % compute how many chars the dcg has added wrt start_size
len(RefVar,X,Len).
Called:
Name: pp_b_state_comma_list/5 |
Module: translate |
enter_comment --> {retract(comment_level(N))},!, "(*", {N1 is N+1, assertz(comment_level(N1))}.
enter_comment --> "/*", {assertz(comment_level(1))}.
eventb_integer_mapping('INTEGER','INT').
eventb_integer_mapping('NATURAL','NAT').
eventb_integer_mapping('NATURAL1','NAT1').
Called:
Name: integer_set_mapping/3 |
Module: translate |
eventb_translation_mode :- animation_minor_mode(eventb),!.
eventb_translation_mode :- force_eventb_rodin_mode.
Calls:
Name: force_eventb_rodin_mode |
dynamic predicate |
Name: ! |
|
Name: animation_minor_mode/1 |
Module: specfile |
Called:
Name: pp_expr1/7 |
Module: translate |
Name: pp_lambda_identifiers/4 |
Module: translate |
Name: pp_expr_l_pair_in_mode/4 |
Module: translate |
Name: pp_expr_let/6 |
Module: translate |
Name: was_eventb_destructor/4 |
Module: translate |
Name: pp_pred_nested/5 |
Module: translate |
Name: pp_expr0/7 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
| Module: translate | |
Name: pp_expr_ids_in_mode/4 |
Module: translate |
Name: constants/2 |
Module: translate |
Name: pp_expr_let_exists/6 |
Module: translate |
| Module: translate | |
Name: pp_identifier/3 |
Module: translate |
Name: integer_set_mapping/3 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
Name: pp_comprehension_set5/7 |
Module: translate |
Name: binary_infix/4 |
Module: translate |
exctract_span_pred_from_subst(b(assign(TIDs,Exprs),subst,Infos),SpanPred) :-
maplist(extract_equality(Infos),TIDs,Exprs,List),
conjunct_predicates(List,SpanPred).
Calls:
Name: conjunct_predicates/2 |
Module: foo_error |
Name: maplist/4 |
Module: foo_error |
Called:
Name: explain_event_step4/4 |
Module: translate |
exists_symbol --> {latex_mode},!, "\\exists ".
exists_symbol --> {unicode_mode},!, pp_colour_code(magenta),[8707],pp_colour_code(reset).
exists_symbol --> pp_colour_code(blue),"#",pp_colour_code(reset).
exit_comment --> {retract(comment_level(N))},!,
({N>1} -> "*)", {N1 is N-1, assertz(comment_level(N1))} ; "*/").
exit_comment --> "*/", {add_internal_error('Unmatched closing comment:',exit_comment)}.
explain_abort_error_type(well_definedness_error) --> !, "An expression was not well-defined.\n".
explain_abort_error_type(card_overflow_error) --> !, "The cardinality of a finite set was too large to be represented.\n".
explain_abort_error_type(while_variant_error) --> !, "A while-loop VARIANT error occurred.\n".
explain_abort_error_type(while_invariant_violation) --> !, "A while-loop INVARIANT error occurred.\n".
explain_abort_error_type(precondition_error) --> !, "A precondition (PRE) error occurred.\n".
explain_abort_error_type(assert_error) --> !, "An ASSERT error occurred.\n".
explain_abort_error_type(Type) --> "Error occurred: ", ppterm(Type), "\n".
Called:
Name: explain_state_error2/4 |
Module: translate |
explain_action_not_executable(TAction,no_wd_error) --> {is_assignment_to(TAction,IDs)},!,
" ERROR: the following assignment to ", ppatoms(IDs),"was not executable\n",
" (probably in conflict with another assignment, check SIM or EQL PO):", % or WD error
translate_subst_with_indention_and_label(TAction,4).
explain_action_not_executable(TAction,wd_error_possible) --> !,
" ERROR: the following action was not executable\n",
" (possibly due to a WD error):",
translate_subst_with_indention_and_label(TAction,4).
explain_action_not_executable(TAction,_WDErr) -->
" ERROR: the following action was not executable:",
translate_subst_with_indention_and_label(TAction,4).
Calls:
| Module: translate | |
Name: =/2 |
|
Name: ! |
|
Name: ppatoms/3 |
Module: translate |
Name: is_assignment_to/2 |
Module: translate |
Called:
Name: explain_event_step4/4 |
Module: translate |
explain_classicb_path(skip,I) --> indent_ws(I), "skip".
explain_classicb_path(parallel(L),I) --> indent_ws(I), "BEGIN\n", {I1 is I+1}, explain_parallel(L,I1), " END".
explain_classicb_path(sequence(A,B),I) --> explain_classicb_path(A,I), " ;\n", explain_classicb_path(B,I).
explain_classicb_path(if_skip,I) --> indent_ws(I), "IF skipped (no branch applicable)".
explain_classicb_path(if(CaseNr,Path),I) --> indent_ws(I), "IF branch ", ppnumber(CaseNr),"\n",
{I1 is I+1}, explain_classicb_path(Path,I1).
explain_classicb_path(pre(Cond,Path),I) --> indent_ws(I), "PRE ",
{translate_bvalue_with_limit(Cond,50,CS),I1 is I+1}, ppatom(CS), " THEN\n", explain_classicb_path(Path,I1).
explain_classicb_path(let(Path),I) --> indent_ws(I), "LET\n", {I1 is I+1}, explain_classicb_path(Path,I1).
explain_classicb_path(assertion_violated,I) --> indent_ws(I), "ASSERT FALSE".
explain_classicb_path(assertion(Path),I) --> indent_ws(I), "ASSERT TRUE THEN\n",
{I1 is I+1}, explain_classicb_path(Path,I1).
explain_classicb_path(witness(Path),I) --> indent_ws(I), "WITNESS TRUE THEN\n",
{I1 is I+1}, explain_classicb_path(Path,I1).
explain_classicb_path(any(_,Path),I) --> indent_ws(I), "ANY\n", {I1 is I+1}, explain_classicb_path(Path,I1).
explain_classicb_path(var(Names,Path),I) --> indent_ws(I), "VAR ",
{convert_and_ajoin_ids(Names,NS),I1 is I+1}, ppatom(NS), " IN\n", explain_classicb_path(Path,I1).
explain_classicb_path(select(Nr,Path),I) --> indent_ws(I), "SELECT branch ", ppnumber(Nr), "\n",
{I1 is I+1}, explain_classicb_path(Path,I1).
explain_classicb_path(choice(Nr,Path),I) --> indent_ws(I), "CHOICE branch ", ppnumber(Nr), "\n",
{I1 is I+1}, explain_classicb_path(Path,I1).
explain_classicb_path(while(Variant,while_bpath(LoopCount,LastIterPath)),I) --> indent_ws(I), {translate_bvalue_with_limit(Variant,400,VS)},
"WHILE (VARIANT = ", ppatom(VS), ", iterations=", ppnumber(LoopCount), ")",
({LastIterPath=none} ->
; " DO (last iteration)\n", {I1 is I+1}, explain_classicb_path(LastIterPath,I1)).
explain_classicb_path(assign_single_id(ID,Value),I) --> {translate_bvalue_with_limit(Value,400,VS)},
indent_ws(I), ppatom(ID), " := ", ppatom(VS).
explain_classicb_path(assign(LHS,Vals),I) -->
{translate_bexpression_with_limit(LHS,LS),translate_bvalues_with_limit(Vals,400,VS)},
indent_ws(I), ppatom(LS), " := ", ppatom(VS).
explain_classicb_path(becomes_element_of(LHS,Value),I) -->
{translate_bexpression_with_limit(LHS,LS),translate_bvalue_with_limit(Value,400,VS)},
indent_ws(I), ppatom(LS), " :: {", ppatom(VS), "}".
explain_classicb_path(becomes_such(Names,Values),I) --> indent_ws(I),
{convert_and_ajoin_ids(Names,NS),translate_bvalues_with_limit(Values,400,VS)},
ppatom(NS), " : ( ", ppatom(VS)," )".
explain_classicb_path(operation_call(Name,ResultNames,Paras,Results, IPath),I) --> indent_ws(I),
{translate_bvalues_with_limit(Paras,400,PS)},
({Results=[_|_],translate_bvalues_with_limit(Results,400,RS),
translate_bexpression_with_limit(ResultNames,RNS)}
-> ppatom(RNS), " := ", ppatom(RS)," <-- " ; ""),
ppatom(Name), "(", ppatom(PS), ") == BEGIN\n", explain_classicb_path(IPath,I), "\n",
indent_ws(I), "END".
explain_classicb_path(external_subst(Name),I) --> indent_ws(I), ppatom(Name).
explain_classicb_path([H|T],I) -->
{member(path(Path),[H|T]),I1 is I+1},!,explain_classicb_path(Path,I1). % inner path of operation_call
explain_classicb_path(P,_I) --> {write(unknown_path(P)),nl}, "??".
Calls:
Name: =/2 |
|
Name: nl |
|
Name: write/1 |
|
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: ! |
|
Name: is/2 |
|
Name: member/2 |
|
Name: ppatom/3 |
Module: translate |
Name: indent_ws/3 |
Module: translate |
| Module: translate | |
| Module: translate | |
Name: ->/3 |
|
Name: convert_and_ajoin_ids/2 |
Module: translate |
| Module: translate | |
Name: ppnumber/3 |
Module: translate |
Name: explain_parallel/4 |
Module: translate |
Called:
Name: explain_parallel/4 |
Module: translate |
| Module: translate |
explain_error_context1([H]) --> !,explain_error_context1(H).
explain_error_context1(span_context(Span,Context)) --> !,
explain_span(Span),"\n",
explain_error_context2(Context).
explain_error_context1(Ctxt) --> explain_error_context2(Ctxt).
Calls:
Name: explain_error_context2/3 |
Module: translate |
Name: =/2 |
|
Name: explain_span/3 |
Module: translate |
Name: ! |
|
Name: RECURSIVE_CALL/3 |
Module: translate |
Called:
Name: explain_state_error2/4 |
Module: translate |
explain_error_context2([H]) --> !,explain_error_context2(H).
explain_error_context2(span_context(Span,Context)) --> !,
explain_span(Span),"\n",
explain_error_context2(Context).
explain_error_context2(checking_invariant) --> !,
{get_specification_description_codes(invariant,I)}, I, ":\n ", "INVARIANT:\n ",
pp_current_state. % assumes explain is called in the right state ! ; otherwise we need to store the state id
explain_error_context2(checking_assertions) --> !,
{get_specification_description_codes(assertions,A)}, A, ":\n ", "ASSERTIONS:\n ",
pp_current_state. % assumes explain is called in the right state ! ; otherwise we need to store the state id
explain_error_context2(checking_negation_of_invariant(State)) --> !,
"not(INVARIANT):\n State: ",
pp_b_state(State,1000).
explain_error_context2(operation('$setup_constants',StateID)) --> !,
{get_specification_description_codes(properties,P)}, P, ":\n State: ",
pp_context_state(StateID).
explain_error_context2(operation(OpName,StateID)) --> !,
{get_specification_description_codes(operation,OP)}, OP, ": ", "EVENT/OPERATION: ",
{translate_operation_name(OpName,TOp)},
ppterm(TOp), "\n ",
pp_context_state(StateID).
explain_error_context2(checking_context(Check,Name)) --> !,
ppterm(Check),ppterm(Name), "\n ".
explain_error_context2(loading_context(Name)) --> !,
"Loading: ",ppterm(Name), "\n ".
explain_error_context2(visb_error_context(Class,SvgId,OpNameOrAttr,Span)) --> !,
translate_error_context2(visb_error_context(Class,SvgId,OpNameOrAttr,Span)).
explain_error_context2(X) --> "UNKNOWN ERROR CONTEXT:\n ", ppterm(X).
Calls:
Name: ppterm/3 |
Module: translate |
Name: =/2 |
|
| Module: translate | |
Name: ! |
|
Name: pp_context_state/3 |
Module: translate |
| Module: specfile | |
Name: phrase/3 |
|
| Module: translate | |
Name: pp_b_state/4 |
Module: translate |
Name: pp_current_state/2 |
Module: foo_error |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: explain_span/3 |
Module: translate |
Called:
Name: explain_error_context1/3 |
Module: translate |
explain_event_step(variant_checked_pre(CType,Variant,Value)) -->
" ",ppatom(CType)," event: checking if the variant is non-negative:\n",
" variant: ",pp_expr(Variant,_,_LR),"\n",
" its value: ",pp_value(Value),"\n".
explain_event_step(variant_negative(CType,Variant,Value)) -->
explain_event_step(variant_checked_pre(CType,Variant,Value)),
" ERROR: variant is negative\n".
explain_event_step(variant_checked_post(CType,Variant,EntryValue,ExitValue)) -->
" ",ppatom(CType)," event: checking if the variant is ",
( {CType==convergent} -> "decreased:\n" ; "not increased:\n"),
" variant: ", pp_expr(Variant,_,_LR), "\n",
" its value before: ", pp_value(EntryValue),"\n",
" its value after: ", pp_value(ExitValue),"\n".
explain_event_step(invalid_variant(CType,Variant,EntryValue,ExitValue)) -->
explain_event_step(variant_checked_post(CType,Variant,EntryValue,ExitValue)),
" ERROR: variant has ",
({CType==convergent} -> "not been decreased\n"; "has been increased\n").
explain_event_step(no_witness_found(Type,Id,Predicate)) -->
witness_intro(Id,Predicate,Type),
" ERROR: no solution for witness predicate found!\n".
explain_event_step(action(Lhs,_Rhs,Values)) -->
" executing an action:\n",
show_assignments(Lhs,Values).
explain_event_step(action_set(Lhs,_Rhs,ValueSet,Values)) -->
" executing an action:\n ",
pp_expr_l(Lhs,_LR)," :: ",pp_value(ValueSet),"\n choosing\n",
show_assignments(Lhs,Values).
explain_event_step(action_pred(Ids,Pred,Values)) -->
" executing an action:\n ",
pp_expr_l(Ids,_LR1)," :| ",pp_expr(Pred,_,_LR2),"\n choosing\n",
show_assignments(Ids,Values).
explain_event_step(error(Error,_Id)) -->
% the error marker serves to link to a stored state-error by its ID
explain_event_step(Error).
explain_event_step(event_wd_error(TExpr,Source)) -->
" Well-Definedness ERROR for ", ppatom(Source), "\n",
" ", pp_expr(TExpr,_,_LR), "\n".
explain_event_step(event_other_error(Msg)) --> ppatom(Msg).
Calls:
Name: ppatom/3 |
Module: translate |
Name: =/2 |
|
Name: pp_expr/5 |
Module: translate |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: show_assignments/4 |
Module: translate |
Name: pp_expr_l/4 |
Module: translate |
Name: pp_value/3 |
Module: translate |
Name: witness_intro/5 |
Module: translate |
Name: ==/2 |
|
Name: ->/3 |
Called:
Name: explain_event_step4/4 |
Module: translate |
explain_event_step4(true_guard(Parameters,Values,Guard),new_scope('guard true',Parameters,Values,Guard)) --> !,
( {Parameters==[]} ->
; " for the parameters:\n",
show_parameter_values(Parameters,Values)),
" the guard is true:",
explain_predicate(Guard,4),"\n".
explain_event_step4(eval_witness(Type,Id,Value,Predicate),new_scope('witness',[Id],[Value],Predicate)) -->
witness_intro(Id,Predicate,Type),
" found witness:\n",
" ", pp_expr(Id,_,_LR), " = ", pp_value(Value), "\n".
explain_event_step4(simulation_error(Errors),SpanPred) -->
" no guard of a refined event was satisfiable:\n",
explain_simulation_errors(Errors,Guards),
{disjunct_predicates(Guards,SpanPred)}.
explain_event_step4(invalid_theorem_in_guard(Theorem),new_scope('false theorem',[],[],Theorem)) -->
" the following theorem evaluates to false:",
explain_predicate(Theorem,4),"\n".
explain_event_step4(invalid_modification(Var,Pre,Post),
new_scope('invalid modification',[Var],[Post],b(falsity,pred,[]))) -->
" the variable ", pp_expr(Var,_,_LR), " has been modified.\n",
" The event is not allowed to modify the variable because its abstract event does not modify it.\n",
" Old value: ", pp_value(Pre), "\n",
" New value: ", pp_value(Post), "\n".
explain_event_step4(action_not_executable(TAction,WDErr),new_scope('action not executable',[],[],Equalities)) -->
{exctract_span_pred_from_subst(TAction,Equalities)},
explain_action_not_executable(TAction,WDErr).
explain_event_step4(Step,unknown) -->
explain_event_step(Step).
Calls:
Name: explain_event_step/3 |
Module: translate |
| Module: translate | |
| Module: translate | |
Name: =/2 |
|
Name: pp_value/3 |
Module: translate |
Name: pp_expr/5 |
Module: translate |
Name: explain_predicate/4 |
Module: translate |
Name: disjunct_predicates/2 |
Module: foo_error |
| Module: translate | |
Name: witness_intro/5 |
Module: translate |
Name: show_parameter_values/4 |
Module: translate |
Name: ==/2 |
|
Name: ->/3 |
|
Name: ! |
Called:
Name: explain_event_trace4/6 |
Module: translate |
explain_event_trace(Trace,Codes,Span) :-
explain_event_trace(Trace,Span,Codes,[]).
Calls:
Name: explain_event_trace/4 |
Module: translate |
Called:
| Module: translate | |
Name: convert_error/2 |
Module: prob2_interface |
explain_event_trace(Trace,span_predicate(SpanPred,[],[])) -->
% evaluating the span predicate will require access to current state, which needs to be added later
explain_event_trace4(Trace,'?','?',SpanPred).
Calls:
Name: explain_event_trace4/6 |
Module: translate |
Called:
| Module: translate | |
Name: convert_error/2 |
Module: prob2_interface |
explain_event_trace4([],_,_,b(truth,pred,[])) --> !.
explain_event_trace4([event(Name,Section)|Trest],_,_,SpanPred) --> !,
"\n",
"Event ",ppterm(Name)," in model ",ppterm(Section),
":\n",
% pass new current event name and section for processing tail:
explain_event_trace4(Trest,Name,Section,SpanPred).
explain_event_trace4([Step|Trest],Name,Section,SpanPred) -->
"\n",
( explain_event_step4(Step,StepPred) ->
; {functor(Step,F,_)} ->
" (no rule to explain event step ",ppatom(F),")\n"),
explain_event_trace4(Trest,Name,Section,RestSpanPred),
{combine_span_pred(StepPred,RestSpanPred,Name,Section,SpanPred)}.
Calls:
Name: =/2 |
|
Name: combine_span_pred/5 |
Module: translate |
Name: RECURSIVE_CALL/6 |
Module: translate |
Name: ppatom/3 |
Module: translate |
Name: functor/3 |
|
Name: ->/2 |
|
Name: explain_event_step4/4 |
Module: translate |
Name: ->/3 |
|
Name: ppterm/3 |
Module: translate |
Name: ! |
Called:
Name: explain_event_trace/4 |
Module: translate |
explain_local_state([]) --> !, "".
explain_local_state(LS) --> "\n Local State: ", pp_b_state(LS,1000).
Calls:
Name: pp_b_state/4 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: explain_span/3 |
Module: translate |
explain_parallel([],_I) --> "".
explain_parallel([H],I) --> !, explain_classicb_path(H,I).
explain_parallel([H|T],I) --> explain_classicb_path(H,I), " ||\n", explain_parallel(T,I).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: =/2 |
|
Name: explain_classicb_path/4 |
Module: translate |
Name: ! |
Called:
Name: explain_classicb_path/4 |
Module: translate |
explain_predicate(Guard,Indention,I,O) :-
pred_over_lines(0,'@grd',Guard,(Indention,I),(_,O)).
Calls:
Name: pred_over_lines/5 |
Module: translate |
Called:
| Module: translate | |
Name: explain_event_step4/4 |
Module: translate |
explain_simulation_error(event(Name,Section,Guard),SpanPred) -->
{add_span_label('guard false',Name,Section,Guard,SpanPred)},
" guard for event ", ppatom(Name),
" in ", ppatom(Section), ":",
explain_predicate(Guard,6),"\n".
Calls:
Name: =/2 |
|
Name: explain_predicate/4 |
Module: translate |
Name: ppatom/3 |
Module: translate |
Name: add_span_label/5 |
Module: translate |
Called:
| Module: translate |
explain_simulation_errors([],[]) --> !.
explain_simulation_errors([Error|Rest],[Grd|Gs]) -->
explain_simulation_error(Error,Grd),
explain_simulation_errors(Rest,Gs).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
| Module: translate | |
Name: =/2 |
|
Name: ! |
Called:
Name: explain_event_step4/4 |
Module: translate |
explain_span(V) --> {var(V)},!, "Internal error: Illegal variable span".
explain_span(span_predicate(Pred,LS,S)) --> !, explain_span2(span_predicate(Pred,LS,S)),
explain_local_state(LS). %, explain_global_state(S).
explain_span(Span) --> explain_span2(Span).
Calls:
Name: explain_span2/3 |
Module: translate |
Name: explain_local_state/3 |
Module: translate |
Name: ! |
|
Name: =/2 |
|
Name: var/1 |
Called:
Name: explain_error_context1/3 |
Module: translate |
Name: explain_error_context2/3 |
Module: translate |
explain_span2(Span) --> {extract_line_col(Span,Srow,Scol,Erow,Ecol)},!,
"\n### Line: ", ppterm(Srow), ", Column: ", ppterm(Scol),
" until Line: ", ppterm(Erow), ", Column: ", ppterm(Ecol),
explain_span_file(Span),
explain_span_context(Span).
explain_span2(Span) --> {extract_symbolic_label_pos(Span,Msg)},!,
"\n @label: ", ppterm(Msg),
explain_span_context(Span).
explain_span2(Span) --> explain_span_context(Span).
Calls:
Name: explain_span_context/3 |
Module: translate |
Name: ppterm/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
|
Name: extract_symbolic_label_pos/2 |
Module: foo_error |
Name: explain_span_file/3 |
Module: translate |
Name: extract_line_col/5 |
Module: foo_error |
Called:
Name: explain_span/3 |
Module: translate |
explain_span_context(Span) --> {extract_additional_description(Span,Msg),!},
"\n### within ", ppterm(Msg). % context of span, such as definition call hierarchy
explain_span_context(_) --> "".
Calls:
Name: =/2 |
|
Name: ppterm/3 |
Module: translate |
Name: ! |
|
Name: extract_additional_description/2 |
Module: foo_error |
Called:
Name: explain_span2/3 |
Module: translate |
explain_span_file(Span) -->
{extract_subsidiary_tail_file_name(Span,Filename)},
%{bmachine:b_get_main_filenumber(MainFN), Nr \= MainFN},!,
"\n### File: ", ppterm(Filename).
explain_span_file(_) --> "".
Calls:
Name: =/2 |
|
Name: ppterm/3 |
Module: translate |
Name: extract_subsidiary_tail_file_name/2 |
Module: foo_error |
Called:
Name: explain_span2/3 |
Module: translate |
explain_state_error(Error,Span,Out) :-
explain_state_error2(Error,Span,Out,[]),!.
explain_state_error(_Error,unknown,"Sorry, the detailed output failed.\n").
Calls:
Name: ! |
|
Name: explain_state_error2/4 |
Module: translate |
Called:
Name: convert_error/2 |
Module: prob2_interface |
explain_state_error2(abort_error(TYPE,Msg,ErrTerm,ErrContext),Span) -->
explain_abort_error_type(TYPE),
"Reason: ", ppterm(Msg), "\n",
{get_span_from_context(ErrContext,Span)},
({ErrTerm=''} ->
; "Details: ", {translate_error_term(ErrTerm,Span,ErrS)},ppterm(ErrS), "\n"
),
"Context: ", explain_error_context1(ErrContext).
explain_state_error2(max_state_errors_reached(Nr),unknown) -->
"Too many error occurred for this state.\n",
"Not all errors are shown.\n",
"Number of errors is at least: ", ppterm(Nr).
explain_state_error2(eventerror(_Event,Error,Trace),Span) --> % TO DO: also extract loc info ?
{translate_event_error(Error,Msg)},
ppatom(Msg),
"\nA detailed trace containing the error:\n",
"--------------------------------------\n",
explain_event_trace(Trace,Span).
explain_state_error2(clpfd_overflow_error(Context),unknown) --> % CLPFD_integer_overflow
"An overflow occurred inside the CLP(FD) library.\n",
"Context: ", ppterm(Context), "\n",
"You may try and set the CLPFD preference to FALSE.\n".
Calls:
Name: =/2 |
|
Name: ppterm/3 |
Module: translate |
Name: explain_event_trace/4 |
Module: translate |
Name: ppatom/3 |
Module: translate |
Name: translate_event_error/2 |
Module: translate |
Name: explain_error_context1/3 |
Module: translate |
Name: translate_error_term/3 |
Module: translate |
Name: ->/3 |
|
Name: get_span_from_context/2 |
Module: translate |
| Module: translate |
Called:
Name: explain_state_error/3 |
Module: translate |
explain_transition_info(eventtrace(Trace),Codes) :- explain_event_trace(Trace,Codes,_Span).
explain_transition_info(path(Trace),Codes) :- explain_classicb_path(Trace,0,Codes,[]).
Calls:
Name: explain_classicb_path/4 |
Module: translate |
Name: explain_event_trace/3 |
Module: translate |
Called:
| Module: prob2_interface |
expression_has_tla_type(TExpr,Type) :-
get_texpr_info(TExpr,Infos),
memberchk(tla_type(Type),Infos).
Calls:
Name: memberchk/2 |
|
Name: get_texpr_info/2 |
Module: foo_error |
external_call(external_function_call(Symbol,Args),expression,Symbol,Args).
external_call(external_pred_call(Symbol,Args),pred,Symbol,Args).
external_call(external_subst_call(Symbol,Args),subst,Symbol,Args).
Called:
Name: pp_expr2/5 |
Module: translate |
extract_def_calls(Span) -->
{extract_pos_context(Span,MainPos,Context,CtxtPos)},
{Context = definition_call(Name)},
!,
extract_def_calls(MainPos),
[definition_call(Name,CtxtPos)],
extract_def_calls(CtxtPos). % do we need this??
extract_def_calls(_) --> [].
Calls:
Name: =/2 |
|
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ! |
|
Name: extract_pos_context/4 |
Module: foo_error |
Called:
Name: split_calls/2 |
Module: translate |
extract_def_context_msg(definition_call(Name),Msg) :- !, % static Definition macro expansion call stack
ajoin(['DEFINITION call of ',Name],Msg).
Calls:
Name: ajoin/2 |
Module: foo_error |
Name: ! |
extract_equality(Infos,TID,NewExpr,b(equal(TID,NewExpr),pred,Infos)). % TODO: introduce TID' primed?
extract_vartype_names(Types,names(Variables,Names)) :-
term_variables(Types,Variables),
name_variables(Variables,1,Names).
Calls:
Name: name_variables/3 |
Module: translate |
Name: term_variables/2 |
Called:
Name: pretty_type_l/2 |
Module: translate |
Name: pretty_freetype/2 |
Module: translate |
field_value_present(field(_,_),RecValue,RecValue). % Obligatory fields are always present
field_value_present(opt(_,_),OptValue,Value) :-
% Optional fields are present if the field is of the form TRUE |-> Value.
( is_printable_set(OptValue,Values) -> Values=[(_TRUE,Value)]
;
add_error(translate,'exptected set for TLA optional record field'),
fail
).
Calls:
Name: fail |
|
Name: add_error/2 |
Module: foo_error |
Name: =/2 |
|
Name: is_printable_set/2 |
Module: translate |
Name: ->/3 |
Called:
Name: sort_tla_fields/4 |
Module: translate |
forall_symbol --> {latex_mode},!, "\\forall ".
forall_symbol --> {unicode_mode},!, pp_colour_code(magenta),[8704],pp_colour_code(reset).
forall_symbol --> pp_colour_code(blue),"!",pp_colour_code(reset).
format_proof_infos(_,Var) :- var(Var),!.
format_proof_infos(Stream,disprover_result(Prover,Hyps,Result)) :- nonvar(Result),functor(Result,FR,_),!,
format(Stream,' /* ProB Disprover ~w result on ~w : ~w */~n',[Prover,Hyps,FR]).
format_proof_infos(Stream,E) :- format(Stream,' /* ~w */~n',[E]).
Calls:
Name: format/3 |
|
Name: ! |
|
Name: functor/3 |
|
Name: nonvar/1 |
|
Name: var/1 |
function_like(convert_bool,bool).
function_like(convert_real,real). % cannot be used on its own: dom(real) is not accepted by Atelier-B
function_like(convert_int_floor,floor). % ditto
function_like(convert_int_ceiling,ceiling). % ditto
function_like(successor,succ). % can also be used on its own; e.g., dom(succ)=INTEGER is ok
function_like(predecessor,pred). % ditto
function_like(max,max).
function_like(max_real,max).
function_like(min,min).
function_like(min_real,min).
function_like(card,card).
function_like(pow_subset,'POW').
function_like(pow1_subset,'POW1').
function_like(fin_subset,'FIN').
function_like(fin1_subset,'FIN1').
function_like(identity,id).
function_like(first_projection,prj1).
function_like(first_of_pair,'prj1'). % used to be __first_of_pair, will be dealt with separately to generate parsable representation
function_like(second_projection,prj2).
function_like(second_of_pair,'prj2'). % used to be __second_of_pair, will be dealt with separately to generate parsable representation
function_like(iteration,iterate).
function_like(event_b_first_projection_v2,prj1).
function_like(event_b_second_projection_v2,prj2).
function_like(reflexive_closure,closure).
function_like(closure,closure1).
function_like(domain,dom).
function_like(range,ran).
function_like(seq,seq).
function_like(seq1,seq1).
function_like(iseq,iseq).
function_like(iseq1,iseq1).
function_like(perm,perm).
function_like(size,size).
function_like(first,first).
function_like(last,last).
function_like(front,front).
function_like(tail,tail).
function_like(rev,rev).
function_like(general_concat,conc).
function_like(general_union,union).
function_like(general_intersection,inter).
function_like(trans_function,fnc).
function_like(trans_relation,rel).
function_like(tree,tree).
function_like(btree,btree).
function_like(const,const).
function_like(top,top).
function_like(sons,sons).
function_like(prefix,prefix).
function_like(postfix,postfix).
function_like(sizet,sizet).
function_like(mirror,mirror).
function_like(rank,rank).
function_like(father,father).
function_like(son,son).
function_like(subtree,subtree).
function_like(arity,arity).
function_like(bin,bin).
function_like(left,left).
function_like(right,right).
function_like(infix,infix).
function_like(rec,rec).
function_like(struct,struct).
function_like(negation,not).
function_like(bag_items,items).
function_like(finite,finite). % from Event-B, TO DO: if \+ eventb_translation_mode then print as S:FIN(S)
function_like(witness,'@witness'). % from Event-B
function_like(floored_div,'FDIV') :- \+ animation_minor_mode(tla). % using external function
Calls:
Name: animation_minor_mode/1 |
Module: specfile |
Name: not/1 |
Called:
Name: kernel_predicate/7 |
Module: kernel_mappings |
Name: render_operator_arg/3 |
Module: translate |
Name: function_like_in_mode/2 |
Module: translate |
function_like_in_mode(F,S) :-
function_like(F,S1),
translate_in_mode(F,S1,S).
Calls:
Name: translate_in_mode/3 |
Module: translate |
Name: function_like/2 |
Module: translate |
Called:
| Module: translate | |
Name: pp_expr2/5 |
Module: translate |
| Module: translate | |
Name: pretty_type2/4 |
Module: translate |
Name: pp_value/4 |
Module: translate |
gen_bugly_id(Nr,ScrambledID) :- gen_bugly_id_codes(Nr,Codes), atom_codes(ScrambledID,[97,97|Codes]).
Calls:
Name: atom_codes/2 |
|
Name: gen_bugly_id_codes/2 |
Module: translate |
Called:
Name: bugly_scramble_id/2 |
Module: translate |
gen_bugly_id_codes(Nr,[Char|TC]) :- Char is 97+ Nr mod 26,
(Nr> 25 -> N1 is Nr // 26, gen_bugly_id_codes(N1,TC) ; TC=[]).
Calls:
Name: =/2 |
|
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: is/2 |
|
Name: >/2 |
|
Name: ->/3 |
Called:
Name: gen_bugly_id/2 |
Module: translate |
genbuglynr(Nr) :-
retract(bugly_count(Nr)), N1 is Nr + 1,
assertz(bugly_count(N1)).
Calls:
Name: assertz/1 |
|
Name: is/2 |
|
Name: bugly_count/1 |
Module: translate |
Name: retract/1 |
Called:
Name: bugly_scramble_id/2 |
Module: translate |
generate_typed_int_set(Name,b(integer_set(Name),set(integer),[])).
Called:
Name: transform_raw/2 |
Module: translate |
generate_typing_predicate(KeepSeq,TId,Pred) :-
get_texpr_type(TId,Type),
remove_all_infos_and_ground(TId,TId2), % clear all infos
(create_type_set(Type,KeepSeq,TSet) -> create_texpr(member(TId2,TSet),pred,[],Pred)
; TId = b(_,any,[raw]) -> is_truth(Pred) % this comes from transform_raw
; add_error(generate_typing_predicate,'Illegal type in identifier: ',Type,TId),
is_truth(Pred)
).
Calls:
Name: is_truth/1 |
Module: foo_error |
Name: add_error/4 |
Module: foo_error |
Name: =/2 |
|
Name: ->/3 |
|
Name: create_texpr/4 |
Module: foo_error |
Name: create_type_set/3 |
Module: typing_tools |
Name: remove_all_infos_and_ground/2 |
Module: foo_error |
Name: get_texpr_type/2 |
Module: foo_error |
generate_typing_predicates(TIds,Preds) :-
generate_typing_predicates(TIds,true,Preds).
Calls:
| Module: translate |
Called:
Name: add_typing_pred/2 |
Module: b2setlog |
| Module: before_after_predicates | |
Name: b2p/3 |
Module: b2setlog |
| Module: predicate_data_generator | |
| Module: synthesis_util | |
Name: type_infos_in_subst2/3 |
Module: translate |
Name: simplify_negation/2 |
Module: b_simplifier |
Name: get_typing_predicates/4 |
Module: model_translation |
generate_typing_predicates(TIds,KeepSeq,Preds) :-
maplist(generate_typing_predicate(KeepSeq), TIds, Preds).
Calls:
Name: maplist/3 |
Module: foo_error |
Called:
Name: add_typing_pred/2 |
Module: b2setlog |
| Module: before_after_predicates | |
Name: b2p/3 |
Module: b2setlog |
| Module: predicate_data_generator | |
| Module: synthesis_util | |
Name: type_infos_in_subst2/3 |
Module: translate |
Name: simplify_negation/2 |
Module: b_simplifier |
Name: get_typing_predicates/4 |
Module: model_translation |
get_all_ids([],_Sections,[]).
get_all_ids([Section|Srest],Sections,Ids) :-
memberchk(Section/Ids1,Sections),
append(Ids1,Ids2,Ids),
get_all_ids(Srest,Sections,Ids2).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: append/3 |
|
Name: memberchk/2 |
Called:
Name: mpart_typing2/4 |
Module: translate |
get_bexpression_column_template(b(couple(A,B),_,_),(AVal,BVal),ColHeaders,Columns) :- !,
get_bexpression_column_template(A,AVal,AHeaders,AColumns),
get_bexpression_column_template(B,BVal,BHeaders,BColumns),
append(AHeaders,BHeaders,ColHeaders),
append(AColumns,BColumns,Columns).
get_bexpression_column_template(TypedExpr,Value,[ColHeader],[Value]) :-
translate:translate_bexpression_with_limit(TypedExpr,100,ColHeader).
Calls:
| Module: translate | |
Name: append/3 |
|
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: ! |
Called:
| Module: tcltk_interface | |
| Module: tcltk_interface | |
| Module: state_space_reduction |
get_binary_connective(conjunct(LHS,RHS),conjunct,'&',LHS,RHS).
get_binary_connective(disjunct(LHS,RHS),disjunct,'or',LHS,RHS).
get_binary_connective(implication(LHS,RHS),implication,'=>',LHS,RHS).
get_binary_connective(equivalence(LHS,RHS),equivalence,'<=>',LHS,RHS).
Called:
Name: pp_pred_nested/5 |
Module: translate |
Name: is_nontrivial_negation/4 |
Module: translate |
Name: nbp2/4 |
Module: translate |
get_call_stack_span(operation_call(_,_,Pos),Pos).
get_call_stack_span(function_call(_,_,Pos),Pos).
get_call_stack_span(id_equality_evaluation(_ID,_Kind,Pos),Pos).
get_call_stack_span(quantifier_call(_,_,_,Pos),Pos).
get_call_stack_span(definition_call(_,Pos),Pos).
get_call_stack_span(external_call(_,_,Pos),Pos).
get_call_stack_span(prob_command_context(_,Pos),Pos).
get_call_stack_span(top_level_call(Pos),Pos).
get_call_stack_span(b_operator_call(_,_,Pos),Pos).
get_call_stack_span(b_operator_arg_evaluation(_,_,_,Pos),Pos).
get_call_stack_span(b_expr_call(_,Expr),Expr).
get_call_stack_span(span_predicate(A,B,C),span_predicate(A,B,C)).
Called:
Name: split_calls/2 |
Module: translate |
get_cs_avl_limit(40) :- debug_mode(on),!.
get_cs_avl_limit(6) :- get_preference(provide_trace_information,true),!.
get_cs_avl_limit(4).
Calls:
Name: ! |
|
Name: get_preference/2 |
Module: preferences |
Name: debug_mode/1 |
Module: foo_error |
Called:
Name: translate_call_stack/2 |
Module: translate |
get_cs_limit(2000) :- !.
get_cs_limit(Limit) :- debug_mode(on),!, debug_level(Level), % 19 regular, 5 very verbose
Limit is 1000 - Level*20.
get_cs_limit(200) :- get_preference(provide_trace_information,true),!.
get_cs_limit(100).
Calls:
Name: ! |
|
Name: get_preference/2 |
Module: preferences |
Name: is/2 |
|
Name: debug_level/1 |
Module: foo_error |
Name: debug_mode/1 |
Module: foo_error |
Called:
Name: render_para_val/3 |
Module: translate |
Name: render_call/4 |
Module: translate |
| Module: translate |
get_definition_context_from_span(Span,DefCtxtMsg) :-
extract_pos_context(Span,_MainPos,Context,_CtxtPos),
extract_def_context_msg(Context,DefCtxtMsg).
Calls:
| Module: translate | |
Name: extract_pos_context/4 |
Module: foo_error |
Called:
Name: cleanup_pre_function/7 |
Module: b_ast_cleanup |
get_error_span_for_value(Var,_) :- var(Var),!,fail.
get_error_span_for_value(closure(_,_,Body),Span) :- translate_span_with_filename(Body,Span), Span \= ''.
Calls:
Name: \=/2 |
|
| Module: translate | |
Name: fail |
|
Name: ! |
|
Name: var/1 |
Called:
Name: translate_error_term/3 |
Module: translate |
get_eventb_default_label(properties,'@axm').
get_eventb_default_label(assertions,'@thm').
Called:
| Module: translate |
get_function_from_span(Var,Fun,_,_) :- var(Var), !,
add_internal_error('Variable span:',get_function_from_span(Var,Fun)),fail.
get_function_from_span(pos_context(Span,_,_),Fun,LS,S) :- get_function_from_span(Span,Fun,LS,S).
get_function_from_span(span_predicate(b(function(Function,_Arg),_T,_I),LocalState,State),Function,LocalState,State).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: fail |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: ! |
|
Name: var/1 |
Called:
Name: translate_error_term/3 |
Module: translate |
get_if_elsif(Elsif,P,S) :-
(optional_type(Elsif,if_elsif(P,S)) -> true
; add_internal_error('Is not an if_elsif:',get_if_elsif(Elsif,P,S)), fail).
Calls:
Name: fail |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: true |
|
Name: optional_type/2 |
Module: translate |
Name: ->/3 |
Called:
Name: translate_ifs/3 |
Module: translate |
Name: translate_subst2/3 |
Module: translate |
get_language_mode(csp_and(Lang)) :-
csp_with_bz_mode,
!,
(animation_minor_mode(Lang) -> true ; Lang = b).
get_language_mode(Lang) :- animation_minor_mode(Lang), !.
get_language_mode(Lang) :- animation_mode(Lang).
Calls:
Name: animation_mode/1 |
Module: specfile |
Name: ! |
|
Name: animation_minor_mode/1 |
Module: specfile |
Name: =/2 |
|
Name: true |
|
Name: ->/3 |
|
Name: csp_with_bz_mode/0 |
Module: specfile |
Called:
Name: with_language_mode/2 |
Module: translate |
Name: set_default_pp_opts/1 |
Module: prob2_interface |
get_last([],Last,[],Last).
get_last([H2|T],H1,[H1|LT],Last) :- get_last(T,H2,LT,Last).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Called:
| Module: translate | |
Name: pp_comprehension_set5/7 |
Module: translate |
get_latex_keywords(List) :-
findall(Id,latex_to_unicode(Id,_),Ids),
sort(Ids,List).
Calls:
Name: sort/2 |
|
Name: findall/3 |
Called:
| Module: translate | |
Name: get_match_ids2/3 |
Module: prob2_interface |
get_latex_keywords_with_backslash(BList) :-
get_latex_keywords(List),
maplist(atom_concat('\\'),List,BList).
Calls:
Name: maplist/3 |
Module: foo_error |
Name: get_latex_keywords/1 |
Module: translate |
Called:
Name: get_match_ids2/3 |
Module: prob2_interface |
get_non_det_constant(Template,Result) :- non_det_constants(A,B),!, (A,B)=(Template,Result).
get_non_det_constant(Template,Result) :-
state_space:transition(root,_,DstID),
state_space:visited_expression(DstID,concrete_constants(State)), %write(get_non_det_constant(DstID)),nl,
!,
findall(D,(state_space:transition(root,_,D),D \= DstID),OtherDst),
compute_non_det_constants2(OtherDst,State),
non_det_constants(Template,Result).
get_non_det_constant(A,A).
Calls:
Name: non_det_constants/2 |
dynamic predicate |
| Module: translate | |
Name: findall/3 |
|
Name: ! |
|
Name: visited_expression/2 |
Module: state_space |
Name: transition/3 |
Module: state_space |
Name: =/2 |
Called:
| Module: translate |
get_non_det_modified_vars_in_target_id(OpName,DstId,ModVarsState0) :-
bmachine:b_get_operation_non_det_modifies(OpName,NDModVars),
NDModVars \= [], % a variable is non-deterministically written
state_space:visited_expression(DstId,State), % TO DO: unpack only NModVars
get_variables(State,VarsState),
include(non_det_modified_var(NDModVars),VarsState,ModVarsState0).
Calls:
Name: include/3 |
Module: foo_error |
Name: get_variables/2 |
Module: translate |
Name: visited_expression/2 |
Module: state_space |
Name: \=/2 |
|
| Module: bmachine |
Called:
| Module: translate | |
| Module: b_trace_checking |
get_pp_state_limit(Limit) :-
(get_preference(expand_avl_upto,-1) -> Limit = -1 ; Limit = 1000).
Calls:
Name: =/2 |
|
Name: get_preference/2 |
Module: preferences |
Name: ->/3 |
Called:
Name: translate_any_state/2 |
Module: translate |
Name: translate_bstate/2 |
Module: translate |
get_sep_prio(",",Prio) :- !, Prio=116. % Prio of , is 115
get_sep_prio("\\/",Prio) :- !, Prio=161.
get_sep_prio("/\\",Prio) :- !, Prio=161.
get_sep_prio("|->",Prio) :- !, Prio=161.
get_sep_prio([8614],Prio) :- !, Prio=161.
get_sep_prio(_,161).
Calls:
Name: =/2 |
|
Name: ! |
Called:
Name: pp_expr_l2/5 |
Module: translate |
get_span_context_span(span_context(Span,_),Span).
get_span_context_span([H],Span) :- get_span_context_span(H,Span).
Calls:
Name: RECURSIVE_CALL/2 |
Module: translate |
Called:
Name: get_state_error_span/2 |
Module: translate |
get_span_from_context([H],Span) :- !, get_span_from_context(H,Span).
get_span_from_context(span_context(Span,_),Res) :- !, Res=Span.
get_span_from_context(_,unknown).
Calls:
Name: =/2 |
|
Name: ! |
|
Name: RECURSIVE_CALL/2 |
Module: translate |
Called:
Name: explain_state_error2/4 |
Module: translate |
get_specification_description_codes(Tag,Codes) :- get_specification_description(Tag,Atom), atom_codes(Atom,Codes).
Calls:
Name: atom_codes/2 |
|
| Module: specfile |
Called:
Name: pp_b_context/3 |
Module: translate |
| Module: translate | |
Name: explain_error_context2/3 |
Module: translate |
get_state_error_span(abort_error(_,_,_,Context),Span) :- get_span_context_span(Context,Span).
Calls:
Name: get_span_context_span/2 |
Module: translate |
get_texpr_top_level_symbol(TExpr,Symbol,2,infix) :-
translate:binary_infix_symbol(TExpr,Symbol),!.
get_texpr_top_level_symbol(b(E,_,_),Symbol,1,postfix) :-
functor(E,F,1), translate:unary_postfix_in_mode(F,Symbol,_),!.
get_texpr_top_level_symbol(b(E,_,_),Symbol,3,prefix) :-
functor(E,F,Arity), (Arity=3 ; Arity=2), % 2 for exists
quantified_in_mode(F,Symbol),!.
get_texpr_top_level_symbol(b(E,_,_),Symbol,N,prefix) :-
functor(E,F,N),
function_like_in_mode(F,Symbol).
Calls:
Name: function_like_in_mode/2 |
Module: translate |
Name: functor/3 |
|
Name: ! |
|
Name: quantified_in_mode/2 |
Module: translate |
Name: =/2 |
|
Name: unary_postfix_in_mode/3 |
Module: translate |
Name: binary_infix_symbol/2 |
Module: translate |
get_translation_mode(M) :- unicode_mode, !, M=unicode.
get_translation_mode(M) :- latex_mode, !, M=latex.
get_translation_mode(M) :- atelierb_mode(native), !, M=atelierb.
get_translation_mode(M) :- atelierb_mode(prover(pp)), !, M=atelierb_pp.
get_translation_mode(M) :- atelierb_mode(prover(ml)), !, M=atelierb_ml.
get_translation_mode(ascii).
Calls:
Name: =/2 |
|
Name: ! |
|
Name: atelierb_mode/1 |
dynamic predicate |
Name: latex_mode |
dynamic predicate |
Name: unicode_mode |
dynamic predicate |
Called:
Name: with_translation_mode/2 |
Module: translate |
get_type(conjunct,pred).
get_type(disjunct,pred).
get_type(implication,pred).
get_type(equivalence,pred).
get_type(member,pred).
get_type(equal,pred).
get_type(not_equal,pred).
get_type(not_member,pred).
get_type(subset,pred).
get_type(not_subset,pred).
Called:
Name: transform_raw/2 |
Module: translate |
get_variables(const_and_vars(_,VarsState),S) :- !, S=VarsState.
get_variables(S,S).
Calls:
Name: =/2 |
|
Name: ! |
get_was_identifier(b(_,_,Info),Id) :- member(was_identifier(Id),Info). % added e.g. by b_compiler
Calls:
Name: member/2 |
Called:
Name: try_get_identifier/2 |
Module: translate |
Name: translate_error_term/3 |
Module: translate |
greek_or_math_symbol(Symbol) :- greek_symbol(Symbol,_).
greek_or_math_symbol('varepsilon').
greek_or_math_symbol('varphi').
greek_or_math_symbol('varpi').
greek_or_math_symbol('varrho').
greek_or_math_symbol('varsigma').
greek_or_math_symbol('vartheta').
greek_or_math_symbol('vdash').
greek_or_math_symbol('models').
Calls:
Name: greek_symbol/2 |
Module: translate |
Called:
| Module: translate |
greek_symbol('Alpha','\x0391\').
greek_symbol('Beta','\x0392\').
greek_symbol('Chi','\x03A7\').
greek_symbol('Delta','\x0394\').
greek_symbol('Epsilon','\x0395\').
greek_symbol('Eta','\x0397\').
greek_symbol('Gamma','\x0393\').
greek_symbol('Iota','\x0399\').
greek_symbol('Kappa','\x039A\').
greek_symbol('Lambda','\x039B\').
greek_symbol('Mu','\x039C\').
greek_symbol('Nu','\x039D\').
greek_symbol('Phi','\x03A6\').
greek_symbol('Pi','\x03A0\').
greek_symbol('Psi','\x03A8\').
greek_symbol('Rho','\x03A1\').
greek_symbol('Omega','\x03A9\').
greek_symbol('Omicron','\x039F\').
greek_symbol('Sigma','\x03A3\').
greek_symbol('Theta','\x0398\').
greek_symbol('Upsilon','\x03A5\').
greek_symbol('Xi','\x039E\').
greek_symbol('alpha','\x03B1\').
greek_symbol('beta','\x03B2\').
greek_symbol('delta','\x03B4\').
greek_symbol('chi','\x03C7\').
greek_symbol('epsilon','\x03B5\').
greek_symbol('eta','\x03B7\').
greek_symbol('gamma','\x03B3\').
greek_symbol('iota','\x03B9\').
greek_symbol('kappa','\x03BA\').
greek_symbol('lambda','\x03BB\').
greek_symbol('mu','\x03BC\').
greek_symbol('nu','\x03BD\').
greek_symbol('omega','\x03C9\').
greek_symbol('omicron','\x03BF\').
greek_symbol('pi','\x03C0\').
greek_symbol('phi','\x03C6\').
greek_symbol('psi','\x03C8\').
greek_symbol('rho','\x03C1\').
greek_symbol('sigma','\x03C3\').
greek_symbol('tau','\x03C4\').
greek_symbol('theta','\x03B8\').
greek_symbol('upsilon','\x03C5\').
greek_symbol('xi','\x03BE\').
greek_symbol('zeta','\x03B6\').
Called:
Name: greek_or_math_symbol/1 |
Module: translate |
Name: latex_to_unicode/2 |
Module: translate |
hash_card_symbol --> {latex_mode},!, "\\# ".
hash_card_symbol --> "#".
id_requires_escaping(ID) :- classical_b_keyword(ID).
id_requires_escaping(ID) :- \+ is_simple_classical_b_identifier(ID).
Calls:
| Module: tools_strings | |
Name: not/1 |
|
Name: classical_b_keyword/1 |
Module: translate_keywords |
Called:
| Module: prob2_interface | |
Name: pp_identifier/3 |
Module: translate |
in_parallel([],Skip) :- !,create_texpr(skip,subst,[],Skip).
in_parallel([A],A) :- !.
in_parallel(Actions,Parallel) :- create_texpr(parallel(Actions),subst,[],Parallel).
Calls:
Name: create_texpr/4 |
Module: foo_error |
Name: ! |
Called:
Name: convert_event/3 |
Module: translate |
inc_indent(Type,CurType,I,NewI) :- (Type=CurType -> NewI=I ; NewI=s(I)).
Calls:
Name: =/2 |
|
Name: ->/3 |
inc_lvl(Old,New) --> {New=Old}, !,[].
inc_lvl(_,_) --> pp_atom_indent('('), % not strictly necessary if higher_prio
increase_indentation_level, indent(' ').
Calls:
Name: indent/3 |
Module: translate |
Name: increase_indentation_level/2 |
Module: foo_error |
Name: pp_atom_indent/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: pp_pred_nested/5 |
Module: translate |
increase_indentation_level(N) --> indention_level(L,New), {New is L+N}.
Calls:
Name: =/2 |
|
Name: is/2 |
|
Name: indention_level/4 |
Module: translate |
Called:
Name: pp_let_nested/5 |
Module: translate |
Name: pp_pred_nested/5 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
Name: pp_let_expr_nested/5 |
Module: translate |
increase_indentation_level --> indention_level(L,New), {New is L+1}.
indent(M,(I,S),(I,T)) :- indent2(I,M,S,T).
Called:
Name: pp_refines/4 |
Module: translate |
Name: preds_over_lines1/6 |
Module: translate |
Name: split_over_lines2/6 |
Module: translate |
Name: pp_let_nested/5 |
Module: translate |
Name: pp_pred_nested/5 |
Module: translate |
Name: translate_freetype/3 |
Module: translate |
Name: translate_subst2/3 |
Module: translate |
Name: translate_machine1/3 |
Module: translate |
Name: indent_rodin_label/3 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
Name: translate_inits2/3 |
Module: translate |
Name: dec_lvl/4 |
Module: translate |
Name: translate_whens/4 |
Module: translate |
Name: insert_variant3/3 |
Module: translate |
Name: translate_def/3 |
Module: translate |
Name: translate_ifs/3 |
Module: translate |
Name: translate_cases/3 |
Module: translate |
| Module: translate | |
Name: preds_over_lines2/6 |
Module: translate |
Name: pp_let_expr_nested/5 |
Module: translate |
Name: inc_lvl/4 |
Module: translate |
indent2(Level,Msg) -->
"\n",do_indention(Level),ppatom(Msg).
Calls:
Name: ppatom/3 |
Module: translate |
Name: do_indention/3 |
Module: translate |
Name: =/2 |
indent_binary_pred(equal(LHS,RHS),LHS,RHS,equal,'=').
indent_binary_pred(member(LHS,RHS),LHS,RHS,member,':').
indent_binary_predicate(equal(LHS,RHS),LHS,RHS,' = ').
indent_binary_predicate(member(LHS,RHS),LHS,RHS,' : ').
Called:
Name: pp_pred_nested/5 |
Module: translate |
indent_expr(Expr) -->
indent, pp_expr_indent(Expr),
pp_description_pragma_of(Expr).
Calls:
| Module: translate | |
Name: pp_expr_indent/3 |
Module: translate |
Name: indent/2 |
Module: foo_error |
Called:
Name: indent_expr_l_sep/4 |
Module: translate |
Name: translate_def_body/4 |
Module: translate |
indent_expr_l_sep([],_) --> !.
indent_expr_l_sep([Expr|Rest],Sep) -->
indent_expr(Expr),
{(Rest=[] -> RealSep='' ; RealSep=Sep)},
insert_atom(RealSep), % the threaded argument is a pair, not directly a string !
indent_expr_l_sep(Rest,Sep).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: insert_atom/3 |
Module: translate |
Name: =/2 |
|
Name: ->/3 |
|
Name: indent_expr/3 |
Module: translate |
Name: ! |
Called:
Name: translate_mpart2/5 |
Module: translate |
Name: indent_exprs/3 |
Module: translate |
indent_exprs(I) --> {force_eventb_rodin_mode},!, indent_expr_l_sep(I,' '). % Event-B Camille style
indent_exprs(I) --> indent_expr_l_sep(I,',').
Calls:
Name: indent_expr_l_sep/4 |
Module: translate |
Name: ! |
|
Name: force_eventb_rodin_mode |
dynamic predicate |
Called:
Name: translate_mpart2/5 |
Module: translate |
indent_rodin_label(_TExpr) --> {get_preference(translate_suppress_rodin_positions_flag,true),!}.
indent_rodin_label(_TExpr) --> {get_preference(bugly_pp_scrambling,true),!}.
indent_rodin_label(TExpr) --> {get_texpr_labels(TExpr,Names)},!, % note: this will only get the first label
indent('/* @'),pp_ids_indent(Names),insertstr('*/ '). % this Camille syntax cannot be read back in by B parser
indent_rodin_label(_TExpr) --> [].
Calls:
Name: =/2 |
|
Name: insertstr/3 |
Module: translate |
Name: pp_ids_indent/3 |
Module: translate |
Name: indent/3 |
Module: translate |
Name: ! |
|
Name: get_texpr_labels/2 |
Module: foo_error |
Name: get_preference/2 |
Module: preferences |
Called:
| Module: translate |
indent_ws(N) --> {N<1},!,"".
indent_ws(L) --> " ", {L1 is L-1}, indent_ws(L1).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: is/2 |
|
Name: =/2 |
|
Name: ! |
|
Name: </2 |
Called:
Name: explain_classicb_path/4 |
Module: translate |
indention_codes(Old,New,(Indent,Old),(Indent,New)).
Called:
| Module: translate |
indention_level(Old,New,(Old,S),(New,S)).
Called:
Name: preds_over_lines/6 |
Module: translate |
| Module: translate | |
Name: translate_freetype/3 |
Module: translate |
Name: insert_subst/3 |
Module: translate |
Name: split_over_lines2/6 |
Module: translate |
Name: pp_witness/3 |
Module: translate |
| Module: translate | |
Name: mpstart/4 |
Module: translate |
Name: translate_inits/3 |
Module: translate |
Name: mpend/3 |
Module: translate |
Name: split_over_lines/4 |
Module: translate |
Name: translate_operation/6 |
Module: translate |
Name: translate_mpart2/5 |
Module: translate |
init_machine_translation :- retractall(section_header_generated(_)).
Calls:
Name: retractall/1 |
Called:
Name: translate_machine1/3 |
Module: translate |
Name: translate_section_list/2 |
Module: translate |
insert_atom(Sep,(I,S),(I,T)) :- ppatom(Sep,S,T).
Called:
| Module: translate | |
Name: indent_expr_l_sep/4 |
Module: translate |
insert_comma([]) --> [].
insert_comma([_|_]) --> insertstr(',').
Calls:
Name: insertstr/3 |
Module: translate |
Name: =/2 |
Called:
| Module: translate |
insert_el_into_seq(1,H,[H|L],[set|L2],(L,L2)) :- !.
insert_el_into_seq(N,H,[_|T],[_|T2],Last) :- N>1, N1 is N-1, insert_el_into_seq(N1,H,T,T2,Last).
Calls:
Name: RECURSIVE_CALL/5 |
Module: translate |
Name: is/2 |
|
Name: >/2 |
|
Name: ! |
Called:
| Module: translate |
insert_enum_cst([],ID,Type,[enumerated_set_def(Type,[ID])]).
insert_enum_cst([enumerated_set_def(Type,Lst)|T],ID,Type2,[enumerated_set_def(Type,Lst2)|TT]) :-
(Type=Type2
-> Lst2 = [ID|Lst], TT=T
; Lst2 = Lst, insert_enum_cst(T,ID,Type2,TT)
).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: =/2 |
|
Name: ->/3 |
Called:
Name: translate_enums/3 |
Module: translate |
insert_library_usages([]) --> [].
insert_library_usages([Library|T]) -->
insertstr(' "'),insertstr(Library),insertstr('";\n'), % insert inclusion of ProB standard library
insert_library_usages(T).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: insertstr/3 |
Module: translate |
Name: =/2 |
Called:
Name: translate_mpart2/5 |
Module: translate |
insert_status(TStatus) -->
{get_texpr_expr(TStatus,Status),
status_string(Status,String)},
insertstr(String).
Calls:
Name: insertstr/3 |
Module: translate |
Name: status_string/2 |
Module: translate |
Name: get_texpr_expr/2 |
Module: foo_error |
Called:
Name: translate_subst2/3 |
Module: translate |
insert_subst(S) -->
indention_level(I,I2),{I2 is I+2},
translate_subst_check(S),
indention_level(_,I).
Calls:
Name: indention_level/4 |
Module: translate |
Name: translate_subst_check/3 |
Module: translate |
Name: is/2 |
Called:
Name: pp_refines/4 |
Module: translate |
Name: translate_subst2/3 |
Module: translate |
Name: translate_ifs/3 |
Module: translate |
Name: translate_whens/4 |
Module: translate |
Name: translate_cases/3 |
Module: translate |
insert_variant(TStatus) -->
{get_texpr_expr(TStatus,Status)},
insert_variant2(Status).
Calls:
Name: insert_variant2/3 |
Module: translate |
Name: get_texpr_expr/2 |
Module: foo_error |
Called:
Name: translate_subst2/3 |
Module: translate |
insert_variant2(ordinary) --> !.
insert_variant2(anticipated(Variant)) --> insert_variant3(Variant).
insert_variant2(convergent(Variant)) --> insert_variant3(Variant).
Calls:
Name: insert_variant3/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: insert_variant/3 |
Module: translate |
insert_variant3(Variant) -->
indent('USING VARIANT '),pp_expr_indent(Variant).
Calls:
Name: pp_expr_indent/3 |
Module: translate |
Name: indent/3 |
Module: translate |
Called:
Name: insert_variant2/3 |
Module: translate |
insertstr(M,(I,S),(I,T)) :- ppterm(M,S,T).
Called:
install_b_portray_hook :- % register portray hook mainly for the Prolog debugger
assertz(( user:portray(X) :- translate:b_portray_hook(X) )).
Calls:
Name: assertz/1 |
Called:
Name: safe_trace/0 |
Module: error_manager |
integer_set_mapping(A,B) :- integer_set_mapping(A,_,B).
Calls:
Name: integer_set_mapping/3 |
Module: translate |
Called:
Name: integer_set_mapping/2 |
Module: translate |
Name: pp_value/4 |
Module: translate |
integer_set_mapping(A,integer_set,B) :- unicode_mode, unicode_translation(A,B),!.
integer_set_mapping(A,integer_set,B) :- latex_mode, latex_integer_set_translation(A,B),!.
integer_set_mapping(A,integer_set,B) :- atelierb_mode(prover(PPML)),
atelierb_pp_translation(A,PPML,B),!.
integer_set_mapping(A,integer_set,B) :-
eventb_translation_mode, eventb_integer_mapping(A,B),!.
integer_set_mapping(ISet,user_set,Res) :- atomic(ISet),!,Res=ISet.
integer_set_mapping(_ISet,unknown_set,'integer_set(??)').
Calls:
Name: =/2 |
|
Name: ! |
|
Name: atomic/1 |
|
Name: eventb_integer_mapping/2 |
Module: translate |
| Module: translate | |
| Module: translate | |
Name: atelierb_mode/1 |
dynamic predicate |
| Module: translate | |
Name: latex_mode |
dynamic predicate |
Name: unicode_translation/2 |
Module: translate |
Name: unicode_mode |
dynamic predicate |
Called:
Name: integer_set_mapping/2 |
Module: translate |
Name: pp_value/4 |
Module: translate |
invisible_external_pred('LEQ_SYM').
invisible_external_pred('LEQ_SYM_BREAK'). % just for symmetry breaking foralls,...
Called:
Name: pp_external_call/7 |
Module: translate |
is_assignment_to(b(assign(LHS,_),_,_),IDs) :- get_texpr_ids(LHS,IDs).
is_assignment_to(b(assign_single_id(LHS,_),_,_),IDs) :- get_texpr_ids([LHS],IDs).
Calls:
Name: get_texpr_ids/2 |
Module: foo_error |
Called:
| Module: translate |
is_associative(conjunct).
is_associative(disjunct).
Called:
Name: nbp2/4 |
Module: translate |
Name: pp_pred_nested/5 |
Module: translate |
is_boolean_value(b(B,boolean,_),BV) :- boolean_aux(B,BV).
Calls:
Name: boolean_aux/2 |
Module: translate |
Called:
Name: pp_expr2/5 |
Module: translate |
is_bvalue(V) :- var(V),!,fail.
is_bvalue([]).
is_bvalue(closure(_,_,_)).
is_bvalue(fd(_,_)).
is_bvalue(freetype(_)).
is_bvalue(freeval(_,_,_)).
is_bvalue(avl_set(_)).
is_bvalue(int(_)).
is_bvalue(global_set(_)).
is_bvalue(pred_true).
is_bvalue(pred_false).
is_bvalue(string(_)).
is_bvalue(term(_)). % typically term(floating(_))
is_bvalue(rec(Fields)) :- nonvar(Fields), Fields=[F1|_], nonvar(F1),
F1=field(_,V1), is_bvalue(V1).
is_bvalue((A,B)) :-
(nonvar(A) -> is_bvalue(A) ; true),
(nonvar(B) -> is_bvalue(B) ; true).
Calls:
Name: true |
|
Name: RECURSIVE_CALL/1 |
Module: translate |
Name: nonvar/1 |
|
Name: ->/3 |
|
Name: =/2 |
|
Name: fail |
|
Name: ! |
|
Name: var/1 |
Called:
Name: translate_error_term/3 |
Module: translate |
is_compiled_value(b(value(_),_,_)).
Called:
Name: translate_error_term/3 |
Module: translate |
is_duplicate_predicate(Pred,List) :-
remove_all_infos(Pred,Pattern),
memberchk(Pattern,List).
Calls:
Name: memberchk/2 |
|
Name: remove_all_infos/2 |
Module: foo_error |
Called:
| Module: translate |
is_init('$initialise_machine').
is_init('$setup_constants').
Called:
| Module: translate |
is_lambda_result_id(b(identifier(ID),_,_INFO),Suffix) :- % _INFO=[lambda_result], sometiems _INFO=[]
is_lambda_result_name(ID,Suffix).
Calls:
Name: is_lambda_result_name/2 |
Module: translate |
Called:
Name: pp_comprehension_set5/7 |
Module: translate |
| Module: translate |
is_lambda_result_name(LAMBDA_RESULT,Suffix) :- atomic(LAMBDA_RESULT),
atom_codes(LAMBDA_RESULT,[95,108,97,109,98,100,97,95,114,101,115,117,108,116,95|Suffix]). % _lambda_result_
Calls:
Name: atom_codes/2 |
|
Name: atomic/1 |
Called:
Name: is_lambda_result_id/2 |
Module: translate |
Name: pp_expr0/7 |
Module: translate |
Name: render_call/4 |
Module: translate |
is_nontrivial_negation(b(negation(NExpr),pred,_),NExpr,NewType,Prio) :-
get_texpr_expr(NExpr,E),
(E=negation(_) -> NewType=other,Prio=0
; get_binary_connective(E,NewType,Ascii,_,_),
binary_infix(NewType,Ascii,Prio,_Assoc)).
Calls:
Name: binary_infix/4 |
Module: translate |
Name: get_binary_connective/5 |
Module: translate |
Name: =/2 |
|
Name: ->/3 |
|
Name: get_texpr_expr/2 |
Module: foo_error |
Called:
Name: pp_pred_nested/5 |
Module: translate |
is_printable_set(avl_set(A),List) :- avl_domain(A,List).
is_printable_set([],[]).
is_printable_set([H|T],[H|T]).
Calls:
Name: avl_domain/2 |
Module: foo_error |
Called:
Name: pp_tla_value/4 |
Module: translate |
Name: field_value_present/3 |
Module: translate |
is_projection(first_of_pair(A),A).
is_projection(second_of_pair(A),A).
Called:
Name: peel_projections/2 |
Module: translate |
is_set_pref(definition_decl(Name,_,_Pos,[],_Expr,_Deps)) :-
is_set_pref_def_name(Name,_,_).
Calls:
Name: is_set_pref_def_name/3 |
Module: translate |
is_set_pref_def_name(Name,Pref,CurValAtom) :-
atom_codes(Name,Codes),append("SET_PREF_",RestCodes,Codes),
atom_codes(Pref,RestCodes),
(eclipse_preference(Pref,P) -> get_preference(P,CurVal), translate_pref_val(CurVal,CurValAtom)
; deprecated_eclipse_preference(Pref,_,NewP,Mapping) -> get_preference(NewP,V), member(CurVal/V,Mapping)
; get_preference(Pref,CurVal), translate_pref_val(CurVal,CurValAtom)),
translate_pref_val(CurVal,CurValAtom).
Calls:
Name: translate_pref_val/2 |
Module: translate |
Name: get_preference/2 |
Module: preferences |
Name: member/2 |
|
Name: deprecated_eclipse_preference/4 |
Module: foo_error |
Name: ->/3 |
|
Name: eclipse_preference/2 |
Module: preferences |
Name: atom_codes/2 |
|
Name: append/3 |
Called:
Name: is_set_pref/1 |
Module: translate |
Name: translate_set_pref_def/3 |
Module: translate |
Name: set_pref_used/1 |
Module: translate |
is_subst_type(T) :- var(T),!,fail.
is_subst_type(subst).
is_subst_type(op(_,_)).
Calls:
Name: fail |
|
Name: ! |
|
Name: var/1 |
Called:
Name: l_print_bexpr_or_subst/1 |
Module: translate |
Name: print_bexpr_or_subst/1 |
Module: translate |
is_top_level_function_call(span_predicate(b(Expr,_,_),_,_)) :-
Expr = function(_,_),
get_preference(provide_trace_information,false).
Calls:
Name: get_preference/2 |
Module: preferences |
Name: =/2 |
Called:
Name: nop_call/1 |
Module: translate |
is_typing_predicate(member(A,_),Id) :- get_texpr_id(A,Id).
is_typing_predicate(subset(A,_),Id) :- get_texpr_id(A,Id).
is_typing_predicate(subset_strict(A,_),Id) :- get_texpr_id(A,Id).
Calls:
Name: get_texpr_id/2 |
Module: foo_error |
Called:
| Module: translate |
l_adapt_value_according_to_type([],_Type,R) :- !,R=[].
l_adapt_value_according_to_type([H|T],Type,[AH|AT]) :-
adapt_value_according_to_type(Type,H,AH),
l_adapt_value_according_to_type(T,Type,AT).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
| Module: translate | |
Name: =/2 |
|
Name: ! |
Called:
| Module: translate |
l_print_bexpr_or_subst([]).
l_print_bexpr_or_subst([H|T]) :-
print_bexpr_or_subst(H),
(T=[] -> true
; (get_texpr_type(H,Type),is_subst_type(Type) -> write('; ') ; write(', ')),
l_print_bexpr_or_subst(T)
).
Calls:
Name: RECURSIVE_CALL/1 |
Module: translate |
Name: write/1 |
|
Name: is_subst_type/1 |
Module: translate |
Name: get_texpr_type/2 |
Module: foo_error |
Name: ->/3 |
|
Name: true |
|
Name: =/2 |
|
Name: print_bexpr_or_subst/1 |
Module: translate |
l_print_bvalue([]).
l_print_bvalue([H|T]) :- print_bvalue(H), write(' : '),l_print_bvalue(T).
Calls:
Name: RECURSIVE_CALL/1 |
Module: translate |
Name: write/1 |
|
Name: print_bvalue/1 |
Module: translate |
l_print_frozen_info([]).
l_print_frozen_info([H|T]) :- write(H), write(' '),
(var(H) -> print_frozen_info(H) ;
H=fd_var(V,_) -> print_frozen_info(V) ; true), l_print_frozen_info(T).
Calls:
Name: RECURSIVE_CALL/1 |
Module: translate |
Name: true |
|
Name: print_frozen_info/1 |
Module: translate |
Name: =/2 |
|
Name: ->/3 |
|
Name: var/1 |
|
Name: write/1 |
Called:
| Module: eval_strings |
l_print_raw_bexpr([]).
l_print_raw_bexpr([Raw|T]) :- write(' '),
print_raw_bexpr(Raw),nl, l_print_raw_bexpr(T).
Calls:
Name: RECURSIVE_CALL/1 |
Module: translate |
Name: nl |
|
Name: print_raw_bexpr/1 |
Module: translate |
Name: write/1 |
Called:
Name: list/4 |
Module: disprover_test_runner_cli.pl |
lambda_symbol --> {unicode_mode},!, [955]. % '\x3BB\'
lambda_symbol --> {latex_mode},!, "\\lambda ".
lambda_symbol --> pp_colour_code(blue),"%",pp_colour_code(reset).
latex_integer_set_translation('NATURAL', '\\mathbb N '). % \nat in bsymb.sty
latex_integer_set_translation('NATURAL1', '\\mathbb N_1 '). % \natn
latex_integer_set_translation('INTEGER', '\\mathbb Z '). % \intg
latex_integer_set_translation('REAL', '\\mathbb R '). % \intg
Called:
Name: integer_set_mapping/3 |
Module: translate |
latex_to_b_ast(and,conjunct).
latex_to_b_ast(bcomp,ring). % bsymb: backwards composition
latex_to_b_ast(bigcap,quantified_intersection).
latex_to_b_ast(bigcup,quantified_union).
latex_to_b_ast(cap,intersection).
latex_to_b_ast(cart,cartesian_product).
latex_to_b_ast(cprod,cartesian_product).
latex_to_b_ast(cdot,dot_symbol).
latex_to_b_ast(cup,union).
latex_to_b_ast(dprod,direct_product).
latex_to_b_ast(dres,domain_restriction).
latex_to_b_ast(dsub,domain_subtraction).
latex_to_b_ast(emptyset,empty_set).
latex_to_b_ast(exp,power_of).
latex_to_b_ast(geq,greater_equal).
latex_to_b_ast(implies,implication).
latex_to_b_ast(in,member).
latex_to_b_ast(int,'INTEGER').
latex_to_b_ast(intg,'INTEGER'). % from bsymb
latex_to_b_ast(lambda,lambda).
latex_to_b_ast(land,conjunct).
latex_to_b_ast(leq,less_equal).
latex_to_b_ast(leqv,equivalence).
latex_to_b_ast(lhd,domain_restriction).
latex_to_b_ast(limp,implication).
latex_to_b_ast(lor,disjunct).
latex_to_b_ast(lnot,negation).
latex_to_b_ast(mapsto,couple).
latex_to_b_ast(nat,'NATURAL').
latex_to_b_ast(natn,'NATURAL1').
latex_to_b_ast(neg,negation).
latex_to_b_ast(neq,not_equal).
latex_to_b_ast(nin,not_member).
latex_to_b_ast(not,negation).
latex_to_b_ast(nsubseteq,not_subset).
latex_to_b_ast(nsubset,not_subset_strict).
latex_to_b_ast(or,disjunct).
latex_to_b_ast(pfun,partial_function).
latex_to_b_ast(pinj,partial_injection).
latex_to_b_ast(psur,partial_surjection).
latex_to_b_ast(pow,pow_subset).
latex_to_b_ast(pown,pow1_subset).
latex_to_b_ast(pprod,parallel_product).
latex_to_b_ast(qdot,dot_symbol).
latex_to_b_ast(real,'REAL').
latex_to_b_ast(rel,relations).
latex_to_b_ast(rhd,range_restriction).
latex_to_b_ast(rres,range_restriction).
latex_to_b_ast(rsub,range_subtraction).
latex_to_b_ast(srel,surjection_relation).
latex_to_b_ast(subseteq,subset).
latex_to_b_ast(subset,subset_strict).
latex_to_b_ast(tbij,total_bijection).
latex_to_b_ast(tfun,total_function).
latex_to_b_ast(tinj,total_injection).
latex_to_b_ast(trel,total_relation).
latex_to_b_ast(tsrel,total_surjection_relation).
latex_to_b_ast(tsur,total_surjection).
latex_to_b_ast(upto,interval).
latex_to_b_ast(vee,disjunct).
latex_to_b_ast(wedge,conjunct).
latex_to_b_ast('INT','INTEGER').
latex_to_b_ast('NAT','NATURAL').
latex_to_b_ast('N','NATURAL').
latex_to_b_ast('Pi',general_product).
latex_to_b_ast('POW',pow_subset).
latex_to_b_ast('REAL','REAL').
latex_to_b_ast('Rightarrow',implication).
latex_to_b_ast('Sigma',general_sum).
latex_to_b_ast('Leftrightarrow',equivalence).
latex_to_b_ast('Inter',quantified_intersection).
latex_to_b_ast('Union',quantified_union).
latex_to_b_ast('Z','INTEGER').
Called:
Name: latex_to_unicode/2 |
Module: translate |
latex_to_unicode(LatexShortcut,Unicode) :-
latex_to_b_ast(LatexShortcut,BAst),
unicode_translation(BAst,Unicode).
latex_to_unicode(LatexShortcut,Unicode) :- % allow to use B AST names as well
unicode_translation(LatexShortcut,Unicode).
latex_to_unicode(LatexShortcut,Unicode) :-
greek_symbol(LatexShortcut,Unicode).
Calls:
Name: greek_symbol/2 |
Module: translate |
Name: unicode_translation/2 |
Module: translate |
Name: latex_to_b_ast/2 |
Module: translate |
Called:
| Module: prob2_interface |
latex_translation(empty_set, '\\emptyset ').
latex_translation(implication, '\\mathbin\\Rightarrow ').
latex_translation(conjunct,'\\wedge ').
latex_translation(disjunct,'\\vee ').
latex_translation(equivalence,'\\mathbin\\Leftrightarrow ').
latex_translation(negation,'\\neg ').
latex_translation(not_equal,'\\neq ').
latex_translation(less_equal,'\\leq ').
latex_translation(less_equal_real,'\\leq ').
latex_translation(greater_equal,'\\geq ').
latex_translation(member,'\\in ').
latex_translation(not_member,'\\not\\in ').
latex_translation(subset,'\\subseteq ').
latex_translation(subset_strict,'\\subset ').
latex_translation(not_subset,'\\not\\subseteq ').
latex_translation(not_subset_strict,'\\not\\subset ').
latex_translation(union,'\\cup ').
latex_translation(intersection,'\\cap ').
latex_translation(couple,'\\mapsto ').
latex_translation(cartesian_product,'\\times').
latex_translation(rec,'\\mathit{rec}').
latex_translation(struct,'\\mathit{struct}').
latex_translation(convert_bool,'\\mathit{bool}').
latex_translation(max,'\\mathit{max}').
latex_translation(max_real,'\\mathit{max}').
latex_translation(min,'\\mathit{min}').
latex_translation(min_real,'\\mathit{min}').
latex_translation(modulo,'\\mod ').
latex_translation(card,'\\mathit{card}').
latex_translation(successor,'\\mathit{succ}').
latex_translation(predecessor,'\\mathit{pred}').
latex_translation(domain,'\\mathit{dom}').
latex_translation(range,'\\mathit{ran}').
latex_translation(size,'\\mathit{size}').
latex_translation(first,'\\mathit{first}').
latex_translation(last,'\\mathit{last}').
latex_translation(front,'\\mathit{front}').
latex_translation(tail,'\\mathit{tail}').
latex_translation(rev,'\\mathit{rev}').
latex_translation(seq,'\\mathit{seq}').
latex_translation(seq1,'\\mathit{seq}_{1}').
latex_translation(perm,'\\mathit{perm}').
latex_translation(fin_subset,'\\mathit{FIN}').
latex_translation(fin1_subset,'\\mathit{FIN}_{1}').
latex_translation(first_projection,'\\mathit{prj}_{1}').
latex_translation(second_projection,'\\mathit{prj}_{2}').
latex_translation(pow_subset,'\\mathbb P\\hbox{}'). % POW \pow would require bsymb.sty
latex_translation(pow1_subset,'\\mathbb P_1'). % POW1 \pown would require bsymb.sty
latex_translation(concat,'\\stackrel{\\frown}{~}'). % was '\\hat{~}').
latex_translation(relations,'\\mathbin\\leftrightarrow'). % <->, \rel requires bsymb.sty
latex_translation(total_relation,'\\mathbin{\\leftarrow\\mkern-14mu\\leftrightarrow}'). % <<-> \trel requires bsymb.sty
latex_translation(total_surjection_relation,'\\mathbin{\\leftrightarrow\\mkern-14mu\\leftrightarrow}'). % <<->> \strel requires bsymb.sty
latex_translation(surjection_relation,'\\mathbin{\\leftrightarrow\\mkern-14mu\\rightarrow}'). % <->> \srel requires bsymb.sty
latex_translation(partial_function,'\\mathbin{\\mkern6mu\\mapstochar\\mkern-6mu\\rightarrow}'). % +-> \pfun requires bsymb.sty, but \mapstochar is not supported by Mathjax
latex_translation(partial_injection,'\\mathbin{\\mkern9mu\\mapstochar\\mkern-9mu\\rightarrowtail}'). % >+> \pinj requires bsymb.sty
latex_translation(partial_surjection,'\\mathbin{\\mkern6mu\\mapstochar\\mkern-6mu\\twoheadrightarrow}'). % >+> \psur requires bsymb.sty
latex_translation(total_function,'\\mathbin\\rightarrow'). % --> \tfun would require bsymb.sty
latex_translation(total_surjection,'\\mathbin\\twoheadrightarrow'). % -->> \tsur requires bsymb.sty
latex_translation(total_injection,'\\mathbin\\rightarrowtail'). % >-> \tinj requires bsymb.sty
latex_translation(total_bijection,'\\mathbin{\\rightarrowtail\\mkern-18mu\\twoheadrightarrow}'). % >->> \tbij requires bsymb.sty
latex_translation(domain_restriction,'\\mathbin\\lhd'). % <| domres requires bsymb.sty
latex_translation(range_restriction,'\\mathbin\\rhd'). % |> ranres requires bsymb.sty
latex_translation(domain_subtraction,'\\mathbin{\\lhd\\mkern-14mu-}'). % <<| domsub requires bsymb.sty
latex_translation(range_subtraction,'\\mathbin{\\rhd\\mkern-14mu-}'). % |>> ransub requires bsymb.sty
latex_translation(overwrite,'\\mathbin{\\lhd\\mkern-9mu-}'). % <+ \ovl requires bsymb.sty
latex_translation(ring,'\\circ '). % not tested
latex_translation(general_sum,'\\Sigma ').
latex_translation(general_product,'\\Pi ').
latex_translation(lambda,'\\lambda ').
latex_translation(quantified_union,'\\bigcup\\nolimits'). % \Union requires bsymb.sty
latex_translation(quantified_intersection,'\\bigcap\\nolimits'). % \Inter requires bsymb.sty
latex_translation(truth,'{\\color{olive} \\top}'). % requires \usepackage{xcolor} in Latex
latex_translation(falsity,'{\\color{red} \\bot}').
latex_translation(boolean_true,'{\\color{olive} \\mathit{TRUE}}').
latex_translation(boolean_false,'{\\color{red} \\mathit{FALSE}}').
latex_translation(pred_true,'{\\color{olive} \\mathit{TRUE}}').
latex_translation(pred_false,'{\\color{red} \\mathit{FALSE}}').
latex_translation(reverse,'^{-1}').
Called:
Name: translate_in_mode/3 |
Module: translate |
| Module: translate |
left_set_bracket --> {latex_mode},!, "\\{ ".
left_set_bracket --> "{".
len(Var,X,Len) :- (var(Var) ; Var==X),!, Len=0.
len([],_,0).
len([_|T],X,Len) :- len(T,X,L1), Len is L1+1.
Calls:
Name: is/2 |
|
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
|
Name: ==/2 |
|
Name: var/1 |
Called:
Name: end_size/4 |
Module: translate |
lub_state([],[],[]).
lub_state([bind(V,H1)|T1],[bind(V,H2)|T2],[bind(V,H3)|T3]) :-
(H1==H2 -> H3=H1 ; H3='$NONDET'), lub_state(T1,T2,T3).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: =/2 |
|
Name: ==/2 |
|
Name: ->/3 |
Called:
| Module: translate |
make_closure_ids([],[],[]).
make_closure_ids([V|Vrest],[T|Trest],[TExpr|TErest]) :-
(var(V) -> V2='_', format('Illegal variable identifier in make_closure_ids: ~w~n',[V])
; V2=V),
create_texpr(identifier(V2),T,[],TExpr),
make_closure_ids(Vrest,Trest,TErest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: create_texpr/4 |
Module: foo_error |
Name: =/2 |
|
Name: format/2 |
|
Name: var/1 |
|
Name: ->/3 |
Called:
Name: pp_closure_value2/6 |
Module: translate |
Name: pp_closure_value/6 |
Module: translate |
maplet_symbol --> {latex_mode},!, "\\mapsto ".
maplet_symbol --> {unicode_mode},!, [8614].
maplet_symbol --> "|->". % also provide option to use colours? pp_colour_code(blue) ,...
member_in_info(X,T) :- var(T),!, add_internal_error('Illegal info field:', member_in_info(X,T)),fail.
member_in_info(X,[X|_]).
member_in_info(X,[_|T]) :- member_in_info(X,T).
Calls:
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: fail |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: ! |
|
Name: var/1 |
Called:
Name: pp_expr1/7 |
Module: translate |
memberchk_in_info(X,T) :- var(T),!, add_internal_error('Illegal info field:', memberchk_in_info(X,T)),fail.
memberchk_in_info(X,[X|_]) :- !.
memberchk_in_info(X,[_|T]) :- memberchk_in_info(X,T).
Calls:
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: ! |
|
Name: fail |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: var/1 |
Called:
Name: pp_theory_operator/5 |
Module: translate |
Name: pp_expr1/7 |
Module: translate |
mpart_typing(Title,Section,Sections,PredI) -->
{mpart_typing2(Section,Sections,PredI,PredO)},
( {is_truth(PredO)} -> [] % TO DO: in animation_minor_mode(z) for INVARIANT: force adding typing predicates (translate_print_typing_infos)
;
mpstart_spec_desc(Title,P),
section_pred_over_lines(0,Title,PredO),
mpend(P)).
Calls:
Name: mpend/3 |
Module: translate |
| Module: translate | |
Name: mpstart_spec_desc/4 |
Module: translate |
Name: =/2 |
|
Name: is_truth/1 |
Module: foo_error |
Name: ->/3 |
|
Name: mpart_typing2/4 |
Module: translate |
Called:
Name: translate_mpart2/5 |
Module: translate |
mpart_typing2(Sections,AllSections,PredI,PredO) :-
get_preference(translate_print_typing_infos,true),!,
get_all_ids(Sections,AllSections,Ids),
add_typing_predicates(Ids,PredI,PredO).
mpart_typing2(_Section,_Sections,Pred,Pred).
Calls:
Name: add_typing_predicates/3 |
Module: translate |
Name: get_all_ids/3 |
Module: translate |
Name: ! |
|
Name: get_preference/2 |
Module: preferences |
Called:
Name: mpart_typing/6 |
Module: translate |
mpend(I) -->
indention_level(_,I).
Calls:
Name: indention_level/4 |
Module: translate |
Called:
| Module: translate | |
Name: translate_mpart2/5 |
Module: translate |
Name: mpart_typing/6 |
Module: translate |
mpstart(Title,I) -->
insertstr('\n'),insertstr(Title),
indention_level(I,I2), {I2 is I+2}.
Calls:
Name: =/2 |
|
Name: is/2 |
|
Name: indention_level/4 |
Module: translate |
Name: insertstr/3 |
Module: translate |
Called:
| Module: translate | |
Name: mpstart_spec_desc/4 |
Module: translate |
Name: mpstart_section/6 |
Module: translate |
Name: translate_mpart2/5 |
Module: translate |
mpstart_section(Section,Title,AltTitle,I,In,Out) :-
(\+ section_header_generated(Section)
-> mpstart(Title,I,In,Out), assertz(section_header_generated(Section))
; mpstart(AltTitle,I,In,Out) /* use alternative title; section header already generated */
).
Calls:
Name: mpstart/4 |
Module: translate |
Name: assertz/1 |
|
Name: section_header_generated/1 |
dynamic predicate |
Name: not/1 |
|
Name: ->/3 |
Called:
Name: translate_mpart2/5 |
Module: translate |
mpstart_spec_desc(Title,P) --> {get_specification_description(Title,Atom)},!, mpstart(Atom,P).
mpstart_spec_desc(Title,P) --> mpstart(Title,P).
Called:
Name: mpart_typing/6 |
Module: translate |
Name: translate_mpart2/5 |
Module: translate |
my_greek_latex_escape_atom(A,greek,Res) :-
greek_or_math_symbol(A),get_preference(latex_pp_greek_ids,true),!,
atom_concat('\\',A,Res).
my_greek_latex_escape_atom(A,no_greek,EA) :- latex_escape_atom(A,EA).
Calls:
Name: latex_escape_atom/2 |
Module: tools |
Name: atom_concat/3 |
|
Name: ! |
|
Name: get_preference/2 |
Module: preferences |
Name: greek_or_math_symbol/1 |
Module: translate |
Called:
Name: pp_codes_opt_latex/3 |
Module: translate |
Name: pp_atom_opt_latex/3 |
Module: translate |
Name: translated_identifier/2 |
Module: translate |
name_variables([],_,[]).
name_variables([_|VRest],Index,[Name|NRest]) :-
(nth1(Index,"ABCDEFGHIJKLMNOPQRSTUVWXYZ",C) -> SName = [C] ; number_codes(Index,SName)),
append("_",SName,CName),atom_codes(Name,CName),
Next is Index+1,
name_variables(VRest,Next,NRest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: is/2 |
|
Name: atom_codes/2 |
|
Name: append/3 |
|
Name: number_codes/2 |
|
Name: =/2 |
|
Name: nth1/3 |
Module: foo_error |
Name: ->/3 |
Called:
Name: extract_vartype_names/2 |
Module: translate |
nbp(b(E,_,Info),Type,Indent) :- !,nbp2(E,Type,Info,Indent).
nbp(E,Type,Indent) :- format(user_error,'Missing b/3 wrapper!~n',[]),
nbp2(E,Type,[],Indent).
Called:
Name: nested_print_bexpr2/2 |
Module: translate |
Name: nbp2/4 |
Module: translate |
nbp2(E,Type,_Info,Indent) :- get_binary_connective(E,NewType,Ascii,LHS,RHS),!,
inc_indent(NewType,Type,Indent,NIndent),
print_bracket(Indent,NIndent,'('),
nbp(LHS,NewType,NIndent),
print_indent(NIndent),
translate_in_mode(NewType,Ascii,Symbol), write(Symbol),nl,
(is_associative(NewType) -> NewTypeR=NewType % no need for parentheses if same operator on right
; NewTypeR=right(NewType)),
nbp(RHS,NewTypeR,NIndent),
print_bracket(Indent,NIndent,')').
nbp2(lazy_let_pred(TID,LHS,RHS),Type,_Info,Indent) :-
def_get_texpr_id(TID,ID),!,
NewType=lazy_let_pred(TID),
inc_indent(NewType,Type,Indent,NIndent),
print_indent(Indent), format('LET ~w = (~n',[ID]),
nbp(LHS,NewType,NIndent),
print_indent(NIndent), write(') IN ('),nl,
nbp(RHS,NewType,NIndent),
print_indent(NIndent),write(')'),nl.
nbp2(negation(LHS),_Type,_Info,Indent) :- !,
inc_indent(negation,false,Indent,NIndent),
print_indent(Indent),
translate_in_mode(negation,'not',Symbol), format('~s(~n',[Symbol]),
nbp(LHS,negation,NIndent),
print_indent(Indent), write(')'),nl.
nbp2(let_predicate(Ids,Exprs,Pred),_Type,_Info,Indent) :- !,
inc_indent(let_predicate,false,Indent,NIndent),
pp_expr_ids_in_mode(Ids,_LR,Codes,[]),
print_indent(Indent),format('#~s.( /* LET */~n',[Codes]),
pp_expr_let_pred_exprs(Ids,Exprs,_LimitReached,Codes2,[]),
print_indent(Indent), format('~s~n',[Codes2]),
print_indent(NIndent), write('&'),nl,
nbp(Pred,let_predicate,NIndent),
print_indent(Indent), write(')'),nl.
nbp2(let_expression(Ids,Exprs,Pred),_Type,_Info,Indent) :- !,
inc_indent(let_expression,false,Indent,NIndent),
pp_expr_ids_in_mode(Ids,_LR,Codes,[]),
print_indent(Indent),format('LET ~s BE~n',[Codes]),
pp_expr_let_pred_exprs(Ids,Exprs,_LimitReached,Codes2,[]),
print_indent(Indent), format('~s~n',[Codes2]),
print_indent(NIndent), write('IN'),nl,
nbp(Pred,let_expression,NIndent),
print_indent(Indent), write('END'),nl.
nbp2(exists(Ids,Pred),_Type,_Infos,Indent) :- !,
inc_indent(exists,false,Indent,NIndent),
pp_expr_ids_in_mode(Ids,_LR,Codes,[]),
print_indent(Indent),
%(member(allow_to_lift_exists,_Infos) -> write('/* LIFT */ ') ; true),
exists_symbol(ExistsSymbol,[]), format('~s~s.(~n',[ExistsSymbol,Codes]),
nbp(Pred,exists,NIndent),
print_indent(Indent), write(')'),nl.
nbp2(forall(Ids,LHS,RHS),_Type,_Info,Indent) :- !,
inc_indent(forall,false,Indent,NIndent),
pp_expr_ids_in_mode(Ids,_LR,Codes,[]),
print_indent(Indent),
forall_symbol(ForallSymbol,[]), format('~s~s.(~n',[ForallSymbol,Codes]),
nbp(LHS,forall,NIndent),
print_indent(NIndent),
translate_in_mode(implication,'=>',Symbol),write(Symbol),nl,
nbp(RHS,forall,NIndent),
print_indent(Indent), write(')'),nl.
nbp2(if_then_else(Test,LHS,RHS),_Type,_Info,Indent) :- !,
inc_indent(if_then_else,false,Indent,NIndent),
print_indent(Indent), write('IF'),nl,
nbp(Test,if_then_else,NIndent),
print_indent(Indent), write('THEN'),nl,
nbp(LHS,if_then_else,NIndent),
print_indent(Indent), write('ELSE'),nl,
nbp(RHS,if_then_else,NIndent),
print_indent(Indent), write('END'),nl.
nbp2(BOP,_Type,_Info,Indent) :-
indent_binary_pred(BOP,LHS,RHS,NewType,Ascii),
get_texpr_id(LHS,_Id),
\+ simple_expr(RHS),
!,
print_indent(Indent),print_bexpr(LHS),write(' '),
translate_in_mode(NewType,Ascii,Symbol), write(Symbol),nl,
inc_indent(NewType,false,Indent,NIndent),
nbp(RHS,equal,NIndent). % do we need to put parentheses around this ?
nbp2(value(V),_,Info,Indent) :- !,
print_indent(Indent), print_bexpr(b(value(V),any,Info)),nl.
nbp2(E,_,Info,Indent) :-
print_indent(Indent), print_bexpr(b(E,pred,Info)),nl.
Calls:
Name: nl |
|
Name: print_bexpr/1 |
Module: translate |
Name: print_indent/1 |
Module: translate |
Name: ! |
|
Name: nbp/3 |
Module: translate |
Name: inc_indent/4 |
Module: translate |
Name: write/1 |
|
Name: translate_in_mode/3 |
Module: translate |
Name: simple_expr/1 |
Module: translate |
Name: not/1 |
|
Name: get_texpr_id/2 |
Module: foo_error |
Name: indent_binary_pred/5 |
Module: translate |
Name: format/2 |
|
Name: forall_symbol/2 |
Module: foo_error |
Name: pp_expr_ids_in_mode/4 |
Module: translate |
Name: exists_symbol/2 |
Module: foo_error |
Name: pp_expr_let_pred_exprs/5 |
Module: translate |
Name: =/2 |
|
Name: def_get_texpr_id/2 |
Module: foo_error |
Name: print_bracket/3 |
Module: translate |
Name: is_associative/1 |
Module: translate |
Name: ->/3 |
|
Name: get_binary_connective/5 |
Module: translate |
nested_print_bexpr(Expr) :- nested_print_bexpr2(Expr,0).
Calls:
Name: nested_print_bexpr2/2 |
Module: translate |
Called:
| Module: cbc_refinement_checks | |
| Module: cbc_refinement_checks | |
Name: initialisation_pos/5 |
Module: cbc_refinement_checks |
Name: store_benchmark/3 |
Module: banditfuzz |
| Module: b2setlog | |
Name: analyse_wd_for_expr/4 |
Module: well_def_analyser |
| Module: cbc_ba | |
Name: portray_hyps/1 |
Module: well_def_hyps |
| Module: enabling_analysis | |
| Module: well_def_analyser | |
Name: cli_print_pred_info/1 |
Module: prob_cli |
Name: nested_print_wd_bexpr/1 |
Module: well_def_analyser |
Name: operations_pos/7 |
Module: cbc_refinement_checks |
Name: cleanup_pre_function/7 |
Module: b_ast_cleanup |
Name: my_solve_predicate/2 |
Module: smtlib2_interpreter |
| Module: cbc_refinement_checks | |
Name: cleanup_pre/7 |
Module: b_ast_cleanup |
Name: action_simulation3/5 |
Module: cbc_refinement_checks |
Name: create_freetypes2/7 |
Module: bmachine_construction |
nested_print_bexpr2([],_) :- !.
nested_print_bexpr2([H],InitialIndent) :- !,nested_print_bexpr2(H,InitialIndent).
nested_print_bexpr2([H|T],II) :- !,
nested_print_bexpr2(H,II),
print_indent(II), write('&'),nl,
nested_print_bexpr2(T,II).
nested_print_bexpr2(Expr,II) :- nbp(Expr,conjunct,II).
Calls:
Name: nbp/3 |
Module: translate |
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: nl |
|
Name: write/1 |
|
Name: print_indent/1 |
Module: translate |
Name: ! |
Called:
Name: nested_print_bexpr/1 |
Module: translate |
| Module: translate |
nested_print_bexpr_as_classicalb(E) :- nested_print_bexpr_as_classicalb2(E,0).
Calls:
| Module: translate |
Called:
Name: disprove3/5 |
Module: disprover |
| Module: eval_strings | |
Name: write_hypothesis/1 |
Module: disprover |
Name: compute_unsat_core/2 |
Module: disprover |
| Module: b_state_model_check | |
Name: print_unsat_core/5 |
Module: eval_strings |
Name: cli_core_properties/1 |
Module: prob_cli |
Name: predicate_satisfiable5/5 |
Module: b_state_model_check |
| Module: b_state_model_check | |
| Module: b_state_model_check | |
Name: disprove_double_check/8 |
Module: disprover |
| Module: b_state_model_check |
nested_print_bexpr_as_classicalb2(E,InitialPeanoIndent) :-
(animation_minor_mode(X)
-> remove_animation_minor_mode,
call_cleanup(nested_print_bexpr2(E,InitialPeanoIndent), set_animation_minor_mode(X))
; nested_print_bexpr2(E,InitialPeanoIndent)).
Calls:
Name: nested_print_bexpr2/2 |
Module: translate |
Name: call_cleanup/2 |
|
| Module: specfile | |
Name: animation_minor_mode/1 |
Module: specfile |
Name: ->/3 |
nested_print_bexpr_up_to(State,ExpandAvlUpTo) :-
temporary_set_preference(expand_avl_upto,ExpandAvlUpTo,CHNG),
call_cleanup(nested_print_bexpr(State),
reset_temporary_preference(expand_avl_upto,CHNG)).
Calls:
Name: call_cleanup/2 |
|
Name: temporary_set_preference/3 |
Module: foo_error |
nested_print_sequent_as_classicalb(Stream,HypsList,Goal,AllHypsList,MchName,ProofInfos) :-
set_suppress_rodin_positions(false,Chng), % ensure we print Rodin labels if available
call_cleanup(nested_print_sequent_as_classicalb_aux(Stream,HypsList,Goal,AllHypsList,MchName,ProofInfos),
reset_suppress_rodin_positions(Chng)).
Calls:
Name: call_cleanup/2 |
|
| Module: translate |
Called:
Name: export_po_as_machine/5 |
Module: disprover |
nested_print_sequent_as_classicalb_aux(Stream,HypsList,Goal,AllHypsList,MchName,ProofInfos) :-
conjunct_predicates(HypsList,HypsPred),
conjunct_predicates([Goal|HypsList],Pred),
get_global_identifiers(Ignored,ignore_promoted_constants), % the sets section below will not print the promoted enumerated set constants, they may also not be valid for the selected hyps only
find_typed_identifier_uses(Pred, Ignored, TUsedIds),
get_texpr_ids(TUsedIds,UsedIds),
convert_and_ajoin_ids(UsedIds,AllIds),
bmachine:get_full_b_machine(_Name,BMachine),
include(relevant_section,BMachine,RelevantSections),
% TO DO: we could filter out enumerate/deferred sets not occuring in Pred
translate_section_list(RelevantSections,SetsParas),
set_print_type_infos(all,CHNG),
datime(datime(Yr,Mon,Day,Hr,Min,_Sec)),
format(Stream,'MACHINE ~w~n /* Exported: ~w/~w/~w ~w:~w */~n',[MchName,Day,Mon,Yr,Hr,Min]),
(currently_opened_file(File), bmachine:b_machine_name(Name)
-> format(Stream,' /* Origin: ~w : ~w */~n',[Name,File]) ; true),
write(Stream,' /* '),format_prob_version(Stream), format(Stream,' */~n',[]),
format(Stream,' /* Use static asssertion checking to look for counter examples: */~n',[]),
format(Stream,' /* - probcli -cbc_assertions ProB_Rodin_PO_SelectedHyps.mch */~n',[]),
format(Stream,' /* - in ProB2-UI: Verifications View -> Symbolic Tab -> Static Assertion Checking */~n',[]),
maplist(format_proof_infos(Stream),ProofInfos),
format(Stream,'~sCONSTANTS~n ~w~nPROPERTIES /* Selected Hypotheses: */~n',[SetsParas,AllIds]),
add_typing_predicates(TUsedIds,HypsPred,HypsT),
current_output(OldStream),
set_output(Stream),
nested_print_bexpr_as_classicalb2(HypsT,s(0)), % TODO: pass stream to this predicate
format(Stream,'~nASSERTIONS /* Proof Goal: */~n',[]),
nested_print_bexpr_as_classicalb2(Goal,s(0)), % TODO: pass stream to this predicate
(AllHypsList = [] -> true
; sort(AllHypsList,SAL), sort(HypsList,SL),
ord_subtract(SAL,SL,RemainingHypsList), % TODO: we could preserve order
conjunct_predicates(RemainingHypsList,AllHypsPred),
find_typed_identifier_uses(AllHypsPred, Ignored, TAllUsedIds),
get_texpr_ids(TAllUsedIds,AllUsedIds),
ord_subtract(AllUsedIds,UsedIds,NewIds), % compute new ids not used in selected hyps and goal
(NewIds = []
-> format(Stream,'OPERATIONS~n CheckRemainingHypotheses = SELECT~n',[])
; ajoin_with_sep(NewIds,', ',NIdLst),
format(Stream,'OPERATIONS~n CheckRemainingHypotheses(~w) = SELECT~n',[NIdLst])
),
add_typing_predicates(TAllUsedIds,AllHypsPred,AllHypsT),
nested_print_bexpr_as_classicalb2(AllHypsT,s(0)), % TODO: pass stream to this predicate
format(Stream,' THEN skip~n END /* CheckRemainingHypotheses */~n',[])
),
set_output(OldStream),
reset_print_type_infos(CHNG),
format(Stream,'DEFINITIONS~n SET_PREF_DISPROVER_MODE == TRUE~n ; SET_PREF_TRY_FIND_ABORT == FALSE~n',[]),
format(Stream,' ; SET_PREF_ALLOW_REALS == FALSE~n',[]),
% The Rodin DisproverCommand.java usually enables CHR;
% TODO: we could also look for options(List) in ProofInfos and check use_chr_solver/true in List, ...
(get_preference(use_clpfd_solver,false) -> format(Stream,' ; SET_PREF_CHR == FALSE~n',[]) ; true),
(get_preference(use_chr_solver,true) -> format(Stream,' ; SET_PREF_CHR == TRUE~n',[]) ; true),
(get_preference(use_smt_mode,true) -> format(Stream,' ; SET_PREF_SMT == TRUE~n',[]) ; true),
(get_preference(use_smt_mode,true) -> format(Stream,' ; SET_PREF_SMT == TRUE~n',[]) ; true),
(get_preference(use_common_subexpression_elimination,true) -> format(Stream,' ; SET_PREF_CSE == TRUE~n',[]) ; true),
(get_preference(smt_supported_interpreter,true) -> format(Stream,' ; SET_PREF_SMT_SUPPORTED_INTERPRETER == TRUE~n',[]) ; true),
format(Stream,'END~n',[]).
Calls:
Name: format/3 |
|
Name: true |
|
Name: get_preference/2 |
Module: preferences |
Name: ->/3 |
|
Name: reset_print_type_infos/1 |
Module: translate |
Name: set_output/1 |
|
| Module: translate | |
Name: add_typing_predicates/3 |
Module: translate |
Name: ajoin_with_sep/3 |
Module: foo_error |
Name: =/2 |
|
Name: ord_subtract/3 |
Module: foo_error |
Name: get_texpr_ids/2 |
Module: foo_error |
Name: find_typed_identifier_uses/3 |
Module: foo_error |
Name: conjunct_predicates/2 |
Module: foo_error |
Name: sort/2 |
|
Name: current_output/1 |
|
Name: maplist/2 |
Module: foo_error |
Name: format_prob_version/1 |
Module: version |
Name: write/2 |
|
Name: b_machine_name/1 |
Module: bmachine |
Name: currently_opened_file/1 |
Module: specfile |
Name: datime/1 |
Module: system |
Name: set_print_type_infos/2 |
Module: translate |
Name: translate_section_list/2 |
Module: translate |
Name: include/3 |
Module: foo_error |
Name: get_full_b_machine/2 |
Module: bmachine |
Name: convert_and_ajoin_ids/2 |
Module: translate |
Name: get_global_identifiers/2 |
Module: foo_error |
non_det_modified_var(NDModVars,bind(Var,_)) :- ord_member(Var,NDModVars).
Calls:
Name: ord_member/2 |
Module: foo_error |
nop_call(top_level_call(X)) :- \+ is_top_level_function_call(X).
Calls:
| Module: translate | |
Name: not/1 |
Called:
Name: split_calls/2 |
Module: translate |
normalized_type_requires_outer_paren(couple(_,_)).
Called:
Name: pp_expr1/7 |
Module: translate |
opt_scramble_id(ID,Res) :- get_preference(bugly_pp_scrambling,true),!,
bugly_scramble_id(ID,Res).
opt_scramble_id(ID,ID).
Calls:
Name: bugly_scramble_id/2 |
Module: translate |
Name: ! |
|
Name: get_preference/2 |
Module: preferences |
Called:
Name: pretty_type_fields/3 |
Module: translate |
Name: pretty_type2/4 |
Module: translate |
optional_type(Typed,Expr) :- get_texpr_expr(Typed,E),!,Expr=E.
optional_type(Expr,Expr).
Calls:
Name: =/2 |
|
Name: ! |
|
Name: get_texpr_expr/2 |
Module: foo_error |
Called:
Name: get_if_elsif/3 |
Module: translate |
Name: translate_ifs/3 |
Module: translate |
pairs_to_list([_],Value) --> !,[Value].
pairs_to_list([_|Rest],(L,R)) -->
pairs_to_list(Rest,L),[R].
Calls:
Name: =/2 |
|
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: ! |
Called:
Name: pp_tla_value/4 |
Module: translate |
peel_projections(b(A,_,_),R) :-
(is_projection(A,RA) -> peel_projections(RA,R)
; A = freetype_destructor(_,_,R)).
Calls:
Name: =/2 |
|
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: is_projection/2 |
Module: translate |
Name: ->/3 |
Called:
Name: was_eventb_destructor/4 |
Module: translate |
pp_all_disjoint([H1,H2],LimitReached) --> !, " ",and_symbol," ", pp_disjoint(H1,H2,LimitReached).
pp_all_disjoint([H1|T],LimitReached) --> pp_all_disjoint_aux(T,H1,LimitReached), pp_all_disjoint(T,LimitReached).
pp_all_disjoint([],_) --> "".
Calls:
Name: =/2 |
|
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: pp_all_disjoint_aux/5 |
Module: translate |
Name: pp_disjoint/5 |
Module: translate |
Name: and_symbol/2 |
Module: foo_error |
Name: ! |
Called:
Name: pp_expr2/5 |
Module: translate |
pp_all_disjoint_aux([],_,_) --> "".
pp_all_disjoint_aux([H2|T],H1,LimitReached) --> " ",and_symbol," ",
pp_disjoint(H1,H2,LimitReached), pp_all_disjoint_aux(T,H1,LimitReached).
Calls:
Name: RECURSIVE_CALL/5 |
Module: translate |
Name: pp_disjoint/5 |
Module: translate |
Name: =/2 |
|
Name: and_symbol/2 |
Module: foo_error |
Called:
Name: pp_all_disjoint/4 |
Module: translate |
pp_annotations(V,_) --> {var(V), format('Illegal variable info field in pp_annotations: ~w~n',[V])},!,
"/* ILLEGAL VARIABLE INFO FIELD */".
pp_annotations(INFO,_) --> {member(prob_annotation('SYMBOLIC'),INFO)},!,
"/*@symbolic*/ ".
pp_annotations(_,b(_,_,INFO)) --> {nonvar(INFO),member(prob_annotation('SYMBOLIC'),INFO)},!,
"/*@symbolic*/ ".
pp_annotations(_,_) --> "".
Calls:
Name: =/2 |
|
Name: ! |
|
Name: member/2 |
|
Name: nonvar/1 |
|
Name: format/2 |
|
Name: var/1 |
Called:
Name: pp_comprehension_set5/7 |
Module: translate |
pp_any_state(X,VarLimit) --> try_pp_b_state(X,VarLimit),!.
pp_any_state(csp_and_b(P,B),VarLimit) --> "CSP: ",{pp_csp_process(P,Atoms,[])},!,atoms_to_codelist(Atoms),
" || B: ", try_pp_b_state(B,VarLimit).
pp_any_state(X,_) --> {animation_mode(xtl)}, !, "XTL: ",pp_xtl_value(X). % XTL/CSP state
pp_any_state(P,_) --> "CSP: ",{pp_csp_process(P,Atoms,[])},!,atoms_to_codelist(Atoms).
pp_any_state(X,_) --> "Other formalism: ",ppterm(X). % CSP state
Calls:
Name: ppterm/3 |
Module: translate |
Name: =/2 |
|
Name: atoms_to_codelist/3 |
Module: translate |
Name: ! |
|
Name: pp_csp_process/3 |
Module: translate |
Name: pp_xtl_value/3 |
Module: translate |
Name: animation_mode/1 |
Module: specfile |
Name: try_pp_b_state/4 |
Module: translate |
Called:
Name: translate_any_state/2 |
Module: translate |
| Module: translate |
pp_any_state_with_limit(State,Limit) -->
{ get_preference(expand_avl_upto,CurLim),
(CurLim<0 ; Limit < CurLim),
!,
temporary_set_preference(expand_avl_upto,Limit,CHNG),
VarLimit is Limit*10
},
pp_any_state(State,VarLimit),
{reset_temporary_preference(expand_avl_upto,CHNG)}.
pp_any_state_with_limit(State,_Limit) -->
{get_preference(expand_avl_upto,CurLim), VarLimit is CurLim*10},
pp_any_state(State,VarLimit).
Calls:
Name: pp_any_state/4 |
Module: translate |
Name: is/2 |
|
Name: get_preference/2 |
Module: preferences |
Name: =/2 |
|
Name: reset_temporary_preference/2 |
Module: foo_error |
Name: temporary_set_preference/3 |
Module: foo_error |
Name: ! |
|
Name: </2 |
Called:
Name: pp_context_state3/3 |
Module: translate |
pp_argument(argument(ID,_RawType)) --> !, ppatom(ID).
pp_argument(identifier(_,ID)) --> !, "<",ppatom(ID),">".
pp_argument(Atom) --> ppatom(Atom).
Called:
| Module: translate |
pp_atom_indent(A,(I,S),(I,T)) :- ppatom(A,S,T).
Called:
Name: dec_lvl/4 |
Module: translate |
Name: inc_lvl/4 |
Module: translate |
Name: pp_pred_nested/5 |
Module: translate |
Name: pp_label/4 |
Module: translate |
pp_atom_opt_latex(Name) --> {latex_mode},!,
{my_greek_latex_escape_atom(Name,_,EscName)},
% should we add \mathrm{.} or \mathit{.}?
ppatom(EscName).
pp_atom_opt_latex(Name) --> ppatom(Name).
Calls:
Name: ppatom/3 |
Module: translate |
| Module: translate | |
Name: ! |
|
Name: latex_mode |
dynamic predicate |
Called:
Name: ppatom_opt_scramble/3 |
Module: translate |
Name: ppatoms_opt_latex/3 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
Name: pp_bugly_string/3 |
Module: translate |
pp_atom_opt_latex_mathit(Name) --> {latex_mode},!,
{latex_escape_atom(Name,EscName)},
"\\mathit{",ppatom(EscName),"}".
pp_atom_opt_latex_mathit(Name) --> ppatom(Name).
Calls:
Name: ppatom/3 |
Module: translate |
Name: =/2 |
|
Name: latex_escape_atom/2 |
Module: tools |
Name: ! |
|
Name: latex_mode |
dynamic predicate |
Called:
Name: pp_expr2/5 |
Module: translate |
pp_atom_opt_mathit(EscName) --> {latex_mode},!,
% we assume already escaped
"\\mathit{",ppatom(EscName),"}".
pp_atom_opt_mathit(Name) --> ppatom(Name).
Calls:
Name: ppatom/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
|
Name: latex_mode |
dynamic predicate |
Called:
Name: pp_expr2/5 |
Module: translate |
pp_b_context([]) --> !.
pp_b_context([C|Rest]) --> !,
pp_b_context(C),
pp_b_context(Rest).
pp_b_context(translate_context) --> !, " ERROR CONTEXT: translate_context". % error occurred within translate_context
pp_b_context(span_context(Span,Context)) --> !,
pp_b_context(Context), " ", translate_span(Span,only_subsidiary).
pp_b_context(operation(Name,StateID)) --> !,
" ERROR CONTEXT: ",
{get_specification_description_codes(operation,OP)}, OP, ":", % "OPERATION:"
({var(Name)} -> ppterm('ALL') ; {translate_operation_name(Name,TName)},ppterm(TName)),
",",pp_context_state(StateID).
pp_b_context(checking_invariant) --> !,
" ERROR CONTEXT: INVARIANT CHECKING,", pp_cur_context_state.
pp_b_context(checking_negation_of_invariant(State)) --> !,
" ERROR CONTEXT: NEGATION_OF_INVARIANT CHECKING, State:", pp_b_state(State,1000).
pp_b_context(checking_assertions) --> !,
" ERROR CONTEXT: ASSERTION CHECKING,", pp_cur_context_state.
pp_b_context(checking_context(Check,Name)) --> !,
" ERROR CONTEXT: ", ppterm(Check),ppterm(Name).
pp_b_context(loading_context(_FName)) --> !.
pp_b_context(unit_test_context(Module,TotNr,Line,Call)) --> !,
" ERROR CONTEXT: Unit Test ", ppterm(TotNr), " in module ", ppterm(Module),
" at line ", ppterm(Line), " calling ", pp_functor(Call).
pp_b_context(visb_error_context(Class,ID,OpNameOrAttr,Span)) --> !,
" ERROR CONTEXT: VisB ", ppterm(Class), " with ID ", ppterm(ID),
({OpNameOrAttr='all_attributes'} ->
; " and attribute/event ", ppterm(OpNameOrAttr)
),
" ", translate_span(Span,only_subsidiary).
pp_b_context(C) --> ppterm(C),pp_cur_context_state.
Calls:
Name: pp_cur_context_state/2 |
Module: foo_error |
Name: ppterm/3 |
Module: translate |
Name: translate_span/4 |
Module: translate |
Name: =/2 |
|
Name: ->/3 |
|
Name: ! |
|
Name: pp_functor/3 |
Module: translate |
Name: pp_b_state/4 |
Module: translate |
Name: pp_context_state/3 |
Module: translate |
| Module: specfile | |
Name: var/1 |
|
Name: phrase/3 |
|
| Module: translate | |
Name: RECURSIVE_CALL/3 |
Module: translate |
Called:
Name: translate_context/2 |
Module: translate |
pp_b_state(X,Limit) --> try_pp_b_state(X,Limit),!.
pp_b_state(X,_Limit) --> {add_error(pp_b_state,'Could not translate state: ',X)}.
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: ! |
|
Name: try_pp_b_state/4 |
Module: translate |
Called:
Name: translate_bstate/2 |
Module: translate |
| Module: translate | |
Name: try_pp_b_state/4 |
Module: translate |
Name: explain_error_context2/3 |
Module: translate |
Name: explain_local_state/3 |
Module: translate |
Name: pp_b_context/3 |
Module: translate |
pp_b_state_comma_list([],_,_) --> !, ")".
pp_b_state_comma_list(_,Cur,Limit) --> {Cur >= Limit}, !, "...".
pp_b_state_comma_list([bind(Varname,Value)|Rest],Cur,Limit) --> !,
%{write(c(Varname,Cur,Limit)),nl},
start_size(Ref),
ppterm(Varname),"=",
pp_value(Value),
({Rest = []}
-> ")"
; ",",
end_size(Ref,Size), % compute size increase wrt Ref point
{Cur1 is Cur+Size},
pp_b_state_comma_list(Rest,Cur1,Limit)
).
pp_b_state_comma_list(X,_,_) --> {add_error(pp_b_state_comma_list,'Could not translate: ',X)}.
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: RECURSIVE_CALL/5 |
Module: translate |
Name: is/2 |
|
Name: end_size/4 |
Module: translate |
Name: ->/3 |
|
Name: pp_value/3 |
Module: translate |
Name: ppterm/3 |
Module: translate |
Name: start_size/3 |
Module: translate |
Name: ! |
|
Name: >=/2 |
pp_b_state_list([],_) --> !, " )".
pp_b_state_list([bind(Varname,Value)|Rest],Limit) --> !,
ppterm(Varname),"=",
dcg_set_up_limit_reached(Limit,LimitReached),
pp_value(Value,LimitReached),
({Rest = []} -> [] ; " ",and_symbol,"\n "),
pp_b_state_list(Rest,Limit).
pp_b_state_list(X,_) --> {add_error(pp_b_state_list,'Could not translate: ',X)}.
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: and_symbol/2 |
Module: foo_error |
Name: ->/3 |
|
Name: pp_value/4 |
Module: translate |
| Module: translate | |
Name: ppterm/3 |
Module: translate |
Name: ! |
Called:
Name: try_pp_b_state/4 |
Module: translate |
pp_backquoted_id_codes(Codes) --> {append(Prefix,[0'. | Suffix],Codes), Suffix=[_|_]},
!, % we need to split the id and quote each part separately; otherwise the parser will complain
% see issue https://github.com/hhu-stups/prob-issues/issues/321
% However, ids with dots are not accepted for constants and variables; so this does not solve all problems
"`", pp_codes_opt_scramble(Prefix), "`.", % TODO: we could check if id_requires_escaping
pp_backquoted_id_codes(Suffix).
pp_backquoted_id_codes(Codes) --> "`", pp_codes_opt_scramble(Codes), "`".
Calls:
Name: =/2 |
|
Name: pp_codes_opt_scramble/3 |
Module: translate |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ! |
|
Name: append/3 |
Called:
| Module: translate |
pp_backquoted_identifier(Atom) --> {atom_codes(Atom,Codes)}, pp_backquoted_id_codes(Codes).
Calls:
Name: pp_backquoted_id_codes/3 |
Module: translate |
Name: atom_codes/2 |
Called:
Name: pp_identifier/3 |
Module: translate |
pp_begin_sequence --> {animation_minor_mode(tla)},!,"<<".
pp_begin_sequence --> {get_preference(translate_print_cs_style_sequences,true)},!,"".
pp_begin_sequence --> "[".
pp_bugly_composed_string(Name) --> {atom_codes(Name,Codes)},
!, % we can decompose the string; scramble each string separately; TODO: provide option to define separators
% idea is that if we have a string with spaces or other special separators we preserve the separators
pp_bugly_composed_string_codes(Codes,[]).
Calls:
| Module: translate | |
Name: ! |
|
Name: atom_codes/2 |
Called:
Name: ppstring_opt_scramble/3 |
Module: translate |
pp_bugly_composed_string_codes([],Acc) --> {atom_codes(Atom,Acc)}, pp_bugly_string(Atom).
pp_bugly_composed_string_codes(List,Acc) --> {decompose_string(List,Seps,T)},!,
{reverse(Acc,Rev),atom_codes(Atom,Rev)}, pp_bugly_string(Atom),
ppcodes(Seps),
pp_bugly_composed_string_codes(T,[]).
pp_bugly_composed_string_codes([H|T],Acc) --> pp_bugly_composed_string_codes(T,[H|Acc]).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: ppcodes/3 |
Module: translate |
Name: pp_bugly_string/3 |
Module: translate |
Name: atom_codes/2 |
|
Name: reverse/2 |
Module: foo_error |
Name: ! |
|
Name: decompose_string/3 |
Module: translate |
Called:
| Module: translate | |
Name: pp_codes_opt_scramble/3 |
Module: translate |
pp_bugly_string('') --> !, [].
pp_bugly_string(Name) -->
{convert_atom_to_number(Name,_)},!, % do not scramble numbers; we could check if LibraryStrings is available
pp_atom_opt_latex(Name).
pp_bugly_string(Name) -->
{bugly_scramble_id(Name,ScrName)},
ppatom(ScrName).
Calls:
Name: ppatom/3 |
Module: translate |
Name: bugly_scramble_id/2 |
Module: translate |
Name: pp_atom_opt_latex/3 |
Module: translate |
Name: ! |
|
Name: convert_atom_to_number/2 |
Module: tools_strings |
Name: =/2 |
Called:
| Module: translate |
pp_closure_value(Ids,Type,B,_LimitReached) -->
{var(Ids) ; var(Type) ; var(B)},!,
add_internal_error('Illegal value: ',pp_value_illegal_closure(Ids,Type,B)),
"<< ILLEGAL ",write_to_codes(closure(Ids,Type,B))," >>".
pp_closure_value(Variables,Types,Predicate,LimitReached) --> {\+ size_is_in_set_limit(1)},
!, % do not print body; just print hash value
{make_closure_ids(Variables,Types,Ids), term_hash(Predicate,PH)},
left_set_bracket, % { Ids | #PREDICATE#(HASH) }
pp_expr_l_pair_in_mode(Ids,LimitReached),
pp_such_that_bar,
" ",hash_card_symbol,"PREDICATE",hash_card_symbol,"(",ppnumber(PH),") ", right_set_bracket.
pp_closure_value(Variables,Types,Predicate,LimitReached) -->
{get_preference(translate_ids_to_parseable_format,true),
is_recursive_closure(Variables,Types,Predicate),
get_texpr_info(Predicate,Infos),
member(prob_annotation(recursive(TID)),Infos),
def_get_texpr_id(TID,ID)}, !,
% write recursive let for f as : CHOOSE(.) or MU({f|f= SET /*@desc letrec */ })
% an alternate syntax could be RECLET f BE f = SET IN f END
"MU({", pp_identifier(ID), "|",
pp_identifier(ID)," = ",
pp_closure_value2(Variables,Types,Predicate,LimitReached),
"/*@desc letrec */ }) ".
pp_closure_value([Id],[Type],Membership,LimitReached) -->
{ get_texpr_expr(Membership,member(Elem,Set)),
get_texpr_id(Elem,Id),
\+ occurs_in_expr(Id,Set), % detect things like {s|s : 1 .. card(s) --> T} (test 1030)
get_texpr_type(Elem,Type),
!},
pp_expr_m(Set,299,LimitReached).
pp_closure_value(Variables,Types,Predicate,LimitReached) --> pp_closure_value2(Variables,Types,Predicate,LimitReached).
Calls:
Name: pp_closure_value2/6 |
Module: translate |
Name: pp_expr_m/5 |
Module: translate |
Name: ! |
|
Name: get_texpr_type/2 |
Module: foo_error |
Name: occurs_in_expr/2 |
Module: foo_error |
Name: not/1 |
|
Name: get_texpr_id/2 |
Module: foo_error |
Name: get_texpr_expr/2 |
Module: foo_error |
Name: =/2 |
|
Name: pp_identifier/3 |
Module: translate |
Name: def_get_texpr_id/2 |
Module: foo_error |
Name: member/2 |
|
Name: get_texpr_info/2 |
Module: foo_error |
Name: is_recursive_closure/3 |
Module: closures |
Name: get_preference/2 |
Module: preferences |
Name: right_set_bracket/2 |
Module: foo_error |
Name: ppnumber/3 |
Module: translate |
Name: hash_card_symbol/2 |
Module: foo_error |
Name: pp_such_that_bar/2 |
Module: foo_error |
Name: pp_expr_l_pair_in_mode/4 |
Module: translate |
Name: left_set_bracket/2 |
Module: foo_error |
Name: term_hash/2 |
Module: foo_error |
Name: make_closure_ids/3 |
Module: translate |
Name: size_is_in_set_limit/1 |
Module: translate |
Name: write_to_codes/3 |
Module: foo_error |
Name: add_internal_error/4 |
Module: foo_error |
Name: var/1 |
Called:
Name: pp_value/4 |
Module: translate |
pp_closure_value2(Variables,Types,Predicate,LimitReached) --> !,
{make_closure_ids(Variables,Types,Ids)},
pp_comprehension_set(Ids,Predicate,[],LimitReached). % TODO: propagate LimitReached
Calls:
Name: pp_comprehension_set/6 |
Module: translate |
Name: make_closure_ids/3 |
Module: translate |
Name: ! |
Called:
Name: pp_closure_value/6 |
Module: translate |
pp_clpfd_variable(X) --> "?:",{fd_dom(X,Dom)},write_to_codes(Dom), pp_frozen_info(X).
Calls:
Name: pp_frozen_info/3 |
Module: translate |
Name: write_to_codes/3 |
Module: foo_error |
Name: fd_dom/2 |
Module: foo_error |
Name: =/2 |
Called:
Name: ppnumber/3 |
Module: translate |
pp_codes_opt_latex(Codes) --> {latex_mode},!,
{atom_codes(Name,Codes),my_greek_latex_escape_atom(Name,_,EscName)},
ppatom(EscName).
pp_codes_opt_latex(Codes) --> ppcodes(Codes).
Calls:
Name: ppcodes/3 |
Module: translate |
Name: ppatom/3 |
Module: translate |
| Module: translate | |
Name: atom_codes/2 |
|
Name: ! |
|
Name: latex_mode |
dynamic predicate |
Called:
Name: ppstring_opt_scramble/3 |
Module: translate |
Name: pp_codes_opt_scramble/3 |
Module: translate |
pp_codes_opt_scramble(Codes) --> {get_preference(bugly_pp_scrambling,true)},!,
pp_bugly_composed_string_codes(Codes,[]).
pp_codes_opt_scramble(Codes) --> {b_string_escape_codes(Codes,EscCodes)},
pp_codes_opt_latex(EscCodes).
Calls:
Name: pp_codes_opt_latex/3 |
Module: translate |
Name: b_string_escape_codes/2 |
Module: tools |
| Module: translate | |
Name: ! |
|
Name: get_preference/2 |
Module: preferences |
Called:
Name: pp_backquoted_id_codes/3 |
Module: translate |
pp_colour_code(Colour) --> {use_colour_codes,get_terminal_colour_code(Colour,C), atom_codes(C,CC)},!,CC.
pp_colour_code(_) --> [].
Calls:
Name: =/2 |
|
Name: phrase/3 |
|
Name: ! |
|
Name: atom_codes/2 |
|
| Module: tools_printing | |
Name: use_colour_codes/0 |
Module: translate |
pp_comprehension_set(Ids,P1,Info,LimitReached) -->
pp_comprehension_set5(Ids,P1,Info,LimitReached,_).
Calls:
Name: pp_comprehension_set5/7 |
Module: translate |
Called:
Name: pp_comprehension_set5/7 |
Module: translate |
Name: pp_expr1/7 |
Module: translate |
Name: pp_closure_value2/6 |
Module: translate |
pp_comprehension_set5([TID1,TID2,TID3],Body,_Info,LimitReached,special(Proj)) -->
/* This comprehension set was a projection function (prj1/prj2) */
% %(z_,z__).(z__ : NATURAL|z_) -> prj1(INTEGER,NATURAL)
{get_texpr_id(TID1,ID1), % sometimes _zzzz_unary or _prj_arg1__
get_texpr_id(TID2,ID2), % sometimes _zzzz_binary or _prj_arg2__
get_texpr_id(TID3,LambdaID),
get_lambda_equality(Body,LambdaID,RestBody,ResultExpr),
get_texpr_id(ResultExpr,ResultID),
(ResultID = ID1 -> Proj = prj1 ; ResultID = ID2, Proj = prj2),
flatten_conjunctions(RestBody,Rest1),
select_membership(Rest1,TID1,Rest2,Set1),
select_membership(Rest2,TID2,[],Set2)},
!,
pp_prj12(Proj,Set1,Set2,LimitReached).
pp_comprehension_set5([ID1|T],Body,Info,LimitReached,special(disjunct)) --> {is_a_disjunct(Body,B1,B2),
get_last(T,ID1,_FrontIDs,LastID),
is_lambda_result_id(LastID,_Suffix)},!, % we seem to have the union of two lambda expressions
"(", pp_comprehension_set([ID1|T],B1,Info,LimitReached),
" \\/ ", pp_comprehension_set([ID1|T],B2,Info,LimitReached), ")".
pp_comprehension_set5([b(identifier('_pred_'),integer,_),
b(identifier(LAMBDARES),integer,_)],Body,_,_,special(pred)) --> % '_lambda_result_'
{Body = b(equal(LR,T),pred,_),
LR = b(identifier(LAMBDARES),integer,_),
T = b(minus(ARG,One),integer,_),
get_integer(One,1),
ARG = b(identifier('_pred_'),integer,_)},
!,
"pred".
pp_comprehension_set5([b(identifier('_succ_'),integer,_),
b(identifier(LAMBDARES),integer,_)],Body,_,_,special(succ)) --> % '_lambda_result_'
{Body = b(equal(LR,T),pred,_),
LR = b(identifier(LAMBDARES),integer,_),
T = b(add(ARG,One),integer,_),
get_integer(One,1),
ARG = b(identifier('_succ_'),integer,_)},
!,
"succ".
pp_comprehension_set5(Paras,Body,Info,LimitReached,special(lambda)) -->
{detect_lambda_comprehension(Paras,Body, FrontIDs,LambdaBody,ToExpr)},
!,
{add_normal_typing_predicates(FrontIDs,LambdaBody,TLambdaBody)},
({eventb_translation_mode} -> "(" ; ""), % put brackets around the lambda in Rodin
pp_annotations(Info,Body),
lambda_symbol, % "%"
pp_lambda_identifiers(FrontIDs,LimitReached),
".",
({eventb_translation_mode} -> {IPrio=30} ; {IPrio=11}, "("), % In Rodin it is not ok to write (P|E)
pp_expr_m(TLambdaBody,IPrio,LimitReached), % Check 11 against prio of . and |
pp_such_that_bar(ToExpr),
pp_expr_m(ToExpr,IPrio,LimitReached),
")".
pp_comprehension_set5(TIds,Body,Info,LimitReached,special(event_b_comprehension_set)) -->
% detect Event-B style set comprehensions and use bullet โข or Event-B notation such as {xยทx โ 1 โฅ 3|x * 10}
% gets translated to {`__comp_result__`|โxยท(x โ 1 โฅ 3 โง `__comp_result__` = x * 10)}
{is_eventb_comprehension_set(TIds,Body,Info,Ids,P1,EXPR), \+ atelierb_mode(_)},!, % print rewritten version for AtelierB
pp_annotations(Info,P1),
left_set_bracket,
pp_expr_l_pair_in_mode(Ids,LimitReached),
{add_normal_typing_predicates(Ids,P1,P)},
dot_bullet_symbol,
pp_expr_m(P,11,LimitReached),
pp_such_that_bar(P),
pp_expr_m(EXPR,11,LimitReached),
right_set_bracket.
pp_comprehension_set5(Ids,P1,_Info,LimitReached,normal) --> {atelierb_mode(prover(ml))},!,
"SET(",
pp_expr_l_pair_in_mode(Ids,LimitReached),
").(",
{add_normal_typing_predicates(Ids,P1,P)},
pp_expr_m(P,11,LimitReached),
")".
pp_comprehension_set5(Ids,P1,Info,LimitReached,normal) -->
pp_annotations(Info,P1),
left_set_bracket,
pp_expr_l_pair_in_mode(Ids,LimitReached),
{add_normal_typing_predicates(Ids,P1,P)},
pp_such_that_bar(P),
pp_expr_m(P,11,LimitReached),
right_set_bracket.
Calls:
Name: right_set_bracket/2 |
Module: foo_error |
Name: pp_expr_m/5 |
Module: translate |
Name: pp_such_that_bar/3 |
Module: translate |
| Module: translate | |
Name: pp_expr_l_pair_in_mode/4 |
Module: translate |
Name: left_set_bracket/2 |
Module: foo_error |
Name: pp_annotations/4 |
Module: translate |
Name: =/2 |
|
Name: ! |
|
Name: atelierb_mode/1 |
dynamic predicate |
Name: dot_bullet_symbol/2 |
Module: foo_error |
Name: not/1 |
|
Name: is_eventb_comprehension_set/6 |
Module: foo_error |
| Module: translate | |
Name: ->/3 |
|
Name: pp_lambda_identifiers/4 |
Module: translate |
Name: lambda_symbol/2 |
Module: foo_error |
| Module: translate | |
Name: get_integer/2 |
Module: foo_error |
Name: pp_comprehension_set/6 |
Module: translate |
Name: is_lambda_result_id/2 |
Module: translate |
Name: get_last/4 |
Module: translate |
Name: is_a_disjunct/3 |
Module: foo_error |
Name: pp_prj12/6 |
Module: translate |
Name: select_membership/4 |
Module: translate |
Name: flatten_conjunctions/2 |
Module: foo_error |
Name: get_texpr_id/2 |
Module: foo_error |
Name: get_lambda_equality/4 |
Module: foo_error |
Called:
Name: pp_comprehension_set/6 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
pp_context_state(ID) --> {state_space:visited_expression(ID,State)},!, % we have a state ID
" State ID:", ppterm(ID),
pp_context_state2(State).
pp_context_state(State) --> pp_context_state3(State).
Calls:
Name: pp_context_state3/3 |
Module: translate |
Name: pp_context_state2/3 |
Module: translate |
Name: ppterm/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
|
Name: visited_expression/2 |
Module: state_space |
Called:
Name: explain_error_context2/3 |
Module: translate |
Name: pp_b_context/3 |
Module: translate |
pp_context_state2(_) --> {debug:debug_mode(off)},!.
pp_context_state2(State) --> ",", pp_context_state3(State).
Calls:
Name: pp_context_state3/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
|
Name: debug_mode/1 |
Module: debug |
Called:
Name: pp_context_state/3 |
Module: translate |
pp_context_state3(State) --> " State: ",pp_any_state_with_limit(State,10).
Calls:
| Module: translate | |
Name: =/2 |
Called:
Name: pp_context_state2/3 |
Module: translate |
Name: pp_context_state/3 |
Module: translate |
pp_csp_args([],T,T,_LPar,_RPar).
pp_csp_args([H|TT],[LPar|S],T,LPar,RPar) :- pp_csp_value(H,S,S1), pp_csp_args2(TT,S1,T,RPar).
Calls:
Name: pp_csp_args2/4 |
Module: translate |
Name: pp_csp_value/3 |
Module: translate |
Called:
Name: pp_csp_process/3 |
Module: translate |
Name: pp_csp_curry_args/3 |
Module: translate |
Name: pp_csp_value/3 |
Module: translate |
pp_csp_args2([],[RPar|T],T,RPar).
pp_csp_args2([H|TT],[','|S],T,RPar) :- pp_csp_value(H,S,S1), pp_csp_args2(TT,S1,T,RPar).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: pp_csp_value/3 |
Module: translate |
Called:
Name: pp_csp_args/5 |
Module: translate |
pp_csp_bool_expr(bool_not(BE),['not('|S],T) :- !, pp_csp_bool_expr(BE,S,[')'|T]).
pp_csp_bool_expr(BE,['('|S],T) :- binary_bool_op(BE,BE1,BE2,OP), !,
pp_csp_bool_expr(BE1,S,[OP|S2]),
pp_csp_bool_expr(BE2,S2,[')'|T]).
pp_csp_bool_expr(BE,[OP,'('|S],T) :- binary_pred(BE,BE1,BE2,OP), !,
pp_csp_value(BE1,S,[','|S2]),
pp_csp_value(BE2,S2,[')'|T]).
pp_csp_bool_expr(BE,S,T) :- pp_csp_value(BE,S,T).
Calls:
Name: pp_csp_value/3 |
Module: translate |
Name: ! |
|
Name: binary_pred/4 |
Module: translate |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: binary_bool_op/4 |
Module: translate |
Called:
Name: pp_csp_process/3 |
Module: translate |
pp_csp_curry_args([],T,T).
pp_csp_curry_args([H|TT],S,T) :- is_list(H), pp_csp_args(H,S,S1,'(',')'), pp_csp_curry_args(TT,S1,T).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: pp_csp_args/5 |
Module: translate |
Name: is_list/1 |
Module: foo_error |
Called:
Name: pp_csp_process/3 |
Module: translate |
Name: pp_csp_value/3 |
Module: translate |
pp_csp_process(skip(_Span),S,T) :- !, S=['SKIP'|T].
pp_csp_process(stop(_Span),S,T) :- !, S=['STOP'|T].
pp_csp_process('CHAOS'(_Span,Set),['CHAOS('|S],T) :- !,
pp_csp_value(Set,S,[')'|T]).
pp_csp_process(val_of(Agent,_Span),S,T) :- !,
pp_csp_value(Agent,S,T).
pp_csp_process(builtin_call(X),S,T) :- !,pp_csp_process(X,S,T).
pp_csp_process(agent(F,Body,_Span),S,T) :- !,
F =.. [Agent|Parameters],
pp_csp_value(Agent,S,S1),
pp_csp_args(Parameters,S1,[' = '|S2],'(',')'),
pp_csp_value(Body,S2,T).
pp_csp_process(agent_call(_Span,Agent,Parameters),S,T) :- !,
pp_csp_value(Agent,S,S1),
pp_csp_args(Parameters,S1,T,'(',')').
pp_csp_process(agent_call_curry(Agent,Parameters),S,T) :- !,
pp_csp_value(Agent,S,S1),
pp_csp_curry_args(Parameters,S1,T).
pp_csp_process(lambda(Parameters,Body),['\\ '|S],T) :- !,
pp_csp_args(Parameters,S,[' @ '|S1],'',''),
pp_csp_value(Body,S1,T).
pp_csp_process('\\'(B,C,S),S1,T) :- !, pp_csp_process(ehide(B,C,S),S1,T).
pp_csp_process(ehide(Body,ChList,_Span),['('|S],T) :- !,
pp_csp_process(Body,S,[')\\('|S1]),
pp_csp_value(ChList,S1,[')'|T]).
pp_csp_process(let(Decls,P),['let '| S],T) :- !,
maplist(translate_cspm_state,Decls,Texts),
ajoin_with_sep(Texts,' ',Text),
S=[Text,' within '|S1],
pp_csp_process(P,S1,T).
pp_csp_process(Expr,['('|S],T) :- binary_csp_op(Expr,X,Y,Op),!,
pp_csp_process(X,S,[') ',Op,' ('|S1]),
pp_csp_process(Y,S1,[')'|T]).
pp_csp_process(Expr,S,T) :- sharing_csp_op(Expr,X,Middle,Y,Op1,Op2),!,
pp_csp_process(X,S,[Op1|S1]),
pp_csp_value(Middle,S1,[Op2|S2]),
pp_csp_process(Y,S2,T).
pp_csp_process(Expr,S,T) :- asharing_csp_op(Expr,X,MiddleX,MiddleY,Y,Op1,MOp,Op2),!,
pp_csp_process(X,S,[Op1|S1]),
pp_csp_value(MiddleX,S1,[MOp|S2]),
pp_csp_value(MiddleY,S2,[Op2|S3]),
pp_csp_process(Y,S3,T).
pp_csp_process(Expr,S,T) :- renaming_csp_op(Expr,X,RList,Op1,Op2),!,
pp_csp_process(X,S,[Op1|S1]),
pp_csp_value_l(RList,',',S1,[Op2|T],10).
pp_csp_process(prefix(_SPAN1,Values,ChannelExpr,CSP,_SPAN2),S,T) :- !,
pp_csp_value_l([ChannelExpr|Values],'',S,['->'|S2],20),
pp_csp_process(CSP,S2,T).
pp_csp_process('&'(Test,Then),S,T) :- !,
pp_csp_bool_expr(Test,S,['&'|S2]),
pp_csp_process(Then,S2,T).
pp_csp_process(ifte(Test,Then,Else,_SPAN1,_SPAN2,_SPAN3),[' if '|S],T) :- !,
pp_csp_bool_expr(Test,S,[' then '|S2]),
pp_csp_process(Then,S2,[' else '|S3]),
pp_csp_process(Else,S3,T).
pp_csp_process(head(A),[head,'('|S],T) :- !, pp_csp_process(A,S,[')'|T]).
pp_csp_process(X,[X|T],T).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ! |
|
Name: pp_csp_bool_expr/3 |
Module: translate |
Name: pp_csp_value_l/5 |
Module: translate |
Name: renaming_csp_op/5 |
Module: translate |
Name: pp_csp_value/3 |
Module: translate |
Name: asharing_csp_op/8 |
Module: translate |
Name: sharing_csp_op/6 |
Module: translate |
Name: binary_csp_op/4 |
Module: translate |
Name: =/2 |
|
Name: ajoin_with_sep/3 |
Module: foo_error |
Name: maplist/3 |
Module: foo_error |
Name: pp_csp_args/5 |
Module: translate |
Name: pp_csp_curry_args/3 |
Module: translate |
Name: =../2 |
Called:
Name: pp_csp_value/3 |
Module: translate |
Name: pp_any_state/4 |
Module: translate |
Name: translate_cspm_state/2 |
Module: translate |
pp_csp_value(X,[A|S],S) :- pp_single_csp_value(X,A),!.
pp_csp_value(setValue(L),['{'|S],T) :- !,pp_csp_value_l(L,',',S,['}'|T],inf).
pp_csp_value(setExp(rangeEnum(L)),['{'|S],T) :- !,pp_csp_value_l(L,',',S,['}'|T],inf).
pp_csp_value(setExp(rangeEnum(L),Gen),['{'|S],T) :- !,
copy_term((L,Gen),(L2,Gen2)), numbervars((L2,Gen2),1,_),
pp_csp_value_l(L2,',',S,['|'|S2],inf),
pp_csp_value_l(Gen2,',',S2,['}'|T],inf).
pp_csp_value(avl_set(A),['{'|S],T) :- !, check_is_non_empty_avl(A),
avl_domain(A,L),pp_csp_value_l(L,',',S,['}'|T],inf).
pp_csp_value(setExp(rangeClosed(L,U)),['{'|S],T) :- !, pp_csp_value(L,S,['..'|S2]),pp_csp_value(U,S2,['}'|T]).
pp_csp_value(setExp(rangeOpen(L)),['{'|S],T) :- !, pp_csp_value(L,S,['..}'|T]).
pp_csp_value(comprehensionGenerator(Var,Body),S,T) :- !, pp_csp_value(Var,S,['<-'|S1]),
pp_csp_value(Body,S1,T).
pp_csp_value(listExp(rangeEnum(L)),['<'|S],T) :- !,pp_csp_value_l(L,',',S,['>'|T],inf).
pp_csp_value(listExp(rangeClosed(L,U)),['<'|S],T) :- !, pp_csp_value(L,S,['..'|S2]),pp_csp_value(U,S2,['>'|T]).
pp_csp_value(listExp(rangeOpen(L)),['<'|S],T) :- !, pp_csp_value(L,S,['..>'|T]).
pp_csp_value(setFromTo(L,U),['{'|S],T) :- !,
pp_csp_value(L,S,['..'|S2]),pp_csp_value(U,S2,['}'|T]).
pp_csp_value(setFrom(L),['{'|S],T) :- !,
pp_csp_value(L,S,['..}'|T]).
pp_csp_value(closure(L), ['{|'|S],T) :- !,pp_csp_value_l(L,',',S,['|}'|T],inf).
pp_csp_value(list(L),['<'|S],T) :- !,pp_csp_value_l(L,',',S,['>'|T],inf).
pp_csp_value(listFromTo(L,U),['<'|S],T) :- !,
pp_csp_value(L,S,['..'|S2]),pp_csp_value(U,S2,['>'|T]).
pp_csp_value(listFrom(L),['<'|S],T) :- !,
pp_csp_value(L,S,['..>'|T]).
pp_csp_value('#'(L),['#'|S],T) :- !,pp_csp_value(L,S,T).
pp_csp_value('^'(X,Y),S,T) :- !,pp_csp_value(X,S,['^'|S1]), pp_csp_value(Y,S1,T).
pp_csp_value(linkList(L),S,T) :- !,pp_csp_value_l(L,',',S,T,inf).
pp_csp_value(in(X),['?'|S],T) :- !,pp_csp_value(X,S,T).
pp_csp_value(inGuard(X,Set),['?'|S],T) :- !,pp_csp_value(X,S,[':'|S1]),
pp_csp_value(Set,S1,T).
pp_csp_value(out(X),['!'|S],T) :- !,pp_csp_value(X,S,T).
pp_csp_value(alsoPat(X,_Y),S,T) :- !,pp_csp_value(X,S,T).
pp_csp_value(appendPat(X,_Fun),S,T) :- !,pp_csp_value(X,S,T).
pp_csp_value(tuple(vclosure),S,T) :- !, S=T.
pp_csp_value(tuple([X]),S,T) :- !,pp_csp_value_in(X,S,T).
pp_csp_value(tuple([X|vclosure]),S,T) :- !,pp_csp_value_in(X,S,T).
pp_csp_value(tuple([H|TT]),S,T) :- !,pp_csp_value_in(H,S,['.'|S1]),pp_csp_value(tuple(TT),S1,T).
pp_csp_value(dotTuple([]),['unit_channel'|S],S) :- ! .
pp_csp_value(dotTuple([H]),S,T) :- !, pp_csp_value_in(H,S,T).
pp_csp_value(dotTuple([H|TT]),S,T) :- !, pp_csp_value_in(H,S,['.'|S1]),
pp_csp_value(dotTuple(TT),S1,T).
pp_csp_value(tupleExp(Args),S,T) :- !,pp_csp_args(Args,S,T,'(',')').
pp_csp_value(na_tuple(Args),S,T) :- !,pp_csp_args(Args,S,T,'(',')').
pp_csp_value(record(Name,Args),['('|S],T) :- !,pp_csp_value(tuple([Name|Args]),S,[')'|T]).
pp_csp_value(val_of(Name,_Span),S,T) :- !, pp_csp_value(Name,S,T).
pp_csp_value(builtin_call(X),S,T) :- !,pp_csp_value(X,S,T).
pp_csp_value(seq_to_set(X),['set('|S],T) :- !,pp_csp_value(X,S,[')'|T]).
pp_csp_value(set_to_seq(X),['seq('|S],T) :- !,pp_csp_value(X,S,[')'|T]).
pp_csp_value(agent_call(_Span,Agent,Parameters),['('|S],T) :- !,
pp_csp_value(Agent,S,S1),
pp_csp_args(Parameters,S1,[')'|T],'(',')').
pp_csp_value(agent_call_curry(Agent,Parameters),S,T) :- !,
pp_csp_value(Agent,S,S1),
pp_csp_curry_args(Parameters,S1,T).
pp_csp_value(lambda(Parameters,Body),['\\ '|S],T) :- !,
pp_csp_args(Parameters,S,[' @ '|S1],'',''),
pp_csp_value(Body,S1,T).
pp_csp_value(rename(X,Y),S,T) :- !,pp_csp_value(X,S,[' <- '|S1]),
pp_csp_value(Y,S1,T).
pp_csp_value(link(X,Y),S,T) :- !,pp_csp_value(X,S,[' <-> '|S1]),
pp_csp_value(Y,S1,T).
pp_csp_value(Expr,['('|S],T) :- bynary_numeric_operation(Expr,E1,E2,OP),!,
pp_csp_value(E1,S,[OP|S2]),
pp_csp_value(E2,S2,[')'|T]).
pp_csp_value(empty(A),[empty,'('|S],T) :- !, pp_csp_value(A,S,[')'|T]).
pp_csp_value(card(A),[card,'('|S],T) :- !, pp_csp_value(A,S,[')'|T]).
pp_csp_value('Set'(A),['Set','('|S],T) :- !, pp_csp_value(A,S,[')'|T]).
pp_csp_value('Inter'(A1),['Inter','('|S],T) :- !,pp_csp_value(A1,S,[')'|T]).
pp_csp_value('Union'(A1),['Union','('|S],T) :- !,pp_csp_value(A1,S,[')'|T]).
pp_csp_value(diff(A1,A2),[diff,'('|S],T) :- !,pp_csp_args([A1,A2],S,[')'|T],'','').
pp_csp_value(inter(A1,A2),[inter,'('|S],T) :- !,pp_csp_args([A1,A2],S,[')'|T],'','').
pp_csp_value(union(A1,A2),[union,'('|S],T) :- !,pp_csp_args([A1,A2],S,[')'|T],'','').
pp_csp_value(member(A1,A2),[member,'('|S],T) :- !,pp_csp_args([A1,A2],S,[')'|T],'','').
pp_csp_value(null(A),[null,'('|S],T) :- !, pp_csp_value(A,S,[')'|T]).
pp_csp_value(length(A),[length,'('|S],T) :- !, pp_csp_value(A,S,[')'|T]).
pp_csp_value(head(A),[head,'('|S],T) :- !, pp_csp_value(A,S,[')'|T]).
pp_csp_value(tail(A),[tail,'('|S],T) :- !, pp_csp_value(A,S,[')'|T]).
pp_csp_value(elem(A1,A2),[elem,'('|S],T) :- !,pp_csp_args([A1,A2],S,[')'|T],'','').
pp_csp_value(concat(A1,A2),[concat,'('|S],T) :- !,pp_csp_args([A1,A2],S,[')'|T],'','').
pp_csp_value('Seq'(A),['Seq','('|S],T) :- !, pp_csp_value(A,S,[')'|T]).
pp_csp_value(Expr,S,T) :- is_list(Expr),!,pp_csp_value(closure(Expr),S,T).
pp_csp_value(dotTupleType([H]),S,T) :- !, pp_csp_value_in(H,S,T).
pp_csp_value(dotTupleType([H|TT]),S,T) :- !,pp_csp_value_in(H,S,['.'|S1]), pp_csp_value(dotTupleType(TT),S1,T).
pp_csp_value(typeTuple(Args),S,T) :- !, pp_csp_args(Args,S,T,'(',')').
pp_csp_value(dataType(T),[T|S],S) :- ! .
pp_csp_value(boolType,['Bool'|S],S) :- ! .
pp_csp_value(intType,['Int'|S],S) :- ! .
pp_csp_value(dataTypeDef([H]),S,T) :- !, pp_csp_value(H,S,T).
pp_csp_value(dataTypeDef([H|TT]),S,T) :- !, pp_csp_value(H,S,['|'|S1]),
pp_csp_value(dataTypeDef(TT),S1,T).
pp_csp_value(constructor(Name),[Name|S],S) :- ! .
pp_csp_value(constructorC(C,Type),[C,'('|S],T) :- !, pp_csp_value(Type,S,[')'|T]).
pp_csp_value(Expr,S,T) :- pp_csp_process(Expr,S,T),!. % pp_csp_process has a catch-all !!! TO DO: look at this
pp_csp_value(Expr,S,T) :- csp_with_bz_mode,!,pp_value(Expr,S,T).
pp_csp_value(X, [A|S], S) :- % ['<< ',A,' >>'|S],S) :- % the << >> pose problems when checking against FDR
write_to_codes(X,Codes),atom_codes_with_limit(A,Codes).
Calls:
Name: atom_codes_with_limit/2 |
Module: foo_error |
Name: write_to_codes/2 |
Module: foo_error |
Name: pp_value/3 |
Module: translate |
Name: ! |
|
Name: csp_with_bz_mode/0 |
Module: specfile |
Name: pp_csp_process/3 |
Module: translate |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: pp_csp_args/5 |
Module: translate |
Name: pp_csp_value_in/3 |
Module: translate |
Name: is_list/1 |
Module: foo_error |
| Module: translate | |
Name: pp_csp_curry_args/3 |
Module: translate |
Name: =/2 |
|
Name: pp_csp_value_l/5 |
Module: translate |
Name: avl_domain/2 |
Module: foo_error |
Name: check_is_non_empty_avl/1 |
Module: avl_tools |
Name: numbervars/3 |
|
Name: copy_term/2 |
|
Name: pp_single_csp_value/2 |
Module: translate |
Called:
Name: translate_event2/3 |
Module: translate |
Name: pp_csp_args2/4 |
Module: translate |
Name: pp_csp_value_in/3 |
Module: translate |
Name: pp_csp_args/5 |
Module: translate |
Name: print_csp_value/1 |
Module: translate |
Name: pp_csp_bool_expr/3 |
Module: translate |
| Module: translate | |
Name: translate_csp_value/2 |
Module: translate |
Name: pp_csp_process/3 |
Module: translate |
Name: pp_csp_value_l1/2 |
Module: translate |
| Module: translate | |
Name: pp_csp_value_l/5 |
Module: translate |
pp_csp_value_in(H,S,T) :- nonvar(H),H=in(X),!, pp_csp_value(X,S,T).
pp_csp_value_in(H,S,T) :- pp_csp_value(H,S,T).
Calls:
Name: pp_csp_value/3 |
Module: translate |
Name: ! |
|
Name: =/2 |
|
Name: nonvar/1 |
Called:
Name: pp_csp_value/3 |
Module: translate |
pp_csp_value_l(V,_Sep,['...'|S],S,N) :- (var(V) ; (N \= inf -> N<1;fail)), !.
pp_csp_value_l([],_Sep,S,S,_).
pp_csp_value_l([Expr|Rest],Sep,S,T,Nr) :-
( nonvar(Rest),Rest=[] ->
pp_csp_value(Expr,S,T)
;
(Nr=inf -> N1 = Nr ; N1 is Nr-1),
pp_csp_value(Expr,S,[Sep|S1]),pp_csp_value_l(Rest,Sep,S1,T,N1)).
Calls:
Name: RECURSIVE_CALL/5 |
Module: translate |
Name: pp_csp_value/3 |
Module: translate |
Name: is/2 |
|
Name: =/2 |
|
Name: ->/3 |
|
Name: nonvar/1 |
|
Name: ! |
|
Name: fail |
|
Name: </2 |
|
Name: \=/2 |
|
Name: var/1 |
Called:
Name: pp_csp_value/3 |
Module: translate |
Name: pp_csp_process/3 |
Module: translate |
pp_csp_value_l1([Expr|Rest],List) :-
( nonvar(Rest),Rest=[] ->
pp_csp_value(Expr,T,[]),ajoin(T,Value),List=[Value]
; pp_csp_value_l1(Rest,R),pp_csp_value(Expr,T,[]),ajoin(T,Value),List=[Value|R]
).
Calls:
Name: =/2 |
|
Name: ajoin/2 |
Module: foo_error |
Name: pp_csp_value/3 |
Module: translate |
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: nonvar/1 |
|
Name: ->/3 |
Called:
| Module: translate |
pp_cur_context_state --> {state_space:get_current_context_state(ID)}, !,pp_context_state(ID).
pp_cur_context_state --> ", unknown context state.".
pp_current_state --> {state_space:current_expression(ID,_)}, !,pp_context_state(ID).
pp_current_state --> ", unknown current context state.".
pp_description_pragma_of(enumerated_set_def(_,_)) --> !, "".
pp_description_pragma_of(Expr) -->
({get_texpr_description(Expr,Desc)}
-> insert_atom(' /*@desc '), insert_atom(Desc), insert_atom(' */')
; {true}).
Calls:
Name: =/2 |
|
Name: insert_atom/3 |
Module: translate |
Name: get_texpr_description/2 |
Module: foo_error |
Name: ->/3 |
|
Name: ! |
Called:
Name: preds_over_lines2/6 |
Module: translate |
Name: pp_witness/3 |
Module: translate |
Name: translate_operation/6 |
Module: translate |
Name: preds_over_lines1/6 |
Module: translate |
Name: indent_expr/3 |
Module: translate |
pp_disjoint(H1,H2,LimitReached) --> pp_expr(H1,_), "/\\", pp_expr(H2,_,LimitReached), " = {}".
Called:
Name: pp_all_disjoint/4 |
Module: translate |
Name: pp_all_disjoint_aux/5 |
Module: translate |
pp_empty_sequence --> {animation_minor_mode(tla)},!, "<< >>".
pp_empty_sequence --> {get_preference(translate_print_cs_style_sequences,true)},!,
( {latex_mode} -> "\\lambda" ; [955]). % 955 is lambda symbol in Unicode
pp_empty_sequence --> {atelierb_mode(prover(_))},!, "{}".
pp_empty_sequence --> "[]".
pp_end_sequence --> {animation_minor_mode(tla)},!,">>".
pp_end_sequence --> {get_preference(translate_print_cs_style_sequences,true)},!,"".
pp_end_sequence --> "]".
pp_event_b_comprehension_set(Ids,E,P1,LimitReached) -->
left_set_bracket,pp_expr_l(Ids,LimitReached), % use comma separated list; maplet is not accepted by Rodin
{add_normal_typing_predicates(Ids,P1,P)},
dot_symbol,pp_expr_m(P,11,LimitReached),
pp_such_that_bar(P),pp_expr_m(E,11,LimitReached),right_set_bracket.
Calls:
Name: right_set_bracket/2 |
Module: foo_error |
Name: pp_expr_m/5 |
Module: translate |
Name: pp_such_that_bar/3 |
Module: translate |
Name: dot_symbol/2 |
Module: foo_error |
| Module: translate | |
Name: pp_expr_l/4 |
Module: translate |
Name: left_set_bracket/2 |
Module: foo_error |
Called:
Name: pp_expr2/5 |
Module: translate |
pp_eventb_direct_definition_header(Name,Args) -->
ppterm(Name), ppcodes("("),
pp_eventb_operator_args(Args), ppcodes(")").
pp_eventb_operator_args([]) --> [].
pp_eventb_operator_args([Arg]) --> !, pp_argument(Arg).
pp_eventb_operator_args([Arg|T]) --> pp_argument(Arg), ppcodes(","),
pp_eventb_operator_args(T).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ppcodes/3 |
Module: translate |
Name: pp_argument/3 |
Module: translate |
Name: ! |
|
Name: =/2 |
pp_expr(TExpr,String) :-
translate_bexpression_to_codes(TExpr,Codes),
atom_codes_with_limit(String, Codes).
Calls:
Name: atom_codes_with_limit/2 |
Module: foo_error |
| Module: translate |
Called:
Name: explain_event_step/3 |
Module: translate |
Name: pp_expr/4 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
Name: pp_expr_m/5 |
Module: translate |
Name: pp_disjoint/5 |
Module: translate |
| Module: translate | |
Name: pp_expr_with_limit/3 |
Module: translate |
Name: show_parameter_value/4 |
Module: translate |
Name: pp_prj12/6 |
Module: translate |
Name: pp_raw_formula/3 |
Module: translate |
Name: show_assignments/4 |
Module: translate |
Name: explain_event_step4/4 |
Module: translate |
Name: pp_expr1/7 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
Name: witness_intro/5 |
Module: translate |
pp_expr(TE,P) --> %{write('OBSOLETE'),nl,nl},
pp_expr(TE,P,_LimitReached).
Called:
Name: explain_event_step/3 |
Module: translate |
Name: pp_expr/4 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
Name: pp_expr_m/5 |
Module: translate |
Name: pp_disjoint/5 |
Module: translate |
| Module: translate | |
Name: pp_expr_with_limit/3 |
Module: translate |
Name: show_parameter_value/4 |
Module: translate |
Name: pp_prj12/6 |
Module: translate |
Name: pp_raw_formula/3 |
Module: translate |
Name: show_assignments/4 |
Module: translate |
Name: explain_event_step4/4 |
Module: translate |
Name: pp_expr1/7 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
Name: witness_intro/5 |
Module: translate |
pp_expr(TExpr,Prio,_) --> {var(TExpr)},!,"_",{Prio=500}.
pp_expr(_,Prio,LimitReached) --> {LimitReached==limit_reached},!,"...",{Prio=500}.
pp_expr(b(Expr,Type,Info),Prio,LimitReached) --> !,
pp_expr0(Expr,Type,Info,Prio,LimitReached).
pp_expr([H|T],10,LimitReached) --> !, % also allow pp_expr to be used for lists of expressions
pp_expr_l([H|T],LimitReached).
pp_expr(Expr,Prio,LimitReached) -->
pp_expr1(Expr,any,[],Prio,LimitReached).
Calls:
Name: pp_expr1/7 |
Module: translate |
Name: pp_expr_l/4 |
Module: translate |
Name: ! |
|
Name: pp_expr0/7 |
Module: translate |
Name: =/2 |
|
Name: ==/2 |
|
Name: var/1 |
Called:
Name: explain_event_step/3 |
Module: translate |
Name: pp_expr/4 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
Name: pp_expr_m/5 |
Module: translate |
Name: pp_disjoint/5 |
Module: translate |
| Module: translate | |
Name: pp_expr_with_limit/3 |
Module: translate |
Name: show_parameter_value/4 |
Module: translate |
Name: pp_prj12/6 |
Module: translate |
Name: pp_raw_formula/3 |
Module: translate |
Name: show_assignments/4 |
Module: translate |
Name: explain_event_step4/4 |
Module: translate |
Name: pp_expr1/7 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
Name: witness_intro/5 |
Module: translate |
pp_expr0(identifier(ID),_Type,_Info,Prio,_LimitReached) --> {is_lambda_result_name(ID,Suffix)},!, {Prio=500},
{append("LAMBDA_RESULT___",Suffix,ASCII), atom_codes(R,ASCII)}, ppatom(R).
pp_expr0(Expr,_Type,Info,Prio,_LimitReached) -->
{eventb_translation_mode},
pp_theory_operator(Expr,Info,Prio),!.
pp_expr0(Expr,Type,Info,Prio,LimitReached) -->
{check_info(Expr,Type,Info)},
pp_rodin_label(Info),
(pp_expr1(Expr,Type,Info,Prio,LimitReached) -> {true}
; {add_error(translate,'Could not translate:',Expr,Expr),fail}
).
Calls:
Name: =/2 |
|
Name: fail |
|
Name: add_error/4 |
Module: foo_error |
Name: pp_expr1/7 |
Module: translate |
Name: ->/3 |
|
Name: pp_rodin_label/3 |
Module: translate |
Name: check_info/3 |
Module: translate |
Name: ! |
|
Name: pp_theory_operator/5 |
Module: translate |
| Module: translate | |
Name: ppatom/3 |
Module: translate |
Name: atom_codes/2 |
|
Name: append/3 |
|
Name: is_lambda_result_name/2 |
Module: translate |
pp_expr1(Expr,_,_,Prio,_) --> {var(Expr)},!,"_",{Prio=500}.
pp_expr1(event_b_comprehension_set(Ids,E,P),Type,_Info,Prio,LimitReached) -->
{\+ eventb_translation_mode, b_ast_cleanup:rewrite_event_b_comprehension_set(Ids,E,P,Type, NewExpression)},!,
pp_expr(NewExpression,Prio,LimitReached).
pp_expr1(union(b(event_b_identity,Type,_), b(closure(Rel),Type,_)),_,Info,500,LimitReached) -->
/* closure(Rel) = id \/ closure1(Rel) */
{member_in_info(was(reflexive_closure),Info)},!,
"closure(",pp_expr(Rel,_,LimitReached),")".
pp_expr1(comprehension_set([_],_),_,Info,500,_LimitReached) -->
{memberchk_in_info(freetype(P),Info),!},ppatom(P).
pp_expr1(greater_equal(A,Y),Type,Info,Prio,LimitReached) --> % x:NATURAL was rewritten to x>=0, see test 499, 498
{memberchk_in_info(was(member(A,B)),Info), get_integer(Y,_)},
pp_expr1(member(A,B),Type,Info,Prio,LimitReached).
pp_expr1(comprehension_set([TID],b(B,_,_)),Type,Info,Prio,LimitReached) -->
{memberchk_in_info(was(integer_set(S)),Info)},
{S='INTEGER' -> B=truth
; get_texpr_id(TID,ID),
B=greater_equal(TID2,Y), get_integer(Y,I),
get_texpr_id(TID2,ID),
(I=0 -> S='NATURAL' ; I=1,S='NATURAL1')}, % TO DO: check bounds
!,
pp_expr1(integer_set(S),Type,Info,Prio,LimitReached).
pp_expr1(interval(b(A,_,_),B),Type,Info,Prio,LimitReached) -->
{memberchk_in_info(was(integer_set(S)),Info)},
{B=b(max_int,integer,_)}, % TO DO ? allow value(int(Mx))
{A=min_int -> S='INT' ; A=integer(0) -> S='NAT' ; A=integer(1),S='NAT1'},
!,
pp_expr1(integer_set(S),Type,Info,Prio,LimitReached).
pp_expr1(falsity,_,Info,Prio,LimitReached) --> {memberchk_in_info(was(Pred),Info)},!,
({(unicode_mode ; latex_mode)}
-> {translate_in_mode(falsity,'falsity',Symbol)},
ppatom(Symbol),
({get_preference(pp_propositional_logic_mode,true)} -> {true}
; " ", enter_comment, " ", pp_expr2(Pred,Prio,LimitReached), " ", exit_comment)
; enter_comment, " falsity ",exit_comment, " ",
pp_expr2(Pred,Prio,LimitReached)). % Pred is not wrapped
pp_expr1(truth,_,Info,Prio,LimitReached) --> {memberchk_in_info(was(Pred),Info)},!,
({(unicode_mode ; latex_mode)}
-> {translate_in_mode(truth,'truth',Symbol)},
ppatom(Symbol),
({get_preference(pp_propositional_logic_mode,true)} -> {true}
; " ",enter_comment, " ", pp_expr2(Pred,Prio,LimitReached), " ", exit_comment)
; enter_comment, " truth ", exit_comment, " ",
pp_expr2(Pred,Prio,LimitReached)). % Pred is not wrapped
pp_expr1(event_b_identity,Type,_Info,500,_LimitReached) -->
{\+ eventb_translation_mode}, %{atelierb_mode(prover(_)},
{is_set_type(Type,couple(ElType,ElType))},
!,
"id(", {pretty_normalized_type(ElType,S)},ppatom(S), ")".
pp_expr1(typeset,SType,_Info,500,_LimitReached) --> % normally removed by ast_cleanup
{is_set_type(SType,Type)},
!,
({normalized_type_requires_outer_paren(Type)} -> "(" ; ""),
{pretty_normalized_type(Type,S)},ppatom(S),
({normalized_type_requires_outer_paren(Type)} -> ")" ; "").
pp_expr1(Expr,Type,Info,Prio,LimitReached) --> {member_in_info(sharing(ID,Count,_,_),Info),number(Count),Count>1},!,
"( ",enter_comment," CSE ",ppnumber(ID), ":#", ppnumber(Count),
({member_in_info(negated_cse,Info)} -> " (neg) " ; " "),
({member_in_info(contains_wd_condition,Info)} -> " (wd) " ; " "),
exit_comment, " ",
{delete(Info,sharing(_,_,_,_),Info2)},
pp_expr1(Expr,Type,Info2,Prio,LimitReached), ")".
pp_expr1(value(V),Type,_,Prio,LimitReached) --> !,
{(nonvar(V),V=closure(_,_,_) -> Prio=300 ; Prio=500)}, pp_value_with_type(V,Type,LimitReached).
pp_expr1(comprehension_set(Ids,P1),_,Info,500,LimitReached) --> !,
pp_comprehension_set(Ids,P1,Info,LimitReached).
pp_expr1(first_of_pair(X),_,Info,500,LimitReached) --> {was_eventb_destructor(Info,X,Op,Arg)},!,
ppatom(Op), "(",pp_expr(Arg,_,LimitReached), ")".
pp_expr1(second_of_pair(X),_,Info,500,LimitReached) --> {was_eventb_destructor(Info,X,Op,Arg)},!,
ppatom(Op), "(",pp_expr(Arg,_,LimitReached), ")".
pp_expr1(Expr,_,_Info,Prio,LimitReached) --> pp_expr2(Expr,Prio,LimitReached).
Calls:
Name: pp_expr2/5 |
Module: translate |
Name: =/2 |
|
Name: pp_expr/5 |
Module: translate |
Name: ppatom/3 |
Module: translate |
Name: ! |
|
Name: was_eventb_destructor/4 |
Module: translate |
Name: pp_comprehension_set/6 |
Module: translate |
Name: pp_value_with_type/5 |
Module: translate |
Name: nonvar/1 |
|
Name: ->/3 |
|
Name: RECURSIVE_CALL/7 |
Module: translate |
Name: delete/3 |
Module: foo_error |
Name: exit_comment/2 |
Module: foo_error |
Name: member_in_info/2 |
Module: translate |
Name: ppnumber/3 |
Module: translate |
Name: enter_comment/2 |
Module: foo_error |
Name: >/2 |
|
Name: number/1 |
|
| Module: translate | |
Name: pretty_normalized_type/2 |
Module: translate |
Name: is_set_type/2 |
Module: foo_error |
| Module: translate | |
Name: not/1 |
|
Name: get_preference/2 |
Module: preferences |
Name: translate_in_mode/3 |
Module: translate |
Name: latex_mode |
dynamic predicate |
Name: unicode_mode |
dynamic predicate |
Name: memberchk_in_info/2 |
Module: translate |
Name: get_texpr_id/2 |
Module: foo_error |
Name: get_integer/2 |
Module: foo_error |
| Module: b_ast_cleanup | |
Name: var/1 |
Called:
Name: pp_expr/5 |
Module: translate |
Name: pp_expr0/7 |
Module: translate |
pp_expr2(Expr,_,_LimitReached) --> {var(Expr)},!,"_".
pp_expr2(_,_,LimitReached) --> {LimitReached==limit_reached},!,"...".
pp_expr2(atom_string(V),500,_) --> !,pp_atom_opt_latex_mathit(V). % hardwired_atom
pp_expr2(global_set(V),500,_) --> !, pp_identifier(V).
pp_expr2(freetype_set(V),500,_) --> !,{pretty_freetype(V,P)},ppatom_opt_scramble(P).
pp_expr2(lazy_lookup_expr(I),500,_) --> !, pp_identifier(I).
pp_expr2(lazy_lookup_pred(I),500,_) --> !, pp_identifier(I).
pp_expr2(identifier(I),500,_) --> !,
{( I=op(Id) -> true; I=Id)},
( {atomic(Id)} -> ({translated_identifier(Id,TId)},
({latex_mode} -> ppatom(TId) ; pp_identifier(TId)))
;
"'",ppterm(Id), "'").
pp_expr2(integer(N),500,_) --> !, ppnumber(N).
pp_expr2(real(N),500,_) --> !, ppatom(N).
pp_expr2(integer_set(S),500,_) --> !,
{integer_set_mapping(S,T)},ppatom(T).
pp_expr2(string(S),500,_) --> !, string_start_symbol, ppstring_opt_scramble(S), string_end_symbol.
pp_expr2(set_extension(Ext),500,LimitReached) --> !, {set_brackets(L,R)},
pp_expr_wrap_l(L,Ext,R,LimitReached).
pp_expr2(sequence_extension(Ext),500,LimitReached) --> !,
pp_begin_sequence,
({get_preference(translate_print_cs_style_sequences,true)} -> pp_expr_l_sep(Ext,"",LimitReached)
; pp_expr_l_sep(Ext,",",LimitReached)),
pp_end_sequence.
pp_expr2(assign(LHS,RHS),10,LimitReached) --> !,
pp_expr_wrap_l(',',LHS,'',LimitReached), ":=", pp_expr_wrap_l(',',RHS,'',LimitReached).
pp_expr2(assign_single_id(LHS,RHS),10,LimitReached) --> !, pp_expr2(assign([LHS],[RHS]),10,LimitReached).
pp_expr2(parallel(RHS),10,LimitReached) --> !,
pp_expr_wrap_l('||',RHS,'',LimitReached).
pp_expr2(sequence(RHS),10,LimitReached) --> !,
pp_expr_wrap_l(';',RHS,'',LimitReached).
pp_expr2(event_b_comprehension_set(Ids,E,P1),500,LimitReached) --> !, % normally conversion above should trigger; this is if we call pp_expr for untyped expressions
pp_event_b_comprehension_set(Ids,E,P1,LimitReached).
pp_expr2(recursive_let(Id,S),500,LimitReached) --> !,
({eventb_translation_mode} -> "" % otherwise we get strange characters in Rodin
; enter_comment," recursive ID ", pp_expr(Id,_,LimitReached), " ", exit_comment),
pp_expr(S,_,LimitReached).
pp_expr2(image(A,B),300,LimitReached) --> !,
pp_expr_m(A,249,LimitReached),"[", % was 0; but we may have to bracket A; e.g., f <| {2} [{2}] is not ok; 250 is priority of lambda
pp_expr_m(B,0,LimitReached),"]". % was 500, now set to 0: we never need an outer pair of () !?
pp_expr2(function(A,B),300,LimitReached) --> !,
pp_expr_m(A,249,LimitReached), % was 0; but we may have to bracket A; e.g., f <| {2} (2) is not ok; 250 is priority of lambda
pp_function_left_bracket,
pp_expr_m(B,0,LimitReached), % was 500, now set to 0: we never need an outer pair of () !?
pp_function_right_bracket.
pp_expr2(definition(A,B),300,LimitReached) --> !, % definition call; usually inlined,...
ppatom(A),
pp_function_left_bracket,
pp_expr_l_sep(B,",",LimitReached),
pp_function_right_bracket.
pp_expr2(operation_call_in_expr(A,B),300,LimitReached) --> !,
pp_expr_m(A,249,LimitReached),
pp_function_left_bracket,
pp_expr_l_sep(B,",",LimitReached),
pp_function_right_bracket.
pp_expr2(enumerated_set_def(GS,ListEls),200,LimitReached) --> !, % for pretty printing enumerate set defs
{reverse(ListEls,RLE)}, /* they have been inserted in inverse order */
pp_identifier(GS), "=", pp_expr_wrap_l('{',RLE,'}',LimitReached).
pp_expr2(forall(Ids,D1,P),Prio,LimitReached) --> !,
({eventb_translation_mode} -> {Prio=60} ; {Prio=250}), % in Rodin forall/exists cannot be mixed with &, or, <=>, ...
forall_symbol,pp_expr_ids_in_mode(Ids,LimitReached),
{add_normal_typing_predicates(Ids,D1,D)},
dot_symbol,pp_expr_m(b(implication(D,P),pred,[]),221,LimitReached).
pp_expr2(exists(Ids,P1),Prio,LimitReached) --> !,
({eventb_translation_mode} -> {Prio=60} ; {Prio=250}), % exists has Prio 250, but dot has 220
exists_symbol,pp_expr_ids_in_mode(Ids,LimitReached),
{add_normal_typing_predicates(Ids,P1,P)},
dot_symbol,
({eventb_translation_mode} -> {MinPrio=29} ; {MinPrio=500}),
% used to be 221, but #x.x>7 or #x.not(...) are not parsed by Atelier-B or ProB, x.x and x.not are parsed as composed identifiers
% In Event-B โyยทy>x โง (y=x+1 โจ y=x+2) is valid and requires no outer parenthesis
pp_expr_m(P,MinPrio,LimitReached).
pp_expr2(record_field(R,I),250,LimitReached) --> !,
pp_expr_m(R,251,LimitReached),"'",pp_identifier(I).
pp_expr2(rec(Fields),500,LimitReached) --> !,
{function_like_in_mode(rec,Symbol)},
ppatom(Symbol), "(",pp_expr_fields(Fields,LimitReached),")".
pp_expr2(struct(Rec),500,LimitReached) -->
{get_texpr_expr(Rec,rec(Fields)),Val=false ; get_texpr_expr(Rec,value(rec(Fields)))},!,
{function_like_in_mode(struct,Symbol)},
ppatom(Symbol), "(",
({Val==false} -> pp_expr_fields(Fields,LimitReached)
; pp_value_l(Fields,',',LimitReached)),
")".
pp_expr2(freetype_case(_FT,L,Expr),Prio,LimitReached) --> !,
%{Prio=500}, pp_freetype_term('__is_ft_case',FT,L,Expr,LimitReached).
% we now pretty-print it as Expr : ran(L) assuming there is a constant L generated for every case
{FTCons = b(identifier(L),any,[]), RanFTCons = b(range(FTCons),any,[])},
pp_expr(b(member(Expr,RanFTCons),pred,[]),Prio,LimitReached).
pp_expr2(freetype_constructor(_FT,Case,Expr),Prio,LimitReached) --> !,
{FTCons = b(identifier(Case),any,[])},
pp_expr(b(function(FTCons,Expr),any,[]),Prio,LimitReached).
pp_expr2(freetype_destructor(_FT,Case,Expr),Prio,LimitReached) --> !,
% pretty print it as: Case~(Expr)
{FTCons = b(identifier(Case),any,[]), Destr = b(reverse(FTCons),any,[])},
pp_expr(b(function(Destr,Expr),any,[]),Prio,LimitReached).
pp_expr2(let_predicate(Ids,Exprs,P),1,LimitReached) --> !,
pp_expr_let_exists(Ids,Exprs,P,LimitReached). % instead of pp_expr_let
pp_expr2(let_expression(Ids,Exprs,P),1,LimitReached) --> !,
pp_expr_let(Ids,Exprs,P,LimitReached).
pp_expr2(let_expression_global(Ids,Exprs,P),1,LimitReached) --> !, " /", "* global *", "/ ",
pp_expr_let(Ids,Exprs,P,LimitReached).
pp_expr2(lazy_let_pred(Id,Expr,P),Pr,LimitReached) --> !, pp_expr2(lazy_let_expr(Id,Expr,P),Pr,LimitReached).
pp_expr2(lazy_let_subst(Id,Expr,P),Pr,LimitReached) --> !, pp_expr2(lazy_let_expr(Id,Expr,P),Pr,LimitReached).
pp_expr2(lazy_let_expr(Id,Expr,P),1,LimitReached) --> !,
pp_expr_let([Id],[Expr],P,LimitReached).
pp_expr2(norm_conjunct(Cond,[]),1,LimitReached) --> !, % norm_conjunct: flattened version generated by b_interpreter_check,...
"( ",pp_expr(Cond,_,LimitReached), ")".
pp_expr2(norm_conjunct(Cond,[H|T]),1,LimitReached) --> !,
"( ",pp_expr(Cond,_,LimitReached), ") ", and_symbol, " (", pp_expr2(norm_conjunct(H,T),_,LimitReached), ")".
pp_expr2(assertion_expression(Cond,Msg,Expr),1,LimitReached) --> !,
" ASSERT_EXPR (",
pp_expr_m(b(convert_bool(Cond),pred,[]),30,LimitReached), ",",
pp_expr_m(string(Msg),30,LimitReached), ",",
pp_expr_m(Expr,30,LimitReached),
" )".
pp_expr2(partition(S,Elems),500,LimitReached) -->
{eventb_translation_mode ;
\+ atelierb_mode(_), length(Elems,Len), Len>50 % we need to print a quadratic number of disjoints
},!,
"partition(",pp_expr(S,_,LimitReached),
({Elems=[]} -> ")" ; pp_expr_wrap_l(',',Elems,')',LimitReached)).
pp_expr2(partition(S,Elems),500,LimitReached) --> !,
"(",pp_expr(S,_,LimitReached), " = ",
({Elems=[]} -> "{})"
; pp_expr_l_sep(Elems,"\\/",LimitReached), pp_all_disjoint(Elems,LimitReached),")").
pp_expr2(finite(S),Prio,LimitReached) --> {\+ eventb_translation_mode}, %{atelierb_mode(_)},
!,
pp_expr2(member(S,b(fin_subset(S),set(any),[])),Prio,LimitReached).
pp_expr2(if_then_else(If,Then,Else),1,LimitReached) --> {animation_minor_mode(z)},!,
"\\IF ",pp_expr_m(If,30,LimitReached),
" \\THEN ",pp_expr_m(Then,30,LimitReached),
" \\ELSE ",pp_expr_m(Else,30,LimitReached).
pp_expr2(if_then_else(If,Then,Else),Prio,LimitReached) --> {atelierb_mode(_)},!,
% print IF-THEN-ELSE using a translation that Atelier-B can understand:
{rewrite_if_then_else_expr_to_b(if_then_else(If,Then,Else), NExpr),
get_texpr_type(Then,Type),
NAst = b(NExpr,Type,[])},
% construct {d,x| If => x=Then & not(if) => x=Else}(TRUE)
pp_expr(NAst,Prio,LimitReached).
pp_expr2(if_then_else(If,Then,Else),1,LimitReached) --> !,
pp_atom_opt_mathit('IF'),pp_space, % "IF ",
pp_expr_m(If,30,LimitReached),
pp_space, pp_atom_opt_mathit('THEN'),pp_space, " THEN ",
pp_expr_m(Then,30,LimitReached),
pp_space, pp_atom_opt_mathit('ELSE'),pp_space, " ELSE ",
pp_expr_m(Else,30,LimitReached),
pp_space, pp_atom_opt_mathit('END'). " END"
pp_expr2(kodkod(Id,Identifiers),300,LimitReached) --> !,
"KODKOD_CALL(",ppnumber(Id),": ",pp_expr_ids(Identifiers,LimitReached),")".
pp_expr2(Expr,500,_) -->
{constants_in_mode(Expr,Symbol)},!,ppatom(Symbol).
pp_expr2(equal(A,B),Prio,LimitReached) -->
{get_preference(pp_propositional_logic_mode,true), % a mode for printing propositional logic formuli
is_boolean_value(B,BV),
get_texpr_id(A,_)},!,
({BV=pred_true} -> pp_expr(A,Prio,LimitReached)
; pp_expr2(negation(b(equal(A,b(boolean_true,boolean,[])),pred,[])),Prio,LimitReached)).
pp_expr2(Expr,Prio,LimitReached) -->
{functor(Expr,F,1),
unary_prefix(F,Symbol,Prio),!,
arg(1,Expr,Arg),APrio is Prio+1},
ppatom(Symbol), " ",
pp_expr_m(Arg,APrio,LimitReached).
pp_expr2(Expr,500,LimitReached) -->
{functor(Expr,F,1),
unary_prefix_parentheses(F,Symbol),!,
arg(1,Expr,Arg)},
pp_atom_opt_latex(Symbol), "(", pp_expr(Arg,_,LimitReached), ")".
pp_expr2(Expr,Prio,LimitReached) -->
{functor(Expr,F,1),
unary_postfix_in_mode(F,Symbol,Prio),!,
arg(1,Expr,Arg),APrio is Prio+1},
pp_expr_m(Arg,APrio,LimitReached),ppatom(Symbol).
pp_expr2(power_of(Left,Right),Prio,LimitReached) --> {latex_mode},!, % special case, as we need to put {} around RHS
{Prio=200, LPrio is Prio+1, RPrio = Prio},
pp_expr_m(Left,LPrio,LimitReached),
"^{",
pp_expr_m(Right,RPrio,LimitReached),
"}".
pp_expr2(power_of_real(Left,Right),Prio,LimitReached) --> !,
({get_texpr_expr(Right,convert_real(RI))}
-> pp_expr2(power_of(Left,RI),Prio,LimitReached) % the Atelier-B power_of expects integer exponent
; pp_external_call('RPOW',[Left,Right],expression,Prio,LimitReached)
).
pp_expr2(Expr,OPrio,LimitReached) -->
{functor(Expr,F,2),
binary_infix_in_mode(F,Symbol,Prio,Ass),!,
arg(1,Expr,Left),
arg(2,Expr,Right),
( Ass = left, binary_infix_symbol(Left,Symbol) -> LPrio is Prio-1, RPrio is Prio+1
; Ass = right, binary_infix_symbol(Right,Symbol) -> LPrio is Prio+1, RPrio is Prio-1
; LPrio is Prio+1, RPrio is Prio+1)},
% Note: Prio+1 is actually not necessary, Prio would be sufficient, as pp_expr_m uses a strict comparison <
({always_surround_by_parentheses(F)} -> "(",{OPrio=1000} ; {OPrio=Prio}),
pp_expr_m(Left,LPrio,LimitReached),
" ", ppatom(Symbol), " ",
pp_expr_m(Right,RPrio,LimitReached),
({always_surround_by_parentheses(F)} -> ")" ; []).
pp_expr2(first_of_pair(X),500,LimitReached) --> {get_texpr_type(X,couple(From,To))},!,
"prj1(", % TO DO: Latex version
({\+ atelierb_mode(_)} % eventb_translation_mode
-> "" % no need to print types in Event-B or with new parser;
% TODO: also with new parser no longer required; only print in Atelier-B mode
; {pretty_normalized_type(From,FromT),
pretty_normalized_type(To,ToT)},
pp_atom_opt_latex(FromT), ",", pp_atom_opt_latex(ToT),
")("
),
pp_expr(X,_,LimitReached),")".
pp_expr2(second_of_pair(X),500,LimitReached) --> {get_texpr_type(X,couple(From,To))},!,
"prj2(", % TO DO: Latex version
({\+ atelierb_mode(_)} -> "" % no need to print types in Event-B or with new parser
; {pretty_normalized_type(From,FromT),
pretty_normalized_type(To,ToT)},
pp_atom_opt_latex(FromT), ",", pp_atom_opt_latex(ToT),
")("
),
pp_expr(X,_,LimitReached),")".
pp_expr2(Call,Prio,LimitReached) --> {external_call(Call,Kind,Symbol,Args)},!,
pp_external_call(Symbol,Args,Kind,Prio,LimitReached).
pp_expr2(card(A),500,LimitReached) --> {latex_mode, get_preference(latex_pp_greek_ids,true)},!,
"|",pp_expr_m(A,0,LimitReached),"|".
pp_expr2(Expr,500,LimitReached) -->
{functor(Expr,F,_),
function_like_in_mode(F,Symbol),!,
Expr =.. [F|Args]},
ppatom(Symbol),
({Args=[]}
-> "" % some operators like pred and succ do not expect arguments
; pp_expr_wrap_l('(',Args,')',LimitReached)).
pp_expr2(Expr,250,LimitReached) -->
{functor(Expr,F,3),
quantified_in_mode(F,Symbol),
Expr =.. [F,Ids,P1,E],
!,
add_normal_typing_predicates(Ids,P1,P)},
ppatom(Symbol),pp_expr_ids(Ids,LimitReached),".(",
pp_expr_m(P,11,LimitReached),pp_such_that_bar(E),
pp_expr_m(E,11,LimitReached),")".
pp_expr2(Expr,Prio,LimitReached) -->
{functor(Expr,F,N),
(debug_mode(on)
-> format('**** Unknown functor ~w/~w in pp_expr2~n expression: ~w~n',[F,N,Expr])
; format('**** Unknown functor ~w/~w in pp_expr2~n',[F,N])
),
%add_internal_error('Unknown Expression: ',pp_expr2(Expr,Prio)),
Prio=20},
ppterm_with_limit_reached(Expr,LimitReached).
Calls:
| Module: translate | |
Name: =/2 |
|
Name: format/2 |
|
Name: debug_mode/1 |
Module: foo_error |
Name: ->/3 |
|
Name: functor/3 |
|
Name: pp_expr_m/5 |
Module: translate |
Name: pp_such_that_bar/3 |
Module: translate |
Name: pp_expr_ids/4 |
Module: translate |
Name: ppatom/3 |
Module: translate |
| Module: translate | |
Name: ! |
|
Name: =../2 |
|
Name: quantified_in_mode/2 |
Module: translate |
Name: pp_expr_wrap_l/6 |
Module: translate |
Name: function_like_in_mode/2 |
Module: translate |
Name: get_preference/2 |
Module: preferences |
Name: latex_mode |
dynamic predicate |
Name: pp_external_call/7 |
Module: translate |
Name: external_call/4 |
Module: translate |
Name: pp_expr/5 |
Module: translate |
Name: pp_atom_opt_latex/3 |
Module: translate |
Name: pretty_normalized_type/2 |
Module: translate |
Name: atelierb_mode/1 |
dynamic predicate |
Name: not/1 |
|
Name: get_texpr_type/2 |
Module: foo_error |
| Module: translate | |
Name: is/2 |
|
Name: binary_infix_symbol/2 |
Module: translate |
Name: arg/3 |
|
Name: binary_infix_in_mode/4 |
Module: translate |
Name: RECURSIVE_CALL/5 |
Module: translate |
Name: get_texpr_expr/2 |
Module: foo_error |
Name: unary_postfix_in_mode/3 |
Module: translate |
| Module: translate | |
Name: unary_prefix/3 |
Module: translate |
Name: get_texpr_id/2 |
Module: foo_error |
Name: is_boolean_value/2 |
Module: translate |
Name: constants_in_mode/2 |
Module: translate |
Name: ppnumber/3 |
Module: translate |
Name: pp_atom_opt_mathit/3 |
Module: translate |
Name: pp_space/2 |
Module: foo_error |
Name: rewrite_if_then_else_expr_to_b/2 |
Module: foo_error |
Name: animation_minor_mode/1 |
Module: specfile |
| Module: translate | |
Name: pp_all_disjoint/4 |
Module: translate |
Name: pp_expr_l_sep/5 |
Module: translate |
Name: >/2 |
|
Name: length/2 |
|
Name: and_symbol/2 |
Module: foo_error |
Name: pp_expr_let/6 |
Module: translate |
Name: pp_expr_let_exists/6 |
Module: translate |
Name: pp_value_l/5 |
Module: translate |
Name: pp_expr_fields/4 |
Module: translate |
Name: ==/2 |
|
Name: pp_identifier/3 |
Module: translate |
Name: dot_symbol/2 |
Module: foo_error |
Name: pp_expr_ids_in_mode/4 |
Module: translate |
Name: exists_symbol/2 |
Module: foo_error |
Name: forall_symbol/2 |
Module: foo_error |
Name: reverse/2 |
Module: foo_error |
Name: pp_function_right_bracket/2 |
Module: foo_error |
Name: pp_function_left_bracket/2 |
Module: foo_error |
Name: exit_comment/2 |
Module: foo_error |
Name: enter_comment/2 |
Module: foo_error |
| Module: translate | |
Name: pp_end_sequence/2 |
Module: foo_error |
Name: pp_begin_sequence/2 |
Module: foo_error |
Name: set_brackets/2 |
Module: translate |
Name: string_end_symbol/2 |
Module: foo_error |
Name: ppstring_opt_scramble/3 |
Module: translate |
Name: string_start_symbol/2 |
Module: foo_error |
Name: integer_set_mapping/2 |
Module: translate |
Name: ppterm/3 |
Module: translate |
Name: translated_identifier/2 |
Module: translate |
Name: atomic/1 |
|
Name: true |
|
Name: ppatom_opt_scramble/3 |
Module: translate |
Name: pretty_freetype/2 |
Module: translate |
| Module: translate | |
Name: var/1 |
Called:
Name: pp_expr1/7 |
Module: translate |
Name: pp_external_call/7 |
Module: translate |
pp_expr_fields([field(Name,Expr)],LimitReached) --> !,
pp_identifier(Name),":",pp_expr_m(Expr,120,LimitReached).
pp_expr_fields(Fields,LimitReached) -->
pp_expr_fields2(Fields,LimitReached).
Calls:
Name: pp_expr_fields2/4 |
Module: translate |
Name: pp_expr_m/5 |
Module: translate |
Name: =/2 |
|
Name: pp_identifier/3 |
Module: translate |
Name: ! |
Called:
Name: pp_expr2/5 |
Module: translate |
pp_expr_fields2([],_) --> !.
pp_expr_fields2([field(Name,Expr)|Rest],LimitReached) -->
pp_identifier(Name),":",
pp_expr_m(Expr,116,LimitReached),
pp_expr_fields3(Rest,LimitReached).
Calls:
Name: pp_expr_fields3/4 |
Module: translate |
Name: pp_expr_m/5 |
Module: translate |
Name: =/2 |
|
Name: pp_identifier/3 |
Module: translate |
Name: ! |
Called:
Name: pp_expr_fields3/4 |
Module: translate |
Name: pp_expr_fields/4 |
Module: translate |
pp_expr_fields3([],_) --> !.
pp_expr_fields3(Rest,LimitReached) -->
",",pp_expr_fields2(Rest,LimitReached).
Calls:
Name: pp_expr_fields2/4 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: pp_expr_fields2/4 |
Module: translate |
pp_expr_ids([],_) --> !.
pp_expr_ids(Ids,LimitReached) -->
% ( {Ids=[Id]} -> pp_expr_m(Id,221)
% ;
"(",pp_expr_l(Ids,LimitReached),")".
Calls:
Name: =/2 |
|
Name: pp_expr_l/4 |
Module: translate |
Name: ! |
Called:
Name: pp_expr2/5 |
Module: translate |
pp_expr_ids_in_mode([],_) --> !.
pp_expr_ids_in_mode(Ids,LimitReached) --> {eventb_translation_mode ; Ids=[_]},!,
pp_expr_l(Ids,LimitReached). % no (.) allowed in Event-B; not necessary in B if only one id
pp_expr_ids_in_mode(Ids,LimitReached) --> "(",pp_expr_l(Ids,LimitReached),")".
Calls:
Name: =/2 |
|
Name: pp_expr_l/4 |
Module: translate |
Name: ! |
|
| Module: translate |
Called:
Name: pp_expr_let_exists/6 |
Module: translate |
Name: nbp2/4 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
| Module: translate |
pp_expr_ids_in_mode_indent(Ids,(I,S),(I,T)) :- pp_expr_ids_in_mode(Ids,_,S,T).
Calls:
Name: pp_expr_ids_in_mode/4 |
Module: translate |
Called:
Name: pp_pred_nested/5 |
Module: translate |
pp_expr_ids_no_parentheses(Ids,LimitReached) --> pp_expr_l(Ids,LimitReached).
Calls:
Name: pp_expr_l/4 |
Module: translate |
Called:
Name: pp_expr_let/6 |
Module: translate |
pp_expr_indent(b(comprehension_set(Ids,Body),_,_)) -->
{\+ eventb_translation_mode, % TODO: also print in Event-B mode:
detect_lambda_comprehension(Ids,Body, FrontIDs,LambdaBody,ToExpr)},
{add_normal_typing_predicates(FrontIDs,LambdaBody,TLambdaBody)},
!,
insertstr('%('), % to do: use lambda_symbol and improve layout below
pp_expr_indent_l(FrontIDs),
insertstr(') . ('),
pred_over_lines(2,'@body',TLambdaBody),
indent(' | '), increase_indentation_level(2),
indent(''), pp_expr_indent(ToExpr), decrease_indentation_level(2),
indent(')').
pp_expr_indent(b(comprehension_set(Ids,Body),_,Info),(I,S),(I,T)) :-
pp_comprehension_set5(Ids,Body,Info,_,special(_Kind),S,T),
% throw away indent and check if a special pp rule is applicable
!.
pp_expr_indent(b(comprehension_set(Ids,Body),_,_)) -->
!,
insertstr('{'), pp_expr_indent_l(Ids),
insertstr(' | '),
pred_over_lines(2,'@body',Body),
indent('}').
pp_expr_indent(b(convert_bool(Body),_,_)) -->
!,
insertstr('bool('),
pred_over_lines(2,'@bool',Body),
indent(')').
pp_expr_indent(b(if_then_else(Test,Then,Else),_,_)) -->
!,
insertstr('IF'),
pred_over_lines(2,'@test',Test),
indent('THEN'),increase_indentation_level(2),
indent(''),pp_expr_indent(Then),decrease_indentation_level(2),
indent('ELSE'),increase_indentation_level(2),
indent(''),pp_expr_indent(Else),decrease_indentation_level(2),
indent('END').
pp_expr_indent(b(let_expression(Ids,Exprs,Body),_,_)) -->
!,
pp_let_expr_nested(Ids,Exprs,Body).
pp_expr_indent(Expr,(I,S),(I,T)) :-
%get_texpr_expr(Expr,F), functor(F,FF,NN), format(user_output,'Cannot indent: ~w/~w~n',[FF,NN]),
pp_expr(Expr,_,_LimitReached,S,T). % throw away indent
Calls:
Name: pp_expr/5 |
Module: translate |
Name: pp_let_expr_nested/5 |
Module: translate |
Name: ! |
|
Name: indent/3 |
Module: translate |
| Module: translate | |
Name: RECURSIVE_CALL/3 |
Module: translate |
| Module: translate | |
Name: pred_over_lines/5 |
Module: translate |
Name: insertstr/3 |
Module: translate |
Name: pp_expr_indent_l/3 |
Module: translate |
Name: pp_comprehension_set5/7 |
Module: translate |
| Module: translate | |
| Module: translate | |
| Module: translate | |
Name: not/1 |
Called:
Name: pp_witness/3 |
Module: translate |
Name: pp_expr_indent_l/3 |
Module: translate |
Name: translate_ifs/3 |
Module: translate |
Name: insert_variant3/3 |
Module: translate |
Name: pp_let_expr_nested/5 |
Module: translate |
Name: pp_pred_nested/5 |
Module: translate |
Name: translate_operation/6 |
Module: translate |
Name: translate_used2/3 |
Module: translate |
Name: indent_expr/3 |
Module: translate |
Name: pp_ids_indent/3 |
Module: translate |
Name: translate_subst2/3 |
Module: translate |
pp_expr_indent_l([E]) --> !, pp_expr_indent(E).
pp_expr_indent_l(Exprs,(I,S),(I,T)) :-
pp_expr_l(Exprs,_LR,S,T). % throw away indent
Calls:
Name: pp_expr_l/4 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
Name: ! |
Called:
Name: pp_expr_indent/3 |
Module: translate |
Name: translate_subst2/3 |
Module: translate |
Name: translate_op_results/3 |
Module: translate |
Name: translate_cases/3 |
Module: translate |
Name: pp_let_nested/5 |
Module: translate |
Name: pp_let_expr_nested/5 |
Module: translate |
Name: translate_op_params/3 |
Module: translate |
pp_expr_l(List,LimitReached) --> pp_expr_l_sep(List,",",LimitReached).
Calls:
Name: pp_expr_l_sep/5 |
Module: translate |
Called:
Name: pp_expr/5 |
Module: translate |
Name: pp_expr_ids_in_mode/4 |
Module: translate |
Name: pp_expr_indent_l/3 |
Module: translate |
| Module: translate | |
| Module: translate | |
Name: pp_expr_ids/4 |
Module: translate |
Name: pp_lambda_identifiers/4 |
Module: translate |
Name: pp_expr_wrap_l/6 |
Module: translate |
Name: explain_event_step/3 |
Module: translate |
pp_expr_l2([],_Sep,_) --> !.
pp_expr_l2([Expr|Rest],Sep,LimitReached) -->
{get_sep_prio(Sep,Prio)},
pp_expr_m(Expr,Prio,LimitReached),
pp_expr_l3(Rest,Sep,LimitReached).
Calls:
Name: pp_expr_l3/5 |
Module: translate |
Name: pp_expr_m/5 |
Module: translate |
Name: get_sep_prio/2 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: pp_expr_l_sep/5 |
Module: translate |
Name: pp_expr_l3/5 |
Module: translate |
pp_expr_l3([],_Sep,_) --> !.
pp_expr_l3(Rest,Sep,LimitReached) -->
Sep,pp_expr_l2(Rest,Sep,LimitReached).
Calls:
Name: pp_expr_l2/5 |
Module: translate |
Name: phrase/3 |
|
Name: =/2 |
|
Name: ! |
Called:
Name: pp_expr_l2/5 |
Module: translate |
pp_expr_l_pair_in_mode(List,LimitReached) --> {eventb_translation_mode},!,
{maplet_symbol(MapletStr,[])},
pp_expr_l_sep(List,MapletStr,LimitReached).
pp_expr_l_pair_in_mode(List,LimitReached) --> pp_expr_l_sep(List,",",LimitReached).
Calls:
Name: pp_expr_l_sep/5 |
Module: translate |
Name: maplet_symbol/2 |
Module: foo_error |
Name: ! |
|
| Module: translate |
Called:
Name: pp_lambda_identifiers/4 |
Module: translate |
Name: pp_closure_value/6 |
Module: translate |
Name: pp_comprehension_set5/7 |
Module: translate |
Name: pp_expr_let_exists/6 |
Module: translate |
pp_expr_l_sep([Expr],_,LimitReached) --> !,
pp_expr_m(Expr,0,LimitReached).
pp_expr_l_sep(List,Sep,LimitReached) --> pp_expr_l2(List,Sep,LimitReached).
Calls:
Name: pp_expr_l2/5 |
Module: translate |
Name: pp_expr_m/5 |
Module: translate |
Name: ! |
Called:
Name: pp_expr_l/4 |
Module: translate |
Name: pp_theory_operator/5 |
Module: translate |
Name: pp_expr_l_pair_in_mode/4 |
Module: translate |
Name: pp_expr_let/6 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
pp_expr_let(_Ids,Exprs,P,LimitReached) -->
{eventb_translation_mode,
P=b(_,_,I), member(was(extended_expr(Op)),I)},!, % let was created by direct_definition for a theory operator call
ppatom(Op),
pp_function_left_bracket,
pp_expr_l_sep(Exprs,",",LimitReached),
%pp_expr_let_pred_exprs(Ids,Exprs,LimitReached) % write entire predicate with parameter names
pp_function_right_bracket.
pp_expr_let(Ids,Exprs,P,LimitReached) -->
"LET ", pp_expr_ids_no_parentheses(Ids,LimitReached),
" BE ", pp_expr_let_pred_exprs(Ids,Exprs,LimitReached),
" IN ",pp_expr_m(P,5,LimitReached),
" END".
Calls:
Name: =/2 |
|
Name: pp_expr_m/5 |
Module: translate |
Name: pp_expr_let_pred_exprs/5 |
Module: translate |
| Module: translate | |
Name: pp_function_right_bracket/2 |
Module: foo_error |
Name: pp_expr_l_sep/5 |
Module: translate |
Name: pp_function_left_bracket/2 |
Module: foo_error |
Name: ppatom/3 |
Module: translate |
Name: ! |
|
Name: member/2 |
|
| Module: translate |
Called:
Name: pp_expr2/5 |
Module: translate |
pp_expr_let_exists(Ids,Exprs,P,LimitReached) -->
exists_symbol,
({eventb_translation_mode} -> % otherwise we get strange characters in Rodin, no (.) allowed in Rodin
pp_expr_ids_in_mode(Ids,LimitReached),
".("
; " /* LET */ (",
pp_expr_l_pair_in_mode(Ids,LimitReached),
").("
),
pp_expr_let_pred_exprs(Ids,Exprs,LimitReached),
({is_truth(P)} ->
; " ",and_symbol," ", pp_expr_m(P,40,LimitReached)),
")".
Calls:
Name: =/2 |
|
Name: pp_expr_m/5 |
Module: translate |
Name: and_symbol/2 |
Module: foo_error |
Name: is_truth/1 |
Module: foo_error |
Name: ->/3 |
|
Name: pp_expr_let_pred_exprs/5 |
Module: translate |
Name: pp_expr_l_pair_in_mode/4 |
Module: translate |
Name: pp_expr_ids_in_mode/4 |
Module: translate |
| Module: translate | |
Name: exists_symbol/2 |
Module: foo_error |
Called:
Name: pp_expr2/5 |
Module: translate |
pp_expr_let_id(ID,LimitReached) --> {atomic(ID),!, write(unwrapped_let_id(ID)),nl},
pp_expr_m(identifier(ID),500,LimitReached).
pp_expr_let_id(ID,LimitReached) --> pp_expr_m(ID,499,LimitReached).
Calls:
Name: pp_expr_m/5 |
Module: translate |
Name: nl |
|
Name: write/1 |
|
Name: ! |
|
Name: atomic/1 |
Called:
Name: pp_expr_let_pred_exprs/5 |
Module: translate |
pp_expr_let_pred_exprs([],[],_) --> !.
pp_expr_let_pred_exprs([Id|Irest],[Expr|Erest],LimitReached) -->
" ",pp_expr_let_id(Id,LimitReached),
"=",pp_expr_m(Expr,400,LimitReached),
( {Irest=[]} -> [] ; " ", and_symbol),
pp_expr_let_pred_exprs(Irest,Erest,LimitReached).
Calls:
Name: RECURSIVE_CALL/5 |
Module: translate |
Name: and_symbol/2 |
Module: foo_error |
Name: =/2 |
|
Name: ->/3 |
|
Name: pp_expr_m/5 |
Module: translate |
Name: pp_expr_let_id/4 |
Module: translate |
Name: ! |
Called:
Name: pp_expr_let/6 |
Module: translate |
Name: nbp2/4 |
Module: translate |
Name: pp_expr_let_exists/6 |
Module: translate |
pp_expr_m(TExpr,MinPrio,LimitReached,S,Srest) :-
add_outer_paren(Prio,MinPrio,S,Srest,X,Xrest), % use co-routine to instantiate S as soon as possible
pp_expr(TExpr,Prio,LimitReached,X,Xrest).
Calls:
Name: pp_expr/5 |
Module: translate |
Name: add_outer_paren/6 |
Module: translate |
Called:
Name: pp_expr2/5 |
Module: translate |
Name: pp_expr_fields2/4 |
Module: translate |
Name: pp_expr_let/6 |
Module: translate |
Name: pp_comprehension_set5/7 |
Module: translate |
Name: pp_external_call/7 |
Module: translate |
Name: pp_closure_value/6 |
Module: translate |
Name: pp_expr_let_pred_exprs/5 |
Module: translate |
Name: pp_expr_fields/4 |
Module: translate |
Name: pp_expr_l2/5 |
Module: translate |
Name: pp_expr_let_exists/6 |
Module: translate |
Name: pp_expr_let_id/4 |
Module: translate |
Name: pp_expr_m_indent/4 |
Module: translate |
Name: pp_expr_l_sep/5 |
Module: translate |
| Module: translate |
pp_expr_m_indent(Expr,MinPrio,(I,S),(I,T)) :-
pp_expr_m(Expr,MinPrio,_LimitReached,S,T).
Calls:
Name: pp_expr_m/5 |
Module: translate |
Called:
Name: pp_pred_nested/5 |
Module: translate |
pp_expr_with_limit(TExpr,Limit,String) :-
set_up_limit_reached(Codes,Limit,LimitReached),
reset_pp,
pp_expr(TExpr,_,LimitReached,Codes,[]),
atom_codes_with_limit(String, Limit, Codes).
Calls:
Name: atom_codes_with_limit/3 |
Module: foo_error |
Name: pp_expr/5 |
Module: translate |
Name: reset_pp/0 |
Module: translate |
Name: set_up_limit_reached/3 |
Module: translate |
pp_expr_wrap_l(Pre,Expr,Post,LimitReached) -->
ppatom(Pre),pp_expr_l(Expr,LimitReached),ppatom(Post).
Calls:
Name: ppatom/3 |
Module: translate |
Name: pp_expr_l/4 |
Module: translate |
Called:
Name: pp_external_call/7 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
pp_external_call('MEMOIZE_STORED_FUNCTION',[TID],_,500,LimitReached) -->
{get_integer(TID,ID),memoization:get_registered_function_name(ID,Name)},!,
pp_expr_m(atom_string(Name),20,LimitReached),
" /*@memo ", pp_expr_m(TID,20,LimitReached), "*/".
pp_external_call('STRING_LENGTH',[Arg],_,Prio,LimitReached) -->
{get_preference(allow_sequence_operators_on_strings,true)},!,
pp_expr2(size(Arg),Prio,LimitReached).
pp_external_call('STRING_APPEND',[Arg1,Arg2],_,Prio,LimitReached) -->
{get_preference(allow_sequence_operators_on_strings,true)},!,
pp_expr2(concat(Arg1,Arg2),Prio,LimitReached).
pp_external_call('STRING_CONC',[Arg1],_,Prio,LimitReached) -->
{get_preference(allow_sequence_operators_on_strings,true)},!,
pp_expr2(general_concat(Arg1),Prio,LimitReached).
pp_external_call(PRED,Args,pred,Prio,LimitReached) -->
{get_preference(translate_ids_to_parseable_format,true),
synonym_for_external_predicate(PRED,FUNC)},
!, % print external predicate as function, as parser can only parse the latter without access to DEFINITIONS
pp_expr2(equal(b(external_function_call(FUNC,Args),boolean,[]),
b(boolean_true,boolean,[])),Prio,LimitReached).
pp_external_call(Symbol,Args,_,Prio,LimitReached) -->
({invisible_external_pred(Symbol)}
-> pp_expr2(truth,Prio,LimitReached),
" /* ",pp_expr_m(atom_string(Symbol),20,LimitReached),pp_expr_wrap_l('(',Args,') */',LimitReached)
; {Prio=500},pp_expr_m(atom_string(Symbol),20,LimitReached),
pp_expr_wrap_l('(',Args,')',LimitReached) % pp_expr_wrap_l('/*EXT:*/(',Args,')')
).
Calls:
Name: pp_expr_wrap_l/6 |
Module: translate |
Name: pp_expr_m/5 |
Module: translate |
Name: =/2 |
|
Name: pp_expr2/5 |
Module: translate |
| Module: translate | |
Name: ->/3 |
|
Name: ! |
|
| Module: external_function_declarations | |
Name: get_preference/2 |
Module: preferences |
| Module: memoization | |
Name: get_integer/2 |
Module: foo_error |
Called:
Name: pp_expr2/5 |
Module: translate |
pp_frozen_info(_X) --> {get_preference(translate_print_frozen_infos,false)},!,[].
pp_frozen_info(X) -->
":(",{frozen(X,Goal)},
write_goal_with_max_depth(Goal),
")".
Calls:
Name: =/2 |
|
| Module: translate | |
Name: frozen/2 |
|
Name: ! |
|
Name: get_preference/2 |
Module: preferences |
Called:
Name: pp_clpfd_variable/3 |
Module: translate |
pp_function_left_bracket --> {animation_minor_mode(tla)},!, "[".
pp_function_left_bracket --> "(".
pp_function_right_bracket --> {animation_minor_mode(tla)},!, "]".
pp_function_right_bracket --> ")".
pp_functor(V) --> {var(V)},!, ppterm(V).
pp_functor(T) --> {functor(T,F,N)}, ppterm(F),"/",ppterm(N).
Called:
Name: pp_b_context/3 |
Module: translate |
pp_identifier(Atom) --> {id_requires_escaping(Atom), \+ eventb_translation_mode, \+ latex_mode}, !,
({atelierb_mode(_)}
-> pp_identifier_for_atelierb(Atom)
; pp_backquoted_identifier(Atom)
).
pp_identifier(Atom) --> ppatom_opt_scramble(Atom).
Calls:
Name: ppatom_opt_scramble/3 |
Module: translate |
| Module: translate | |
| Module: translate | |
Name: atelierb_mode/1 |
dynamic predicate |
Name: ->/3 |
|
Name: ! |
|
Name: latex_mode |
dynamic predicate |
Name: not/1 |
|
| Module: translate | |
Name: id_requires_escaping/1 |
Module: translate |
Called:
Name: convert_id/2 |
Module: translate |
Name: pp_expr_fields/4 |
Module: translate |
Name: pp_expr_fields2/4 |
Module: translate |
Name: pp_value/4 |
Module: translate |
Name: pp_closure_value/6 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
pp_identifier_for_atelierb(Atom) -->
{atom_codes(Atom,Codes),
strip_illegal_id_codes(Codes,Change,Codes2),
Change==true},!,
{atom_codes(A2,Codes2)},
ppatom_opt_scramble(A2).
pp_identifier_for_atelierb(Atom) --> ppatom_opt_scramble(Atom).
Calls:
Name: ppatom_opt_scramble/3 |
Module: translate |
Name: atom_codes/2 |
|
Name: ! |
|
Name: ==/2 |
|
Name: strip_illegal_id_codes/3 |
Module: translate |
Called:
Name: pp_identifier/3 |
Module: translate |
pp_ids_indent([]) --> !, [].
pp_ids_indent([ID]) --> !,pp_expr_indent(identifier(ID)).
pp_ids_indent([ID|T]) --> !,pp_expr_indent(identifier(ID)), insertstr(' '),pp_ids_indent(T).
pp_ids_indent(X) --> {add_error(pp_ids_indent,'Not a list of atoms: ',pp_ids_indent(X))}.
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: insertstr/3 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
Name: ! |
Called:
Name: indent_rodin_label/3 |
Module: translate |
pp_important_infos(Expr,Info) -->
{findall(PPI,pp_is_important_info_field(Expr,Info,PPI),PPInfos), PPInfos \= []},
" ", enter_comment, ppterm(PPInfos), exit_comment, " ".
pp_inner_value( AB , LimitReached) --> {nonvar(AB),AB=(A,B)}, !, % do not print parentheses in this context
pp_inner_value(A,LimitReached),maplet_symbol,
pp_value(B,LimitReached).
pp_inner_value( Value , LimitReached) --> pp_value( Value , LimitReached).
Calls:
Name: pp_value/4 |
Module: translate |
Name: maplet_symbol/2 |
Module: foo_error |
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: ! |
|
Name: =/2 |
|
Name: nonvar/1 |
Called:
Name: pp_value/4 |
Module: translate |
pp_is_important_info_field(_,Infos,'DO_NOT_ENUMERATE'(X)) :- member(prob_annotation('DO_NOT_ENUMERATE'(X)),Infos).
pp_is_important_info_field(exists(_,_),Infos,'LIFT') :- member(allow_to_lift_exists,Infos).
pp_is_important_info_field(exists(_,_),Infos,used_ids(Used)) :- member(used_ids(Used),Infos).
pp_is_important_info_field(exists(_,_),Infos,'(wd)') :- member(contains_wd_condition,Infos).
Calls:
Name: member/2 |
pp_label(Lbl,Nr) -->
({force_eventb_rodin_mode}
-> {atom_codes(Lbl,C1), number_codes(Nr,NC), append(C1,NC,AC), atom_codes(A,AC)},
pp_atom_indent(A), pp_atom_indent(' ')
; []).
Calls:
Name: =/2 |
|
Name: pp_atom_indent/3 |
Module: translate |
Name: atom_codes/2 |
|
Name: append/3 |
|
Name: number_codes/2 |
|
Name: force_eventb_rodin_mode |
dynamic predicate |
Name: ->/3 |
Called:
Name: preds_over_lines2/6 |
Module: translate |
Name: preds_over_lines1/6 |
Module: translate |
pp_lambda_identifiers([H1,H2|T],LimitReached) --> {\+ eventb_translation_mode},!,
"(",pp_expr_l([H1,H2|T],LimitReached),")".
pp_lambda_identifiers(L,LimitReached) --> pp_expr_l_pair_in_mode(L,LimitReached).
Calls:
Name: pp_expr_l_pair_in_mode/4 |
Module: translate |
Name: =/2 |
|
Name: pp_expr_l/4 |
Module: translate |
Name: ! |
|
| Module: translate | |
Name: not/1 |
Called:
Name: pp_comprehension_set5/7 |
Module: translate |
pp_let_expr_nested(Ids,Exprs,Body) -->
insertstr('LET '),
pp_expr_indent_l(Ids),
insertstr(' BE '),
{maplist(create_equality,Ids,Exprs,Equalities)},
preds_over_lines(2,'@let_eq',Equalities),
indent('IN '),
increase_indentation_level(2),
pp_expr_indent(Body),
decrease_indentation_level(2),
indent('END').
Calls:
Name: indent/3 |
Module: translate |
| Module: translate | |
Name: pp_expr_indent/3 |
Module: translate |
| Module: translate | |
Name: preds_over_lines/5 |
Module: translate |
Name: maplist/4 |
Module: foo_error |
Name: insertstr/3 |
Module: translate |
Name: pp_expr_indent_l/3 |
Module: translate |
Called:
Name: pp_expr_indent/3 |
Module: translate |
pp_let_nested(Ids,Exprs,Body) -->
indent('LET '),
pp_expr_indent_l(Ids),
insertstr(' BE '),
{maplist(create_equality,Ids,Exprs,Equalities)},
preds_over_lines(2,'@let_eq',Equalities),
indent(' IN '),
increase_indentation_level(2),
pp_pred_nested(Body,let_predicate,40),
decrease_indentation_level(2),
indent(' END').
Calls:
Name: indent/3 |
Module: translate |
| Module: translate | |
Name: pp_pred_nested/5 |
Module: translate |
| Module: translate | |
Name: preds_over_lines/5 |
Module: translate |
Name: maplist/4 |
Module: foo_error |
Name: insertstr/3 |
Module: translate |
Name: pp_expr_indent_l/3 |
Module: translate |
Called:
Name: pp_pred_nested/5 |
Module: translate |
pp_numberedvar(N) --> "_",ppnumber(N),"_".
Calls:
Name: =/2 |
|
Name: ppnumber/3 |
Module: translate |
Called:
Name: pp_value/4 |
Module: translate |
Name: pp_value_l/6 |
Module: translate |
pp_pred_nested(TExpr,CurrentType,_) --> {TExpr = b(E,pred,_)},
{get_binary_connective(E,NewType,Ascii,LHS,RHS), binary_infix(NewType,Ascii,Prio,left)},
!,
pp_rodin_label_indent(TExpr), % print any label
inc_lvl(CurrentType,NewType),
pp_pred_nested(LHS,NewType,Prio),
{translate_in_mode(NewType,Ascii,Symbol)},
indent(' '),pp_atom_indent(Symbol),
indent(' '),
{(is_associative(NewType) -> NewTypeR=NewType % no need for parentheses if same operator on right
; NewTypeR=right(NewType))},
pp_pred_nested(RHS,NewTypeR,Prio),
dec_lvl(CurrentType,NewType).
pp_pred_nested(TExpr,_,_) --> {is_nontrivial_negation(TExpr,NExpr,InnerType,Prio)},
!,
pp_rodin_label_indent(TExpr), % print any label
{translate_in_mode(negation,'not',Symbol)},
pp_atom_indent(Symbol),
inc_lvl(other,negation), % always need parentheses for negation
pp_pred_nested(NExpr,InnerType,Prio),
dec_lvl(other,negation).
pp_pred_nested(TExpr,_,_) --> {TExpr = b(exists(Ids,RHS),pred,_)},
!,
pp_rodin_label_indent(TExpr), % print any label
{translate_in_mode(exists,'#',FSymbol)},
%indent(' '),
pp_atom_indent(FSymbol),
pp_expr_ids_in_mode_indent(Ids),pp_atom_indent('.'),
inc_lvl(other,conjunct), % always need parentheses here
{add_normal_typing_predicates(Ids,RHS,RHST), Prio=40}, % Prio of conjunction
pp_pred_nested(RHST,conjunct,Prio),
dec_lvl(other,conjunct).
pp_pred_nested(TExpr,_,_) --> {TExpr = b(forall(Ids,LHS,RHS),pred,_)},
!,
pp_rodin_label_indent(TExpr), % print any label
{translate_in_mode(forall,'!',FSymbol)},
%indent(' '),
pp_atom_indent(FSymbol),
pp_expr_ids_in_mode_indent(Ids),pp_atom_indent('.'),
inc_lvl(other,implication), % always need parentheses here
{add_normal_typing_predicates(Ids,LHS,LHST), Prio=30}, % Prio of implication
pp_pred_nested(LHST,implication,Prio),
{translate_in_mode(implication,'=>',Symbol)},
indent(' '),pp_atom_indent(Symbol),
indent(' '),
pp_pred_nested(RHS,right(implication),Prio),
dec_lvl(other,implication).
pp_pred_nested(TExpr,_,_) -->
{\+ eventb_translation_mode,
TExpr = b(let_predicate(Ids,Exprs,Body),pred,_)
}, %Ids=[_]}, % TODO: enable printing with more than one id; see below
!,
pp_let_nested(Ids,Exprs,Body).
pp_pred_nested(b(BOP,pred,_),_CurrentType,CurMinPrio) -->
{indent_binary_predicate(BOP,LHS,RHS,OpStr),
get_texpr_id(LHS,_),can_indent_texpr(RHS)},!,
pp_expr_m_indent(LHS,CurMinPrio),
insertstr(OpStr),
increase_indentation_level(2),
indent(''),
pp_expr_indent(RHS), % only supports %, {}, bool which do not need parentheses
decrease_indentation_level(2).
pp_pred_nested(Expr,_CurrentType,CurMinPrio) --> {can_indent_texpr(Expr)},!,
pp_expr_m_indent(Expr,CurMinPrio).
pp_pred_nested(Expr,_CurrentType,CurMinPrio) --> pp_expr_m_indent(Expr,CurMinPrio).
Calls:
Name: pp_expr_m_indent/4 |
Module: translate |
Name: ! |
|
Name: can_indent_texpr/1 |
Module: translate |
| Module: translate | |
Name: pp_expr_indent/3 |
Module: translate |
Name: indent/3 |
Module: translate |
| Module: translate | |
Name: insertstr/3 |
Module: translate |
Name: get_texpr_id/2 |
Module: foo_error |
| Module: translate | |
Name: pp_let_nested/5 |
Module: translate |
Name: =/2 |
|
| Module: translate | |
Name: not/1 |
|
Name: dec_lvl/4 |
Module: translate |
Name: RECURSIVE_CALL/5 |
Module: translate |
Name: pp_atom_indent/3 |
Module: translate |
Name: translate_in_mode/3 |
Module: translate |
| Module: translate | |
Name: inc_lvl/4 |
Module: translate |
| Module: translate | |
Name: pp_rodin_label_indent/3 |
Module: translate |
Name: is_nontrivial_negation/4 |
Module: translate |
Name: is_associative/1 |
Module: translate |
Name: ->/3 |
|
Name: binary_infix/4 |
Module: translate |
Name: get_binary_connective/5 |
Module: translate |
Called:
Name: pp_let_nested/5 |
Module: translate |
Name: preds_over_lines2/6 |
Module: translate |
Name: preds_over_lines1/6 |
Module: translate |
pp_prj12(Prj,Set1,Set2,LimitReached) -->
ppatom(Prj),"(",pp_expr(Set1,_,LimitReached),",",pp_expr(Set2,_),")".
Calls:
Name: =/2 |
|
Name: pp_expr/4 |
Module: translate |
Name: pp_expr/5 |
Module: translate |
Name: ppatom/3 |
Module: translate |
Called:
Name: pp_comprehension_set5/7 |
Module: translate |
pp_property(Prop,Limit,Output) :-
pp_property_without_plugin(Prop,Limit,Output).
Calls:
| Module: translate |
Called:
| Module: translate |
pp_property_without_plugin(=(Key,Value),_,A) :-
!,ajoin([Key,' = ',Value],A).
pp_property_without_plugin(':'(Key,Value),_,A) :-
!,ajoin([Key,' : ',Value],A).
pp_property_without_plugin(info(I),_,I) :- !.
pp_property_without_plugin(Prop,Limit,A) :-
write_to_codes(Prop,Codes),
atom_codes_with_limit(A,Limit,Codes).
Calls:
Name: atom_codes_with_limit/3 |
Module: foo_error |
Name: write_to_codes/2 |
Module: foo_error |
Name: ! |
|
Name: ajoin/2 |
Module: foo_error |
Called:
Name: pp_property/3 |
Module: translate |
pp_raw_formula(RawExpr) --> {transform_raw(RawExpr,TExpr)},!, pp_expr(TExpr,_,_LR).
pp_raw_formula(_) --> ppcodes("<
Calls:
Name: ppcodes/3 |
Module: translate |
Name: pp_expr/5 |
Module: translate |
Name: ! |
|
Name: transform_raw/2 |
Module: translate |
pp_refines(Refined,_Id) -->
% indent(Id), insertstr(' REFINES '),
indent('REFINES '),
insert_subst(Refined).
Calls:
Name: insert_subst/3 |
Module: translate |
Name: indent/3 |
Module: translate |
Called:
Name: pp_refines_l/4 |
Module: translate |
pp_refines_l([],_) --> [].
pp_refines_l([Ref|Rest],Id) -->
pp_refines(Ref,Id),pp_refines_l(Rest,Id).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: pp_refines/4 |
Module: translate |
Name: =/2 |
Called:
Name: translate_subst2/3 |
Module: translate |
pp_rodin_label(_Infos) --> {preference(translate_suppress_rodin_positions_flag,true),!}.
pp_rodin_label(_Infos) --> {preference(bugly_pp_scrambling,true),!}.
pp_rodin_label(Infos) --> {var(Infos)},!, "/* ILLEGAL VARIABLE INFO FIELD */".
pp_rodin_label(Infos) --> {get_info_labels(Infos,Label)},!,
pp_start_label_pragma,
ppatoms_opt_latex(Label),
pp_end_label_pragma.
pp_rodin_label(Infos) --> {preference(pp_wd_infos,true)},!, pp_wd_info(Infos).
pp_rodin_label(_Infos) --> [].
Calls:
Name: =/2 |
|
Name: pp_wd_info/3 |
Module: translate |
Name: ! |
|
Name: preference/2 |
Module: foo_error |
Name: pp_end_label_pragma/2 |
Module: foo_error |
Name: ppatoms_opt_latex/3 |
Module: translate |
Name: pp_start_label_pragma/2 |
Module: foo_error |
Name: get_info_labels/2 |
Module: foo_error |
Name: var/1 |
Called:
Name: pp_rodin_label_indent/3 |
Module: translate |
Name: pp_expr0/7 |
Module: translate |
pp_rodin_label_indent(b(_,_,Infos),(I,S),(I,T)) :- pp_rodin_label(Infos,S,T).
Calls:
Name: pp_rodin_label/3 |
Module: translate |
Called:
Name: pp_pred_nested/5 |
Module: translate |
pp_separator_sequence('') :- get_preference(translate_print_cs_style_sequences,true),!.
pp_separator_sequence(',').
Calls:
Name: ! |
|
Name: get_preference/2 |
Module: preferences |
Called:
Name: pp_sequence/4 |
Module: translate |
Name: pp_sequence_with_limit/4 |
Module: translate |
pp_sequence(Elements,LimitReached) --> {pp_separator_sequence(Sep)},
pp_begin_sequence,
pp_value_l(Elements,Sep,LimitReached),
pp_end_sequence.
Calls:
Name: pp_end_sequence/2 |
Module: foo_error |
Name: pp_value_l/5 |
Module: translate |
Name: pp_begin_sequence/2 |
Module: foo_error |
Name: pp_separator_sequence/1 |
Module: translate |
Called:
Name: pp_value/4 |
Module: translate |
pp_sequence_with_limit(Elements,LimitReached) --> {pp_separator_sequence(Sep)},
pp_begin_sequence,
pp_value_l_with_limit(Elements,Sep,LimitReached),
pp_end_sequence.
Calls:
Name: pp_end_sequence/2 |
Module: foo_error |
Name: pp_value_l_with_limit/5 |
Module: translate |
Name: pp_begin_sequence/2 |
Module: foo_error |
Name: pp_separator_sequence/1 |
Module: translate |
Called:
Name: pp_value/4 |
Module: translate |
pp_single_csp_value(V,'_') :- var(V),!.
pp_single_csp_value(X,'_cyclic_') :- cyclic_term(X),!.
pp_single_csp_value(int(X),A) :- atomic(X),!,number_chars(X,Chars),atom_chars(A,Chars).
Calls:
Name: atom_chars/2 |
|
Name: number_chars/2 |
|
Name: ! |
|
Name: atomic/1 |
|
Name: cyclic_term/1 |
Module: foo_error |
Name: var/1 |
Called:
Name: pp_csp_value/3 |
Module: translate |
pp_start_label_pragma -->
{(atelierb_mode(prover(_))
; get_preference(translate_print_typing_infos,true))}, % proxy for parseable;
% set by translate_bvalue_to_parseable_classicalb; important for parsertests with labels
!,
"/*@label ".
pp_start_label_pragma --> "/* @". % shorter version, for viewing in UI
pp_such_that_bar(_) --> {latex_mode},!, "\\mid ".
pp_such_that_bar(b(unary_minus(_),_,_)) --> !, " | ". % otherwise AtelierB complains about illegal token |-
pp_such_that_bar(b(unary_minus_real(_),_,_)) --> !, " | ". % otherwise AtelierB complains about illegal token |-
pp_such_that_bar(_Next) --> "|".
Calls:
Name: =/2 |
|
Name: ! |
|
Name: latex_mode |
dynamic predicate |
Called:
| Module: translate | |
Name: pp_comprehension_set5/7 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
pp_such_that_bar --> {latex_mode},!, "\\mid ".
pp_such_that_bar --> "|".
pp_theory_operator(general_sum(_,Membercheck,_),_Info,500) -->
{get_texpr_expr(Membercheck,member(_,Arg))},
ppatom('SUM('),pp_expr(Arg,_),ppatom(')').
pp_theory_operator(general_product(_,Membercheck,_),_Info,500) -->
{get_texpr_expr(Membercheck,member(_Couple,Arg))},
ppatom('PRODUCT('),pp_expr(Arg,_),ppatom(')').
pp_theory_operator(function(_,Arg),Info,500) -->
{memberchk_in_info(theory_operator(O,N),Info),decouplise_expr(N,Arg,Args)},
ppatom(O),"(",pp_expr_l_sep(Args,",",_LR),")".
pp_theory_operator(member(Arg,_),Info,500) -->
{memberchk_in_info(theory_operator(O,N),Info),decouplise_expr(N,Arg,Args)},
ppatom(O),"(",pp_expr_l_sep(Args,",",_LR),")".
Calls:
Name: =/2 |
|
Name: pp_expr_l_sep/5 |
Module: translate |
Name: ppatom/3 |
Module: translate |
Name: decouplise_expr/3 |
Module: translate |
Name: memberchk_in_info/2 |
Module: translate |
Name: pp_expr/4 |
Module: translate |
Name: get_texpr_expr/2 |
Module: foo_error |
Called:
Name: pp_expr0/7 |
Module: translate |
pp_tla_value(function(_Type1,_Type2),[]) --> !,
ppcodes("<<>>").
pp_tla_value(function(integer,T2),avl_set(Set)) -->
{convert_avlset_into_sequence(Set,Seq)}, !,
pp_tla_with_sep("<< "," >>",",",T2,Seq).
pp_tla_value(function(T1,T2),Set) -->
{is_printable_set(Set,Values)},!,
pp_tla_with_sep("(",")"," @@ ",function_value(T1,T2),Values).
pp_tla_value(function_value(T1,T2),(L,R)) -->
!,pp_tla_value(T1,L),":>",pp_tla_value(T2,R).
pp_tla_value(set(Type),Set) -->
{is_printable_set(Set,Values)},!,
pp_tla_with_sep("{","}",",",Type,Values).
pp_tla_value(tuple(Types),Value) -->
{pairs_to_list(Types,Value,Values,[]),!},
pp_tla_with_sep("<< "," >>",",",Types,Values).
pp_tla_value(record(Fields),rec(FieldValues)) -->
% TODO: Check if we can safely assume that Fields and FieldValues have the
% same order
!, {sort_tla_fields(Fields,FieldValues,RFields,RFieldValues)},
pp_tla_with_sep("[","]",", ",RFields,RFieldValues).
pp_tla_value(field(Name,Type),field(_,Value)) -->
!, ppatom_opt_scramble(Name)," |-> ",pp_tla_value(Type,Value).
pp_tla_value(_Type,Value) -->
% fallback: use B's pretty printer
pp_value(Value).
Calls:
Name: pp_value/3 |
Module: translate |
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: =/2 |
|
Name: ppatom_opt_scramble/3 |
Module: translate |
Name: ! |
|
Name: pp_tla_with_sep/7 |
Module: translate |
Name: sort_tla_fields/4 |
Module: translate |
Name: pairs_to_list/4 |
Module: translate |
Name: is_printable_set/2 |
Module: translate |
| Module: translate | |
Name: ppcodes/3 |
Module: translate |
Called:
Name: pp_tla_with_sep_aux/6 |
Module: translate |
| Module: translate |
pp_tla_with_sep(Start,End,Sep,Type,Values) -->
ppcodes(Start),pp_tla_with_sep_aux(Values,End,Sep,Type).
Calls:
Name: pp_tla_with_sep_aux/6 |
Module: translate |
Name: ppcodes/3 |
Module: translate |
Called:
Name: pp_tla_value/4 |
Module: translate |
pp_tla_with_sep_aux([],End,_Sep,_Type) -->
ppcodes(End).
pp_tla_with_sep_aux([Value|Rest],End,Sep,Type) -->
% If a single type is given, we interpret it as the type
% for each element of the list, if it is a list, we interpret
% it one different type for every value in the list.
{ (Type=[CurrentType|RestTypes] -> true ; CurrentType = Type, RestTypes=Type) },
pp_tla_value(CurrentType,Value),
( {Rest=[_|_]} -> ppcodes(Sep); {true} ),
pp_tla_with_sep_aux(Rest,End,Sep,RestTypes).
Calls:
Name: RECURSIVE_CALL/6 |
Module: translate |
Name: =/2 |
|
Name: ppcodes/3 |
Module: translate |
Name: ->/3 |
|
Name: pp_tla_value/4 |
Module: translate |
Name: true |
Called:
Name: pp_tla_with_sep/7 |
Module: translate |
Description:
,"TRUE". % TO DO: in latex_mode: surround by mathit
,"FALSE".
pp_value(_,LimitReached) --> {LimitReached==limit_reached},!, "...".
pp_value(V,_) --> {var(V)},!, pp_variable(V).
pp_value('$VAR'(N),_) --> !,pp_numberedvar(N).
pp_value(fd(X,GSet),_) --> {var(X)},!,
ppatom(GSet),":", ppnumber(X). ":??".
pp_value(fd(X,GSet),_) -->
{b_global_sets:is_b_global_constant_hash(GSet,X,Res)},!,
pp_identifier(Res).
pp_value(fd(X,GSet),_) --> {deferred_set_constant(GSet,X,Cst)},!,
pp_identifier(Cst).
pp_value(fd(X,M),_) --> !,ppatom_opt_scramble(M),ppnumber(X).
pp_value(int(X),_) --> !,ppnumber(X).
pp_value(term(floating(X)),_) --> !,ppnumber(X).
pp_value(string(X),_) --> !,string_start_symbol,ppstring_opt_scramble(X),string_end_symbol.
pp_value(global_set(X),_) --> {atomic(X),integer_set_mapping(X,Kind,Y)},!,
({Kind=integer_set} -> ppatom(Y) ; ppatom_opt_scramble(X)).
pp_value(term(X),_) --> {var(X)},!,"term(",pp_variable(X),")".
pp_value(freetype(X),_) --> {pretty_freetype(X,P)},!,ppatom_opt_scramble(P).
pp_value(pred_true /* bool_true */,_) --> %!,"TRUE". % TO DO: in latex_mode: surround by mathit
{constants_in_mode(pred_true,Symbol)},!,ppatom(Symbol).
pp_value(pred_false /* bool_false */,_) --> %!,"FALSE".
{constants_in_mode(pred_false,Symbol)},!,ppatom(Symbol).
pp_value([],_) --> !,empty_set_symbol.
pp_value(closure(Variables,Types,Predicate),LimitReached) --> !,
pp_closure_value(Variables,Types,Predicate,LimitReached).
pp_value(avl_set(A),LimitReached) --> !,
{check_is_non_empty_avl(A),
avl_size(A,Sz) % we could use quick_avl_approximate_size for large sets
},
{set_brackets(LBrace,RBrace)},
( {size_is_in_set_limit(Sz),
%(Sz>2 ; get_preference(translate_print_all_sequences,true)),
get_preference(translate_print_all_sequences,true), % no longer try and convert any sequence longer than 2 to sequence notation
avl_max(A,(int(Sz),_)), % a sequence has minimum int(1) and maximum int(Sz)
convert_avlset_into_sequence(A,Seq)} ->
pp_sequence(Seq,LimitReached)
;
( {Sz=0} -> left_set_bracket," /* empty avl_set */ ",right_set_bracket
; {(size_is_in_set_limit(Sz) ; Sz < 3)} -> % if Sz 3 we will print at least two elements anyway
{avl_domain(A,List)},
ppatom(LBrace),pp_value_l(List,',',LimitReached),ppatom(RBrace)
; {(Sz<5 ; \+ size_is_in_set_limit(4))} ->
{avl_min(A,Min),avl_max(A,Max)},
hash_card_symbol, % "#"
ppnumber(Sz),":", left_set_bracket,
pp_value(Min,LimitReached),",",ldots,",",pp_value(Max,LimitReached),right_set_bracket
;
{avl_min(A,Min),avl_next(Min,A,Nxt),avl_max(A,Max),avl_prev(Max,A,Prev)},
hash_card_symbol, % "#",
ppnumber(Sz),":", left_set_bracket,
pp_value(Min,LimitReached),",",pp_value(Nxt,LimitReached),",",ldots,",",
pp_value(Prev,LimitReached),",",pp_value(Max,LimitReached),right_set_bracket )).
pp_value( (A,B) ,LimitReached) --> !,
"(",pp_inner_value(A,LimitReached),
maplet_symbol,
pp_value(B,LimitReached),")".
pp_value(field(Name,Value),LimitReached) --> !,
pp_identifier(Name),":",pp_value(Value,LimitReached). % : for fields has priority 120 in French manual
pp_value(rec(Rec),LimitReached) --> !,
{function_like_in_mode(rec,Symbol)},
ppatom(Symbol), "(",pp_value_l(Rec,',',LimitReached),")".
pp_value(struct(Rec),LimitReached) --> !,
{function_like_in_mode(struct,Symbol)},
ppatom(Symbol), "(", pp_value_l(Rec,',',LimitReached),")".
pp_value(X,_) --> {cyclic_term(X),functor(X,F,_N)},!,
underscore_symbol,"cyclic",underscore_symbol,
pp_atom(F),underscore_symbol.
pp_value(sequence(List),LimitReached) --> !,
({List=[]} -> pp_empty_sequence ; pp_sequence_with_limit(List,LimitReached)).
pp_value([Head|Tail],LimitReached) --> {get_preference(translate_print_all_sequences,true),
convert_set_into_sequence([Head|Tail],Elements)},
!,
pp_sequence(Elements,LimitReached).
pp_value([Head|Tail],LimitReached) --> !, {set_brackets(L,R)},
ppatom(L),
pp_value_l_with_limit([Head|Tail],',',LimitReached),
ppatom(R).
pp_value(term(no_value_for(Id)),_) --> !,
"undefined ",ppatom(Id).
pp_value(freeval(Freetype,Case,Value),LimitReached) --> !,
({ground(Case),ground(Value),Value=term(Case)} -> ppatom_opt_scramble(Case)
; {ground(Case)} -> ppatom_opt_scramble(Case),"(",pp_value(Value,LimitReached),")"
; {pretty_freetype(Freetype,P)},
"FREEVALUE[",ppatom_opt_scramble(P),
",",write_to_codes(Case),
"](",pp_value(Value,LimitReached),")"
).
pp_value(X,_) --> {animation_mode(xtl)},!,
write_to_codes(X).
pp_value(X,_) --> % the << >> pose problems when checking against FDR
"<< ",write_to_codes(X)," >>".
Calls:
Name: =/2 |
|
Name: write_to_codes/3 |
Module: foo_error |
Name: ! |
|
Name: animation_mode/1 |
Module: specfile |
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: ppatom_opt_scramble/3 |
Module: translate |
Name: pretty_freetype/2 |
Module: translate |
Name: ground/1 |
|
Name: ->/3 |
|
Name: ppatom/3 |
Module: translate |
Name: pp_value_l_with_limit/5 |
Module: translate |
Name: set_brackets/2 |
Module: translate |
Name: pp_sequence/4 |
Module: translate |
| Module: translate | |
Name: get_preference/2 |
Module: preferences |
Name: pp_sequence_with_limit/4 |
Module: translate |
Name: pp_empty_sequence/2 |
Module: foo_error |
Name: underscore_symbol/2 |
Module: foo_error |
Name: pp_atom/3 |
Module: foo_error |
Name: functor/3 |
|
Name: cyclic_term/1 |
Module: foo_error |
Name: pp_value_l/5 |
Module: translate |
Name: function_like_in_mode/2 |
Module: translate |
Name: pp_identifier/3 |
Module: translate |
Name: maplet_symbol/2 |
Module: foo_error |
Name: pp_inner_value/4 |
Module: translate |
Name: right_set_bracket/2 |
Module: foo_error |
Name: ldots/2 |
Module: foo_error |
Name: left_set_bracket/2 |
Module: foo_error |
Name: ppnumber/3 |
Module: translate |
Name: hash_card_symbol/2 |
Module: foo_error |
Name: avl_prev/3 |
Module: foo_error |
Name: avl_max/2 |
Module: foo_error |
Name: avl_next/3 |
Module: foo_error |
Name: avl_min/2 |
Module: foo_error |
Name: size_is_in_set_limit/1 |
Module: translate |
Name: not/1 |
|
Name: </2 |
|
Name: avl_domain/2 |
Module: foo_error |
| Module: translate | |
Name: avl_size/2 |
Module: foo_error |
Name: check_is_non_empty_avl/1 |
Module: avl_tools |
Name: pp_closure_value/6 |
Module: translate |
Name: empty_set_symbol/2 |
Module: foo_error |
Name: constants_in_mode/2 |
Module: translate |
Name: pp_variable/3 |
Module: translate |
Name: var/1 |
|
Name: integer_set_mapping/3 |
Module: translate |
Name: atomic/1 |
|
Name: string_end_symbol/2 |
Module: foo_error |
Name: ppstring_opt_scramble/3 |
Module: translate |
Name: string_start_symbol/2 |
Module: foo_error |
Name: deferred_set_constant/3 |
dynamic predicate |
| Module: b_global_sets | |
Name: pp_numberedvar/3 |
Module: translate |
Name: ==/2 |
Called:
Name: pp_tla_value/4 |
Module: translate |
Name: pp_b_state_comma_list/5 |
Module: translate |
Name: show_parameter_value/4 |
Module: translate |
Name: show_assignments/4 |
Module: translate |
Name: explain_event_step/3 |
Module: translate |
Name: explain_event_step4/4 |
Module: translate |
Name: pp_csp_value/3 |
Module: translate |
pp_value(V,In,Out) :-
set_up_limit_reached(In,1000,LimitReached),
pp_value(V,LimitReached,In,Out).
Calls:
Name: pp_value/4 |
Module: translate |
Name: set_up_limit_reached/3 |
Module: translate |
Called:
Name: pp_tla_value/4 |
Module: translate |
Name: pp_b_state_comma_list/5 |
Module: translate |
Name: show_parameter_value/4 |
Module: translate |
Name: show_assignments/4 |
Module: translate |
Name: explain_event_step/3 |
Module: translate |
Name: explain_event_step4/4 |
Module: translate |
Name: pp_csp_value/3 |
Module: translate |
pp_value_l(V,Sep,LimitReached) --> pp_value_l(V,Sep,-1,LimitReached).
Calls:
Name: pp_value_l/6 |
Module: translate |
Called:
| Module: translate | |
Name: pp_sequence/4 |
Module: translate |
Name: pp_value/4 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
pp_value_l(V,_Sep,_,_) --> {var(V)},!,"...".
pp_value_l(_,_,_,LimitReached) --> {LimitReached==limit_reached},!,"...".
pp_value_l('$VAR'(N),_Sep,_,_) --> !,"}\\/{",pp_numberedvar(N),"}".
pp_value_l([],_Sep,_,_) --> !.
pp_value_l([Expr|Rest],Sep,Limit,LimitReached) -->
( {nonvar(Rest),Rest=[]} ->
pp_value(Expr,LimitReached)
; {Limit=0} -> "..."
;
pp_value(Expr,LimitReached),
% no separator for closure special case
({nonvar(Rest) , Rest = closure(_,_,_)} -> {true} ; ppatom(Sep)) ,
{L1 is Limit-1} ,
% convert avl_set(_) in a list's tail to a Prolog list
{nonvar(Rest) , Rest = avl_set(_) -> custom_explicit_sets:expand_custom_set_to_list(Rest,LRest) ; LRest = Rest} ,
pp_value_l(LRest,Sep,L1,LimitReached)).
pp_value_l(avl_set(A),_Sep,_,LimitReached) --> pp_value(avl_set(A),LimitReached).
pp_value_l(closure(A,B,C),_Sep,_,LimitReached) --> "}\\/", pp_value(closure(A,B,C),LimitReached).
Calls:
Name: pp_value/4 |
Module: translate |
Name: =/2 |
|
Name: RECURSIVE_CALL/6 |
Module: translate |
| Module: custom_explicit_sets | |
Name: nonvar/1 |
|
Name: ->/3 |
|
Name: is/2 |
|
Name: ppatom/3 |
Module: translate |
Name: ! |
|
Name: pp_numberedvar/3 |
Module: translate |
Name: ==/2 |
|
Name: var/1 |
Called:
| Module: translate | |
Name: pp_sequence/4 |
Module: translate |
Name: pp_value/4 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
pp_value_l_with_limit(V,Sep,LimitReached) --> {get_preference(expand_avl_upto,Max)},
pp_value_l(V,Sep,Max,LimitReached).
Calls:
Name: pp_value_l/6 |
Module: translate |
Name: get_preference/2 |
Module: preferences |
Called:
Name: pp_sequence_with_limit/4 |
Module: translate |
Name: pp_value/4 |
Module: translate |
pp_value_l_with_types([],_Sep,[],_) --> !.
pp_value_l_with_types([Expr|Rest],Sep,[TE|TT],LimitReached) -->
( {nonvar(Rest),Rest=[]} ->
pp_value_with_type(Expr,TE,LimitReached)
;
pp_value_with_type(Expr,TE,LimitReached),ppatom(Sep),
pp_value_l_with_types(Rest,Sep,TT,LimitReached)).
Calls:
Name: RECURSIVE_CALL/6 |
Module: translate |
Name: ppatom/3 |
Module: translate |
Name: pp_value_with_type/5 |
Module: translate |
Name: =/2 |
|
Name: nonvar/1 |
|
Name: ->/3 |
|
Name: ! |
Called:
| Module: translate |
pp_value_with_type(E,T,LimitReached) --> {adapt_value_according_to_type(T,E,AdaptedE)},
pp_value(AdaptedE,LimitReached).
Calls:
Name: pp_value/4 |
Module: translate |
| Module: translate |
Called:
Name: pp_expr1/7 |
Module: translate |
Name: pp_value_l_with_types/6 |
Module: translate |
pp_variable(V) --> write_to_codes(V). %underscore_symbol.
Calls:
Name: write_to_codes/3 |
Module: foo_error |
Called:
Name: pp_value/4 |
Module: translate |
pp_wd_info(Infos) --> {member(discharged_wd_po,Infos)},!, "/*D",
({member(contains_wd_condition,Infos)} -> "-WD*/ " ; "*/ ").
pp_wd_info(Infos) --> {member(contains_wd_condition,Infos)},!, "/*WD*/ ".
pp_wd_info(_Infos) --> [].
Calls:
Name: =/2 |
|
Name: ! |
|
Name: member/2 |
|
Name: ->/3 |
Called:
Name: pp_rodin_label/3 |
Module: translate |
pp_witness(Expr) -->
indention_level(I1,I2),
{get_texpr_expr(Expr,witness(Id,Pred)),
I2 is I1+2},
indent, pp_expr_indent(Id), insertstr(': '),
pp_expr_indent(Pred),
pp_description_pragma_of(Pred),
indention_level(_,I1).
Calls:
Name: indention_level/4 |
Module: translate |
| Module: translate | |
Name: pp_expr_indent/3 |
Module: translate |
Name: insertstr/3 |
Module: translate |
Name: indent/2 |
Module: foo_error |
Name: is/2 |
|
Name: get_texpr_expr/2 |
Module: foo_error |
Called:
Name: pp_witness_l/3 |
Module: translate |
pp_witness_l([]) --> [].
pp_witness_l([Witness|WRest]) -->
pp_witness(Witness),pp_witness_l(WRest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: pp_witness/3 |
Module: translate |
Name: =/2 |
Called:
Name: translate_subst2/3 |
Module: translate |
pp_xtl_value(Value) --> better_write_canonical_to_codes(Value).
Calls:
| Module: tools_printing |
Called:
Name: translate_xtl_value/2 |
Module: translate |
Name: pp_any_state/4 |
Module: translate |
ppatom(Var) --> {var(Var)},!, ppatom('$VARIABLE').
ppatom(Cmp) --> {compound(Cmp)},!, ppatom('$COMPOUND_TERM').
ppatom(Atom) --> {safe_atom_codes(Atom,Codes)}, ppcodes(Codes).
Calls:
Name: ppcodes/3 |
Module: translate |
Name: safe_atom_codes/2 |
Module: foo_error |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ! |
|
Name: compound/1 |
|
Name: var/1 |
Called:
ppatom_opt_scramble(Name) --> {get_preference(bugly_pp_scrambling,true)},
% {\+ bmachine:b_top_level_operation(Name)}, % comment in to not change name of B operations
!,
{bugly_scramble_id(Name,ScrName)},
ppatom(ScrName).
ppatom_opt_scramble(Name) -->
{primes_to_unicode(Name, UnicodeName)},
pp_atom_opt_latex(UnicodeName).
Calls:
Name: pp_atom_opt_latex/3 |
Module: translate |
Name: primes_to_unicode/2 |
Module: translate |
Name: ppatom/3 |
Module: translate |
Name: bugly_scramble_id/2 |
Module: translate |
Name: ! |
|
Name: get_preference/2 |
Module: preferences |
Called:
Name: pp_tla_value/4 |
Module: translate |
| Module: translate | |
Name: pp_expr2/5 |
Module: translate |
Name: pp_value/4 |
Module: translate |
Name: pp_identifier/3 |
Module: translate |
ppatoms([]) --> !, [].
ppatoms([ID|T]) --> !,ppatom(ID), " ", ppatoms(T).
ppatoms(X) --> {add_error(ppatoms,'Not a list of atoms: ',ppatoms(X))}.
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ppatom/3 |
Module: translate |
Name: ! |
Called:
| Module: translate |
ppatoms_opt_latex([]) --> !, [].
ppatoms_opt_latex([ID]) --> !,pp_atom_opt_latex(ID).
ppatoms_opt_latex([ID|T]) --> !,pp_atom_opt_latex(ID), " ", ppatoms_opt_latex(T).
ppatoms_opt_latex(X) --> {add_error(ppatoms_opt_latex,'Not a list of atoms: ',ppatoms_opt_latex(X))}.
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: pp_atom_opt_latex/3 |
Module: translate |
Name: ! |
Called:
Name: pp_rodin_label/3 |
Module: translate |
ppcodes([],S,S).
ppcodes([C|Rest],[C|In],Out) :- ppcodes(Rest,In,Out).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Called:
Name: pp_codes_opt_latex/3 |
Module: translate |
Name: ppnumber/3 |
Module: translate |
Name: pp_tla_with_sep_aux/6 |
Module: translate |
Name: ppatom/3 |
Module: translate |
| Module: translate | |
| Module: translate | |
Name: pp_raw_formula/3 |
Module: translate |
| Module: translate | |
Name: pp_tla_value/4 |
Module: translate |
Name: insertcodes/3 |
Module: translate |
Name: pp_tla_with_sep/7 |
Module: translate |
| Module: translate |
ppcodes_with_limit_reached([C|Rest],LimitReached,[C|In],Out) :- var(LimitReached), !,
ppcodes_with_limit_reached(Rest,LimitReached,In,Out).
ppcodes_with_limit_reached(_,_LimitReached,S,S).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: ! |
|
Name: var/1 |
Called:
| Module: translate |
ppnumber(Number) --> {var(Number)},!,pp_clpfd_variable(Number).
ppnumber(inf) --> !,"inf".
ppnumber(minus_inf) --> !,"minus_inf".
ppnumber(Number) --> {number(Number),number_codes(Number,Codes)},!, ppcodes(Codes).
ppnumber(Number) --> {add_internal_error('Not a number: ',ppnumber(Number,_,_))}, "<<" ,ppterm(Number), ">>".
Calls:
Name: =/2 |
|
Name: ppterm/3 |
Module: translate |
Name: add_internal_error/2 |
Module: foo_error |
Name: ppcodes/3 |
Module: translate |
Name: ! |
|
Name: number_codes/2 |
|
Name: number/1 |
|
Name: pp_clpfd_variable/3 |
Module: translate |
Name: var/1 |
Called:
Name: explain_classicb_path/4 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
Name: pp_closure_value/6 |
Module: translate |
Name: pp_numberedvar/3 |
Module: translate |
Name: pp_expr1/7 |
Module: translate |
Name: pp_value/4 |
Module: translate |
ppstring_opt_scramble(Name) --> {var(Name)},!,ppatom(Name).
ppstring_opt_scramble(Name) --> {compound(Name)},!,
{add_internal_error('Not an atom: ',ppstring_opt_scramble(Name,_,_))},
"<<" ,ppterm(Name), ">>".
ppstring_opt_scramble(Name) --> {get_preference(bugly_pp_scrambling,true)},!,
pp_bugly_composed_string(Name).
ppstring_opt_scramble(Name) --> {atom_codes(Name,Codes),b_string_escape_codes(Codes,EscCodes)},
pp_codes_opt_latex(EscCodes).
Calls:
Name: pp_codes_opt_latex/3 |
Module: translate |
Name: b_string_escape_codes/2 |
Module: tools |
Name: atom_codes/2 |
|
| Module: translate | |
Name: ! |
|
Name: get_preference/2 |
Module: preferences |
Name: =/2 |
|
Name: ppterm/3 |
Module: translate |
Name: add_internal_error/2 |
Module: foo_error |
Name: compound/1 |
|
Name: ppatom/3 |
Module: translate |
Name: var/1 |
Called:
Name: pp_expr2/5 |
Module: translate |
Name: pp_value/4 |
Module: translate |
ppterm(Term) --> write_to_codes(Term).
Calls:
Name: write_to_codes/3 |
Module: foo_error |
Called:
Name: explain_span_context/3 |
Module: translate |
Name: explain_span2/3 |
Module: translate |
Name: pp_b_context/3 |
Module: translate |
Name: pp_expr2/5 |
Module: translate |
Name: explain_event_trace4/6 |
Module: translate |
Name: pp_important_infos/4 |
Module: translate |
Name: translate_span_file/4 |
Module: translate |
Name: translate_span/4 |
Module: translate |
Name: try_pp_b_state/4 |
Module: translate |
Name: insertstr/3 |
Module: translate |
| Module: translate | |
Name: pp_functor/3 |
Module: translate |
Name: pp_context_state/3 |
Module: translate |
Name: atoms_to_codelist/3 |
Module: translate |
Name: pp_b_state_comma_list/5 |
Module: translate |
Name: explain_error_context2/3 |
Module: translate |
| Module: translate | |
Name: explain_span_file/3 |
Module: translate |
Name: pp_b_state_list/4 |
Module: translate |
Name: explain_state_error2/4 |
Module: translate |
Name: ppnumber/3 |
Module: translate |
| Module: translate | |
| Module: translate | |
Name: pp_any_state/4 |
Module: translate |
Name: ppstring_opt_scramble/3 |
Module: translate |
ppterm_with_limit_reached(Term,LimitReached) -->
{write_to_codes(Term,Codes,[])}, ppcodes_with_limit_reached(Codes,LimitReached).
Calls:
| Module: translate | |
Name: write_to_codes/3 |
Module: foo_error |
Called:
Name: pp_expr2/5 |
Module: translate |
pred_over_lines(N,Lbl,Pred) -->
{conjunction_to_list(Pred,List)},
preds_over_lines(N,Lbl,List).
Calls:
Name: preds_over_lines/5 |
Module: translate |
Name: conjunction_to_list/2 |
Module: foo_error |
Called:
| Module: translate | |
Name: pp_expr_indent/3 |
Module: translate |
Name: explain_predicate/4 |
Module: translate |
Name: translate_subst2/3 |
Module: translate |
Name: translate_whens/4 |
Module: translate |
preds_over_lines(N,Lbl,Preds) --> preds_over_lines(N,Lbl,'& ',Preds).
Calls:
Name: preds_over_lines/6 |
Module: translate |
Called:
Name: pred_over_lines/5 |
Module: translate |
Name: pp_let_nested/5 |
Module: translate |
Name: translate_subst2/3 |
Module: translate |
Name: pp_let_expr_nested/5 |
Module: translate |
preds_over_lines(N,Lbl,Sep,Preds) -->
indention_level(I1,I2),{I2 is I1+N},
preds_over_lines1(Preds,Lbl,1,Sep),
indention_level(_,I1).
Calls:
Name: indention_level/4 |
Module: translate |
Name: preds_over_lines1/6 |
Module: translate |
Name: is/2 |
Called:
Name: pred_over_lines/5 |
Module: translate |
Name: pp_let_nested/5 |
Module: translate |
Name: translate_subst2/3 |
Module: translate |
Name: pp_let_expr_nested/5 |
Module: translate |
preds_over_lines1([],Lbl,Nr,Sep) --> !,
preds_over_lines1([b(truth,pred,[])],Lbl,Nr,Sep).
preds_over_lines1([H|T],Lbl,Nr,Sep) -->
indent(' '), pp_label(Lbl,Nr),
%({T==[]} -> pp_expr_indent(H) ; pp_expr_m_indent(H,40)),
({T==[]} -> pp_pred_nested(H,conjunct,0) ; pp_pred_nested(H,conjunct,40)),
pp_description_pragma_of(H),
{N1 is Nr+1},
preds_over_lines2(T,Lbl,N1,Sep).
Calls:
Name: preds_over_lines2/6 |
Module: translate |
Name: is/2 |
|
| Module: translate | |
Name: pp_pred_nested/5 |
Module: translate |
Name: ==/2 |
|
Name: ->/3 |
|
Name: pp_label/4 |
Module: translate |
Name: indent/3 |
Module: translate |
Name: RECURSIVE_CALL/6 |
Module: translate |
Name: ! |
Called:
Name: preds_over_lines/6 |
Module: translate |
preds_over_lines2([],_,_,_Sep) --> !.
preds_over_lines2([E|Rest],Lbl,Nr,Sep) -->
({force_eventb_rodin_mode} -> indent(' '), pp_label(Lbl,Nr) ; indent(Sep)),
pp_pred_nested(E,conjunct,40),
pp_description_pragma_of(E),
{N1 is Nr+1},
preds_over_lines2(Rest,Lbl,N1,Sep).
Calls:
Name: RECURSIVE_CALL/6 |
Module: translate |
Name: is/2 |
|
| Module: translate | |
Name: pp_pred_nested/5 |
Module: translate |
Name: indent/3 |
Module: translate |
Name: pp_label/4 |
Module: translate |
Name: force_eventb_rodin_mode |
dynamic predicate |
Name: ->/3 |
|
Name: =/2 |
|
Name: ! |
Called:
Name: preds_over_lines1/6 |
Module: translate |
pretty_freetype(Id,A) :-
extract_vartype_names(Id,N),
pretty_freetype2(Id,N,A).
Calls:
Name: pretty_freetype2/3 |
Module: translate |
Name: extract_vartype_names/2 |
Module: translate |
Called:
Name: pp_expr2/5 |
Module: translate |
Name: pp_value/4 |
Module: translate |
Name: translate_freetype/3 |
Module: translate |
pretty_freetype2(Id,_,A) :- var(Id),!,A='_'.
pretty_freetype2(Id,_,A) :- atomic(Id),!,Id=A.
pretty_freetype2(Id,N,A) :-
Id=..[Name|TypeArgs],
pretty_type2_l(TypeArgs,N,PArgs),
ajoin_with_sep(PArgs,',',P),
ajoin([Name,'(',P,')'],A).
Calls:
Name: ajoin/2 |
Module: foo_error |
Name: ajoin_with_sep/3 |
Module: foo_error |
Name: pretty_type2_l/3 |
Module: translate |
Name: =../2 |
|
Name: =/2 |
|
Name: ! |
|
Name: atomic/1 |
|
Name: var/1 |
Called:
Name: pretty_freetype/2 |
Module: translate |
Name: pretty_type2/4 |
Module: translate |
pretty_normalized_type(Type,String) :- typing_tools:normalize_type(Type,NT),!,
pretty_type(NT,String).
pretty_normalized_type(Type,String) :-
add_internal_error('Cannot normalize type:',pretty_normalized_type(Type,String)),
pretty_type(Type,String).
Calls:
Name: pretty_type/2 |
Module: translate |
Name: add_internal_error/2 |
Module: foo_error |
Name: ! |
|
Name: normalize_type/2 |
Module: typing_tools |
Called:
Name: pp_expr2/5 |
Module: translate |
Name: pp_expr1/7 |
Module: translate |
pretty_type(Type,String) :-
pretty_type_l([Type],[String]).
Calls:
Name: pretty_type_l/2 |
Module: translate |
Called:
| Module: tcltk_interface | |
| Module: bmachine | |
Name: string_to_freetype2/4 |
Module: external_functions |
| Module: prob_cli | |
Name: generate_typing_list/4 |
Module: tcltk_interface |
| Module: b_intelligent_trace_replay | |
Name: pretty_normalized_type/2 |
Module: translate |
| Module: model_checker | |
| Module: translate | |
Name: check_types/4 |
Module: tcltk_interface |
Name: select_membership/4 |
Module: translate |
Name: STRING_TO_ENUM/4 |
Module: external_functions |
Name: state_eval1/7 |
Module: external_functions |
Name: get_typedval_info/2 |
Module: b_interpreter_components |
Name: extract_id_and_pp_type/2 |
Module: bmachine |
Name: safe_pretty_type/2 |
Module: test_typechecker |
Name: prob2_get_formula_type/3 |
Module: prob2_interface |
Name: illegal_type/8 |
Module: b_intelligent_trace_replay |
Name: is_binary_relation/2 |
Module: kodkod_translate |
Name: check_attribute_type/5 |
Module: visb_visualiser |
| Module: visb_visualiser | |
Name: parse_parameter_values/4 |
Module: tcltk_interface |
| Module: b_intelligent_trace_replay |
pretty_type2(X,names(Vars,Names),_,Name) :- var(X),!,exact_member_lookup(X,Name,Vars,Names).
pretty_type2(any,_,_,'?').
pretty_type2(set(T),N,_,Text) :- nonvar(T),T=couple(A,B),!,
pretty_type2(A,N,paren,AT), pretty_type2(B,N,paren,BT),
binary_infix_in_mode(relations,Symbol,_,_), % <->
ajoin(['(',AT,Symbol,BT,')'],Text).
pretty_type2(set(T),N,_,Text) :-
pretty_type2(T,N,noparen,TT), function_like_in_mode(pow_subset,POW),
ajoin([POW,'(',TT,')'],Text).
pretty_type2(seq(T),N,_,Text) :-
pretty_type2(T,N,noparen,TT), ajoin(['seq(',TT,')'],Text).
pretty_type2(couple(A,B),N,Paren,Text) :-
pretty_type2(A,N,paren,AT),pretty_type2(B,N,paren,BT),
binary_infix_in_mode(cartesian_product,Cart,_,_),
ajoin([AT,Cart,BT],Prod),
( Paren == noparen ->
Text = Prod
;
ajoin(['(',Prod,')'],Text)).
pretty_type2(string,_,_,'STRING').
pretty_type2(integer,_,_,Atom) :- integer_set_mapping('INTEGER',Atom).
pretty_type2(real,_,_,Atom) :- real_set_mapping('REAL',Atom).
pretty_type2(boolean,_,_,'BOOL').
pretty_type2(global(G_Id),_,_,A) :- opt_scramble_id(G_Id,G), ajoin([G],A).
pretty_type2(freetype(Id),N,_,A) :- pretty_freetype2(Id,N,A).
pretty_type2(pred,_,_,predicate).
pretty_type2(subst,_,_,substitution).
pretty_type2(constant(List),_,_,A) :-
(var(List) -> ['{??VAR??...}'] % should not happen
; ajoin_with_sep(List,',',P), ajoin(['{',P,'}'],A)).
pretty_type2(record(Fields),N,_,Text) :-
pretty_type_fields(Fields,N,FText),
ajoin(['struct(',FText,')'],Text).
pretty_type2(op(Params,Results),N,_,Text) :-
pretty_type_l(Params,N,PText),
( nonvar(Results),Results=[] ->
ajoin(['operation(',PText,')'],Text)
;
pretty_type_l(Results,N,RText),
ajoin([RText,'<--operation(',PText,')'],Text) ).
pretty_type2(definition(DefType,_,_),_,_,DefType).
pretty_type2(witness,_,_,witness).
pretty_type2([],_,_,'[]') :- add_error(pretty_type,'Illegal list in type:','[]').
pretty_type2([H|T],_,_,'[_]') :- add_error(pretty_type,'Illegal list in type:',[H|T]).
pretty_type2(b(E,T,I),_,_,'?') :- add_error(pretty_type,'Illegal b/3 term in type:',b(E,T,I)).
Calls:
Name: add_error/3 |
Module: foo_error |
Name: ajoin/2 |
Module: foo_error |
Name: pretty_type_l/3 |
Module: translate |
Name: =/2 |
|
Name: nonvar/1 |
|
Name: ->/3 |
|
Name: pretty_type_fields/3 |
Module: translate |
Name: ajoin_with_sep/3 |
Module: foo_error |
Name: ./2 |
|
Name: var/1 |
|
Name: pretty_freetype2/3 |
Module: translate |
Name: opt_scramble_id/2 |
Module: translate |
Name: real_set_mapping/2 |
Module: translate |
Name: integer_set_mapping/2 |
Module: translate |
Name: ==/2 |
|
Name: binary_infix_in_mode/4 |
Module: translate |
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: function_like_in_mode/2 |
Module: translate |
Name: ! |
|
Name: exact_member_lookup/4 |
Module: foo_error |
Called:
Name: pretty_type_fields/3 |
Module: translate |
Name: pretty_type_l/3 |
Module: translate |
Name: pretty_type2_l/3 |
Module: translate |
pretty_type2_l([],_,[]).
pretty_type2_l([T|TRest],Names,[S|SRest]) :-
pretty_type2(T,Names,noparen,S),
pretty_type2_l(TRest,Names,SRest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: pretty_type2/4 |
Module: translate |
Called:
Name: pretty_freetype2/3 |
Module: translate |
Name: pretty_type_l/2 |
Module: translate |
pretty_type_fields(L,_,'...') :- var(L),!.
pretty_type_fields([],_,'') :- !.
pretty_type_fields([field(Name,Type)|FRest],N,Text) :- !,
pretty_type2(Type,N,noparen,TText),
ptf_seperator(FRest,Sep),
pretty_type_fields(FRest,N,RestText),
opt_scramble_id(Name,ScrName),
ajoin([ScrName,':',TText,Sep,RestText],Text).
pretty_type_fields(Err,N,Text) :-
add_internal_error('Illegal field type: ',pretty_type_fields(Err,N,Text)), Text='??'.
Calls:
Name: =/2 |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: ajoin/2 |
Module: foo_error |
Name: opt_scramble_id/2 |
Module: translate |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ptf_seperator/2 |
Module: translate |
Name: pretty_type2/4 |
Module: translate |
Name: ! |
|
Name: var/1 |
Called:
Name: pretty_type2/4 |
Module: translate |
pretty_type_l(Types,Strings) :-
extract_vartype_names(Types,N),
pretty_type2_l(Types,N,Strings).
Calls:
Name: pretty_type2_l/3 |
Module: translate |
Name: extract_vartype_names/2 |
Module: translate |
Called:
Name: pretty_type/2 |
Module: translate |
pretty_type_l(L,_,'...') :- var(L),!.
pretty_type_l([],_,'') :- !.
pretty_type_l([E|Rest],N,Text) :-
pretty_type2(E,N,noparen,EText),
( nonvar(Rest),Rest=[] ->
EText=Text
;
pretty_type_l(Rest,N,RText),
ajoin([EText,',',RText],Text)).
Calls:
Name: ajoin/2 |
Module: foo_error |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: =/2 |
|
Name: nonvar/1 |
|
Name: ->/3 |
|
Name: pretty_type2/4 |
Module: translate |
Name: ! |
|
Name: var/1 |
Called:
Name: pretty_type/2 |
Module: translate |
primes_to_unicode(Name, UnicodeName) :-
atom_codes(Name, Codes),
phrase(primes_to_unicode(Codes), UCodes),
atom_codes(UnicodeName, UCodes).
Calls:
Name: atom_codes/2 |
|
Name: phrase/2 |
Called:
Name: ppatom_opt_scramble/3 |
Module: translate |
primes_to_unicode([0'\'|T]) --> !,
"\x2032\",
primes_to_unicode(T).
primes_to_unicode([C|T]) --> !,
[C],
primes_to_unicode(T).
primes_to_unicode([]) --> "".
Calls:
Name: =/2 |
|
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ! |
Called:
Name: ppatom_opt_scramble/3 |
Module: translate |
Dynamic: true
print_additional_machine_info.
Called:
Name: translate_mpart2/5 |
Module: translate |
| Module: translate |
print_bexpr(Expr) :- translate_bexpression(Expr,R), write(R).
Calls:
Name: write/1 |
|
Name: translate_bexpression/2 |
Module: translate |
Called:
print_bexpr_or_subst(E) :- get_texpr_type(E,T),is_subst_type(T),!, print_subst(E).
print_bexpr_or_subst(precondition(A,B)) :- !, print_subst(precondition(A,B)).
print_bexpr_or_subst(any(A,B,C)) :- !, print_subst(any(A,B,C)).
print_bexpr_or_subst(select(A)) :- !, print_subst(select(A)). % TO DO: add more cases ?
print_bexpr_or_subst(E) :- print_bexpr(E).
Calls:
Name: print_bexpr/1 |
Module: translate |
Name: print_subst/1 |
Module: translate |
Name: ! |
|
Name: is_subst_type/1 |
Module: translate |
Name: get_texpr_type/2 |
Module: foo_error |
Called:
Name: print_raw_bexpr/1 |
Module: translate |
Name: test/2 |
Module: synthesis_tests |
Name: b_portray_hook/1 |
Module: translate |
Name: synthesis_log_aux/1 |
Module: logging |
Name: cse_print_check/2 |
Module: b_expression_sharing |
Name: l_print_bexpr_or_subst/1 |
Module: translate |
print_bexpr_stream(S,Expr) :- translate_bexpression(Expr,R), write(S,R).
Calls:
Name: write/2 |
|
Name: translate_bexpression/2 |
Module: translate |
print_bexpr_with_limit(Expr,Limit) :- translate_bexpression_with_limit(Expr,Limit,R), write(R).
Calls:
Name: write/1 |
|
| Module: translate |
Called:
Name: print_arg/1 |
Module: tools_printing |
Name: apply_transformation2/3 |
Module: kodkod |
| Module: b_interpreter_components | |
| Module: translate | |
Name: apply_transformation/3 |
Module: kodkod |
print_bexpr_with_limit_and_typing(Expr,Limit,TypeInfos) :-
set_print_type_infos(TypeInfos,CHNG),
(get_texpr_type(Expr,pred)
-> find_typed_identifier_uses(Expr, TUsedIds),
add_typing_predicates(TUsedIds,Expr,Expr2)
; Expr2=Expr),
call_cleanup(print_bexpr_with_limit(Expr2,Limit),
reset_print_type_infos(CHNG)).
Calls:
Name: call_cleanup/2 |
|
Name: =/2 |
|
Name: add_typing_predicates/3 |
Module: translate |
Name: find_typed_identifier_uses/2 |
Module: foo_error |
Name: get_texpr_type/2 |
Module: foo_error |
Name: ->/3 |
|
Name: set_print_type_infos/2 |
Module: translate |
Called:
Name: repl_parse_predicate/4 |
Module: eval_strings |
print_bracket(I,I,_) :- !.
print_bracket(I,_NewI,Bracket) :-
print_indent(I), write(Bracket),nl.
Calls:
Name: nl |
|
Name: write/1 |
|
Name: print_indent/1 |
Module: translate |
Name: ! |
print_bstate(State) :- print_bstate_limited(State,1000,-1).
Calls:
Name: print_bstate_limited/3 |
Module: translate |
Called:
Name: print_state/1 |
Module: translate |
Name: display_solution_aux/2 |
Module: eval_strings |
Name: portray_content_fact/2 |
Module: value_persistance |
| Module: prob_cli | |
Name: print_arg/1 |
Module: tools_printing |
Name: DEBUG_PRINT_STATE/3 |
Module: external_functions |
| Module: enabling_analysis | |
Name: cbc_deadlock_check/1 |
Module: prob_cli |
Name: check_invariant/3 |
Module: b_interpreter |
print_bstate_limited(State,VarLimit,OverallLimit) :-
translate_bstate_limited(State,VarLimit,OverallLimit,Output),
write(' '),write(Output).
Calls:
Name: write/1 |
|
| Module: translate |
Called:
Name: exec_eval_command/2 |
Module: prob_cli |
Name: print_state_silent/1 |
Module: prob_cli |
Name: print_bstate/1 |
Module: translate |
print_bvalue(Val) :- translate_bvalue(Val,TV), write(TV).
Calls:
Name: write/1 |
|
Name: translate_bvalue/2 |
Module: translate |
Called:
| Module: memoization | |
| Module: kernel_objects | |
Name: unify/2 |
Module: b_trace_checking |
Name: print_memo_entry/1 |
Module: memoization |
Name: print_finite_warning/6 |
Module: kernel_objects |
Name: print_memo_table/0 |
Module: memoization |
Name: test_server_loop/1 |
Module: zmq_rpc |
Name: create_state_preds_aux/6 |
Module: prob_state_predicates |
| Module: b_ast_cleanup | |
Name: l_print_bvalue/1 |
Module: translate |
Name: print_last_value/0 |
Module: eval_strings |
| Module: b_trace_checking | |
Name: add_complex_hit/4 |
Module: external_functions |
Name: check_det_aux/6 |
Module: external_functions |
Name: FORCE/3 |
Module: external_functions |
Name: b_portray_hook/1 |
Module: translate |
print_bvalue_stream(S,Val) :- translate_bvalue(Val,R), write(S,R).
Calls:
Name: write/2 |
|
Name: translate_bvalue/2 |
Module: translate |
Called:
Name: my_print_csv_value/2 |
Module: tcltk_interface |
print_clpfd_variable(X) :- var(X),!,write(X), write(':'), fd_dom(X,Dom), write(Dom), print_frozen_info(X).
print_clpfd_variable(X) :- write(X).
Calls:
Name: write/1 |
|
Name: print_frozen_info/1 |
Module: translate |
Name: fd_dom/2 |
Module: foo_error |
Name: ! |
|
Name: var/1 |
Called:
Name: print_value_variable/1 |
Module: translate |
print_components(C) :- print_components(C,0).
Calls:
Name: print_components/2 |
Module: translate |
Called:
Name: print_components/1 |
Module: translate |
print_components([],Nr) :- write('Nr of components: '),write(Nr),nl.
print_components([component(Pred,Vars)|T],Nr) :- N1 is Nr+1,
write('Component: '), write(N1), write(' over '), write(Vars),nl,
print_bexpr(Pred),nl,
print_components(T,N1).
Calls:
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: nl |
|
Name: print_bexpr/1 |
Module: translate |
Name: write/1 |
|
Name: is/2 |
Called:
Name: print_components/1 |
Module: translate |
print_context(State) :- translate_context(State,Output), write(Output).
Calls:
Name: write/1 |
|
Name: translate_context/2 |
Module: translate |
print_csp_value(Val) :- pp_csp_value(Val,Atoms,[]), ajoin(Atoms,Text),
write(Text).
Calls:
Name: write/1 |
|
Name: ajoin/2 |
Module: foo_error |
Name: pp_csp_value/3 |
Module: translate |
Called:
Name: cspm_transition/3 |
Module: xtl_interface |
print_cspm_state(State) :- translate_cspm_state(State,T), write(T).
Calls:
Name: write/1 |
|
Name: translate_cspm_state/2 |
Module: translate |
print_defs_as_json :-
findall(json([name=string(Name), value=string(BS)]), (
bmachine:b_get_definition_with_pos(Name,expression,_DefPos,_Args,RawExpr,_Deps),
\+ dummy_def_body(Name,RawExpr),
transform_raw(RawExpr,Body),
translate_subst_or_bexpr(Body,BS)
), Defs),
Json = json([svg=string(''), definitions=array(Defs)]),
json_write_stream(Json).
Calls:
Name: json_write_stream/1 |
Module: foo_error |
Name: =/2 |
|
Name: findall/3 |
print_frozen_goal((A,B)) :- !, print_frozen_goal(A), write(','), print_frozen_goal(B).
print_frozen_goal(prolog:trig_nondif(_A,_B,R,_S)) :- !, frozen(R,G2), print_frozen_goal2(G2).
print_frozen_goal(G) :- print_frozen_goal2(G).
Calls:
Name: print_frozen_goal2/1 |
Module: translate |
Name: frozen/2 |
|
Name: ! |
|
Name: RECURSIVE_CALL/1 |
Module: translate |
Name: write/1 |
Called:
Name: print_frozen_info/1 |
Module: translate |
print_frozen_goal2(V) :- var(V),!, write(V).
print_frozen_goal2(true) :- !.
print_frozen_goal2((A,B)) :- !, print_frozen_goal2(A), write(','), print_frozen_goal2(B).
print_frozen_goal2(G) :- write(' :: '), tools_printing:print_term_summary(G).
Calls:
Name: print_term_summary/1 |
Module: tools_printing |
Name: write/1 |
|
Name: RECURSIVE_CALL/1 |
Module: translate |
Name: ! |
|
Name: var/1 |
Called:
Name: print_frozen_goal/1 |
Module: translate |
print_frozen_info(X) :- frozen(X,Goal), print_frozen_goal(Goal).
Calls:
Name: print_frozen_goal/1 |
Module: translate |
Name: frozen/2 |
Called:
Name: print_clpfd_variable/1 |
Module: translate |
Name: l_print_frozen_info/1 |
Module: translate |
print_indent(s(X)):- !,
write(' '),
print_indent(X).
print_indent(_).
Calls:
Name: RECURSIVE_CALL/1 |
Module: translate |
Name: write/1 |
|
Name: ! |
Called:
Name: print_bracket/3 |
Module: translate |
Name: nbp2/4 |
Module: translate |
Name: nested_print_bexpr2/2 |
Module: translate |
print_machine(M) :-
nl, translate_machine(M,Msg,true), put_codes(Msg,user_output), nl,
flush_output(user_output),!.
print_machine(M) :- add_internal_error('Printing failed: ',print_machine(M)).
Calls:
Name: add_internal_error/2 |
Module: foo_error |
Name: ! |
|
Name: flush_output/1 |
|
Name: nl |
|
Name: put_codes/2 |
Module: tools_files |
Name: translate_machine/3 |
Module: translate |
Called:
Name: check_machine/4 |
Module: bmachine_construction |
print_raw_bexpr(Raw) :- % a tool (not perfect) to print raw ASTs
transform_raw(Raw,TExpr),!,
print_bexpr_or_subst(TExpr).
Calls:
Name: print_bexpr_or_subst/1 |
Module: translate |
Name: ! |
|
Name: transform_raw/2 |
Module: translate |
Called:
Name: run_on_po/2 |
Module: disprover_test_runner |
Name: l_print_raw_bexpr/1 |
Module: translate |
| Module: translate |
print_raw_machine_terms(Var) :- var(Var), !,write('VAR !!'),nl.
print_raw_machine_terms([]) :- !.
print_raw_machine_terms([H|T]) :- !,
print_raw_machine_terms(H), write(' '),
print_raw_machine_terms(T).
print_raw_machine_terms(Term) :- raw_machine_term(Term,String,Sub),!,
format('~n~w ',[String]),
print_raw_machine_terms(Sub),nl.
print_raw_machine_terms(expression_definition(A,B,C,D)) :- !,
print_raw_machine_terms(predicate_definition(A,B,C,D)).
print_raw_machine_terms(substitution_definition(A,B,C,D)) :- !,
print_raw_machine_terms(predicate_definition(A,B,C,D)).
print_raw_machine_terms(predicate_definition(_,Name,Paras,RHS)) :-
Paras==[],!,
format('~n ~w == ',[Name]),
print_raw_machine_terms(RHS),nl.
print_raw_machine_terms(predicate_definition(_,Name,Paras,RHS)) :- !,
format('~n ~w(',[Name]),
print_raw_machine_terms_sep(Paras,','),
format(') == ',[]),
print_raw_machine_terms(RHS),nl.
print_raw_machine_terms(operation(_,Name,Return,Paras,RHS)) :- !,
format('~n ',[]),
(Return=[] -> true
; print_raw_machine_terms_sep(Return,','),
format(' <-- ',[])
),
print_raw_machine_terms(Name),
(Paras=[] -> true
; format(' (',[]),
print_raw_machine_terms_sep(Paras,','),
format(')',[])
),
format(' = ',[]),
print_raw_machine_terms(RHS),nl.
print_raw_machine_terms(Term) :- print_raw_bexpr(Term).
Calls:
Name: print_raw_bexpr/1 |
Module: translate |
Name: nl |
|
Name: RECURSIVE_CALL/1 |
Module: translate |
Name: format/2 |
|
| Module: translate | |
Name: true |
|
Name: =/2 |
|
Name: ->/3 |
|
Name: ! |
|
Name: ==/2 |
|
Name: raw_machine_term/3 |
Module: translate |
Name: write/1 |
|
Name: var/1 |
print_raw_machine_terms_sep([],_) :- !.
print_raw_machine_terms_sep([H],_) :- !,
print_raw_machine_terms(H).
print_raw_machine_terms_sep([H|T],Sep) :- !,
print_raw_machine_terms(H),write(Sep),print_raw_machine_terms_sep(T,Sep).
Calls:
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: write/1 |
|
| Module: translate | |
Name: ! |
Called:
| Module: translate |
print_span(Span) :- translate_span(Span,Atom), !, write(Atom).
print_span(S) :- print(span(S)).
Calls:
Name: print/1 |
|
Name: write/1 |
|
Name: ! |
|
Name: translate_span/2 |
Module: translate |
Called:
Name: print_enum_warning/8 |
Module: kernel_objects |
Name: print_trigger_var_info/1 |
Module: kernel_objects |
print_span_nl(Span) :- translate_span(Span,Atom), !,(Atom='' -> true ; write(Atom)),nl.
print_span_nl(S) :- print(span(S)),nl.
Calls:
Name: nl |
|
Name: print/1 |
|
Name: write/1 |
|
Name: true |
|
Name: =/2 |
|
Name: ->/3 |
|
Name: ! |
|
Name: translate_span/2 |
Module: translate |
Called:
Name: gen_enum_warning_wf/6 |
Module: kernel_objects |
print_state(State) :- b_state(State), !,print_bstate(State).
print_state(csp_and_b_root) :- csp_with_bz_mode, !,
write('(MAIN || B)').
print_state(csp_and_b(CSPState,BState)) :- csp_with_bz_mode, !,
print_bstate(BState), translate_cspm_state(CSPState,Text), write(Text).
print_state(CSPState) :- csp_mode,!,translate_cspm_state(CSPState,Text), write(Text).
print_state(State) :- animation_mode(xtl),!,translate_xtl_value(State,Text), write(Text).
print_state(State) :- write('*** Unknown state: '),print(State).
Calls:
Name: print/1 |
|
Name: write/1 |
|
Name: translate_xtl_value/2 |
Module: translate |
Name: ! |
|
Name: animation_mode/1 |
Module: specfile |
Name: translate_cspm_state/2 |
Module: translate |
Name: csp_mode/0 |
Module: specfile |
Name: print_bstate/1 |
Module: translate |
Name: csp_with_bz_mode/0 |
Module: specfile |
Name: b_state/1 |
Module: translate |
Called:
| Module: ltsmin | |
Name: next_action_aux/4 |
Module: ltsmin |
Name: get_successors_aux/4 |
Module: ltsmin |
Name: print_state_from_id/1 |
Module: refinement_checker |
print_subst(Stmt) :- translate_substitution(Stmt,T), write(T).
Calls:
Name: write/1 |
|
Name: translate_substitution/2 |
Module: translate |
Called:
Name: merge_parallels/2 |
Module: weakest_preconditions |
Name: cleanup_post_with_path/8 |
Module: b_ast_cleanup |
Name: merge_two_assignments/3 |
Module: b_ast_cleanup |
Name: print_wd_subst/1 |
Module: well_def_analyser |
| Module: b_expression_sharing | |
Name: print_bexpr_or_subst/1 |
Module: translate |
| Module: b_operation_guards | |
Name: cleanup_post/7 |
Module: b_ast_cleanup |
Name: b_execute_statement2/8 |
Module: b_interpreter |
print_unwrapped_bexpr_with_limit(Expr) :- print_unwrapped_bexpr_with_limit(Expr,200).
Calls:
| Module: translate |
Called:
| Module: translate |
print_unwrapped_bexpr_with_limit(Expr,Limit) :-
translate:print_bexpr_with_limit(b(Expr,pred,[]),Limit),nl.
Calls:
Name: nl |
|
Name: print_bexpr_with_limit/2 |
Module: translate |
Called:
| Module: translate |
print_value_variable(X) :- var(X), !, write(X).
print_value_variable(int(X)) :- write('int('), print_clpfd_variable(X), write(')').
print_value_variable(fd(X,T)) :- write('fd('), print_clpfd_variable(X), write(','), write(T),write(')').
print_value_variable(X) :- write(X).
Calls:
Name: write/1 |
|
Name: print_clpfd_variable/1 |
Module: translate |
Name: ! |
|
Name: var/1 |
ptf_seperator(L,', ') :- var(L),!.
ptf_seperator([],'') :- !.
ptf_seperator(_,', ').
Calls:
Name: ! |
|
Name: var/1 |
Called:
Name: pretty_type_fields/3 |
Module: translate |
quantified(general_sum,'SIGMA').
quantified(general_product,'PI').
quantified(quantified_union,'UNION').
quantified(quantified_intersection,'INTER').
quantified(lambda,X) :- atom_codes(X,[37]).
quantified(forall,'!').
quantified(exists,'#').
Calls:
Name: atom_codes/2 |
Called:
Name: quantified_in_mode/2 |
Module: translate |
quantified_in_mode(F,S) :-
quantified(F,S1), translate_in_mode(F,S1,S).
Calls:
Name: translate_in_mode/3 |
Module: translate |
Name: quantified/2 |
Module: translate |
Called:
| Module: translate | |
Name: pp_expr2/5 |
Module: translate |
| Module: translate |
raw_machine_term(machine(M),'',M).
raw_machine_term(generated(_,M),'',M).
raw_machine_term(machine_header(_,Name,_Params),Name,[]). % TO DO: treat Params
raw_machine_term(abstract_machine(_,_,Header,M),'MACHINE',[Header,M]).
raw_machine_term(properties(_,P),'PROPERTIES',P).
raw_machine_term(operations(_,P),'OPERATIONS',P).
raw_machine_term(definitions(_,P),'DEFINITIONS',P).
raw_machine_term(constants(_,P),'CONSTANTS',P).
raw_machine_term(variables(_,P),'VARIABLES',P).
raw_machine_term(invariant(_,P),'INVARIANT',P).
raw_machine_term(assertions(_,P),'ASSERTIONS',P).
raw_machine_term(constraints(_,P),'CONSTRAINTS',P).
raw_machine_term(sets(_,P),'SETS',P).
raw_machine_term(deferred_set(_,P),P,[]). % TO DO: enumerated_set ...
Called:
| Module: translate |
real_set_mapping(A,B) :- unicode_mode, unicode_translation(A,B),!.
real_set_mapping(X,X). % TO DO: unicode_mode,...
Calls:
Name: ! |
|
Name: unicode_translation/2 |
Module: translate |
Name: unicode_mode |
dynamic predicate |
Called:
Name: pretty_type2/4 |
Module: translate |
relevant_section(deferred_sets/_).
relevant_section(enumerated_elements/_).
relevant_section(parameters/_).
remove_already_typed_ids(_TExpr,Ids,Ids) :-
get_preference(translate_force_all_typing_infos,true),!.
remove_already_typed_ids(TExpr,Ids,UntypedIds) :-
get_texpr_expr(TExpr,Expr),!,
remove_already_typed_ids2(Expr,Ids,UntypedIds).
remove_already_typed_ids(TExpr,Ids,Res) :-
add_internal_error('Not a typed expression: ',remove_already_typed_ids(TExpr,Ids,_)),
Res=Ids.
Calls:
Name: =/2 |
|
Name: add_internal_error/2 |
Module: foo_error |
| Module: translate | |
Name: ! |
|
Name: get_texpr_expr/2 |
Module: foo_error |
Name: get_preference/2 |
Module: preferences |
Called:
| Module: translate | |
Name: add_typing_predicates/3 |
Module: translate |
remove_already_typed_ids2(conjunct(A,B),Ids,UntypedIds) :- !,
remove_already_typed_ids(A,Ids,I1),
remove_already_typed_ids(B,I1,UntypedIds).
remove_already_typed_ids2(lazy_let_pred(_,_,A),Ids,UntypedIds) :- !,
remove_already_typed_ids(A,Ids,UntypedIds). % TO DO: check for variable clases with lazy_let ids ???
remove_already_typed_ids2(Expr,Ids,UntypedIds) :-
is_typing_predicate(Expr,Id),
create_texpr(identifier(Id),_,_,TId),
select(TId,Ids,UntypedIds),!.
remove_already_typed_ids2(_,Ids,Ids).
Calls:
Name: ! |
|
Name: select/3 |
Module: foo_error |
Name: create_texpr/4 |
Module: foo_error |
Name: is_typing_predicate/2 |
Module: translate |
| Module: translate |
Called:
| Module: translate |
remove_b_portray_hook :-
retractall( user:portray(_) ).
Calls:
Name: retractall/1 |
remove_duplicate_predicates([],_Old,[]).
remove_duplicate_predicates([Pred|Prest],Old,Result) :-
(is_duplicate_predicate(Pred,Old) -> Result = Rest ; Result = [Pred|Rest]),
remove_duplicate_predicates(Prest,Old,Rest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: =/2 |
|
Name: is_duplicate_predicate/2 |
Module: translate |
Name: ->/3 |
Called:
Name: add_typing_predicates/3 |
Module: translate |
renaming_csp_op(procRenaming(RenameList,X,_SrcSpan),X,RenameList,'[[',']]').
renaming_csp_op(eprocRenaming(RenameList,X,_SrcSpan),X,RenameList,'[[',']]').
Called:
Name: pp_csp_process/3 |
Module: translate |
render_b_expr(b(function(Fun,Paras),_,_)) --> !, % ensure we print both function and paras at least partially
{translate_bexpr_for_call_stack(Fun,FS)}, [FS],['('],
{translate_bexpr_for_call_stack(Paras,PS)},[PS], [')'].
render_b_expr(b(assertion_expression(Pred,Msg,b(value(_),string,_)),_,_)) --> !,
% Body is not source of error; probably better to use special call stack entry for assertion_expression
['ASSERT '],[Msg],['\n '],
{translate_bexpr_for_call_stack(Pred,PS)}, [PS].
render_b_expr(CPred) --> {translate_bexpr_for_call_stack(CPred,PS)}, [PS].
Calls:
Name: =/2 |
|
| Module: translate | |
Name: ! |
Called:
Name: render_call/4 |
Module: translate |
render_call(definition_call(Name,Pos),Opts) --> !,
['within DEFINITION call '],[Name],
render_span(Pos,Opts).
render_call(operation_call(Op,Paras,Pos),Opts) --> !,
translate_b_operation_call(Op,Paras), % TODO: limit size?
render_span(Pos,Opts).
render_call(using_state(Name,State),_Opts) --> !,
[Name], [' with state: '],
{get_cs_limit(Limit),translate_bstate_limited(State,Limit,Str)},
[Str].
render_call(after_event(OpTerm),_Opts) --> !,
['after event: '],
{get_cs_limit(Limit),translate_event_with_limit(OpTerm,Limit,Str)},
[Str].
render_call(function_call(Fun,Paras,Pos),Opts) --> !,
render_function_call(Fun,Paras),
render_span(Pos,Opts).
render_call(b_operator_call(OP,Paras,Pos),Opts) --> !,
render_operator_arg(b_operator(OP,Paras)),
render_span(Pos,Opts).
render_call(id_equality_evaluation(ID,Kind,Pos),Opts) --> !,
['equality for '],[Kind],[' '],[ID],
render_span(Pos,Opts).
render_call(b_operator_arg_evaluation(OP,PosNr,Args,Pos),Opts) --> !,
['arg '],[PosNr],[' of '],
render_operator_arg(b_operator(OP,Args)),
render_span(Pos,Opts).
render_call(external_call(Name,Paras,Pos),Opts) --> !,
['external call '], [Name],['('],
{get_cs_limit(Limit),translate_bvalues_with_limit(Paras,Limit,PS)},[PS], [')'],
render_span(Pos,Opts).
render_call(prob_command_context(Name,Pos),Opts) --> !,
['checking '], render_prob_command(Name),
render_span(Pos,Opts).
render_call(quantifier_call(comprehension_set,ParaNames,ParaValues,Pos),Opts) --> % special case for lambda
{nth1(LPos,ParaNames,LambdaRes,RestParaNames),
is_lambda_result_name(LambdaRes,_),
nth1(LPos,ParaValues,LambdaVal,RestParaValues)},!, % we have found '_lambda_res_' amongst paras
render_quantifier(lambda), ['('],
render_paras(RestParaNames,RestParaValues),
['|'], render_para_val(LambdaVal),
[')'],
render_span(Pos,Opts).
render_call(quantifier_call(Kind,ParaNames,ParaValues,Pos),Opts) --> !,
render_quantifier(Kind), ['('],
render_paras(ParaNames,ParaValues), [')'],
render_span(Pos,Opts).
render_call(top_level_call(SpanPred),Opts) -->
render_call(SpanPred,Opts).
render_call(b_expr_call(Context,Expr),Opts) --> !,
[Context],[': '],
render_b_expr(Expr),
render_span(Expr,Opts).
render_call(span_predicate(Pred,LS,S),Opts) --> % Pred can also be an expression like function/2
% infos could contain was(extended_expr(Op)); special case for: assertion_expression
{Pred=b(_,_,Pos),
b_compiler:b_compile(Pred,[],LS,S,CPred,no_wf_available) % inline actual parameters
},
!,
render_b_expr(CPred),
render_function_name(Pred), % try show function name from uncompiled Expr
render_span(Pos,Opts).
render_call(Other,_) --> [Other].
Calls:
Name: =/2 |
|
Name: render_span/4 |
Module: translate |
Name: render_function_name/3 |
Module: translate |
Name: render_b_expr/3 |
Module: translate |
Name: ! |
|
Name: b_compile/6 |
Module: b_compiler |
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: render_paras/4 |
Module: translate |
Name: render_quantifier/3 |
Module: translate |
Name: render_para_val/3 |
Module: translate |
Name: nth1/4 |
Module: foo_error |
Name: is_lambda_result_name/2 |
Module: translate |
Name: render_prob_command/3 |
Module: translate |
| Module: translate | |
Name: get_cs_limit/1 |
Module: translate |
Name: render_operator_arg/3 |
Module: translate |
Name: render_function_call/4 |
Module: translate |
| Module: translate | |
| Module: translate | |
| Module: translate |
Called:
Name: render_call_stack/5 |
Module: translate |
render_call_short(after_event(OpTerm,_),R) :- !,R=OpTerm.
render_call_short(using_state(Name,_),R) :- !,R=Name.
render_call_short(definition_call(Name,_,_),R) :- !,R=Name.
render_call_short(operation_call(Name,_,_),R) :- !,R=Name.
render_call_short(function_call(Name,_,_),R) :- !,R=Name.
render_call_short(b_operator_call(Name,_,_),R) :- !,R=Name.
render_call_short(b_operator_arg_evaluation(Name,_,_,_),R) :- !,R=Name.
render_call_short(external_call(Name,_,_),R) :- !,R=Name.
render_call_short(prob_command_context(Name,_),R) :- !,R=Name.
render_call_short(quantifier_call(Kind,_,_,_),R) :- !, R=Kind.
render_call_short(top_level_call(_),R) :- !, R=top_level.
render_call_short(E,F) :- functor(E,F,_).
Calls:
Name: functor/3 |
|
Name: =/2 |
|
Name: ! |
Called:
Name: indent_cs/1 |
Module: kernel_waitflags |
render_call_stack([],_,_) --> [].
render_call_stack([H],Nr,Opts) --> !,
render_nr(Nr,H,_,Opts), render_call(H,Opts).
render_call_stack([H|T],Nr,Opts) -->
render_nr(Nr,H,Nr1,Opts),
render_call(H,Opts),
render_seperator(Opts),
render_call_stack(T,Nr1,Opts).
Calls:
Name: RECURSIVE_CALL/5 |
Module: translate |
Name: render_seperator/3 |
Module: translate |
Name: render_call/4 |
Module: translate |
Name: render_nr/6 |
Module: translate |
Name: ! |
|
Name: =/2 |
render_function_call(Fun,Paras) -->
{(atomic(Fun) -> FS=Fun ; translate_bexpr_for_call_stack(Fun,FS))}, % memoization will only register atomic name
[FS],['('], render_para_val(Paras), [')'].
Calls:
Name: =/2 |
|
Name: render_para_val/3 |
Module: translate |
| Module: translate | |
Name: atomic/1 |
|
Name: ->/3 |
Called:
Name: render_call/4 |
Module: translate |
render_function_name(b(function(Fun,_),_,_)) --> {try_get_identifier(Fun,FID)},!,
% TODO: other means of extracting name; maybe we should render anything that is not a value?
['\n (Function applied: '], [FID], [')'].
render_function_name(b(_,_,Infos)) --> {member(was(extended_expr(OpID)),Infos)},!,
['\n (Theory operator applied: '], [OpID], [')'].
render_function_name(_) --> [].
Calls:
Name: =/2 |
|
Name: ! |
|
Name: member/2 |
|
Name: try_get_identifier/2 |
Module: translate |
Called:
Name: render_call/4 |
Module: translate |
render_negation_context(positive) --> !, ['one solution'].
render_negation_context(negative) --> !, ['no solution'].
render_negation_context(all_solutions) --> !,['all solutions'].
render_negation_context(C) --> [C].
Calls:
Name: =/2 |
|
Name: ! |
Called:
Name: render_quantifier/3 |
Module: translate |
render_nr(Pos,H,Pos1,Opts) --> {member(detailed,Opts)},!, ['\n '], render_pos_nr(Pos,H,Pos1).
render_nr(Pos,_,Pos,_) --> [].
Calls:
Name: =/2 |
|
Name: render_pos_nr/5 |
Module: translate |
Name: ! |
|
Name: member/2 |
Called:
Name: render_call_stack/5 |
Module: translate |
render_operator_arg(Var) --> {var(Var)},!,['_VARIABLE_']. % should not happen
render_operator_arg(b_operator(OP,[Arg1,Arg2])) -->
{binary_infix_in_mode(OP,Symbol,_,_)},!,
{(unicode_translation(OP,Unicode) -> FOP=Unicode ; FOP=Symbol)}, %TODO: add parentheses if necessary
render_operator_arg(Arg1),
[' '],[FOP], [' '],
render_operator_arg(Arg2).
render_operator_arg(b_operator(OP,Args)) --> !,
{(unicode_translation(OP,Unicode) -> FOP=Unicode ; function_like(OP,FOP) -> true ; FOP=OP)},
[FOP], ['('],
render_operator_args(Args),
[')'].
render_operator_arg(bind(Name,Value)) --> !,
[Name], ['='],
render_operator_arg(Value).
render_operator_arg(identifier(ID)) --> !, [ID].
render_operator_arg(Val) --> render_para_val(Val).
Calls:
Name: render_para_val/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
|
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: render_operator_args/3 |
Module: translate |
Name: true |
|
Name: function_like/2 |
Module: translate |
Name: ->/3 |
|
Name: unicode_translation/2 |
Module: translate |
Name: binary_infix_in_mode/4 |
Module: translate |
Name: var/1 |
Called:
Name: render_operator_args/3 |
Module: translate |
Name: render_call/4 |
Module: translate |
render_operator_args([]) --> !, [].
render_operator_args([H]) --> !, render_operator_arg(H).
render_operator_args([H|T]) --> !, render_operator_arg(H), [','], render_operator_args(T).
render_operator_args(A) --> {add_internal_error('Not a list: ',A)}, ['???'].
Calls:
Name: =/2 |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: render_operator_arg/3 |
Module: translate |
Name: ! |
Called:
Name: render_operator_arg/3 |
Module: translate |
render_para_name(b(identifier(ID),_,_)) --> !, {translated_identifier(ID,TID)},[TID].
render_para_name(ID) --> {translated_identifier(ID,TID)},[TID].
Calls:
Name: =/2 |
|
Name: translated_identifier/2 |
Module: translate |
Name: ! |
Called:
Name: render_paras/4 |
Module: translate |
render_para_val(Val) --> {get_cs_limit(Limit),translate_bvalue_with_limit(Val,Limit,VS)}, [VS].
Calls:
Name: =/2 |
|
| Module: translate | |
Name: get_cs_limit/1 |
Module: translate |
Called:
Name: render_operator_arg/3 |
Module: translate |
Name: render_function_call/4 |
Module: translate |
Name: render_paras/4 |
Module: translate |
Name: render_call/4 |
Module: translate |
render_paras([],[]) --> !, [].
render_paras([],_Vals) --> ['...?...']. % should not happen
render_paras([Name],[Val]) --> !, render_para_name(Name), ['='], render_para_val(Val).
render_paras([Name|TN],[Val|TV]) --> !,
render_para_name(Name), ['='], render_para_val(Val), [','],
render_paras(TN,TV).
render_paras([N|Names],[]) --> !, render_para_name(N), render_paras(Names,[]). % value list can be empty
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: render_para_name/3 |
Module: translate |
Name: ! |
|
Name: =/2 |
|
Name: render_para_val/3 |
Module: translate |
Called:
Name: render_call/4 |
Module: translate |
render_pos_nr(Pos,definition_call(_,_),Pos) --> !,
[' ']. % definition calls are virtual and can appear multiple times for different entries in the call stack
render_pos_nr(Pos,_,Pos1) --> [Pos] , {Pos1 is Pos+1}, [': '].
Calls:
Name: =/2 |
|
Name: is/2 |
|
Name: ! |
Called:
Name: render_nr/6 |
Module: translate |
render_pred_nr(0) --> !. % 0 is special value to indicate we have no number/id within outer kind
render_pred_nr(Nr) --> {number(Nr)},!,['# '],[Nr],[' '].
render_pred_nr('') --> !.
render_pred_nr(AtomId) --> ['for '], [AtomId],[' '].
Calls:
Name: =/2 |
|
Name: ! |
|
Name: number/1 |
Called:
Name: render_prob_command/3 |
Module: translate |
render_prob_command(check_pred_command(PredKind,Arg)) --> !, ['predicate '], render_pred_nr(Arg), ['of '],[PredKind].
render_prob_command(eval_expr_command(Kind,Arg)) --> !, ['expression '], render_pred_nr(Arg), ['of '],[Kind].
render_prob_command(trace_replay(OpName,FromId)) --> !, ['Trace replay predicate for '],[OpName], [' from '],[FromId].
render_prob_command(Cmd) --> [Cmd].
Calls:
Name: =/2 |
|
Name: ! |
|
Name: render_pred_nr/3 |
Module: translate |
Called:
Name: render_call/4 |
Module: translate |
render_quantifier(lambda) --> !, {unicode_translation(lambda,Symbol)},[Symbol]. % ['{|}'].
render_quantifier(comprehension_set) --> !, ['{|}'].
render_quantifier(comprehension_set(NegationContext)) --> !,
render_negation_context(NegationContext), [' {|}'].
render_quantifier(exists) --> !, {unicode_translation(exists,Symbol)},[Symbol].
render_quantifier(let_quantifier) --> !, ['LET'].
render_quantifier(optimize) --> !, ['#optimize'].
render_quantifier(forall) --> !, {unicode_translation(forall,Symbol)},[Symbol].
render_quantifier(not(Q)) --> !, {unicode_translation(negation,Symbol)}, % not(exists)
[Symbol, '('], render_quantifier(Q), [')'].
render_quantifier(Q) --> !, [Q].
Calls:
Name: =/2 |
|
Name: ! |
|
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: unicode_translation/2 |
Module: translate |
| Module: translate |
Called:
Name: render_call/4 |
Module: translate |
render_seperator(Opts) --> {member(detailed,Opts)},!. % we put newlines in render_nr
render_seperator(_Opts) -->
{call_stack_arrow_atom_symbol(Symbol)}, [Symbol].
Calls:
Name: =/2 |
|
| Module: translate | |
Name: ! |
|
Name: member/2 |
Called:
Name: render_call_stack/5 |
Module: translate |
render_span(Span,Opts) --> {member(detailed,Opts),translate_span(Span,Atom), Atom \= ''},!,
['\n '], [Atom],
({member(additional_descr,Opts),translate_additional_description(Span,Descr)}
-> [' within ',Descr]
; []).
render_span(_,_) --> [].
Calls:
Name: =/2 |
|
| Module: translate | |
Name: member/2 |
|
Name: ->/3 |
|
Name: ! |
|
Name: \=/2 |
|
Name: translate_span/2 |
Module: translate |
Called:
Name: render_call/4 |
Module: translate |
reset_pp :- retractall(comment_level(_)).
Calls:
Name: retractall/1 |
Called:
Name: pp_expr_with_limit/3 |
Module: translate |
| Module: translate |
reset_print_type_infos([CHNG1,CHNG2]) :-
reset_temporary_preference(translate_force_all_typing_infos,CHNG1),
reset_temporary_preference(translate_print_typing_infos,CHNG2).
Calls:
Name: reset_temporary_preference/2 |
Module: foo_error |
Called:
Name: list/4 |
Module: disprover_test_runner_cli.pl |
| Module: translate | |
| Module: translate |
reset_suppress_rodin_positions(CHNG) :-
reset_temporary_preference(translate_suppress_rodin_positions_flag,CHNG).
Calls:
Name: reset_temporary_preference/2 |
Module: foo_error |
Called:
| Module: prob2_interface | |
Name: get_top_level_formulas/1 |
Module: prob2_interface |
| Module: prob2_interface |
reset_translate :- retractall(bugly_scramble_id_cache(_,_)), retractall(non_det_constants(_,_)).
Calls:
Name: retractall/1 |
return_csp_closure_value(closure(S),List) :- pp_csp_value_l1(S,List).
return_csp_closure_value(setValue(S),List) :- pp_csp_value_l1(S,List).
Calls:
Name: pp_csp_value_l1/2 |
Module: translate |
Called:
Name: reduce_channel_set/3 |
Module: refinement_checker |
Name: get_refused_set3/3 |
Module: refinement_checker |
right_set_bracket --> {latex_mode},!, "\\} ".
right_set_bracket --> "}".
section_pred_over_lines(N,Title,Pred) -->
({get_eventb_default_label(Title,Lbl)} -> [] ; {Lbl='@pred'}),
pred_over_lines(N,Lbl,Pred).
Calls:
Name: pred_over_lines/5 |
Module: translate |
Name: =/2 |
|
| Module: translate | |
Name: ->/3 |
Called:
Name: mpart_typing/6 |
Module: translate |
select_membership([],TID,[],atom_string(TS)) :- % atom_string used as wrapper for pp_expr2
get_texpr_type(TID,Type), pretty_type(Type,TS).
select_membership([Pred|Rest],TID,Rest,Set) :-
Pred = b(member(TID2,Set),pred,_),
same_id(TID2,TID,_),!.
select_membership([Pred|Rest],TID,Rest,Set) :-
Pred = b(equal(TID2,EqValue),pred,_),
same_id(TID2,TID,_),!, get_texpr_type(TID,Type),
Set = b(set_extension([EqValue]),set(Type),[]).
select_membership([Pred|T],TID,[Pred|Rest],Set) :-
select_membership(T,TID,Rest,Set).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: =/2 |
|
Name: get_texpr_type/2 |
Module: foo_error |
Name: ! |
|
Name: same_id/3 |
Module: foo_error |
Name: pretty_type/2 |
Module: translate |
Called:
Name: pp_comprehension_set5/7 |
Module: translate |
set_atelierb_mode(Mode) :- asserta(atelierb_mode(Mode)).
Calls:
Name: asserta/1 |
Called:
| Module: prob_cli | |
Name: assert_atelierb_mode/0 |
Module: alloy2b |
Name: set_translation_mode/1 |
Module: translate |
set_brackets(X,Y) :- latex_mode,!,X='\\{', Y='\\}'.
set_brackets('{','}').
Calls:
Name: =/2 |
|
Name: ! |
|
Name: latex_mode |
dynamic predicate |
Called:
Name: pp_expr2/5 |
Module: translate |
Name: pp_value/4 |
Module: translate |
set_force_eventb_mode :- assertz(force_eventb_rodin_mode).
Calls:
Name: assertz/1 |
set_language_mode(csp_and(Lang)) :-
!,
set_animation_mode(csp_and_b),
(Lang == b -> true ; set_animation_minor_mode(Lang)).
set_language_mode(csp) :- !, set_animation_mode(csp).
set_language_mode(xtl) :- !, set_animation_mode(xtl).
set_language_mode(b) :- !, set_animation_mode(b).
set_language_mode(Lang) :-
set_animation_mode(b),
set_animation_minor_mode(Lang).
Calls:
| Module: specfile | |
Name: set_animation_mode/1 |
Module: specfile |
Name: ! |
|
Name: true |
|
Name: ==/2 |
|
Name: ->/3 |
Called:
Name: with_language_mode/2 |
Module: translate |
set_latex_mode :- assertz(latex_mode).
Calls:
Name: assertz/1 |
Called:
Name: set_translation_mode/1 |
Module: translate |
set_pref_used(Defs) :- member(definition_decl(Name,_,_,[],_,_),Defs),
(is_set_pref_def_name(Name,_,_) -> true).
Calls:
Name: true |
|
Name: is_set_pref_def_name/3 |
Module: translate |
Name: ->/2 |
|
Name: member/2 |
Called:
Name: translate_mpart2/5 |
Module: translate |
set_print_type_infos(none) :- !,
set_preference(translate_force_all_typing_infos,false),
set_preference(translate_print_typing_infos,false).
set_print_type_infos(needed) :- !,
set_preference(translate_force_all_typing_infos,false),
set_preference(translate_print_typing_infos,true).
set_print_type_infos(all) :- !,
set_preference(translate_force_all_typing_infos,true),
set_preference(translate_print_typing_infos,true).
set_print_type_infos(Err) :-
add_internal_error('Illegal typing setting: ',set_print_type_infos(Err)).
Calls:
Name: add_internal_error/2 |
Module: foo_error |
Name: set_preference/2 |
Module: preferences |
Name: ! |
Called:
| Module: translate | |
| Module: translate | |
Name: list/4 |
Module: disprover_test_runner_cli.pl |
| Module: translate | |
| Module: atelierb_provers_interface |
set_print_type_infos(Setting,[CHNG1,CHNG2]) :-
type_info_setting(Setting,Value1,Value2),!,
temporary_set_preference(translate_force_all_typing_infos,Value1,CHNG1),
temporary_set_preference(translate_print_typing_infos,Value2,CHNG2).
set_print_type_infos(Err,_) :-
add_internal_error('Illegal typing setting: ',set_print_type_infos(Err,_)),fail.
Calls:
Name: fail |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: temporary_set_preference/3 |
Module: foo_error |
Name: ! |
|
Name: type_info_setting/3 |
Module: translate |
Called:
| Module: translate | |
| Module: translate | |
Name: list/4 |
Module: disprover_test_runner_cli.pl |
| Module: translate | |
| Module: atelierb_provers_interface |
set_suppress_rodin_positions(Value,CHNG) :-
temporary_set_preference(translate_suppress_rodin_positions_flag,Value,CHNG).
Calls:
Name: temporary_set_preference/3 |
Module: foo_error |
Description:
print_message(setting_constants(ConstID)),%%
set_translation_constants(_) :- clear_translation_constants,
get_preference(dot_print_use_constants,false),!.
set_translation_constants(ConstID) :- var(ConstID),!,
add_error(set_translation_constants,'Variable used as ConstID: ',ConstID).
set_translation_constants(ConstID) :-
state_space:visited_expression(ConstID,concrete_constants(ConstantsStore)),!,
%% print_message(setting_constants(ConstID)),
(treat_constants(ConstantsStore) -> true ; print_message(fail)).
set_translation_constants(ConstID) :-
add_error(set_translation_constants,'Unknown ConstID: ',ConstID).
Calls:
Name: add_error/3 |
Module: foo_error |
Name: print_message/1 |
Module: foo_error |
Name: true |
|
Name: treat_constants/1 |
Module: translate |
Name: ->/3 |
|
Name: ! |
|
Name: visited_expression/2 |
Module: state_space |
Name: var/1 |
|
Name: get_preference/2 |
Module: preferences |
| Module: translate |
Called:
Name: try_pp_b_state/4 |
Module: translate |
| Module: translate |
Description:
print_message(setting_translation_constants(ConstID)),
set_translation_context(const_and_vars(ConstID,_)) :- !,
%% print_message(setting_translation_constants(ConstID)),
set_translation_constants(ConstID).
set_translation_context(expanded_const_and_vars(ConstID,_,_,_)) :- !,
set_translation_constants(ConstID).
set_translation_context(_).
Calls:
| Module: translate | |
Name: ! |
set_translation_mode(ascii) :- !, retractall(unicode_mode), retractall(latex_mode), retractall(atelierb_mode(_)).
set_translation_mode(unicode) :- !, set_unicode_mode.
set_translation_mode(latex) :- !, set_latex_mode.
set_translation_mode(atelierb) :- !, set_atelierb_mode(native).
set_translation_mode(atelierb_pp) :- !, set_atelierb_mode(prover(pp)). % translation for PP/ML prover
set_translation_mode(atelierb_ml) :- !, set_atelierb_mode(prover(ml)).
set_translation_mode(Mode) :- add_internal_error('Illegal mode:',set_translation_mode(Mode)).
Calls:
Name: add_internal_error/2 |
Module: foo_error |
Name: set_atelierb_mode/1 |
Module: translate |
Name: ! |
|
Name: set_latex_mode/0 |
Module: translate |
Name: set_unicode_mode/0 |
Module: translate |
Name: retractall/1 |
Called:
Name: translate_bexpr_typed/2 |
Module: banditfuzz |
Name: report_ast/2 |
Module: banditfuzz |
Name: with_translation_mode/2 |
Module: translate |
Name: store_benchmark/3 |
Module: banditfuzz |
set_unicode_mode :- assertz(unicode_mode).
Calls:
Name: assertz/1 |
Called:
Name: to_string_aux/3 |
Module: kernel_strings |
Name: list/4 |
Module: disprover_test_runner_cli.pl |
| Module: visb_visualiser | |
| Module: ltl_tools | |
| Module: unsat_cores | |
| Module: state_space_reduction | |
| Module: unsat_cores | |
| Module: bmachine | |
Name: temp_set_prefs/1 |
Module: bvisual |
| Module: mcdc_coverage | |
| Module: prob_cli | |
Name: translate_call_stack/2 |
Module: translate |
Name: to_string_aux_typed/4 |
Module: kernel_strings |
Name: set_translation_mode/1 |
Module: translate |
set_up_limit_reached(_,Neg,_) :- Neg<0,!. % negative number means unlimited
set_up_limit_reached(_,0,LimitReached) :- !, LimitReached = limit_reached.
set_up_limit_reached(List,Limit,LimitReached) :-
block_set_up_limit_reached(List,Limit,LimitReached).
Calls:
| Module: translate | |
Name: =/2 |
|
Name: ! |
|
Name: </2 |
Called:
| Module: translate | |
Name: pp_value/3 |
Module: translate |
| Module: translate | |
| Module: translate | |
| Module: translate | |
Name: pp_expr_with_limit/3 |
Module: translate |
setup_cst_functor('$setup_constants',"SETUP_CONSTANTS").
setup_cst_functor('$partial_setup_constants',"PARTIAL_SETUP_CONSTANTS").
Called:
| Module: translate |
sharing_csp_op(esharing(CList,X,Y,_SrcSpan),X,CList,Y,' [|','|] ').
sharing_csp_op(sharing(CList,X,Y,_SrcSpan),X,CList,Y,' [|','|] ').
sharing_csp_op(lParallel(LinkList,X,Y,_Span),X,LinkList,Y,' [','] ').
sharing_csp_op(elinkParallel(LinkList,X,Y,_Span),X,LinkList,Y,' [','] ').
sharing_csp_op(exception(CList,X,Y,_SrcSpan),X,CList,Y,' [|','|> ').
sharing_csp_op(eexception(CList,X,Y,_SrcSpan),X,CList,Y,' [|','|> ').
Called:
Name: pp_csp_process/3 |
Module: translate |
show_assignments([],[]) --> !.
show_assignments([Lhs|Lrest],[Val|Vrest]) -->
" ",pp_expr(Lhs,_,_LimitReached), " := ", pp_value(Val), "\n",
show_assignments(Lrest,Vrest).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: =/2 |
|
Name: pp_value/3 |
Module: translate |
Name: pp_expr/5 |
Module: translate |
Name: ! |
Called:
Name: explain_event_step/3 |
Module: translate |
show_def_body(integer(_,_)).
show_def_body(boolean_true(_)).
show_def_body(boolean_false(_)).
Called:
Name: translate_def/3 |
Module: translate |
show_parameter_value(P,V) -->
" ",pp_expr(P,_,_LR)," = ",pp_value(V),"\n".
Calls:
Name: =/2 |
|
Name: pp_value/3 |
Module: translate |
Name: pp_expr/5 |
Module: translate |
Called:
Name: show_parameter_values/4 |
Module: translate |
show_parameter_values([],[]) --> !.
show_parameter_values([P|Prest],[V|Vrest]) -->
show_parameter_value(P,V),
show_parameter_values(Prest,Vrest).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: show_parameter_value/4 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: explain_event_step4/4 |
Module: translate |
simple_expr(BExpr) :-
syntaxtraversion(BExpr,Expr,_Type,_Infos,Subs,_Names),
Subs=[],
(Expr=value(V),nonvar(V), V=closure(_,_,_) -> fail % closure value probably not simple; TODO: check for interval
; true).
Calls:
Name: true |
|
Name: fail |
|
Name: =/2 |
|
Name: nonvar/1 |
|
Name: ->/3 |
|
Name: syntaxtraversion/6 |
Module: foo_error |
size_is_in_set_limit(Size) :- get_preference(expand_avl_upto,Max),
(Max<0 -> true /* no limit */
; Size =< Max).
Calls:
Name: =</2 |
|
Name: true |
|
Name: </2 |
|
Name: ->/3 |
|
Name: get_preference/2 |
Module: preferences |
Called:
| Module: translate | |
Name: pp_value/4 |
Module: translate |
Name: pp_closure_value/6 |
Module: translate |
sort_tla_fields([],_,[],[]).
sort_tla_fields([Field|RFields],ValueFields,RFieldTypes,ResultValueFields) :-
( Field=field(Name,Type) -> true
; Field= opt(Name,Type) -> true),
( selectchk(field(Name,Value),ValueFields,RestValueFields),
field_value_present(Field,Value,Result) ->
% Found the field in the record value
RFieldTypes = [field(Name,Type) |RestFields],
ResultValueFields = [field(Name,Result)|RestValues],
sort_tla_fields(RFields,RestValueFields,RestFields,RestValues)
;
% didn't found the field in the value -> igore
sort_tla_fields(RFields,ValueFields,RFieldTypes,ResultValueFields)
).
Calls:
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: =/2 |
|
Name: field_value_present/3 |
Module: translate |
Name: selectchk/3 |
Module: foo_error |
Name: ->/3 |
|
Name: true |
|
Name: ->/2 |
Called:
Name: pp_tla_value/4 |
Module: translate |
special_binary_op(member(LHS,RHS),LHS,RHS,member).
special_binary_op(not_member(LHS,RHS),LHS,RHS,not_member).
special_binary_op(equal(LHS,RHS),LHS,RHS,equal).
special_binary_op(not_equal(LHS,RHS),LHS,RHS,not_equal).
special_binary_op(subset(LHS,RHS),LHS,RHS,subset).
special_binary_op(subset_strict(LHS,RHS),LHS,RHS,subset_strict).
Called:
| Module: translate |
split_calls([],[]).
split_calls([Call|T],NewCalls) :- nop_call(Call),!, %write(nop(Call)),nl,
split_calls(T,NewCalls).
split_calls([Call|T],NewCalls) :-
get_call_stack_span(Call,Span),!,
NewCalls = [Call|New2],
extract_def_calls(Span,New2,ST),
split_calls(T,ST).
split_calls([Call|T],[Call|ST]) :-
split_calls(T,ST).
Calls:
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: extract_def_calls/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
|
Name: get_call_stack_span/2 |
Module: translate |
Name: nop_call/1 |
Module: translate |
Called:
Name: translate_call_stack/2 |
Module: translate |
split_over_lines([],_) --> !.
split_over_lines([S|Rest],Symbol) --> !,
indention_level(I1,I2),{atom_codes(Symbol,X),length(X,N),I2 is I1+N+1},
translate_subst_check(S),
split_over_lines2(Rest,Symbol,I1,I2).
split_over_lines(S,Symbol) --> {add_error(split_over_lines,'Illegal argument: ',Symbol:S)}.
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: split_over_lines2/6 |
Module: translate |
Name: translate_subst_check/3 |
Module: translate |
Name: is/2 |
|
Name: length/2 |
|
Name: atom_codes/2 |
|
Name: indention_level/4 |
Module: translate |
Name: ! |
Called:
Name: translate_subst2/3 |
Module: translate |
split_over_lines2([],_,_,_) --> !.
split_over_lines2([S|Rest],Symbol,I1,I2) -->
indention_level(_,I1), indent(Symbol),
indention_level(_,I2), translate_subst(S),
split_over_lines2(Rest,Symbol,I1,I2).
Calls:
Name: RECURSIVE_CALL/6 |
Module: translate |
Name: translate_subst/3 |
Module: translate |
Name: indention_level/4 |
Module: translate |
Name: indent/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: split_over_lines/4 |
Module: translate |
standard_library_required(Defs,Library) :-
member(Decl,Defs),
definition_decl_from_library(Decl,Library).
Calls:
| Module: translate | |
Name: member/2 |
Called:
Name: translate_mpart2/5 |
Module: translate |
status_string(ordinary,'').
status_string(anticipated(_),'ANTICIPATED ').
status_string(convergent(_),'CONVERGENT ').
Called:
Name: insert_status/3 |
Module: translate |
string_end_symbol --> {latex_mode},!, "''}".
string_end_symbol --> pp_colour_code(reset), """".
string_start_symbol --> {latex_mode},!, "\\textnormal{``".
string_start_symbol --> pp_colour_code(blue), """".
strip_code(46,[0'_, 0'_ |T],T). % replace dot . by two underscores
strip_code(36,[946|T],T) :- T \= [48]. % replace dollar $ by beta unless it is $0 at the end
strip_code(92,[950|T],T). % replace dollar by zeta; probably from Zed
Calls:
Name: \=/2 |
Called:
| Module: translate |
strip_illegal_id_codes([0'_ | T ],Change,[946 | TR]) :- !, Change=true, strip_illegal_id_codes(T,_,TR).
strip_illegal_id_codes(Codes,Change,Res) :- strip_illegal_id_codes2(Codes,Change,Res).
Calls:
| Module: translate | |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
| Module: translate |
strip_illegal_id_codes2([],_,[]).
strip_illegal_id_codes2([H|T],Change,Res) :- strip_code(H,Res,TR),!, Change=true, strip_illegal_id_codes2(T,_,TR).
strip_illegal_id_codes2([H|T],Change,[H|TR]) :- strip_illegal_id_codes2(T,Change,TR).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
|
Name: strip_code/3 |
Module: translate |
Called:
Name: strip_illegal_id_codes/3 |
Module: translate |
subst_needs_begin_end(assign(_,_)).
subst_needs_begin_end(assign_single_id(_,_)).
subst_needs_begin_end(parallel(_)).
subst_needs_begin_end(sequence(_)).
subst_needs_begin_end(operation_call(_,_,_)).
Called:
| Module: translate |
suppress_rodin_positions(CHNG) :- set_suppress_rodin_positions(true,CHNG).
Calls:
| Module: translate |
Called:
| Module: prob2_interface | |
Name: get_top_level_formulas/1 |
Module: prob2_interface |
| Module: prob2_interface |
transform_raw(Var,Res) :- %write(raw(Var)),nl,
var(Var), !, add_internal_error('Var raw expression:',transform_raw(Var,Res)),
Res= b(identifier('$$VARIABLE$$'),any,[raw]).
transform_raw(precondition(_,Pre,Body),Res) :- !, Res= b(precondition(TP,TB),subst,[raw]),
transform_raw(Pre,TP),
transform_raw(Body,TB).
transform_raw(typeof(_,E,_Type),Res) :- !, transform_raw(E,Res). % remove typeof operator; TODO: transform
transform_raw(identifier(_,M),Res) :- !, Res= b(identifier(M),any,[raw]).
transform_raw(integer(_,M),Res) :- !, Res= b(integer(M),integer,[raw]).
transform_raw(integer_set(_),Res) :- !, generate_typed_int_set('INTEGER',Res).
transform_raw(natural_set(_),Res) :- !, generate_typed_int_set('NATURAL',Res).
transform_raw(natural1_set(_),Res) :- !, generate_typed_int_set('NATURAL1',Res).
transform_raw(nat_set(_),Res) :- !, generate_typed_int_set('NAT',Res).
transform_raw(nat1_set(_),Res) :- !, generate_typed_int_set('NAT1',Res).
transform_raw(int_set(_),Res) :- !, generate_typed_int_set('INT',Res).
transform_raw(let_expression(_,_Ids,Eq,Body),Res) :- !,
transform_raw(conjunct(_,Eq,Body),Res). % TO DO: fix and generate let_expression(Ids,ListofExprs,Body)
transform_raw(let_predicate(_,_Ids,Eq,Body),Res) :- !,
transform_raw(conjunct(_,Eq,Body),Res). % ditto
transform_raw(forall(_,Ids,Body),Res) :- !,
(Body=implication(_,LHS,RHS) -> true ; LHS=truth,RHS=Body),
transform_raw(forall(_,Ids,LHS,RHS),Res).
transform_raw(record_field(_,Rec,identifier(_,Field)),Res) :- !, Res = b(record_field(TRec,Field),any,[]),
transform_raw(Rec,TRec).
transform_raw(rec_entry(_,identifier(_,Field),Rec),Res) :- !, Res = field(Field,TRec),
transform_raw(Rec,TRec).
transform_raw(conjunct(_,List),Res) :- !,
transform_raw_list_to_conjunct(List,Res). % sometimes conjunct/1 with list is used (e.g., .eventb files)
transform_raw(couple(_,L),Res) :- !, transform_raw_list_to_couple(L,Res). % couples are represented by lists
transform_raw(extended_expr(Pos,Op,L,_TypeParas),Res) :- !,
(L=[] -> transform_raw(identifier(none,Op),Res) % no arguments
; transform_raw(function(Pos,identifier(none,Op),L),Res)).
transform_raw(extended_pred(Pos,Op,L,_TypeParas),Res) :- !,
transform_raw(function(Pos,identifier(none,Op),L),Res). % not of correct type pred, but seems to work
transform_raw(external_function_call_auto(Pos,Name,Para),Res) :- !,
transform_raw(external_function_call(Pos,Name,Para),Res). % we assume expr rather than pred and hope for the best
transform_raw(function(_,F,L),Res) :- !, transform_raw(F,TF),
Res = b(function(TF,Args),any,[]),
transform_raw_list_to_couple(L,Args). % args are represented by lists
transform_raw(Atom,Res) :- atomic(Atom),!,Res=Atom.
transform_raw([H|T],Res) :- !, maplist(transform_raw,[H|T],Res).
transform_raw(Symbolic,Res) :- raw_symbolic_annotation(Symbolic,Body),!,
transform_raw(Body,Res).
transform_raw(OtherOp,b(Res,Type,[])) :- OtherOp =..[F,_Pos|Rest],
maplist(transform_raw,Rest,TRest),
(get_type(F,FT) -> Type=FT ; Type=any),
Res =.. [F|TRest].
Calls:
Name: =../2 |
|
Name: =/2 |
|
Name: get_type/2 |
Module: translate |
Name: ->/3 |
|
Name: maplist/3 |
Module: foo_error |
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: ! |
|
| Module: input_syntax_tree | |
Name: atomic/1 |
|
| Module: translate | |
| Module: translate | |
Name: true |
|
Name: generate_typed_int_set/2 |
Module: translate |
Name: add_internal_error/2 |
Module: foo_error |
Name: var/1 |
Called:
| Module: translate | |
Name: translate_def/3 |
Module: translate |
| Module: translate | |
Name: pp_raw_formula/3 |
Module: translate |
Name: print_raw_bexpr/1 |
Module: translate |
| Module: translate |
transform_raw_list(Var,Res) :- var(Var),!,
add_internal_error('Var raw expression list:',transform_raw_list(Var,Res)),
Res= [b(identifier('$$VARIABLE_LIST$$'),any,[raw])].
transform_raw_list(Args,TArgs) :- maplist(transform_raw,Args,TArgs).
Calls:
Name: maplist/3 |
Module: foo_error |
Name: =/2 |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: ! |
|
Name: var/1 |
Called:
Name: translate_def/3 |
Module: translate |
transform_raw_list_to_conjunct([R],Res) :- !, transform_raw(R,Res).
transform_raw_list_to_conjunct([R1|T],Res) :- !, Res=b(conjunct(TR1,TT),pred,[]),
transform_raw(R1,TR1),transform_raw_list_to_conjunct(T,TT).
Calls:
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: transform_raw/2 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: transform_raw/2 |
Module: translate |
transform_raw_list_to_couple([R],Res) :- !, transform_raw(R,Res).
transform_raw_list_to_couple([R1|T],Res) :- !, Res=b(couple(TR1,TT),any,[]),
transform_raw(R1,TR1),transform_raw_list_to_couple(T,TT).
Calls:
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: transform_raw/2 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: transform_raw/2 |
Module: translate |
translate_additional_description(Span,Desc) :-
extract_pos_context(Span,MainPos,Context,CtxtPos),
translate_span(CtxtPos,CtxtAtom),
extract_def_context_msg(Context,OuterCMsg),
(translate_additional_description(MainPos,InnerCMsg)
-> ajoin([InnerCMsg,' within ',OuterCMsg, ' ', CtxtAtom],Desc)
; ajoin([OuterCMsg, ' ', CtxtAtom],Desc)
).
Calls:
Name: ajoin/2 |
Module: foo_error |
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: ->/3 |
|
| Module: translate | |
Name: translate_span/2 |
Module: translate |
Name: extract_pos_context/4 |
Module: foo_error |
Called:
Name: render_span/4 |
Module: translate |
translate_any_state(State,Output) :-
get_pp_state_limit(Limit),
pp_any_state(State,Limit,Codes,[]),
atom_codes_with_limit(Output,Codes).
Calls:
Name: atom_codes_with_limit/2 |
Module: foo_error |
Name: pp_any_state/4 |
Module: translate |
Name: get_pp_state_limit/1 |
Module: translate |
Called:
Name: get_state2/3 |
Module: external_functions |
Name: translate_error_term/3 |
Module: translate |
translate_b_operation_call(OpName,Args,[TOpName|S],T) :-
translate_operation_name(OpName,TOpName),
( Args=[] -> S=T
;
S=['(',ValuesStr,')'|T],
( get_preference(show_eventb_any_arguments,false), % otherwise we have additional ANY parameters !
\+ is_init(OpName), % order of variables does not always correspond to Variable order used by b_get_machine_operation_parameter_types ! TO DO - Fix this in b_initialise_machine2 (see Interlocking.mch CSP||B model)
specfile:b_mode,
b_is_operation_name(OpName),
b_get_machine_operation_parameter_types(OpName,ParTypes),
ParTypes \= []
-> translate_bvalues_with_types(Args,ParTypes,ValuesStr)
%; is_init(OpName) -> b_get_machine_operation_typed_parameters(OpName,TypedParas),
; translate_bvalues(Args,ValuesStr))
).
Calls:
Name: translate_bvalues/2 |
Module: translate |
| Module: translate | |
Name: \=/2 |
|
| Module: bmachine | |
Name: b_is_operation_name/1 |
Module: bmachine |
Name: b_mode/0 |
Module: specfile |
Name: is_init/1 |
Module: translate |
Name: not/1 |
|
Name: get_preference/2 |
Module: preferences |
Name: ->/3 |
|
Name: =/2 |
|
| Module: specfile |
Called:
Name: translate_event2/3 |
Module: translate |
Name: render_call/4 |
Module: translate |
translate_b_state_to_comma_list(State,Limit,ResAtom) :-
pp_b_state_comma_list(State,0,Limit,Codes,[]),
append("(",Codes,C0),
atom_codes(ResAtom,C0).
Calls:
Name: atom_codes/2 |
|
Name: append/3 |
|
Name: pp_b_state_comma_list/5 |
Module: translate |
translate_b_state_to_comma_list_codes(FUNCTORCODES,State,Limit,ResCodes) :-
pp_b_state_comma_list(State,0,Limit,Codes,[]),
append("(",Codes,C0),
append(FUNCTORCODES,C0,ResCodes).
Calls:
Name: append/3 |
|
Name: pp_b_state_comma_list/5 |
Module: translate |
Called:
| Module: translate |
translate_bexpr_for_call_stack(Expr,TS) :-
get_cs_limit(Limit),
translate_bexpr_with_limit_tl(Expr,Limit,TS).
Calls:
| Module: translate | |
Name: get_cs_limit/1 |
Module: translate |
Called:
Name: render_b_expr/3 |
Module: translate |
Name: render_function_call/4 |
Module: translate |
translate_bexpr_to_parseable(Expr,Str) :-
call_pp_with_no_limit_and_parseable(translate_bexpression(Expr,Str)).
Calls:
| Module: translate |
translate_bexpr_with_limit_tl(b(Special,pred,_),Limit,TS) :-
special_binary_op(Special,LHS,RHS,Op),
binary_infix_in_mode(Op,Trans,_Prio,_Assoc),
!, Lim2 is (Limit+1)//2,
translate_bexpression_with_limit(LHS,Lim2,TS1),
translate_bexpression_with_limit(RHS,Lim2,TS2),
ajoin([TS1,' ',Trans,' ',TS2],TS).
translate_bexpr_with_limit_tl(Expr,Limit,TS) :-
translate_bexpression_with_limit(Expr,Limit,TS).
Calls:
| Module: translate | |
Name: ajoin/2 |
Module: foo_error |
Name: is/2 |
|
Name: ! |
|
Name: binary_infix_in_mode/4 |
Module: translate |
Name: special_binary_op/4 |
Module: translate |
Called:
| Module: translate |
translate_bexpression(TExpr,String) :-
(pp_expr(TExpr,String) -> true
; add_error(translate_bexpression,'Could not translate bexpression: ',TExpr),String='???').
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: true |
|
Name: pp_expr/2 |
Module: translate |
Name: ->/3 |
Called:
translate_bexpression_to_codes(TExpr,Codes) :-
reset_pp,
pp_expr(TExpr,_,_LimitReached,Codes,[]).
Calls:
Name: pp_expr/5 |
Module: translate |
Name: reset_pp/0 |
Module: translate |
translate_bexpression_to_unicode(TExpr,String) :-
with_translation_mode(unicode, translate_bexpression(TExpr,String)).
Calls:
Name: with_translation_mode/2 |
Module: translate |
translate_bexpression_with_limit(T,S) :- translate_bexpression_with_limit(T,200,report_errors,S).
Calls:
| Module: translate |
Called:
| Module: b_interpreter | |
| Module: b_state_model_check | |
Name: check_criteria/2 |
Module: mcdc_coverage |
Name: vacuous_guard/2 |
Module: eclipse_interface |
Name: check_negated/6 |
Module: disprover |
Name: explain_classicb_path/4 |
Module: translate |
Name: dot_pred_node/7 |
Module: visualize_graph |
translate_bexpression_with_limit(TExpr,Limit,String) :-
translate_bexpression_with_limit(TExpr,Limit,report_errors,String).
Calls:
| Module: translate |
Called:
| Module: b_interpreter | |
| Module: b_state_model_check | |
Name: check_criteria/2 |
Module: mcdc_coverage |
Name: vacuous_guard/2 |
Module: eclipse_interface |
Name: check_negated/6 |
Module: disprover |
Name: explain_classicb_path/4 |
Module: translate |
Name: dot_pred_node/7 |
Module: visualize_graph |
translate_bexpression_with_limit(TExpr,Limit,report_errors,String) :- compound(String),!,
add_internal_error('Result is instantiated to a compound term:',
translate_bexpression_with_limit(TExpr,Limit,report_errors,String)),fail.
translate_bexpression_with_limit(TExpr,Limit,ReportErrors,String) :-
(catch_call(pp_expr_with_limit(TExpr,Limit,String)) -> true
; (ReportErrors=report_errors,
add_error(translate_bexpression,'Could not translate bexpression: ',TExpr),String='???')).
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: true |
|
Name: catch_call/1 |
Module: foo_error |
Name: ->/3 |
|
Name: fail |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: ! |
|
Name: compound/1 |
Called:
| Module: b_interpreter | |
| Module: b_state_model_check | |
Name: check_criteria/2 |
Module: mcdc_coverage |
Name: vacuous_guard/2 |
Module: eclipse_interface |
Name: check_negated/6 |
Module: disprover |
Name: explain_classicb_path/4 |
Module: translate |
Name: dot_pred_node/7 |
Module: visualize_graph |
translate_bstate(State,Output) :-
get_pp_state_limit(Limit),
pp_b_state(State,Limit,Codes,[]),
atom_codes_with_limit(Output,Codes).
Calls:
Name: atom_codes_with_limit/2 |
Module: foo_error |
Name: pp_b_state/4 |
Module: translate |
Name: get_pp_state_limit/1 |
Module: translate |
Called:
Name: process/3 |
Module: worker |
Name: filter_op1/5 |
Module: eclipse_interface |
Name: check_assertion/2 |
Module: worker |
| Module: state_space | |
Name: get_b_state/2 |
Module: prob2_interface |
| Module: tcltk_interface |
translate_bstate_limited(State,Output) :-
temporary_set_preference(expand_avl_upto,2,CHNG),
call_cleanup(translate_bstate_limited(State,200,Output),
reset_temporary_preference(expand_avl_upto,CHNG)).
Calls:
Name: call_cleanup/2 |
|
Name: temporary_set_preference/3 |
Module: foo_error |
Called:
| Module: b_interpreter | |
Name: print_op_cache_profile/0 |
Module: b_operation_cache |
| Module: b_operation_cache |
translate_bstate_limited(State,Limit,Output) :-
translate_bstate_limited(State,Limit,Limit,Output).
Calls:
| Module: translate |
Called:
| Module: b_interpreter | |
Name: print_op_cache_profile/0 |
Module: b_operation_cache |
| Module: b_operation_cache |
translate_bstate_limited(State,VarLimit,Limit,Output) :-
pp_b_state(State,VarLimit,Codes,[]), % this limit VarLimit applies to every variable
atom_codes_with_limit(Output,Limit,Codes). % Limit applies to the full translation
Calls:
Name: atom_codes_with_limit/3 |
Module: foo_error |
Name: pp_b_state/4 |
Module: translate |
Called:
| Module: b_interpreter | |
Name: print_op_cache_profile/0 |
Module: b_operation_cache |
| Module: b_operation_cache |
translate_bvalue(V,Output) :-
%set_up_limit_reached(Codes,1000000,LimitReached), % we could set a very high-limit, like max_atom_length
( pp_value(V,_LimitReached,Codes,[]) ->
atom_codes_with_limit(Output,Codes) % just catches representation error
; add_error(translate_bvalue,'Could not translate bvalue: ',V),
Output='???').
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: atom_codes_with_limit/2 |
Module: foo_error |
Name: pp_value/4 |
Module: translate |
Name: ->/3 |
Called:
translate_bvalue_for_dot(string(S),Translation) :- !,
% normal quotes confuse dot
%ajoin(['''''',S,''''''],Translation).
string_escape(S,ES),
ajoin(['\\"',ES,'\\"'],Translation).
translate_bvalue_for_dot(Val,ETranslation) :-
translate_bvalue(Val,Translation),
string_escape(Translation,ETranslation).
Calls:
Name: string_escape/2 |
Module: foo_error |
Name: translate_bvalue/2 |
Module: translate |
Name: ajoin/2 |
Module: foo_error |
Name: ! |
Called:
Name: translate_fields/2 |
Module: state_as_dot_graph |
Name: grelation/6 |
Module: state_graph_canon |
Name: translate_node_value/2 |
Module: state_as_dot_graph |
translate_bvalue_for_expression(Value,TExpr,Output) :-
animation_minor_mode(tla),
expression_has_tla_type(TExpr,TlaType),!,
translate_bvalue_with_tlatype(Value,TlaType,Output).
translate_bvalue_for_expression(Value,TExpr,Output) :-
get_texpr_type(TExpr,Type),
translate_bvalue_with_type(Value,Type,Output).
Calls:
| Module: translate | |
Name: get_texpr_type/2 |
Module: foo_error |
| Module: translate | |
Name: ! |
|
| Module: translate | |
Name: animation_minor_mode/1 |
Module: specfile |
translate_bvalue_for_expression_with_limit(Value,TExpr,_Limit,Output) :-
animation_minor_mode(tla),
expression_has_tla_type(TExpr,TlaType),!,
translate_bvalue_with_tlatype(Value,TlaType,Output). % TO DO: treat Limit
translate_bvalue_for_expression_with_limit(Value,TExpr,Limit,Output) :-
get_texpr_type(TExpr,Type),
translate_bvalue_with_type_and_limit(Value,Type,Limit,Output).
Calls:
| Module: translate | |
Name: get_texpr_type/2 |
Module: foo_error |
| Module: translate | |
Name: ! |
|
| Module: translate | |
Name: animation_minor_mode/1 |
Module: specfile |
translate_bvalue_kind([],Res) :- !, Res='EMPTY-Set'.
translate_bvalue_kind([_|_],Res) :- !, Res='LIST-Set'.
translate_bvalue_kind(avl_set(A),Res) :- !, avl_size(A,Size), ajoin(['AVL-Set:',Size],Res).
translate_bvalue_kind(int(_),Res) :- !, Res = 'INTEGER'.
translate_bvalue_kind(term(floating(_)),Res) :- !, Res = 'FLOAT'.
translate_bvalue_kind(string(_),Res) :- !, Res = 'STRING'.
translate_bvalue_kind(pred_true,Res) :- !, Res = 'TRUE'.
translate_bvalue_kind(pred_false,Res) :- !, Res = 'FALSE'.
translate_bvalue_kind(fd(_,T),Res) :- !, Res = T.
translate_bvalue_kind((_,_),Res) :- !, Res = 'PAIR'.
translate_bvalue_kind(rec(_),Res) :- !, Res = 'RECORD'.
translate_bvalue_kind(freeval(Freetype,_Case,_),Res) :- !, Res = Freetype.
translate_bvalue_kind(CL,Res) :- custom_explicit_sets:is_interval_closure(CL,_,_),!, Res= 'INTERVAL'.
translate_bvalue_kind(CL,Res) :- custom_explicit_sets:is_infinite_explicit_set(CL),!, Res= 'INFINITE-Set'.
translate_bvalue_kind(closure(_,_,_),Res) :- !, Res= 'SYMBOLIC-Set'.
Calls:
Name: =/2 |
|
Name: ! |
|
| Module: custom_explicit_sets | |
Name: is_interval_closure/3 |
Module: custom_explicit_sets |
Name: ajoin/2 |
Module: foo_error |
Name: avl_size/2 |
Module: foo_error |
Called:
Name: get_value_kind/4 |
Module: coverage_statistics |
| Module: runtime_profiler | |
| Module: b_interpreter_components |
translate_bvalue_to_codes(V,Output) :-
( pp_value(V,_LimitReached,Codes,[]) ->
Output=Codes
; add_error(translate_bvalue_to_codes,'Could not translate bvalue: ',V),
Output="???").
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: pp_value/4 |
Module: translate |
Name: ->/3 |
Called:
Name: b_val_to_id_string_aux/3 |
Module: visb_visualiser |
Name: xml_write_b_value/2 |
Module: logger |
| Module: visb_visualiser | |
Name: b_value_to_string/2 |
Module: visb_visualiser |
translate_bvalue_to_codes_with_limit(V,Limit,Output) :-
set_up_limit_reached(Codes,Limit,LimitReached), % TODO: also limit expand_avl_upto
( pp_value(V,LimitReached,Codes,[]) ->
Output=Codes
; add_error(translate_bvalue_to_codes,'Could not translate bvalue: ',V),
Output="???").
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: pp_value/4 |
Module: translate |
Name: ->/3 |
|
Name: set_up_limit_reached/3 |
Module: translate |
Called:
Name: eval_defs/3 |
Module: visb_visualiser |
| Module: visb_visualiser |
translate_bvalue_to_parseable_aux(Val,Str) :-
call_pp_with_no_limit_and_parseable(translate_bvalue(Val,Str)).
Calls:
| Module: translate |
translate_bvalue_to_parseable_classicalb(Val,Str) :-
% corresponds to set_print_type_infos(needed)
temporary_set_preference(translate_force_all_typing_infos,false,CHNG),
temporary_set_preference(translate_print_typing_infos,true,CHNG2),
(animation_minor_mode(X)
-> remove_animation_minor_mode,
call_cleanup(translate_bvalue_to_parseable_aux(Val,Str),
(reset_temporary_preference(translate_force_all_typing_infos,CHNG),
reset_temporary_preference(translate_print_typing_infos,CHNG2),
set_animation_minor_mode(X)))
; call_cleanup(translate_bvalue_to_parseable_aux(Val,Str),
(reset_temporary_preference(translate_force_all_typing_infos,CHNG),
reset_temporary_preference(translate_print_typing_infos,CHNG2)))
).
Calls:
Name: call_cleanup/2 |
|
| Module: specfile | |
Name: animation_minor_mode/1 |
Module: specfile |
Name: ->/3 |
|
Name: temporary_set_preference/3 |
Module: foo_error |
Called:
Name: mytranslate/2 |
Module: b_trace_checking |
translate_bvalue_with_limit(V,Limit,Output) :-
get_preference(expand_avl_upto,Max),
((Max > Limit % no sense in printing larger AVL trees
; (Max < 0, Limit >= 0)) % or setting limit to -1 for full value
-> temporary_set_preference(expand_avl_upto,Limit,CHNG)
; CHNG=false),
call_cleanup(translate_bvalue_with_limit_aux(V,Limit,Output),
reset_temporary_preference(expand_avl_upto,CHNG)).
Calls:
Name: call_cleanup/2 |
|
Name: =/2 |
|
Name: temporary_set_preference/3 |
Module: foo_error |
Name: >=/2 |
|
Name: </2 |
|
Name: >/2 |
|
Name: ->/3 |
|
Name: get_preference/2 |
Module: preferences |
Called:
Name: get_value_info2/4 |
Module: coverage_statistics |
Name: explain_classicb_path/4 |
Module: translate |
Name: get_binding_txt/2 |
Module: b_intelligent_trace_replay |
Name: get_typedval_info/2 |
Module: b_interpreter_components |
Name: get_value_label/2 |
Module: bvisual |
| Module: eval_interface | |
Name: gen_label/2 |
Module: state_space_reduction |
| Module: bmachine_static_checks | |
Name: solver_pp_bvalue2/3 |
Module: solver_interface |
Name: render_para_val/3 |
Module: translate |
| Module: translate | |
Name: check_value_equal_aux/3 |
Module: b_intelligent_trace_replay |
Name: get_bind_txt/2 |
Module: b_intelligent_trace_replay |
Name: translate_bindings/2 |
Module: b_intelligent_trace_replay |
Name: count_mismatches_aux/5 |
Module: b_intelligent_trace_replay |
Name: translate_error_term/3 |
Module: translate |
| Module: state_space_reduction | |
Name: mytranslate/2 |
Module: state_space_reduction |
translate_bvalue_with_limit_aux(V,Limit,OutputAtom) :-
set_up_limit_reached(Codes,Limit,LimitReached),
( pp_value(V,LimitReached,Codes,[]) ->
atom_codes_with_limit(OutputAtom,Limit,Codes)
% ,length(Codes,Len), (Len>Limit -> format('pp(~w) codes:~w, limit:~w, String=~s~n~n',[LimitReached,Len,Limit,Codes]) ; true)
; add_error(translate_bvalue_with_limit,'Could not translate bvalue: ',V),
OutputAtom='???').
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: atom_codes_with_limit/3 |
Module: foo_error |
Name: pp_value/4 |
Module: translate |
Name: ->/3 |
|
Name: set_up_limit_reached/3 |
Module: translate |
translate_bvalue_with_tlatype(Value,Type,Output) :-
( pp_tla_value(Type,Value,Codes,[]) ->
atom_codes_with_limit(Output,Codes)
; add_error(translate_bvalue,'Could not translate TLA value: ',Value),
Output='???').
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: atom_codes_with_limit/2 |
Module: foo_error |
Name: pp_tla_value/4 |
Module: translate |
Name: ->/3 |
translate_bvalue_with_type(Value,_,Output) :- var(Value),!,
translate_bvalue(Value,Output).
translate_bvalue_with_type(Value,Type,Output) :-
adapt_value_according_to_type(Type,Value,NewValue),
translate_bvalue(NewValue,Output).
Calls:
Name: translate_bvalue/2 |
Module: translate |
| Module: translate | |
Name: ! |
|
Name: var/1 |
Called:
| Module: translate | |
| Module: kernel_strings | |
Name: write_store3/2 |
Module: b_show_history |
Name: to_string_aux_typed/4 |
Module: kernel_strings |
Name: get_string_typed/3 |
Module: kernel_strings |
translate_bvalue_with_type_and_limit(Value,Type,Limit,Output) :-
(Limit < 0 -> SetLim = -1 ; SetLim is Limit//2), % at least two symbols per element
get_preference(expand_avl_upto,CurLim),
((CurLim < 0, SetLim >= 0) ; SetLim < CurLim),!,
temporary_set_preference(expand_avl_upto,SetLim,CHNG),
translate_bvalue_with_type_and_limit2(Value,Type,Limit,Output),
reset_temporary_preference(expand_avl_upto,CHNG).
translate_bvalue_with_type_and_limit(Value,Type,Limit,Output) :-
translate_bvalue_with_type_and_limit2(Value,Type,Limit,Output).
Calls:
| Module: translate | |
Name: reset_temporary_preference/2 |
Module: foo_error |
Name: temporary_set_preference/3 |
Module: foo_error |
Name: ! |
|
Name: </2 |
|
Name: >=/2 |
|
Name: get_preference/2 |
Module: preferences |
Name: is/2 |
|
Name: =/2 |
|
Name: ->/3 |
Called:
| Module: translate |
translate_bvalue_with_type_and_limit2(Value,_,Limit,Output) :- var(Value),!,
translate_bvalue_with_limit(Value,Limit,Output).
translate_bvalue_with_type_and_limit2(Value,Type,Limit,Output) :-
adapt_value_according_to_type(Type,Value,NewValue),
translate:translate_bvalue_with_limit(NewValue,Limit,Output).
Called:
| Module: translate |
translate_bvalues(Values,Output) :-
translate_bvalues_with_limit(Values,no_limit,Output). % we could set a very high-limit, like max_atom_length
Calls:
| Module: translate |
Called:
| Module: translate | |
Name: translate_event2/3 |
Module: translate |
| Module: translate |
translate_bvalues_with_limit(Values,Limit,Output) :-
(Limit==no_limit -> true
; set_up_limit_reached(Codes,Limit,LimitReached)
),
pp_value_l(Values,',',LimitReached,Codes,[]),!,
atom_codes_with_limit(Output,Codes).
translate_bvalues_with_limit(Values,Limit,O) :-
add_internal_error('Call failed: ',translate_bvalues(Values,Limit,O)), O='??'.
Calls:
Name: =/2 |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: atom_codes_with_limit/2 |
Module: foo_error |
Name: ! |
|
Name: pp_value_l/5 |
Module: translate |
Name: set_up_limit_reached/3 |
Module: translate |
Name: true |
|
Name: ==/2 |
|
Name: ->/3 |
Called:
Name: render_call/4 |
Module: translate |
Name: translate_bvalues/2 |
Module: translate |
Name: explain_classicb_path/4 |
Module: translate |
translate_bvalues_with_types(Values,Types,Output) :-
%set_up_limit_reached(Codes,1000,LimitReached),
pp_value_l_with_types(Values,',',Types,_LimitReached,Codes,[]),!,
atom_codes_with_limit(Output,Codes).
translate_bvalues_with_types(Values,T,Output) :-
add_internal_error('Call failed: ',translate_bvalues_with_types(Values,T,Output)),
translate_bvalues(Values,Output).
Calls:
Name: translate_bvalues/2 |
Module: translate |
Name: add_internal_error/2 |
Module: foo_error |
Name: atom_codes_with_limit/2 |
Module: foo_error |
Name: ! |
|
Name: pp_value_l_with_types/6 |
Module: translate |
Called:
| Module: translate |
translate_call_stack(Stack,Msg) :-
Opts = [detailed],
split_calls(Stack,DStack),
get_cs_avl_limit(ALimit),
temporary_set_preference(expand_avl_upto,ALimit,CHNG),
set_unicode_mode,
call_cleanup(render_call_stack(DStack,1,Opts,A,[]),
(unset_unicode_mode,
reset_temporary_preference(expand_avl_upto,CHNG))),
ajoin(['call stack: '|A],Msg).
Calls:
Name: ajoin/2 |
Module: foo_error |
Name: call_cleanup/2 |
|
Name: set_unicode_mode/0 |
Module: translate |
Name: temporary_set_preference/3 |
Module: foo_error |
Name: get_cs_avl_limit/1 |
Module: translate |
Name: split_calls/2 |
Module: translate |
Name: =/2 |
Called:
Name: portray_call_stack/1 |
Module: kernel_waitflags |
Name: portray_wait_flag_info/1 |
Module: kernel_waitflags |
Name: extract_context_msg/4 |
Module: error_manager |
| Module: kernel_waitflags |
translate_cases([]) --> !,[].
translate_cases([CaseOr|T]) -->
{get_texpr_expr(CaseOr,case_or(Exprs,Subst))},!,
pp_expr_indent_l(Exprs),
insertstr(' THEN '),
insert_subst(Subst),
({T==[]} -> {true}
; indent('OR '), translate_cases(T)).
translate_cases(L) -->
{add_internal_error('Cannot translate CASE list: ',translate_cases(L,_,_))}.
Calls:
Name: =/2 |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: indent/3 |
Module: translate |
Name: ==/2 |
|
Name: ->/3 |
|
Name: insert_subst/3 |
Module: translate |
Name: insertstr/3 |
Module: translate |
Name: pp_expr_indent_l/3 |
Module: translate |
Name: ! |
|
Name: get_texpr_expr/2 |
Module: foo_error |
Called:
Name: translate_subst2/3 |
Module: translate |
translate_channel_values(X,['_'|T],T) :- var(X),!.
translate_channel_values([],S,S) :- !.
translate_channel_values([tuple([])|T],S,R) :- !,
translate_channel_values(T,S,R).
translate_channel_values([in(tuple([]))|T],S,R) :- !,
translate_channel_values(T,S,R).
translate_channel_values([H|T],['.'|S],R) :- !,
((nonvar(H),H=in(X))
-> Y=X
; Y=H
),
pp_csp_value(Y,S,S2),
translate_channel_values(T,S2,R).
translate_channel_values(tail_in(X),S,T) :-
(X=[] ; X=[_|_]), !, translate_channel_values(X,S,T).
translate_channel_values(_X,['??'|S],S).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ! |
|
Name: =/2 |
|
Name: pp_csp_value/3 |
Module: translate |
Name: nonvar/1 |
|
Name: ->/3 |
|
Name: var/1 |
Called:
Name: translate_event2/3 |
Module: translate |
translate_context(Context,Output) :-
pp_b_context(Context,Codes,[]),
atom_codes_with_limit(Output,250,Codes).
Calls:
Name: atom_codes_with_limit/3 |
Module: foo_error |
Name: pp_b_context/3 |
Module: translate |
Called:
Name: safe_translate_context/1 |
Module: error_manager |
Name: print_context/1 |
Module: translate |
translate_csp_value(Val,Text) :- pp_csp_value(Val,Atoms,[]), ajoin(Atoms,Text).
Calls:
Name: ajoin/2 |
Module: foo_error |
Name: pp_csp_value/3 |
Module: translate |
Called:
Name: unify_tuple_args/5 |
Module: csp_tuples |
Name: expand_sequence/2 |
Module: csp_sequences |
Name: append_list/3 |
Module: csp_sequences |
translate_cspm_expression(Expr, Text) :-
(pp_csp_value(Expr,Atoms,[]) -> ajoin(Atoms,Text)
; write('Pretty printing expression failed: '),print(Expr),nl).
Calls:
Name: nl |
|
Name: print/1 |
|
Name: write/1 |
|
Name: ajoin/2 |
Module: foo_error |
Name: pp_csp_value/3 |
Module: translate |
Name: ->/3 |
Called:
| Module: haskell_csp | |
| Module: prob2_interface |
translate_cspm_state(State,Text) :-
( pp_csp_process(State,Atoms,[]) -> true
; print(pp_csp_process_failed(State)),nl,Atoms=State),
ajoin(['CSP: '|Atoms],Text).
Calls:
Name: ajoin/2 |
Module: foo_error |
Name: =/2 |
|
Name: nl |
|
Name: print/1 |
|
Name: true |
|
Name: pp_csp_process/3 |
Module: translate |
Name: ->/3 |
Called:
Name: print_cspm_state/1 |
Module: translate |
Name: write_state/2 |
Module: b_show_history |
Name: check_compiled_term/1 |
Module: haskell_csp |
Name: cspm_property/2 |
Module: xtl_interface |
Name: add_cspm_error/4 |
Module: haskell_csp |
| Module: haskell_csp | |
Name: print_state/1 |
Module: translate |
translate_def(definition_decl(Name,_DefType,_Pos,_Args,Expr,_Deps)) -->
{dummy_def_body(Name,Expr)},!.
translate_def(definition_decl(Name,DefType,_Pos,Args,Expr,_Deps)) -->
{def_description(DefType,Desc)}, indent(Desc),insertstr(Name),
{transform_raw_list(Args,TArgs)},
translate_op_params(TArgs),
( {show_def_body(Expr)}
-> insertstr(' '),{translate_in_mode(eqeq,'==',EqEqStr)}, insertstr(EqEqStr), insertstr(' '),
{transform_raw(Expr,TExpr)},
(translate_def_body(DefType,TExpr) -> [] ; insertstr('CANNOT PRETTY PRINT'))
; {true}
),
insertstr(';').
Calls:
Name: insertstr/3 |
Module: translate |
Name: =/2 |
|
Name: translate_def_body/4 |
Module: translate |
Name: ->/3 |
|
Name: transform_raw/2 |
Module: translate |
Name: translate_in_mode/3 |
Module: translate |
Name: show_def_body/1 |
Module: translate |
Name: translate_op_params/3 |
Module: translate |
Name: transform_raw_list/2 |
Module: translate |
Name: indent/3 |
Module: translate |
Name: def_description/2 |
Module: translate |
Name: ! |
|
Name: dummy_def_body/2 |
Module: translate |
Called:
Name: translate_defs/3 |
Module: translate |
translate_def_body(substitution,B) --> translate_subst_begin_end(B).
translate_def_body(expression,B) --> indent_expr(B).
translate_def_body(predicate,B) --> indent_expr(B).
Calls:
Name: indent_expr/3 |
Module: translate |
| Module: translate |
Called:
Name: translate_def/3 |
Module: translate |
translate_defs([]) --> !.
translate_defs([Def|Rest]) --> translate_def(Def),translate_defs(Rest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: translate_def/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
| Module: translate |
translate_enums([],Acc,Acc).
translate_enums([EnumCst|T],Acc,Res) :- %get_texpr_id(EnumCst,Id),
get_texpr_type(EnumCst,global(GlobalSet)),
insert_enum_cst(Acc,EnumCst,GlobalSet,Acc2),
translate_enums(T,Acc2,Res).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: insert_enum_cst/4 |
Module: translate |
Name: get_texpr_type/2 |
Module: foo_error |
Called:
Name: translate_mpart2/5 |
Module: translate |
translate_error_context(E,TE) :- translate_error_context2(E,Codes,[]),
atom_codes_with_limit(TE,Codes).
Calls:
Name: atom_codes_with_limit/2 |
Module: foo_error |
| Module: translate |
Called:
Name: translate_state_error/2 |
Module: translate |
translate_error_context2(span_context(Span,Context)) --> !,
translate_error_context2(Context),
translate_span(Span,only_subsidiary).
translate_error_context2([H]) --> !,translate_error_context2(H).
translate_error_context2(checking_invariant) --> !,
{get_specification_description_codes(invariant,A)}, A. "INVARIANT".
translate_error_context2(checking_assertions) --> !,
{get_specification_description_codes(assertions,A)}, A. "ASSERTIONS".
translate_error_context2(checking_negation_of_invariant(_State)) --> !,
"not(INVARIANT)".
translate_error_context2(operation(OpName,_State)) --> !,
{translate_operation_name(OpName,TOp)},
ppterm(TOp).
translate_error_context2(checking_context(Check,Name)) --> !,
ppterm(Check),ppterm(Name).
translate_error_context2(loading_context(_Name)) --> !.
translate_error_context2(visb_error_context(Class,SvgId,OpNameOrAttr,Span)) --> !,
"VisB ", ppterm(Class), " for SVG ID ",
ppterm(SvgId), " and attribute/event ",
{translate_operation_name(OpNameOrAttr,TOp)},
ppterm(TOp),
translate_span(Span,only_subsidiary).
translate_error_context2(X) --> "???:", ppterm(X).
Calls:
Name: ppterm/3 |
Module: translate |
Name: =/2 |
|
Name: translate_span/4 |
Module: translate |
| Module: specfile | |
Name: ! |
|
Name: phrase/3 |
|
| Module: translate | |
Name: RECURSIVE_CALL/3 |
Module: translate |
Called:
Name: explain_error_context2/3 |
Module: translate |
| Module: translate |
translate_error_term(Term,S) :- translate_error_term(Term,unknown,S).
Calls:
Name: translate_error_term/3 |
Module: translate |
Called:
| Module: kernel_objects | |
Name: print_error_term/2 |
Module: state_space |
| Module: error_manager | |
Name: translate_error_term/2 |
Module: translate |
Name: explain_state_error2/4 |
Module: translate |
translate_error_term(Var,_,S) :- var(Var),!,
translate_term_into_atom_with_max_depth(Var,5,S).
translate_error_term('@fun'(X,F),Span,S) :-
translate_bvalue(X,TX),
(get_function_from_span(Span,Fun,LocState,State),
translate_bexpression_with_limit(Fun,200,TSF)
-> % we managed to extract the function from the span_predicate
(is_compiled_value(Fun)
-> (get_was_identifier(Fun,WasFunId) -> Rest = [', function: ',WasFunId | Rest1]
; Rest = Rest1
),
TVal=TSF % use as value
; Rest = [', function: ',TSF | Rest1],
% try and extract value from span_predicate (often F=[] after traversing avl)
(get_texpr_id(Fun,FID),
(member(bind(FID,FVal),LocState) ; member(bind(FID,FVal),State))
-> translate_bvalue(FVal,TVal)
; translate_bvalue(F,TVal)
)
)
; Rest=[], translate_bvalue(F,TVal)
),!,
% translate_term_into_atom_with_max_depth('@fun'(TX,TVal),5,S).
(get_error_span_for_value(F,NewSpanTxt) % triggers in test 953
-> Rest1 = [' defined at ',NewSpanTxt]
; Rest1 = []
),
ajoin(['Function argument: ',TX, ', function value: ',TVal | Rest],S).
translate_error_term('@rel'(Arg,Res1,Res2),_,S) :-
translate_bvalue(Arg,TA), translate_bvalue(Res1,R1),
translate_bvalue(Res2,R2),!,
ajoin(['Function argument: ',TA, ', two possible values: ',R1,', ',R2],S).
translate_error_term([Op|T],_,S) :- T==[], nonvar(Op), Op=operation(Name,Env),
translate_any_state(Env,TEnv), !,
translate_term_into_atom_with_max_depth(operation(Name,TEnv),10,S).
translate_error_term(error(E1,E2),_,S) :- !, translate_prolog_error(E1,E2,S).
translate_error_term(b(B,T,I),_,S) :-
translate_subst_or_bexpr_with_limit(b(B,T,I),1000,do_not_report_errors,S),!. % do not report errors, otherwise we end in an infinite loop of adding errors while adding errors
translate_error_term([H|T],_,S) :- nonvar(H), H=b(_,_,_), % typically a list of typed ids
E=b(sequence_extension([H|T]),any,[]),
translate_subst_or_bexpr_with_limit(E,1000,do_not_report_errors,S),!.
translate_error_term([H|T],_,S) :- nonvar(H), H=bind(_,_), % a store
translate_bstate_limited([H|T],1000,S),!.
translate_error_term(Term,_,S) :-
is_bvalue(Term),
translate_bvalue_with_limit(Term,1000,S),!.
translate_error_term(T,_,S) :-
(debug_mode(on) -> Depth = 20 ; Depth = 5),
translate_term_into_atom_with_max_depth(T,Depth,S).
Calls:
| Module: tools_meta | |
Name: =/2 |
|
Name: debug_mode/1 |
Module: foo_error |
Name: ->/3 |
|
Name: ! |
|
| Module: translate | |
Name: is_bvalue/1 |
Module: translate |
| Module: translate | |
Name: nonvar/1 |
|
| Module: translate | |
Name: translate_prolog_error/3 |
Module: translate |
Name: translate_any_state/2 |
Module: translate |
Name: ==/2 |
|
Name: ajoin/2 |
Module: foo_error |
Name: translate_bvalue/2 |
Module: translate |
| Module: translate | |
Name: member/2 |
|
Name: get_texpr_id/2 |
Module: foo_error |
Name: get_was_identifier/2 |
Module: translate |
Name: is_compiled_value/1 |
Module: translate |
| Module: translate | |
Name: get_function_from_span/4 |
Module: translate |
Name: var/1 |
Called:
| Module: kernel_objects | |
Name: print_error_term/2 |
Module: state_space |
| Module: error_manager | |
Name: translate_error_term/2 |
Module: translate |
Name: explain_state_error2/4 |
Module: translate |
translate_event(Event,Out) :- %write(translate),print_debug_stats,nl,
translate_event2(Event,Atoms,[]),!,
ajoin(Atoms,Out).
translate_event(Event,Out) :-
add_error(translate_event,'Could not translate event: ', Event),
Out = '???'.
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: ajoin/2 |
Module: foo_error |
Name: ! |
|
Name: translate_event2/3 |
Module: translate |
Called:
Name: extract_csp_op/3 |
Module: prob2_interface |
Name: pp_tp2/2 |
Module: ltl_translate |
Name: enume_ch_vals2/6 |
Module: haskell_csp |
Name: write_operation1/1 |
Module: b_show_history |
Name: get_event_trace1/2 |
Module: ctl |
Name: portray_state/1 |
Module: refinement_checker |
Name: dot_print_action/1 |
Module: visualize_graph |
Name: pp_op/2 |
Module: ltl_translate |
Name: my_print_event/2 |
Module: b_trace_checking |
Name: html_print_history2/7 |
Module: graphical_state_viewer_images |
| Module: refinement_checker | |
Name: ref_generate_label/2 |
Module: refinement_checker |
Name: translate_events/2 |
Module: translate |
Name: enume_ch_vals/5 |
Module: haskell_csp |
Name: filter_op_csp/5 |
Module: eclipse_interface |
Name: cli_trans/5 |
Module: prob_cli |
Description:
translate_event2(i(_Span),['i'|T],T) :- process_algebra_mode,!. / CSP */ %% deprecated
translate_event2(start_cspm(Process),['start_cspm('|S],T) :- process_algebra_mode,!,pp_csp_value(Process,S,[')'|T]).
translate_event2(tick(_Span),['tick'|T],T) :- process_algebra_mode,!. /* CSP */
translate_event2(tau(hide(Action)),['tau(hide('|S],T) :- process_algebra_mode,nonvar(Action), !,
translate_event2(Action,S,['))'|T]). /* CSP */
translate_event2(tau(link(Action1,Action2)),['tau(link('|S],T) :- /* CSP */
nonvar(Action1), nonvar(Action2), process_algebra_mode, !,
translate_event2(Action1,S,['<->'|S1]),
translate_event2(Action2,S1,['))'|T]).
translate_event2(tau(Info),['tau(',Fun,')'|T],T) :-
nonvar(Info), process_algebra_mode,!, /* CSP */
functor(Info,Fun,_). %(translate_event(Info,Fun) -> true ; functor(Info,Fun,_)),
translate_event2(io(V,Ch,_Span),S,T) :- process_algebra_mode,!, /* CSP */
(specfile:csp_with_bz_mode ->
S=['CSP:'|S1],
translate_event2(io(V,Ch),S1,T)
;
translate_event2(io(V,Ch),S,T)
).
translate_event2(io(X,Channel),S,T) :- process_algebra_mode,!, /* CSP */
(X=[] -> translate_event2(Channel,S,T)
; (translate_event2(Channel,S,S1),
translate_channel_values(X,S1,T))
).
translate_event2(Op,[A|T],T) :-
% this clause must be after the CSP code, test 756 sets process_algebra_mode via prob_pragma_string
% this allows xtl interpreters to use tau,tick,io events
animation_mode(xtl),
!,
translate_xtl_value(Op,A). /* XTL transitions can be arbitrary terms */
translate_event2('$JUMP'(Name),[A|T],T) :- write_to_codes(Name,Codes),
atom_codes_with_limit(A,Codes).
translate_event2('-->'(Operation,ResultValues),S,T) :- nonvar(ResultValues),
ResultValues=[_|_],!,
translate_event2(Operation,S,['-->',ValuesStr|T]),
translate_bvalues(ResultValues,ValuesStr).
translate_event2(Op,S,T) :-
nonvar(Op), Op =.. [OpName|Args],
translate_b_operation_call(OpName,Args,S,T),!.
translate_event2(Op,[A|T],T) :-
%['<< ',A,' >>'|T],T) :- % the << >> pose problems when checking against FDR
write_to_codes(Op,Codes),
atom_codes_with_limit(A,Codes).
Calls:
Name: atom_codes_with_limit/2 |
Module: foo_error |
Name: write_to_codes/2 |
Module: foo_error |
Name: ! |
|
| Module: translate | |
Name: =../2 |
|
Name: nonvar/1 |
|
Name: translate_bvalues/2 |
Module: translate |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: =/2 |
|
Name: translate_xtl_value/2 |
Module: translate |
Name: animation_mode/1 |
Module: specfile |
| Module: translate | |
Name: ->/3 |
|
Name: process_algebra_mode/0 |
Module: specfile |
Name: csp_with_bz_mode/0 |
Module: specfile |
Name: functor/3 |
|
Name: pp_csp_value/3 |
Module: translate |
Called:
| Module: translate | |
Name: translate_event/2 |
Module: translate |
Name: translate_action/2 |
Module: ltl_translate |
translate_event_error(Error,Out) :-
( translate_event_error2(Error,Out) -> true
;
functor(Error,F,_),
ajoin(['** Unable to translate event error: ',F,' **'],Out)).
Calls:
Name: ajoin/2 |
Module: foo_error |
Name: functor/3 |
|
Name: true |
|
Name: translate_event_error2/2 |
Module: translate |
Name: ->/3 |
Called:
Name: translate_state_errors/2 |
Module: translate |
Name: convert_error/2 |
Module: prob2_interface |
Name: explain_state_error2/4 |
Module: translate |
translate_event_error2(no_witness_found(Type,Var,_Predicate),Out) :-
def_get_texpr_id(Var,Id),
ajoin(['no witness was found for ',Type,' ',Id],Out).
translate_event_error2(simulation_error(_Events),Out) :-
Out = 'no matching abstract event was found'.
translate_event_error2(action_not_executable(_Action,WDErr),Out) :-
(WDErr=wd_error_possible -> Out = 'action was not executable (maybe with WD error)'
; Out = 'action was not executable').
translate_event_error2(invalid_modification(Var,_Pre,_Post),Out) :-
def_get_texpr_id(Var,Id),
ajoin(['modification of variable ', Id, ' not allowed'],Out).
translate_event_error2(variant_negative(_CType,_Variant,_Value),Out) :-
Out = 'enabled for negative variant'.
translate_event_error2(invalid_variant(anticipated,_Expr,_Pre,_Post),Out) :-
Out = 'variant increased'.
translate_event_error2(invalid_variant(convergent,_Expr,_Pre,_Post),Out) :-
Out = 'variant not decreased'.
translate_event_error2(invalid_theorem_in_guard(_Theorem),Out) :-
Out = 'theorem in guard evaluates to false'.
translate_event_error2(event_wd_error(_TExpr,Source),Out) :-
ajoin(['WD error for ',Source],Out).
translate_event_error2(event_other_error(Msg),Out) :- Out=Msg.
Calls:
Name: =/2 |
|
Name: ajoin/2 |
Module: foo_error |
Name: def_get_texpr_id/2 |
Module: foo_error |
Name: ->/3 |
Called:
Name: translate_event_error/2 |
Module: translate |
translate_event_with_limit(Event,Limit,Out) :-
translate_event2(Event,Atoms,[]),!,
ajoin_with_limit(Atoms,Limit,Out).
translate_event_with_limit(Event,_,Out) :- add_error(translate_event_with_limit,'Could not translate event: ', Event),
Out = '???'.
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: ajoin_with_limit/3 |
Module: foo_error |
Name: ! |
|
Name: translate_event2/3 |
Module: translate |
Called:
Name: cli_trans/5 |
Module: prob_cli |
Name: render_call/4 |
Module: translate |
Name: process_uml_bvalue/5 |
Module: uml_generator |
| Module: uml_generator | |
| Module: translate | |
Name: get_replay_info_text/2 |
Module: b_intelligent_trace_replay |
Name: print_op_cache_profile/0 |
Module: b_operation_cache |
Name: tk_get_trace_info/6 |
Module: b_intelligent_trace_replay |
translate_event_with_src_and_target_id(Term,Src,Dst,Str) :-
translate_event_with_src_and_target_id(Term,Src,Dst,5000,Str).
Calls:
| Module: translate |
Called:
Name: tti_get_node_info/6 |
Module: tcltk_tree_inspector |
| Module: tcltk_interface | |
| Module: tcltk_interface | |
| Module: graphical_state_viewer_images | |
| Module: tcltk_interface |
translate_event_with_src_and_target_id(Term,Src,Dst,Limit,Str) :-
get_preference(expand_avl_upto,CurLim),
SetLim is Limit//2,% at least two symbols per element
(CurLim<0 ; SetLim < CurLim),!,
temporary_set_preference(expand_avl_upto,SetLim,CHNG),
call_cleanup(translate_event_with_target_id2(Term,Src,Dst,Limit,Str),
reset_temporary_preference(expand_avl_upto,CHNG)).
translate_event_with_src_and_target_id(Term,Src,Dst,Limit,Str) :-
translate_event_with_target_id2(Term,Src,Dst,Limit,Str).
Calls:
| Module: translate | |
Name: call_cleanup/2 |
|
Name: temporary_set_preference/3 |
Module: foo_error |
Name: ! |
|
Name: </2 |
|
Name: is/2 |
|
Name: get_preference/2 |
Module: preferences |
Called:
Name: tti_get_node_info/6 |
Module: tcltk_tree_inspector |
| Module: tcltk_interface | |
| Module: tcltk_interface | |
| Module: graphical_state_viewer_images | |
| Module: tcltk_interface |
translate_event_with_target_id(Term,Dst,Limit,Str) :-
translate_event_with_src_and_target_id(Term,unknown,Dst,Limit,Str).
Calls:
| Module: translate |
translate_event_with_target_id2(Term,_,Dst,Limit,Str) :-
functor(Term,Functor,_),
setup_cst_functor(Functor,UI_Name),
get_preference(show_initialisation_arguments,true),
state_space:visited_expression(Dst,concrete_constants(State)),
get_non_det_constant(State,NonDetState),
!,
translate_b_state_to_comma_list_codes(UI_Name,NonDetState,Limit,Codes),
atom_codes_with_limit(Str,Limit,Codes).
translate_event_with_target_id2(Term,_,Dst,Limit,Str) :-
functor(Term,'$initialise_machine',_),
get_preference(show_initialisation_arguments,true),
bmachine:b_get_operation_non_det_modifies('$initialise_machine',NDModVars),
state_space:visited_expression(Dst,State), get_variables(State,VarsState),
(NDModVars \= []
->
include(non_det_modified_var(NDModVars),VarsState,ModVarsState) % first show non-det variables
% we could add a preference for whether to show the deterministicly assigned variables at all
%exclude(non_det_modified_var(NDModVars),VarsState,ModVarsState2),
%append(ModVarsState1,ModVarsState2,ModVarsState)
; ModVarsState = VarsState),
!,
translate_b_state_to_comma_list_codes("INITIALISATION",ModVarsState,Limit,Codes),
atom_codes_with_limit(Str,Limit,Codes).
translate_event_with_target_id2(Term,Src,Dst,Limit,Str) :-
atomic(Term), % only applied to operations without parameters
specfile:b_mode,
get_non_det_modified_vars_in_target_id(Term,Dst,ModVarsState0), % only show non-det variables
(Src \= unknown,
state_space:visited_expression(Src,SrcState), get_variables(SrcState,PriorVarsState)
-> exclude(var_not_really_modified(PriorVarsState),ModVarsState0,ModVarsState)
% we could also optionally filter out vars which have the same value for all outgoing transitions of Src
; ModVarsState = ModVarsState0
),
!,
atom_codes(Term,TermCodes),
translate_b_state_to_comma_list_codes(TermCodes,ModVarsState,Limit,Codes),
atom_codes_with_limit(Str,Limit,Codes).
translate_event_with_target_id2(Term,_,_,Limit,Str) :- translate_event_with_limit(Term,Limit,Str).
Calls:
| Module: translate | |
Name: atom_codes_with_limit/3 |
Module: foo_error |
| Module: translate | |
Name: atom_codes/2 |
|
Name: ! |
|
Name: =/2 |
|
Name: exclude/3 |
Module: foo_error |
Name: get_variables/2 |
Module: translate |
Name: visited_expression/2 |
Module: state_space |
Name: \=/2 |
|
Name: ->/3 |
|
| Module: translate | |
Name: b_mode/0 |
Module: specfile |
Name: atomic/1 |
|
Name: include/3 |
Module: foo_error |
| Module: bmachine | |
Name: get_preference/2 |
Module: preferences |
Name: functor/3 |
|
Name: get_non_det_constant/2 |
Module: translate |
Name: setup_cst_functor/2 |
Module: translate |
Called:
| Module: translate |
translate_eventb_direct_definition_body(RawBody,ResAtom) :-
(pp_raw_formula(RawBody,C,[]) -> atom_codes(ResAtom,C) ; ResAtom='<<UNABLE TO PRETTY-PRINT OPERATOR BODY>>').
Calls:
Name: =/2 |
|
Name: atom_codes/2 |
|
Name: pp_raw_formula/3 |
Module: translate |
Name: ->/3 |
translate_eventb_direct_definition_header(Name,Args,ResAtom) :-
(pp_eventb_direct_definition_header(Name,Args,C,[])
-> atom_codes(ResAtom,C) ; ResAtom='<<UNABLE TO PRETTY-PRINT OPERATOR HEADER>>').
Calls:
Name: =/2 |
|
Name: atom_codes/2 |
|
| Module: translate | |
Name: ->/3 |
translate_eventb_operator(Module:Call,Name) -->
insertcodes("\n "),
indention_codes(In,Out),
{Call =.. [Functor|Args],
translate_eventb_operator2(Functor,Args,Module,Call,Name,In,Out)}.
Calls:
Name: =/2 |
|
| Module: translate | |
Name: =../2 |
|
Name: indention_codes/4 |
Module: translate |
Name: insertcodes/3 |
Module: translate |
Called:
| Module: translate |
translate_eventb_operator2(direct_definition,[Args,_RawWD,RawBody,TypeParas|_],_Module,_Call,Name) -->
pp_eventb_direct_definition_header(Name,Args),!,
ppcodes(" direct_definition ["),
pp_eventb_operator_args(TypeParas),
ppcodes("] "),
{translate_in_mode(eqeq,'==',EqEqStr)}, ppatom(EqEqStr),
ppcodes(" "),
pp_raw_formula(RawBody). % TO DO: use indentation
translate_eventb_operator2(axiomatic_definition,[Tag|_],_Module,_Call,Name) --> !,
ppterm(Name),
ppcodes(": Operator implemented by axiomatic definition using "),
ppatom(Tag).
translate_eventb_operator2(Functor,_,Module,_Call,Name) -->
ppterm(Name),
ppcodes(": Operator implemented by "),
ppatom(Module),ppcodes(":"),ppatom(Functor).
Calls:
Name: ppatom/3 |
Module: translate |
Name: ppcodes/3 |
Module: translate |
Name: ppterm/3 |
Module: translate |
Name: ! |
|
Name: pp_raw_formula/3 |
Module: translate |
Name: translate_in_mode/3 |
Module: translate |
| Module: translate | |
| Module: translate |
Called:
| Module: translate |
translate_eventb_operators([]) --> !.
translate_eventb_operators([Name-Call|Rest]) -->
translate_eventb_operator(Call,Name),
translate_eventb_operators(Rest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
| Module: translate | |
Name: =/2 |
|
Name: ! |
Called:
Name: translate_mpart2/5 |
Module: translate |
translate_eventb_to_classicalb(EBMachine,AddInfo,Rep) :-
( conversion_check(EBMachine) ->
convert_eventb_classicalb(EBMachine,CBMachine),
call_cleanup(( set_animation_mode(b), % clear minor mode "eventb"
translate_machine(CBMachine,Rep,AddInfo),!),
set_animation_minor_mode(eventb))
; \+ animation_minor_mode(eventb) -> add_error(translate,'Conversion only applicable to Event-B models')
;
add_error_and_fail(translate,'Conversion not applicable, check if you limited the number of abstract level to 0')
).
Calls:
Name: add_error_and_fail/2 |
Module: foo_error |
Name: add_error/2 |
Module: foo_error |
Name: animation_minor_mode/1 |
Module: specfile |
Name: not/1 |
|
Name: ->/3 |
|
Name: call_cleanup/2 |
|
| Module: translate | |
Name: conversion_check/1 |
Module: translate |
translate_events([],[]).
translate_events([E|Erest],[Out|Orest]) :-
translate_event(E,Out),
translate_events(Erest,Orest).
Calls:
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: translate_event/2 |
Module: translate |
translate_freetype(freetype(Name,Cases)) -->
{pretty_freetype(Name,PName)},
indent(PName),insertstr('= '),
indention_level(I1,I2),{I2 is I1+2},
translate_freetype_cases(Cases),
indention_level(_,I1).
Calls:
Name: indention_level/4 |
Module: translate |
| Module: translate | |
Name: is/2 |
|
Name: insertstr/3 |
Module: translate |
Name: indent/3 |
Module: translate |
Name: pretty_freetype/2 |
Module: translate |
Called:
Name: translate_freetypes/3 |
Module: translate |
translate_freetype_cases([]) --> !.
translate_freetype_cases([case(Name,Type)|Rest]) --> {nonvar(Type),Type=constant(_)},
!,indent(Name),insert_comma(Rest),
translate_freetype_cases(Rest).
translate_freetype_cases([case(Name,Type)|Rest]) -->
{pretty_type(Type,PT)},
indent(Name),
insertstr('('),insertstr(PT),insertstr(')'),
insert_comma(Rest),
translate_freetype_cases(Rest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: insert_comma/3 |
Module: translate |
Name: insertstr/3 |
Module: translate |
Name: indent/3 |
Module: translate |
Name: pretty_type/2 |
Module: translate |
Name: ! |
|
Name: =/2 |
|
Name: nonvar/1 |
Called:
Name: translate_freetype/3 |
Module: translate |
translate_freetypes([]) --> !.
translate_freetypes([Freetype|Frest]) -->
translate_freetype(Freetype),
translate_freetypes(Frest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: translate_freetype/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: translate_mpart2/5 |
Module: translate |
translate_ifs([]) --> !,
indent('END').
translate_ifs([Elsif]) -->
{get_if_elsif(Elsif,P,S),
optional_type(P,truth)},!,
indent('ELSE'), insert_subst(S), indent('END').
translate_ifs([Elsif|Rest]) -->
{get_if_elsif(Elsif,P,S)},!,
indent('ELSIF '), pp_expr_indent(P), insertstr(' THEN'),
insert_subst(S),
translate_ifs(Rest).
translate_ifs(ElseList) -->
{functor(ElseList,F,A),add_error(translate_ifs,'Could not translate IF-THEN-ELSE: ',F/A-ElseList),fail}.
Calls:
Name: =/2 |
|
Name: fail |
|
Name: add_error/3 |
Module: foo_error |
Name: functor/3 |
|
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: insert_subst/3 |
Module: translate |
Name: insertstr/3 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
Name: indent/3 |
Module: translate |
Name: ! |
|
Name: get_if_elsif/3 |
Module: translate |
Name: optional_type/2 |
Module: translate |
Called:
Name: translate_subst2/3 |
Module: translate |
translate_in_mode(F,S1,Result) :-
( unicode_mode, unicode_translation(F,S) -> true
; latex_mode, latex_translation(F,S) -> true
; atelierb_mode(prover(PPML)), atelierb_pp_translation(F,PPML,S) -> true
; colour_translation(F,S1,S) -> true
; S1=S),
(colour_translation(F,S,Res) -> Result=Res ; Result=S).
Calls:
Name: =/2 |
|
Name: colour_translation/3 |
Module: translate |
Name: ->/3 |
|
Name: true |
|
| Module: translate | |
Name: atelierb_mode/1 |
dynamic predicate |
Name: latex_translation/2 |
Module: translate |
Name: latex_mode |
dynamic predicate |
Name: unicode_translation/2 |
Module: translate |
Name: unicode_mode |
dynamic predicate |
Called:
Name: pp_pred_nested/5 |
Module: translate |
Name: translate_set_pref_def/3 |
Module: translate |
Name: quantified_in_mode/2 |
Module: translate |
Name: pp_expr1/7 |
Module: translate |
Name: translate_def/3 |
Module: translate |
| Module: translate | |
Name: nbp2/4 |
Module: translate |
Name: constants_in_mode/2 |
Module: translate |
Name: unary_postfix_in_mode/3 |
Module: translate |
Name: binary_infix_in_mode/4 |
Module: translate |
Name: function_like_in_mode/2 |
Module: translate |
translate_inits(Inits) -->
( {is_list_simple(Inits)} ->
translate_inits2(Inits)
;
indention_level(I,I2),{I2 is I+2},
translate_subst_begin_end(Inits),
indention_level(_,I)).
Calls:
Name: indention_level/4 |
Module: translate |
| Module: translate | |
Name: is/2 |
|
Name: translate_inits2/3 |
Module: translate |
Name: is_list_simple/1 |
Module: tools_lists |
Name: ->/3 |
Called:
Name: translate_mpart2/5 |
Module: translate |
translate_inits2([]) --> !.
translate_inits2([init(Name,Subst)|Rest]) -->
indent('/* '),insertstr(Name),insertstr(': */ '),
translate_subst_begin_end(Subst),
translate_inits2(Rest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
| Module: translate | |
Name: insertstr/3 |
Module: translate |
Name: indent/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: translate_inits/3 |
Module: translate |
translate_machine(M,Codes,AdditionalInfo) :-
retractall(print_additional_machine_info),
(AdditionalInfo=true -> assertz(print_additional_machine_info) ; true),
call_pp_with_no_limit_and_parseable(translate_machine1(M,(0,Codes),(_,[]))).
Calls:
| Module: translate | |
Name: true |
|
Name: assertz/1 |
|
Name: =/2 |
|
Name: ->/3 |
|
Name: retractall/1 |
Called:
| Module: synthesis_util | |
Name: print_machine/1 |
Module: translate |
| Module: bmachine | |
Name: prepare_solution/6 |
Module: synthesis_util |
| Module: bmachine |
translate_machine1(machine(Name,Sections)) -->
indent('MACHINE '), {adapt_machine_name(Name,AName)}, insertstr(AName),
{init_machine_translation},
translate_machine2(Sections,Sections,end).
Calls:
Name: translate_machine2/5 |
Module: translate |
| Module: translate | |
Name: insertstr/3 |
Module: translate |
Name: adapt_machine_name/2 |
Module: translate |
Name: indent/3 |
Module: translate |
translate_machine2([],_,end) --> !, insertstr('\nEND\n').
translate_machine2([],_,_) --> !, insertstr('\n').
translate_machine2([P|Rest],All,End) -->
translate_mpart(P,All),
translate_machine2(Rest,All,End).
Calls:
Name: RECURSIVE_CALL/5 |
Module: translate |
Name: translate_mpart/4 |
Module: translate |
Name: insertstr/3 |
Module: translate |
Name: ! |
Called:
Name: translate_section_list/2 |
Module: translate |
Name: translate_machine1/3 |
Module: translate |
translate_mpart(Section/I,All) --> %{write(Section),nl},
( {I=[]} -> {true}
; translate_mpart2(Section,I,All) -> {true}
;
insertstr('\nSection '),insertstr(Section),insertstr(': '),
insertstr('<< pretty-print failed >>')
).
Calls:
Name: insertstr/3 |
Module: translate |
Name: =/2 |
|
Name: translate_mpart2/5 |
Module: translate |
Name: ->/3 |
Called:
Name: translate_machine2/5 |
Module: translate |
translate_mpart2(deferred_sets,I,_) -->
mpstart_section(sets,'SETS /* deferred */',' ; /* deferred */',P),
indent_expr_l_sep(I,';'),mpend(P).
translate_mpart2(enumerated_sets,_I,_) --> []. % these are now pretty printed below
translate_mpart2(enumerated_elements,I,_) --> %{write(enum_els(I)),nl},
{translate_enums(I,[],Res)},
mpstart_section(sets,'SETS /* enumerated */',' ; /* enumerated */',P),
indent_expr_l_sep(Res,';'),mpend(P).
translate_mpart2(parameters,I,_) --> mpstart('PARAMETERS',P),indent_expr_l_sep(I,','),mpend(P).
translate_mpart2(internal_parameters,I,_) --> {print_additional_machine_info},!,
mpstart('/* INTERNAL_PARAMETERS',P),indent_expr_l_sep(I,','),insertstr(' */'),mpend(P).
translate_mpart2(internal_parameters,_I,_) --> [].
translate_mpart2(abstract_variables,I,_) --> mpstart('ABSTRACT_VARIABLES',P),indent_exprs(I),mpend(P).
translate_mpart2(concrete_variables,I,_) --> mpstart('CONCRETE_VARIABLES',P),indent_exprs(I),mpend(P).
translate_mpart2(abstract_constants,I,_) --> mpstart('ABSTRACT_CONSTANTS',P),indent_exprs(I),mpend(P).
translate_mpart2(concrete_constants,I,_) --> mpstart('CONCRETE_CONSTANTS',P),indent_exprs(I),mpend(P).
translate_mpart2(promoted,I,_) --> {print_additional_machine_info},!,
mpstart('/* PROMOTED OPERATIONS',P),indent_expr_l_sep(I,','),insertstr(' */'),mpend(P).
translate_mpart2(promoted,_I,_) --> [].
translate_mpart2(unpromoted,I,_) --> {print_additional_machine_info},!,
mpstart('/* NOT PROMOTED OPERATIONS',P),indent_expr_l_sep(I,','),insertstr(' */'),mpend(P).
translate_mpart2(unpromoted,_I,_) --> [].
translate_mpart2(constraints,I,All) --> mpart_typing(constraints,[parameters],All,I).
translate_mpart2(invariant,I,All) --> mpart_typing(invariant, [abstract_variables,concrete_variables],All,I).
translate_mpart2(linking_invariant,_I,_) --> [].
translate_mpart2(properties,I,All) --> mpart_typing(properties,[abstract_constants,concrete_constants],All,I).
translate_mpart2(assertions,I,_) -->
mpstart_spec_desc(assertions,P),
%indent_expr_l_sep(I,';'),
preds_over_lines(1,'@thm','; ',I),
mpend(P). % TO DO:
translate_mpart2(initialisation,S,_) --> mpstart_spec_desc(initialisation,P),translate_inits(S),mpend(P).
translate_mpart2(definitions,Defs,_) --> {(standard_library_required(Defs,_) ; set_pref_used(Defs))},!,
mpstart('DEFINITIONS',P),
insertstr('\n'),
{findall(Lib,standard_library_required(Defs,Lib),Libs)},
insert_library_usages(Libs),
translate_set_pref_defs(Defs),
mpend(P),
translate_other_defpart(Defs).
translate_mpart2(definitions,Defs,_) --> !, translate_other_defpart(Defs).
translate_mpart2(operation_bodies,Ops,_) --> mpstart_spec_desc(operations,P),translate_ops(Ops),mpend(P).
translate_mpart2(used,Used,_) --> {print_additional_machine_info},!,
mpstart('/* USED',P),translate_used(Used),insertstr(' */'),mpend(P).
translate_mpart2(used,_Used,_) --> [].
translate_mpart2(freetypes,Freetypes,_) -->
mpstart('FREETYPES',P),translate_freetypes(Freetypes),mpend(P).
translate_mpart2(meta,_Infos,_) --> [].
translate_mpart2(operators,Operators,_) -->
insertstr('\n/* Event-B operators:'), % */
indention_level(I,I2), {I2 is I+2},
translate_eventb_operators(Operators),
indention_level(I2,I),
insertstr('\n*/').
translate_mpart2(values,Values,_) -->
mpstart('VALUES',P),indent_expr_l_sep(Values,';'),mpend(P).
Calls:
Name: mpend/3 |
Module: translate |
Name: indent_expr_l_sep/4 |
Module: translate |
Name: mpstart/4 |
Module: translate |
Name: insertstr/3 |
Module: translate |
Name: indention_level/4 |
Module: translate |
| Module: translate | |
Name: is/2 |
|
Name: =/2 |
|
Name: translate_freetypes/3 |
Module: translate |
Name: translate_used/3 |
Module: translate |
Name: ! |
|
| Module: translate | |
Name: translate_ops/3 |
Module: translate |
Name: mpstart_spec_desc/4 |
Module: translate |
| Module: translate | |
| Module: translate | |
Name: insert_library_usages/3 |
Module: translate |
Name: findall/3 |
|
Name: set_pref_used/1 |
Module: translate |
| Module: translate | |
Name: translate_inits/3 |
Module: translate |
Name: preds_over_lines/6 |
Module: translate |
Name: mpart_typing/6 |
Module: translate |
Name: indent_exprs/3 |
Module: translate |
Name: mpstart_section/6 |
Module: translate |
Name: translate_enums/3 |
Module: translate |
Called:
Name: translate_mpart/4 |
Module: translate |
translate_op(Op) -->
{ get_texpr_expr(Op,operation(Id,Res,Params,Body)) },
translate_operation(Id,Res,Params,Body).
Calls:
Name: translate_operation/6 |
Module: translate |
Name: get_texpr_expr/2 |
Module: foo_error |
Called:
Name: translate_ops/3 |
Module: translate |
translate_op_params([]) --> !.
translate_op_params(Ids) --> insertstr('('),pp_expr_indent_l(Ids), insertstr(')').
Calls:
Name: insertstr/3 |
Module: translate |
Name: pp_expr_indent_l/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: translate_operation/6 |
Module: translate |
Name: translate_subst2/3 |
Module: translate |
Name: translate_def/3 |
Module: translate |
translate_op_results([]) --> !.
translate_op_results(Ids) --> pp_expr_indent_l(Ids), insertstr(' <-- ').
Calls:
Name: insertstr/3 |
Module: translate |
Name: pp_expr_indent_l/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: translate_operation/6 |
Module: translate |
Name: translate_subst2/3 |
Module: translate |
translate_operation(Id,Res,Params,Body) -->
indent,translate_op_results(Res),
pp_expr_indent(Id),
translate_op_params(Params),
insertstr(' = '),
indention_level(I1,I2),{I2 is I1+2,type_infos_in_subst(Params,Body,Body2)},
translate_subst_begin_end(Body2),
pp_description_pragma_of(Body2),
indention_level(_,I1).
Calls:
Name: indention_level/4 |
Module: translate |
| Module: translate | |
| Module: translate | |
Name: type_infos_in_subst/3 |
Module: translate |
Name: is/2 |
|
Name: insertstr/3 |
Module: translate |
Name: translate_op_params/3 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
Name: translate_op_results/3 |
Module: translate |
Name: indent/2 |
Module: foo_error |
Called:
Name: translate_op/3 |
Module: translate |
Name: translate_subst2/3 |
Module: translate |
translate_ops([]) --> !.
translate_ops([Op|Rest]) -->
translate_op(Op),
({Rest=[]} -> {true}; insertstr(';'),indent),
translate_ops(Rest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: indent/2 |
Module: foo_error |
Name: insertstr/3 |
Module: translate |
Name: =/2 |
|
Name: ->/3 |
|
Name: translate_op/3 |
Module: translate |
Name: ! |
Called:
Name: translate_mpart2/5 |
Module: translate |
translate_other_defpart(Defs) --> {print_additional_machine_info},!,
mpstart('/* DEFINITIONS',P),translate_defs(Defs),insertstr(' */'),mpend(P).
translate_other_defpart(_) --> [].
Calls:
Name: =/2 |
|
Name: mpend/3 |
Module: translate |
Name: insertstr/3 |
Module: translate |
Name: translate_defs/3 |
Module: translate |
Name: mpstart/4 |
Module: translate |
Name: ! |
|
| Module: translate |
Called:
Name: translate_mpart2/5 |
Module: translate |
translate_params_for_dot(List,TransList) :-
translate_params_for_dot(List,TransList,3,-3).
Calls:
| Module: translate |
Called:
Name: cnodes2dot/2 |
Module: state_as_dot_graph |
translate_params_for_dot([],'',_,_).
translate_params_for_dot([H|T],Res,Lim,Nr) :-
translate_property_with_limit(H,100,TH),
(Nr>=Lim -> N1=1 % Limit reached, add newline
; N1 is Nr+1),
translate_params_for_dot(T,TT,Lim,N1),
string_concatenate(TH,TT,Res1),
(N1=1
-> string_concatenate(',\n',Res1,Res)
; (Nr>(-Lim) -> string_concatenate(',',Res1,Res)
; Res=Res1)).
Calls:
Name: =/2 |
|
Name: string_concatenate/3 |
Module: foo_error |
Name: >/2 |
|
Name: ->/3 |
|
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: is/2 |
|
Name: >=/2 |
|
| Module: translate |
Called:
Name: cnodes2dot/2 |
Module: state_as_dot_graph |
translate_params_for_dot_nl(List,TransList) :- % newline after every entry
translate_params_for_dot(List,TransList,1,-1).
Calls:
| Module: translate |
translate_predicate_into_machine(Pred,MchName,ResultAtom) :-
get_global_identifiers(Ignored,ignore_promoted_constants),
find_typed_identifier_uses(Pred, Ignored, TUsedIds),
get_texpr_ids(TUsedIds,UsedIds),
add_typing_predicates(TUsedIds,Pred,TPred),
set_print_type_infos(all,CHNG),
specfile:set_animation_mode(b), % clear eventb minor mode; to do: set back
translate_bexpression(TPred,PredAtom), %write(res(UsedIds,ResultAtom)),nl,
reset_print_type_infos(CHNG),
convert_and_ajoin_ids(UsedIds,AllIds),
bmachine:get_full_b_machine(_Name,BMachine),
include(relevant_section,BMachine,RelevantSections),
% TO DO: we could filter out enumerate/deferred sets not occuring in Pred
translate_section_list(RelevantSections,SetsParas),
atom_codes(ASP,SetsParas),
ajoin(['MACHINE ', MchName, '\n',ASP,'CONSTANTS ',AllIds,'\nPROPERTIES\n ',PredAtom,'\nEND\n'],ResultAtom).
Calls:
Name: ajoin/2 |
Module: foo_error |
Name: atom_codes/2 |
|
Name: translate_section_list/2 |
Module: translate |
Name: include/3 |
Module: foo_error |
Name: get_full_b_machine/2 |
Module: bmachine |
Name: convert_and_ajoin_ids/2 |
Module: translate |
Name: reset_print_type_infos/1 |
Module: translate |
Name: translate_bexpression/2 |
Module: translate |
Name: set_animation_mode/1 |
Module: specfile |
Name: set_print_type_infos/2 |
Module: translate |
Name: add_typing_predicates/3 |
Module: translate |
Name: get_texpr_ids/2 |
Module: foo_error |
Name: find_typed_identifier_uses/3 |
Module: foo_error |
Name: get_global_identifiers/2 |
Module: foo_error |
Called:
Name: compute_unsat_core/2 |
Module: disprover |
translate_pref_val(true,'TRUE').
translate_pref_val(false,'FALSE').
translate_pref_val(Nr,NrAtom) :- number(Nr),!, number_codes(Nr,C), atom_codes(NrAtom,C).
translate_pref_val(Atom,Atom) :- atom(Atom).
Calls:
Name: atom/1 |
|
Name: atom_codes/2 |
|
Name: number_codes/2 |
|
Name: ! |
|
Name: number/1 |
Called:
Name: is_set_pref_def_name/3 |
Module: translate |
translate_prolog_constructor(C,R) :- unary_prefix(C,R,_),!.
translate_prolog_constructor(C,R) :- unary_postfix(C,R,_),!.
translate_prolog_constructor(C,R) :- binary_infix_in_mode(C,R,_,_),!.
translate_prolog_constructor(C,R) :- function_like_in_mode(C,R),!.
translate_prolog_constructor(C,R) :- constants_in_mode(C,R),!.
translate_prolog_constructor(C,R) :- quantified_in_mode(C,R),!.
Calls:
Name: ! |
|
Name: quantified_in_mode/2 |
Module: translate |
Name: constants_in_mode/2 |
Module: translate |
Name: function_like_in_mode/2 |
Module: translate |
Name: binary_infix_in_mode/4 |
Module: translate |
Name: unary_postfix/3 |
Module: translate |
Name: unary_prefix/3 |
Module: translate |
Called:
| Module: translate | |
Name: ascii_to_unicode/2 |
Module: translate |
translate_prolog_constructor_in_mode(Constructor,Result) :-
unicode_mode,
unicode_translation(Constructor,Unicode),!, Result=Unicode.
translate_prolog_constructor_in_mode(Constructor,Result) :-
latex_mode,
latex_translation(Constructor,Latex),!, Result=Latex.
translate_prolog_constructor_in_mode(C,R) :- translate_prolog_constructor(C,R).
Calls:
| Module: translate | |
Name: =/2 |
|
Name: ! |
|
Name: latex_translation/2 |
Module: translate |
Name: latex_mode |
dynamic predicate |
Name: unicode_translation/2 |
Module: translate |
Name: unicode_mode |
dynamic predicate |
Called:
Name: x_functor_to_label/2 |
Module: bvisual |
translate_prolog_error(existence_error(procedure,Pred),_,S) :- !,
translate_term_into_atom_with_max_depth('Unknown Prolog predicate:'(Pred),8,S).
translate_prolog_error(existence_error(source_sink,File),_,S) :- !,
translate_term_into_atom_with_max_depth('File does not exist:'(File),8,S).
translate_prolog_error(permission_error(Action,source_sink,File),_,S) :- !, % Action = open, ...
ajoin(['Permission denied to ',Action,' the file: ',File],S).
translate_prolog_error(permission_error(Action,past_end_of_stream,File),_,S) :- !, % Action = open, ...
ajoin(['Permission denied to ',Action,' past end of file: ',File],S).
translate_prolog_error(resource_error(memory),_,S) :- !,
S = 'Resource error: Out of memory'. % GLOBALSTKSIZE=500M probcli ... could help ???
translate_prolog_error(system_error,system_error('SPIO_E_NET_CONNRESET'),S) :- !,
S = 'System error: connection to process lost (SPIO_E_NET_CONNRESET)'.
translate_prolog_error(system_error,system_error('SPIO_E_ENCODING_UNMAPPABLE'),S) :- !,
S = 'System error: illegal character or encoding encountered (SPIO_E_ENCODING_UNMAPPABLE)'.
translate_prolog_error(system_error,system_error('SPIO_E_NET_HOST_NOT_FOUND'),S) :- !,
S = 'System error: could not find host (SPIO_E_NET_HOST_NOT_FOUND)'.
translate_prolog_error(system_error,system_error('SPIO_E_CHARSET_NOT_FOUND'),S) :- !,
S = 'System error: could not find character set encoding'.
translate_prolog_error(system_error,system_error('SPIO_E_OS_ERROR'),S) :- !,
S = 'System error due to some OS/system call (SPIO_E_OS_ERROR)'.
translate_prolog_error(system_error,system_error('SPIO_E_END_OF_FILE'),S) :- !,
S = 'System error: end of file (SPIO_E_END_OF_FILE)'.
translate_prolog_error(system_error,system_error('SPIO_E_TOO_MANY_OPEN_FILES'),S) :- !,
S = 'System error: too many open files (SPIO_E_TOO_MANY_OPEN_FILES)'.
translate_prolog_error(system_error,system_error(dlopen(Msg)),S) :- !,
translate_term_into_atom_with_max_depth(Msg,4,MS),
ajoin(['System error: could not load dynamic library (you may have to right-click on the library and open it in the macOS Finder): ', MS],S).
translate_prolog_error(system_error,system_error(Err),S) :- !,
% or Err is an atom dlopen( mach-o file, but is an incompatible architecture ...)
% E.g., SPIO_E_NOT_SUPPORTED when doing open('/usr',r,S)
translate_term_into_atom_with_max_depth('System error:'(Err),8,S).
translate_prolog_error(existence_error(procedure,Module:Pred/Arity),_,S) :- !,
ajoin(['Prolog predicate does not exist: ',Module,':', Pred, '/',Arity],S).
translate_prolog_error(instantiation_error,instantiation_error(Call,_ArgNo),S) :- !,
translate_term_into_atom_with_max_depth('Prolog instantiation error:'(Call),8,S).
translate_prolog_error(uninstantiation_error(_),uninstantiation_error(Call,_ArgNo,_Culprit),S) :- !,
translate_term_into_atom_with_max_depth('Prolog uninstantiation error:'(Call),8,S).
translate_prolog_error(evaluation_error(zero_divisor),evaluation_error(Call,_,_,_),S) :- !,
translate_term_into_atom_with_max_depth('Division by zero error:'(Call),8,S).
translate_prolog_error(evaluation_error(float_overflow),evaluation_error(Call,_,_,_),S) :- !,
translate_term_into_atom_with_max_depth('Float overflow:'(Call),8,S).
translate_prolog_error(representation_error(Err),representation_error(Call,_,_),S) :-
memberchk(Err, ['CLPFD integer overflow','max_clpfd_integer','min_clpfd_integer']),!,
translate_term_into_atom_with_max_depth('Prolog CLP(FD) overflow:'(Call),8,S).
translate_prolog_error(syntax_error(Err),_,S) :- !,
translate_term_into_atom_with_max_depth('Prolog syntax error:'(Err),8,S).
translate_prolog_error(_,resource_error(open(File,Mode,_),Kind),S) :- !, % Kind e.g. file_handle
ajoin(['Resource error (',Kind,
'), could not open file ',File,' in mode ',Mode],S).
translate_prolog_error(E1,_,S) :- translate_term_into_atom_with_max_depth(E1,8,S).
Calls:
| Module: tools_meta | |
Name: ajoin/2 |
Module: foo_error |
Name: ! |
|
Name: memberchk/2 |
|
Name: =/2 |
Called:
Name: translate_error_term/3 |
Module: translate |
| Module: translate |
translate_prolog_exception(user_interrupt_signal,R) :- !, R='User-Interrupt (CTRL-C)'.
translate_prolog_exception(enumeration_warning(_,_,_,_,_),R) :- !, R='Enumeration Warning'.
translate_prolog_exception(error(E1,E2),S) :- !, translate_prolog_error(E1,E2,S).
translate_prolog_exception(E1,S) :- translate_term_into_atom_with_max_depth(E1,8,S).
Calls:
| Module: tools_meta | |
Name: translate_prolog_error/3 |
Module: translate |
Name: ! |
|
Name: =/2 |
translate_properties_with_limit([],[]).
translate_properties_with_limit([P|Prest],[Out|Orest]) :-
translate_property_with_limit(P,320,Out), % reduced limit as we now have evaluation view + possibility to inspect all of value
translate_properties_with_limit(Prest,Orest).
Calls:
Name: RECURSIVE_CALL/2 |
Module: translate |
| Module: translate |
Called:
Name: tcltk_get_state/1 |
Module: tcltk_interface |
Name: tcltk_get_state/2 |
Module: tcltk_interface |
translate_property_with_limit(Prop,Limit,Output) :-
(pp_property(Prop,Limit,Output) -> true ; (add_error(translate_property,'Could not translate property: ',Prop),Output='???')).
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: true |
|
Name: pp_property/3 |
Module: translate |
Name: ->/3 |
Called:
| Module: translate | |
| Module: translate | |
Name: get_state_property/2 |
Module: visualize_graph |
translate_raw_bexpr_with_limit(Raw,Limit,TS) :- transform_raw(Raw,TExpr),
translate_subst_or_bexpr_with_limit(TExpr,Limit,TS).
Calls:
| Module: translate | |
Name: transform_raw/2 |
Module: translate |
Called:
Name: raw_replace2/5 |
Module: input_syntax_tree |
| Module: well_def_hyps |
translate_section_list(SL,Codes) :- init_machine_translation,
translate_machine2(SL,SL,no_end,(0,Codes),(_,[])).
Calls:
Name: translate_machine2/5 |
Module: translate |
| Module: translate |
translate_set_pref_def(definition_decl(Name,_,_Pos,[],_Expr,_Deps)) -->
{is_set_pref_def_name(Name,_Pref,CurValAtom)},!,
insertstr(' '),insertstr(Name),
insertstr(' '),
{translate_in_mode(eqeq,'==',EqEqStr)}, insertstr(EqEqStr), insertstr(' '),
insertstr(CurValAtom), % pretty print current value; Expr could be a more complicated non-atomic expression
insertstr(';\n').
translate_set_pref_def(_) --> [].
Calls:
Name: =/2 |
|
Name: insertstr/3 |
Module: translate |
Name: translate_in_mode/3 |
Module: translate |
Name: ! |
|
Name: is_set_pref_def_name/3 |
Module: translate |
Called:
| Module: translate |
translate_set_pref_defs(Defs) -->
{include(is_set_pref,Defs,SPDefs),
sort(SPDefs,SortedDefs)},
translate_set_pref_defs1(SortedDefs).
Calls:
| Module: translate | |
Name: sort/2 |
|
Name: include/3 |
Module: foo_error |
Called:
Name: translate_mpart2/5 |
Module: translate |
translate_set_pref_defs1([]) --> !.
translate_set_pref_defs1([Def|Rest]) -->
translate_set_pref_def(Def),translate_set_pref_defs1(Rest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: translate_set_pref_def/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
| Module: translate |
translate_span(Span,Atom) :- translate_span(Span,only_subsidiary,Codes,[]),
atom_codes_with_limit(Atom,Codes).
Calls:
Name: atom_codes_with_limit/2 |
Module: foo_error |
Name: translate_span/4 |
Module: translate |
Called:
Name: cleanup_pre_function/7 |
Module: b_ast_cleanup |
Name: print_span/1 |
Module: translate |
Name: render_span/4 |
Module: translate |
Name: collision_precedence/3 |
Module: bmachine_construction |
Name: check_include_use/5 |
Module: bmachine_construction |
| Module: bmachine_construction | |
Name: handle_collision/8 |
Module: bmachine_construction |
Name: print_span_nl/1 |
Module: translate |
Name: translate_status/3 |
Module: predicate_debugger |
| Module: predicate_evaluator | |
| Module: kernel_objects | |
| Module: translate |
translate_span(Span,_) --> {var(Span)},!, {add_internal_error('Variable span:',translate_span(Span,_))}, "_".
translate_span(Span,PrintFileNames) --> {extract_line_col(Span,Srow,Scol,_Erow,_Ecol)},!,
"(Line:",ppterm(Srow)," Col:",ppterm(Scol),
"-",ppterm(Erow),":",ppterm(Ecol),
translate_span_file_opt(Span,PrintFileNames),
% TO DO: print short version of extract_additional_description ?
")".
translate_span(Span,_PrintFileNames) --> {extract_symbolic_label(Span,Label)},!, "(label @",ppterm(Label),")".
translate_span(Span,PrintFileNames) -->
% for Event-B, e.g., line-col fails but we can get a section/file name
"(File:",translate_span_file(Span,PrintFileNames),!,")".
translate_span(_,_PrintFileNames) --> "".
Calls:
Name: =/2 |
|
Name: ! |
|
Name: translate_span_file/4 |
Module: translate |
Name: ppterm/3 |
Module: translate |
Name: extract_symbolic_label/2 |
Module: foo_error |
| Module: translate | |
Name: extract_line_col/5 |
Module: foo_error |
Name: add_internal_error/2 |
Module: foo_error |
Name: var/1 |
Called:
Name: cleanup_pre_function/7 |
Module: b_ast_cleanup |
Name: print_span/1 |
Module: translate |
Name: render_span/4 |
Module: translate |
Name: collision_precedence/3 |
Module: bmachine_construction |
Name: check_include_use/5 |
Module: bmachine_construction |
| Module: bmachine_construction | |
Name: handle_collision/8 |
Module: bmachine_construction |
Name: print_span_nl/1 |
Module: translate |
Name: translate_status/3 |
Module: predicate_debugger |
| Module: predicate_evaluator | |
| Module: kernel_objects | |
| Module: translate |
translate_span_file(Span,always_print_filename) -->
{extract_tail_file_name(Span,Filename)},!,
%{bmachine:b_get_main_filenumber(MainFN), Nr \= MainFN},!,
" File:", ppterm(Filename).
translate_span_file(Span,_) -->
{extract_subsidiary_tail_file_name(Span,Filename)},
%{bmachine:b_get_main_filenumber(MainFN), Nr \= MainFN},!,
!,
" File:", ppterm(Filename).
Calls:
Name: ppterm/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
|
Name: extract_subsidiary_tail_file_name/2 |
Module: foo_error |
Name: extract_tail_file_name/2 |
Module: foo_error |
Called:
| Module: translate | |
Name: translate_span/4 |
Module: translate |
translate_span_file_opt(Span,Print) --> translate_span_file(Span,Print),!.
translate_span_file_opt(_,_) --> "".
Calls:
Name: =/2 |
|
Name: ! |
|
Name: translate_span_file/4 |
Module: translate |
Called:
Name: translate_span/4 |
Module: translate |
translate_span_with_filename(Span,Atom) :-
translate_span(Span,always_print_filename,Codes,[]),
atom_codes_with_limit(Atom,Codes).
Calls:
Name: atom_codes_with_limit/2 |
Module: foo_error |
Name: translate_span/4 |
Module: translate |
Called:
| Module: translate | |
| Module: bmachine | |
Name: check_write/3 |
Module: bmachine |
Name: check_read/3 |
Module: bmachine |
| Module: bmachine | |
| Module: bmachine |
translate_state_error(abort_error(_TYPE,Msg,ErrTerm,ErrorContext),Out) :- !,
translate_error_term(ErrTerm,ES),
translate_error_context(ErrorContext,EC),
ajoin([EC,': ',Msg,': ',ES],Out).
translate_state_error(clpfd_overflow_error(Context),Out) :- !, % 'CLPFD_integer_overflow'
ajoin(['CLPFD integer overflow while ', Context],Out).
translate_state_error(max_state_errors_reached(Nr),Out) :- !,
ajoin(['Max. number of state errors reached: ', Nr],Out).
translate_state_error(Unknown,Out) :-
add_error(translate_state_error,'Unknown state error: ',Unknown),
Out = '*** Unknown State Error ***'.
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: ajoin/2 |
Module: foo_error |
Name: ! |
|
| Module: translate | |
Name: translate_error_term/2 |
Module: translate |
Called:
Name: convert_error/2 |
Module: prob2_interface |
Name: translate_state_errors/2 |
Module: translate |
translate_state_errors([],[]).
translate_state_errors([E|ERest],[Out|ORest]) :-
( E = eventerror(Event,EError,_) ->
translate_event_error(EError,Msg),
ajoin([Event,': ',Msg],Out)
; translate_state_error(E,Out) -> true
; functor(E,Out,_) ),
translate_state_errors(ERest,ORest).
Calls:
Name: RECURSIVE_CALL/2 |
Module: translate |
Name: functor/3 |
|
Name: true |
|
Name: translate_state_error/2 |
Module: translate |
Name: ->/3 |
|
Name: ajoin/2 |
Module: foo_error |
Name: translate_event_error/2 |
Module: translate |
Name: =/2 |
translate_subst(TS) -->
( {get_texpr_expr(TS,S)} ->
translate_subst2(S)
; translate_subst2(TS)).
Calls:
Name: translate_subst2/3 |
Module: translate |
Name: get_texpr_expr/2 |
Module: foo_error |
Name: ->/3 |
Called:
| Module: translate | |
Name: split_over_lines2/6 |
Module: translate |
Name: translate_subst_check/3 |
Module: translate |
| Module: translate |
translate_subst2(Var) --> {var(Var)}, !, "_", {add_warning(translate_subst,'Variable subst:',Var)}.
translate_subst2(skip) -->
indent(skip).
translate_subst2(operation(Id,Res,Params,Body)) --> translate_operation(Id,Res,Params,Body). % not really a substition that can appear normally
translate_subst2(precondition(P,S)) -->
indent('PRE '), pred_over_lines(2,'@grd',P), indent('THEN'), insert_subst(S), indent('END').
translate_subst2(assertion(P,S)) -->
indent('ASSERT '), pp_expr_indent(P), indent('THEN'), insert_subst(S), indent('END').
translate_subst2(witness_then(P,S)) -->
indent('WITNESS '), pp_expr_indent(P), indent('THEN'), insert_subst(S), indent('END').
translate_subst2(block(S)) -->
indent('BEGIN'), insert_subst(S), indent('END').
translate_subst2(assign([L],[R])) --> !,
indent,pp_expr_indent(L),insertstr(' := '),pp_expr_indent(R).
translate_subst2(assign(L,R)) -->
{(member(b(E,_,_),R), can_indent_expr(E)
-> maplist(create_assign,L,R,ParAssigns))},!, % split into parallel assignments so that we can indent
translate_subst2(parallel(ParAssigns)).
translate_subst2(assign(L,R)) -->
indent,pp_expr_indent_l(L),insertstr(' := '),pp_expr_indent_l(R).
translate_subst2(assign_single_id(L,R)) -->
translate_subst2(assign([L],[R])).
translate_subst2(becomes_element_of(L,R)) -->
indent,pp_expr_indent_l(L),insertstr(' :: '),pp_expr_indent(R).
translate_subst2(becomes_such(L,R)) -->
indent,pp_expr_indent_l(L),insertstr(' : '), insertstr('('),
{ add_optional_typing_predicates(L,R,R1) },
pp_expr_indent(R1), insertstr(')').
translate_subst2(evb2_becomes_such(L,R)) --> translate_subst2(becomes_such(L,R)).
translate_subst2(if([Elsif|Rest])) -->
{ get_if_elsif(Elsif,P,S) },
indent('IF '), pp_expr_indent(P), insertstr(' THEN'),
insert_subst(S),
translate_ifs(Rest).
translate_subst2(if_elsif(P,S)) --> % not a legal top-level construct; but can be called in b_portray_hook
indent('IF '), pp_expr_indent(P), insertstr(' THEN'),
insert_subst(S),
indent('END').
translate_subst2(choice(Ss)) --> indent(' CHOICE'),
split_over_lines(Ss,'OR'),
indent('END'). % indentation seems too far
translate_subst2(parallel(Ss)) -->
split_over_lines(Ss,'||').
translate_subst2(init_statement(S)) --> insert_subst(S).
translate_subst2(sequence(Ss)) -->
split_over_lines(Ss,';').
translate_subst2(operation_call(Id,Rs,As)) -->
indent,translate_op_results(Rs),
pp_expr_indent(Id),
translate_op_params(As).
translate_subst2(identifier(op(Id))) --> % shouldn't normally appear
indent,pp_expr_indent(identifier(Id)).
translate_subst2(external_subst_call(Symbol,Args)) -->
indent,
pp_expr_indent(identifier(Symbol)),
translate_op_params(Args).
translate_subst2(any(Ids,Pred,Subst)) -->
indent('ANY '), pp_expr_indent_l(Ids),
indent('WHERE '),
{add_optional_typing_predicates(Ids,Pred,Pred2)},
pred_over_lines(2,'@grd',Pred2), indent('THEN'),
insert_subst(Subst),
indent('END').
translate_subst2(select(Whens)) -->
translate_whens(Whens,'SELECT '),
indent('END').
translate_subst2(select_when(Cond,Then)) --> % not a legal top-level construct; but can be called in b_portray_hook
indent('WHEN'),
pp_expr_indent(Cond),
indent('THEN'),
insert_subst(Then),
indent('END').
translate_subst2(select(Whens,Else)) -->
translate_whens(Whens,'SELECT '),
indent('ELSE'), insert_subst(Else),
indent('END').
translate_subst2(var(Ids,S)) -->
indent('VAR '),
pp_expr_indent_l(Ids),
indent('IN'),insert_subst(S),
indent('END').
translate_subst2(let(Ids,P,S)) -->
indent('LET '),
pp_expr_indent_l(Ids),
insertstr(' BE '), pp_expr_indent(P),
indent('IN'), insert_subst(S),
indent('END').
translate_subst2(lazy_let_subst(TID,P,S)) -->
indent('LET '),
pp_expr_indent_l([TID]),
insertstr(' BE '), pp_expr_indent(P), % could be expr or pred
indent('IN'), insert_subst(S),
indent('END').
translate_subst2(case(Expression,Cases,ELSE)) -->
% CASE E OF EITHER m THEN G OR n THEN H ... ELSE I END END
indent('CASE '),
pp_expr_indent(Expression), insertstr(' OF'),
indent('EITHER '), translate_cases(Cases),
indent('ELSE '), insert_subst(ELSE), % we could drop this if ELSE is skip ?
indent('END END').
translate_subst2(while(Pred,Subst,Inv,Var)) -->
indent('WHILE '), pp_expr_indent(Pred),
indent('DO'),insert_subst(Subst),
indent('INVARIANT '),pp_expr_indent(Inv),
indent('VARIANT '),pp_expr_indent(Var),
indent('END').
translate_subst2(while1(Pred,Subst,Inv,Var)) -->
indent('WHILE /* 1 */ '), pp_expr_indent(Pred),
indent('DO'),insert_subst(Subst),
indent('INVARIANT '),pp_expr_indent(Inv),
indent('VARIANT '),pp_expr_indent(Var),
indent('END').
translate_subst2(rlevent(Id,Section,Status,Parameters,Guard,Theorems,Actions,VWitnesses,PWitnesses,_Unmod,Refines)) -->
indent,
insert_status(Status),
insertstr('EVENT '),
({Id = 'INITIALISATION'}
-> [] % avoid BLexer error in ProB2-UI, BLexerException: Invalid combination of symbols: 'INITIALISATION' and '='.
; insertstr(Id), insertstr(' = ')),
insertstr('/'), insertstr('* of machine '),
insertstr(Section),insertstr(' */'),
insert_variant(Status),
( {Parameters=[], get_texpr_expr(Guard,truth)} ->
{NoGuard=true} % indent('BEGIN ')
; {Parameters=[]} ->
indent('WHEN '),
pred_over_lines(2,'@grd',Guard)
;
indent('ANY '),pp_expr_indent_l(Parameters),
indent('WHERE '),
pred_over_lines(2,'@grd',Guard)
),
( {VWitnesses=[],PWitnesses=[]} ->
[]
;
{append(VWitnesses,PWitnesses,Witnesses)},
indent('WITH '),pp_witness_l(Witnesses)
),
{( Actions=[] ->
create_texpr(skip,subst,[],Subst)
;
create_texpr(parallel(Actions),subst,[],Subst)
)},
( {Theorems=[]} -> {true}
;
indent('THEOREMS '),
preds_over_lines(2,'@thm',Theorems)
),
({NoGuard==true}
-> indent('BEGIN ') % avoid BLexer errors in ProB2-UI Syntax highlighting
; indent('THEN ')
),
insert_subst(Subst),
pp_refines_l(Refines,Id),
indent('END').
Calls:
Name: indent/3 |
Module: translate |
Name: pp_refines_l/4 |
Module: translate |
Name: insert_subst/3 |
Module: translate |
Name: ==/2 |
|
Name: ->/3 |
|
Name: preds_over_lines/5 |
Module: translate |
Name: =/2 |
|
Name: create_texpr/4 |
Module: foo_error |
Name: pp_witness_l/3 |
Module: translate |
Name: append/3 |
|
Name: pred_over_lines/5 |
Module: translate |
Name: pp_expr_indent_l/3 |
Module: translate |
Name: get_texpr_expr/2 |
Module: foo_error |
Name: insert_variant/3 |
Module: translate |
Name: insertstr/3 |
Module: translate |
Name: insert_status/3 |
Module: translate |
Name: indent/2 |
Module: foo_error |
Name: pp_expr_indent/3 |
Module: translate |
Name: translate_cases/3 |
Module: translate |
Name: translate_whens/4 |
Module: translate |
| Module: translate | |
Name: translate_op_params/3 |
Module: translate |
Name: translate_op_results/3 |
Module: translate |
Name: split_over_lines/4 |
Module: translate |
Name: translate_ifs/3 |
Module: translate |
Name: get_if_elsif/3 |
Module: translate |
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ! |
|
Name: maplist/4 |
Module: foo_error |
Name: can_indent_expr/1 |
Module: translate |
Name: member/2 |
|
Name: ->/2 |
|
Name: translate_operation/6 |
Module: translate |
Name: add_warning/3 |
Module: foo_error |
Name: var/1 |
Called:
Name: translate_subst/3 |
Module: translate |
| Module: translate |
translate_subst_begin_end(TSubst) -->
{get_texpr_expr(TSubst,Subst),subst_needs_begin_end(Subst),
create_texpr(block(TSubst),subst,[],Block)},!,
translate_subst(Block).
translate_subst_begin_end(Subst) -->
translate_subst(Subst).
Calls:
Name: translate_subst/3 |
Module: translate |
Name: ! |
|
Name: create_texpr/4 |
Module: foo_error |
Name: subst_needs_begin_end/1 |
Module: translate |
Name: get_texpr_expr/2 |
Module: foo_error |
Called:
Name: translate_inits2/3 |
Module: translate |
Name: translate_operation/6 |
Module: translate |
Name: translate_inits/3 |
Module: translate |
Name: translate_def_body/4 |
Module: translate |
translate_subst_check(S) --> translate_subst(S),!.
translate_subst_check(S) -->
{b_functor(S,F,A),add_error(translate_subst,'Could not translate substitution: ',F/A-S),fail}.
Calls:
Name: =/2 |
|
Name: fail |
|
Name: add_error/3 |
Module: foo_error |
Name: b_functor/3 |
Module: translate |
Name: ! |
|
Name: translate_subst/3 |
Module: translate |
Called:
Name: insert_subst/3 |
Module: translate |
Name: split_over_lines/4 |
Module: translate |
translate_subst_or_bexpr(Stmt,String) :- get_texpr_type(Stmt,subst),!,
translate_substitution(Stmt,String).
translate_subst_or_bexpr(ExprOrPred,String) :-
translate_bexpression(ExprOrPred,String).
Calls:
Name: translate_bexpression/2 |
Module: translate |
Name: translate_substitution/2 |
Module: translate |
Name: ! |
|
Name: get_texpr_type/2 |
Module: foo_error |
Called:
Name: prepare_solution/6 |
Module: synthesis_util |
Name: show_source/1 |
Module: prob_cli |
Name: print_expr/3 |
Module: latex_processor |
translate_subst_or_bexpr_in_mode(Mode,TExpr,String) :-
with_translation_mode(Mode, translate_subst_or_bexpr(TExpr,String)).
Calls:
Name: with_translation_mode/2 |
Module: translate |
Called:
Name: create_temp_file/4 |
Module: atelierb_provers_interface |
translate_subst_or_bexpr_with_limit(Stmt,Limit,String) :-
translate_subst_or_bexpr_with_limit(Stmt,Limit,report_errors,String).
Calls:
| Module: translate |
Called:
Name: translate_bexpr/2 |
Module: error_manager |
| Module: translate |
translate_subst_or_bexpr_with_limit(Stmt,_Limit,ReportErrors,String) :- get_texpr_type(Stmt,subst),!,
translate_substitution(Stmt,String,ReportErrors). % TO DO: use limit
translate_subst_or_bexpr_with_limit(ExprOrPred,Limit,ReportErrors,String) :-
translate_bexpression_with_limit(ExprOrPred,Limit,ReportErrors,String).
Calls:
| Module: translate | |
Name: translate_substitution/3 |
Module: translate |
Name: ! |
|
Name: get_texpr_type/2 |
Module: foo_error |
Called:
Name: translate_bexpr/2 |
Module: error_manager |
| Module: translate |
translate_subst_with_indention(TS,Indention,I,O) :-
translate_subst(TS,(Indention,I),(_,O)).
Calls:
Name: translate_subst/3 |
Module: translate |
Called:
Name: translate_substitution/3 |
Module: translate |
translate_subst_with_indention_and_label(TS,Indention,I,O) :-
translate_subst_with_label(TS,(Indention,I),(_,O)).
Calls:
| Module: translate |
Called:
| Module: translate |
translate_subst_with_label(TS) -->
( {get_texpr_expr(TS,S)} ->
indent_rodin_label(TS), % pretty print substitution labels
translate_subst2(S)
; translate_subst2(TS)).
Calls:
Name: translate_subst2/3 |
Module: translate |
Name: indent_rodin_label/3 |
Module: translate |
Name: get_texpr_expr/2 |
Module: foo_error |
Name: ->/3 |
Called:
| Module: translate |
translate_substitution(Stmt,String) :- translate_substitution(Stmt,String,report_errors).
Calls:
Name: translate_substitution/3 |
Module: translate |
Called:
| Module: translate | |
| Module: tcltk_interface | |
| Module: enabling_predicates | |
Name: eval_codes_aux0/6 |
Module: eval_strings |
Name: b_execute_statement2/8 |
Module: b_interpreter |
| Module: weakest_preconditions | |
Name: print_subst/1 |
Module: translate |
translate_substitution(Stmt,String,_) :-
translate_subst_with_indention(Stmt,0,Codes,[]),
(Codes = [10|C] -> true ; Codes=[13|C] -> true ; Codes=C), % peel off leading newline
atom_codes_with_limit(String, C),!.
translate_substitution(Stmt,String,report_errors) :-
add_error(translate_substitution,'Could not translate substitution: ',Stmt),
String='???'.
Calls:
Name: =/2 |
|
Name: add_error/3 |
Module: foo_error |
Name: ! |
|
Name: atom_codes_with_limit/2 |
Module: foo_error |
Name: true |
|
Name: ->/3 |
|
| Module: translate |
Called:
| Module: translate | |
| Module: tcltk_interface | |
| Module: enabling_predicates | |
Name: eval_codes_aux0/6 |
Module: eval_strings |
Name: b_execute_statement2/8 |
Module: b_interpreter |
| Module: weakest_preconditions | |
Name: print_subst/1 |
Module: translate |
translate_used([]) --> !.
translate_used([Used|Rest]) -->
translate_used2(Used),
translate_used(Rest).
Calls:
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: translate_used2/3 |
Module: translate |
Name: =/2 |
|
Name: ! |
Called:
Name: translate_mpart2/5 |
Module: translate |
translate_used2(includeduse(Name,Id,NewTExpr)) -->
indent,pp_expr_indent(NewTExpr),
insertstr(' --> '), insertstr(Name), insertstr(':'), insertstr(Id).
Calls:
Name: insertstr/3 |
Module: translate |
Name: pp_expr_indent/3 |
Module: translate |
Name: indent/2 |
Module: foo_error |
Called:
Name: translate_used/3 |
Module: translate |
translate_whens([],_) --> !.
translate_whens([When|Rest],T) -->
{get_texpr_expr(When,select_when(P,S))},!,
indent(T), pred_over_lines(2,'@grd',P),
indent('THEN '),
insert_subst(S),
translate_whens(Rest,'WHEN ').
translate_whens(L,_) -->
{add_internal_error('Cannot translate WHEN: ',translate_whens(L,_,_,_))}.
Calls:
Name: =/2 |
|
Name: add_internal_error/2 |
Module: foo_error |
Name: RECURSIVE_CALL/4 |
Module: translate |
Name: insert_subst/3 |
Module: translate |
Name: indent/3 |
Module: translate |
Name: pred_over_lines/5 |
Module: translate |
Name: ! |
|
Name: get_texpr_expr/2 |
Module: foo_error |
Called:
Name: translate_subst2/3 |
Module: translate |
translate_xtl_value(Value,Output) :-
pp_xtl_value(Value,Codes,[]),
atom_codes_with_limit(Output,Codes).
Calls:
Name: atom_codes_with_limit/2 |
Module: foo_error |
Name: pp_xtl_value/3 |
Module: translate |
Called:
Name: mytranslate/2 |
Module: b_trace_checking |
Name: translate_event2/3 |
Module: translate |
Name: print_state/1 |
Module: translate |
translated_identifier('_zzzz_binary',R) :- !,
(latex_mode -> R='z''''' ; R='z__'). % TO DO: could cause clash with user IDs
translated_identifier('_zzzz_unary',R) :- !,
(latex_mode -> R='z''' ; R='z_'). % TO DO: ditto
translated_identifier('__RANGE_LAMBDA__',R) :- !,
(latex_mode -> R='\\rho\'' ; unicode_mode -> R= '\x03c1\' % RHO
; R = 'RANGE_LAMBDA__'). %ditto, could clash with user IDs !!
translated_identifier(ID,Result) :-
latex_mode,!,
my_greek_latex_escape_atom(ID,Greek,Res), %print_message(translate_latex(ID,Greek,Res)),
(Greek=greek -> Result = Res ; ajoin(['\\mathit{',Res,'}'],Result)).
translated_identifier(X,X).
Calls:
Name: ajoin/2 |
Module: foo_error |
Name: =/2 |
|
Name: ->/3 |
|
| Module: translate | |
Name: ! |
|
Name: latex_mode |
dynamic predicate |
Name: unicode_mode |
dynamic predicate |
Called:
Name: pp_expr2/5 |
Module: translate |
Name: render_para_name/3 |
Module: translate |
treat_constants([]).
treat_constants([bind(CstName,Val)|T]) :-
((Val=fd(X,GSet),b_global_deferred_set(GSet))
-> (deferred_set_constant(GSet,X,_)
-> true /* duplicate def of value */
; assertz(deferred_set_constant(GSet,X,CstName))
)
; true
),
treat_constants(T).
Calls:
Name: RECURSIVE_CALL/1 |
Module: translate |
Name: true |
|
Name: assertz/1 |
|
Name: deferred_set_constant/3 |
dynamic predicate |
Name: ->/3 |
|
Name: b_global_deferred_set/1 |
Module: foo_error |
Name: =/2 |
Called:
| Module: translate |
try_get_identifier(Expr,Id) :- (get_texpr_id(Expr,Id) -> true ; get_was_identifier(Expr,Id)).
Calls:
Name: get_was_identifier/2 |
Module: translate |
Name: true |
|
Name: get_texpr_id/2 |
Module: foo_error |
Name: ->/3 |
Called:
Name: STORE/4 |
Module: external_functions |
Name: render_function_name/3 |
Module: translate |
try_pp_b_state(VAR,_) --> {var(VAR)},!, "_?VAR?_", {add_error(pp_b_state,'Variable state: ',VAR)}.
try_pp_b_state(root,_) --> !, "root".
try_pp_b_state(concrete_constants(Constants),Limit) --> !,"Constants: ",
pp_b_state(Constants,Limit).
try_pp_b_state(const_and_vars(ID,Vars),Limit) --> !,
"Constants:",ppterm(ID),", Vars:",
{set_translation_constants(ID)}, /* extract constants which stand for deferred set elements */
pp_b_state(Vars,Limit),
{clear_translation_constants}.
try_pp_b_state(expanded_const_and_vars(ID,Vars,_,_Infos),Limit) --> !, "EXPANDED ",
try_pp_b_state(const_and_vars(ID,Vars),Limit).
try_pp_b_state(expanded_vars(Vars,_Infos),Limit) --> !, "EXPANDED ",
try_pp_b_state(Vars,Limit).
try_pp_b_state([],_) --> !, "/* empty state */".
try_pp_b_state([bind(Varname,Value)|Rest],Limit) --> !,
"( ",ppterm(Varname),"=",
dcg_set_up_limit_reached(Limit,LimitReached),
pp_value(Value,LimitReached),
({Rest = []} -> []; " ",and_symbol,"\n "),
pp_b_state_list(Rest,Limit).
Calls:
Name: pp_b_state_list/4 |
Module: translate |
Name: =/2 |
|
Name: and_symbol/2 |
Module: foo_error |
Name: ->/3 |
|
Name: pp_value/4 |
Module: translate |
| Module: translate | |
Name: ppterm/3 |
Module: translate |
Name: ! |
|
Name: RECURSIVE_CALL/4 |
Module: translate |
| Module: translate | |
Name: pp_b_state/4 |
Module: translate |
| Module: translate | |
Name: add_error/3 |
Module: foo_error |
Name: var/1 |
Called:
Name: pp_any_state/4 |
Module: translate |
Name: pp_b_state/4 |
Module: translate |
type_info_setting(none,false,false).
type_info_setting(needed,false,true).
type_info_setting(all,true,true).
Called:
Name: set_print_type_infos/2 |
Module: translate |
type_infos_in_subst([],Subst,Subst) :- !.
type_infos_in_subst(Ids,SubstIn,SubstOut) :-
get_preference(translate_print_typing_infos,true),!,
type_infos_in_subst2(Ids,SubstIn,SubstOut).
type_infos_in_subst(_Ids,Subst,Subst).
Calls:
Name: type_infos_in_subst2/3 |
Module: translate |
Name: ! |
|
Name: get_preference/2 |
Module: preferences |
Called:
Name: translate_operation/6 |
Module: translate |
type_infos_in_subst2(Ids,SubstIn,SubstOut) :-
get_texpr_expr(SubstIn,precondition(P1,S)),!,
get_texpr_info(SubstIn,Info),
create_texpr(precondition(P2,S),pred,Info,SubstOut),
add_typing_predicates(Ids,P1,P2).
type_infos_in_subst2(Ids,SubstIn,SubstOut) :-
create_texpr(precondition(P,SubstIn),pred,[],SubstOut),
generate_typing_predicates(Ids,Typing),
conjunct_predicates(Typing,P).
Calls:
Name: conjunct_predicates/2 |
Module: foo_error |
| Module: translate | |
Name: create_texpr/4 |
Module: foo_error |
Name: add_typing_predicates/3 |
Module: translate |
Name: get_texpr_info/2 |
Module: foo_error |
Name: ! |
|
Name: get_texpr_expr/2 |
Module: foo_error |
Called:
Name: type_infos_in_subst/3 |
Module: translate |
unary_postfix(reverse,'~',230). % relational inverse
Called:
Name: kernel_predicate/7 |
Module: kernel_mappings |
| Module: translate | |
Name: unary_postfix_in_mode/3 |
Module: translate |
unary_postfix_in_mode(Op,Trans2,Prio) :-
unary_postfix(Op,Trans,Prio), % write(op(Op,Trans)),nl,
translate_in_mode(Op,Trans,Trans2).
Calls:
Name: translate_in_mode/3 |
Module: translate |
Name: unary_postfix/3 |
Module: translate |
Called:
Name: pp_expr2/5 |
Module: translate |
| Module: translate |
unary_prefix(unary_minus,-,210).
unary_prefix(unary_minus_real,-,210).
unary_prefix(mu,'MU',210) :- animation_minor_mode(z).
Calls:
Name: animation_minor_mode/1 |
Module: specfile |
Called:
Name: kernel_predicate/7 |
Module: kernel_mappings |
| Module: translate | |
Name: pp_expr2/5 |
Module: translate |
unary_prefix_parentheses(compaction,'compaction').
unary_prefix_parentheses(bag_items,'bag_items').
unary_prefix_parentheses(mu,'MU') :- \+ animation_minor_mode(z). % write with () for external function
Calls:
Name: animation_minor_mode/1 |
Module: specfile |
Name: not/1 |
Called:
Name: pp_expr2/5 |
Module: translate |
underscore_symbol --> {latex_mode},!, "\\_".
underscore_symbol --> "_".
unicode_translation(implication, '\x21D2\').
unicode_translation(conjunct,'\x2227\').
unicode_translation(disjunct,'\x2228\').
unicode_translation(negation,'\xAC\').
unicode_translation(equivalence,'\x21D4\').
unicode_translation(not_equal,'\x2260\').
unicode_translation(less_equal,'\x2264\').
unicode_translation(less_equal_real,'\x2264\').
unicode_translation(greater_equal,'\x2265\').
unicode_translation(member,'\x2208\').
unicode_translation(not_member,'\x2209\').
unicode_translation(subset,'\x2286\').
unicode_translation(subset_strict,'\x2282\').
unicode_translation(not_subset,'\x2288\').
unicode_translation(not_subset_strict,'\x2284\').
unicode_translation(supseteq,'\x2287\'). % ProB parser supports unicode symbol by reversing arguments
unicode_translation(supset_strict,'\x2283\'). % ditto
unicode_translation(not_supseteq,'\x2289\'). % ditto
unicode_translation(not_supset_strict,'\x2285\'). % ditto
unicode_translation(union,'\x222A\').
unicode_translation(intersection,'\x2229\').
unicode_translation(cartesian_product,'\xD7\'). % also 0x2217 in Camille or 0x2A2F (vector or cross product) in IDP
unicode_translation(couple,'\x21A6\').
unicode_translation(div,'\xF7\').
unicode_translation(dot_symbol,'\xB7\'). % not a B AST operator, cf dot_symbol 183
unicode_translation(floored_div,'\xF7\') :-
animation_minor_mode(tla). % should we provide another Unicode character here for B?
unicode_translation(power_of,'\x02C4\'). % version of ^, does not exist in Rodin ?!, upwards arrow x2191 used below for restrict front
unicode_translation(power_of_real,'\x02C4\').
unicode_translation(interval,'\x2025\').
unicode_translation(domain_restriction,'\x25C1\').
unicode_translation(domain_subtraction,'\x2A64\').
unicode_translation(range_restriction,'\x25B7\').
unicode_translation(range_subtraction,'\x2A65\').
unicode_translation(relations,'\x2194\').
unicode_translation(partial_function,'\x21F8\').
unicode_translation(total_function,'\x2192\').
unicode_translation(partial_injection,'\x2914\').
unicode_translation(partial_surjection,'\x2900\').
unicode_translation(total_injection,'\x21A3\').
unicode_translation(total_surjection,'\x21A0\').
unicode_translation(total_bijection,'\x2916\').
unicode_translation('INTEGER','\x2124\').
unicode_translation('NATURAL','\x2115\').
unicode_translation('NATURAL1','\x2115\\x2081\'). % \x2115\ is subscript 1
unicode_translation('REAL','\x211D\'). % 8477 in decimal
unicode_translation(real_set,'\x211D\').
unicode_translation(pow_subset,'\x2119\').
unicode_translation(pow1_subset,'\x2119\\x2081\'). % \x2115\ is subscript 1
unicode_translation(lambda,'\x3BB\').
unicode_translation(general_product,'\x220F\').
unicode_translation(general_sum,'\x2211\').
unicode_translation(quantified_union,'\x22C3\'). % 8899 in decimal
unicode_translation(quantified_intersection,'\x22C2\'). % 8898 in decimal
unicode_translation(empty_set,'\x2205\').
unicode_translation(truth,'\x22A4\'). % 8868 in decimal
unicode_translation(falsity,'\x22A5\'). % 8869 in decimal
unicode_translation(direct_product,'\x2297\').
unicode_translation(parallel_product,'\x2225\').
unicode_translation(reverse,'\x207B\\xB9\') :- \+ force_eventb_rodin_mode. % the one ยน is ASCII 185
unicode_translation(concat,'\x2312\'). % Arc character
unicode_translation(insert_front,'\x21FE\').
unicode_translation(insert_tail,'\x21FD\').
unicode_translation(restrict_front,'\x2191\'). % up arrow
unicode_translation(restrict_tail,'\x2192\').
unicode_translation(forall, '\x2200\'). % usually forall_symbol used
unicode_translation(exists, '\x2203\'). % usually exists_symbol used
unicode_translation(eqeq,'\x225c\').
unicode_translation(ring,'\x2218\'). % from Event-B
unicode_translation(typeof,'\x2982\'). % Event-B oftype operator
Calls:
Name: force_eventb_rodin_mode |
dynamic predicate |
Name: not/1 |
|
Name: animation_minor_mode/1 |
Module: specfile |
Called:
Name: integer_set_mapping/3 |
Module: translate |
Name: is_empty_set_value/1 |
Module: bvisual |
Name: latex_to_unicode/2 |
Module: translate |
Name: render_quantifier/3 |
Module: translate |
Name: translate_in_mode/3 |
Module: translate |
Name: ascii_to_unicode/2 |
Module: translate |
Name: real_set_mapping/2 |
Module: translate |
| Module: translate | |
Name: render_operator_arg/3 |
Module: translate |
unset_atelierb_mode :-
(retract(atelierb_mode(_)) -> true ; add_internal_error('Was not in Atelier-B mode: ',unset_atelierb_mode)).
Calls:
Name: add_internal_error/2 |
Module: foo_error |
Name: true |
|
Name: atelierb_mode/1 |
dynamic predicate |
Name: retract/1 |
|
Name: ->/3 |
Called:
Name: unset_translation_mode/1 |
Module: translate |
unset_force_eventb_mode :-
(retract(force_eventb_rodin_mode) -> true ; add_internal_error('Was not in forced Event-B mode: ',force_eventb_rodin_mode)).
Calls:
Name: add_internal_error/2 |
Module: foo_error |
Name: true |
|
Name: force_eventb_rodin_mode |
dynamic predicate |
Name: retract/1 |
|
Name: ->/3 |
unset_latex_mode :-
(retract(latex_mode) -> true
; add_internal_error('Was not in Latex mode: ',unset_latex_mode)).
Calls:
Name: add_internal_error/2 |
Module: foo_error |
Name: true |
|
Name: latex_mode |
dynamic predicate |
Name: retract/1 |
|
Name: ->/3 |
Called:
Name: unset_translation_mode/1 |
Module: translate |
unset_translation_mode(ascii) :- !.
unset_translation_mode(unicode) :- !,unset_unicode_mode.
unset_translation_mode(latex) :- !,unset_latex_mode.
unset_translation_mode(atelierb) :- !,unset_atelierb_mode.
unset_translation_mode(atelierb_pp) :- !,unset_atelierb_mode.
unset_translation_mode(atelierb_ml) :- !,unset_atelierb_mode.
unset_translation_mode(Mode) :- add_internal_error('Illegal mode:',unset_translation_mode(Mode)).
Calls:
Name: add_internal_error/2 |
Module: foo_error |
Name: unset_atelierb_mode/0 |
Module: translate |
Name: ! |
|
Name: unset_latex_mode/0 |
Module: translate |
Name: unset_unicode_mode/0 |
Module: translate |
unset_unicode_mode :-
(retract(unicode_mode) -> true ; add_internal_error('Was not in Unicode mode: ',unset_unicode_mode)).
Calls:
Name: add_internal_error/2 |
Module: foo_error |
Name: true |
|
Name: unicode_mode |
dynamic predicate |
Name: retract/1 |
|
Name: ->/3 |
Called:
Name: to_string_aux/3 |
Module: kernel_strings |
Name: to_string_aux_typed/4 |
Module: kernel_strings |
Name: reset_prefs/1 |
Module: bvisual |
Name: unset_translation_mode/1 |
Module: translate |
use_colour_codes :- \+ no_color,
get_preference(pp_with_terminal_colour,true).
Calls:
Name: get_preference/2 |
Module: preferences |
Name: no_color/0 |
Module: tools_printing |
Name: not/1 |
Called:
Name: pp_colour_code/3 |
Module: translate |
Name: colour_translation/3 |
Module: translate |
var_not_really_modified(PriorState,bind(Var,Val)) :-
(member(bind(Var,PVal),PriorState) -> PVal=Val).
Calls:
Name: =/2 |
|
Name: member/2 |
|
Name: ->/2 |
was_eventb_destructor(Info,X,Op,Arg) :- eventb_translation_mode,
member(was(extended_expr(Op)),Info),peel_projections(X,Arg).
Calls:
Name: peel_projections/2 |
Module: translate |
Name: member/2 |
|
| Module: translate |
Called:
Name: pp_expr1/7 |
Module: translate |
Meta: with_language_mode(+,0)
with_language_mode(Lang, Call) :-
get_language_mode(OldLang),
(OldLang == Lang -> Call ;
set_language_mode(Lang),
call_cleanup(Call, set_language_mode(OldLang))
% FIXME This might not restore all animation modes fully!
% It's apparently possible to have multiple animation minor modes,
% which get/set_language_mode doesn't handle.
Calls:
Name: call_cleanup/2 |
|
Name: set_language_mode/1 |
Module: translate |
Name: call/1 |
|
Name: ==/2 |
|
Name: ->/3 |
|
Name: get_language_mode/1 |
Module: translate |
Meta: with_translation_mode(+,0)
with_translation_mode(Mode, Call) :-
get_translation_mode(OldMode),
(OldMode == Mode -> Call ;
set_translation_mode(ascii), % Clear all existing translation mode settings first
set_translation_mode(Mode),
call_cleanup(Call, set_translation_mode(OldMode))
% FIXME This might not restore all translation modes fully!
% For example, if both unicode_mode and latex_mode are set,
% then with_translation_mode(ascii, ...) will only restore unicode_mode.
Calls:
Name: call_cleanup/2 |
|
Name: set_translation_mode/1 |
Module: translate |
Name: call/1 |
|
Name: ==/2 |
|
Name: ->/3 |
|
Name: get_translation_mode/1 |
Module: translate |
Called:
| Module: prob2_interface | |
| Module: prob2_interface | |
| Module: translate | |
Name: pretty_print_bvalue/3 |
Module: prob2_interface |
| Module: translate | |
Name: pretty_print_predicate/3 |
Module: prob2_interface |
| Module: prob2_interface |
witness_intro(Id,Predicate,Type) -->
" evaluating witness for abstract ", ppatom(Type), " ", pp_expr(Id,_,_LR1), "\n",
" witness predicate: ", pp_expr(Predicate,_,_LR2), "\n".
Called:
Name: explain_event_step/3 |
Module: translate |
Name: explain_event_step4/4 |
Module: translate |
write_goal_with_max_depth((A,B)) --> !, "(",write_goal_with_max_depth(A),
", ", write_goal_with_max_depth(B), ")".
write_goal_with_max_depth(Term) --> write_with_max_depth(3,Term).
Calls:
Name: write_with_max_depth/4 |
Module: translate |
Name: =/2 |
|
Name: RECURSIVE_CALL/3 |
Module: translate |
Name: ! |
Called:
Name: pp_frozen_info/3 |
Module: translate |
write_with_max_depth(Depth,Term,S1,S2) :- write_term_to_codes(Term,S1,S2,[max_depth(Depth)]).
Calls:
Name: write_term_to_codes/4 |
Module: foo_error |
Called:
| Module: translate |