/* LPAD and CP-Logic interpreter Copyright (c) 2007, Fabrizio Riguzzi This package uses the library cudd, see http://vlsi.colorado.edu/~fabio/CUDD/ for the relative license. This file contains the functions for interfacing Yap and C The arguments of the predicate compute_prob are parsed and translated into C data structures */ #include "cplint.h" #include #include #include FILE *open_file (char *filename, const char *mode); static int compute_prob(void); variables createVars(YAP_Term t,DdManager * mgr, int create_dot, char inames[1000][20]) /* adds the boolean variables to the BDD and returns the array vars containing them returns also the names of the variables to be used to save the ADD in dot format */ { YAP_Term varTerm,probTerm; int varIndex,nVal,i,b; variable v; char numberVar[10],numberBit[10]; double p; variables vars; vars.varar=NULL; vars.bVar2mVar=NULL; b=0; vars.nVar=0; varIndex=0; while(YAP_IsPairTerm(t)) { varTerm=YAP_HeadOfTerm(t); varIndex=YAP_IntOfTerm(YAP_HeadOfTerm(varTerm)); varTerm=YAP_TailOfTerm(varTerm); nVal=YAP_IntOfTerm(YAP_HeadOfTerm(varTerm)); varTerm=YAP_TailOfTerm(varTerm); probTerm=YAP_HeadOfTerm(varTerm); v.nVal=nVal; v.nBit=(int)ceil(log(nVal)/log(2)); v.probabilities=(double *) malloc(nVal* sizeof(double)); v.booleanVars=(DdNode * *) malloc(v.nBit* sizeof(DdNode *)); for (i=0;i