packages feed

Operads-1.0: examples/Alternative.hs

import Math.Operad

a = corolla 1 [1,2]
b = corolla 2 [1,2]

aa123 = nsCompose 1 a a
a1a23 = nsCompose 2 a a
aa132 = shuffleCompose 1 [1,3,2] a a

ab123 = nsCompose 1 a b
a1b23 = nsCompose 2 a b
ab132 = shuffleCompose 1 [1,3,2] a b

ba123 = nsCompose 1 b a
b1a23 = nsCompose 2 b a
ba132 = shuffleCompose 1 [1,3,2] b a

bb123 = nsCompose 1 b b
b1b23 = nsCompose 2 b b
bb132 = shuffleCompose 1 [1,3,2] b b

oaa123 = oet aa123 :: FreeOperad Integer
oab123 = oet ab123 :: FreeOperad Integer
oba123 = oet ba123 :: FreeOperad Integer
obb123 = oet bb123 :: FreeOperad Integer

oa1a23 = oet a1a23 :: FreeOperad Integer
oa1b23 = oet a1b23 :: FreeOperad Integer
ob1a23 = oet b1a23 :: FreeOperad Integer
ob1b23 = oet b1b23 :: FreeOperad Integer

oaa132 = oet aa132 :: FreeOperad Integer
oab132 = oet ab132 :: FreeOperad Integer
oba132 = oet ba132 :: FreeOperad Integer
obb132 = oet bb132 :: FreeOperad Integer

r1 = oaa123 - oa1a23 + oaa132 - oa1b23
r2 = oaa123 - oa1a23 + ob1b23 - obb123
r3 = oaa123 - oa1a23 + oab123 - oba132
r4 = oaa123 - oa1a23 - ob1a23 + obb132
r5 = oaa123 - oa1a23 - oab132 + oba123

gens = [r1,r2,r3,r4,r5]

main = putStrLn . show $ operadicBuchberger gens