50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
									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.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "util.h"
							 | 
						||
| 
								 | 
							
								#include "cuddInt.h"
							 | 
						||
| 
								 | 
							
								#include "array.h"
							 | 
						||
| 
								 | 
							
								#include "mtr.h"
							 | 
						||
| 
								 | 
							
								#include "avl.h"
							 | 
						||
| 
								 | 
							
								#include "YapInterface.h"
							 | 
						||
| 
								 | 
							
								#include <glib.h>
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								typedef struct
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    int var,value;
							 | 
						||
| 
								 | 
							
								  } factor;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct
							 | 
						||
| 
								 | 
							
								  {
							 | 
						||
| 
								 | 
							
								    int nVal,nBit;
							 | 
						||
| 
								 | 
							
								    array_t * probabilities;
							 | 
						||
| 
								 | 
							
								    array_t * booleanVars;
							 | 
						||
| 
								 | 
							
								  } variable;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void createVars(array_t * vars, YAP_Term t,DdManager * mgr, array_t * bVar2mVar,int create_dot, char inames[1000][20]);
							 | 
						||
| 
								 | 
							
								void createExpression(array_t * expression, YAP_Term t);
							 | 
						||
| 
								 | 
							
								void init_my_predicates(void);
							 | 
						||
| 
								 | 
							
								int compare(char *a, char *b);
							 | 
						||
| 
								 | 
							
								gint my_equal(gconstpointer v,gconstpointer v2);
							 | 
						||
| 
								 | 
							
								guint my_hash(gconstpointer key);
							 | 
						||
| 
								 | 
							
								void  dealloc(gpointer key,gpointer value,gpointer user_data);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								DdNode * retFunction(DdManager * mgr, array_t * expression,array_t * v);
							 | 
						||
| 
								 | 
							
								DdNode * retTerm(DdManager * mgr,array_t *factors,array_t * v);
							 | 
						||
| 
								 | 
							
								DdNode * retFactor(DdManager * mgr, factor f, array_t * v);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								double Prob(DdNode *node, array_t * vars,array_t * bVar2mVar, GHashTable * nodes);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								double ProbBool(DdNode *node, int bits, int nBit,int posBVar,variable v,
							 | 
						||
| 
								 | 
							
								array_t * vars,array_t * bVar2mVar, GHashTable * nodes);
							 |