Very nice work, Iijil! It would be nice to figure out similar arguments for the Xathrid Necromancer version, since that's what we're using in the 60-card deck.
wow, I haven't been keeping up with this and that's a pretty impressive setup, I'll have to poke around in that repo some.
As for how efficient it is with necromancers, the main problem is how they mess up the clean waterclock implementation with their human type. Other than that, things are pretty much the same.
A super unoptimized line just doing the obvious greedy thing, (that I realized can be way better) gives the opponent more than 10,000 fully hacked necromancers/vanillas/crusades, and another 10,000 unhacked.
which seems more than sufficient to implement the small UTM demonstrated and start getting big busy beaver numbers, even from this 'small' initial compute.
Edit: Yeah, we don't have quite enough life to make it work with Mycosynth Lattice. We need 8 colored mana, so Bucknard's Everfull Purse is not enough; it would be with the aid of Mondrak, but we have to cast Bucknard's first.
Edit: Bleah, I forgot that Twinflame needed extra mana too... okay I'm not sure what's best in the 6 card category then.
Edit: Oh, we only need one more target for Twinflame, which we can get with Mycosynth Lattice.
Edit: Oh I see... Croaking Counterpart doesn't give haste, so the damage is for the *next* turn.
Edit: Yeah, we don't have quite enough life to make it work with Mycosynth Lattice. We need 8 colored mana, so Bucknard's Everfull Purse is not enough; it would be with the aid of Mondrak, but we have to cast Bucknard's first.
Edit: Bleah, I forgot that Twinflame needed extra mana too... okay I'm not sure what's best in the 6 card category then.
Edit: Oh, we only need one more target for Twinflame, which we can get with Mycosynth Lattice.
Edit: Oh I see... Croaking Counterpart doesn't give haste, so the damage is for the *next* turn.
I would want to mention that the setup with arcbond, coat of arms, bishops and crusades is sufficient to implement the Waterfall Model, which has been proven to be Turing Complete. (we actually implement a more complex variant thanks to flooding and partially flooding clocks, though those are not needed for TC-ness, they do make small computation run longer)
The full flooding variant is still likely not TC, though there's been no proof one way or the other. If it was we could cut Dralnu's Crusade and get down to a lucky 13 cards.
Imo the 8 card hand should use Mishra's Workshop instead of Show and Tell. That is only so we don't give the opponent the opportunity to put something nasty into play. Not at all because I'm tired of using Show and Tell for the start
A high level overview of the 14 cards start-up computation could follow these lines:
We start by sacrificing a single, unbuffed Bishop of Wings to Soulblast and aim it at the Arcbond creature, so each arcbond tick will deal 1 damage.
After 3 ticks the starting Crab in the Input Heartbeat dies. Going forward a Crab will die almost every tick, since the crab replaces itself. A Crab dying also creates a Kavu, which buffs the arcbonded creature. The arcbond creature is now stable at 25 life and won't lose anymore unless this heartbeat is skipped.
After the next tick clock 1, 2 and 3 empty, creating a Cat, Ape and Frog. Thus they start the heartbeats for Clock 2, 3 and 4, which keep those clocks special creatures at a stable life, unless the corresponding heartbeat is skipped.
The program will end on its own once 25 input heartbeats are skipped, which causes the arcbonded creature to die.
To skip a beat of the input heartbeat we need to empty clock 4, i.e. reduce the life of the Horror to 0. This has two effects:
1. it skips a beat of the input heartbeat by creating a Crab*, thus reducing the arcbonded creatures life by 1
2. it recreates the Horror and Druids that make up clock 4, but now without damage. Since on most ticks in the past the heartbeat for clock 4 has created a druid to keep the life stable we now get a number of druids close to the number of arcbond ticks that have happened since the start. All the druids buff the toughness of the Horror and each other, so this time around the clock starts with "ticks since start" life.
So we need to empty clock 4 25 times, each time recreating it with bigger life.
To empty clock 4 when it has N life we need to skip the clock 4 heart beat N times. This is done by emptying clock 3.
Again, emptying clock 3 has two effects:
1. skip heartbeat of clock 4
2. recreate itself with "ticks since start" life
You see where this is going:
To empty clock 3 when it has N life we need to skip the clock 3 heart beat N times. This is done by emptying clock 2.
Emptying clock 2 has two effects:
1. skip heartbeat of clock 3
2. recreate itself with "ticks since start" life
To empty clock 2 when it has N life we need to skip the clock 2 heart beat N times. This is done by emptying clock 1.
Emptying clock 1 has two effects:
1. skip heartbeat of clock 2
2. recreate itself with "ticks since start" life. While it doesn't have a heartbeat that takes care of increasing this starting life it creates 2 Golems for every 1 that dies, which has the same effect.
Finally clock 1 doesn't have a heartbeat, so to empty it when it has N life we just need to wait N ticks. Doing that effectively doubles "ticks since start"
Put together we have a layer system with "ticks since start" as the output.
The input heartbeat clock also happens to produce 2 drakes per tick, which turns this output into output creatures as we go. Those also keep the vanillas that are still targeted by Audacious Swap alive.
There are a few things you could go into greater detail on. I'm not sure what level of brevity is appropriate.
- Skipping a heartbeat causes the heartbeat to be slower but more powerful. So instead of talking about clock N life it would be more accurate to talk about (clock N life - heartbeat N life)
- All the creatures of each clock die at the same time because the most damage creature dies and stops buffing the less damaged ones. The cascading toughness loss leaves no survivors. Technically this needs to be formally proven somewhere.
- The "ticks since start" life is not quite accurate. It's more like "ticks since start - number of times the heartbeat for this clock was skipped"
- There's probably more stuff about how clocks work that I can't think of right now because I just take it for granted, but which could require additional explanation or a proof that it does actually work like that.
Let’s start with the case of N undamaged tokens. Adding a token gives us N+1 undamaged tokens, which is the same case just choosing a larger N to start with. On the other hand, doing a tick of damage reduces us to N-1 toughness. Clearly, N ticks will kill all of them, zeroing the clock.
So let’s do less than N damage, call it M, and then create K tokens and see what the effect is. Well the old tokens have N+K-M toughness, and the new ones have N+K toughness.
Suppose we do the remaining N+K-M damage ticks to kill the original tokens, do the new tokens die as well? Well they would have N+K-(N+K-M) = M toughness left. However, all of the N original tokens are dying now, so they actually have M-N toughness after losing the coat of arms buffs. Since M<N, M-N<0 and the new tokens die as well.
This logic applies to any sequence of damage ticks and token creates.
Alternate proof:
We proceed by induction on N, the number of tokens and damage ticks.
base case: N=1 one tick kills all one of them
Inductive case: If N ticks kill all N of them, would N+1 ticks kill all N+1 of them?
Let’s make an extra one before the Nth tick, so we have N+1 of them after N ticks.
The N+1st tick kills the bottom token, reducing us to N of them. By the inductive hypothesis, this also kills the original N tokens, as the extra tick cancels out the coat of arms buff. Leaving us the new token with 1 damage on it and no friends, killing it as well.
If we make the N+1st token earlier, it just has more damage on it and still dies.
Now, there are some minor complications such as the buff from dralnu’s crusade, but that ends up being less and less of a factor as the numbers get bigger.
I also think we need a slightly better explanation of flooding + half-flooding clocks.
One more complication possibly worth mentioning is the weird stuff we can do with layers, like if we have crusades making all goblins zombies, all zombies crabs, and all crabs goblins, if we make a goblin a zombie and a crab, do we have three goblin crab zombies? No! It depends on timestamps. It can get even weirder than that, but no matter what it’s all handled deterministically by the rules without player intervention, so there’s nothing that can break computation.
Suppose at a certain tick N tokens of a group die, and M tokens live. The oldest of the N tokens must have taken N+M damage, but must have taken less than N damage when the oldest of the M tokens was created. So the oldest of the M tokens must have taken more than M damage, and therefore will die, a contradiction.
Finally looking back at this. Thanks for all the explanations!
I want to make sure I can explain this in exact terms rather than abstract ones. Is the Bishop we sacrifice the "Boar" one? If so, why is a vanilla also marked as a Boar?
Yeah, we sacrifice the "Boar" Bishop. The "Boar" Vanilla is the golem token that's targeted by the Audacious Swap copy that we use to cast Soulblast. As such it is shuffled away before anything happens, and the buff it provides to the Bishop is removed before it is sacrificed.
I don't quite recall why I decided to require that immediately shuffled vanilla in the program description, but now it is there. Maybe it will be useful if I at some point program in some alternate way to start the computation that we want to compare.
The type boar for that vanilla is certainly an irrelevant choice that doesn't matter and could lead to confusion. Sorry
The important part about that bishop is that it has 1 power when it is sacrificed and that it replaces itself with a vanilla Kavu, to give that last little push to the input.
Yeah, we sacrifice the "Boar" Bishop. The "Boar" Vanilla is the golem token that's targeted by the Audacious Swap copy that we use to cast Soulblast. As such it is shuffled away before anything happens, and the buff it provides to the Bishop is removed before it is sacrificed.
I don't quite recall why I decided to require that immediately shuffled vanilla in the program description, but now it is there. Maybe it will be useful if I at some point program in some alternate way to start the computation that we want to compare.
The type boar for that vanilla is certainly an irrelevant choice that doesn't matter and could lead to confusion. Sorry
The important part about that bishop is that it has 1 power when it is sacrificed and that it replaces itself with a vanilla Kavu, to give that last little push to the input.
I've been working further on the writeup, and I wonder if there's any further room to optimize. In particular, is there a need for one of the Bishops to have a Drake type? It seems like it's to guarantee that it survives the computation, but as far as I can tell, when we end the computation by killing the Kavus, it has to be shortly after we flooded the Druid clock, so they should be safe just from being Kavu Horror-Druids.
On that note, do we even need the Drakes-to-Golems Bishop at all? We should end up with at least a quarter as many Golems as Drakes, and taking those Golems along with the relevant Bishops would allow us to produce a similar number of Swappable Golems even without taking the Drakes. We need to produce Drakes to keep the remaining Swap targets alive, but perhaps replacing that Bishop with more vanilla Kavus would be more helpful?
I also want to make sure my math is correct so far. I got 2^^^^25 rather than 2^^^^24, but I'm not totally sure about my logic there. Also might have forgotten about the extra vanilla Kavu from sacrificing the Boar Bishop?
When it's time to discuss the full computation, I was thinking it could be cool to be able to explain how we can use Bishops to construct arbitrary stages, as a demonstration of how this can be so much more powerful than stage combos. Do we know what that might look like?
looks pretty good, I haven't double checked the math, but one thing that might make things clearer is choosing better types? I'd like if the 'linked' types started with the same letter to make it easier to keep track of.
And for demonstrating the power, this first computation is just to give us enough output to convert into one of the UTMs in that repo, which can then simulate any TM computation we can fit in our remaining budget, and even medium-small TMs have un-computable outputs. Which then goes into the definition of busy beaver and how unimaginably fast it must grow. Even something as small as BB(1919) is provably unknowable. (https://github.com/sorear/metamath-turing-machines/blob/master/sample_out/zf.tm) which halts if and only if it finds a contradiction in ZFC, which we can not prove never halts.
looks pretty good, I haven't double checked the math, but one thing that might make things clearer is choosing better types? I'd like if the 'linked' types started with the same letter to make it easier to keep track of.
And for demonstrating the power, this first computation is just to give us enough output to convert into one of the UTMs in that repo, which can then simulate any TM computation we can fit in our remaining budget, and even medium-small TMs have un-computable outputs. Which then goes into the definition of busy beaver and how unimaginably fast it must grow. Even something as small as BB(1919) is provably unknowable. (https://github.com/sorear/metamath-turing-machines/blob/master/sample_out/zf.tm) which halts if and only if it finds a contradiction in ZFC, which we can not prove never halts.
Linked as in like, Cat and Zombie? We do have some limitations like needing one Crusade to stay on Goblin>Zombie, and I like how Iijil stuck to particular themes for different kinds of types in the program, but there's plenty of room within those bounds.
For the main computation, I want to try to provide an example that people can look at and understand why it's stronger than anything we'd get with stage decks, even without previous familiarity with TMs or the relevant math, just from watching the cards in action. What would we need to do to translate a sufficiently powerful TM into the combo here?
I've been working further on the writeup, and I wonder if there's any further room to optimize. In particular, is there a need for one of the Bishops to have a Drake type? It seems like it's to guarantee that it survives the computation, but as far as I can tell, when we end the computation by killing the Kavus, it has to be shortly after we flooded the Druid clock, so they should be safe just from being Kavu Horror-Druids.
On that note, do we even need the Drakes-to-Golems Bishop at all? We should end up with at least a quarter as many Golems as Drakes, and taking those Golems along with the relevant Bishops would allow us to produce a similar number of Swappable Golems even without taking the Drakes. We need to produce Drakes to keep the remaining Swap targets alive, but perhaps replacing that Bishop with more vanilla Kavus would be more helpful?
I also want to make sure my math is correct so far. I got 2^^^^25 rather than 2^^^^24, but I'm not totally sure about my logic there. Also might have forgotten about the extra vanilla Kavu from sacrificing the Boar Bishop?
When it's time to discuss the full computation, I was thinking it could be cool to be able to explain how we can use Bishops to construct arbitrary stages, as a demonstration of how this can be so much more powerful than stage combos. Do we know what that might look like?
I don't think the Kavu bishops will survive at the end. They have #steps damage on them, but there should be slightly less than #steps druids around, since new ones are not created on some of the flooding steps. It might be enough, but it's close enough that I made 1 bishop a drake to be sure.
2^^^^24 vs 2^^^^25, it is very possible that you are correct and I underestimated the damage. I just tried to be extremely conservative with my rounding and estimates everywhere
I am not aware of any good way to directly implement stages with a computation. I think it would require saving the current value of an arbitrary amount of layer resources in a single "clock", so you need some sort of encoding and decoding to make that possible. At that point I found it easier to use that encoding + decoding technology on the tape for a turing machine and implement those instead.
Going that route with known turing machines we need over 15000 bishops to beat grahams number. I don't have high hopes for a small example of massive growth thats easy to describe directly.
More importantly, I think there is an infinite in the computation with Dralnu's Crusade. I've posted about it in the other thread.
Unless I am mistaken we need to fall back on a different method for computation. I think in this case we could replace Dralnu's Crusade with Xathrid Necromancer + Sanctifier en-Vec and go to the white vs black model for the primary vs buffer distinction, instead of using a primary type and buffer types. That increases the card count, but at least we still have computations.
Of course we'd need to redo the setup computation with new costs. So we should be sure that I'm not hallucinating infinites and take some time to look for better alternatives.
I don't know the dependency rules well enough to assess the infinite, but that doesn't sound great. If the infinite is real, at least this deck has an easier time hacking Xathrid Necromancer than Dralnu's Crusade. So I think we'd be able to get at least as much output, if not more, albeit while requiring a 15th card.
Edit: Wait, Sanctifier en-Vec exiling our red spells would be a problem.
Right, Sanctifier en-Veg exiling Scrambleverse and Soulblast wouldn't let us profit from the computations, let alone repeat them. But you mentioned the color changing spells in the other thread and I think those would work.
We need to be a bit careful since we can then start an infinite computation without casting the color changer. So we could keep that in hand to potentially disrupt the computation at an arbitrary point. But I think to get the computation sensitive to color we would need to exile Scrambleverse and Soulblast, so we would not be able to turn those creatures on the opponents side into damage. And to be extra safe we can use the sorcery Trait Doctoring.
I don't think we will actually be able to increase the output of the start. Without Dralnu's Crusade we can't build these half-flooding clocks, that refill themself after emptying. At first glance that makes a layer system a lot more expensive. We can still turn waterfall programs into bishops, but doing it that way we'd be lucky to even fit exponentiation it.
I tried to work out the best start without Dralnus before and got to ~1.6 million. That would still work. So until we can use Sanctifier in a helpful way that can be our lower bound.
I think we still need around 14000 bishops to build the UTM and we are comfortably above that, even without layers in the start up. So we can still do a bit of repeated busy beavering.
Right, Sanctifier en-Veg exiling Scrambleverse and Soulblast wouldn't let us profit from the computations, let alone repeat them. But you mentioned the color changing spells in the other thread and I think those would work.
We need to be a bit careful since we can then start an infinite computation without casting the color changer. So we could keep that in hand to potentially disrupt the computation at an arbitrary point. But I think to get the computation sensitive to color we would need to exile Scrambleverse and Soulblast, so we would not be able to turn those creatures on the opponents side into damage. And to be extra safe we can use the sorcery Trait Doctoring.
I don't think we will actually be able to increase the output of the start. Without Dralnu's Crusade we can't build these half-flooding clocks, that refill themself after emptying. At first glance that makes a layer system a lot more expensive. We can still turn waterfall programs into bishops, but doing it that way we'd be lucky to even fit exponentiation it.
I tried to work out the best start without Dralnus before and got to ~1.6 million. That would still work. So until we can use Sanctifier in a helpful way that can be our lower bound.
I think we still need around 14000 bishops to build the UTM and we are comfortably above that, even without layers in the start up. So we can still do a bit of repeated busy beavering.
That's good, at least. I can try running with that for now, and potentially update if we come up with anything better.
That should work, although the haste from Ignition probably goes infinite by starting an illegal computation from combat. Take Up the Shield seems fine.
Though I can't make any promises about the start being particularly great. The shared creature types between Rotlung Reanimator and the tokens it looks for and creates are really annoying to work with. Particularly when we can't just throw bigger numbers at it.
Right, yeah, Soulblast means we can still profit from a combat computation. I was wary of the possibility of instants allowing us to interrupt a computation if we kept them in hand, but holding onto the indestructible/lifelink source would mean killing our Reanimators and also the opponent, so that shouldn't be a problem.
Not an ideal situation, but hopefully enough to at least beat 1.6 million. (Although maybe Sanctifier would allow something stronger? I'm not entirely sure what that computation might look like.)
I edited this in the other thread. Making sure it is here as well:
Getting lifelink and indestructible from the same effect is no good, because it is the arcbonded creature that needs lifelink to let the opponent survive, but that creature also needs to die for the computation to stop.
There might be alternatives that provide lifelink and indestructible separately, but in a very rushed search I didn't find anything.
I edited this in the other thread. Making sure it is here as well:
Getting lifelink and indestructible from the same effect is no good, because it is the arcbonded creature that needs lifelink to let the opponent survive, but that creature also needs to die for the computation to stop.
There might be alternatives that provide lifelink and indestructible separately, but in a very rushed search I didn't find anything.
Good catch. Lifelink + indestructible seems like a no-go (the closest options I could find were Gideon Blackblade which we wouldn't be able to activate while the other things are on the stack, and Ready // Willing which would screw up the computation by also making the Arcbond creature have deathtouch) but I think Alseid of Life's Bounty could work by granting protection instead. Problem is, making enough Alseids would get expensive.
I think Alseid of Life's Bounty could work? protection source + has lifelink. Though with scrambleverse the opponent can get mana too and sac it as well so it doesn't work...
I think Alseid of Life's Bounty could work? protection source + has lifelink. Though with scrambleverse the opponent can get mana too and sac it as well so it doesn't work...
I was wondering about Well-Laid Plans but I think non-universal protection effects are a problem in general since they'd allow the opponent to mess with them if multiple creatures have Arcbond on them.
Could Sephara, Sky's Blade work, alongside running both Bishop of Wings and Xathrid Necromancer? That would make it so the Bishops create tokens that never die, but do serve to delay the deaths of tokens created by the Necromancers. Would that cover everything we need from Dralnu's?
Private Mod Note
():
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
As for how efficient it is with necromancers, the main problem is how they mess up the clean waterclock implementation with their human type. Other than that, things are pretty much the same.
A super unoptimized line just doing the obvious greedy thing, (that I realized can be way better) gives the opponent more than 10,000 fully hacked necromancers/vanillas/crusades, and another 10,000 unhacked.
which seems more than sufficient to implement the small UTM demonstrated and start getting big busy beaver numbers, even from this 'small' initial compute.
Edit: Yeah, we don't have quite enough life to make it work with Mycosynth Lattice. We need 8 colored mana, so Bucknard's Everfull Purse is not enough; it would be with the aid of Mondrak, but we have to cast Bucknard's first.
Edit: Bleah, I forgot that Twinflame needed extra mana too... okay I'm not sure what's best in the 6 card category then.
Edit: Oh, we only need one more target for Twinflame, which we can get with Mycosynth Lattice.
Edit: Oh I see... Croaking Counterpart doesn't give haste, so the damage is for the *next* turn.
I've started putting together a new writeup focusing specifically on 4, 5, 6, 8, and 14 cards, since those seem like the biggest milestones here, but I haven't been sure how to fully explain what we're doing with the mini-computation: https://docs.google.com/document/d/1m_KIi_DXqzRn-nR_MHMXPVl9wvn3Z2ZLq-I_7efE6yg
I would want to mention that the setup with arcbond, coat of arms, bishops and crusades is sufficient to implement the Waterfall Model, which has been proven to be Turing Complete. (we actually implement a more complex variant thanks to flooding and partially flooding clocks, though those are not needed for TC-ness, they do make small computation run longer)
The full flooding variant is still likely not TC, though there's been no proof one way or the other. If it was we could cut Dralnu's Crusade and get down to a lucky 13 cards.
Imo the 8 card hand should use Mishra's Workshop instead of Show and Tell. That is only so we don't give the opponent the opportunity to put something nasty into play. Not at all because I'm tired of using Show and Tell for the start
A high level overview of the 14 cards start-up computation could follow these lines:
We start by sacrificing a single, unbuffed Bishop of Wings to Soulblast and aim it at the Arcbond creature, so each arcbond tick will deal 1 damage.
After 3 ticks the starting Crab in the Input Heartbeat dies. Going forward a Crab will die almost every tick, since the crab replaces itself. A Crab dying also creates a Kavu, which buffs the arcbonded creature. The arcbond creature is now stable at 25 life and won't lose anymore unless this heartbeat is skipped.
After the next tick clock 1, 2 and 3 empty, creating a Cat, Ape and Frog. Thus they start the heartbeats for Clock 2, 3 and 4, which keep those clocks special creatures at a stable life, unless the corresponding heartbeat is skipped.
The program will end on its own once 25 input heartbeats are skipped, which causes the arcbonded creature to die.
To skip a beat of the input heartbeat we need to empty clock 4, i.e. reduce the life of the Horror to 0. This has two effects:
1. it skips a beat of the input heartbeat by creating a Crab*, thus reducing the arcbonded creatures life by 1
2. it recreates the Horror and Druids that make up clock 4, but now without damage. Since on most ticks in the past the heartbeat for clock 4 has created a druid to keep the life stable we now get a number of druids close to the number of arcbond ticks that have happened since the start. All the druids buff the toughness of the Horror and each other, so this time around the clock starts with "ticks since start" life.
So we need to empty clock 4 25 times, each time recreating it with bigger life.
To empty clock 4 when it has N life we need to skip the clock 4 heart beat N times. This is done by emptying clock 3.
Again, emptying clock 3 has two effects:
1. skip heartbeat of clock 4
2. recreate itself with "ticks since start" life
You see where this is going:
To empty clock 3 when it has N life we need to skip the clock 3 heart beat N times. This is done by emptying clock 2.
Emptying clock 2 has two effects:
1. skip heartbeat of clock 3
2. recreate itself with "ticks since start" life
To empty clock 2 when it has N life we need to skip the clock 2 heart beat N times. This is done by emptying clock 1.
Emptying clock 1 has two effects:
1. skip heartbeat of clock 2
2. recreate itself with "ticks since start" life. While it doesn't have a heartbeat that takes care of increasing this starting life it creates 2 Golems for every 1 that dies, which has the same effect.
Finally clock 1 doesn't have a heartbeat, so to empty it when it has N life we just need to wait N ticks. Doing that effectively doubles "ticks since start"
Put together we have a layer system with "ticks since start" as the output.
The input heartbeat clock also happens to produce 2 drakes per tick, which turns this output into output creatures as we go. Those also keep the vanillas that are still targeted by Audacious Swap alive.
There are a few things you could go into greater detail on. I'm not sure what level of brevity is appropriate.
- Skipping a heartbeat causes the heartbeat to be slower but more powerful. So instead of talking about clock N life it would be more accurate to talk about (clock N life - heartbeat N life)
- All the creatures of each clock die at the same time because the most damage creature dies and stops buffing the less damaged ones. The cascading toughness loss leaves no survivors. Technically this needs to be formally proven somewhere.
- The "ticks since start" life is not quite accurate. It's more like "ticks since start - number of times the heartbeat for this clock was skipped"
- There's probably more stuff about how clocks work that I can't think of right now because I just take it for granted, but which could require additional explanation or a proof that it does actually work like that.
Let’s start with the case of N undamaged tokens. Adding a token gives us N+1 undamaged tokens, which is the same case just choosing a larger N to start with. On the other hand, doing a tick of damage reduces us to N-1 toughness. Clearly, N ticks will kill all of them, zeroing the clock.
So let’s do less than N damage, call it M, and then create K tokens and see what the effect is. Well the old tokens have N+K-M toughness, and the new ones have N+K toughness.
Suppose we do the remaining N+K-M damage ticks to kill the original tokens, do the new tokens die as well? Well they would have N+K-(N+K-M) = M toughness left. However, all of the N original tokens are dying now, so they actually have M-N toughness after losing the coat of arms buffs. Since M<N, M-N<0 and the new tokens die as well.
This logic applies to any sequence of damage ticks and token creates.
Alternate proof:
We proceed by induction on N, the number of tokens and damage ticks.
base case: N=1 one tick kills all one of them
Inductive case: If N ticks kill all N of them, would N+1 ticks kill all N+1 of them?
Let’s make an extra one before the Nth tick, so we have N+1 of them after N ticks.
The N+1st tick kills the bottom token, reducing us to N of them. By the inductive hypothesis, this also kills the original N tokens, as the extra tick cancels out the coat of arms buff. Leaving us the new token with 1 damage on it and no friends, killing it as well.
If we make the N+1st token earlier, it just has more damage on it and still dies.
Now, there are some minor complications such as the buff from dralnu’s crusade, but that ends up being less and less of a factor as the numbers get bigger.
I also think we need a slightly better explanation of flooding + half-flooding clocks.
One more complication possibly worth mentioning is the weird stuff we can do with layers, like if we have crusades making all goblins zombies, all zombies crabs, and all crabs goblins, if we make a goblin a zombie and a crab, do we have three goblin crab zombies? No! It depends on timestamps. It can get even weirder than that, but no matter what it’s all handled deterministically by the rules without player intervention, so there’s nothing that can break computation.
Suppose at a certain tick N tokens of a group die, and M tokens live. The oldest of the N tokens must have taken N+M damage, but must have taken less than N damage when the oldest of the M tokens was created. So the oldest of the M tokens must have taken more than M damage, and therefore will die, a contradiction.
I want to make sure I can explain this in exact terms rather than abstract ones. Is the Bishop we sacrifice the "Boar" one? If so, why is a vanilla also marked as a Boar?
I don't quite recall why I decided to require that immediately shuffled vanilla in the program description, but now it is there. Maybe it will be useful if I at some point program in some alternate way to start the computation that we want to compare.
The type boar for that vanilla is certainly an irrelevant choice that doesn't matter and could lead to confusion. Sorry
The important part about that bishop is that it has 1 power when it is sacrificed and that it replaces itself with a vanilla Kavu, to give that last little push to the input.
I've been working further on the writeup, and I wonder if there's any further room to optimize. In particular, is there a need for one of the Bishops to have a Drake type? It seems like it's to guarantee that it survives the computation, but as far as I can tell, when we end the computation by killing the Kavus, it has to be shortly after we flooded the Druid clock, so they should be safe just from being Kavu Horror-Druids.
On that note, do we even need the Drakes-to-Golems Bishop at all? We should end up with at least a quarter as many Golems as Drakes, and taking those Golems along with the relevant Bishops would allow us to produce a similar number of Swappable Golems even without taking the Drakes. We need to produce Drakes to keep the remaining Swap targets alive, but perhaps replacing that Bishop with more vanilla Kavus would be more helpful?
I also want to make sure my math is correct so far. I got 2^^^^25 rather than 2^^^^24, but I'm not totally sure about my logic there. Also might have forgotten about the extra vanilla Kavu from sacrificing the Boar Bishop?
When it's time to discuss the full computation, I was thinking it could be cool to be able to explain how we can use Bishops to construct arbitrary stages, as a demonstration of how this can be so much more powerful than stage combos. Do we know what that might look like?
And for demonstrating the power, this first computation is just to give us enough output to convert into one of the UTMs in that repo, which can then simulate any TM computation we can fit in our remaining budget, and even medium-small TMs have un-computable outputs. Which then goes into the definition of busy beaver and how unimaginably fast it must grow. Even something as small as BB(1919) is provably unknowable. (https://github.com/sorear/metamath-turing-machines/blob/master/sample_out/zf.tm) which halts if and only if it finds a contradiction in ZFC, which we can not prove never halts.
For the main computation, I want to try to provide an example that people can look at and understand why it's stronger than anything we'd get with stage decks, even without previous familiarity with TMs or the relevant math, just from watching the cards in action. What would we need to do to translate a sufficiently powerful TM into the combo here?
2^^^^24 vs 2^^^^25, it is very possible that you are correct and I underestimated the damage. I just tried to be extremely conservative with my rounding and estimates everywhere
I am not aware of any good way to directly implement stages with a computation. I think it would require saving the current value of an arbitrary amount of layer resources in a single "clock", so you need some sort of encoding and decoding to make that possible. At that point I found it easier to use that encoding + decoding technology on the tape for a turing machine and implement those instead.
Going that route with known turing machines we need over 15000 bishops to beat grahams number. I don't have high hopes for a small example of massive growth thats easy to describe directly.
More importantly, I think there is an infinite in the computation with Dralnu's Crusade. I've posted about it in the other thread.
Unless I am mistaken we need to fall back on a different method for computation. I think in this case we could replace Dralnu's Crusade with Xathrid Necromancer + Sanctifier en-Vec and go to the white vs black model for the primary vs buffer distinction, instead of using a primary type and buffer types. That increases the card count, but at least we still have computations.
Of course we'd need to redo the setup computation with new costs. So we should be sure that I'm not hallucinating infinites and take some time to look for better alternatives.
Edit: Wait, Sanctifier en-Vec exiling our red spells would be a problem.
We need to be a bit careful since we can then start an infinite computation without casting the color changer. So we could keep that in hand to potentially disrupt the computation at an arbitrary point. But I think to get the computation sensitive to color we would need to exile Scrambleverse and Soulblast, so we would not be able to turn those creatures on the opponents side into damage. And to be extra safe we can use the sorcery Trait Doctoring.
I don't think we will actually be able to increase the output of the start. Without Dralnu's Crusade we can't build these half-flooding clocks, that refill themself after emptying. At first glance that makes a layer system a lot more expensive. We can still turn waterfall programs into bishops, but doing it that way we'd be lucky to even fit exponentiation it.
I tried to work out the best start without Dralnus before and got to ~1.6 million. That would still work. So until we can use Sanctifier in a helpful way that can be our lower bound.
I think we still need around 14000 bishops to build the UTM and we are comfortably above that, even without layers in the start up. So we can still do a bit of repeated busy beavering.
Right, yeah, Soulblast means we can still profit from a combat computation. I was wary of the possibility of instants allowing us to interrupt a computation if we kept them in hand, but holding onto the indestructible/lifelink source would mean killing our Reanimators and also the opponent, so that shouldn't be a problem.
Not an ideal situation, but hopefully enough to at least beat 1.6 million. (Although maybe Sanctifier would allow something stronger? I'm not entirely sure what that computation might look like.)
Getting lifelink and indestructible from the same effect is no good, because it is the arcbonded creature that needs lifelink to let the opponent survive, but that creature also needs to die for the computation to stop.
There might be alternatives that provide lifelink and indestructible separately, but in a very rushed search I didn't find anything.
Katilda, Dawnhart Martyr is also close but it seems difficult to make enough of the auras.
Might be best to stick with the Sanctifier plan, in this case.
Could Sephara, Sky's Blade work, alongside running both Bishop of Wings and Xathrid Necromancer? That would make it so the Bishops create tokens that never die, but do serve to delay the deaths of tokens created by the Necromancers. Would that cover everything we need from Dralnu's?