| Hosted by CoCalc | Download
Kernel: SageMath 9.7

Cayley graphs of binary bent functions of dimension 4.

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 4 dimensions.

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

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

dim = 4
sobj_dir = path.join("..", "sobj")
c = save_boolean_dimension_cayley_graph_classifications(dim, dir=sobj_dir)
Function 1 : 2023-02-19 09:54:45.443634 0 0 2023-02-19 09:54:46.016205 1 2 2023-02-19 09:54:46.062804 2 2 2023-02-19 09:54:46.108978 3 2 2023-02-19 09:54:46.161200 4 2 2023-02-19 09:54:46.207955 5 2 2023-02-19 09:54:46.263597 6 2 2023-02-19 09:54:46.313619 7 2 2023-02-19 09:54:46.364364 8 2 2023-02-19 09:54:46.414189 9 2 2023-02-19 09:54:46.473091 10 2 2023-02-19 09:54:46.523071 11 2 2023-02-19 09:54:46.578541 12 2 2023-02-19 09:54:46.633258 13 2 2023-02-19 09:54:46.697818 14 2 2023-02-19 09:54:46.745101 15 2 2023-02-19 09:54:46.798626 Algebraic normal form of Boolean function: x0*x1 + x2*x3 Function is bent. SDP design incidence structure t-design parameters: (True, (2, 16, 6, 2)) 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 + x2*x3

Produce a report on the classification c[1].

c[n].report(report_on_graph_details=True)
Algebraic normal form of Boolean function: x0*x1 + x2*x3 Function is bent. SDP design incidence structure t-design parameters: (True, (2, 16, 6, 2)) 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 + x2*x3 Clique polynomial: 8*t^4 + 32*t^3 + 48*t^2 + 16*t + 1 Strongly regular parameters: (16, 6, 2, 2) Rank: 6 Order: 1152 Linear code from representative: [6, 4] linear code over GF(2) Generator matrix: [1 0 0 0 0 1] [0 1 0 1 0 0] [0 0 1 1 0 0] [0 0 0 0 1 1] Linear code is projective. Weight distribution: {0: 1, 2: 6, 4: 9} EC class 1 : Algebraic normal form of representative: x0*x1 + x0 + x1 + x2*x3 Clique polynomial: 16*t^5 + 120*t^4 + 160*t^3 + 80*t^2 + 16*t + 1 Strongly regular parameters: (16, 10, 6, 6) Rank: 6 Order: 1920 Linear code from representative: [10, 4] linear code over GF(2) Generator matrix: [1 0 1 0 1 0 0 1 0 0] [0 1 1 0 1 1 0 1 1 0] [0 0 0 1 1 1 0 0 0 1] [0 0 0 0 0 0 1 1 1 1] Linear code is projective. Weight distribution: {0: 1, 4: 5, 6: 10}

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[1].algebraic_normal_form) bf_etc = BooleanFunctionExtendedTranslateClassification.from_function(bf)
2023-02-19 09:54:48.413747 0 0 2023-02-19 09:54:48.515655 1 16 2023-02-19 09:54:48.584020 2 16 2023-02-19 09:54:48.642784 3 16 2023-02-19 09:54:48.712505 4 16 2023-02-19 09:54:48.790483 5 16 2023-02-19 09:54:48.856198 6 16 2023-02-19 09:54:48.920643 7 16 2023-02-19 09:54:48.989903 8 16 2023-02-19 09:54:49.064421 9 16 2023-02-19 09:54:49.130729 10 16 2023-02-19 09:54:49.205797 11 16 2023-02-19 09:54:49.278383 12 16 2023-02-19 09:54:49.337300 13 16 2023-02-19 09:54:49.397667 14 16 2023-02-19 09:54:49.458843 15 16 2023-02-19 09:54:49.520858 CPU times: user 1.02 s, sys: 12 ms, total: 1.03 s Wall time: 1.12 s
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 16 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