vertex_t Exploration::addGraphVertex(VertexInfo * newVertex, Graph &graph){ //map associating an id to each node of the graph vertex_index_pmap_t tgIndexMap = boost::get(boost::vertex_index_t(), graph); //Add the vertex vertex_t newVertex_g = boost::add_vertex(graph); unsigned int &graphUniqueId = getGraphInfo(graph); // if(boost::num_vertices(graph) == 0){ // graphUniqueId = 0; // } tgIndexMap[newVertex_g] = graphUniqueId; graphUniqueId++; //Setting its properties boost::property_map<Graph, node_info_t>::type nodeInfo = boost::get(node_info_t(), graph); nodeInfo[newVertex_g] = newVertex; return newVertex_g; }
void ProofGraph::transfProof( ) { // Time left for transformation double leftTime = cpuTime( ); size_t size=0; int numnodes=0; int numedges=0; int numleaves=0; int numvars=0; double avgdeg=0; int dia=0; int maxclasize=0; double avgclasize=0; int unsatcoredim=0; int numunary=0; double avgnumresunary=0; double avgnumres=0; int maxnumres=0; double varnumres=0; double varclasize=0; if ( verbose() ) { getGraphInfo( ); size = graph.size( ); numnodes=num_nodes; numedges=num_edges; numleaves=num_leaves; numvars=numVars; avgdeg=(double)numedges / (double)numnodes; dia=diameter; maxclasize=max_cla_size; avgclasize=av_cla_size; unsatcoredim=dim_unsat_core; numunary=num_unary; avgnumresunary=avg_num_res_unary; avgnumres=avg_num_res; maxnumres=max_num_res; varnumres=var_num_res; varclasize=var_cla_size; } double time=0; if( produceProof() ) { if ( reduceProof() > 0 ) { time = doIt( leftTime ); } } else if( produceInterpolants() > 0 ) { //No need to transform proof if no AB-mixed predicate is present! assert(!lightVars.empty()); if ( reorderPivots() > 0) time = doIt( leftTime ); else { opensmt_error( "Cannot produce interpolants because of AB-mixed predicates. Please enable pivot reordering in config file" ); } } #ifndef OPTIMIZE checkProof(); cleanProofGraph( ); checkProof(); #endif if ( verbose() > 0 ) { getGraphInfo( ); double perc_nodes=(((double)num_nodes-(double)numnodes)/(double)numnodes)*100; double perc_edges=(((double)num_edges-(double)numedges)/(double)numedges)*100; double perc_leaves=(((double)num_leaves-(double)numleaves)/(double)numleaves)*100; double perc_unsatcore=(((double)dim_unsat_core-(double)unsatcoredim)/(double)unsatcoredim)*100; cerr << "#" << endl; cerr << "# ------------------------------------" << endl; cerr << "# PROOF GRAPH TRASFORMATION STATISTICS " << endl; cerr << "# ------------------------------------" << endl; cerr << "# Structural properties" << endl; cerr << "# ---------------------" << endl; cerr << "# Light variables............: "; fprintf( stderr, "%-10ld\n", lightVars.size( ) ); cerr << "# Nominal num proof variables: "; fprintf( stderr, "%-10ld\n", numVarsLimit ); cerr << "# Actual num proof variables.: "; fprintf( stderr, "%-10d %-10d\n", numvars, numVars ); cerr << "# Nodes......................: "; fprintf( stderr, "%-10d %-10d\n", numnodes, num_nodes ); cerr << "# Nodes variation............: "; fprintf( stderr, "%-9.2f %%\n", perc_nodes ); cerr << "# Leaves.....................: "; fprintf( stderr, "%-10d %-10d\n", numleaves, num_leaves ); cerr << "# Leaves variation...........: "; fprintf( stderr, "%-9.2f %%\n", perc_leaves ); cerr << "# Unsat core.................: "; fprintf( stderr, "%-10d %-10d\n", unsatcoredim, dim_unsat_core ); cerr << "# Unsat core variation.......: "; fprintf( stderr, "%-9.2f %%\n", perc_unsatcore ); cerr << "# Edges......................: "; fprintf( stderr, "%-10d %-10d\n", numedges, num_edges ); cerr << "# Edges variation............: "; fprintf( stderr, "%-9.2f %%\n", perc_edges ); cerr << "# Graph vector size..........: "; fprintf( stderr, "%-10ld %-10ld\n", size, graph.size( ) ); cerr << "# Average degree.............: "; fprintf( stderr, "%-10.2f %-10.2f\n", avgdeg, (double)num_edges / (double)num_nodes ); cerr << "# Diameter...................: "; fprintf( stderr, "%-10d %-10d\n", dia, diameter ); cerr << "# Unary clauses..............: "; fprintf( stderr, "%-10d %-10d\n", numunary, num_unary ); cerr << "# Max clause size............: "; fprintf( stderr, "%-10d %-10d\n", maxclasize, max_cla_size ); cerr << "# Average clause size........: "; fprintf( stderr, "%-10.2f %-10.2f\n", avgclasize, av_cla_size ); cerr << "# Variance clause size.......: "; fprintf( stderr, "%-10.2f %-10.2f\n", varclasize, var_cla_size ); cerr << "# Max num res................: "; fprintf( stderr, "%-10d %-10d\n", maxnumres, max_num_res ); cerr << "# Average num res............: "; fprintf( stderr, "%-10.2f %-10.2f\n", avgnumres, avg_num_res ); cerr << "# Avg num res unary clauses..: "; fprintf( stderr, "%-10.2f %-10.2f\n", avgnumresunary, avg_num_res_unary ); cerr << "# Variance num res...........: "; fprintf( stderr, "%-10.2f %-10.2f\n", varnumres, var_num_res ); cerr << "# -------------------------" << endl; cerr << "# Transformation statistics" << endl; cerr << "# -------------------------" << endl; cerr << "# Graph building time........: " << building_time << " s" << endl; cerr << "# Transformation time........: " << time << " s" << endl; cerr << "# Duplications...............: " << num_dup << endl; cerr << "# Node additions due to A1...: " << num_node_add_A1 << endl; cerr << "# ---------------------------" << endl; cerr << "# Rules application statistics" << endl; cerr << "# ---------------------------" << endl; cerr << "# A1.........................: " << A1 << endl; cerr << "# A1 undo....................: " << A1Undo << endl; cerr << "# A1 to B....................: " << A1B << endl; cerr << "# A2.........................: " << A2 << endl; cerr << "# A2 to B....................: " << A2B << endl; cerr << "# A2 unary...................: " << A2U << endl; cerr << "# B1.........................: " << B1 << endl; cerr << "# B2.........................: " << B2 << endl; cerr << "# B2 killer..................: " << B2K << endl; cerr << "# B3.........................: " << B3 << endl; cerr << "# ---------------------------" << endl; } }