homology¶
Usage
use homology;
-
var
hypergraph
= new AdjListHyperGraph(4, 3, new unmanaged Cyclic(startIdx = 0))¶
-
var
_vtxSubsetSet
= new set(string)¶
-
iter
processVtxSubset
(vtxSubset)¶
-
proc
doProcessVertices
(verticesSet)¶ Generate the permutation
-
var
setContent
= AppendExpr.Call08¶ Verify the set by printing
-
var
_sz
= 0¶
-
var
kCellMap
= new intmapstringlisttrue¶ bin k-cells, with key as the length of the list and value is a list with all the k-cells
-
class
kCellsArray
¶ -
var
numKCells
: int¶
-
var
D
= {1..numKCells}¶
-
var
A
: [D] string¶
-
proc
init
(_N: int)¶
-
proc
findCellIndex
(s: string)¶
-
var
-
var
numBins
= kCellMap.size-1¶
-
var
kCellsArrayMap
: [0..numBins] owned nilable kCellsArray¶
-
var
kCellKeys
= AppendExpr.Call08¶
-
record
Comparator
¶
-
proc
Comparator.
compare
(a: string, b: string): int¶
-
var
absComparator
: Comparator¶
-
class
Matrix
¶ Start of the construction of boundary matrices.
-
var
N
: int¶
-
var
M
: int¶
-
var
matrix
: [1..N, 1..M] int¶
-
proc
init
(_N: int, _M: int)¶
-
var
-
var
K
= kCellMap.size-1¶
-
var
boundaryMaps
: [1..K] owned nilable Matrix¶
-
var
i
: int = 1¶
-
var
vs
= new set(string)¶
-
iter
processVtxSubset2
(vtxSubset)¶
-
proc
doProcessVertices2
(verticesSet)¶ Generate the permutation
-
proc
printBoundaryMap
(boundaryMap)¶
-
proc
printmatrix
(M)¶
-
proc
IdentityMatrix
(n)¶
-
proc
_get_next_pivot
(M, s1, in s2: int = 0)¶
-
proc
swap_rows
(i, j, M)¶
-
proc
swap_columns
(i, j, M)¶
-
proc
add_to_row
(M, i, j, ri = 1, rj = 1, mod = 2)¶
-
proc
add_to_column
(M, i, j, ci = 1, cj = 1, mod = 2)¶
-
proc
matmultmod2
(M, N, mod = 2)¶
-
proc
matmultmod3
(M, N, mod = 2)¶
-
proc
matmultmod
(M, N, mod = 2)¶
-
type
listType
= unmanaged nilable Matrix2Dlisttrue¶
-
proc
matmulreduce
(arr: listType, reverse = false, mod = 2)¶
-
proc
calculateRank
(M)¶
-
proc
smithNormalForm
(b)¶
-
var
computedMatrices
= smithNormalForm(boundaryMaps(1).matrix)¶
-
var
computedMatrices2
= smithNormalForm(boundaryMaps(2).matrix)¶
-
var
L1
= computedMatrices(1)¶
-
var
R1
= computedMatrices(2)¶
-
var
S1
= computedMatrices(3)¶
-
var
L1invF
= computedMatrices(4)¶
-
var
R1invF
= computedMatrices(5)¶
-
var
L2
= computedMatrices2(1)¶
-
var
R2
= computedMatrices2(2)¶
-
var
S2
= computedMatrices2(3)¶
-
var
L2invF
= computedMatrices2(4)¶
-
var
R2invF
= computedMatrices2(5)¶
-
var
rank1
= calculateRank(S1)¶
-
var
rank2
= calculateRank(S2)¶
-
var
nullity1
= AppendExpr.Call08-rank1¶
-
var
betti1
= AppendExpr.Call08-rank1-rank2¶
-
var
cokernel2_dim
= AppendExpr.Call08-rank2¶
-
var
nr1
= AppendExpr.Call08-rank1¶
-
var
ker1
: [1..AppendExpr.Call08, 1..nr1] int = ..R1rank1+1..¶
-
var
im2
: [1..AppendExpr.Call08, 1..rank2] int = ..L2invF1..rank2¶
-
var
nr2
= AppendExpr.Call08-rank2¶
-
var
cokernel2
: [1..AppendExpr.Call08, 1..nr2] int = ..L2invFrank2+1..¶
-
var
LKernel
= new unmanaged nilable Matrix2Dlisttrue¶
-
var
_L2
= new unmanaged AppendExpr.Call08Matrix2DAppendExpr.Call08¶
-
var
_ker1
= new unmanaged AppendExpr.Call08Matrix2DAppendExpr.Call08¶
-
var
result
= matmulreduce(LKernel)¶
-
var
slc
= AppendExpr.Call08-rank2¶
-
var
proj
: [1..slc, 1..AppendExpr.Call08] int = rank2+1..result..¶
-
var
L2invKernel
= new unmanaged nilable Matrix2Dlisttrue¶
-
var
_L2inv
= new unmanaged AppendExpr.Call08Matrix2Dnr2¶
-
var
_proj
= new unmanaged AppendExpr.Call08Matrix2DAppendExpr.Call08¶
-
var
proj2
= matmulreduce(L2invKernel)¶
-
proc
reducedRowEchelonForm
(b)¶