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] @staticmethod def get_file_extension() -> str: raise NotImplementedError()
[docs] def get_input_variables(self) -> Set[str]: return self.verilog.boolean_expression.get_input_variables()
[docs] def get_output_variables(self) -> Set[str]: return set(self.verilog.output)
[docs] def get_auxiliary_variables(self) -> Set[str]: return set()
[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