public static String toString(Map<String, List<Boolean>> _truth_table) {
		if (_truth_table == null)
			return "";
		else {
			StringBuilder res = new StringBuilder();
			List<String> col_head = new ArrayList<>(_truth_table.keySet());
			
			if (col_head.size() == 0)
				return "";
			
			Collections.sort(col_head);
			
			for (String str: col_head) {
				res.append(str);
				res.append(" ");
			}
			
			res.append("\n");
			
			int n = _truth_table.get(col_head.get(0)).size();
			for (int i = 0; i < n; i++) {
				for (int j = 0; j < col_head.size(); j++) {
					boolean b = _truth_table.
							get(col_head.
									get(j)).
										get(i);
					
					if (b)
						res.append("1 ");
					else
						res.append("0 ");
				
					if (j == col_head.size() - 1)
						res.append("\n");
				}
			}
			
			return res.toString();
		}
	}