<commit_before>/*
 * ImplicationGraph.h
 *
 *  Created on: 24/03/2010
 *      Author: thansen
 */

#ifndef IMPLICATIONGRAPH_H_
#define IMPLICATIONGRAPH_H_

#include "../ConstantBitP_TransferFunctions.h"
#include "../ConstantBitP_Utility.h"
#include "Edge.h"
#include "ColumnCounts.h"
#include "ColumnStats.h"
#include <list>

namespace simplifier
{
namespace constantBitP
{

extern const bool debug_multiply;

// Relationship between bits. One bit may imply another bit.
class ImplicationGraph
{
	typedef __gnu_cxx ::hash_set<Edge, EdgeHasher, eqEdge> Edges;
	Edges edges;

	struct Target
	{
		EdgeType type;
		bool isLeft;
		int index;
	};

	// Contains the relevants parts of the implication graph.
	struct RelevantImplicationGraph
	{
		vector<list<Target> > left;
		vector<list<Target> > right;
		const FixedBits& l;
		const FixedBits& r;<commit_msg>Fix BitBlaster to consistently use the hash_set macro defined in AST/UsefulDefs.h.<commit_after>/*
 * ImplicationGraph.h
 *
 *  Created on: 24/03/2010
 *      Author: thansen
 */

#ifndef IMPLICATIONGRAPH_H_
#define IMPLICATIONGRAPH_H_

#include "../../../AST/UsefulDefs.h"
#include "../ConstantBitP_TransferFunctions.h"
#include "../ConstantBitP_Utility.h"
#include "Edge.h"
#include "ColumnCounts.h"
#include "ColumnStats.h"
#include <list>

namespace simplifier
{
namespace constantBitP
{

extern const bool debug_multiply;

// Relationship between bits. One bit may imply another bit.
class ImplicationGraph
{
	typedef hash_set<Edge, EdgeHasher, eqEdge> Edges;
	Edges edges;

	struct Target
	{
		EdgeType type;
		bool isLeft;
		int index;
	};

	// Contains the relevants parts of the implication graph.
	struct RelevantImplicationGraph
	{
		vector<list<Target> > left;
		vector<list<Target> > right;
		const FixedBits& l;
		const FixedBits& r;
{'fraction_non_alphanumeric': 0.105, 'fraction_numerical': 0.008888888888888889, 'mean_word_length': 4.3601190476190474, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 15, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3833486', 'n_tokens_mistral': 653, 'n_tokens_neox': 601, 'n_words': 166}