Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download
Views: 8796
Kernel: SageMath 9.7

Cayley graphs of binary bent functions of dimension 2.

Import the required modules.

from os import path from boolean_cayley_graphs.bent_function import BentFunction from boolean_cayley_graphs.bent_function_cayley_graph_classification import ( BentFunctionCayleyGraphClassification) from boolean_cayley_graphs.boolean_function_extended_translate_classification import ( BooleanFunctionExtendedTranslateClassification)

Import controls.

import boolean_cayley_graphs.cayley_graph_controls as controls

Turn on verbose output.

controls.timing = True controls.verbose = True

Connect to the database that contains the classifications of bent functions in 2 dimensions.

load(path.join("..", "sage-code", "boolean_dimension_cayley_graph_classifications.py"))

Set c to be the list of classifications for dimension 2, starting from 1. c[0] is None.

dim = 2
sobj_dir = path.join("..", "sobj")
c = save_boolean_dimension_cayley_graph_classifications(dim, dir=sobj_dir)
Function 1 : 2023-02-19 09:53:31.047422 0 0 2023-02-19 09:53:32.269575 1 2 2023-02-19 09:53:32.275485 2 2 2023-02-19 09:53:32.284021 3 2 2023-02-19 09:53:32.292853 Algebraic normal form of Boolean function: x0*x1 Function is bent. SDP design incidence structure t-design parameters: (True, (1, 4, 1, 1)) Classification of Cayley graphs and classification of Cayley graphs of duals are the same: There are 2 extended Cayley classes in the extended translation class.

Display the length of c, the list of classifications.

len(c)
2

Verify that c[0] is None.

print(c[0])
None

Print the algebraic normal form of the bent function corresponding to c[1].

n = 1
c[n].algebraic_normal_form
x0*x1

Produce a report on the classification c[1].

c[n].report(report_on_graph_details=True)
Algebraic normal form of Boolean function: x0*x1 Function is bent. SDP design incidence structure t-design parameters: (True, (1, 4, 1, 1)) Classification of Cayley graphs and classification of Cayley graphs of duals are the same: There are 2 extended Cayley classes in the extended translation class. For each extended Cayley class in the extended translation class: Clique polynomial, strongly regular parameters, rank, and order of a representative graph; and linear code and generator matrix for a representative bent function: EC class 0 : Algebraic normal form of representative: x0*x1 Clique polynomial: 2*t^2 + 4*t + 1 Strongly regular parameters: (4, 1, 0, 0) Rank: 4 Order: 8 Linear code from representative: [1, 1] linear code over GF(2) Generator matrix: [1] Linear code is projective. Weight distribution: {0: 1, 1: 1} EC class 1 : Algebraic normal form of representative: x0*x1 + x0 + x1 Clique polynomial: t^4 + 4*t^3 + 6*t^2 + 4*t + 1 Strongly regular parameters: False Rank: 4 Order: 24 Linear code from representative: [3, 2] linear code over GF(2) Generator matrix: [1 0 1] [0 1 1] Linear code is projective. Weight distribution: {0: 1, 2: 3}

Produce a matrix plot of the weight_class_matrix.

matrix_plot(c[n].weight_class_matrix, cmap='gist_stern', colorbar=True)
Image in a Jupyter notebook

Produce a matrix plot of bent_cayley_graph_index_matrix, the matrix of indices of extended Cayley classes within the extended translation class.

matrix_plot(c[n].bent_cayley_graph_index_matrix, cmap='gist_stern', colorbar=True)
Image in a Jupyter notebook
%%time bf = BentFunction(c[n].algebraic_normal_form) bf_etc = BooleanFunctionExtendedTranslateClassification.from_function(bf)
2023-02-19 09:53:39.182923 0 0 2023-02-19 09:53:39.189692 1 4 2023-02-19 09:53:39.194997 2 4 2023-02-19 09:53:39.199583 3 4 2023-02-19 09:53:39.204330 CPU times: user 22.3 ms, sys: 8.74 ms, total: 31 ms Wall time: 28.6 ms
name_n = "p" + str(dim) + "_" + str(n) bf_etc.save_mangled(name_n, dir=sobj_dir)
print("Number of bent functions in the extended translation class is", len(bf_etc.boolean_function_list)) print("Number of general linear equivalence classes in the extended translation class is", len(bf_etc.general_linear_class_list))
Number of bent functions in the extended translation class is 4 Number of general linear equivalence classes in the extended translation class is 2
matrix_plot(bf_etc.general_linear_class_index_matrix, cmap='gist_stern', colorbar=True)
Image in a Jupyter notebook
matrix_plot(bf_etc.boolean_function_index_matrix, cmap='gist_stern', colorbar=True)
Image in a Jupyter notebook