$ unbuffer make run | aha > aha.html
./compute_constrained_bayes --verbosity:0

## Full prediction with access to all hypotheses (~Solomonoff)
## Initial sequence: @["1", "2", "3"]
continuation_probabilities=@[
  ("4", 0.5031144781144781),
  ("5", 0.1727272727272727),
  ("6", 0.07878787878787878),
  ("2", 0.0505050505050505),
  ("3", 0.04882154882154882),
  ("7", 0.02803030303030303),
  ("1", 0.02474747474747475),
  ("8", 0.02163299663299663),
  ("9", 0.01060606060606061),
  ("10", 0.009175084175084175),
  ("11", 0.008838383838383838),
  ("12", 0.008501683501683501),
  ("16", 0.003787878787878788),
  ("14", 0.003787878787878788),
  ("0", 0.003282828282828283),
  ("15", 0.00260942760942761),
  ("13", 0.002525252525252525),
  ("18", 0.001262626262626263),
  ("20", 0.001178451178451178),
  ("17", 0.001178451178451178),
  ("23", 0.000925925925925926),
  ("24", 0.0008417508417508417),
  ("22", 0.0008417508417508417),
  ("41", 0.0007575757575757576),
  ("28", 0.0006734006734006734),
  ("19", 0.0005892255892255892),
  ("211", 0.0005050505050505051),
  ("29", 0.0004208754208754209),
  ("30", 0.0004208754208754209),
  ("26", 0.0003367003367003367),
  ("35", 0.0003367003367003367),
  ("25", 0.0003367003367003367),
  ("4567", 0.0003367003367003367),
  ("-2", 0.0003367003367003367),
  ("-1", 0.0003367003367003367),
  ("-4", 0.0002525252525252525),
  ("40", 0.0002525252525252525),
  ("60", 0.0002525252525252525),
  ("32", 0.0002525252525252525),
  ("81", 0.0001683501683501684),
  ("64", 0.0001683501683501684),
  ("38", 0.0001683501683501684),
  ("56", 0.0001683501683501684),
  ("33", 0.0001683501683501684),
  ("31", 0.0001683501683501684),
  ("123", 0.0001683501683501684),
  ("69", 0.0001683501683501684),
  ("27", 0.0001683501683501684),
  ("39", 0.0001683501683501684),
  ("128", 8.417508417508418e-05),
  ("130", 8.417508417508418e-05),
  ("55", 8.417508417508418e-05),
  ("47", 8.417508417508418e-05),
  ("65", 8.417508417508418e-05),
  ("74", 8.417508417508418e-05),
  ("83", 8.417508417508418e-05),
  ("92", 8.417508417508418e-05),
  ("124", 8.417508417508418e-05),
  ("36", 8.417508417508418e-05),
  ("789", 8.417508417508418e-05),
  ("2436", 8.417508417508418e-05),
  ("401", 8.417508417508418e-05),
  ("43", 8.417508417508418e-05),
  ("58", 8.417508417508418e-05),
  ("34", 8.417508417508418e-05),
  ("107", 8.417508417508418e-05),
  ("380", 8.417508417508418e-05),
  ("-3", 8.417508417508418e-05),
  ("119", 8.417508417508418e-05),
  ("456", 8.417508417508418e-05),
  ("8787", 8.417508417508418e-05),
  ("48", 8.417508417508418e-05),
  ("127", 8.417508417508418e-05),
  ("469", 8.417508417508418e-05),
  ("57", 8.417508417508418e-05),
  ("85", 8.417508417508418e-05),
  ("617", 8.417508417508418e-05),
  ("-16", 8.417508417508418e-05),
  ("1080", 8.417508417508418e-05),
  ("72", 8.417508417508418e-05),
  ("95", 8.417508417508418e-05),
  ("101", 8.417508417508418e-05),
  ("661", 8.417508417508418e-05),
  ("37", 8.417508417508418e-05),
  ("2310", 8.417508417508418e-05),
  ("62", 8.417508417508418e-05),
  ("111213", 8.417508417508418e-05),
  ("44", 8.417508417508418e-05),
  ("99", 8.417508417508418e-05),
  ("1767", 8.417508417508418e-05),
  ("123543", 8.417508417508418e-05),
  ("173", 8.417508417508418e-05),
  ("21", 8.417508417508418e-05),
  ("42", 8.417508417508418e-05),
  ("144689999986441", 8.417508417508418e-05),
  ("54", 8.417508417508418e-05),
  ("512", 8.417508417508418e-05),
  ("371", 8.417508417508418e-05),
  ("52", 8.417508417508418e-05)
]

## Predictions with increasingly many hypotheses
Showing predictions with increasingly many hypotheses after seeing @["1", "2", "3", "23"]
Predictions with 10% of the hypotheses
predictions=@[]
Predictions with 20% of the hypotheses
predictions=@[("49", 0.5), ("323", 0.5)]
Predictions with 30% of the hypotheses
predictions=@[("49", 0.3333333333333333), ("323", 0.3333333333333333), ("17", 0.3333333333333333)]
Predictions with 40% of the hypotheses
predictions=@[("49", 0.25), ("323", 0.25), ("17", 0.25), ("20880467999847912034355032910540", 0.25)]
Predictions with 50% of the hypotheses
predictions=@[("49", 0.25), ("323", 0.25), ("17", 0.25), ("20880467999847912034355032910540", 0.25)]
Predictions with 60% of the hypotheses
predictions=@[("49", 0.2), ("323", 0.2), ("17", 0.2), ("20880467999847912034355032910540", 0.2), ("59", 0.2)]
Predictions with 70% of the hypotheses
predictions=@[("49", 0.2), ("323", 0.2), ("17", 0.2), ("20880467999847912034355032910540", 0.2), ("59", 0.2)]
Predictions with 80% of the hypotheses
predictions=@[
  ("49", 0.125),
  ("323", 0.125),
  ("17", 0.125),
  ("20880467999847912034355032910540", 0.125),
  ("59", 0.125),
  ("29", 0.125),
  ("19", 0.125),
  ("5", 0.125)
]
Predictions with 90% of the hypotheses
predictions=@[
  ("49", 0.125),
  ("323", 0.125),
  ("17", 0.125),
  ("20880467999847912034355032910540", 0.125),
  ("59", 0.125),
  ("29", 0.125),
  ("19", 0.125),
  ("5", 0.125)
]
Predictions with 100% of the hypotheses
predictions=@[
  ("49", 0.09090909090909091),
  ("323", 0.09090909090909091),
  ("17", 0.09090909090909091),
  ("20880467999847912034355032910540", 0.09090909090909091),
  ("59", 0.09090909090909091),
  ("29", 0.09090909090909091),
  ("19", 0.09090909090909091),
  ("5", 0.09090909090909091),
  ("31", 0.09090909090909091),
  ("11", 0.09090909090909091),
  ("43", 0.09090909090909091)
]

## Prediction with limited number of hypotheses (~JIT-Bayes)
### Prediction after seeing 3 observations: @["1", "2", "3"]
predictions=@[
  ("4", 0.375),
  ("5", 0.25),
  ("6", 0.2083333333333333),
  ("8", 0.04166666666666666),
  ("10", 0.04166666666666666),
  ("3", 0.04166666666666666),
  ("7", 0.04166666666666666)
]
Correct continuation, 23 not found in set of hypotheses of size 1000/362901. Increasing size of the set of hypotheses.
Correct continuation, 23 not found in set of hypotheses of size 31000/362901. Increasing size of the set of hypotheses.
Increased number of hypotheses to 61000, and found 1 concordant hypotheses. Continuing
### Prediction after seeing 4 observations: @["1", "2", "3", "23"]
predictions=@[("49", 1.0)]
Correct continuation, 11 not found in set of hypotheses of size 61000/362901. Increasing size of the set of hypotheses.
Correct continuation, 11 not found in set of hypotheses of size 91000/362901. Increasing size of the set of hypotheses.
Correct continuation, 11 not found in set of hypotheses of size 121000/362901. Increasing size of the set of hypotheses.
Correct continuation, 11 not found in set of hypotheses of size 151000/362901. Increasing size of the set of hypotheses.
Correct continuation, 11 not found in set of hypotheses of size 181000/362901. Increasing size of the set of hypotheses.
Correct continuation, 11 not found in set of hypotheses of size 211000/362901. Increasing size of the set of hypotheses.
Correct continuation, 11 not found in set of hypotheses of size 241000/362901. Increasing size of the set of hypotheses.
Correct continuation, 11 not found in set of hypotheses of size 271000/362901. Increasing size of the set of hypotheses.
Correct continuation, 11 not found in set of hypotheses of size 301000/362901. Increasing size of the set of hypotheses.
Increased number of hypotheses to 331000, and found 1 concordant hypotheses. Continuing
### Prediction after seeing 5 observations: @["1", "2", "3", "23", "11"]
predictions=@[("18", 1.0)]
Correct continuation was 18
It was assigned a probability of 1.0
### Prediction after seeing 6 observations: @["1", "2", "3", "23", "11", "18"]
predictions=@[("77", 1.0)]
Correct continuation was 77
It was assigned a probability of 1.0
### Prediction after seeing 7 observations: @["1", "2", "3", "23", "11", "18", "77"]
predictions=@[("46", 1.0)]
Correct continuation was 46
It was assigned a probability of 1.0
### Prediction after seeing 8 observations: @["1", "2", "3", "23", "11", "18", "77", "46"]
predictions=@[("84", 1.0)]
Correct continuation was 84
It was assigned a probability of 1.0

## Mini-infra-bayesianism over environments, where your utility in an environment is just the log-loss in the predictions you make until you become certain that you are in that environment.
### Prediction after seeing 3 observations: @["1", "2", "3"]
predictions=@[
  ("4", 0.5031144781144781),
  ("5", 0.1727272727272727),
  ("6", 0.07878787878787878),
  ("2", 0.0505050505050505),
  ("3", 0.04882154882154882),
  ("7", 0.02803030303030303),
  ("1", 0.02474747474747475),
  ("8", 0.02163299663299663),
  ("9", 0.01060606060606061),
  ("10", 0.009175084175084175),
  ("11", 0.008838383838383838),
  ("12", 0.008501683501683501),
  ("16", 0.003787878787878788),
  ("14", 0.003787878787878788),
  ("0", 0.003282828282828283),
  ("15", 0.00260942760942761),
  ("13", 0.002525252525252525),
  ("18", 0.001262626262626263),
  ("20", 0.001178451178451178),
  ("17", 0.001178451178451178),
  ("23", 0.000925925925925926),
  ("24", 0.0008417508417508417),
  ("22", 0.0008417508417508417),
  ("41", 0.0007575757575757576),
  ("28", 0.0006734006734006734),
  ("19", 0.0005892255892255892),
  ("211", 0.0005050505050505051),
  ("29", 0.0004208754208754209),
  ("30", 0.0004208754208754209),
  ("26", 0.0003367003367003367),
  ("35", 0.0003367003367003367),
  ("25", 0.0003367003367003367),
  ("4567", 0.0003367003367003367),
  ("-2", 0.0003367003367003367),
  ("-1", 0.0003367003367003367),
  ("-4", 0.0002525252525252525),
  ("40", 0.0002525252525252525),
  ("60", 0.0002525252525252525),
  ("32", 0.0002525252525252525),
  ("81", 0.0001683501683501684),
  ("64", 0.0001683501683501684),
  ("38", 0.0001683501683501684),
  ("56", 0.0001683501683501684),
  ("33", 0.0001683501683501684),
  ("31", 0.0001683501683501684),
  ("123", 0.0001683501683501684),
  ("69", 0.0001683501683501684),
  ("27", 0.0001683501683501684),
  ("39", 0.0001683501683501684),
  ("128", 8.417508417508418e-05),
  ("130", 8.417508417508418e-05),
  ("55", 8.417508417508418e-05),
  ("47", 8.417508417508418e-05),
  ("65", 8.417508417508418e-05),
  ("74", 8.417508417508418e-05),
  ("83", 8.417508417508418e-05),
  ("92", 8.417508417508418e-05),
  ("124", 8.417508417508418e-05),
  ("36", 8.417508417508418e-05),
  ("789", 8.417508417508418e-05),
  ("2436", 8.417508417508418e-05),
  ("401", 8.417508417508418e-05),
  ("43", 8.417508417508418e-05),
  ("58", 8.417508417508418e-05),
  ("34", 8.417508417508418e-05),
  ("107", 8.417508417508418e-05),
  ("380", 8.417508417508418e-05),
  ("-3", 8.417508417508418e-05),
  ("119", 8.417508417508418e-05),
  ("456", 8.417508417508418e-05),
  ("8787", 8.417508417508418e-05),
  ("48", 8.417508417508418e-05),
  ("127", 8.417508417508418e-05),
  ("469", 8.417508417508418e-05),
  ("57", 8.417508417508418e-05),
  ("85", 8.417508417508418e-05),
  ("617", 8.417508417508418e-05),
  ("-16", 8.417508417508418e-05),
  ("1080", 8.417508417508418e-05),
  ("72", 8.417508417508418e-05),
  ("95", 8.417508417508418e-05),
  ("101", 8.417508417508418e-05),
  ("661", 8.417508417508418e-05),
  ("37", 8.417508417508418e-05),
  ("2310", 8.417508417508418e-05),
  ("62", 8.417508417508418e-05),
  ("111213", 8.417508417508418e-05),
  ("44", 8.417508417508418e-05),
  ("99", 8.417508417508418e-05),
  ("1767", 8.417508417508418e-05),
  ("123543", 8.417508417508418e-05),
  ("173", 8.417508417508418e-05),
  ("21", 8.417508417508418e-05),
  ("42", 8.417508417508418e-05),
  ("144689999986441", 8.417508417508418e-05),
  ("54", 8.417508417508418e-05),
  ("512", 8.417508417508418e-05),
  ("371", 8.417508417508418e-05),
  ("52", 8.417508417508418e-05)
]
Correct continuation was 23
It was assigned a probability of 0.000925925925925926
And hence a loss of -6.984716320118265
Total loss is: -6.984716320118265
### Prediction after seeing 4 observations: @["1", "2", "3", "23"]
predictions=@[
  ("49", 0.09090909090909091),
  ("323", 0.09090909090909091),
  ("17", 0.09090909090909091),
  ("20880467999847912034355032910540", 0.09090909090909091),
  ("59", 0.09090909090909091),
  ("29", 0.09090909090909091),
  ("19", 0.09090909090909091),
  ("5", 0.09090909090909091),
  ("31", 0.09090909090909091),
  ("11", 0.09090909090909091),
  ("43", 0.09090909090909091)
]
Correct continuation was 11
It was assigned a probability of 0.09090909090909091
And hence a loss of -2.397895272798371
Total loss is: -9.382611592916636
### Prediction after seeing 5 observations: @["1", "2", "3", "23", "11"]
predictions=@[("18", 1.0)]
Correct continuation was 18
It was assigned a probability of 1.0
And hence a loss of 0.0
Total loss is: -9.382611592916636
### Prediction after seeing 6 observations: @["1", "2", "3", "23", "11", "18"]
predictions=@[("77", 1.0)]
Correct continuation was 77
It was assigned a probability of 1.0
And hence a loss of 0.0
Total loss is: -9.382611592916636
### Prediction after seeing 7 observations: @["1", "2", "3", "23", "11", "18", "77"]
predictions=@[("46", 1.0)]
Correct continuation was 46
It was assigned a probability of 1.0
And hence a loss of 0.0
Total loss is: -9.382611592916636
### Prediction after seeing 8 observations: @["1", "2", "3", "23", "11", "18", "77", "46"]
predictions=@[("84", 1.0)]
Correct continuation was 84
It was assigned a probability of 1.0
And hence a loss of 0.0
Total loss is: -9.382611592916636

## Mini-infra-bayesianism over environments, where your utility in an environment is just the log-loss in the predictions you make until you become certain that you are in that environment. This time with a twist: You don't have hypotheses over the sequences you observe, but rather over their odd and even position, i.e., you think that you observe interleaved OEIS sequences, (a1, b1, a2, b2, a3, b3). See the README.md for more.
### Prediction after seeing 6 observations: @["1", "2", "2", "11", "3", "13"]
predictions=@[
  ("4", 0.5031144781144781),
  ("5", 0.1727272727272727),
  ("6", 0.07878787878787878),
  ("2", 0.0505050505050505),
  ("3", 0.04882154882154882),
  ("7", 0.02803030303030303),
  ("1", 0.02474747474747475),
  ("8", 0.02163299663299663),
  ("9", 0.01060606060606061),
  ("10", 0.009175084175084175),
  ("11", 0.008838383838383838),
  ("12", 0.008501683501683501),
  ("16", 0.003787878787878788),
  ("14", 0.003787878787878788),
  ("0", 0.003282828282828283),
  ("15", 0.00260942760942761),
  ("13", 0.002525252525252525),
  ("18", 0.001262626262626263),
  ("20", 0.001178451178451178),
  ("17", 0.001178451178451178),
  ("23", 0.000925925925925926),
  ("24", 0.0008417508417508417),
  ("22", 0.0008417508417508417),
  ("41", 0.0007575757575757576),
  ("28", 0.0006734006734006734),
  ("19", 0.0005892255892255892),
  ("211", 0.0005050505050505051),
  ("29", 0.0004208754208754209),
  ("30", 0.0004208754208754209),
  ("26", 0.0003367003367003367),
  ("35", 0.0003367003367003367),
  ("25", 0.0003367003367003367),
  ("4567", 0.0003367003367003367),
  ("-2", 0.0003367003367003367),
  ("-1", 0.0003367003367003367),
  ("-4", 0.0002525252525252525),
  ("40", 0.0002525252525252525),
  ("60", 0.0002525252525252525),
  ("32", 0.0002525252525252525),
  ("81", 0.0001683501683501684),
  ("64", 0.0001683501683501684),
  ("38", 0.0001683501683501684),
  ("56", 0.0001683501683501684),
  ("33", 0.0001683501683501684),
  ("31", 0.0001683501683501684),
  ("123", 0.0001683501683501684),
  ("69", 0.0001683501683501684),
  ("27", 0.0001683501683501684),
  ("39", 0.0001683501683501684),
  ("128", 8.417508417508418e-05),
  ("130", 8.417508417508418e-05),
  ("55", 8.417508417508418e-05),
  ("47", 8.417508417508418e-05),
  ("65", 8.417508417508418e-05),
  ("74", 8.417508417508418e-05),
  ("83", 8.417508417508418e-05),
  ("92", 8.417508417508418e-05),
  ("124", 8.417508417508418e-05),
  ("36", 8.417508417508418e-05),
  ("789", 8.417508417508418e-05),
  ("2436", 8.417508417508418e-05),
  ("401", 8.417508417508418e-05),
  ("43", 8.417508417508418e-05),
  ("58", 8.417508417508418e-05),
  ("34", 8.417508417508418e-05),
  ("107", 8.417508417508418e-05),
  ("380", 8.417508417508418e-05),
  ("-3", 8.417508417508418e-05),
  ("119", 8.417508417508418e-05),
  ("456", 8.417508417508418e-05),
  ("8787", 8.417508417508418e-05),
  ("48", 8.417508417508418e-05),
  ("127", 8.417508417508418e-05),
  ("469", 8.417508417508418e-05),
  ("57", 8.417508417508418e-05),
  ("85", 8.417508417508418e-05),
  ("617", 8.417508417508418e-05),
  ("-16", 8.417508417508418e-05),
  ("1080", 8.417508417508418e-05),
  ("72", 8.417508417508418e-05),
  ("95", 8.417508417508418e-05),
  ("101", 8.417508417508418e-05),
  ("661", 8.417508417508418e-05),
  ("37", 8.417508417508418e-05),
  ("2310", 8.417508417508418e-05),
  ("62", 8.417508417508418e-05),
  ("111213", 8.417508417508418e-05),
  ("44", 8.417508417508418e-05),
  ("99", 8.417508417508418e-05),
  ("1767", 8.417508417508418e-05),
  ("123543", 8.417508417508418e-05),
  ("173", 8.417508417508418e-05),
  ("21", 8.417508417508418e-05),
  ("42", 8.417508417508418e-05),
  ("144689999986441", 8.417508417508418e-05),
  ("54", 8.417508417508418e-05),
  ("512", 8.417508417508418e-05),
  ("371", 8.417508417508418e-05),
  ("52", 8.417508417508418e-05)
]
Correct continuation was 23
It was assigned a probability of 0.000925925925925926
And hence a loss of -6.984716320118265
Total loss is: -6.984716320118265
### Prediction after seeing 7 observations: @["1", "2", "2", "11", "3", "13", "23"]
predictions=@[
  ("17", 0.4035087719298245),
  ("19", 0.1228070175438596),
  ("23", 0.1228070175438596),
  ("29", 0.07017543859649122),
  ("31", 0.07017543859649122),
  ("24", 0.03508771929824561),
  ("7", 0.03508771929824561),
  ("101", 0.03508771929824561),
  ("41", 0.03508771929824561),
  ("47", 0.01754385964912281),
  ("20", 0.01754385964912281),
  ("22", 0.01754385964912281),
  ("25", 0.01754385964912281)
]
Correct continuation was 23
It was assigned a probability of 0.1228070175438596
And hence a loss of -2.097141118779237
Total loss is: -9.081857438897501
### Prediction after seeing 8 observations: @["1", "2", "2", "11", "3", "13", "23", "23"]
predictions=@[
  ("49", 0.09090909090909091),
  ("323", 0.09090909090909091),
  ("17", 0.09090909090909091),
  ("20880467999847912034355032910540", 0.09090909090909091),
  ("59", 0.09090909090909091),
  ("29", 0.09090909090909091),
  ("19", 0.09090909090909091),
  ("5", 0.09090909090909091),
  ("31", 0.09090909090909091),
  ("11", 0.09090909090909091),
  ("43", 0.09090909090909091)
]
Correct continuation was 11
It was assigned a probability of 0.09090909090909091
And hence a loss of -2.397895272798371
Total loss is: -11.47975271169587
### Prediction after seeing 9 observations: @["1", "2", "2", "11", "3", "13", "23", "23", "11"]
predictions=@[
  ("29", 0.2857142857142857),
  ("41", 0.2857142857142857),
  ("37", 0.1428571428571428),
  ("31", 0.1428571428571428),
  ("47", 0.1428571428571428)
]
Correct continuation was 47
It was assigned a probability of 0.1428571428571428
And hence a loss of -1.945910149055313
Total loss is: -13.42566286075118
### Prediction after seeing 10 observations: @["1", "2", "2", "11", "3", "13", "23", "23", "11", "47"]
predictions=@[("18", 1.0)]
Correct continuation was 18
It was assigned a probability of 1.0
And hence a loss of 0.0
Total loss is: -13.42566286075118
### Prediction after seeing 11 observations: @["1", "2", "2", "11", "3", "13", "23", "23", "11", "47", "18"]
predictions=@[("59", 1.0)]
Correct continuation was 59
It was assigned a probability of 1.0
And hence a loss of 0.0
Total loss is: -13.42566286075118
### Prediction after seeing 12 observations: @["1", "2", "2", "11", "3", "13", "23", "23", "11", "47", "18", "59"]
predictions=@[("77", 1.0)]
Correct continuation was 77
It was assigned a probability of 1.0
And hence a loss of 0.0
Total loss is: -13.42566286075118
### Prediction after seeing 13 observations: @["1", "2", "2", "11", "3", "13", "23", "23", "11", "47", "18", "59", "77"]
predictions=@[("71", 1.0)]
Correct continuation was 71
It was assigned a probability of 1.0
And hence a loss of 0.0
Total loss is: -13.42566286075118
### Prediction after seeing 14 observations: @["1", "2", "2", "11", "3", "13", "23", "23", "11", "47", "18", "59", "77", "71"]
predictions=@[("46", 1.0)]
Correct continuation was 46
It was assigned a probability of 1.0
And hence a loss of 0.0
Total loss is: -13.42566286075118
### Prediction after seeing 15 observations: @["1", "2", "2", "11", "3", "13", "23", "23", "11", "47", "18", "59", "77", "71", "46"]
predictions=@[("83", 1.0)]
Correct continuation was 83
It was assigned a probability of 1.0
And hence a loss of 0.0
Total loss is: -13.42566286075118
### Prediction after seeing 16 observations: @["1", "2", "2", "11", "3", "13", "23", "23", "11", "47", "18", "59", "77", "71", "46", "83"]
predictions=@[("84", 1.0)]
Correct continuation was 84
It was assigned a probability of 1.0
And hence a loss of 0.0
Total loss is: -13.42566286075118
### Prediction after seeing 17 observations: @["1", "2", "2", "11", "3", "13", "23", "23", "11", "47", "18", "59", "77", "71", "46", "83", "84"]
predictions=@[("107", 1.0)]
Correct continuation was 107
It was assigned a probability of 1.0
And hence a loss of 0.0
Total loss is: -13.42566286075118