00:59:18 -!- Phantom___Hoover has quit (Quit: Leaving).
01:32:31 <tswett[m]> Arguably, *every* program "just does whatever it wants".
01:32:48 <tswett[m]> It just so happens that "whatever it wants" is determined by a relatively simple set of rules.
01:33:22 <shachaf> i keep thinking the z in zzo38 stands for zermelo
01:34:06 <zzo38> There are two "z"s and the letters and numbers do not stand for anything.
01:35:18 <tswett[m]> So I just learned about "Unary Except Every Zero Is Replaced with the Title of This Programming Language or, Alternately, Is Replaced with the Smallest Counter-Example to the Goldbach Conjecture. Compilers and Interpreters Only Have to Implement the Former Option".
01:35:30 <tswett[m]> (I hope that message didn't send with wonky formatting, because I saw wonky formatting on my end.)
01:35:46 <zzo38> tswett[m]: I think the bold is not properly terminated
01:36:21 <tswett[m]> So I just learned about "Unary Except Every Zero Is Replaced with the Title of This Programming Language or, Alternately, Is Replaced with the Smallest Counter-Example to the Goldbach Conjecture. Compilers and Interpreters Only Have to Implement the Former Option".
01:37:19 <tswett[m]> It's actually pretty straightforward to implement the Goldbach option, right?
01:37:41 <tswett[m]> There's a simple algorithm for determining whether or not a given number is the smallest counterexample to the Goldbach conjecture.
01:37:49 <ais523> yes, just time-consumiing
01:37:58 <zzo38> (If the Goldbach Conjecture is valid, then presumably the one that implements only the former option is complete anyways.)
01:38:02 <tswett[m]> Namely: check whether or not it's a counterexample, and also check whether or not any smaller number is a counterexample.
01:38:18 <zzo38> And, yes, I agree I think you are correct about determining if it is the smallest counterexample
01:38:19 <ais523> there's a bit of additional complexity because even if you can tell that the program is made entirely out of repeats of a number, it might be ambiguous what that number is
01:38:38 <ais523> e.g. is 333333 six repeats of 3, three repeats of 33, two repeats of 333, or one repeat of 333333?
01:38:50 <shachaf> What's the encoding of the counterexample?
01:39:04 <shachaf> Looking at the reference implementation, there's nothing delineating the title from the rest of the text.
01:39:08 <zzo38> Yes, unless it needs to be delimited somehow
01:39:09 <ais523> the title doesn't say, but big-endian decimal encoded as ASCII is a reasonable guess
01:39:26 <shachaf> Maybe it's in unary, encoded with zeros.
01:39:36 <shachaf> Or even in unary, encoded with the title of the programming language.
01:39:43 <zzo38> ais523: Yes, that is what I thought too
01:40:05 <ais523> shachaf: that would be ambiguous
01:40:16 <shachaf> Non-title text is a comment in the reference implementation.
01:40:34 <shachaf> So 333333 could also be 33333 followed by a 3, if 33333 was the smallest counterexample.
01:41:08 <xylochoron[m]> hi schachaf. wondering, earlier were you saying only one symbol is needed in the slashes esolang, or, one symbol is all that is needed generally for Turing completeness in some given system,
01:41:31 <ais523> perhaps we have to find the largest number in the program and search for Goldbach counterexamples up to that number?
01:41:31 <shachaf> please address me by my full and proper name, schachachf
01:41:35 <tswett[m]> shachaf: Ooh, good point. That makes it trickier.
01:41:58 <tswett[m]> Well, in order to do anything Turing-complete-y in ///, you need / and \, and you don't need anything else.
01:42:26 <shachaf> I don't know how slashes works, so I probably wasn't commenting on it.
01:42:51 <HackEso> [U+002F SOLIDUS] [U+2044 FRACTION SLASH] [U+2215 DIVISION SLASH]
01:43:17 <HackEso> [U+29F8 BIG SOLIDUS] [U+1F67C VERY HEAVY SOLIDUS]
01:43:22 <zzo38> Another variant for Unary would be that the data doesn't matter only the file size is important. And then, you can use sparse files and don't waste disk space.
01:43:31 <xylochoron[m]> yeah there's unary programming languages but the binary ones while still being turing tarpits sometimes, seem to work just a liiitle more efficiently still
01:43:33 <shachaf> it is with a very heavy solidus that i write to inform you that unicode has too many code points
01:43:38 <zzo38> (If you are using a file system that supports sparse files.)
01:43:56 <ais523> zzo38: https://esolangs.org/wiki/Lenguage
01:44:09 <shachaf> > ransomNote "very heavy solidus"
01:44:15 <ais523> although oddly, the Lenguage interpreter does in fact attempt to read the whole file into memory even though it doesn't care about the length
01:44:26 <ais523> *even though it only cares about the length
01:44:36 <zzo38> shachaf: Yes, and the way they are put together is also messy
01:44:36 <shachaf> > ransomNote "if you want to see your code points again..."
01:44:39 <lambdabot> 𝕚𝗳 𝓨𝓞𝒖 Ⓦ𝐚𝕹𝑡 𝑇𝙊 𝐬𝓮🅴 𝙔𝓞𝐔𝗥 𝙘𝙊𝘋𝕰 Ⓟ𝔬𝕚𝑵𝗍𝘴 🄰𝕲𝗮ℑ🄽...
01:45:18 <lambdabot> "la la la la la la la la la la la la la la la la la la la la la la la la la ...
01:46:05 <shachaf> > ransomNote (take 200 (cycle "again and "))
01:46:08 <lambdabot> 🅰⒢Ⓐ𝖎𝑵 𝖺𝐧⒟ 🅰𝓰𝖠i𝘯 🅐𝓝Ⓓ 𝓐g𝙖𝘐n 𝔞𝐧D 𝘢𝒈𝖠𝖎𝑛 𝚊𝓝𝖉 𝓐𝐺𝘼𝚒𝑁 𝐴⒩𝔡 𝘈𝓖𝖆𝔦𝙣 𝑎𝗻𝔡 𝘢𝙂
01:46:09 <tswett[m]> > ransomNote . take 1000 . cycle $ "again and "
01:46:12 <lambdabot> 🅐𝐺𝘈I🄽 𝗮𝓝𝘿 𝕬🄶𝙖I𝒏 a𝚗D 𝒂𝔤𝖠𝕚𝑛 𝚊𝗻𝑫 𝓐𝙂🅰𝗶𝔑 𝙖𝘯d 𝗮𝙂𝐚𝙄𝖓 𝓪🅝𝘥 𝕬𝓖𝔞𝒊𝐧 𝑨𝖭𝕕
01:46:27 <tswett[m]> As y'all can see, I haven't matured any in the past 13 years. :D
01:47:02 <xylochoron[m]> with my 2TB hard drive, i can hold a whopping 3 byte unary program for free, nice
01:47:37 <shachaf> There are probably file systems that support larger files than will fit on the disk with some copy-on-write trickery.
01:47:51 <zzo38> xylochoron[m]: You will still need a directory entry though, isn't it?
01:47:53 <shachaf> They might still be limited to 2^64 or 2^128 bytes.
01:49:38 <zzo38> (Although three bytes long isn't a valid Unary program anyways, I think; it needs to be at least eight, isn't it?)
01:49:53 <tswett[m]> So I'm trying to do "bottomless category theory".
01:50:00 <tswett[m]> I'm doing category theory without admitting any foundational axioms.
01:50:41 <zzo38> Don't you need the definition of a category at least?
01:51:08 <tswett[m]> "Every set has a power set"? Nah. "Given two sets, there exists a set containing both of them"? Nope. "There exists at least one set"? Hell no.
01:51:28 <tswett[m]> Yes, you do. And I did, in fact, write down the definition of a category.
01:51:52 <tswett[m]> But I'm simply treating the definition of a category as a string of symbols in a particular language, rather than assuming that it actually defines anything.
01:51:58 <shachaf> What do sets have to do with categories?
01:52:32 <tswett[m]> My understanding is that some category theorists consider a foundational set theory to be useful.
01:52:53 <shachaf> But most interesting categories aren't small anyway.
01:53:21 <shachaf> If people are being formal don't they usually define categories as a first-order theory?
01:53:32 <xylochoron[m]> isnt all coding and proofs "strings containing symbols of a particular language" in the end or smthng
01:53:42 <lambdabot> SaulGorn says: A formalist is one who cannot understand a theory unless it is meaningless.
01:54:27 <zzo38> Even if it isn't small, it must be small enough to fit in whatever it is fitting in
01:54:34 <tswett[m]> xylochoron: Yup, absolutely. The "conventional" way to do formal mathematics is to take a collection of axioms and discover proofs which follow from those axioms.
01:54:58 <tswett[m]> If you want to be precise, I'm studying... what are they called.
01:55:11 <tswett[m]> Presentations of categories with finite limits.
01:55:33 <zzo38> How can do you do with the definition of a category if it does not define anything?
01:55:40 <xylochoron[m]> oh i just realized that's a quote bot who said that
01:55:55 <xylochoron[m]> probably this Saul Gorn guy has tried to define meaning or something :-P
01:56:13 <tswett[m]> zzo38: Well, I guess I'm planning to figure that out as I go along. :D
01:58:28 <xylochoron[m]> do you other people know enough about category theory to follow what this person's trying to do cuz i don't but it sounds interesting oh well
01:59:22 <shachaf> I think this person[m] is just doing things the regular way or something.
01:59:59 <shachaf> Sounds like some kind of first-order theory.
02:13:06 <tswett[m]> I oughta finish writing up Al dente.
02:24:14 <tswett[m]> Apparently I capitalized it. Al Dente.
02:24:24 <tswett[m]> Also I see that somebody's written some more Al Dente code. That's cool. :D
02:24:24 <tswett[m]> https://esolangs.org/wiki/Al_Dente_examples
02:24:34 <tswett[m]> I'm trying to figure out how their "copier" class works.
02:29:36 <tswett[m]> Let's see. Every Copier has another Copier as a tail, thus producing an infinite chain of Copiers. A Copier has a "copy" event. It also has two Numbers, "in" and "out". The numbers of the tail have to be the tails of the numbers.
02:29:58 <tswett[m]> If "copy" is false, then it must also be false in the entire chain of copiers, but there are no other constraints.
02:31:39 <tswett[m]> But if "copy" is true, then "in" and "out" must be the same number.
02:34:34 -!- TellsTogo has joined.
02:37:55 <tswett[m]> You know how in most programming languages, you write code that causes stuff to happen?
02:38:10 <tswett[m]> I love how in Al Dente, you can't do that; you can only write code that *prevents* stuff from happening.
02:41:16 <tswett[m]> ...I just noticed that an implementation of Al Dente is not required to do anything.
02:43:20 -!- ineiros has joined.
03:04:11 -!- MDude has quit (Ping timeout: 258 seconds).
03:10:14 <zzo38> An optional extension could be a "main" command, that for example you could write "main Add(in1 in2 -> out);"
03:11:03 -!- ais523 has quit (Quit: quit).
03:31:21 -!- TellsTogo has quit (Ping timeout: 256 seconds).
03:39:21 -!- Hooloovo0 has quit (Quit: Temporarily refracted into a free-standing prism.).
03:44:10 -!- Hooloovo0 has joined.
03:47:48 -!- MDude has joined.
04:10:03 -!- arseniiv has joined.
04:24:09 <zzo38> Some keyword abilities in Magic: the Gathering they only use on some types of cards, and sometimes only in some circumstances. But I think there is other uses for them too. Such as, you could add retrace on any castable card, lifelink or infect on any card that can deal damage, graft and modular and persist and undying on any permanent card (even a Aura), dash on noncreatures, etc
04:27:25 <shachaf> Huh, I thought there was an instant or sorcery with lifelink, but I guess not.
04:27:38 <zzo38> I don't know; I haven't checked
04:29:02 -!- arseniiv has quit (Ping timeout: 272 seconds).
04:29:24 <shachaf> zzo38: Why do you say SIMD is not needed on MMIX?
04:29:26 <zzo38> I have a paper I made up some cards that have only keyword abilities, some of which are creatures and some aren't. One noncreature artifact has "graft 1", "undying", and "echo {0}".
04:29:41 <zzo38> shachaf: I do not remember.
04:29:59 <zzo38> (I think I wrote that message, but I am not sure. I also do not remember.)
04:34:05 -!- ProofTechnique has quit (Read error: Connection reset by peer).
04:34:42 -!- lynn has quit (Read error: Connection reset by peer).
04:35:03 -!- xvnvx- has quit (Read error: Connection reset by peer).
04:40:23 -!- FreeFull has quit.
04:46:25 <zzo38> Another extension for Al Dente could be comments and macros (supporting parameterized classes, traits, and others); it can be compiled into the version without comments and macros.
04:52:23 -!- lynn has joined.
04:55:38 -!- ProofTechnique has joined.
05:34:14 -!- xvnvx has joined.
05:44:41 <zzo38> Another thing about Magic: the Gathering I thought about overload ability. I would prefer to use a different way based on the AST rather than the words. For example, [:damage 3; :to [:target :damageable]] would be written in English as "~ deals 3 damage to any target", but "any each" is wrong, but overload should still work. Also considering for example "change the target of target spell".
05:45:29 <zzo38> (I didn't mention ":from :this" but it is implied, presumably.)
06:21:22 -!- S_Gautam has joined.
07:01:42 -!- whtspc has joined.
07:01:59 -!- whtspc has quit (Client Quit).
07:07:02 <Sgeo_> Hmm, "any target" is a pretty new phrasing, I wonder if the rules people actually encountered that issue
07:08:24 <Sgeo_> I guess "~ deals three damage to target player, planeswalker, or creature" works?
07:11:07 <Sgeo_> "any target" includes yourself, and until Modern Horizons they've avoided overloads with downsides
07:21:06 <zzo38> Yes, although I don't really like "any target" (for a few reasons), so I invented "damageable"; "any target" is the same as "target damageable" (although you can also use "damageable" in other contexts too).
07:22:38 <zzo38> (And even without "any target", there is the other issue I mentioned.)
07:27:51 -!- adu has quit (Quit: adu).
07:49:55 -!- Sgeo__ has joined.
07:50:30 -!- hakatashi has quit (Remote host closed the connection).
07:50:49 -!- hakatashi has joined.
07:53:16 -!- Sgeo_ has quit (Ping timeout: 268 seconds).
07:56:13 -!- AnotherTest has joined.
08:18:55 -!- Sgeo_ has joined.
08:22:44 -!- Sgeo__ has quit (Ping timeout: 272 seconds).
08:47:26 -!- Sgeo__ has joined.
08:50:22 -!- Sgeo_ has quit (Ping timeout: 246 seconds).
08:52:42 -!- AnotherTest has quit (Ping timeout: 258 seconds).
09:14:51 <int-e> So I finally have a paper proof, with some help by a computer: https://int-e.eu/~bf3/tmp/sdd.pdf It really doesn't look all that hard now.
09:15:10 <int-e> (this is for the self-dual characterization of a distributive lattice)
09:17:03 <shachaf> Not speaking of which, I have no feel for what exponentials mean in a lattice.
09:17:13 <shachaf> I'm pretty sure I should know. Is the answer obvious?
09:18:36 <shachaf> I mean in the category sense.
09:18:55 <int-e> ah. <-- stops caring
09:19:14 <shachaf> OK, I'll stop calling it exponential because it has a different name in order theory.
09:19:27 <shachaf> https://en.wikipedia.org/wiki/Complete_Heyting_algebra calls it "implication".
09:20:38 <shachaf> Or maybe https://en.wikipedia.org/wiki/Heyting_algebra
09:20:54 <shachaf> "equipped with a binary operation a → b of implication such that c ∧ a ≤ b is equivalent to c ≤ a → b"
09:23:37 <int-e> that infinite distributive law is something that I can get behind
09:25:45 <shachaf> I'm more used to frames, which are like complete Heyting algebras except frame homomorphisms don't preserve implication.
09:26:04 <int-e> myname: see the above link (in answer to your "why" question yesterday)
09:26:28 <int-e> myname: (my link, not shachaf's)
09:31:29 <shachaf> Hm, every modular lattice is distributive, and every distributive lattice is modular?
09:31:31 <int-e> Scott continuity is something I should understand (and at least I can see that unfolding the definition gets me that infinite distributive law from the finite one, modulo some twiddling to obtain a minimal directed set from S)
09:31:53 <int-e> no, moldularity is weaker than distributivity
09:31:55 <shachaf> Distributivity is stronger.
09:32:33 <shachaf> That's only optimism if you assume that the lattice is your friend rather than your enemy.
09:32:56 <int-e> . o O ( when you have modularity (huh, I had that extra 'l' again in there... but this time I noticed), the distributivity glass is still half empty. )
09:33:22 <int-e> Hmm. Is a half-empty glass of poison better than a half-full one?
09:33:40 <int-e> (It may depend on who drank that half...)
09:34:02 <shachaf> Man, the free complete lattice on three elements is too large to be a set.
09:34:51 <int-e> completeness is just too strong unless things collapse (as they do for real numbers)... I was surprised at first, but I think that fact is fairly intuitive after all.
09:35:51 <shachaf> I guess I'll stick to free complete semilattices, which by coincidence are also complete lattices.
09:36:16 <int-e> I mean "intuitive" in a weak sense. It "makes sense", but I can fit a whole proof into my head.
09:37:16 <int-e> Because that would entail actually proving the lack of collapse I alluded to.
09:37:25 <shachaf> So this duality property of yours doesn't hold for every distributive lattice, right?
09:38:04 <int-e> Hmm? That (1) holds in any distributive lattice as I showed on here the other day.
09:38:10 <int-e> (two days ago now, I believe)
09:38:36 <shachaf> Oh, right, and that one is actually very simple.
09:38:45 <shachaf> So I'm just saying all sorts of silly things today.
09:38:52 <int-e> But I struggled a lot with the converse.
09:39:22 <int-e> And in the end I reconstructed a computer's proof, simplifying it along the way.
09:41:55 <int-e> I *believe* that somebody who has a bit of experience with / intuition for modular lattices would recognize the fact that x \/ ((y \/ z) /\ (x \/ y) /\ (x \/ z)) has the x-s all in the right places for applying modularity and simplifying it down to (x \/ y) /\ (x \/ z). But I've never studied modular lattices.
09:42:39 -!- b_jonas has joined.
09:43:51 <shachaf> You can run any sorting network in a lattice instead of total order, right? Do you get anything interesting?
09:44:42 <int-e> hmm, let me ponder that for 10 minutes
09:49:49 <int-e> First of all, there's https://en.wikipedia.org/wiki/Birkhoff%27s_representation_theorem so you get something well-defined for distributive lattices (and a nice justification of the 0-1 principle for sorting networks: a sorting network is correct if it sorts all possible input sequences consisting only of 0s and 1s correctly). So what I would like to do is to see that distributivity follows from...
09:49:55 <int-e> ...(1 2) (2 3) (1 2) and (2 3) (1 2) (2 3) giving the same results.
09:54:08 <int-e> that may be false though...
09:56:24 -!- Sgeo_ has joined.
09:57:21 <int-e> In fact this property may be something between lattices and modular lattices. (The property in question is (x /\ y) \/ (z /\ (x \/ y)) = (x \/ y) /\ (z \/ (x /\ y)))
09:58:32 <int-e> Of course there are bigger sorting networks to consider as well.
09:59:57 -!- Sgeo__ has quit (Ping timeout: 244 seconds).
10:02:13 <int-e> wait a second, I messed this up; I should swap x and z on the right.
10:03:41 <int-e> And then distributivity follows (don't ask me how, the computer says so). Yay.
10:05:29 <shachaf> Dsitributivity follows from those two networks being equal?
10:07:11 <int-e> Ah I was too fast there, once again...
10:07:53 <int-e> I had snuck a modularity axiom in there.
10:08:52 <int-e> So... in a *modular* lattice, equivalence of those two sorting networks implies distributivity. But it looks like the same isn't true for non-modular lattices (no proof, just lack of a proof that's easy for the computer.)
10:11:23 <int-e> Oh. No, it was all true anyway.
10:12:44 <shachaf> I'm suspecting that it's true because the middle term ends up computing the median the two different ways that you were proving things about, more or less.
10:13:08 <shachaf> I mean the middle element of the list.
10:14:17 <int-e> yeah, that was my intuition. but it's only "more or less" since the sides differ from the self-dual one by an application distributivity each.
10:14:31 <int-e> *of distributivity
10:14:37 <shachaf> So the first network gives you (a∧b) ∨ ((a∨b)∧c)
10:14:48 <shachaf> And the second network gives you (b∨c) ∧ ((b∧c)∨a)
10:15:09 <shachaf> ...Which is what you just said.
10:18:02 <shachaf> I wonder whether there's a fancy sorting network variant that'll give you [a∧b∧c, ???, ab∨c]
10:18:16 <shachaf> I mean [a∧b∧c, ???, a∨b∨c]
10:18:23 -!- Sgeo__ has joined.
10:18:55 -!- Lord_of_Life has quit (Ping timeout: 252 seconds).
10:19:39 <shachaf> The benefit is that the depth for the first and last elements is only 2 so you get it one step earlier.
10:20:01 <shachaf> But I think you have to do more comparisons overall.
10:20:29 -!- Lord_of_Life has joined.
10:20:52 <int-e> http://paste.debian.net/1085364/ is what I did and why I don't know how the proof goes.
10:21:48 -!- Sgeo_ has quit (Ping timeout: 272 seconds).
10:21:49 <int-e> shachaf: well (x /\ y) /\ (x \/ y) /\ z simplifies to x /\ y /\ z in any lattice.
10:24:54 <int-e> No I don't think you can get [a∧b∧c, ???, a∨b∨c] directly. You can satisfy one end using (1 3) (1 2) (2 3) (and its dual).
10:27:38 <shachaf> I guess the constraint here is that you only have three slots to store items in.
10:31:18 <int-e> Yeah maybe 3 is an exception... So, it works for n=2. (1 2) (3 4) (2 4) (1 3) (2 3) does it for n = 4...
10:31:51 <shachaf> Well, I'd prefer to have optimal depth for every slot, or something.
10:32:45 <int-e> well, then you want a minimum depth sorting network?
10:33:14 <int-e> Maybe with something that's well approximated by minimum size as a secondary optimization criterion.
10:33:26 <shachaf> "minimum depth" is about the time to complete the entire network.
10:33:41 <shachaf> But for a 3-item network the depth of the min and max is only 2, and the depth of the median is 3.
10:34:09 <int-e> *actually* there may be an odd/even phenomenon for the generalized [a∧b∧c, ???, a∨b∨c] question... Hmm.
10:34:10 <shachaf> Anyway I'm not sure I actually care that much about this, I was just curious.
10:34:21 <shachaf> What's the generalized question?
10:35:02 <int-e> whether we can simultaneously have the infimum and the supremum of all inputs as the top and bottom results of the sorting network.
10:35:03 <shachaf> In my file I'm writing & for ∧ and | for ∨. Maybe I'll use this notation from now on.
10:35:20 <shachaf> I guess it's ambiguous because people usually mean a different lattice by those operators.
10:37:05 <int-e> I have this start:
10:37:06 <int-e> : a&b a|b c d&e d|e
10:37:30 <int-e> and it occured to me that whatever I use for c next will inevitably lead to terms mixing | and &.
10:38:06 <shachaf> What if you had some extra space?
10:38:27 <int-e> well, for even numbers of inputs I can combine the inputs in pairs
10:38:30 <shachaf> I imagine a constant number of slots doesn't help beyond a constant number of outputs.
10:38:53 <int-e> and then work on the resulting _ & _ and _ | _ terms separately, leading to the infimum and supremum.
10:39:55 <int-e> So, generally: do (1 2) (3 4) ... (2n-1 2n), followed by (1 3) (1 5) ... (1 2n-1) and the reflected version thereof.
10:40:12 <shachaf> But you can't keep them separated for very long.
10:40:41 <int-e> long enough to make the ends meet and join.
10:40:59 <shachaf> Sure, but I care about the all the elements, not just the ends.
10:41:17 <shachaf> The depth of the first and last element is always n.
10:41:26 <shachaf> What's the depth of the second element?
10:42:42 <int-e> You can arrange the computation in a tree. So yeah, log n.
10:42:58 <shachaf> We can assume power of 2 networks, I guess.
10:45:23 <int-e> Batcher's sort gives an upper bound of log(n)^2/2 on the depth, I think.
10:47:03 <int-e> "It is also possible, in theory, to construct networks of logarithmic depth for arbitrary size, using a construction called the AKS network"
10:47:31 <int-e> TIL: There's another AKS result of little practical importance.
10:48:23 <shachaf> These are not the same AKS, though.
10:48:45 <int-e> (The polynomial time primality test is newer, but I heard about it when it was discovered.)
10:49:54 <int-e> Anyway, I really think that existing research on minimum (and small) depth sorting networks largely covers your question.
10:50:40 <shachaf> I finally read the thing about deterministic O(n) median calculation the other day.
10:50:51 <shachaf> That seems to be another algorithm of little practical importance.
10:51:09 <shachaf> But it's surprising that it works.
10:51:42 <int-e> The median of medians thing... yeah, amazing. It's instructive, too.
10:52:41 <int-e> Hmm, doesn't Knuth also invesitage networks for extracting k-th elements?
10:53:41 <shachaf> Does he? I never read TAOCP (as you can probably tell).
10:53:53 <int-e> What's instructive is the clever use of transitivity. Oh and the fact that just because something doesn't work for n=3, it might still work for n=5 ;)
10:54:46 <shachaf> That's an obvious prank from the universe.
10:54:57 <shachaf> We already know that numbers greater than 2 don't really exist.
10:55:12 <shachaf> Now we're expected to believe in 5?
10:55:15 <int-e> "selection network" is the keyword. (bad google term, but it's okay if you add "sorting")
10:56:08 <int-e> "There aren't enough small numbers to meet the many demands made of them."
10:57:27 <shachaf> I'm still curious about what a sorting network means in a lattice.
10:58:00 <shachaf> I remember we talked about how you can sort computable reals since you only require the result to be extensionally a permutation of the input, not intensionally.
11:00:30 <int-e> shachaf: Birkhoff's theorem (mentioned above) is the only handle I have on this.
11:01:10 <int-e> basic intuition: decompose the (distributive) lattice into a cartesian product of totally ordered sets. sort component-wise.
11:01:11 <shachaf> "any spherically symmetric solution of the vacuum field equations must be static and asymptotically flat"
11:02:26 <shachaf> I think I see what you mean, though.
11:02:26 <int-e> With Birkhoffs theorem you get that, except that you may also be carving out a subset that is closed under infimum and supremum.
11:03:50 <int-e> (and in particular it reduces anything to totally ordered sets of size 2, because you can carve out any chain from its powerset using ideals)
11:04:51 <int-e> for example, 1 <= 2 <= ... <= n can be mapped to {1}, {1,2}, ..., {1,..,n} ordered by the subset relation.
11:07:27 <int-e> to be precise, s/ideal/filter/
11:08:29 <int-e> Sorry, ideal is actually correct. (But at least now I also remember the dual term.)
11:10:17 <b_jonas> `leаrn schachaf is short for schachachf
11:10:18 <HackEso> /srv/hackeso-code/multibot_cmds/lib/limits: line 5: exec: leаrn: not found
11:11:16 <HackEso> 640) <elliott> monqy: it's only... ascii porn... the unicode bits stay covered \ 1100) <shachaf> "Well, that was fun" -- Taneb "atriq" Ngevd
11:13:01 <HackEso> Twinkle, twinkle, little star!
11:13:15 <int-e> (having trouble remembering my own entries)
11:14:34 <HackEso> int-e är inte svensk. Hen kommer att spränga solen. Hen står för sig själv. Hen gillar inte färger, men han gillar dissonans. Er hat ein Hipster-Spiel gekauft.
11:15:12 <shachaf> `learn_append int-e He could never remember his own entries so he put them here for convenience.
11:15:17 <HackEso> 1/1:Cassian Andor \ Jan Dodonna \ Jyn Erso \ BB-9E \ Oola \ Bodhi Rook \ BB-8 \ Darth Maul \ Darth Vader \ Ortugg \ Supreme Leader Snoke \ Doctor Cornelius Evazan \ Rose Tico \ BB-8 \ Jyn Erso \ BB-8 \ Salacious Crumb \ R2-D2 \ Conan Antonio Motti \ Captain Phasma \ Nien Nunb \ Doctor Cornelius Evazan \ General Armitage Hux \ Captain Panaka \ Poe Dameron
11:15:33 <HackEso> #!/usr/bin/perl \ @c=split/\|/,"Admiral Crix Madine|Admiral Firmus Piett|Anakin Skywalker|BB-8|BB-9E|Bail Organa|Baze Malbus|Beru Lars|Bib Fortuna|Biggs Darklighter|Boba Fett|Bodhi Rook|Boss Nass|C-3PO|Captain Panaka|Captain Phasma|Cassian Andor|Chancellor Valorum|Chewbacca|Chief Jawa|Chirrut \x{ce}mwe|Cliegg Lars|Conan Antonio Motti|DJ|Darth Bane|Darth Maul|Darth Plagueis|Darth Vader|Doctor Cornelius Evazan|Count Dooku|Emperor Palpatine|Finn|Galen Erso
11:16:25 <shachaf> My trick of using `grep ''` to print files preceded by file name doesn't work when only given one file.
11:16:38 <shachaf> admittedly my trick is bad. but so is unix tdnh
11:19:44 <shachaf> So quickselect has to mutate the input it's given, right?
11:20:28 <shachaf> Is there a bound on how much space median selection needs if it can't mutate the input?
11:33:55 <b_jonas> "<tswett[m]> I love how in Al Dente, you can't do that; you can only write code that *prevents* stuff from happening." => try https://esolangs.org/wiki/90
11:38:56 <b_jonas> shachaf: you may be thinking of Soulfire Grand Master, Firesong and Sunspeaker, or Puncture Blast
11:41:33 <HackEso> Lettuce is a vegetable with two dressings, join and meet.
11:41:36 <HackEso> Lattices are healthy ingredients that join your sandwiches together.
11:46:34 <b_jonas> "read the thing about deterministic O(n) median calculation" => which thing? the Cormen, Leiserson, Rivest, Stein book?
11:48:25 <int-e> Hmm do you need a particular source for that? https://en.wikipedia.org/wiki/Median_of_medians
11:49:31 <int-e> And I thought Knuth has it as well (TAoCP)...
11:49:50 <b_jonas> shachaf: you can use grep -h for that
11:52:08 -!- sebbu2 has joined.
11:56:12 -!- sebbu has quit (Ping timeout: 244 seconds).
12:35:22 -!- arseniiv has joined.
12:44:54 -!- Phantom_Hoover has joined.
13:58:15 -!- AnotherTest has joined.
14:11:20 <int-e> ski: eww I want to unsee https://en.wikipedia.org/wiki/Densely_packed_decimal
14:11:34 <int-e> (prompted by your comment on #haskell)
14:13:03 -!- FreeFull has joined.
14:16:36 <ski> ohh, never seen
14:21:02 -!- int-exile has joined.
14:21:53 -!- int-exile has changed nick to int-e_.
14:23:52 -!- int-e has quit (Ping timeout: 276 seconds).
14:24:15 <int-e_> oh right, the logs are down too...
14:25:24 <b_jonas> int-e: the tunes logs work
14:25:32 <int-e_> ski: anyway, that page is linked from the IEEE 754 page (IEEE 754 does specify decimal floating point numbers; the main point(sic!) isn't that the representation should be decimal, but that the mantissa/exponent are decimal. The FPU might use any representation it likes.
14:25:56 * ski was just about to say what b_jonas said
14:26:29 <int-e_> FSV of "work"... can't display in browser...
14:26:54 <ski> <http://tunes.org/~nef/logs/esoteric/19.06.01> works here
14:27:27 <ski> you mean that the exponent is wrt base `10' ?
14:27:28 <int-e_> despite the "Open in Browser" plugin?! how does that fail...
14:27:55 <int-e_> ski: meaning the number is multiplied by 10^[decoded e]
14:28:01 <int-e_> rather than 2^[decoded e]
14:28:33 <ski> ("Open in Browser" plugin ?)
14:28:42 -!- int-e has joined.
14:29:19 <ski> <int-e_> rather than 2^[decoded e] <ski> right <ski> ("Open in Browser" plugin ?)
14:29:43 <int-e_> I don't trust the VPS just yet.
14:30:08 <ski> oh, i'm seeing double, then
14:30:59 -!- int-e__ has joined.
14:31:45 <int-e_> now it's getting weird.
14:32:23 -!- int-e has quit (Client Quit).
14:34:29 -!- MDude has quit (Ping timeout: 252 seconds).
14:34:36 -!- int-e__ has quit (Client Quit).
14:34:43 -!- int-e has joined.
14:36:55 <int-e_> Okay, that was stupid. I thought the VPS had a reboot, but it just had a network hickup and my old screen session was still around. Hopefully back for good...
14:36:56 -!- int-e_ has quit (Quit: leaving).
14:38:15 * ski screens the sessions
14:41:55 <int-e> (different VPS ;-) )
14:46:03 <ski> different ?
14:47:01 <int-e> lambdabot's on a VPS. My IRC client is on a VPS. These two VPSs are not the same.
15:06:20 -!- sebbu2 has changed nick to sebbu.
15:08:24 -!- Sgeo_ has joined.
15:11:45 -!- Sgeo__ has quit (Ping timeout: 258 seconds).
15:17:20 -!- nfd9001 has quit (Ping timeout: 248 seconds).
15:44:43 -!- unlimiter has joined.
15:53:45 <int-e> ski: re: Open in Browser: It's this plugin, https://addons.mozilla.org/en-US/firefox/addon/open-in-browser/ which is supposed to allow me to override what FF does with a link... one of the options being "open in browser as text". But it doesn't work in this case.
15:54:23 <int-e> and that's despite the server properly declaring it as Content-Type: text/plain :-/
15:54:58 * int-e blames software complexity.
15:56:02 -!- unlimiter has quit (Quit: WeeChat 2.4).
15:57:15 <int-e> (disabling the addon (that's what FF calls it) doesn't help either)
15:58:09 <int-e> Everything sucks. Chrome is breaking Ad blockers, FF is breaking simpler things like X11 selections.
16:00:10 <ski> oic. used W3m here
16:00:55 -!- atehwa has quit (Remote host closed the connection).
16:34:27 -!- adu has joined.
16:43:41 <int-e> (I'm sure that was *very* original)
16:44:28 <int-e> `quote precipation
16:44:41 <HackEso> 889) <Bike> Usually I'd use Rankine, but the fucking weather doesn't support it.
16:45:43 <int-e> `complain Nobody's talking about the weather here, despite metasepia's best efforts!
16:45:45 <HackEso> Complaint filed. Thank you.
16:45:50 <b_jonas> int-e: I don't really understand what Firefox does with it. I assumed the server was just sending the wrong Content-Type or Content-Disposition for the logs, but that's not the case
16:46:00 <b_jonas> anyway, you can still download the logs, or view in another browser
16:46:18 <int-e> I know but it's inconvenient.
16:46:44 <int-e> (I'm a potted plant. FEED ME!)
16:47:07 <b_jonas> I was wondering if it depended on whether it's valid utf-8 or something, but that doesn't seem to be the problem either
16:47:25 <zzo38> Try prefixing "view-source:" to the URL
16:51:20 <b_jonas> maybe it doesn't like LF instead of CRLF or something
16:51:49 <b_jonas> like, firefox assumes that text/plains files should have crlf in them, which is what they often have when webserverers serve them
16:52:16 <zzo38> If prefixing "view-source:" doesn't work, try using curl and less, perhaps
16:54:44 <int-e> b_jonas: it somehow falls back on guessing the file type from the extension. which is quite stupid...
16:57:08 <int-e> but you're probably right that it has to do with the contents
16:58:25 <int-e> but it's unclear what it is that it doesn't like... unicode symbols or stray ^Os perhaps?
16:59:35 * int-e notes that the server does not specify an encoding. that may be a problem.
17:07:24 <b_jonas> int-e: oh, that could be it
17:07:52 <b_jonas> but that shouldn't be a problem, should it?
17:08:18 <b_jonas> I mean, the web used to be full of html files that didn't specify an encoding back in the 2000s, which is why changing the encoding is still in the firefox menu
17:08:28 <int-e> well if FF then runs statistics on the input and sees 1% invalid characters...
17:08:42 <b_jonas> in the View menu of Firefox
17:09:11 <b_jonas> int-e: yes, but the last few days' worth of logs are actually valid utf-8
17:09:49 <int-e> FF tends to default to ISO8859-1 for me.
17:10:02 <int-e> which... hmm... pokes a hole into my reasoning.
17:10:10 <zzo38> Sometimes I do need to change the encoding in the View menu (not always to UTF-8, although sometimes this is the case, and sometimes not); this is more for files that aren't HTML, though, I found.
17:10:12 <int-e> since that doesn't have invalid encodings at all :)
17:10:28 <b_jonas> int-e: definitely not. browsers never even use iso-8859-1 encoding, even if you tell them
17:10:51 <b_jonas> they use cp1252, because the web was also full of cp1252 html files declared to be iso-8859-1 back in the 2000s
17:11:20 <zzo38> If you think Chrome and Firefox is no good, do you think http://zzo38computer.org/textfile/miscellaneous/web_browser is good? Presumably also if used on X then it won't break selections either
17:11:23 <b_jonas> and cp1252 has twelve invalid characters, or five if you call MS's updated version of cp1252 with the same name
17:14:33 <int-e> yeah, maybe. (cp437 forever!)
17:51:20 -!- adu has quit (Quit: adu).
17:51:47 -!- adu has joined.
18:01:58 <rain1> problem is it's hard to make a web browser
18:30:21 <adu> problem is, no one can define what a web browser is
18:31:45 <rain1> that's not the problem
18:32:26 <int-e> rain1: so make let's make it simpler then
18:32:29 <adu> is it HTML5? SVG? MathML? Canvas2D? WebGL? WebAsm? Workers?
18:32:58 <adu> I think web browsers should be scribble based
18:34:08 <adu> https://docs.racket-lang.org/scribble/getting-started.html#%28part._first-example%29
18:46:23 -!- nfd9001 has joined.
18:53:03 <int-e> yay another markup language
18:53:48 <int-e> and not a pretty one either
18:54:51 <int-e> I guess it's also a templating language so perhaps there's some justification for its existence.
18:57:37 <rain1> well gopher is good
18:57:49 <rain1> i think you could do something good that's between gopher and web
18:58:42 <int-e> HTML (you know, the markup language) plus CSS minus animations.
19:00:18 <int-e> (CSS needs a closer look, it carries quite some baggage by now)
19:02:38 <int-e> And none of this will happen anyway. We'll just keep adding stuff to the pile. Some parts like Flash will slowly fall into disuse and fade away.
19:09:05 <int-e> TLAs should be banned from all communications.
19:12:22 <zzo38> I wrote a C header file for WebAssembly, but it is not implemented (as far as I know).
19:26:58 -!- Sgeo__ has joined.
19:30:01 -!- Sgeo_ has quit (Ping timeout: 252 seconds).
19:43:24 -!- Sgeo_ has joined.
19:46:40 -!- Sgeo__ has quit (Ping timeout: 248 seconds).
19:53:57 -!- AnotherTest has quit (Ping timeout: 258 seconds).
19:55:08 <int-e> zzo38: well I expect no less of you; you are the god of vaporware
19:55:42 <zzo38> Is there a implementation of WebAssembly to use with C rather than JavaScript?
19:56:01 <b_jonas> zzo38: I think clang has one, but I'm not sure
19:57:09 <int-e> I'm not sure what niche that is supposed to fill, really. OpenCL / SPIR-V may be more relevant here.
19:59:57 <zzo38> I know LLVM can compile into WebAssembly code, but what I meant is a program to execute WebAssembly codes from a C program.
20:00:13 <shachaf> b_jonas: Ah, probably. At least the first two? I don't see the last one having to do with lifelink.
20:00:53 <b_jonas> shachaf: it doesn't, it's just another of those cases where you have an ability that's usually on creatures, like lifelink, deathtouch, infect, but get it on a noncreature
20:01:00 <b_jonas> shachaf: grep -h to print the filename even if there's only one file
20:01:14 <HackEso> #!/usr/bin/perl \ @c=split/\|/,"Admiral Crix Madine|Admiral Firmus Piett|Anakin Skywalker|BB-8|BB-9E|Bail Organa|Baze Malbus|Beru Lars|Bib Fortuna|Biggs Darklighter|Boba Fett|Bodhi Rook|Boss Nass|C-3PO|Captain Panaka|Captain Phasma|Cassian Andor|Chancellor Valorum|Chewbacca|Chief Jawa|Chirrut \x{ce}mwe|Cliegg Lars|Conan Antonio Motti|DJ|Darth Bane|Darth Maul|Darth Plagueis|Darth Vader|Doctor Cornelius Evazan|Count Dooku|Emperor Palpatine|Finn|Galen Erso
20:01:20 <HackEso> bin/starwars:#!/usr/bin/perl \ bin/starwars:@c=split/\|/,"Admiral Crix Madine|Admiral Firmus Piett|Anakin Skywalker|BB-8|BB-9E|Bail Organa|Baze Malbus|Beru Lars|Bib Fortuna|Biggs Darklighter|Boba Fett|Bodhi Rook|Boss Nass|C-3PO|Captain Panaka|Captain Phasma|Cassian Andor|Chancellor Valorum|Chewbacca|Chief Jawa|Chirrut \x{ce}mwe|Cliegg Lars|Conan Antonio Motti|DJ|Darth Bane|Darth Maul|Darth Plagueis|Darth Vader|Doctor Cornelius Evazan|Count Dooku|Emperor Pa
20:01:35 <shachaf> cat -v is considered harmful, I hear.
20:01:36 <b_jonas> -h omits the filename even if there's multiple files, -H puts them in even for one file
20:01:47 <HackEso> grep: wisdom/8: Is a directory \ ! is a syntax used in Haskell and Prolog for solving evaluation order problems. \ #esoteric is the only channel that exists. After monqy left it became slightly off-centër. It's a 7-codimensional hyperenchilada about 30 m (100 ft) across. oerjan seems to be making a lawn in the northern part, but it keeps getting dug up by free ranging moons. Currently located in the Atlantis Exclusion Zone. \ 01 is an abbreviation that 01
20:02:00 <HackEso> ! is a syntax used in Haskell and Prolog for solving evaluation order problems. \ #esoteric is the only channel that exists. After monqy left it became slightly off-centër. It's a 7-codimensional hyperenchilada about 30 m (100 ft) across. oerjan seems to be making a lawn in the northern part, but it keeps getting dug up by free ranging moons. Currently located in the Atlantis Exclusion Zone. \ 01 is an abbreviation that 01 understands. \ The 1 is just
20:02:24 <b_jonas> shachaf: I don't think it's harmful, but I said head -v
20:02:33 <b_jonas> I use cat -v or cat -A a lot
20:09:50 <shachaf> the real point is, unix is scow
20:10:53 <shachaf> It's such a scow that it's so difficult to make correct software out of unix pipelines and shells.
20:11:04 <shachaf> Almost impossible, and certainly not the norm.
20:16:13 -!- arseniiv has quit (Ping timeout: 252 seconds).
20:34:45 <b_jonas> how come this doesn't have an "is just" wisdom?
20:35:30 <shachaf> Because no one wrote it. Which might be because the average "is just" wisdom is p. bad.
21:05:34 -!- DrKnuser has joined.
21:34:08 -!- laerling has joined.
21:43:35 -!- DrKnuser has quit (Quit: Quit).
22:19:30 -!- Lord_of_Life_ has joined.
22:20:00 -!- Lord_of_Life has quit (Ping timeout: 272 seconds).
22:20:38 -!- Lord_of_Life_ has changed nick to Lord_of_Life.
22:25:27 <zzo38> Of my idea of RDF-based coding for Magic: the Gathering cards, there would be many parts (some of which are applicable to some cards only), such as :name :manacost :type :abilities :power :toughness :handmod :lifemod :split :flipped :transformed :melded :multiverseid
22:26:28 <adu> what is multiverseid?
22:27:21 <zzo38> It is used only for searching and has no effect on the game. A card definition may specify multiple IDs in case there are multiple versions printed. It can also be used for finding pictures and stuff if needed
22:27:45 <adu> is that the name of a database?
22:28:25 <zzo38> I don't know, but Wizards of the Coast has a database of Magic: the Gathering cards and they are indexed by the Multiverse ID number.
22:29:52 <zzo38> A name identifies the card for game play purposes, while the Multiverse ID number identifies one specific printed version of the card.
22:36:50 -!- moei has quit (Quit: Leaving...).
22:37:12 <adu> my MTG database is a cardboard box
22:44:17 <zzo38> I mentioned other examples of my ideas here too, and maybe a document should be written with the ideas. A computer program to implement rules of Magic: the Gathering could then use this data to possibly convert into some other code. This also allows text-changing effects to work (some implementations do not implement text-changing effects).
23:10:41 -!- S_Gautam has quit (Quit: Connection closed for inactivity).
23:51:14 <b_jonas> the IOCCC website says it's planning to release source code on 2019-06-02. do you think they will?