// FindAtilde calculates a non-trivial matrix Atilde s.t. L <- Atilde = Atilde <- D(beta), where // L = A_i <- D(beta) <- A_i^(-1) func FindAtilde(constr *chow.Construction, L matrix.Matrix) matrix.Matrix { beta := CharToBeta[FindCharacteristic(L)] D, _ := DecomposeAffineEncoding(encoding.ByteMultiplication(beta)) x := L.RightStretch().Add(D.LeftStretch()).NullSpace() m := matrix.Matrix(make([]matrix.Row, len(x))) for i, e := range x { m[i] = matrix.Row{e} } return m }