propagation.lp
No OneTemporary

File Metadata

Created
Wed, Jul 8, 2:54 AM

propagation.lp

%Propagates symbol bindings registered by dfa_propagation over dfa_uppy edges
%
% INPUT:
% dfa_propagation(X) - register propagated Ann
% bind(Symb, X) - initial symbol
%
% OUTPUT:
% w/dfa_uppy - UPdate or coPY
bind(SymbA, DfaAnn):- bind(SymbB, DfaAnn); dfa_propagation(DfaAnn);
1{weak(dfa_uppy(SymbA, SymbB)); weak(dfa_uppy(SymbB,SymbA))};
v(SymbA); v(SymbB).
dfa_uppy(X, Y):- bind(X, dfa_uppy(Pseudo)); bind(Y, dfa_pseudo(Pseudo)).
dfa_uppy(X, Y):- dfa_alias(X, Y).
dfa_uppy(ArgFormal, ArgActual):- dfa_callargs(_,ArgFormal, ArgActual).
dfa_uppy(RetActual, RetFormal):-
dfa_callfn(RetActual, FnName);
dfa_fnret(FnName, RetFormal);
#count{1: dfa_fnret(FnName, RetFormal)}1.
% WEAK ANALYSIS
%=============================================================
weak(dfa_uppy(X, Y)):- dfa_uppy(X, Y).
weak(dfa_uppy(X, Y)):- weak(dfa_alias(X, Y)).
weak(dfa_uppy(ArgFormal, ArgActual)):- weak(dfa_callargs(_,ArgFormal, ArgActual)).
weak(dfa_uppy(RetActual, RetFormal)):-
dfa_callfn(RetActual, FnName);
dfa_fnret(FnName, RetFormal).

Event Timeline