Substitute symbols in a freealg object for numbers or other freealg objects

subs(...)
subsu(S1, S2, r)

Arguments

S1, S2

Objects of class freealg

r

Integer specifying symbol to substitute (\(a=1,b=2\) etc)

...

First element is a freealg object, remainder are named arguments corresponding to variables to substitute

Value

Returns a freealg object.

Details

Function subs() substitutes variables for freealg objects (coerced if necessary) using natural R idiom. Observe that this type of substitution is sensitive to order:


> subs("ax",a="1+x",x="1+a")
free algebra element algebraically equal to
 + 2 + 3*a + 1*aa

> subs("ax",x="1+a",a="1+x")
free algebra element algebraically equal to
 + 2 + 3*x + 1*xx

Functions subsu() is a lower-level formal function, not really intended for the end-user. Function subsu() takes S1 and substitutes occurrences of symbol r with S2.

No equivalent to mvp::subvec() is currently implemented.

Author

Robin K. S. Hankin

Note

Function subs() is one place in the package where the use of letters is effectively hard-wired in. Idiom such as

subs("abccc",b="1+3x")

is very nice, but identifies “b” with 2. Note that argument r of subsu() is canonically an integer but a single character is interpreted as a letter. See also the note at freealg.Rd.

Examples

subs("abccc", b="1+3x")
#> free algebra element algebraically equal to
#> + accc + 3axccc
subs("aaaa", a="1+x")  # binomial
#> free algebra element algebraically equal to
#> + 1 + 4x + 6xx + 4xxx + xxxx

subs("abA", b=31)
#> free algebra element algebraically equal to
#> + 31

subs("1+a", a="A")   # can substitute for an inverse
#> free algebra element algebraically equal to
#> + 1 + A
subs("A", a="1+x")   # inverses are not substituted for
#> free algebra element algebraically equal to
#> + A

a <- rfalg()
subs(a, a=a)
#> free algebra element algebraically equal to
#> + 6acaac + 54acaacacaaac + 81acaacacaaacaa + 270acaacacaab + 135acaacacaac +
#> 189acaacacaacbb + 27acaacacaaccb + 36acaacacac + 54acaacacacaa + 180acaacacb +
#> 90acaacacc + 126acaacaccbb + 18acaacacccb + 180acaacbac + 270acaacbacaa +
#> 900acaacbb + 450acaacbc + 630acaacbcbb + 90acaacbccb + 90acaaccac +
#> 135acaaccacaa + 450acaaccb + 126acaaccbbac + 189acaaccbbacaa + 630acaaccbbb +
#> 315acaaccbbc + 441acaaccbbcbb + 63acaaccbbccb + 225acaaccc + 18acaacccbac +
#> 27acaacccbacaa + 405acaacccbb + 45acaacccbc + 63acaacccbcbb + 9acaacccbccb +
#> 45acaaccccb + 4acc + 36accacaaac + 54accacaaacaa + 180accacaab + 90accacaac +
#> 126accacaacbb + 18accacaaccb + 24accacac + 36accacacaa + 120accacb + 60accacc +
#> 84accaccbb + 12accacccb + 120accbac + 180accbacaa + 600accbb + 300accbc +
#> 420accbcbb + 60accbccb + 60acccac + 90acccacaa + 300acccb + 84acccbbac +
#> 126acccbbacaa + 420acccbbb + 210acccbbc + 294acccbbcbb + 42acccbbccb + 150acccc
#> + 12accccbac + 18accccbacaa + 270accccbb + 30accccbc + 42accccbcbb + 6accccbccb
#> + 30acccccb + 10b + 20bc + 180bcacaaac + 270bcacaaacaa + 900bcacaab +
#> 450bcacaac + 630bcacaacbb + 90bcacaaccb + 120bcacac + 180bcacacaa + 600bcacb +
#> 300bcacc + 420bcaccbb + 60bcacccb + 600bcbac + 900bcbacaa + 3000bcbb + 1500bcbc
#> + 2100bcbcbb + 300bcbccb + 300bccac + 450bccacaa + 1500bccb + 420bccbbac +
#> 630bccbbacaa + 2100bccbbb + 1050bccbbc + 1470bccbbcbb + 210bccbbccb + 750bccc +
#> 60bcccbac + 90bcccbacaa + 1350bcccbb + 150bcccbc + 210bcccbcbb + 30bcccbccb +
#> 150bccccb + 5c + 7cbb + 14cbbc + 126cbbcacaaac + 189cbbcacaaacaa + 630cbbcacaab
#> + 315cbbcacaac + 441cbbcacaacbb + 63cbbcacaaccb + 84cbbcacac + 126cbbcacacaa +
#> 420cbbcacb + 210cbbcacc + 294cbbcaccbb + 42cbbcacccb + 420cbbcbac +
#> 630cbbcbacaa + 2100cbbcbb + 1050cbbcbc + 1470cbbcbcbb + 210cbbcbccb +
#> 210cbbccac + 315cbbccacaa + 1050cbbccb + 294cbbccbbac + 441cbbccbbacaa +
#> 1470cbbccbbb + 735cbbccbbc + 1029cbbccbbcbb + 147cbbccbbccb + 525cbbccc +
#> 42cbbcccbac + 63cbbcccbacaa + 945cbbcccbb + 105cbbcccbc + 147cbbcccbcbb +
#> 21cbbcccbccb + 105cbbccccb + 10cc + 90ccacaaac + 135ccacaaacaa + 450ccacaab +
#> 225ccacaac + 315ccacaacbb + 45ccacaaccb + 60ccacac + 90ccacacaa + 300ccacb +
#> 150ccacc + 210ccaccbb + 30ccacccb + ccb + 300ccbac + 450ccbacaa + 1500ccbb +
#> 752ccbc + 18ccbcacaaac + 27ccbcacaaacaa + 90ccbcacaab + 45ccbcacaac +
#> 63ccbcacaacbb + 9ccbcacaaccb + 12ccbcacac + 18ccbcacacaa + 60ccbcacb +
#> 30ccbcacc + 42ccbcaccbb + 6ccbcacccb + 60ccbcbac + 90ccbcbacaa + 1350ccbcbb +
#> 150ccbcbc + 210ccbcbcbb + 30ccbcbccb + 30ccbccac + 45ccbccacaa + 300ccbccb +
#> 42ccbccbbac + 63ccbccbbacaa + 210ccbccbbb + 105ccbccbbc + 147ccbccbbcbb +
#> 21ccbccbbccb + 75ccbccc + 6ccbcccbac + 9ccbcccbacaa + 135ccbcccbb + 15ccbcccbc
#> + 21ccbcccbcbb + 3ccbcccbccb + 15ccbccccb + 150cccac + 225cccacaa + 750cccb +
#> 210cccbbac + 315cccbbacaa + 1050cccbbb + 525cccbbc + 735cccbbcbb + 105cccbbccb
#> + 375cccc + 30ccccbac + 45ccccbacaa + 675ccccbb + 75ccccbc + 105ccccbcbb +
#> 15ccccbccb + 75cccccb


## Sequential substitution works:

subs("abccc", b="1+3x", x="1+d+2e")
#> free algebra element algebraically equal to
#> + 4accc + 3adccc + 6aeccc
subs(rfalg(), a=rfalg())
#> free algebra element algebraically equal to
#> + aacbaacbaacb + 4aacbaacbab + 2aacbaacbbaab + 3aacbaacbbbcb + 11aacbaacbc +
#> 7aacbaacbca + 4aacbabaacb + 16aacbabab + 8aacbabbaab + 12aacbabbbcb + 44aacbabc
#> + 28aacbabca + 2aacbbaabaacb + 8aacbbaabab + 4aacbbaabbaab + 6aacbbaabbbcb +
#> 22aacbbaabc + 14aacbbaabca + 3aacbbbcbaacb + 12aacbbbcbab + 6aacbbbcbbaab +
#> 9aacbbbcbbbcb + 33aacbbbcbc + 21aacbbbcbca + 3aacbbcaacb + 12aacbbcab +
#> 6aacbbcbaab + 9aacbbcbbcb + 33aacbbcc + 21aacbbcca + 7aacbcaaacb + 28aacbcaab +
#> 11aacbcaacb + 44aacbcab + 14aacbcabaab + 21aacbcabbcb + 77aacbcac + 49aacbcaca
#> + 22aacbcbaab + 33aacbcbbcb + 121aacbcc + 77aacbcca + 4abaacbaacb + 16abaacbab
#> + 8abaacbbaab + 12abaacbbbcb + 44abaacbc + 28abaacbca + 16ababaacb + 64ababab +
#> 32ababbaab + 48ababbbcb + 176ababc + 112ababca + 8abbaabaacb + 32abbaabab +
#> 16abbaabbaab + 24abbaabbbcb + 88abbaabc + 56abbaabca + 12abbbcbaacb +
#> 48abbbcbab + 24abbbcbbaab + 36abbbcbbbcb + 132abbbcbc + 84abbbcbca + 12abbcaacb
#> + 48abbcab + 24abbcbaab + 36abbcbbcb + 132abbcc + 84abbcca + 28abcaaacb +
#> 112abcaab + 44abcaacb + 176abcab + 56abcabaab + 84abcabbcb + 308abcac +
#> 196abcaca + 88abcbaab + 132abcbbcb + 484abcc + 308abcca + 2baabaacbaacb +
#> 8baabaacbab + 4baabaacbbaab + 6baabaacbbbcb + 22baabaacbc + 14baabaacbca +
#> 8baababaacb + 32baababab + 16baababbaab + 24baababbbcb + 88baababc + 56baababca
#> + 4baabbaabaacb + 16baabbaabab + 8baabbaabbaab + 12baabbaabbbcb + 44baabbaabc +
#> 28baabbaabca + 6baabbbcbaacb + 24baabbbcbab + 12baabbbcbbaab + 18baabbbcbbbcb +
#> 66baabbbcbc + 42baabbbcbca + 6baabbcaacb + 24baabbcab + 12baabbcbaab +
#> 18baabbcbbcb + 66baabbcc + 42baabbcca + 14baabcaaacb + 56baabcaab + 22baabcaacb
#> + 88baabcab + 28baabcabaab + 42baabcabbcb + 154baabcac + 98baabcaca +
#> 44baabcbaab + 66baabcbbcb + 242baabcc + 154baabcca + 7bb + 3bbcbaacbaacb +
#> 12bbcbaacbab + 6bbcbaacbbaab + 9bbcbaacbbbcb + 33bbcbaacbc + 21bbcbaacbca +
#> 12bbcbabaacb + 48bbcbabab + 24bbcbabbaab + 36bbcbabbbcb + 132bbcbabc +
#> 84bbcbabca + 6bbcbbaabaacb + 24bbcbbaabab + 12bbcbbaabbaab + 18bbcbbaabbbcb +
#> 66bbcbbaabc + 42bbcbbaabca + 9bbcbbbcbaacb + 36bbcbbbcbab + 18bbcbbbcbbaab +
#> 27bbcbbbcbbbcb + 99bbcbbbcbc + 63bbcbbbcbca + 9bbcbbcaacb + 36bbcbbcab +
#> 18bbcbbcbaab + 27bbcbbcbbcb + 99bbcbbcc + 63bbcbbcca + 21bbcbcaaacb +
#> 84bbcbcaab + 33bbcbcaacb + 132bbcbcab + 42bbcbcabaab + 63bbcbcabbcb +
#> 231bbcbcac + 147bbcbcaca + 66bbcbcbaab + 99bbcbcbbcb + 363bbcbcc + 231bbcbcca +
#> 4bcaacb + 16bcab + 8bcbaab + 12bcbbcb + 44bcc + 28bcca + 7bccb + 6c +
#> 7caaacbaacb + 28caaacbab + 14caaacbbaab + 21caaacbbbcb + 77caaacbc + 49caaacbca
#> + 28caabaacb + 112caabab + 56caabbaab + 84caabbbcb + 308caabc + 196caabca +
#> 11caacbaacb + 44caacbab + 22caacbbaab + 33caacbbbcb + 121caacbc + 77caacbca +
#> 14cabaabaacb + 56cabaabab + 28cabaabbaab + 42cabaabbbcb + 154cabaabc +
#> 98cabaabca + 44cabaacb + 176cabab + 88cabbaab + 132cabbbcb + 21cabbcbaacb +
#> 84cabbcbab + 42cabbcbbaab + 63cabbcbbbcb + 231cabbcbc + 147cabbcbca + 484cabc +
#> 308cabca + 21cabcaacb + 84cabcab + 42cabcbaab + 63cabcbbcb + 231cabcc +
#> 147cabcca + 49cacaaacb + 196cacaab + 77cacaacb + 308cacab + 98cacabaab +
#> 147cacabbcb + 539cacac + 343cacaca + 154cacbaab + 231cacbbcb + 847cacc +
#> 539cacca + 22cbaabaacb + 88cbaabab + 44cbaabbaab + 66cbaabbbcb + 242cbaabc +
#> 154cbaabca + 33cbbcbaacb + 132cbbcbab + 66cbbcbbaab + 99cbbcbbbcb + 363cbbcbc +
#> 231cbbcbca + 33cbcaacb + 132cbcab + 66cbcbaab + 99cbcbbcb + 363cbcc + 231cbcca
#> + 77ccaaacb + 308ccaab + 121ccaacb + 484ccab + 154ccabaab + 231ccabbcb +
#> 847ccac + 539ccaca + 242ccbaab + 363ccbbcb + 1331ccc + 847ccca