Containerized LKB worker (Dockerfile.lkb), Postgres-backed queue, auto-deploy timer, and eigensolid convergence check module. Build: 0 jobs (no Lean build needed)
59 lines
1.3 KiB
R
59 lines
1.3 KiB
R
source("boot.R")
|
|
box_use(./b4)
|
|
|
|
#' @export
|
|
free_reduce <- function(w) b4$braid_reduce(w)
|
|
|
|
#' @export
|
|
yang_baxter_normalize <- function(w) {
|
|
w <- unclass(b4$braid_reduce(w))
|
|
changed <- TRUE
|
|
while (changed) {
|
|
changed <- FALSE
|
|
i <- 1
|
|
while (i <= length(w) - 2) {
|
|
a <- w[i]; b <- w[i + 1]; c <- w[i + 2]
|
|
ia <- abs(a); ib <- abs(b); ic <- abs(c)
|
|
if (ia == ic && abs(ia - ib) == 1 && sign(a) == sign(b) && sign(b) == sign(c)) {
|
|
if (ia > ib) {
|
|
w[i] <- b; w[i + 1] <- a; w[i + 2] <- b; changed <- TRUE
|
|
}
|
|
}
|
|
i <- i + 1
|
|
}
|
|
}
|
|
b4$braid_word(w)
|
|
}
|
|
|
|
#' @export
|
|
far_commute_sort <- function(w) {
|
|
w <- unclass(b4$braid_reduce(w))
|
|
changed <- TRUE
|
|
while (changed) {
|
|
changed <- FALSE
|
|
i <- 1
|
|
while (i <= length(w) - 1) {
|
|
a <- w[i]; b <- w[i + 1]
|
|
if (abs(a) > abs(b) + 1 || abs(a) + 1 < abs(b)) {
|
|
if (abs(a) > abs(b) || (abs(a) == abs(b) && a > b)) {
|
|
w[i] <- b; w[i + 1] <- a; changed <- TRUE
|
|
}
|
|
}
|
|
i <- i + 1
|
|
}
|
|
}
|
|
b4$braid_word(w)
|
|
}
|
|
|
|
#' @export
|
|
rewrite_normalize <- function(w) {
|
|
prev <- NULL
|
|
w <- b4$braid_reduce(w)
|
|
while (!identical(prev, unclass(w))) {
|
|
prev <- unclass(w)
|
|
w <- yang_baxter_normalize(w)
|
|
w <- far_commute_sort(w)
|
|
w <- b4$braid_reduce(w)
|
|
}
|
|
w
|
|
}
|