Source code for core.benchmarks.Formula
from __future__ import annotations
from typing import Dict, Set
from core.BooleanFunction import BooleanFunction
[docs]
class Formula(BooleanFunction):
def __init__(self, verilog: VerilogFormula):
super().__init__()
self.verilog = verilog
[docs]
def get_input_variables(self) -> Set[str]:
return self.verilog.boolean_expression.get_input_variables()
[docs]
def negate(self) -> Formula:
"""
Returns the negation of this formula.
"""
return self.__neg__()
def __str__(self):
return str(self.verilog.output) + ' = ' + str(self.verilog.boolean_expression)
def __repr__(self):
return str(self.verilog.output) + ' = ' + str(self.verilog.boolean_expression)
def __neg__(self):
return Formula(self.verilog.negate())
[docs]
def eval(self, instance: Dict[str, bool]) -> Dict[str, bool]:
return {self.verilog.output: self.verilog.boolean_expression.eval(instance)}
[docs]
class VerilogFormula:
def __init__(self):
self.output = None
self.boolean_expression = None
[docs]
def negate(self):
neg_verilog_formula = VerilogFormula()
neg_verilog_formula.output = self.output
neg_verilog_formula.boolean_expression = self.boolean_expression.negate()
return neg_verilog_formula