# [seqfan] HOPS - Handy Operations on Power Series

Anders Claesson anders.claesson at gmail.com
Wed Dec 30 15:19:21 CET 2015

```Dear sequence fans,

I thought I'd share a couple of command line tools I've written (in
Haskell) for working with integer sequences and their generating
functions:

- http://akc.is/hops/
- http://akc.is/sloane/

The first program is the more interesting. It is a tool for (truncated)
power series manipulation. One unusual property of this program is that
implicit definitions in terms of functional equations are automatically
"solved" (by iteration).

\$ hops 'c=1+x*c^2'
c=1+x*c^2 =>
{1,1,2,5,14,42,132,429,1430,4862,16796,58786,208012,742900,2674440}

Many of the "usual" transformations are supported. E.g.,

\$ hops 'c=1+x*c^2;HANKEL(c)'
c=1+x*c^2;HANKEL(c) => {1,1,1,1,1,1,1,1}

For a full list of operations and transformations currently supported
see http://akc.is/hops/language/

Programs also compose using a special variable "stdin", though renaming
may occur:

\$ hops 'c=1+x*c^2' | hops 'HANKEL(stdin)'
f=1+x*f^2;HANKEL(f) => {1,1,1,1,1,1,1,1}

\$ hops --prec=22 'A101264^2'
A101264^2 => {0,0,1,2,3,2,3,4,4,4,5,6,5,4,6,4,7,8,3,6,8,6,7,10}

Piping through sloane we find that

\$ hops --prec=22 'A101264^2' | sloane

S A002372 0,0,1,2,3,2,3,4,4,4,5,6,5,4,6,4,7,8,3,6,8,6,7,10,8,6,10,
N A002372 Goldbach conjecture: number of decompositions of 2n into
ordered

and so

\$ hops --prec=30 'A101264^2 - A002372'
A101264^2-A002372 =>
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}

which is a relation that seems to be missing in the OEIS. If we would
like to find more such identities we could try squaring all sequences in
the OEIS. As a test

\$ hops --dump | hops 'stdin^2' >/dev/null

takes just over a minute on my 5 year old ThinkPad x220. Filtering out
those squares which are in the OEIS can be achieved by another pipe
through sloane:

\$ hops --dump | hops 'stdin^2' | sloane --filter

This is, unfortunately, a lot slower (room for improvements and pull
requests!) and takes around 35 minutes on my laptop.

Finally, I took the liberty of re-implementing Thomas Baruchel's
interesting deconvolution program using hops (and jq). It can be found
under the heading "A more involved example" in the tutorial,
http://akc.is/hops/tutorial/

Comments, questions, suggestions, etc, are of course very welcome.

Cheers,
Anders (http://akc.is/)
```