Skip to main content

Local computation of immediate neighbours of a given monotone non-degenerate Boolean function

Project description

pyFunctionHood: local computation of immediate neighbours of a given monotone non-degenerate Boolean function

This Python library implements the set of rules described in arxiv:2407.01337, to compute the immediate neighbours of a given monotone non-degenerate Boolean function, without the need to generate the whole function space.

Here, immediate neighbours, are the monotone Boolean functions that are immediately above (or below) with respect to the partial order, in other words, are the functions that add/remove the minimum number of entries in the truth table.

Monotone non-degenerate Boolean functions are represented as sets of clauses, where each clause is represented by the bitarray data structure, and each bit represents the presence/absence of a given variable/regulator.

This work corrects and extends our previous work available in https://github.com/ptgm/functionhood/, developed in Java, and described in arxiv:1901.07623.

Given a reference monotone Boolean function, this library can be used in three distinct manners:

  • in the command line passing the reference function as an argument
  • using a graphical interface developed with Tkinter.
  • as a library integrated in other tools

Usage - command line

Usage example: python main.py <type> <dimension> <function>
 <type>:      [p]arents or [c]hildren
 <dimension>: 4
 <function>:  "{{1,2,3},{1,3,4},{2,3,4}}"

Parents

To compute the parents (the functions immediately above) of a given monotone Boolean function, on can call:

python main.py p 4 "{{1,2,3},{1,3,4},{2,3,4}}"
R1 {{1,2,3},{1,2,4},{1,3,4},{2,3,4}}
R2 {{1,3},{2,3,4}}
R2 {{1,2,3},{3,4}}
R2 {{1,3,4},{2,3}}

which yields one parent function generated by Rule 1 (adding a maximal independent clause), and three parent functions generated by Rule 2 (collapsing pairs of clauses).

Children

To compute the children (the functions immediately below) of a given monotone Boolean function, one just change the first parameter:

python main.py c 4 "{{1,2,3},{1,3,4},{2,3,4}}"
R1 {{1,3,4},{2,3,4}}
R1 {{1,2,3},{1,3,4}}
R1 {{1,2,3},{2,3,4}}

Usage - Graphical interface

There is also a graphical interface using Tkinter where the user can define the function dimension and write the desired monotone Boolean function.

Screenshot of main window

The interface has a button to automatically write the Infimum function of the chosen dimension, and another for the Supremum function.

The user has two buttons to generate the immediate neighbouring functions: Generate Parents to generate the list of parent functions, and Generate Children to generate the list of children functions.

In the text area the immediate neighbouring functions are shown, as well as any error if an invalid function is provided.

The button Default values cleans the text area and resets the input text boxes to their default values.

The button Close closes the application.


Usage - programmatically

If you are using this library directly you should first initialise the Hasse Diagram with a given dimension as a parameter (example below considers monotone Boolean functions of 4 variables/regulators):

from hassediagram import *
hd = HasseDiagram(4)

Then to initialise a function one can use a set of Clauses, where each Clause is a String representing the regulators that are present ("1") or absent ("0"), of dimension 4:

f = Function(4, {Clause('1110'), Clause('1011'), Clause('0111')})

or equivalently constructing the Function from its String representation:

f = Function.fromString(4, "{{1,2,3},{1,3,4},{2,3,4}}")

Once the Hasse Diagram and the function are defined, the method hd.get_f_parents(f) or hd.get_f_children(f) can be called, each returning a tuple of three sets of functions. The functions generated by Rule 1, by Rule 2 and by Rule 3, respectively. Below an example for parent functions generation:

s1, s2, s3 = hd.get_f_parents(f)
print(f'# parents from Rule1:{len(s1)} Rule2:{len(s2)} Rule3:{len(s3)}')
print('\n'.join(['R1 ' + str(f) for f in s1]\
              + ['R2 ' + str(f) for f in s2]\
              + ['R3 ' + str(f) for f in s3]))

License

This code is available under GPL-3.0.

Cite

This work is available on arxiv:2407.01337.

Authors

  • Patrícia Roxo
  • José E. R. Cury
  • Vasco Manquinho
  • Claudine Chaouiya
  • Pedro T. Monteiro

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfunctionhood-0.1.2.tar.gz (23.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfunctionhood-0.1.2-py3-none-any.whl (22.7 kB view details)

Uploaded Python 3

File details

Details for the file pyfunctionhood-0.1.2.tar.gz.

File metadata

  • Download URL: pyfunctionhood-0.1.2.tar.gz
  • Upload date:
  • Size: 23.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for pyfunctionhood-0.1.2.tar.gz
Algorithm Hash digest
SHA256 7341feee355c2dacbb26c788a69aeeb45abfd5c3859924d561622705f393d707
MD5 ade9e8454437f6ba45b461834cde4143
BLAKE2b-256 3499155f6a71e0b5f47d423919a3a8da9c36e55e51a83378d35c0ab335f60727

See more details on using hashes here.

File details

Details for the file pyfunctionhood-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: pyfunctionhood-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 22.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for pyfunctionhood-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e66f8fc33c5a2cfc1851f03c2c27358581d389ab896f19a48b44cfc7c3ebb460
MD5 46f64e08ca6a3a964f94957dc5a360e3
BLAKE2b-256 ece9dd811a368d13c1669e070ef0aa9b6300d033518016937c1297d706ba0ddd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page