def __init__(self, label, pairs, kb, producer_pred=None):
        Predicate.__init__(self, label, kb, producer_pred)

        # The input var should match with the producers output var
        if not producer_pred:
            self.input_var = Predicate._avar()
        else:
            self.input_var = producer_pred.output_var

        self.output_var = Predicate._avar()
        if producer_pred:
            prod_out_var = self.producer_predicate.output_var
            potential_inputs = self.producer_predicate.domain[prod_out_var]

            # Find which inputs have pairs
            inputs = potential_inputs & kb.get_domains(label)[0]
            outputs = kb.get_empty_domain()
            for el1 in kb.bits_to_indices(inputs):
                outputs |= pairs[el1]
        else:
            # No producer predicate.
            inputs, outputs = kb.get_domains(label)

        self.domain = {self.input_var: inputs, self.output_var: outputs}
Samples values of a function from an RBF covariance with very small noise for inputs uniformly distributed between -1 and 1.
dataset/ETHPy150Open anzev/hedwig/hedwig/core/predicate.py/BinaryPredicate.__init__--crossover with--dataset/ETHPy150Open SheffieldML/GPy/GPy/util/datasets.py/toy_rbf_1d