boofun.core.representations.distribution

Distribution representation for Boolean functions.

This module treats Boolean functions as random variables over the Boolean cube, enabling probabilistic analysis, sampling, and statistical properties.

Classes

BooleanDistribution(truth_table, ...)

Distribution representation of a Boolean function.

DistributionRepresentation()

Distribution representation for Boolean functions.

class boofun.core.representations.distribution.BooleanDistribution(truth_table: ndarray, input_distribution: ndarray, n_vars: int, domain_size: int)[source]

Distribution representation of a Boolean function.

Treats the Boolean function as a random variable f: {0,1}ⁿ → {0,1} with various probability distributions over the input domain.

truth_table

Truth table values

Type:

numpy.ndarray

input_distribution

Probability distribution over inputs

Type:

numpy.ndarray

n_vars

Number of variables

Type:

int

domain_size

Size of input domain (2^n_vars)

Type:

int

truth_table: ndarray
input_distribution: ndarray
n_vars: int
domain_size: int
evaluate(x: int | List[int] | ndarray) bool[source]

Evaluate function at given input.

Parameters:

x – Input (index or binary vector)

Returns:

Boolean function value

sample_input(size: int = 1, random_state: int | None = None) ndarray[source]

Sample inputs according to input distribution.

Parameters:
  • size – Number of samples

  • random_state – Random seed

Returns:

Array of sampled input indices

sample_outputs(size: int = 1, random_state: int | None = None) ndarray[source]

Sample function outputs according to induced distribution.

Parameters:
  • size – Number of samples

  • random_state – Random seed

Returns:

Array of sampled outputs

output_probability(value: bool) float[source]

Compute probability that function outputs given value.

Parameters:

value – Output value (True or False)

Returns:

Probability P(f(X) = value)

conditional_probability(output: bool, input_condition: Callable[[int], bool]) float[source]

Compute conditional probability P(f(X) = output | condition(X)).

Parameters:
  • output – Desired output value

  • input_condition – Function that returns True for inputs satisfying condition

Returns:

Conditional probability

entropy() float[source]

Compute entropy of function output distribution.

Returns:

Entropy H(f(X)) in bits

mutual_information(variable_idx: int) float[source]

Compute mutual information between function output and a specific variable.

Parameters:

variable_idx – Index of variable

Returns:

Mutual information I(f(X); X_i)

correlation(variable_idx: int) float[source]

Compute correlation between function output and a variable.

Parameters:

variable_idx – Index of variable

Returns:

Correlation coefficient

moments(order: int = 4) List[float][source]

Compute moments of the output distribution.

Parameters:

order – Maximum moment order

Returns:

List of moments [mean, variance, skewness, kurtosis, …]

to_dict() Dict[str, Any][source]

Export distribution to dictionary.

classmethod from_dict(data: Dict[str, Any]) BooleanDistribution[source]

Create distribution from dictionary.

classmethod uniform(truth_table: ndarray, n_vars: int) BooleanDistribution[source]

Create distribution with uniform input distribution.

Parameters:
  • truth_table – Boolean function truth table

  • n_vars – Number of variables

Returns:

BooleanDistribution with uniform input distribution

classmethod biased(truth_table: ndarray, n_vars: int, bias: float = 0.5) BooleanDistribution[source]

Create distribution with biased coin flips for each variable.

Parameters:
  • truth_table – Boolean function truth table

  • n_vars – Number of variables

  • bias – Probability that each variable is 1

Returns:

BooleanDistribution with product distribution

__init__(truth_table: ndarray, input_distribution: ndarray, n_vars: int, domain_size: int) None
class boofun.core.representations.distribution.DistributionRepresentation[source]

Distribution representation for Boolean functions.

evaluate(inputs: ndarray, data: BooleanDistribution, space: Space, n_vars: int) bool | ndarray[source]

Evaluate distribution representation.

Parameters:
  • inputs – Input values (integer indices or binary vectors)

  • data – Boolean distribution

  • space – Evaluation space

  • n_vars – Number of variables

Returns:

Boolean result(s)

dump(data: BooleanDistribution, space=None, **kwargs) Dict[str, Any][source]

Export distribution representation.

convert_from(source_repr: BooleanFunctionRepresentation, source_data: Any, space: Space, n_vars: int, **kwargs) BooleanDistribution[source]

Convert from another representation to distribution.

Parameters:
  • source_repr – Source representation

  • source_data – Source data

  • space – Evaluation space

  • n_vars – Number of variables

  • **kwargs – Additional arguments (distribution_type, bias)

Returns:

Boolean distribution

convert_to(target_repr: BooleanFunctionRepresentation, source_data: Any, space: Space, n_vars: int, **kwargs) ndarray[source]

Convert distribution to another representation.

create_empty(n_vars: int, **kwargs) BooleanDistribution[source]

Create empty distribution (constant False with uniform input).

is_complete(data: BooleanDistribution) bool[source]

Check if distribution is complete.

time_complexity_rank(n_vars: int) Dict[str, int][source]

Return time complexity for distribution operations.

get_storage_requirements(n_vars: int) Dict[str, int][source]

Return storage requirements for distribution representation.