tests/testthat/test_aaa.R

test_that("Test suite aaa.R",{


id <- cycle(list(list()))
expect_true(is.id(id))


a1 <- c(3L, 14L, 9L, 18L, 10L, 19L, 4L, 17L, 12L, 7L, 5L, 15L, 1L, 
        16L, 8L, 13L, 11L, 2L, 6L, 20L)

problem <- as.word(a1)
problem*problem


j1 <- c(12L, 11L, 1L, 9L, 7L, 2L, 3L, 8L, 17L, 15L, 18L, 5L, 6L, 13L, 16L, 4L, 14L, 10L, 19L, 20L)
j2 <- c(11L, 12L, 14L, 3L, 10L, 8L, 9L, 13L, 20L, 16L, 6L, 2L, 17L, 15L, 7L, 1L, 18L, 5L, 4L, 19L)
v1 <- as.word(j1)
v2 <- as.word(j2)
word_prod_single(v1,v2)

# to create an identity cyclist, use list(c()).

b1 <- cycle(list(list(1:2,3:5,6:10,11:15)))
b2 <- b1 + as.cycle(100:119)

w <- list(c(1),c(2,5,3),c(4))
x <- list(c(1),c(2,5,3),c(4,7))
y <- list(c(4,6),c(2,5,1),c(8,3))
z <- list(c(4,6,8,2,3,1,7,9,5))


# following returns cyclists:
nicify_cyclist(x)
nicify_cyclist(y)
nicify_cyclist(z)

thing1 <- cycle(list(nicify_cyclist(x),nicify_cyclist(y),nicify_cyclist(z),list(c())))
thing2 <- cycle(list(x,y,z,list(c())))


ww <- word(matrix(replicate(12,sample(9)),ncol=9,byrow=TRUE))
xx <- word(matrix(replicate(12,sample(9)),ncol=9,byrow=TRUE))
jj <- ww
size(jj) <- 10

expect_true(all(sgn(ww)*sgn(xx) == sgn(ww*xx)))
identical(as.word(as.cycle(xx)),xx)



expect_true(all(inverse(thing1)*thing1 == id))
expect_true(all(thing1*inverse(thing1) == id))


a <- as.word(thing1)
a[1] <- a[2]


as.cycle(1:9)


# combine cyclists using cycle(list(x,y,z))

z1 <- list(c(3, 17),39,c(10, 14, 5, 8, 11),c(18, 12), c(16, 7, 19, 13, 15, 4, 20, 9, 6, 1),32,22)
z2 <- list(1:4,10:11,20:33)

fish <- cycle(list(x,y,z)) 


x2 <- c(7,9,3,5,8,6,1,4,2)

x3 <- rbind(
    a = c(5L, 8L, 4L, 6L, 3L, 9L, 1L, 7L, 2L),
    b = c(2L, 5L, 3L, 9L, 1L, 7L, 6L, 4L, 8L),
    c = c(9L, 5L, 7L, 1L, 4L, 3L, 8L, 6L, 2L),
    d = 1:9,
    e = c(1L, 2L, 3L, 5L, 4L, 6L, 7L, 8L, 9L)
)

x4 <- cbind(x3,matrix(11:20,5,2))

id <- cycle(list(list()))

xjj <- cycle(list(
    list(c(1,2,4),c(3,6)),
    list(c(1,2),c(3,4,5,6,7)),
    list(c(1,2,4),c(3,6)),
    list(c(1,2,4),c(3,16)),
    list(c(1,2,4),c(3,6)),
    list(c(1,2,4),c(3,6)),
    list(),   # empty!
    list(c(1,2,4),c(3,56)),
    list(c(1,2,4),c(3,56),20:21)
    ))


cl3 <- list(c(3,25,1),5:10,c(17,19))


x3 <- word(x3)
#x3^6


shape_cyclist(list(list()))

data(megaminx)
m <- megaminx
p <- megaminx
m[1] <- id
m[2] <- as.cycle(1:10)
m[3] <- id
m[4] <- as.cycle(1:40)

m[6]*m[7]


expect_true(all(p*inverse(p) == id))
expect_true(all(inverse(p)*p == id))

expect_true(all(p   ==   p^1))
expect_true(all(p^2 == p*p^1))
expect_true(all(p^3 == p*p^2))
expect_true(all(p^4 == p*p^3))
expect_true(all(p^5 == p*p^4))


rep(m,0)
sgn(thing1)



o1 <- rperm(31,20)
o2 <- rperm(31,20)
o3 <- rperm(31,20)

expect_true(all(o1^(o2*o3) == (o1^o2)^o3))

trim(as.word(id))
trim(word(col(matrix(0,4,5))))

nothing <- word(col(matrix(0,4,5)))
trim(nothing)


o1[1] <- id   #former bug



## check Hall-Witt:

x <- rperm(100,7)
y <- rperm(100,8)
z <- rperm(100,9)

uu <-    # should be the identity
commutator(commutator(x,y),z^x) *
commutator(commutator(z,x),y^z) *
commutator(commutator(y,z),x^y) 

expect_true(all(is.id(uu)))

## Following is the same test more compactly written:
expect_true(all(is.id(.[.[x,y],z^x] * .[.[z,x],y^z] * .[.[y,z],x^y])))



## bug in shapepart:
options(warn=4)
shapepart(allperms(5))


## bug in sgn(), issue #4:
expect_true(sgn(as.cycle("(12)(34)")) == 1)


## test for permutation matrix making sense:

a <- rperm(1,14)
b <- rperm(1,14)
pa <- perm_matrix(a)
pb <- perm_matrix(b)

expect_true(is.perm_matrix(pa))
expect_true(is.perm_matrix(pb))
expect_true(is.perm_matrix(pa %*% pb))
expect_true(is.perm_matrix(pb %*% pa))

expect_true(is.perm_matrix(solve(pa)))
expect_true(is.perm_matrix(solve(pb)))

expect_true(all(pa==t(solve(pa))))
expect_true(all(pb==t(solve(pb))))

expect_true(all(solve(pa) == perm_matrix(inverse(a))))
expect_true(all(solve(pb) == perm_matrix(inverse(b))))
expect_true(all(crossprod(pa,pb) == perm_matrix(inverse(a)*b)))

})
RobinHankin/permutations documentation built on March 29, 2024, 5:34 p.m.