test3.assembly.lp
No OneTemporary

File Metadata

Created
Wed, Jul 8, 10:42 AM

test3.assembly.lp

% INPUT
%-----------------------------------
% assign_sizo(..).
sizo(Sizo):-
bind_scope(_, assign_sizo(Sizo), strong).
dict_sizo(Sizo, Id):-
Id= #sum{ 1, SizoLess : sizo(SizoLess), SizoLess < Sizo};
sizo(Sizo).
% connect to latex
%-----------------------------------
latex_registered_subjects(sizo, Sizo):- sizo(Sizo).
latex_scope_demand(ScopeDemandSizo, sizo):-
bind(Target, demand(sizo));
Target = s(_, _, ScopeDemandSizo).
bind_scope(Scope, Sizo, strong):-
bind_scope(Scope, assign_sizo(Sizo), strong).
% register late query
%-----------------------------------
late(Target, SymbolSizo, (SizoAny), sizo_current(SizoAny)):-
bind(Target, demand(sizo));
Target=s(_, _, TargetS);
scope_fn(TargetS, Fn);
latex_symbol(Fn, sizo, SymbolSizo);
sizo(SizoAny).
% polymorphism based on virtualizaion strategy
%-----------------------------------
late(SymbRet, SymbolSizo, Sizo, dfa_callguard(SymbRet, strategy(Strategy))):-
dfa_callfn(SymbRet, FnName);
bind_func(FnName, requires(virt_dereference_strategy));
SymbRet=s(_, _, ScopeCaller);
scope_fn(ScopeCaller, Fn);
latex_symbol(Fn, sizo, SymbolSizo);
sizo(Sizo);
virt_dereference_strategy(Sizo, Strategy).
% IMPLEMENTATION
%=========================================================== .
sizo_properties(Sizo, Prop):-
bind_scope(Scope, define_sizo_prop(Prop), strong);
bind_scope(Scope, Sizo, strong);
sizo(Sizo).
virt_dereference_strategy(SizoOther, prefix):-
sizo_properties(Sizo, inner);
SizoOther <> Sizo;
sizo(SizoOther).
virt_dereference_strategy(Sizo, prefix):-
sizo_properties(Sizo, outer).
virt_dereference_strategy(Sizo, none) :-
not virt_dereference_strategy(Sizo, prefix);
sizo(Sizo).

Event Timeline