4,386 karma · joined October 9, 2010
In any case, the history clearing seems to be a bug, they updated the software to keep the position history even when changing the classification.
Agda is pretty finicky, proving stuff in it is harder and the entire project feels more researchy (as a playground to try out ideas for programming languages).
Lean seems promising, but it's still kind of new, so compared to Coq will not find as much documentation, and there are fewer people on Stack Overflow to answer questions.
The increased income of Google (which is nearly all ads) matches the decreased income of the newspapers, so it doesn't seem like the ad spending actually decreased, it just moved away from the papers.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.544...
The paper you cite seems consistent with that also: although the number of discrete risk factors was unchanged, the number of SIDS deaths per year fell to less than half after the BTS campaign, so probably not all the risk factors are equally risky...
Obviously this is only a back-of-the-envelope thing, but it seems that even if we switched to renewable fuels using the technology that are available today, ticket prices should about double. Historically, that corresponds to going back to circa-1980 prices[6], which I guess is bad, but not exactly apocalyptic.
[1] https://www.eia.gov/todayinenergy/detail.php?id=31512 [2] https://www.eia.gov/todayinenergy/detail.php?id=32152 [3] https://markets.businessinsider.com/commodities/ethanol-pric... [4] https://www.indexmundi.com/commodities/?commodity=jet-fuel [5] https://en.wikipedia.org/wiki/Energy_density [6] https://www.theatlantic.com/business/archive/2013/02/how-air...
But I suppose part of the difference is not due to the subsidy but because the China post has lower labor costs for the aggregation work?
In 1975 the Iraqi ministry of agriculture negotiated with a U.S. company, Pfaudler, for a contract to build a pesticide production plant. The deal eventually fell through because Pfaudler did not understand why the Iraqis insisted on manufacturing Amiton instead of some safer alternative.
I think the situation is exactly analogous to the Library of Babel in Borges' story. If someone sends you the entire library in the mail, they have given you zero bits of information. If they only send you a particular room of it you get more information, and narrowing it down to sending a particular book gives you more bits still.
It's the same with the multiverse. If we start out with the photon about to go through the half-silvered mirror, the state looks like |photon>⊗|me>, and then over time it evolves into
(1/√2)|photon went left>⊗|me observing left> + (1/√2)|photon went right>⊗|me observing right>
and the latter state contains no more information than the former one (you can run the time evolution backwards to recover the original state). However, if you restrict your attention and only consider one of the branches, e.g. |photon went right>⊗|me observing right>, then you have added (one more bit) of information. And most macroscopic processes can be explained "one branch at a time", since in practice decoherence means that there are no noticable interactions between branches. I think in the MWI this is the source of most complexity in the universe: not detailed information encoded in the initial state, and not objective collapse, but the bits of information you implicitly create if you only consider one branch of an experimental outcome.
I imagine the same thing happens in general: we start with some uniform soup (with ~zero information), in a bunch different MWI branches it self-gravitates slightly differently so we get a different set of galaxies and stars in each branch, then for each branch that has a planet, different quantum randomness may cause different intelligent life to develop, and eventually they may write different books. Of course, it's also possible that some small initial state gets magnified, as a separate mechanism, but that's the same in objective-collapse and MWI. The random bits created by objective collapse are the same same the ones you get by looking at particular branches in MWI.
Maybe a different example makes this clearer. Suppose you use a quantum random number generator to choose letters from A to Z, and write out a full book this way. If you consider the entire (multiple) world, it's basically Borges' Library of Babel: it has non-zero amplitudes for every possible book. So one possible "thing that can happen" is that Shakespeare's Hamlet gets written.
But that doesn't mean that the initial state of the universe somehow encodes the text of Hamlet. The initial state of the universe doesn't have any information at all, in quantum fluctuations or otherwise. You only see Hamlet emerge if you restrict your attention to some particular branches of the world. It was "bound to happen" that Hamlet would get written, but only because every book would get written.
I.e., suppose I create a random bit generator by shining photons on a half-silvered mirror and then measuring which way they go. I might then decide what to write depending what the bit is---if it's 0 I will write a HN comment, if it's 1 I will reply to an email.
In this case, the things that happen are determined deterministically, but it's not the case that there is some quantum fluctuation in the initial state of the universe which determines what I write. Rather, when I do the measurement of the bit, I create two branches, one with a HN comment and one with an email. Observers entangled with the first branch can only see the HN comment, but this complexity was created at the time of the measurement, not at the time of the big bang...
The thing I find most interesting is that even the Fukushima fishermen agree that dumping the water will be harmless, but they are still very opposed to it because they think consumers will be irrationally scared and not buy fish caught in the Fukushima region.
> Over the course of our long conversation, Sawada frankly acknowledged that the scientific consensus indicates very low risk if the water is released. “It’s not a question of scientific understanding,” he said. “We understand that tritiated water is released from other nuclear power plants in Japan and around the world. But we think it will be impossible for the public in general to understand why tritium is considered low risk, and expect there will be a large new backlash against Fukushima marine products no matter how scientifically it is explained.” I pointed out that the [fishery] coops agreed to the release of the subdrain and bypass water from Daiichi, and asked what was different about this. He pointed out that in those cases, the water is pumped out before it is contaminated, and the public seems to understand that the contamination levels are already very low.
[1] https://blog.safecast.org/2018/06/part-1-radioactive-water-a... [2] https://blog.safecast.org/2018/06/part-2-radioactive-water-a... [3] https://news.ycombinator.com/item?id=20304208
https://techniktagebuch.tumblr.com/post/185742896236/septemb...
if b then e1 else e2
as b e1 e2
you can translate it to (b (λx. e1) (λx. e2)) tt
where tt is any value (it doesn't matter what).Similarly, you can make a CBV-version of the Y combinator by eta-expanding some subexpressions to prevent it from evaluating it too eagerly [0].
The exact details of the encoding don't matter too much, because when you actually write programs you want to use some syntactic sugar like "if then else" or "let rec", so you just care that it can be translated into lambda calculus in some way which preserves the operational semantics.
[0] https://en.wikipedia.org/wiki/Fixed-point_combinator#Strict_...
A β-reduction is basically the same as a function call, we know how to implement those, and they take constant time. Your example could be directly interpreted as a program in e.g. Lisp or ML, and there the function call is definitely not implemented by stepping through the entire program symbol by symbol.
I think the issue in the stackoverflow post above is that the lambda calculus is nondeterministic, so if you try to define the cost as the smallest number of β-reductions to reduce a term to a value, then you're in trouble because it's in general very hard to figure out what the optimal way of reducing a program would be. But that also shows that it's a completely unrealistic model. Surely what we should do is pick an evaluation order, e.g. call-by-value, and then count the number of reductions there. This corresponds to what actually happens when you run your program on a real computer.
In fact, CBV evaluation is really well-behaved, and you can given an extremely intuitive cost semantics to such a lambda calculus: see section 7.4 in [1], and also see [2] to show that this semantics is sound in the sense that you can compile it down to an abstract machine respecting the cost. (Incidentally, this is something that Bob Harper has been talking about for a long time, see e.g. his blog post [3] for some polemics.)
If anything, I think what this argument shows is that Turing machines are bad for complexity-theoretic purposes. We do not want to "analyze our algorithms in terms of atomic operations that can be implemented in O(1) on a Turing machine", we want to count atomic operations that can be executed in O(1) time on the actual computers we run stuff on. So Turing machines are ok if you just want to distinguish polynomial from non-polynomial time, but for finer-grained distinctions you need a more accurate model, like a RAM, or... like the lambda calculus!
[1] https://www.cs.cmu.edu/~rwh/pfpl/2nded.pdf [2] http://www.cs.cmu.edu/~blelloch/papers/BG95.pdf [3] https://existentialtype.wordpress.com/2011/03/16/languages-a...
> Just five years ago, prices soared after a drought shrank the U.S. herd to a six-decade low.
so the $81 high mark is probably more to do with the weather than the consumer trend.
Googling a bit, it seems that McCarthy mentions this in "History of Lisp" [0], as a change from LISP 1 to LISP 1.5:
> In modern terminology, lexical scoping was wanted, and dynamic scoping was obtained. I must confess that I regarded this difficulty as just a bug and expressed confidence that Steve Russell would soon fix it. He did fix it but by inventing the so-called FUNARG device that took the lexical environment along with the functional argument. Similar difficulties later showed up in Algol 60, and Russell's turned out to be one of the more comprehensive solutions to the problem. While it worked well in the interpreter, comprehensiveness and speed seem to be opposed in compiled code, and this led to a succession of compromises. Unfortunately, time did not permit writing an appendix giving the history of the problem, and the interested reader is referred to (Moses 1970) as a place to start. (David Park tells me that Patrick Fischer also had a hand in developing the FUNARG device).
So I guess closures had been invented at least by 1962 (when the LISP 1.5 manual was published), but were not widely used because of performance considerations?
[0] http://www-formal.stanford.edu/jmc/history/lisp/node4.html
But then in 2013 some researchers figured out that actually the camera unit is an entire system-on-a-chip, with a configuration register accessible on an i2c bus, so they could write some malware which first re-configures the camera to ignore the standby signal, and then turn it on...
The paper notes that many camera units have a separate power connection for the CMOS sensor itself, which would be more secure. And I hope later-model macbooks have fixed it. But I guess this shows that it possible to get even seemingly bullet-proof solutions wrong.
https://jscholarship.library.jhu.edu/handle/1774.2/36569
(As a more practical problem, I have also seen suggestions that it's possible to turn on the camera, take a photo, and turn it back off again too quick for the LED to be noticable, and if you do that several times per second you could capture low-frame-rate video without the green light, so even a hardware solution might not be perfectly secure.)
Looking at the "Universal LISP function" on page 13 in [0], the case for apply/LAMBDA just extends the current environment a with the arguments of the lambda, but it doesn't unpack a closure to get the environment the lambda function was defined in, so it implements the dynamic version. (Unlike, e.g., the interpreter in SICP [1].)
[0] http://www.softwarepreservation.org/projects/LISP/book/LISP%... [1] https://mitpress.mit.edu/sites/default/files/sicp/full-text/...
Wikipedia says
> The concept of closures was developed in the 1960s for the mechanical evaluation of expressions in the λ-calculus and was first fully implemented in 1970 as a language feature in the PAL programming language to support lexically scoped first-class functions.
> PAL, the Pedagogic Algorithmic Language, is a programming language developed at the Massachusetts Institute of Technology in around 1967 to help teach programming language semantics and design. It is a "direct descendant" of ISWIM and owes much of its philosophy to Christopher Strachey.