% INPUT %=========================================================== expl_siteUser(Res, Scope):- dictVarScope(Var, Scope); bind(Var, expl_user(Res)). expl_siteInit(Res, Scope):- dictVarScope(Var, Scope); bind(Var, expl_init(Res)). % OUTPUT %=========================================================== dfa_callguard(CallInst, explInitRealImpl):- expl_init_assignments(Res, SiteInitAssigned); bind(Var, expl_init(Res)); dictVarScope(Var, SiteInitAssigned); dfa_callret(CallInst, Var). dfa_callguard(CallInst, explInitBogusImpl):- not expl_init_assignments(Res, SiteInit); bind(Var, expl_init(Res)); dictVarScope(Var, SiteInit); dfa_callret(CallInst, Var). % GENERAL %=========================================================== dictVarScope(Var, Scope):- Var=s(_, _, Scope); v(Var).