00:10:36 -!- Phantom__Hoover has quit (Remote host closed the connection). 00:18:17 -!- augur has quit (Quit: Leaving...). 00:18:44 -!- augur has joined. 00:27:17 fungots fall on fungot falls 00:32:45 700 + 132 + 942 + 732d1 00:32:46 shachaf: 700 + 132 + 942 + 732 => 2506 00:33:24 1+2 00:33:27 1+2d1 00:33:27 fowl: 1 + (1+1) => 3 00:33:33 ._. 00:34:02 -!- edwardk has quit (Quit: Computer has gone to sleep.). 00:34:52 * boily screams «AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA» at fizzie for having unfungotted the channel 00:55:50 -!- pikhq has quit (Read error: No route to host). 00:57:04 -!- pikhq has joined. 00:58:11 -!- shikhin has joined. 00:58:20 -!- Ghoul_ has joined. 01:02:46 -!- boily has quit (Quit: SAXOPHONIC CHICKEN). 01:26:51 ~metar LIPB 01:33:26 -!- shikhin has quit (Ping timeout: 255 seconds). 01:56:08 2+2+0d1 01:56:14 2+2+1d0 01:56:24 2+2+1d1 01:56:24 lexande: 2 + 2 + 1 => 5 01:56:44 3*5-1+1d1 01:56:45 lexande: 3 * 5 - 1 + 1 => 15 02:08:17 50d1 02:08:17 pikhq: 50 02:08:26 5d2 02:08:26 pikhq: 6 02:08:29 Yaaay 02:08:35 50d50 02:08:35 pikhq: 1291 02:10:31 Aaaah 02:46:35 0x1d1 02:47:34 this is like a tagged union, correct? data List a = Nil | Cons a (List a) 02:47:58 2**2d1 02:48:05 2*2d1 02:48:05 lexande: 2 * (1+1) => 4 02:48:15 2^2d1 02:48:16 fowl: uhhuh 02:48:39 what ttrpgs use exponentiation of random numbers? asking for a friend 02:49:06 fowl: It can mean a empty list or a list consisting of a value and a list, so it is like a tagged union 02:49:08 2d1*2 02:49:08 lexande: (1+1) * 2 => 4 02:49:17 do "Nil" and "Cons" have any meaning outside of the list? (are they even defined?) 02:49:19 2d1^2 02:49:26 fowl: they're constructors. 02:49:32 fowl: Nil and Cons are constructors of the datatype called List. 02:50:13 Bike: Can you explain how you want to use exponentiation of random numbers? You can do 2 to the power of 1 to 6 if you use a backgammon doubling cube, perhaps. 02:50:29 i don't really care how it's used, i just want to see how it is used 02:51:03 I have added various things into the SQL such as a CREATE FUNCTION, CREATE COLLATION, CREATE MACRO, CREATE NAMESPACE, and the ability for trigger programs to contain SAVEPOINT, RELEASE, ROLLBACK TO, but still some missing thing such as traps, while-loops, overrides, etc 02:51:13 Bike: Well, I don't know. 02:58:09 -!- Sorella has quit (Quit: It is tiem!). 02:58:19 -!- tromp has joined. 03:00:07 Anyone in here familiar with JFLAP? 03:00:33 I don't know what that is. What is that? 03:01:17 It's a program for simulating various abstract machines ("Java Formal Languages and Automata Package"), including Turing machines, FSMs, PDAs, and a few others. 03:01:52 partial differential assistant 03:05:10 Sure. 03:06:50 but nah i've never used it. 03:12:44 Hm. I'm wondering why the majority of my states in a 2-tape Turing machine are highlighted as nondeterministic. 03:51:32 -!- tromp has quit (Remote host closed the connection). 03:52:04 -!- tromp has joined. 03:53:05 -!- ter2 has quit (Ping timeout: 250 seconds). 03:56:44 -!- tromp has quit (Ping timeout: 265 seconds). 04:00:14 http://pixelcomic.net/287.php 04:00:19 Not very "new", but it's new to me 04:07:19 -!- Ghoul_ has quit (Ping timeout: 252 seconds). 04:07:19 -!- pikhq has quit (Ping timeout: 252 seconds). 04:07:29 -!- not^v has quit (Read error: Connection reset by peer). 04:07:58 -!- not^v has joined. 04:10:31 -!- Ghoul_ has joined. 04:16:18 I've used JFLAP. 04:16:31 -!- pikhq has joined. 04:17:24 But it was quite a long time ago, and I have to board a flight any minute now. 04:42:53 -!- Vorpal has quit (Quit: ZNC - http://znc.sourceforge.net). 04:43:45 -!- not^v has quit (Quit: http://i.imgur.com/DrFFzea.png). 04:49:41 Someone give me two binary numbers likely to trip up an amateur's Turing machine that's supposed to add them. 04:51:58 -!- Slereah_ has quit (Ping timeout: 276 seconds). 04:52:25 18, 2^32-1 04:53:22 Sure, one sec 04:53:49 then -1, 0 04:54:00 Gotta be non-negative. 04:55:45 OK, that failed, when added in both orders 04:56:56 Something's wrong with my carry state 05:15:20 -!- password2 has joined. 05:43:00 -!- Zerker has joined. 05:52:39 -!- Zerker has quit (Quit: Colloquy for iPad - Timeout (10 minutes)). 06:02:02 `coins 06:02:03 ​uobcoin grailcoin durcoin calcoin rktureheading-bookcoin dividencoin omhncoin acicoin hunthenamecoin bestcoin refcoin orrhycoin bigcoin concoin omnisccoin mincoin origicoin anycoin penrcoin mushelmsiecoin 06:05:42 -!- BlueProtoman has quit (Remote host closed the connection). 06:12:24 -!- oerjan has joined. 06:18:10 -!- MoALTz has quit (Quit: bbl). 06:22:20 concoin, describes all coins? 06:22:27 (ok probably not really) 06:23:30 it's a coinspiracy 06:23:55 * oerjan remembers he hasn't checked bitcoinity in a while 06:24:35 looks fairly stable for the last weeks 06:25:14 although there's still that downward trend 06:27:10 -!- atehwa has joined. 06:50:52 `cairns 06:50:52 ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: cairns: not found 06:51:49 `coins 06:51:51 ​bringcoin automailmentraunterating-boobuminuspicoin l00pcoin odbcocoin irifycoin cobincoin rociecoin capuracoin wikincoin elogycoin exconcoin thilcoin minuscoin tminarycoin nhohtcoin camolzcoin tagcoin kiplecoin x-dcoin quatcoin 06:51:59 nice colorful coins 06:55:18 -!- tromp has joined. 06:59:45 -!- tromp has quit (Ping timeout: 258 seconds). 07:12:23 -!- Tritonio has joined. 07:39:50 -!- slereah has joined. 07:52:41 have we had quinecoin yet? 08:01:15 apparently not 08:02:08 -!- edwardk has joined. 08:31:24 -!- Patashu has joined. 08:34:05 -!- Ghoul_ has quit (Quit: Connection closed for inactivity). 08:54:41 -!- Patashu_ has joined. 08:54:41 -!- Patashu has quit (Disconnected by services). 09:38:47 -!- MindlessDrone has joined. 09:44:49 -!- shikhin has joined. 09:47:33 -!- conehead has quit (Quit: Computer has gone to sleep). 10:09:07 -!- boily has joined. 10:12:20 `olist (951) 10:12:20 olist (951): shachaf oerjan Sgeo FireFly boily nortti 10:13:35 shachellof. 10:21:38 ooh 10:30:11 i thought it was a survivor bias joke but people seem to think it's just an "in"flammable joke 10:32:09 i seemed to think that too 10:49:02 -!- Phantom_Hoover has joined. 10:51:23 -!- drdanmaku has quit (Quit: Connection closed for inactivity). 10:53:24 -!- constant has changed nick to trout. 10:57:09 -!- Tritonio has quit (Ping timeout: 245 seconds). 11:10:14 -!- boily has quit (Quit: RECAPITULATING CHICKEN). 11:39:41 -!- Sgeo has quit (Read error: Connection reset by peer). 11:39:54 -!- nucular has joined. 11:39:54 -!- nucular has quit (Changing host). 11:39:54 -!- nucular has joined. 11:40:02 -!- yorick has joined. 11:50:36 -!- oerjan has quit (Quit: leaving). 11:59:47 shachaf: I think it's "in"flammable joke too, 12:00:07 yes 12:00:19 but then most of the airship is made of wood and textile (also hydrogen if they're relaly unlucky), so most of it is inflammable 12:05:04 Helium doesn't have the same lift and is expensive 12:06:08 -!- tromp has joined. 12:10:08 @tell oerjan I can believe that 2-cell brainfuck is not TC; it seems that the halting problem is decidable for those, but it gets messy and I have no formal proof. What if we have 2 counters and a "landing field" that is always zero and cannot be modified (say, any attempt to do so would halt the program)? 12:10:08 Consider it noted. 12:12:01 I seem to recall that you need like 6 cells or so for TC brainfuck 12:12:45 slereah: that's certainly too much 12:13:17 Perhaps 12:13:22 That is just vague recollection 12:16:58 3-cell can simulate 2-counter machines, which are undecidable 12:20:42 -!- john_metcalf has quit (Read error: Connection reset by peer). 12:21:02 -!- john_metcalf has joined. 12:21:26 I guess 4 cells are easy, 3 cells need work. 12:21:57 3-cell is easy, 2-cell needs work 12:22:17 (I would not immediately rule out the possibility that 2-cell is undecidable) 12:24:43 Jafet: The problem is that only innermost loops can have unbounded values in both counters, and they cannot communicate with loops outside (they terminate because one of the counters is zero, and you cannot even use the position of the pointer because there's no way to check it.) 12:32:22 Well, with 2 cells, any terminating inner loop takes (ma,b) to (0,b+na) 12:33:31 -!- Phantom_Hoover has quit (Ping timeout: 250 seconds). 12:34:06 my guess is that it's not known what the exact lowest number of cells is that's enough 12:38:21 Actually, it may be possible to simulate fractran 12:44:34 p/q ==> while(A) { if (A==1) { while(B) { A+=q, B-=p; } swap(A,B); } else if (A==2) ... else if (A==q-1) { ... } else A-=q, B+=p; } 12:45:50 That converts (A, 0) -> (0, pA/q) if q|A, otherwise (0, A) 12:46:32 You could try writing a two-cell oracle and seeing if there are any inputs that could possibly have it provide the wrong anwer 12:46:35 answer* 12:46:54 If there aren't any, you know it's not turing-complete 12:47:11 That sounds like it will take a lot of seeing. 12:48:04 You would have to find a way to cover all the cases 12:48:48 Can you even do fibbonacci with just two cells? 12:48:49 -!- tromp has quit (Remote host closed the connection). 12:49:22 -!- tromp has joined. 12:49:33 https://www.eff.org/privacybadger 12:50:29 ^bf >+<[.[->+<]>.[-<+>]] 12:50:55 `which bf 12:50:55 No output. 12:51:02 o kay 12:53:57 -!- tromp has quit (Ping timeout: 258 seconds). 12:57:03 ion: I should really just null-route all ad networks 12:57:11 ~bf 12:57:14 @bf 12:57:14 Done. 12:57:25 Done what? 13:00:30 it has run the whole program 13:00:33 Hmm, it might be hard to write the conditionals with no extra space. 13:00:39 @bf >+<[.[->+<]>.[-<+>]] 13:00:39 Done. 13:00:44 hmm. 13:01:01 err, that won't produce any output 13:01:08 @bf >+[.[-<+>]>.[->+<]<] 13:01:09 Done. 13:01:14 -!- Sorella has joined. 13:01:18 @bf +[] 13:01:23 Done. 13:01:27 @bf ++++[>++++<-]>{<++++>-]<. 13:01:27 bf: Ix{Int}.index: Index (-1) out of range ((0,15)) 13:01:33 @bf ++++[>++++<-]>{<++++>-]>. 13:01:34 bf: Ix{Int}.index: Index (-1) out of range ((0,15)) 13:01:39 @bf ++++[>++++<-]>[<++++>-]>. 13:01:39 Done. 13:01:44 @bf ++++[>++++<-]>[<++++>-]<. 13:01:45 @ 13:02:07 oh. two spaces, that's odd. 13:02:22 @bf +[.+] 13:02:22 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij... 13:04:05 @bf +[>+<+++]>. 13:04:05 U 13:05:18 Why did +[] terminate? 13:05:30 lambdabot was done with it. 13:05:38 (duh) 13:05:44 And it still just prints Done. even for infinite loops? 13:05:52 @bf .+[] 13:05:57 because the brainfuck interpreter sets resource limiits 13:05:57 Done. 13:06:01 gets killed, without output. 13:06:05 @bf +++++++++++++++++++++++++++++++++++++=.+[] 13:06:10 Done. 13:06:14 =?! 13:06:28 brainfuck+= 13:07:46 I added the = accidentally 13:07:54 Doesn't matter since it gets ignored 13:31:59 -!- edwardk has quit (Quit: Leaving...). 13:33:24 -!- edwardk has joined. 13:34:02 @bf >+++++++++[->+>++++<<]>[->.+.+.+.+.+.+.+.+.+.+.+.+<] 13:34:02 $%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmn... 13:35:17 `perl-e printf"%c",$_ for 32..127 13:35:18 ​ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 13:38:50 -!- Melvar` has changed nick to Melvar. 13:39:49 -!- Frooxius has quit (Quit: *bubbles away*). 13:40:08 -!- nycs has changed nick to `^_^v. 13:43:57 -!- conehead has joined. 13:45:29 -!- Sprocklem has quit (Ping timeout: 245 seconds). 13:50:23 -!- Frooxius has joined. 13:56:01 -!- Patashu_ has quit (Ping timeout: 276 seconds). 14:12:34 -!- idris-ircslave has quit (Quit: Terminated). 14:12:57 -!- idris-bot has joined. 14:20:29 "EOF is a controversial issue. Many implementations return 0, some return -1, and several notable brainfuck programmers [...]" whoa notability 14:21:55 -!- yorick_ has joined. 14:23:19 -!- yorick has quit (Ping timeout: 276 seconds). 14:40:57 -!- Sprocklem has joined. 14:43:37 The notabliest 14:43:46 Also what do those several ones return! 14:44:25 -!- shikhout has joined. 14:47:25 -!- shikhin has quit (Ping timeout: 258 seconds). 14:53:30 -!- shikhout has changed nick to shikhin. 14:57:07 -!- yorick_ has changed nick to yorick. 15:06:21 -!- tromp has joined. 15:10:48 -!- tromp has quit (Ping timeout: 258 seconds). 15:27:31 -!- nycs has joined. 15:31:33 -!- `^_^v has quit (Ping timeout: 276 seconds). 15:37:28 total heap usage: 666 allocs, 666 frees, 312,688 bytes allocated 15:37:31 D: D: D: 15:41:57 -!- password2 has quit (Ping timeout: 240 seconds). 15:42:04 -!- nycs has changed nick to `^_^v. 15:45:02 the freelist of the beast 15:46:30 The things I had to do to plug those leaks~ 15:46:37 First born son and all tat 15:52:31 -!- tromp has joined. 15:56:45 -!- tromp has quit (Ping timeout: 240 seconds). 15:58:22 -!- drdanmaku has joined. 16:02:41 -!- slereah has quit (Quit: Leaving). 16:27:21 -!- MoALTz has joined. 16:32:05 -!- ^v has joined. 16:34:22 -!- john_metcalf has quit (Ping timeout: 258 seconds). 16:36:32 -!- password2 has joined. 16:42:32 -!- BlueProtoman has joined. 16:46:09 So I'm trying to either prove or disprove that the language {M where M is a Turing machine that, given blank input, will write a non-blank symbol somewhere} is decidable. Can't I just have a Turing machine B that halts if M writes a non-blank and loops if not? 16:47:34 yeah, but during the loop you might never know definitively that you can stop looping 16:49:29 Would that make the language I specified undecidable? 16:50:03 decidable means total, so, your recognizer needs to halt on all inputs, no? 16:50:26 Yes. 16:50:55 and your recognizer isn't going to halt on any M that doesn't halt and doesn't write a non-blank symbol 16:51:37 Oh, I see. So the input M doesn't have to halt, it just has to write a non-blank symbol. 16:53:05 If it never writes a non-blank symbol then I would think an infinite loop is detectable? 16:53:19 (You can ignore the tape position) 16:53:52 ? 16:53:55 -!- shikhin has quit (Remote host closed the connection). 16:58:37 What do you mean, zzo38? 17:01:31 zzo's saying that it's probably computable to see if a turing machine that never writes a non-blank symbol halts. 17:01:58 If the number of states is finite then you can look for a loop in the state considering that the symbol is first at blank, that it leads to one you have been on before when the written symbol is also blank. 17:03:33 zzo38: So it's similar to solving the halting problem for FSMs? 17:04:46 313.9 - 101.77 17:04:50 yeah, turing machines have "infinite states" because they can write all the symbols they want, but you're restricting that 17:04:51 313.9 - 101.77d1 17:05:05 i forget enough about strict during machines to remember if you can do something weird with blanks in unary, though 17:05:46 -!- Slereah_ has joined. 17:07:03 If there is only one kind of blank symbol and the tape is infinite both ways then any tape position on a blank tape is the same as any other 17:07:29 oh right, it starts out all blank. 17:07:39 zzo38: But it *might* write a non-blank symbol. 17:08:10 That's what I'm trying to prove; whether the language of all Turing machines that write a non-blank symbol given blank input is decidable. 17:08:31 i imagine you can look at all states to see which can write a non-blank symbol, and see if any of those are reachable from the starting state on a blank tape 17:09:03 OK, but what if we loop forever with blank input? 17:09:29 once you've found no non-blank writing you're just dealing with an FSM 17:09:44 Bike: Yes, that is what I meant. 17:13:02 So then what happens if I have a Turing machine B that takes some M as input, and halts iff it runs M and then M writes a non-blank symbol? 17:14:24 Oh, I think I get it. 17:16:09 The actual definition of L is L = { M where M is a Turing Machine which, when started with a blank input tape, will finally write some non-blank symbol on its tape.} Does that "finally" change anything? 17:18:02 meaning "eventually"? 17:18:50 (the other interpretation, though unlikely, is "in its last step".) 17:21:09 I'm going to assume that the professor just means it'll write a non-blank symbol at some point, as opposed to halting on a non-blank symbol. 17:21:20 Unfortunately, that detail changes the answer. 17:21:22 Because I have other problems to do and this homework is due at midnight. 17:21:53 -!- b_jonas has quit (Ping timeout: 264 seconds). 17:22:02 How does it change the answer? 17:22:08 So then what happens if I have a Turing machine B that takes some M as input, and halts iff it runs M and then M writes a non-blank symbol? <-- like i said, that's not sufficient. you could have the machine that writes nothing and doesn't move but doesn't halt. 17:22:10 -!- Froox has joined. 17:23:04 -!- b_jonas_ has joined. 17:23:05 -!- Frooxius has quit (Read error: Connection reset by peer). 17:23:19 This is my solution: 17:23:20 Let L=\left\{ \string M|\mbox{\ensuremath{M} is a Turing machine that will write a non-blank symbol on its tape if the input is blank}\right\} 17:23:20 . We will prove that L 17:23:20 is decidable. Note that Turing machines have a finite number of states. Thus, they have a finite number of transitions of the form \delta\left(q,\square\right) 17:23:20 . If, for a given M 17:23:22 and q 17:23:24 , we see \delta\left(q,\square\right) 17:23:26 more than once before we write a non-blank symbol, then we know that M 17:23:29 won't halt. So let's have a decider \decider L 17:23:30 that takes some \string M 17:23:34 as input and runs M 17:23:36 on \varepsilon 17:23:38 , and accepts if M 17:23:40 writes a non-blank symbol and rejects if M 17:23:42 is deduced to loop forever before writing a non-blank symbol. Hey, look, \decider L 17:23:44 exists, thus L 17:23:44 The real problem is this: a typical TM interpreter will put non-blank symbols on the tape. 17:23:46 is decidable. \qed 17:23:48 17:23:50 Oh, shit 17:24:22 BlueProtoman: yes, you shouldn't have pasted it here, but that looks about correct. 17:24:41 It's all the newlines that snuck in there. 17:25:05 int-e: starting with blank input is part of the conditions, though 17:25:21 ... hmm. or not. I'm not sure what you're doing at "o let's have a decider \decider L". 17:26:45 Bike: The TM degenerates to a finite automaton or a single counter machine (depending on whether you can test for the left tape end or not) if it can't write (non-blank symbols) to the tape. 17:27:43 yes? 17:27:52 i mean i'm not sure what you meant by "the real problem" 17:28:39 Bike: at that point I was assuming that we wanted to show that L is undecidable by the usual diagonalization. I probably misread something. 17:28:50 oh. 17:28:53 -!- oerjan has joined. 17:29:38 How does M *writing a non-blank then halting* change the answer? 17:30:22 BlueProtoman: as I meant it it would allow M to also write non-blank symbols at other times, only the final write would count. 17:30:55 int-e: OK, would that affect decidability, then? 17:31:12 Actually, maybe it wouldn't. 17:31:40 Actually, it would. 17:31:50 BlueProtoman: obviously. Just take any turing machine and make sure it writes a non-blank symbol in its halting state. 17:32:08 (introducing a new halting state in the process) 17:32:14 Yeah. If you wanna be pedantic, check the cells immediately to its left and right. 17:32:23 But what happens if you don't halt? 17:32:35 then there won't be a final step 17:32:55 hence no non-blank symbol written in the final step 17:33:04 You'd have to solve the halting problem, though, since now you're not limited to what's effectively an FSM. 17:33:15 yes. 17:33:22 that was the point 17:33:58 @yell oerjan HI! 17:33:58 Consider it noted. 17:35:15 @messages-LOUD 17:35:15 Unknown command, try @list 17:36:01 -!- Sprocklem has quit (Quit: School labs/lunch). 17:36:02 @messages-yold 17:36:03 int-e said 5h 25m 54s ago: I can believe that 2-cell brainfuck is not TC; it seems that the halting problem is decidable for those, but it gets messy and I have no formal proof. What if we have 2 counters and a "landing field" that is always zero and cannot be modified (say, any attempt to do so would halt the program)? 17:36:03 int-e said 19m 23s ago: (Re: 2-cell brainfuck) I found the following refinement of the insight that loops terminate with zeros helpful: At each point outside of innermost loops, one of the counters is bounded by a constant. 17:36:03 int-e said 2m 4s ago: HI! 17:36:39 OK, problem 4 solved. 5 more to go. 17:36:59 yold is past participle of yell, right? 17:39:04 ye old 17:40:03 int-e: ah yes. i recall thinking about that constant thing. except that it's almost decidable _exactly_ which constant. at least in some spots. 17:40:32 Now I'm trying to prove that you can simulate a 2-stack machine with a 4-counter machine (or vice versa). P2 is the 2-stack PDA and C4 is the 4-counter Lambek machine. This is my proof: http://i.imgur.com/aNDr8BE.png Any thoughts? 17:40:37 the language of turing machines that halt and write some certain output at the same time is fairly obviously undecidable so your prof probably didn't mean that, but you might want to mention the ambiguity 17:40:52 but there's some branching possible when you return to the beginning of a loop. 17:41:08 Bike: Yeah, I just went ahead and did that. 17:41:47 BlueProtoman: c1 and c2 are stack pointers, c3 and c4 are godel-encoded stacks? makes sense to me. you might be able to reduce the time complexity by using a less dumb coding but you're just being asked about decidability, so 17:42:30 Bike: Strictly speaking, the problem is this: "Compare the running time (i.e., number of steps) of the following equivalent machines: (c) two-stack machine and a four-counter machine." 17:42:46 oh. that's an odd question. 17:43:14 Yeah, I clarified it. He said to just describe what it would take to simulate one with the other. We're given that they're Turing-equivalent, at least. 17:43:23 oh, well alright. 17:43:23 *Yeah, I had the professor clarify it. 17:43:35 you could use a prefix coding or something for the stacks, then. don't need no stinkin primes. 17:43:59 Prefix coding? 17:44:16 a code where no codeword is a prefix of another codeword 17:44:31 like, if your alphabet is AB, you could encode A -> 1, B -> 01, end of stack -> 00 17:44:56 really the prefix isn't necessary, you can just use a block code, eh. 17:45:42 -!- Phantom_Hoover has joined. 17:45:46 pretty sure you can simulate two stacks with 3 counters pretty easily, without even gödel encoding, just base representation. 17:45:57 so say A -> 11, B -> 01, end of stack -> 00, then it's obviously linear to get somewhere on the stack. 17:46:12 because the two stacks can share their "temporary" storage counter 17:46:21 and increment and decrement of the stack pointer are just increment and decrement. 17:46:34 the thing about godel coding is that it makes sense mathematically but it's really fucking dumb practically speaking :V 17:47:00 with gödel encoding you only need 2 counters, of course. 17:47:19 So I'd use Godel encoding for simulating 2 counters with 2 stacks (or vice versa)? 17:48:19 also a stack doesn't need a pointer. you just pop off the top hth 17:48:32 Bike: What if the stacks have more than one unique symbol each? 17:48:34 oh. uh. right 17:48:45 well i guess i gave you two RAMs then 17:48:50 BlueProtoman: what? 17:48:56 no, with 2 stacks you just use them as a turing tape, and use something simpler than gödel. 17:49:05 like, interleaved binary 17:49:52 the prime number stuff is really only needed to get down to 2 counters. 17:49:55 oerjan: apparently there is a separate input stream. 17:50:12 oerjan: that's how we arrived at 4 counters yesterday. 17:50:20 oh? 17:50:32 ok then. 17:50:39 I gave a second counter for the input because, well, the counters themselves give input. 17:50:52 Where else would I encode the input to the 2-stack PDA? 17:50:56 otherwise I agree with 3 of course. 17:51:07 BlueProtoman: initial contents of one of the stacks 17:51:35 welp it's official, never not going to read PDA as PDE 17:51:46 int-e: I can do that? 17:52:03 you can do anything, if only you believe in yourself 17:52:04 BlueProtoman: it depends on your definitions, obviously. 17:53:54 So let's go back to 2 stacks, 2 counters. I can simulate the counters with stacks easily, just have an alphabet of two symbols, and push one symbol only to c1, and one symbol only to c2. I could Godel-encode the input as a really big monosymbol stack. But what about the jump-if-zero instruction? 17:54:17 I seem to recall that you need like 6 cells or so for TC brainfuck <-- SOME OF US HAVE MADE LATER PROGRESS HTH 17:54:35 ^wiki Collatz_function 17:54:46 fizzie!!!!! 17:55:05 http://esolangs.org/wiki/Collatz_function 17:57:30 BlueProtoman: jump-if-zero becomes jump-if-stack-empty? i don't see the problem... 17:58:15 if you don't have stack-empty testing, add a special bottom symbol, i guess. 17:59:30 wait do you need different symbols for c1 and c2, anyhow 17:59:55 oerjan: OK, but where do I jump to? 18:00:05 oerjan: Oh, wait, this becomes the problem of the states, not the stack. 18:00:35 yes, you have nearly the same underlying FSA in both cases, i should think 18:00:48 just a little different interpretation of what the transitions mean 18:01:51 OK, that makes sense. 18:02:10 Each instruction in a CM roughly corresponds to a state in a FSM? 18:02:58 int-e: Jafet: simulating fractran is precisely what that link does for 3-cell bf. 18:03:09 in case any of you haven't seen it yet. 18:03:31 hm Jafet seems idle 18:04:22 BlueProtoman: yeah. 18:05:04 Awesome. Thanks. Three problems to go. 18:05:05 it's just a matter of representation whether you write things down as something assembly like or as a big table of state transitions + commands. 18:05:41 of course your professor presumably has chosen one such representation for you. 18:05:49 So assembly is closer to CS-theoretic abstract machines than, say, Java? 18:06:02 depends on the assembly :P 18:06:15 there's always vax's eval poly instruction 18:06:36 SUBLEQ assembly is pretty darn abstract 18:07:55 @tell Jafet simulating fractran is precisely what http://esolangs.org/wiki/Collatz_function does for 3-cell bf. 18:07:56 Consider it noted. 18:09:28 @tell Jafet and it took some munging to get that to fit. i don't think 2-cell can work. 18:09:28 Consider it noted. 18:14:22 @tell Jafet note that your if ... else if construction can easily require 4 cells if you are not very careful. (and swap needs 3 anyway.) 18:14:23 Consider it noted. 18:32:22 Uh. 18:32:41 No 'got? 18:34:33 -!- fungot has joined. 18:34:51 This is a bit hard with only a tablet thing. 18:35:01 (I'm at a conference, I only took this thing with me.) 18:35:14 Hello from Florence, Italy, anyway. 18:36:40 Buona sera! 18:37:32 There was a bottle of olive oil in the conference bag. 18:38:23 smooth 18:43:32 :O 18:43:39 -!- zzo38 has quit (Remote host closed the connection). 18:44:04 Today I am going to use the Haskell FFI! 18:45:25 finally you get the chance to make ghc segfault! 18:45:35 Oh, I've done that already. 18:45:45 You remember my factorial calculator? 18:45:55 um... 18:46:09 The one written in pure, (<*>), and unsafeCoerce? 18:46:18 oh right 18:46:29 unsafeCoerce? 18:46:44 unsafeCoerce does tend to be risky 18:46:44 I'm oddly curious how that works out 18:47:54 yay, I'm done! foreign import ccall "math.h sin" csin :: CDouble -> CDouble 18:48:01 FireFly: iirc Taneb used it as I in ski calculus, because haskell cannot type the usual tricks used for recursion in ski calculus but unsafeCoerce brutally circumvents the typing 18:48:12 Yeah, that's right 18:48:22 pure is K and (<*>) is S btw 18:48:24 It was incredibly slow, and only worked up to 11 18:48:29 After that it crashed 18:48:37 heh 18:48:57 unsafeCoerce is I 18:49:13 Ah 18:49:31 Oh, that was already said. Should have looked at more than the last four lines. 18:49:39 YES YOU SHOULD 18:50:13 OH, YOU AGREE? 18:50:41 although hm, i don't think you can actually cause a segfault _purely_ with those three, can you? 18:50:57 I think I did when I was working it out 18:51:13 Like, when I had got it wrong 18:51:18 since there would always be corresponding to a lambda term 18:51:22 *it 18:51:59 of course you applied it to something to get numbers didn't you, at that point things can go wrong 18:52:26 * int-e still doesn't know whether one can implement unsafePerformIO with unsafeCoerce and IO's (>>=) in a way that works across platforms and in conjunction with garbage collection 18:53:24 -!- SerialDreamer has joined. 18:53:46 Hello 18:53:59 !welcome SerialDreamer 18:54:01 SerialDreamer: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: . (For the other kind of esoterica, try #esoteric on irc.dal.net.) 18:54:11 why are monads needed for IO? 18:54:13 (the handling of the realWorld# token is slightly magical) 18:54:24 fowl: that's a myth. 18:54:32 they're not needed, they just make it easier 18:54:41 fowl: the monadic IO interface is just convenient 18:54:47 -!- SerialDreamer has left. 18:54:53 fowl: it's just the most convenient pattern to enforce ordering of side effects 18:55:33 the diff is like printf(file, "str") vs cout << "hello " << there ? 18:55:42 cout << being the monandic version 18:56:13 i want to say "wat" but i'm not _entirely_ sure that analogy is nonsense. 18:56:48 it's pretty nonsense 18:56:49 I think that would be more akin to >>= etc vs. do-notation 18:57:23 oerjan, well from what i read monad is like a transformation on a value, ofstream's << doesnt transform the ofstream, but it does return it to allow chaining 18:57:42 it's half a state monad then 18:57:45 i just remembered that if make a burrito joke i will be banned 18:57:46 but it misses the return value. 18:58:07 Bike: oh?! 18:58:38 Bike: Does this apply to just you or is that a general rule? 18:58:46 haskell confuses me so much. im pretty sure its either a big inside joke _or_ haskellers just love self-flagellation 18:58:57 -!- ChanServ has set channel mode: +o oerjan. 18:59:01 What about it confuses you? 18:59:43 well, let's test 18:59:57 fowl: if this is about monads, forget that you ever heard the term and simply use 'do' notation for doing I/O. that should get you pretty far. 19:00:26 why can functions only take one argument? whats the deal with returning functions to get around this, surely there is overhead in creating closures 19:00:55 fowl: ghc doesn't allocate closures if a function is fully applied 19:01:05 it tries to be reasonably smart about this. 19:01:23 fowl: ah but we like to think of it differently. a function takes n arguments, but we can apply it partially, giving only 1,..., up to n of the arguments and leaving the rest for later. 19:01:40 fowl: and indeed ghc also implements it that way. 19:01:47 IO is like a burrito. an IO Int is a burrito full of delicious ints, but we can't eat it "until the haskell program has been reduced", which in the metaphor means who cares. sometimes you want to mash up two burritos, like an IO Int and an IO String, to get you something that lets you eat an int first and then a string. it also so happens that this mashup operation is nice to generalize to other foods, so, we package up these ... 19:01:53 ... operations in an API and call it "monad" because we hate leibniz but love burritos 19:02:15 Bike: this would explain why ghc is so ... large. 19:02:23 -!- oerjan has kicked Bike You forgot the jalapeños. 19:02:29 -!- oerjan has set channel mode: -o oerjan. 19:02:34 -!- Bike has joined. 19:02:43 i really should have eatne lunch before putting that together 19:03:13 Then maybe you wouldn't've forgotten the jalapeños 19:03:54 i'm not gonna eat some fucking shitass pepper 19:05:31 meh 19:05:42 it just seems like more of a badge of honor than a useful thing 19:06:47 it's the Haskell cabal. 19:06:51 man, i don't even use haskell and i can see why you'd generalize this. it's basic design principles. 19:07:27 (*that*'s an inside joke. A weak one, but still.) 19:07:46 int-e: there is no cabal. 19:07:58 oerjan: Cabal then. And cabal-install. 19:08:04 (that's an extremely _old_ inside joke) 19:08:07 whoa, remember that one story by heinlein 19:08:19 oerjan: I may be too young for it. 19:08:23 "If This Goes On—" 19:08:37 int-e: it goes back to the Usenet age. 19:08:53 which one is that? i remember the title 19:08:59 the one with the cabal 19:09:08 there was a prophet or something 19:09:46 oerjan: Ah. I remember usenet, but I wasn't very active there (and really only in its german subpart anyway, where TINC wouldn't make much sense. (I found a wikipedia page on the subject)) 19:10:06 looks like i never read it 19:10:13 TINC. HTH. HAND. 19:10:47 * int-e should know better and write "Usenet" and "subhierarchy". 19:10:56 anyway. 19:11:17 fowl: Haskell supports a single tuple of arguments just fine, but it's pretty convenient to be able to apply a function partially without jumping through hoops. 19:11:50 which currying enables 19:13:34 what does jalapeñoing enable, i wonder. 19:14:06 Python: map(lambda ys: map(f, ys), xs). Haskell: map (map f) xs 19:16:13 hm, does python not have apply 19:16:22 also, haskell supports tuples with more than two elements rather awkwardly. 19:17:06 possibly by design, to discourage using them as ersatz datatypes. 19:17:11 'cos (define (curry f x) (lambda (ys) (apply f (list* x ys)))) and then (map (curry map f) xs) 19:17:29 i guess you can call that a hoop but it's not much of one. 19:17:39 the page i read about haskell tuples looked like its very flimsy, in a tuple of 2 (_ x _) matches the second item, without an error? what if you tried (_ _ x), would it just fail to match? 19:17:57 s/flimsy/forgiving/ 19:18:14 fowl: you've missed the commas 19:18:26 probably 19:18:30 i was drunk too 19:18:30 otherwise it would match the third item 19:18:49 "a tuple of 2"? 19:18:50 oerjan, there is no third item in (1,2) 19:19:01 (_, x, _) wouldn't match (1,2) I'm pretty sure 19:19:03 > (\(_,x,_) -> x) (3,4,5) 19:19:04 4 19:19:09 Huh. 19:19:13 Mostly because they have different types 19:19:13 no, wait, duh. 19:19:14 fowl: in that case neither would match, the pattern needs to have the same number of commas 19:19:16 > (\(_,x,_) -> x) (3,4) 19:19:17 Couldn't match expected type ‘(t0, t, t1)’ 19:19:17 with actual type ‘(t2, t3)’ 19:19:19 right. 19:19:20 > let (_, x, _) = ("compile", "error") in x 19:19:21 Couldn't match expected type ‘(t0, t2, t1)’ 19:19:21 with actual type ‘([GHC.Types.Char], [GHC.Types.Char])’ 19:19:21 Relevant bindings include x :: t2 (bound at :1:9) 19:19:28 let me see if i can find the page i was reading 19:21:05 https://www.fpcomplete.com/school/to-infinity-and-beyond/pick-of-the-week/Simple%20examples#tuples 19:21:35 that uses fst and snd for the 2-tuple, not the first and second it defines 19:21:44 i see that now >_> 19:21:58 -!- AnotherTest has joined. 19:22:01 i was drunk 19:22:04 last night <)< 19:22:16 good 19:22:19 gah fpcomplete is so heavy 19:23:21 oerjan: Hah, i just noticed the same thing when opening the link with my phone. 19:23:30 clearly there should be a ThingYouCanTakeFirstOf typeclass with instances for (,) and (,,) 19:23:57 there is a library for that 19:24:03 of course 19:24:16 > (1,2,3) ^. _1 19:24:17 1 19:25:34 Let's say I have a Turing machine that can only write to a given cell once (including the part of the tape the input's on). I want to prove that this is still Turing-equivalent. If the input is w, and I write to, say, the 2nd cell, next time I want to write to it can I go to the |w| + 2nd cell instead, and the time after that the 2*|w| + 2nd cell, etc.? 19:26:47 that gives you a working area limited to the size of the input, no? 19:27:19 oerjan: The browser tab gets stuck for over a minute when loading that page. 19:27:20 Hm, true... 19:28:33 ion: yeah and then i have to press return in the address line for it to relocate to the actual anchor which has been completely shifted away by all the expanding stuff 19:28:38 what sorcery is ^. 19:28:40 bike: IIRC Idris has sugar where (x, y, z) = (x, (y, z)). That seems nice to me. 19:28:51 myname: lens 19:29:50 Bike: What if every time I write in cell n, I splice in another tape (thus pushing every non-blank symbol to the right one cell, starting from the left; i.e. XXX -> X_XX -> X_X_X) 19:30:21 i'm gonna go see if i can't find a burrito to eat 19:30:49 why stop there, eat a whole burro 19:31:10 I feel a monad joke coming. 19:31:17 Oh, hm, no, that's writing more than once... 19:32:09 mo 'nads mo problems 19:35:25 kmc: do you still eat burritos every day 19:36:58 -!- MindlessDrone has quit (Ping timeout: 240 seconds). 19:37:59 not quite 19:38:12 also feliz cinco de mayo everyone 19:39:19 -!- KingOfKarlsruhe has joined. 19:46:38 bad news i had pizza 19:46:49 someone explain how lenses are like pizza 19:47:59 Well both are round 19:48:20 i think lenses hit your eye in a similar fashion to a big pizza pie, or something along those lines 19:48:24 maybe i've got it wrong 19:48:31 I had too much of them both yesterday 19:48:36 void nsHtml5TreeBuilder::MaybeComplainAboutCharset(...) 19:49:22 420 complain about charset everyday 19:49:38 well i only had a few slices, not the whole round 19:49:51 It's increasingly clear that I don't know enough C to use Haskell's FFI 19:49:54 Bike: the slices you ate are like a lens from the whole pizza 19:49:57 or maybe a traversal 19:50:05 or a fold. did you fold your pizza. 19:50:12 I folded my pizza 19:50:24 But then I had two slices at once 19:50:32 So what is the parallel of a prism in this analogue? 19:50:45 Lasagne 19:50:51 oh. 19:50:52 your puns needs some review. 19:50:56 *-s 19:51:05 -!- MindlessDrone has joined. 19:54:50 what are your FFI troubles Taneb? 19:55:34 -!- Sprocklem has joined. 19:55:58 kmc, basically, I don't know C 19:56:43 http://animalnewyork.com/2014/artists-notebook-ramsey-nasser/ this is neat 19:56:51 ah 19:56:54 knowing C considered useful 19:58:24 I was thinking about something I wanted to do, and thought "this would actually be easier with pointers and mutability" 19:58:40 Already written a good deal of the program in Haskell and don't want to rewrite it 19:59:50 But like, if I implement this queue as a doubly-linked-list I can remove things from the middle really easily 19:59:50 I should learn to actually *use* Haskell for something 20:00:08 prove the four color conjecture with the type system 20:00:45 -!- quintopia has quit (Ping timeout: 252 seconds). 20:00:49 https://github.com/Taneb/webqueues/blob/master/Main.hs is the code I've written so far 20:01:27 getUUID is poorly named and documented 20:02:10 I guess I could make it ContT () ActionM UUID 20:02:41 But that'd make everything else awkward? 20:03:35 define TanebUUIDThing = ContT () ActionM, problem solved 20:03:45 :P 20:05:08 getAction doesn't get an action but rather is the action to be performed on a GET request 20:12:32 Anyway, I'm heading out 20:13:41 -!- b_jonas_ has changed nick to b_jonas. 20:17:33 -!- `^_^v has quit (Ping timeout: 240 seconds). 20:19:21 -!- password2 has quit (Ping timeout: 252 seconds). 20:19:58 -!- nycs has joined. 20:20:05 -!- nycs has changed nick to `^_^v. 20:34:00 hmm Rust sort of has an overloadable assignment operator now: http://static.rust-lang.org/doc/master/std/clone/trait.Clone.html#method.clone_from 20:34:09 bot not really 20:35:31 -!- MindlessDrone has quit (Quit: MindlessDrone). 20:38:02 -!- nucular has quit (Quit: Excess Food). 20:39:13 Let's say I have a language L = {M is a Turing machine that halts on all words w in L(aa*)}, and I need to prove that it's undecidable. Can't I just define a Turing machine T that takes in another Turing machine H, and H's input h, and halts if H doesn't halt and stops if H does? 20:39:39 -!- AnotherTest has quit (Ping timeout: 276 seconds). 20:40:27 -!- ter2 has joined. 20:51:42 -!- Slereah has joined. 20:55:02 -!- Slereah_ has quit (Ping timeout: 258 seconds). 21:01:45 -!- Patashu has joined. 21:08:15 -!- Patashu_ has joined. 21:08:15 -!- Patashu has quit (Disconnected by services). 21:10:26 -!- boily has joined. 21:20:36 -!- Sprocklem has quit (Ping timeout: 276 seconds). 21:23:54 -!- Patashu_ has quit (Ping timeout: 240 seconds). 21:24:04 Taneb: Tanelle. are you asleep? 21:32:36 -!- BlueProtoman has quit (Read error: Connection reset by peer). 21:38:54 -!- BlueProtoman has joined. 21:40:16 kmc: all that's left is to desugar = into clone_from calls? 21:40:35 -!- oerjan has quit (Quit: Narght). 21:44:41 -!- john_metcalf has joined. 21:46:14 -!- contrapumpkin has joined. 21:48:37 yeah I think that will never happen, though, thankfully 21:48:58 I mean we don't insert implicit clone() calls anyway 21:49:06 only POD can be implicitly copied 21:50:01 -!- copumpkin has quit (Ping timeout: 252 seconds). 21:53:03 -!- Sgeo has joined. 21:53:22 it's weird, my toy program in rust went fairly well and I thought rust was great, but now I'm trying to do something real (porting the microkernel I was working on) and rust is complaining a lot about my code and nothing works 21:53:49 -!- `^_^v has quit (Ping timeout: 250 seconds). 21:56:59 but it's great that function-sections etc is working in rust now, I read an old thread that implied it would never ever be supported in rust for silly reasons 21:59:48 oh that's nice 22:02:59 otoh, with LTO I think it's theoretically possible to get better results in a single section 22:10:15 oh, and I found a way to optimize away the stack checks - I just sed 's/ "split-stack"//' on the LLVM output 22:17:12 heh 22:23:30 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.90.1 [Firefox 29.0/20140421221237]). 22:27:31 take refuge in clean living 22:27:50 Omfg I finally got firefox running right again. 22:28:53 It took me embarassingly long to remember that a cranky firefox should be started in safe mode first. 22:29:42 I'm losing it 22:30:12 Was looking at the latest Onion cartoon, and wondering why the turtle (tortoise?) was saying a hand. Turned out to be my cursor 22:30:54 saying a hand? 22:31:51 There was a speech bubble, and I thought there was a pointing hand in it 22:32:28 which finger was the hand pointing? 22:36:19 Index 22:37:24 kmc: is kmc in #rust also you? 22:38:18 yes 22:41:35 I don't see why he wouldn't be 22:41:46 kmc is the only true kmc 22:41:53 `coins 22:41:55 ​catinecoin equaicoin chanocoin cabracoin licecoin pringcoin blocoin .coin parereacoin jumacoin zubanquixcoin sqirrisingcoin cripplithcoin bankingperlcoin rposiscoin liecoin wikacoin cuccoin ted!coin oraocumcoin 22:42:10 those are some good coins 22:42:22 Especially licecoin and liecoin 22:42:47 bankingperlcoin might be the best 22:45:52 Dark blue is hard to read on black 22:46:15 it's light blue here 22:51:34 Not here 22:51:42 is cuccoin hinting at Cukoo Cycle for proof-of-work? 22:51:53 Cuckoo Cycle i mean 22:52:17 `coins --german 20 22:52:19 ​afsignalcoin parzrhythmecoin repartungcoin vorschromgebotstrecoin bilderlandcoin erenblatcoin kursabsetzcoin pensivocoin bammenhanencoin lacederbandecoin panomeräthemincoin modecoin bayentgedrincoin theitercoin reitsdiencoin herungsordnungcoin mannzungcoin seitcoin allycoin ingesorgeco 22:52:54 ingesorgeco? 22:52:57 german words are too long, it got cut off 22:53:08 damn german 22:53:33 boily, I was at the pub 22:53:53 hmm, I should go so I have time to sleep before I get up 23:01:05 Taneb: same thing. 23:03:42 I am pretty sure I was awake 23:07:13 OKAY 23:07:47 -!- BlueProtoman has quit (Quit: Leaving). 23:09:29 `coins --polish 10 23:09:30 ​sankizowałybycoin fularomowiłbycoin uszegijskiewrcoin ukowacoin nieopadorszczcoin lokatnowymcoin obnychizującacoin reptyczamicoin uczarżanecoin przeczkocoin 23:09:44 `coins --finnish 10 23:09:45 ​suomallansacoin huonomillännecoin säilemilleecoin hillannecoin yltymännecoin käsicoin putoimastacoin osuvaltammecoin heijailläcoin miekkaltanicoin 23:15:04 `coins --lojban 10 23:15:05 Unknown option: lojban 23:17:23 -!- MoALTz_ has joined. 23:19:01 boily, did you want to ask me something? 23:19:51 -!- MoALTz has quit (Ping timeout: 252 seconds). 23:24:58 Taneb: not "ask" anything. I just wanted to say that I slept during the day to an Idiosyncratic Schedule Sleep Expert. 23:27:21 Ooooh 23:27:25 Sounds fancy 23:28:56 -!- yorick has quit (Remote host closed the connection). 23:52:29 -!- edwardk has quit (Quit: Computer has gone to sleep.).