%Propagates symbol bindings registered by dfa_propagation over dfa_uppy edges % % INPUT: % dfa_propagation(X) - register propagated Ann % bind(Symb, X) - initial symbol % % CALCULATED: % dfa_uppy - UPdate or coPY bind(SymbA, DfaAnn):- bind(SymbB, DfaAnn); dfa_propagation(DfaAnn); 1{dfa_uppy(SymbA, SymbB); 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_callret(CallId, RetActual); dfa_callinstance(CallId, FnName); dfa_fnret(FnName, RetFormal).