00:00:05 oerjan: dear diary 00:00:32 and i really cannot quite decide whether it was an illusion or not 00:01:15 well this was mostly to oklopod, we were talking about northern lights a day before 00:02:00 the nights are swiftly getting lighter up here, so the northern lights are supposed to become invisible around this time or so 00:03:05 back to the logs -> 00:06:28 my raindrops feel a bit boring compared to northern lightning :< 00:07:55 rain is boring. that's what it _does_. 00:08:07 its purpose of existing, almost. 00:08:26 with the occasional flood exception 00:08:43 oh, and rainbows 00:11:11 drizzle 00:11:30 -!- augur has quit (Ping timeout: 252 seconds). 00:16:33 what's a good prime? <-- http://en.wikipedia.org/wiki/Good_prime 00:16:58 * oerjan cackles maniacally 00:17:08 strange name 00:18:09 well with perfect, abundant, friend etc. around, it was only a matter of time 00:18:11 ais523: no more strange than "perfect number" 00:18:19 I should define, say, an "awesome real" 00:18:25 go for it 00:18:34 so long as all instances of it are over 9000 00:18:59 :| 00:19:23 * oerjan regretfully concludes that is probably not a known term 00:23:27 ais523: I'm trying to make it something computers can actually find instances for 00:23:34 so that we can maintain, say, a list of known awesome reals 00:23:40 yes 00:23:50 actually the current interp can barely handle operations on numbers of size 7, but you could easily go to 20 with simple optimizations 00:23:53 either that, or something that's undecidable in general but decidable in specific cases 00:23:58 which would have a similar effect 00:24:27 trying to do something with the riemann zeta function cuz I HEAR IT'S MYSTICAL 00:24:30 i think with hash consing done properly, the basic operations of toi should be at most O(n log n) or thereabouts... 00:24:49 oh hm 00:24:56 -!- ais523 has quit (Remote host closed the connection). 00:25:10 n would be the number of elements of elements of S, or something 00:25:17 http://pastie.org/private/5esc4wqvtk2uzrkqfvpkw series expansion of zeta(1/x)^-x at x=oo 00:25:40 More fun in image form, where it's 7465x37 pixels. 00:25:42 anyway the point would be that no primitive operation looks very deep at the set 00:25:49 It has rather large tops of fractions. 00:25:55 And it's all in a fucking exponent! 00:26:00 The wonders of computers. 00:27:39 it might also be an idea to optimize ([r], i think 00:31:06 * alise wonders if "madame" is correct for this nick's customised gender structure.. <-- mademoiselle, surely? 00:31:14 lol 00:31:30 unless you're customizing as an old married woman 00:33:02 oerjan: i mostly just meant simple optimizations to what i had 00:33:20 "Stuck"; a nice word to describe Britain. 00:33:32 Well; being in Britain. 00:34:02 currently emptying with ([r] takes O(n^2) time or something, i think 00:34:17 the media here (well at least the largest paper) have for recent obvious reasons invented the word "askefast", which means "ash-stuck" and which they use all the f*ing time 00:35:26 oklopod: well it repeats r depth(S) times... 00:35:49 oerjan: Oh, I didn't mean it in that way. 00:35:58 I don't care about Iceland's volcanoes, much. I just don't like this island. 00:36:00 oklopod: oh, you haven't implemented hash consing yet? 00:36:00 currently i have numbers stored as python numbers which are converted to sets and back to numbers at every step 00:36:06 Particularly its government. 00:36:06 alise: i just found it apropos 00:36:10 oerjan: Yes. 00:36:11 i have, but that didn't help, maybe i did it wrong somehow. 00:36:12 oerjan: It is that. 00:36:18 so now i special case numbers 00:36:26 currently in a pretty stupid way 00:36:35 i've had a headache all day 00:37:17 oklopod: as i implied, the thing is that no basic operations should recurse. so comparing two already cached sets should be constant time 00:37:38 pointer comparison, presumably 00:37:39 comparing was constant time 00:37:47 but building numbers was not 00:37:56 yes it was pointer comparison 00:38:03 sort of 00:38:06 including for ordering? 00:38:17 what do you mean? 00:38:37 ordering is nice for building sets quickly, since you can sort the list of subsets 00:38:54 *elements 00:39:14 it doesn't matter _what_ ordering, it's just so you have a unique sorting 00:39:23 oh hmm actually i did have that 00:39:35 ok 00:39:35 but i'm not sure i used it?!? 00:39:41 oh 00:39:44 anyway the point is it was still exponential to build a numbre. 00:39:48 *nombre 00:39:55 ah that would be bad 00:40:04 building a number shouldn't be exponential 00:40:12 now it's constant time 00:40:24 i mean, even without special casing on numbers 00:40:47 why don't you implement this thing if it's so fucking easy :D 00:40:53 well i guess it could still end up O(n^4) or something like that 00:40:59 because i'm lazy, of course 00:41:11 or i could once i get a good night sleep 00:41:52 especially r and a would benefit from using ordering, i guess 00:42:14 hmm why? 00:42:20 oh 00:42:31 since you combine a lot of elements at the end 00:42:55 combine? 00:43:06 union 00:43:19 r is taking the union of all subsets 00:43:34 and a does that + one more element 00:43:44 *of all elements 00:43:44 so you'd have like a merge 00:43:52 of all subsets 00:44:00 I'm having a hard time defining an awesome real :( 00:44:18 all the awesome reals have been invented already 00:44:46 go for it, alise 00:44:55 are the awesome reals dense on R 00:45:00 *in 00:45:03 I'm trying! But all the instances must be above 9000. 00:45:07 oh 00:45:08 Preferably there should be infinitely many of them. 00:45:09 then i guess not 00:45:15 oklopod: ais dictated. 00:45:20 Also the equation must be suitably long and ridiculous. 00:45:25 or otherwise you have one crazy ass topology 00:45:34 I do have one crazy ass-topology 00:46:32 only one? 00:46:52 well. many 00:46:53 to be crazy, an ass-topology must have at least two holes 00:47:09 just so you know 00:47:15 alise: there's a note to you in the logs from this week, btw 00:47:17 well i guess none could also work 00:47:39 pineapple: Do you know what day? 00:47:47 alise: oh and we were supposed to remind you about the link you put in the topic just before you left 00:47:49 monday i think, although grep by your name 00:47:58 oerjan: yeah i found that 00:47:58 whatever it was ;D 00:47:59 pineapple: no downloaded logs 00:48:18 umm... 00:48:34 i _think_ it was monday 00:48:44 but i don't remmeber 00:48:45 04:52:12 alise for the logs: the iPhone developer contract is getting even crazier, see http://www.wired.com/epicenter/2010/04/with-new-developer-agreement-apple-unlevels-the-iad-playing-field/ 00:48:46 was that it? 00:48:49 yes 00:49:13 alise: did you find that interesting 00:49:15 ok, thanks 00:49:16 oklopod: no 00:49:33 alise: did i tell you about toi yet ?!? 00:49:38 oklopod: OMG# 00:49:51 HI PINEAPPLE WANNA HEAR SOMETHING INTERESTING 00:49:58 i should really stop this 00:50:28 did you know that (Z, .-., Pos) where Pos(x) = x > 0 expresses the relation greater-than?? 00:50:32 AMAZING AMIRITE 00:50:49 i did not 00:51:15 because i don't know what that means 00:52:00 well unless it means "use the things in this tuple in a sensible way" 00:52:14 we say (S,F,T) expresses a binary relation R on A where F : A -> A -> S and T is an unary relation on S, if 00:52:26 T (Fxy) <=> xRy 00:52:31 we say this for no particular reason 00:53:14 parti cular 00:55:02 a partyious cular 00:55:45 i wanna make another esolang 00:56:14 unfortunately i'm out of awesome ideas 00:56:24 maybe i could base a language on awesome reals 00:56:44 i'm gonna go away now 00:57:18 oklopod: make an esolang based on type theory 00:57:21 or, you know, awesome reals 00:57:26 make a real computation language 00:57:31 uncomputable, so just approximate! 00:58:36 yes a bit of topology and ergodic theory 00:59:36 maybe i'll do real computation 01:00:12 oklopod: how can you /not/ implement somethingcalled the blum-shub-smale machine 01:00:39 *something called 01:00:59 http://en.wikipedia.org/wiki/Blum-Shub-Smale_machine ;; only three operations so clearly the perfect tarpit 01:03:40 16:18:15 Gregor: Well, yeah. I think if the President gave a blowjob, the entire right wing would just have a heart attack and die. 01:03:43 Please make this happen quickly. 01:04:02 alise: Hah. 01:04:23 What if the President performed autofellatio? 01:04:44 He'd be giving /and/ receiving a blowjob; he'd be Lewinsky and Clinton simultaneously, in a sort of quantum construction. 01:04:47 I do believe their heads would asplode. 01:05:26 I should note, though: the key to this is the President not being a Republican. 01:05:46 If he's a Republican, they will gladly back him banning heterosexuality. 01:05:56 (there's a funny thought) 01:09:35 -!- Rugxulo has joined. 01:09:52 alise: Vi vejnas unan Interneton. 01:09:57 uh oh 01:09:58 s/Interneton/Interreton/ 01:10:03 phew 01:10:08 arch/x86/kernel/head_32.S:64: Warning: shift count out of range (32 is not between 0 and 31) 01:10:22 you can't shift by 32 (anymore), that would be a effectively a NOP 01:10:41 8086 allowed it, but 386+ masks to lower five bits (e.g. 32 or less value) 01:10:44 which is why he quoted it. 01:11:29 BinUtils' GAS does allow ".arch" nowadays, presumably to tighten up such sub-architectural differences 01:15:08 Rugxulo, that was from the kernel 01:15:12 which was pretty strange 01:15:22 night → 01:24:18 hmmm, awib don't work for me 01:24:53 o 01:26:22 " alise: Vi vejnas unan Interneton." " uh oh" " s/Interneton/Interreton/" " phew" 01:26:28 classic alise 01:26:56 am i having a dream? 01:27:09 nope 01:27:21 Nope, you're not. 01:27:29 But don't take my word for it. 01:27:36 why not? 01:27:52 Because you don't know whether you're dreaming or not, meaning I'm not a reliable source. 01:28:13 Try cutting the mushroom; if anything around is orange, that will heal the tortilla wounds. 01:28:25 If that made any sense, you're dreaming. 01:28:47 but my brain doesn't lie to me 01:29:01 Uh oh, we've lost him. 01:29:05 * uorygl mourns. 01:29:20 well it dunnot! 01:29:30 good brain mine one 01:30:24 Mourning the lost is more difficult when they're still standing around and saying stuff. 01:30:32 The walking dead. 01:30:53 yes that's the worst kind of death 01:31:25 * uorygl builds a wall in front of oklopod. 01:31:34 * uorygl builds a wall to the left of oklopod. 01:31:42 * uorygl builds a wall to the right of oklopod. 01:31:49 * uorygl builds a wall behind oklopod. 01:31:57 There, now we can't see you, so we can mourn properly. 01:31:59 :o 01:32:06 \o/ 01:32:06 | 01:32:06 >\ 01:32:08 * oerjan sneaks oklopod out through an underground tunnel 01:32:13 stuff -> 01:32:14 yay 01:32:16 -> 01:32:35 Darn, I knew I should have built a wall below oklopod and above oklopod. 01:32:42 Now I have to start all over. 01:32:45 * Rugxulo uses the wand of digging to go through the wall ... an orc wizard appears! 01:33:32 * uorygl builds a wall in front of oklopod and builds a wall to the left of oklopod and builds a wall to the right of oklopod and builds a wall behind oklopod and builds a wall under oklopod and builds a wall above oklopod. 01:33:52 * oerjan uses zzo38's Zwischenzug on the orc wizard 01:34:04 uorygl: oklopod already left, pay attention 01:34:17 I'm building a wall around his new position. 01:34:23 * Rugxulo gives oerjan a scroll of recharging but needs scroll of identify to understand "Zwischenzug" 01:35:05 * Rugxulo uses a wand of teleportation to secretly follow from far away ... 01:35:10 Rugxulo: i think you'll have to ask zzo38 for that, at your own risk 01:35:31 * Rugxulo sacrifices zzo38 to Trog ... Trog is greatly pleased 01:36:26 would you like fries with that 01:36:45 * Rugxulo eats a snozzcumber 01:36:55 * Rugxulo thought it was bland 01:37:43 * oerjan throws a critical failure on his Recognize Reference skill 01:39:37 * oerjan uses one google point to reroll 01:43:35 http://crawl.develz.org ;-) 01:55:52 "Real" is such a bad name for the real numbers. 01:56:08 Considering how many of them are quite thoroughly not real, and in fact their whole existence can be questioned. 01:59:06 In what sense can any mathematical construct be said to exist? 01:59:13 They're certainly no *more* real than, say, the natural numbers. 01:59:34 Or even the natural numbers mod a convenient power of 2. 01:59:39 a hamster is something that hams 01:59:59 Ah but the reals are much, much more questionable than the naturals. 02:00:12 Even if you accept reals as a whole, some things are as unreal as you can get -- in fact, bordering on the impossible. 02:00:25 The reals are a fairly non-obvious construction, yes. 02:00:31 For instance, http://en.wikipedia.org/wiki/Chaitin%27s_constant, the probability that a random program will halt in a given language. 02:00:42 The non-computable reals in particular make you go "WTF". 02:00:46 Totally uncomputable; lets you solve the halting problem; and yet still, a bona-fide real. 02:00:49 And then consider this. 02:00:51 *hamsts 02:01:00 Almost all reals -- mathematically -- are uncomputable. 02:01:10 o rly? (couldn't resist) 02:01:13 So really there are not many reals that are real, and many reals that are not real at all! 02:01:31 "Almost all"? Hmm. ... Actually, yeah. 02:01:39 oklopod: is http://www.vjn.fi/oklopol/toi.py your current implementation? 02:01:45 almost all with the lebesque measure 02:01:47 oerjan: yes 02:01:48 Any non-computable real plus a computable real is itself non-computable... 02:02:07 pikhq: it's been proved yeah 02:02:07 * Sgeo reviews an app on the Market 02:02:09 i think i uploaded the most recentest of changes 02:02:11 Which I *think* makes the set of non-computable reals larger than the set of computable reals. 02:02:18 it is 02:02:22 the computable reals are countable 02:02:24 Mmkay then. 02:02:27 computable = computable by a turing machine 02:02:32 ... Oh, *duh*. 02:02:36 consider a brainfuck algorithm as a list of naturals mod 8 02:02:39 Didn't show up on AppBrain 02:02:40 sum up appropriately 02:02:41 Q.E.D. 02:02:42 The computable reals have a Godel numbering. 02:02:44 yeah 02:03:04 the computable reals are harder to prove results about though :( 02:03:13 like the cauchy-sequence definition doesn't even let you prove the trichotomy of the reals 02:03:17 a zero real times a nonzero real is a zero real, this makes the zero reals a larger set than the nonzero reals 02:03:18 Yeah, but they most *certainly* exist. 02:03:24 definitely 02:03:26 as real as the naturals 02:03:39 You can point at the programs that produce them. "See, there it is." 02:03:43 and i'm pretty strong on my faith in naturals 02:03:48 though it /has/ wavered once or twice 02:04:18 also constructivism has greener grass 02:04:22 it's more satisfying 02:04:23 Whereas the non-computable reals are pretty much an arbitrary, abstract construct, which exists pretty much because the definition was easy (near as I can tell). 02:04:32 classical bozos, they define a bunch of constraints that their reals have to satisfy 02:04:36 and say "there's only one. that's ours" 02:04:38 you don't see it, feel it 02:04:43 it's all symbol manipulation 02:04:52 us constructivsts get actual concrete code and functions we can compute with 02:04:57 actual, well, constructions 02:05:27 I just care about what lets me do interesting things, myself. :P 02:05:41 oklopod: it looks like you are reimplementing the one thing which iirc python already does _extremely_ well built in, namely hash table dictionaries 02:06:08 constructivism is so goddamn boring 02:06:16 oklopod: yeah well so's your mom 02:06:18 oerjan: i'm not using the hash thingie 02:06:28 pikhq: btw if you disagree with the uncomputable reals then you're half-way to rejecting forall P, P \/ ~P anyway 02:06:46 alise: I don't care if something's an abstract construct. 02:06:52 I'm just noting that it is one. ;) 02:07:05 since the computer-age rejection of that is that, since propositions:types and proofs:values, 02:07:06 forall P, P \/ ~P 02:07:18 would have to be a decision procedure that can formulate a proof or disproof of any proposition you hand it! 02:07:49 and indeed in some cases we can prove that some propositions cannot be proved or disproved... and then the law of the excluded middle conjurs up one anyway! (not that we know /which/, but if we know it cannot prove /either/...) 02:08:21 i'm not a constructivist in that i reject abstract constructions... everything's abstract 02:08:41 I just don't accept magical decision procedures :p 02:08:44 i would've thunk p v ~p just says in any model of the system one is true, if we can't prove either then it depends on the model which one is true 02:08:59 yeah but the curry-howard interpretation is 02:09:09 (P:Prop) -> P \/ ~P 02:09:11 where ~P = P -> Void 02:09:17 and \/ is just a disjoint union type 02:09:19 i.e. Either 02:09:23 now if P:Prop 02:09:29 then p:P means "p is a proof of P" 02:09:54 oklopod: oh. 02:09:54 so L.E.M. takes an arbitrary proposition -- even a statement independent of the axioms -- and conjurs up "either a proof or a disproof" 02:10:02 we can't inspect which it is computationally; but that's the sematncis 02:10:03 *semantics 02:10:21 oerjan: and the code is not exactly my best work, i just wanted to quickly hack some half-working shit up 02:10:34 I'm pretty sure that p \/ ~p just implies that the veracity of p is a Bool, not True | False | FileNotFound or some shit. :P 02:10:35 ...and then i've hacked optimizations in on top of each other all day 02:10:47 pikhq: yeah but this is a fundamental misunderstanding of the entirety of curry howard 02:10:51 it's got nothing to do with booleans at all 02:10:55 which isn't a very fruitful approach always 02:11:06 relating logic to booleans is presupposing the law of the excluded middle which is the whole thing i'm arguing against 02:11:18 -!- Rugxulo has quit (Quit: gone back to Befunge ...). 02:11:43 oklopod: if i implement toi will you love me 02:11:47 Yes, well, fuck you and your system of logic that I can't reason about. 02:11:50 thought so; implementing 02:11:55 pikhq: <3 02:12:01 type theory is here when you want it 02:12:19 Screw that, we're forcing all of math into C. 02:12:29 the problem with constructivism is it's not at all interesting 02:12:29 If it doesn't fit into the system memory it doesn't exist. 02:12:34 it's really boring and stupid 02:12:43 i hate it 02:12:47 and i hate everyone around it 02:12:51 And for the sake of pain, 8-bit system. 02:13:10 in fact i'm gonna convert to destructivism 02:13:23 oklopod: You are become Shiva? 02:13:32 alise: yes, i will love you despite your constructivist doctrine 02:13:54 pikhq: not just my mathlosophy 02:13:58 *no 02:14:14 oerjan: i didn't know you actually read code 02:14:22 i figured mathematicians aren't allowed 02:15:01 alise: just kidding though, constructivism is kind of sexy too 02:15:16 * alise realises that 02:15:19 data Set = Empty -- ∅ 02:15:20 | Cons Set Set -- X ∪ {t | t ∈ s, s ∈ S} 02:15:22 needs a singleton :P 02:15:49 data Set = Empty -- ∅ 02:15:49 | Singleton Set -- {A} 02:15:49 | Cons Set Set -- A ∪ {t | t ∈ s, s ∈ B} 02:15:50 that's better 02:15:56 hey it's worth a try :P 02:16:11 succS :: Set -> Set 02:16:11 succS n = Cons n (Singleton (Singleton n)) 02:16:19 oklopod: why exactly do you use ordinals? 02:16:20 is it ready soon? 02:16:49 mostly because they're exponential in size i guess 02:16:54 The Android browser feels jumpy 02:16:57 von neumanns 02:17:27 oklopod: yeah but do you actually use any infiniteness? 02:17:34 no 02:18:42 right 02:18:56 * Sgeo hopes he doesn't fill up his SD card too soon 02:20:52 what's the trichotomy of the reals? 02:21:06 forall n, n<0 \/ n=0 \/ n>0 02:21:08 exactly one is true 02:21:15 substitute 0 for arbitrary m, etc. 02:21:32 or at least fax says you can't prove it on the cauchy sequence computable reals 02:21:49 oklopod: you will be pleased to know that my set representation works 02:21:59 yeah because a sequence could -> 0 without there being a proof of it 02:22:01 any more lovely infrastructure before the boring lang? 02:22:14 oerjan: yeah 02:22:38 alise: now express omega_1 in your representation! 02:22:54 see oklopod promised me it was all finite :P 02:23:01 Oh. 02:23:25 let s r = Cons r (s (succO r)) in s zeroO 02:23:26 that works though 02:23:28 What's the smallest ordinal you can't express? 02:23:37 enumeration doesn't yield anything though :P 02:23:37 alise: i notice you are not using hash consing (somewhat tricky in haskell i should think) so you'll have the same exponential blowup problem 02:23:48 oerjan: well... foo to you 02:23:57 maybe i should just do it as {elem:true, ...} in python 02:23:59 that would work :P 02:24:16 python has sets 02:24:18 too 02:24:26 yeah 02:24:29 they're represented by that 02:24:47 well if that's so then i'll complain about you writing true as True 02:24:49 err 02:24:51 the other way around 02:25:10 i'm almost tempted to write my own version, but i would have to download python and relearn some things first... 02:25:13 and if you say both are okay in the new python then i'll complain about your mother 02:25:33 yay competition 02:26:11 well okay oerjan can't really be competition since he either does nothing or owns me completely 02:26:18 :D 02:26:58 sdfjsdfsdf python's add method of sets is destructive 02:27:15 yeah there's a separate immutable set 02:27:33 hmm could mutability work 02:27:35 I mean S is global 02:27:41 i used it at first 02:27:56 but had to change it when i started sharing 02:28:10 "Do not manipulate this application while driving. Traffic data is not real-time, and directions may be wrong, dangerous, prohibited, or involve ferries." 02:28:23 sharing, just like a polygamist 02:28:30 oklopod: so what did you just use immutable sets 02:28:43 no 02:28:49 meh, you still have to union with a singleton with frozenset 02:28:51 i used something really weird 02:29:01 i think i now use lists 02:29:41 heh 02:29:46 sets have to contain hashable things 02:29:48 sets aren't hashable 02:29:51 yes 02:29:54 need frozenset 02:30:11 i think that's why i didn't use sets, didn't want to use frozensets 02:30:16 because their name sounds scare 02:30:18 *y 02:32:26 def a(S): return S.union(frozenset(S)) 02:32:29 can't be this easy can it 02:32:48 that's a, yes 02:32:49 nope it isn't 02:32:59 why not? 02:33:08 cuz it returns wrong results. 02:33:28 oh well umm 02:33:34 yes i suppose it makes absolutely no sense 02:33:53 you need to go one deeper 02:34:11 but it is definitely that simple 02:34:26 it's 0 on simpleness scale 02:35:27 or is it hardness scale 02:38:13 the only nontrivial part of implementing the thing is implementing the sets and numbers 02:38:14 having to detect ordinals is way too boring 02:38:25 [[# 'E' does not add the error set to S. ]] i see 02:39:41 -!- Asztal has quit (Ping timeout: 258 seconds). 02:42:32 oklopod: what does (A{B do 02:42:38 seeing as only brackets must be balanced 02:42:40 (AB}? 02:48:53 that should be (A{B} 02:49:18 ...oh 02:52:09 HA HA HA 02:52:16 i should make my own wonderful language 02:52:22 based on the natural numbers 02:52:37 like the whole thing is an induction over an infinite amount of natural variables 02:57:03 the problem is every language after this day will just be a bad copy of toi 02:57:34 oh dear it's like 5 am 02:57:59 who cares 02:58:04 you're too interesting to leave 02:58:06 <- this dude 02:58:24 oklopod: what 02:58:40 hmm how about a language where the computation is solving an infinite number of polynomials... 02:59:21 by hilbert's basis theorem any infinite set of diophantine equations is equivalent to its finite subset 02:59:39 oh 02:59:46 you're a constructivist, right 02:59:48 then nm 03:00:04 bastard :) 03:00:23 constructivism =/= finitism 03:00:36 yeah but i meant 03:00:42 hmm 03:00:42 so constructivism allows for infinity? 03:00:49 what i meant is it requires aoc afaik 03:00:50 define infinity 03:00:53 oklopod: sure 03:00:56 constructivists accept that 03:01:12 i haven't actually read the proof, i've just bumped into the theorem when it's been used 03:01:12 oklopod: it's probably a much less radical position than you imagine. 03:01:41 oklopod: for every R : A -> B -> Prop, (forall a, exists b, R a b) -> (exists f : A ->B, forall a, R a (f a)) 03:01:54 since the exists is already a bundling of a value, it's basically just unwrapping the exists and returning the value 03:01:58 *oklopod: for every R : A -> B -> Prop, (forall a, exists b, R a b) -> (exists f : A -> B, forall a, R a (f a)) 03:01:59 missed a space 03:02:03 the AoC is provable in type theory. 03:02:32 so i hear 03:03:04 so there. 03:03:22 i guess you win this round, constructivist bear 03:05:18 oklopod: implement http://en.wikipedia.org/wiki/Blum-Shub-Smale_machine 03:05:19 nao! 03:09:31 nnno! 03:10:03 :( 03:10:16 you're made of upset. 03:10:58 oklopod: write a toi selfinterp 03:11:02 actually shouldn't be so hard. 03:38:39 there is ~no documentation of plain tex without latex 03:41:40 Sure there is. 03:42:58 The TeXbook, by Donald Knuth. 03:43:27 -!- Alex3012 has joined. 03:44:02 yeah yeah 03:44:06 if it's not online easily it doesn't exist 03:44:27 http://www.ctan.org/tex-archive/systems/knuth/dist/tex/texbook.tex 03:45:12 heh it is so primitive you even have to do all sizings yorsuelf 03:45:25 -!- Alex3012 has quit (Read error: Connection reset by peer). 03:46:11 i kinda like it though 03:46:13 latex is so heavy 03:46:47 Yeah, LaTeX is a pretty meaty set of macros. 03:47:03 and if it's good enough for knuth.. 03:47:53 \loop\iftrue 03:47:54 \errmessage{This manual is copyrighted and should not be TeXed}\repeat 03:47:57 that's some amazing copyright protection 03:48:12 Quite. 03:48:33 removed, but then 03:48:35 % Macros for The TeXbook=> 03:48:39 it wants the what now 03:48:52 Oh. Sorry. ftp://tug.ctan.org/pub/tex-archive/systems/knuth/dist/lib/manmac.tex 03:49:02 It comes with its own macro set. XD 03:50:11 % Macros for The TeXbook=>manmac.tex 03:50:12 => 03:50:12 \catcode`@=11 % borrow the private macros of PLAIN (with care)=> 03:50:13 WHAT DO I DO :P 03:50:23 oh god it's running thorugh every line with me 03:50:54 should i just cat the files together 03:51:01 I dunno. 03:53:11 Raise your hand if you knew that Android had built-in MIDI support 03:53:16 * Sgeo did not 03:54:02 jane@jane-desktop:~/texbook$ pdftex -interaction batchmode texbook.tex 03:54:03 This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) 03:54:03 %&-line parsing enabled. 03:54:03 entering extended mode 03:54:03 % The log file now contains lines like these; I copied them=> 03:54:04 whattt 03:54:54 Output written on texbook.dvi (90 pages, 300556 bytes). 03:54:56 no idea what i did wrong 03:56:35 We all oughta rewrite typesetting from scratch. 03:57:39 -!- Alex3012_ has joined. 03:58:33 Output written on texbook.pdf (408 pages, 1822989 bytes). 03:58:33 Sounds about right 03:58:48 nope 03:58:54 Oh well 04:02:02 So, failing the TeXbook, I must unreliably google about. 04:05:19 pikhq: What? It seems that you even have to set paragraph spacing yourself. 04:07:22 \def\\{\par\hangindent 20pt\noindent\ignorespaces} 04:07:24 --Knuth's CV 04:07:32 Honestly. 04:08:43 Mind, it is pretty: http://www-cs-faculty.stanford.edu/~knuth/vita.pdf 04:20:34 -!- augur has joined. 04:36:17 4:35; start bugging me to embed myself soon. 04:39:51 alise: go to bed! 04:39:56 no! 04:39:59 (keep going) 04:40:01 but thou must! 04:40:19 no wait, don't google that 04:40:48 and _certainly_ don't click on the first google hit. go to bed instead. 04:41:09 and so the google machine fires up 04:41:13 FUCK 04:41:18 MWAHAHA 04:41:43 i'm going to cry now 04:42:25 just close the tab. how hard can it be? 04:43:28 yeah i did so 04:43:31 i'm just hardcore like that 04:43:34 wow 04:43:44 clicked one or two links, you know, got bored, closed all the tabs 04:43:50 now i just need to follow my own advice. except the going to bed part. 04:43:51 nothing special huh eh 04:44:24 it just proves you're really an alien. 04:44:41 The Brainfuck for Android app only allocates 300 bytes for the array 04:46:07 lol 04:46:13 Sgeo: so, your android verdict? 04:46:42 completely worthless for your enterprise brainfuck solutions 04:47:50 Not the best out-of-the-box experience, especially keyboardwise. Pinch-to-zoom in the browser has a "feature" that I really don't like, that makes the browser seem jumpy. 04:48:20 With the N1, you have to be very careful that your palm doesn't end up resting on the touchscreen, but that's presumably due to multitouch issues 04:48:50 It should be noted that my only basis for comparision is having typed on an iPhone keyboard yesterday. 04:49:05 Apart from that? 04:49:34 The Music app seems to have strange BACK semantics 04:49:49 Apart from that? 04:49:58 You want me to say good things/ 04:51:31 I'm wondering if there are any good things. 04:52:09 I can browse the web on it. I can make phone calls from it [if I had a SIM card in it]. Things like the calendar app don't waste screen space on a Menu button. 04:52:24 Apart from that, I'd need to have tried another smartphone in order to be able to make any comparision 04:52:24 So it's good, right? 04:52:27 On the whole? 04:52:48 alise, you'd need to try it 04:52:54 kay :P 04:53:09 Either that, or I need to really try an iPhone 04:53:42 Oh, I liked how the Reddit app integrates with, say, apps that let you share things. You can share through Reddit 04:53:57 Not that the reddit app is that great [it's a bit crashy] 04:55:35 Can Last.fm scrobbers work on iPhone? Somehow, I doubt it 04:55:56 [I'm assuming scrobber == app that reports to last.fm what music you're listening to] 04:56:37 http://github.com/talklittle/reddit-is-fun/issues#issue/43 bug report on Reddit app 05:01:04 -!- Oranjer has left (?). 05:04:17 5:03; now I've reached my threshold of snaity. 05:07:28 `define snaity 05:07:30 No output. 05:07:52 YOU BASTARD YOU ARE MAKING UP WORDS 05:07:58 ALSO, GO TO BED 05:09:21 wow, snaity 05:09:26 my new <3ourite word 05:09:30 <3 pronounced fav 05:09:56 NOW YOU ARE MAKING UP PRONUNCIATIONS 05:10:46 i'm hysterically accurate 05:11:40 VADE IN FULCRUM 05:13:08 Another bad point: The trackball FEELS as though a minute movement should equal one movement of the cursor, but it doesn't 05:13:16 [mild point, really] 05:13:41 5:13 it is light outside 05:13:42 Would probably be unusable 05:13:46 alise, go to sleep! 05:13:48 where is my motivation at 05:13:51 ok what do i need to do... many things 05:14:00 ok ok there are many steps involved in that process 05:14:03 firstly, i will close curtains 05:14:25 FAILURE 05:14:30 curtain turns out to actually be blanket 05:14:35 * alise hangs up blanket 05:14:56 i'll do that last 05:15:36 so i 05:15:38 i 05:15:41 i guess i should go 05:15:53 but... you know, I'll stay logged in until I actually go to bed >_> 05:16:08 but let this be bye until tomorrow! 05:16:46 sweet dreams 05:19:45 -!- augur has quit (Ping timeout: 265 seconds). 05:24:11 -!- alise has quit (Remote host closed the connection). 05:25:05 hi e veryone 05:25:15 i shouod sleep soon¨ 05:25:17 ö 05:28:25 slëëp 05:28:50 ïs rëgülärlÿ rëcömmëndëd 05:29:01 yrs 05:29:03 ->> 05:37:40 -!- augur has joined. 05:58:06 Today, I wrote a PDF viewer :P 06:05:19 * oerjan assumes there are some qualifications 06:05:30 besides genius, that is 06:27:53 -!- oerjan has quit (Quit: leaving). 06:29:41 Gregor: Oh? 06:30:50 pikhq: http://www.mobileread.com/forums/attachment.php?attachmentid=50406&d=1272083550 06:34:33 Not bad. I presume you linked against a PDF rendering library? 06:34:43 Seems like writing a full PDF implementation would take a *bit* more than a day. 06:35:13 -!- augur has quit (Ping timeout: 240 seconds). 06:42:25 * Gregor reappears. 06:42:29 pikhq: poppler 06:43:00 Yup. 06:43:03 pikhq: It's just meant to pseudo-reflow by cutting up two-column documents such that you can read a page in two half-page views instead of four. 06:43:04 Figured. 06:43:10 Mmmm. 06:43:22 Which is important when you're on an eInk-based reader :P 06:53:16 -!- augur has joined. 07:10:10 -!- coppro has quit (Ping timeout: 248 seconds). 07:13:53 -!- kar8nga has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:03:26 Gregor: if you were on a mac, you could write a million in a day 08:03:26 :D 08:05:31 augur: Or he could just install GNUstep and write the same code. 08:05:46 ;) 08:17:21 -!- augur has quit (Remote host closed the connection). 08:17:45 -!- augur has joined. 08:25:44 -!- jcp has quit (Read error: Operation timed out). 08:36:44 -!- kar8nga has quit (Remote host closed the connection). 09:53:29 -!- Rugxulo has joined. 10:15:38 new BEFI.COM, faster but still only 1014 bytes -> http://board.flatassembler.net/topic.php?t=10810 10:17:11 -!- MizardX has quit (Ping timeout: 276 seconds). 10:19:04 * Rugxulo is trying in vain to write a Befunge93 interpreter in REXX 10:19:17 I'm too dumb, I guess, too inexperienced 10:38:53 weird quirk, fixed it, now for the rest of the bugs and lacks :-/ 10:40:03 -!- oklopod has quit (Ping timeout: 246 seconds). 10:43:46 -!- tombom has joined. 10:58:41 -!- oklopod has joined. 11:03:41 -!- Rugxulo has quit (Quit: ERC Version 5.3 (IRC client for Emacs)). 11:15:42 -!- kar8nga has joined. 11:34:01 -!- FireFly has joined. 12:07:44 -!- nooga has joined. 12:31:46 -!- Asztal has joined. 12:37:48 -!- tombom has quit (Quit: Leaving). 13:57:02 -!- Alex3012_ has quit (Read error: Connection reset by peer). 14:00:00 -!- Alex3012_ has joined. 14:24:31 Kokous jatkuu, mutta älä välitä aikaa 14:30:18 En halua ihmisten elää, tiedän, Internet saippua! 14:31:12 I'm having trouble untranslating the latter 14:32:57 Joten, kaikki kanit melko emotionaalinen kidutus - kyllä! 14:37:15 something about internet soap? 14:38:15 Yeah, a bad translation of "I don't want anybody in real life knowing I have soap from the Internet!". 14:38:19 Using a special bad translator. 14:39:11 Darn, I thought the soap was just something random 14:39:41 Raskauteen liittyvät tulkinnat ultraääni raskaana presidentti Oklahoma. 14:39:44 Hence the trouble; I was trying to figure out what could cause it 14:40:03 I would appreciate these more if I actually know Finnish. 14:40:08 s/know/knew/ 14:40:09 What're you using, intertran or something? :-P 14:40:18 Something like that, yes! 14:40:22 http://www.conveythis.com/translation.php 14:40:43 -!- aschueler has quit (Ping timeout: 240 seconds). 14:41:51 -!- Alex3012_ has quit (Read error: Connection reset by peer). 14:42:04 Doesn't allow setting the source lang, meh 14:42:35 You can always enter something in Finnish and wait for it to get translated from Finnish, and then put the resulting English back in. 14:42:43 And see what the Finnish is. 14:42:45 Except that it detected my Finnish as Afrikaans :-P 14:42:53 -!- aschueler has joined. 14:43:08 Or does it always start from there 14:43:14 Yeah, it does. 14:43:25 Anyway, that uses Google's translator, which is fine 14:43:54 Bad Translator!: "I am happy about this" -> "Olen erittäin onnellinen." 14:44:03 InterTran: "I am happy about this" -> "I-KIRJAIN olen iloinen jokseenkin nyt kuluva." 14:44:56 Huh, apparently Google Translate thinks that the Portuguese word "Oklahoma" means Texas. 14:45:00 BT turned it into en:"I am very happy", InterTran came up with en:"THE LETTER I I am happy somewhat now ongoing" 14:45:39 I love how InterTran turns "I" into "THE LETTER I" 14:46:09 Since, you know, that's what I usually means. 14:46:30 Sherman, Texas, 24 raskaana olevia työntekijöitä. 14:46:48 Except that it usually doesn't mean that. 14:47:16 And never when followed by "am". 14:47:56 Devil ja slithy Zhimbl pehmeä ja mieto kylmä-kuin: Misebiles borogoves outgrabe nyt ja rotilla. 14:57:41 For what that particular translation sounds like, there are four possibly more reasonable ones at http://fi.wikipedia.org/wiki/Pekoraali 15:03:20 try using InterTran to translate a page from English to English. It's amusing. 15:11:46 -!- aschuele1 has joined. 15:13:15 -!- aschueler has quit (Ping timeout: 276 seconds). 15:20:27 -!- Alex3012_ has joined. 15:25:57 -!- cheater2 has quit (Ping timeout: 264 seconds). 15:31:56 -!- cheater2 has joined. 16:05:06 -!- nooga has quit (Ping timeout: 248 seconds). 16:18:15 -!- nooga has joined. 16:19:44 -!- pikhq has quit (Read error: Connection reset by peer). 16:24:09 ooooo, that's the goddamn scottish hangover i suppose 16:24:47 -!- pikhq has joined. 16:53:59 -!- BeholdMyGlory has joined. 17:06:44 -!- Sgeo has quit (Ping timeout: 245 seconds). 17:06:45 -!- Sgeo_ has joined. 17:13:13 -!- anil has joined. 17:13:20 -!- anil has quit (Client Quit). 17:22:08 -!- Sgeo has joined. 17:22:59 -!- Sgeo_ has quit (Ping timeout: 245 seconds). 17:41:30 -!- alise has joined. 17:46:18 Amazing unamazing. 17:47:02 I had a dream where I was playing with an iPad 17:47:06 it was a lot smaller than I imagined 17:47:15 and the aspect ratio made it either too tall to be useful or too wide 17:47:22 nothing looked quite as impressive as it should 17:47:26 these are the kind of dreams i get 17:47:34 ones about the mediocrity of hyped technology 17:48:33 I wish I could dream about the awesomeness of unhyped unpopular technology :-( 17:48:45 hehe yeah 17:48:58 ais523 log reading: now Apple are denying apps that don't have enough features; http://yourhead.tumblr.com/post/539227006/apple-wont-give-you-the-time-of-day 17:49:05 this is the most hilarious slippery slope ever 17:49:21 soon you'll only be able to submit an app if Jobs himself can't tell it from one of Apple's own! 17:51:20 alise: Are you sure this was a dream, and not ... y'know, the actual iPad? 17:51:34 I have a feeling the iPad is significantly larger in real life. 17:51:53 I mean, all my complaints were aesthetic concerns; my subconscious can't quite handle intellectual complaints. 17:51:56 And the iPad certainly has the looks :P 17:52:21 www.mobileread.com/forums/attachment.php?attachmentid=50406&d=1272083550 17:52:22 erm 17:52:25 22:43:03 pikhq: It's just meant to pseudo-reflow by cutting up two-column documents such that you can read a page in two half-page views instead of four. 17:52:28 Nice; port it to Android. :P 17:52:53 Changing source language and all libraries hardly counts as a port :P 17:53:53 Hey, poppler works on Android. Probably. :P 17:54:13 08:24:09 ooooo, that's the goddamn scottish hangover i suppose 17:54:19 Android = Java dev platform 17:54:21 The only cure is not drinking ridiculous amounts of alcohol the night before. 17:54:27 It's such a sad illness. 17:54:31 Gregor: I know 17:54:37 But you can use JNI 17:54:42 Feh 17:54:45 Also, you /can/ use C, just only if you like interfacing with the APIs in a secret world of pain. 17:54:52 Not only a world of pain. A secret world of pain. 17:55:39 The IREX = X11 + GTK+ :) 17:55:42 "Microsoft stealth launches F#" --El Reg 17:55:44 Er 17:56:01 iRex; isn't that the one ereader that costs several organs? 17:56:10 And looks like shit? 17:56:10 yep 17:56:37 [[What hope is there for F#, the new language that Microsoft has sneaked into Visual Studio 2010, launched this month?]] 17:56:39 Gregor: Port it to Maemo, that's X11 + still-GTK+-a-for-a-while-before-going-Qt, and poppler's pre-packaged in the repository. Except that I have no idea what that program of yours does. 17:56:43 Man, I love the Register; they're so silly. 17:57:06 What is silly is this: 17:57:07 $ dot -Tpng -otest.png test.dot 17:57:07 dot: height (51515 >= 32768) is too large. 17:57:07 Segmentation fault 17:57:09 Gregor: btw your link was an invalid attachment 17:57:12 bitch 17:57:17 fizzie: That's modern, man. 17:57:32 fizzie: his program reformats + views pdfs 17:57:56 alise: It is now, I uploaded a new screenshot :P 17:58:04 Fucking forums. 17:58:11 http://www.mobileread.com/forums/attachment.php?attachmentid=50424&d=1272126494 17:58:13 Breaking links, often requiring you to log in, using shitty interfaces... 17:58:24 Pieces of crap. 17:58:40 Gregor: I don't quite dig the Windows 2-style top UI controls 17:58:51 Or does the eInk magically smooth them out perfectly? 17:58:59 If so, disabling antialiasing in poppler, too. 17:59:37 Are you referring to the shape, or the placement? 18:00:00 Well, the raggedness, mostly. 18:00:09 But yes, the controls are too close together. 18:00:19 "There’s an array of integers, of odd size N (N%2 == 1)." ;; thanks for defining what "odd" means 18:00:21 Yeah, that's smoothed out on the screen. 18:00:36 "Same array, this time its size is even (N%2 == 0)." how is it the SAME array... 18:00:41 Hm, maybe I should disable antialiasing and see how the eInk fares ... 18:00:45 Yeah. 18:00:47 That'd be interesting. :P 18:00:53 I wonder if the built-in book reader antialiases. 18:00:58 Probably, for the levels-of-grey stuff. But who knows. 18:01:08 Hard to say, it's proprietary Adobe shit >_< 18:01:16 It's the only non-F/OSS part of the stack. 18:01:53 I wanted a Kindle but it doesn't have the nice free internet over in the UK. 18:02:11 Writing a little minimalist Javascript IRC client was pretty much the main use I had in mind for it. 18:02:17 Hah 18:02:29 Wow, arcanesentiment is #2 on /r/programming. 18:02:32 I almost forgot about that blog. 18:02:47 The Kindle does have the nicest form factor & looks of all the readers, I think. 18:02:51 The Sonys second. 18:03:04 The Sony touch ones seem a gimmick, though; I don't think I'd like poking at eink for no particular reason. 18:03:14 You're referring to the DX? 18:03:28 Or the Kindle 2? 18:03:31 No, just the 2. Why; is the DX better? 18:03:35 Just bigger. 18:03:36 I thought the DX would be too big for regular booky books. 18:03:51 The IREX is about the same size as a Kindle 2, but has a (much) bigger screen. 18:04:12 The black plastic looks so tacky, though. :P 18:04:17 Also, the IREX costs so, so much money. 18:04:21 It's ridiculous. 18:04:34 iRex iLiad 2nd Edition Digital Reader 18:04:34 £590.95 new - Purelygadgets.co.uk 18:04:34 IREX iLiad Book Edition Electronic Book 18:04:34 £491.00 new - Pixmania.com 18:04:34 IREX Digital Reader 800S E-book Reader + 4 GB Micro SDHC Memory Card + 18:04:35 -!- Tritonio_GR has joined. 18:04:36 £532.82 new - D2 LEISURE GROUP 18:04:41 I am not paying 500 pounds for an ebook reader. 18:04:52 iLiad = dead, DR800 is cheap in the US. 18:04:55 (= $768; you uncouth guy) 18:05:05 Since when is the iLiad dead? 18:05:08 Wikipedia doesn't say so 18:05:10 But yeah, for some reason they're crazy-expensive in Europe ... where they're manufactured. 18:05:15 Also googling it gets stuff about bikes 18:05:22 alise: Well, the DR800 is roughly the same form factor but newer :p 18:05:31 Oh, that is prettier. 18:05:34 I like the look of that. 18:05:45 Uh, why the pen though? 18:05:56 Oh, http://www.techwall.org/wp-content/uploads/2009/09/irex-dr-800.jpg must be the prettiest ebook reader now. 18:05:58 Just for search and such, onscreen keyboard. 18:06:01 Usually I don't use it. 18:06:01 The Kindle loses :P 18:06:08 Gregor: Doesn't work with touch? 18:06:16 Then how am I to IRC? :( 18:06:16 No, it's a wacom. 18:06:25 Wait, WTF is with that enormous pen X-D 18:06:33 The image you have has a custom stylus, not the small one that comes with it. 18:07:23 All the other images I saw had it :P 18:07:29 *confused* 18:07:34 Anyway, my enormous pen is entirely my own business, thank you very much. 18:07:49 :P 18:08:01 Fungot, as seen by dot: http://zem.fi/~fis/test.png (resized to tiny 852x6439 from the original readable 5109x38636 pixels) 18:08:01 Also, the new iPhone is going to have a >300dpi, wtf apple stop it, please start sucking at /everything/ 18:08:04 then I can FORGET YOU 18:08:11 Anywho, I actually wanted an ereader /primarily/ for reading. For anything else it wouldn't be worthwhile. 18:08:35 Yeah, I just don't read on the go... at all. 18:08:45 Books I read almost exclusively before going to sleep, papers I almost always read on a computer... 18:08:54 Gregor: Does it allow free copying of your books around? 18:09:10 fizzie: What's that squashed onion thing over half way down? 18:09:27 alise: Yeah, they just download to the SD card. Idonno how all the DRM garbage applies to the different formats though ... 18:09:31 fizzie: Also, make it lay it out to heavily optimise for short lines; wideness is fine. That'd be interesting. 18:10:02 Gregor: What we /really/ need is a computer screen that can switch to eink-style mode on the fly. 18:10:09 And is, say, OLED the rest of the time. 18:10:15 alise: I think it's the jump table for punctuation tokens. 18:10:18 That would be SWEET. 18:10:18 Then you could have an iPad-ish thing that's actually usable for reading books on. 18:10:32 Have an OLED over an eInk screen that can be set "transparent" 18:10:32 Gregor: Well, they are doing it! 18:10:37 Pixel Qi. But I don't know how well they are doing with it. 18:10:39 http://www.google.co.uk/search?q=pixel+qi&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-GB:unofficial&client=firefox-a 18:11:00 From the part of the team that brought you the screen of the XO laptop -- not so impressive, I know. 18:11:10 It's not perfect right now though 18:11:29 http://www.pixelqi.com/products ;; some photos 18:11:49 [[While Pixel Qi has said that it believes a $75 laptop will be ready in 2010. However Pixel Qi isn't making a $75 laptop. We are making the screens.]] 18:11:50 How pointless 18:12:36 http://zem.fi/~fis/test_neato.png -- neato's default don't-avoid-overlaps mode is always so useful for large graphs. 18:13:31 Looks like an organism of sorts. 18:13:38 fizzie: Ooh, I have an amazing idea. 18:13:55 Do an animated one, where something like: the center of the screen is where the IP is now; and cells change accordingly. 18:14:00 So it'd be relayouting a bit like a flow. 18:16:48 * alise considers writing a little ditty library for C for doing arbitrary-precision real computatio 18:16:50 n 18:17:24 Hrm, I don't think graphviz is very good for animation; but different sorts of real-time funge-code visualization would be nice to have. 18:17:51 fizzie: I just think the constant-relayouting would look like an organism flowing through the program, so to speak. 18:19:19 That particular graph is actually from a static compiler of a non-self-modifying Funge-98 subset; it traces all code paths in advance, compiles to a register-based intermediate form, outputs a single LLVM function for the program. The graph is the basic block graph for the intermediate form. 18:19:38 Wow. 18:19:43 Can it actually run fungot? 18:19:44 alise: " expression" instead of with /foo... i know...... 18:19:47 Like, at all? 18:20:48 Hmm, I could do a real as simply taking an int for a precision argument... so that, e.g. it could be passed as the upper bound for infinite sums. 18:20:50 Yeah, I'll do that. 18:21:18 Not yet, no. But fungot is the target I'm aiming at, since I can't ever run mycology with it. It does run that rule110.bf benchmark I made a while ago, and rot13.bf too. 18:21:19 fizzie: very few schemes even come close 18:21:33 This also means I need bignums, for numerators and denominators of rationals. Groan. 18:21:49 I hate gmp. 18:22:45 -!- nooga has quit (Ping timeout: 246 seconds). 18:24:49 I guess if I want to write the ultimate CAS/dependently-typed programming language/theorem prover, I ought to write my own bignum library. After all, everybody else will get it Wrong. :P 18:29:06 -!- oerjan has joined. 18:29:20 hi oerjan 18:29:28 -!- ais523 has joined. 18:29:34 hello alise 18:30:15 also ais523, who nearly caused an embarassing tab expansion error there 18:32:28 hi 18:32:40 oerjan: you could have said hello in the other order, and nobody would have noticed or cared 18:32:53 well i aren't that clever, you know 18:33:15 ais523: except alise had already said hi 18:33:22 ah 18:33:27 hi alise, btw 18:39:23 You're not a LIFO greeter, I see. 18:39:41 Hi, ais523. Hi, oerjan. 18:39:56 hi uorygl 18:40:08 hi uorygl 18:40:36 * alise runs a tactic in Coq while forgetting it's turing-complete 18:40:42 * alise 's proof hangs 18:41:01 proving "forall x, Y * = x * (Y * x)" will /not/ proceed by computation. 18:41:41 What is * here? 18:41:46 -!- HackEgo has quit (Ping timeout: 260 seconds). 18:42:17 application 18:42:27 I'm carrying on from fax's http://muaddibspace.blogspot.com/2009/10/short-note-on-semantics.html 18:42:52 http://pastie.org/933123.txt?key=rsxttmof1dxsmaxf4iegg 18:43:00 Is Y * an abbreviation of Y * x? 18:43:01 we can reason about this forever but there's no actual model 18:43:13 i.e. we can't actually give concrete values to the SK, app, S and K sets 18:43:17 because coq always terminates 18:43:19 but this is good enough 18:43:22 uorygl: no; just a typo. 18:43:31 The Nexus One trackball is more useful than it appears 18:45:03 Theorem Y_prop : Y * I = I * (Y * I). 18:45:04 unfold Y. 18:45:04 rewrite I_prop. 18:45:04 reflexivity. 18:45:04 Qed. 18:45:09 easy, but not as general as I'd like :P 18:45:29 maybe some other fixed-point combinator would make this easier. 18:46:50 if anyone manages to prove the polymorphic case of that, you get a cookie 18:46:54 also for 18:46:55 Definition Y := 18:46:56 S * (K * M) * (S * (S * (K * S) * K)) * (K * M). 18:46:57 or, you know 18:46:59 any fixed-point combinator 18:47:29 What is M? 18:47:42 Definition M := S * I * I. 18:47:42 Theorem M_prop : forall x, M * x = x * x. 18:47:42 intro. 18:47:42 unfold M; ski. 18:47:42 reflexivity. 18:47:42 Qed. 18:47:44 Ltac skim := repeat (ski || rewrite M_prop). 18:47:46 RTFpastie :P 18:47:48 http://pastie.org/933123.txt?key=rsxttmof1dxsmaxf4iegg 18:48:25 just using "sk(i(m)?)?" doesn't halt because of course Y diverges 18:48:32 -!- jcp has joined. 18:48:34 so we need to be more careful and come up iwth a more analytic proof 18:49:29 -!- augur has quit (Ping timeout: 260 seconds). 18:49:48 Actually if we used setoid equality I think fax is saying that we could define an undecidable == to mean "computes to at some point". 18:49:51 Which I think would be possible. 18:49:56 But you couldn't use it for much, I don't think. 18:51:37 -!- pikhq has quit (Read error: Connection reset by peer). 18:56:02 well "reduces to the same thing at some point" is what beta-equivalence boils down to, once you've proved church-rosser for it 18:56:02 ais523: Here, you prove it. I hear you proved some thingymajic about turing-complete things, so this is clearly perfect for you to do. 18:56:09 oerjan: of course. 18:56:20 alise: what do you want me to prove? 18:56:21 oerjan: point is that since coq terminates, we can never satisfy: 18:56:23 Parameter SK : Set. 18:56:24 Parameter app : SK -> SK -> SK. 18:56:24 Infix "*" := app. 18:56:24 Parameter S : SK. 18:56:24 Parameter K : SK. 18:56:25 Axiom S_prop : forall a b c, S * a * b * c = (a * c) * (b * c). 18:56:26 Axiom K_prop : forall a b, K * a * b = a. 18:56:28 Axiom SK_prop : S <> K. 18:56:44 hmm, this is combinatory logic, presumably 18:56:48 oerjan: we can define stuff using it, and using S_prop and K_prop prove "equalities" (reductions) with it, and "compute" it by having a tactic that repeatedly applies these 18:56:55 but we can never actually implement a model in Coq 18:57:04 ais523: http://pastie.org/933123.txt?key=rsxttmof1dxsmaxf4iegg 18:57:07 prove Y_prop 18:57:07 mhm 18:57:10 in Coq 18:57:11 :P 18:57:23 you can't compute with skim to do it because (Y x) always diverges 18:57:31 so skim never terminates (proof tactics can be turing-complete) 18:58:27 "The Brain Editor and Fucker, or Brainfuck for TECO. (esolangs.org)" -- #13 on /r/programming 18:58:36 posted by the author, even 18:58:40 Note that I wrote that using Tom Almy's excellent TECOC so I can't guarantee it'll work on just any old TECO version. In theory, it should work on anything that's compatible with TECO-11 v40. 18:58:40 Edit: usage instructions! For the lazy: Start TECO up in the directory where you saved the .tec file, and when you get its prompt (a *), type eiBEFstarObf.tec$$ ($$ means , ie. press the ESC key 2 times) 18:58:43 http://www.esolangs.org/files/brainfuck/impl/BEFstar.txt 18:58:44 so presumably you need to emulate step-by-step evaluation somehow 18:59:00 oerjan: easy 18:59:06 rewrite S_prop will reduce a full S_application 18:59:11 ditto for K, I, and M (M is SII) 18:59:25 skim just repeatedly does "rewrite [SKIM]_prop", basically 18:59:28 until it doesn't change 18:59:30 of course, with Y this diverges 18:59:31 the problem is 18:59:33 we can unfold everything 18:59:37 but it still essentially boils down to 18:59:47 CRAP WITH X IN IT = x * CRAP WITH X IN IT 18:59:51 so I'm not sure where to proceed from here 19:00:24 alise: well my point is you _should't_ repeat, you should do the exact sequence of s,k,i and m reductions necessary, which i assume you can do by hand somehow... 19:00:31 *shouldn't 19:00:36 well, yes 19:00:43 but I ran them for a while and nothing seemed to help 19:00:54 -!- EgoBot has quit (Ping timeout: 260 seconds). 19:01:05 try S_prop; try K_prop. 19:01:11 running this over and over again until you want to stop should work 19:01:16 but will it ever actually get into the form of x = x? 19:01:31 well do it on paper first 19:01:35 hmm, try isn't working 19:01:38 oerjan: that won't really help 19:01:48 it will tell you the exact sequence you need 19:02:02 try (rewrite S_prop || rewrite K_prop); try reflexivity. 19:02:04 * alise repeatedly does this 19:02:07 oerjan: so will messing around in Coq 19:02:24 x * 19:02:25 (x * 19:02:25 (S * S * (S * (S * S * K)) * (K * x) * 19:02:25 (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x))) = 19:02:25 x * 19:02:26 (x * 19:02:27 (x * 19:02:29 (S * S * (S * (S * S * K)) * (K * x) * 19:02:31 (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x)))) 19:02:35 I think we need some sort of induction here 19:04:04 it just keeps expanding 19:04:10 hmm... I wonder if I can do some sort of fix-point proof here. 19:06:33 alise: the thing is you want Y * x = x * (Y * x). once you have shown Y * x = x * _something_, show that _something_ reduces to Y * x 19:06:58 reduces to -> 19:07:02 where you quite likely need to do equations backwards, btw 19:07:04 once you have shown Y * x = x * something 19:07:08 show that something = Y * x 19:07:12 yeah, that's just the original problem. 19:07:15 with an extra variable. 19:07:29 I don't know if you can do equations backwards 19:07:30 oh, you can 19:07:32 using symmetry 19:07:38 "something" was a turn of phrase 19:08:26 although since you _do_ have church-rosser backwards shouldn't really be necessary. assuming M doesn't ruin something. 19:08:28 there, after 9 rewrite S_prop ||| rewrite K_props, I have some sort of result 19:08:32 x * 19:08:33 (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x * x * 19:08:33 (K * (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x) * x)) = 19:08:33 x * 19:08:33 (x * 19:08:33 (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x * x * 19:08:36 (K * (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x) * x))) 19:08:38 grr 19:08:40 I really want to just rewrite on the LHS 19:08:42 so I'll do it as an assertion 19:08:46 no wait, I can't 19:08:48 how annoying! 19:09:18 do all the K reductions. they are sure not to make things more complicated after all, so _will_ terminate. 19:09:26 assert (x * (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x * x * 19:09:27 -!- comex has quit (Ping timeout: 252 seconds). 19:09:27 (K * (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x) * x)) = 19:09:28 Y * x). 19:09:28 ^ ouch 19:09:35 oerjan: good point 19:09:50 done; but there are still Ks, just unevaluated ones ofc 19:10:16 x : SK 19:10:17 ============================ 19:10:18 x * 19:10:18 (S * (K * (S * S * (S * (S * S * K)))) * K * x * 19:10:18 (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x)) = 19:10:18 Y * x 19:10:18 oh, the pain 19:10:32 I wonder how to do a reverse rewrite 19:10:54 (same with I, btw) 19:11:03 oerjan: no I in this combinator 19:11:06 assert (porp_WHATEVER : y = x). symmetry. apply WHATEVER_prop. 19:11:09 rewrite porp_WHATEVER. 19:11:11 but that is gross... 19:11:19 ok 19:11:27 and I can't tactic it up, I think 19:11:56 # rewrite <- term 19:11:57 Uses the equality term1=term2 from right to left 19:11:57 there 19:12:20 alise: anyway those x * (x * ... up there tell me you've already done too much, you _should_ be able to get just one x * ... outside 19:12:51 yeah good point 19:12:51 ok then 19:12:53 -!- comex has joined. 19:12:56 basically, hm, whatever you do don't do more than _one_ M reduction, i think 19:13:11 no M, dammit 19:13:15 Definition Y := 19:13:15 S * S * K * (S * (K * (S * S * (S * (S * S * K)))) * K). 19:13:17 unless you really need it 19:13:20 K * x * (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x) * 19:13:21 (S * (S * S * K) * (K * x) * 19:13:21 (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x)) = 19:13:21 x * 19:13:21 (K * x * (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x) * 19:13:22 (S * (S * S * K) * (K * x) * 19:13:23 (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x))) 19:13:26 this is the first step where I can get x * 19:13:28 oh so it was just an abbreviation 19:13:31 so I should stop there right? 19:13:39 and not rewrite any more Ks? 19:13:43 if I do, it turns into x * (x * ... 19:13:52 whoops 19:14:02 rewriting K's shouldn't hurt anything 19:14:02 why whoops 19:14:11 so stop whining about my x * x *! :-) 19:14:24 if that does something wrong, you have _already_ done something wrong 19:14:36 meh 19:14:39 I'll keep trying this 19:14:40 suggestion: reduce K between everything else 19:14:45 okay 19:15:08 sorry, it does not work. 19:15:13 rewrite S_prop; repeat (rewrite K_prop). 19:15:13 rewrite S_prop; repeat (rewrite K_prop). 19:15:13 rewrite S_prop; repeat (rewrite K_prop). 19:15:13 rewrite S_prop; repeat (rewrite K_prop). 19:15:13 rewrite S_prop; repeat (rewrite K_prop). 19:15:19 this is simply due to the definition of Y -- it is unavoidable! 19:15:25 it is rewriting on the right hand side of the equality 19:15:27 I cannot help that 19:16:41 x : SK 19:16:42 H : S * (K * (S * S * (S * (S * S * K)))) * K * x * 19:16:42 (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x) = 19:16:42 Y * x 19:16:42 ============================ 19:16:42 x * 19:16:43 (S * (S * S * K) * (K * x) * (S * (K * (S * S * (S * (S * S * K)))) * K)) = 19:16:45 x * 19:16:47 (x * 19:16:49 (S * (S * S * K) * (K * x) * (S * (K * (S * S * (S * (S * S * K)))) * K))) 19:16:51 I can do that, at least 19:17:41 ssk(s(k(ss(s(ssk))))k) is a strange combinator 19:17:52 what does ssk do, hm 19:17:54 yes, and your advice with rewriting Ks broke that proof! 19:18:07 *sigh* 19:18:26 oh well ignore me then 19:18:30 oh wait 19:18:33 I can get just x * 19:18:40 S * (K * x) * (S * (S * S * K) * (K * x)) * 19:18:41 (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x) = 19:18:42 x * 19:18:42 (S * (K * x) * (S * (S * S * K) * (K * x)) * 19:18:42 (K * (S * (K * (S * S * (S * (S * S * K)))) * K) * x)) 19:18:42 is that good? 19:19:18 that's something = x * something afaict 19:19:25 or wait 19:19:35 duh 19:19:41 but proving 19:19:45 assert ((S * (K * (S * S * (S * (S * S * K)))) * K * x * 19:19:46 (S * (K * (S * S * (S * (S * S * K)))) * K)) = Y * x). 19:19:47 is difficult 19:19:52 x : SK 19:19:52 ============================ 19:19:53 S * (K * (S * S * (S * (S * S * K)))) * K * x * 19:19:53 (S * (K * (S * S * (S * (S * S * K)))) * K) = 19:19:53 S * (S * S) * (S * (K * (S * S * (S * (S * S * K))))) * K * x 19:20:00 x * ... * ... isn't useful 19:20:15 maybe i really should do some sort of induction hypothesis 19:20:16 like 19:20:28 x should not be applied to two things _ever_. in fact that ought to be impossible to get i think 19:20:33 Y * x = x * (Y * y) -> y = x 19:20:34 or something 19:21:22 oerjan: i /think/ this computational approach can never work 19:21:30 oerjan: shall I explain why? 19:21:35 is your Y combinator a well-known one? 19:21:37 ok 19:21:45 John Tromp's; I can also substitute the direct translation of Y 19:21:48 we can never do any computation of the form x * foo 19:21:51 because we have no such axiom of proof 19:21:56 so it will ALWAYS be 19:22:06 (partial evaluation of (Y x)) = x * (partial evaluation of (Y x)) 19:22:12 um leibnitz rule? 19:22:34 what are you referring to? 19:23:07 and the problem is 19:23:12 I don't think I can rewrite just on the left hand side 19:23:20 so it will always turn into x * x on the rhs at the same time 19:23:27 x = y implies f(x) = f(y) for all functions f 19:23:34 duh yes 19:23:43 but can I prove this? 19:23:50 like, as far as this lc goes 19:23:53 or even P(x) <=> P(y) for all predicates P 19:23:53 I'll try 19:24:09 yes, this is how Coq's equality is defined... but we don't have f(x) 19:24:10 we have f*x 19:24:26 alise: if that's not put into your = automatically, you may get by with adding it for left and right application with a constant 19:24:33 yes, I can prove it 19:24:44 Theorem SK_leibniz : forall f x y, x = y -> f * x = f * y. 19:24:45 intros. 19:24:45 subst. 19:24:45 reflexivity. 19:24:45 Qed. 19:24:49 but I'm not sure how this will help 19:25:09 in fact I am not even sure I can prove this 19:25:10 _now_ you can do any reduction you want on the right side of an application 19:25:16 hooray 19:25:35 * alise tries Admitting Y_prop first (adding it as an axiom), just to check that it doesn't lead to horrible things if it's proven (which would imply it's impossible to prove) 19:26:07 -!- augur has joined. 19:26:25 like I can prove 19:26:26 Theorem YY_prop : Y * Y = Y * (Y * Y). 19:26:33 so I wonder if I can use equality induction 19:26:37 to do infinite computation with this 19:27:52 Theorem YY_prop : Y * Y = Y * (Y * (Y * Y)). 19:27:53 rewrite <- Y_prop. 19:27:53 rewrite <- Y_prop. 19:27:53 reflexivity. 19:27:53 Qed. 19:28:09 we can actually simplify expressions by using the evaluation rules backwards to introduce combinators 19:28:11 spooky... 19:28:35 anyway, see you later 19:28:43 -!- oerjan has quit (Quit: leaving). 19:30:26 -!- Oranjer has joined. 19:31:00 -!- alise_ has joined. 19:31:13 ais523: the nice thing about my reduction rules 19:31:19 is that instead of combinator -> result 19:31:22 they're combinator <-> result 19:31:38 yes 19:31:41 so we can prove that the results of messy combinators like, say, plus that might return a lot of wrapping in their result 19:31:46 still equal simple things 19:31:49 like plus two two = four 19:32:28 I wonder if I could prove eta-reduction 19:33:36 -!- alise has quit (Ping timeout: 258 seconds). 19:34:32 ais523: I love how we can prove all these reasonable results about a theory that can absolutely have no possible model in Coq 19:34:45 yes 19:36:26 incidentally, you can translate any recursive data type into the lambda calculus in the same manner as church numerals 19:36:31 with as many constructors as you want 19:36:36 although using them gets a bit unwieldy 19:36:43 basically you encode a type as its induction combinator 19:36:46 aka the recursion combinator 19:36:56 O | S nat's is X -> (X -> X) -> X 19:36:56 erm 19:36:58 O | S nat's is X -> (X -> X) -> nat -> X 19:37:34 wow, succ is just S(S(KS)K) in SK 19:38:23 Theorem succ_one_is_two : succ * one = two. 19:38:23 compute. 19:38:23 reflexivity. 19:38:23 Qed. 19:38:26 hells yeah 19:39:03 Theorem ss1_is_s2 : succ * (succ * one) = succ * two. 19:39:03 compute. 19:39:04 reflexivity. 19:39:04 Qed. 19:39:05 so easy. 19:40:02 Theorem exp2_2_is_ss2 : two * two = succ * (succ * two). 19:40:03 this is harder to prove! 19:40:25 -!- pikhq has joined. 19:40:39 in fact I can't do it :) 19:40:41 hi pikhq 19:40:45 I'm proving things about SKI in Coq 19:40:48 INTERNET RETURNS 19:40:53 Delicious. 19:42:34 pikhq: I can't prove that Y*x = x*(Y*x) though, so I just added it as an axiom for now 19:42:39 I did prove that succ*one=two, though! 19:43:01 :) 19:43:34 In fact, I should physically coerce you into proving that Y*x=x*(Y*x) for me! 19:43:40 It has dependent types... 19:48:41 -!- lament_ has joined. 19:49:13 COFFEE 19:49:25 It is 2 in the afternoon and I have not caffeinated. Coffee taim 19:49:47 -!- lament_ has changed nick to lament. 19:51:35 -!- Gracenotes has quit (Quit: Leaving). 19:56:57 Is coffee taim nao 19:59:06 alise_, nice things about N1 [although these are Android things]: The notification system. The ability to see a QR code to an app on a web page on your comp and just scan it in to the phone 19:59:38 I usually just search for apps on the computer, and scan in the QR code to the N1 if I want it 20:00:34 Bad things about N1: explorer.exe crashed. Oh wait, that WinXP 20:01:05 lol 20:01:35 Bad thing: The included headphone things hurt your ears 20:01:41 Maybe I'm putting them in wrong 20:01:41 Coq's "tauto" tactic shouldn't be called that. A tactic called "tauto" should prove any provable proposition. :-) 20:05:59 -!- zzo38 has joined. 20:08:52 N1 seems to play MIDIs nicely 20:12:01 -!- lament has quit (Quit: lament). 20:12:19 Hm 20:12:26 Actually, I played the wrong file 20:12:53 -!- lament has joined. 20:16:33 Are earbuds supposed to hurt? 20:17:40 No. 20:17:48 They are supposed to remove your ears. 20:18:04 * alise_ is doing reals in haskell 20:18:07 * alise_ tries to implement http://en.wikipedia.org/wiki/Chudnovsky_algorithm 20:20:10 wtf, Haskell's Rational type doesn't have / 20:20:34 alise_, do iPhones have MIDI support? 20:20:43 dunno 20:22:18 -!- pikhq has quit (Read error: Connection reset by peer). 20:36:24 -!- MizardX has joined. 20:38:43 -!- pikhq has joined. 20:39:37 -!- sebbu has quit (Ping timeout: 240 seconds). 20:45:08 -!- oklopod has changed nick to oklopol. 20:45:21 -!- sebbu has joined. 20:48:58 -!- nooga has joined. 20:58:58 -!- tombom has joined. 21:21:17 Gregor: I've got a segfault from Egobfi. 21:21:31 AWESOME 21:22:06 Program: awib.b. Cause: dereferencing mptr, mptr out of bounds. 21:22:36 In bf_interpret, "if (*mptr) {", line 56... 21:24:19 So. Memory somehow out of bounds. 21:25:28 I know you don't exactly maintain that much any more, but... Yeah. That seems like a bit of a bug. ;) 21:30:15 And then I tried building egobfc's output and remembered that egobfc is broken. XD 21:32:34 I think I'm just going to blame awib's frontend-backend design. 21:35:08 No, that appears to segfault *every* written-in-Brainfuck compiler. 21:35:18 On pretty much every implementation I've got. 21:35:47 wow 21:36:00 LostKng is hard. :P 21:45:46 I never got past the first few rooms of the cave 21:46:16 pikhq: segfault probably implies going < off the start of the tape 21:46:25 or possibly > off the end, if the tape's finitely long for some reason 21:46:42 ais523: Shouldn't be > off the end in egobfi8. 21:47:16 It *does* have a memory-limited tape there. 21:47:37 As for < off the start of the tape? I'm not sure why it would do that, though that is the only way for that to *happen*. 21:58:33 pikhq, egobfi? 21:59:37 Gregor's Brainfuck interpreter. 21:59:44 written in bf? 21:59:50 No, in C. 21:59:51 ah 22:00:00 Not the fastest, but it's fairly complete. 22:00:13 pikhq, what was it that segfaulted pretty much everything? awib? 22:00:25 link? 22:00:30 awib compiling LostKng *on* nearly everything. 22:00:34 Esolang archive. 22:00:34 ah 22:00:41 pikhq, lostkng is huge. 22:00:50 you could pretty easily run over the end of the tape 22:00:59 "Unbounded tape" 22:01:05 hm okay 22:01:12 If it's running over the end of my memory, I'm scared. 22:01:18 pikhq, does awib on awib segfault on lostkng? 22:01:26 Yes. 22:01:29 heh 22:01:59 pikhq, anyway, does awib output as it go, or does it try to read the whole thing in first and do some optimisation? 22:02:25 Read the whole thing in, optimise, pass it to the selected backend. 22:02:28 if the latter I wouldn't be surprised if it hit some bug easily. Heck you might even run into issues with counters overflowing 22:03:16 Hmm. Actually... Yeah, it probably *is* an overflowing counter. 22:03:29 To egobfi64! 22:03:32 like current pointer position or even "number of > in a row" issue 22:03:38 pikhq, heh? 22:03:46 64-bit cells. 22:03:49 well sure 22:04:11 but if awib tries to do multiple cells to track the number that is going to cause issues 22:04:25 like it does a 2 cell number 22:04:32 like if it* 22:04:52 awib is designed to work on Brainfuck interpreters with 8-bit *or greater* cells. 22:05:08 bbl, switching monitor to other computer (need to do some BIOS stuff on a normally headless computer) 22:05:35 I'm strongly suspecting this segfaulted when it was checking for loop balance, actually. 22:18:45 pikhq, quite plausible in lostkng 22:20:38 My not-quite-completed interpreter in Haskell doesn't check for loop balance 22:21:02 -!- jcp has quit (Ping timeout: 276 seconds). 22:21:07 If there's an extra ], it truncates, if there are extra [, it assumes there are the needed ] at the end 22:21:11 Segfaults on larger clles, though. 22:21:32 Cells, even. 22:22:08 My semi-functional Brainfuck interpreter inserts a QUIT command at the end of the program buffer. 22:22:30 So, if you happen to have not done loop balance right, you get an exit. 22:23:14 Oh, yeah, and it ends up setting the jump address for the loop to that QUIT command, as well. 22:23:22 -!- Gracenotes has joined. 22:24:01 Sgeo: all that matters is that it's consistent. 22:24:30 so consider extra ] to have needed [ at the beginning ;-) 22:25:24 pikhq, what about two unclosed ones? 22:25:35 AnMaster: Same behavior. 22:25:36 -!- kar8nga has quit (Remote host closed the connection). 22:26:03 pikhq, also, checking loop balance isn't very hard. You will get it for "free" when parsing it into 22:26:16 at least if you do the parser the usual way 22:26:30 (with that I mean a recursive parser) 22:27:03 AnMaster: It's getting parsed into a single array of pointers to goto addresses. 22:27:17 you just love those... 22:27:18 With arguments coming after the pointer if necessary. 22:27:32 I've done it twice. Twice! 22:27:46 And it's a very clean fit for Brainfuck. 22:27:49 pikhq, I assume you fold >>> into >3 or such? 22:27:54 Yeah. 22:27:57 even for an interpreter that is a good idea 22:28:16 (some of the more expensive optimisations might only be a good idea for compilers though) 22:28:22 The +-><[] commands all take arguments. 22:28:33 pikhq, why not ,? 22:28:41 err, . I mean 22:28:42 Too lazy. :P 22:28:43 probably 22:28:55 which one was which in bf? 22:28:59 I always mix them up 22:29:05 . is output, , is input. 22:29:11 ah then I meant . 22:29:12 well 22:29:14 Not a massive benefit to folding either, really. 22:29:22 . could take "constant value found by optimising" 22:29:35 esotope and in-between did that kind of stuff 22:29:40 well, does I guess 22:29:48 But that requires non-peephole optimisations. :) 22:30:01 pikhq, true, they are both very slow on lostkng 22:30:12 Produce good output though. 22:30:15 well yes 22:30:36 pikhq, but building dependency graphs for each section between unbalanced loops takes a while 22:31:00 especially if you are re-running all optimisation passes until nothing changes any more 22:31:02 -!- jcp has joined. 22:31:07 Yuh. 22:31:26 not sure if esotope did that 22:32:12 pikhq, anyway, I think what is more interesting is in which ways you can optimise unbalanced loops 22:32:39 well obviously you can optimise them internally like merging ++ in [++>] but I mean into some higher level thingy 22:32:41 Yeah, there really is a lot you can do with them if you bother. 22:32:52 possibly optimising common idioms with them and such 22:33:07 Brainfuck really has a lot of optimisations you can do. 22:33:25 pikhq, consider turning [>] into something like strlen() plus moving the pointer 22:33:49 Not quite the same, but I'm still kinda proud of PEBBLE's C output. 22:34:08 (cheats by having C macro implementations. >:D) 22:34:17 iirc libc strlen() tend to be crazily optimised "word at a time" thingies 22:34:21 so that could be a win 22:34:31 pikhq, I thought PEBBLE compiled to C? 22:34:39 also: link to pebble, I forgot where it was 22:34:45 err 22:34:49 I no longer have a host. 22:34:50 compiled to bf not C* 22:34:53 ah 22:34:55 AnMaster: Remember that befunge "benchmark" we played with a moment ago that basically does -100 until the cell wraps around? 22:34:58 PEBBLE has a C backend. 22:35:06 fizzie, a moment ago? 22:35:07 what? 22:35:12 * AnMaster looks up in scrollback 22:35:15 AnMaster: Well, where moment == few days. 22:35:21 hah 22:35:25 pikhq, heh 22:35:28 AnMaster: I think I was going to say "while" there, but typoed "moment". 22:35:29 pikhq, I'm sure it is faster? 22:35:46 AnMaster: Yeah, the C backend produces some fairly swift code. 22:35:50 Do you mean like: ptr+=strlen(ptr); 22:35:54 fizzie, and yes I remember it 22:35:55 what about it 22:36:05 AnMaster: Anyhow, the static Funge-98 compiler I have here that I got sidetracked with compiles it to the following LLVM code: 22:36:08 Code1.i: ; preds = %Code1.i, %0 22:36:08 br label %Code1.i 22:36:10 Though it gets to do some nice stuff like "replacing a division with an actual division". 22:36:23 zzo38, possibly. It depends on how you implement it I guess 22:36:24 fizzie, wow 22:36:31 fizzie: Man. 22:36:32 fizzie, that is, like cheating or something 22:36:56 if I read it correctly 22:37:04 It also fails to terminate. 22:37:08 oh 22:37:12 then I didn't read it correctly 22:37:17 fizzie, I thought it constant folded the loop 22:37:20 It's just "foo: goto foo;" 22:37:31 fizzie, oh wait I know. it thinks signed integer can't wrap around 22:37:34 LLVM is assuming that you won't overflow. :) 22:37:36 probably 22:37:51 pikhq, underflow in this case I think 22:38:02 Fair enough. 22:38:24 hopefully there is a way to tell it that is incorrect 22:39:35 zzo38, anyway it would be a win since strlen() these days check the memory one word at a time, for "does any byte in this word contain a zero" with some bitmask stuff 22:39:57 and when it found one, it checks which byte in said word was the zero 22:40:49 sure it goes over the end of the array in theory, but that is safe since it is doing aligned reads, and that will never go over the end of a page 22:41:47 and that is one of the reasons why valgrind prints "ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 7 from 7)". 22:42:06 it suppresses stuff in libc and such, like strlen() doing that 22:42:08 iirc 22:42:21 unless it provides it's own strlen() 22:42:22 AnMaster: I'm not quite sure how to tell it to not assume that. But if I use just "-std-compile-opts" and not "-std-link-opts" too for 'opt', it compiles to what's basically in C "for (i = 0; x-i*100 < 0; i++);" where x comes from the stack. 22:42:35 fizzie, mhm 22:43:04 fizzie, surely llvm can't assume signed overflow/underflow is undefined. After all llvm is supposed to work for other languages than C 22:43:09 Probably because it doesn't inline the generated code into main where the stack is initialized, and therefore can't know x = 0 at start. 22:43:52 fizzie, http://llvm.org/docs/LangRef.html#i_add 22:44:06 "nuw and nsw stand for "No Unsigned Wrap" and "No Signed Wrap", respectively. If the nuw and/or nsw keywords are present, the result value of the add is a trap value if unsigned and/or signed overflow, respectively, occurs." 22:44:08 relevant? 22:44:47 I'm not sure. I don't use either of those words, so I think it should do the two's-complement modulo arithmetic by default. 22:45:15 fizzie, a bug maybe? 22:45:58 I might not just be using it right. I'll try to make a minimal testcase of that loop. 22:46:26 fizzie, you might want to find out what exact optimisation pass breaks it 22:46:47 iirc there is some way to list what -std-compile-opts and such actually do 22:52:01 Yes, adding -debug-pass=Arguments prints them out. 22:52:19 It is not a short list. 22:54:43 fizzie, diff the two lists 22:55:08 fizzie, that should give you some hint of what ones might be more probable causes 22:55:23 (of course, if you are unlucky, it is causing by two or more passes interacting) 22:55:44 fizzie, but yes, a test case and ask mailing list/submit bug might be best 22:55:47 The -std-link-opts seems to add: -internalize -ipsccp -globalopt -constmerge -deadargelim -instcombine -basiccg -inline -prune-eh -globalopt -globaldce -basiccg -argpromotion -instcombine -jump-threading -domtree -domfrontier -scalarrepl -basiccg -functionattrs -globalsmodref-aa -domtree -loops -loopsimplify -domfrontier -loopsimplify -licm -memdep -gvn -memdep -memcpyopt -dse -instcombine -jump-threading -simplifycfg -globaldce -preverify -domtree -verify 22:56:03 I guess I could just start removing passes one by one. 22:57:00 fizzie, -preverify/-verify should not be removed 22:57:08 they are sanity checks 22:57:15 on the current ast or whatever 22:57:29 so they don't remove anything 22:57:39 fizzie, I'm pretty sure also that some of those are run more than once 22:57:53 yeah 22:57:58 you have memdep several times there 22:58:20 Sure, there's a lot of duplication; that's not so surprising. 22:58:37 well, remove -preverify/-verify if you remove all the passes between them 22:58:53 Removing "-jump-threading -simplifycfg -globaldce" from near the end turns the loop into: 22:58:54 Code1.i: ; preds = %Code1.i, %space_init.exit 22:58:54 br i1 false, label %funcot.exit, label %Code1.i 22:59:06 that doesn't look quite right? 22:59:14 fizzie, iirc llvm has some tool to automatically find these 22:59:20 bugpoint I think the name was 22:59:31 Well, it's "foo: if (0) return; else goto foo;" now. 22:59:32 I might misremember 22:59:42 fizzie, that is still incorrect though 22:59:57 Sure. 23:00:10 fizzie, anyway http://llvm.org/docs/Bugpoint.html might help 23:01:21 Yes, the miscompilation debugger sounds sensible, though I'm a bit uncertain how well it works with a non-terminating program, since it's based on comparing outputs. 23:01:33 oh good point 23:02:04 I'll see if I can manage a testcase myself. I still think it could be just my own misuse of llvm somewhere; that's usually the case. 23:02:23 possibly 23:03:29 Removing that -instcombine just before the three others I removed makes for a sensible-looking loop. 23:03:49 hm 23:05:45 Hrm, well, the optimization is in fact legal, given what is before the loop. 23:05:53 fizzie, eh? 23:06:04 It starts the loop with: %tmp1.i = add i32 undef, -100 23:06:13 fizzie, undef? 23:06:30 Right. It's legal to do a lot of stuff to computations involving undef values. 23:06:42 fizzie, sounds like it shouldn't be undef then? 23:07:07 -!- augur has quit (Remote host closed the connection). 23:07:08 Right. Or, well, wait. 23:07:28 -!- augur has joined. 23:07:56 * AnMaster waits 23:08:02 Actually! While the runtime has a proper stack-pop macro, I think the codegen still has the version that does not check for stack underflow, and the benchmark indeed starts from the value that's below the start of the stack, which is undef. 23:08:15 heh 23:12:38 fizzie, you mean you stopped doing the sigsegv trick? 23:13:29 This is not jitfunge, this is another thing. And in any case jitfunge's current LLVM backend doesn't do it either. I haven't yet quite figured out how to, since you can't really predict what sort of assembly LLVM decides to spew out for accessing the stack. 23:13:46 I'm sure it's doable, it might just need some more twiddling with the LLVM side. 23:13:58 fizzie, wait? not jitfunge? 23:14:00 then what? 23:14:04 is doing befunge and llvm 23:14:07 Some sort of static compiler. 23:14:11 I got sidetracked with a static compiler, yes. 23:14:12 huh 23:14:19 fizzie, static compiler for befunge?! 23:14:23 you are mad 23:14:33 No support for "p" modifying actual code I presume? 23:14:36 Well, the subset of it I use personally in fungot. :p 23:14:36 fizzie: to the person executing the program makes sense ( a script, so i have a favorite sushi, but that seems much saner to me. 23:14:43 fizzie, really isane 23:14:44 *Ah*. 23:14:57 Yes, a boring non-self-modifying sort of befunge. 23:15:01 Might be fun to define a compilable subset of Befunge. 23:15:03 fizzie, so fungot never uses p to self modify? 23:15:03 AnMaster: here is one that surrounds me", etc 23:15:07 that should be fixed then 23:15:18 wait, it does 23:15:22 it loads the file 23:15:23 AnMaster: Well, there's the ^reload command, but I don't remember when I've used it last. 23:15:25 Bit of a boring language to implement, but could be handy for some programs that could be done quickly. 23:15:33 Erm. 23:15:35 fizzie, the loader loads the main file 23:15:37 Could do with running 23:15:49 And yes, the loader/program split is there, but that's just a matter of concatenating the two files. 23:16:07 pikhq, I prefer the "no 93" subset of 98 then 23:16:10 it is a crazy language 23:16:34 there was a bit of an argument if there should be a hole in the 98-funge space where the 93 funge space was 23:16:36 AnMaster: you have to use abcdef just to push constants? and x and [] to change direction? 23:16:43 but I think the conclusion was "only commands are removed" 23:16:46 AnMaster: Hahahah. 23:16:52 otherwise we would end up with stack stack but no stack 23:16:53 The underload interp seems to work with this compiler; haven't tested full fungot yet, there's a lack of fingerprints and such. 23:16:54 fizzie: sarahbot eval ( map display ' ( 2 1 0 23:17:11 ais523, well yes and you have no - and + for example 23:17:38 I did think we figured out a way to get constants with y 23:18:00 and then comparing stuff, you have w but not ` _ or | 23:18:05 nor do you have # 23:18:12 oh and space is gone too 23:18:18 so you need to z-fill 23:18:53 ais523, I think we concluded that befunge-98s is *probably* TC but unefunge-98s probably isn't 23:19:08 interesting 23:19:24 ais523, you can grep the logs for this. I think me Deewiant and ehird were involved in the discussion 23:19:27 some months ago 23:19:39 last half of 2009 or during 2010 23:20:01 before cpressy reappeared 23:20:07 he seems gone again though(?) 23:20:14 yes, maybe 23:20:23 ais523, to what? that he is gone? 23:20:29 yes 23:20:37 right 23:21:22 -!- tombom has quit (Quit: Leaving). 23:22:02 he'll be busy with work. 23:22:22 right 23:22:38 * AnMaster fixes the ignore to include the underscore version as well 23:24:12 you know, calling me childish will stop working soon enough as you'll have definitively proved yourself to be even more childish than me. 23:24:23 -!- sebbu2 has joined. 23:24:38 "don't fucking mention your ignores every time you can" is, like, rule #3 of not being a huge, annoying asshole on IRC 23:24:59 "don't read logs to talk to someone you're ignoring while simultaneously reacting harshly when they evade your ignore to talk to you" is rule #4. 23:25:37 -!- sebbu has quit (Ping timeout: 240 seconds). 23:25:38 -!- sebbu2 has changed nick to sebbu. 23:31:23 -!- Oranjer has quit (Quit: Leaving.). 23:32:31 ignore? what's that? 23:33:53 Mathnerd314: you can do, say, "/ignore ais523"; then you wouldn't be able to see anything I said 23:34:14 normally used against people who annoy you, or who are spamming a channel 23:34:51 ais523, actually I need to tell it what type of ignore to apply. Just /ignore gives me syntax help 23:35:07 depends on client, then 23:35:19 I need to tell it something like "chan" or "priv" or "all" (there are a few more variants) 23:35:19 17:24 < alise_> "don't fucking mention your ignores every time you can" is, like, rule #3 of not being a huge, annoying asshole on IRC 23:35:22 Quoted for truth. 23:35:58 ais523, there is also a "unignore" flag, to override other ignores for a more specific mask 23:36:02 BY THE WAY HAVE I MENTIONED THAT I HAVE AN IGNORE LIST 23:36:19 ais523, like I ignore DCC from *!*@*, and then allow it from egobot 23:36:35 HAVE I MENTIONED, I DISLIKE ALISE TO THE POINT THAT I WISH TO NOT SEE HIS MESSAGES TO THIS CHANNEL; ALTHOUGH I SHALL COMPLAIN ABOUT THE ADVERSE EFFECTS OF THIS, SUCH AS WHEN I ONLY SEE ONE HALF OF A CONVERSATION 23:36:41 ARE YOU INTERESTED? 23:36:41 by the way 23:36:44 where *is* egobot? 23:36:49 * AnMaster pokes Gregor 23:36:54 get egobot and hackego back 23:36:57 Doomy doomy doom doom 23:37:09 pikhq, ? 23:37:21 That's the location. 23:37:26 hah 23:39:48 hmmm... what would /ignore Mathnerd314 do? 23:40:16 -!- oerjan has joined. 23:40:19 Mathnerd314, depending on client, either filter out all the lines you said or give syntax help 23:40:23 oerjan, hi 23:40:28 hi AnMaster 23:40:44 btw, http://llvm.org/pubs/ is quite an interesting list 23:41:15 there are some truly fascinating things there 23:41:26 AnMaster: how many channels are you on on freenode? 23:41:31 Mathnerd314, why? 23:41:45 just want to see if I've found them all :p 23:41:47 _all_ of them, obviously 23:41:53 Mathnerd314, some 70+ or so 23:41:57 don't know exact number 23:42:04 ok 23:42:11 Mathnerd314, I doubt you found all 23:42:15 yeah 23:42:47 #catlicking is hard to find, after all 23:42:52 Mathnerd314, how many did you find? /whois on you show three channels. If you like me have that "hide channel list" mode set then that is the subset we are both in 23:42:59 oerjan, haha 23:43:08 oerjan, I wonder if you is there ;P 23:43:10 are* 23:43:15 -!- alise_ has quit (Read error: Connection reset by peer). 23:43:19 yeah, just the 3 so far 23:43:30 alas, since it doesn't exist. at least on freenode. 23:44:02 or maybe it's so secret even i cannot find it 23:44:21 a sure test to see if it is there is trying to join it 23:44:40 another possibly less embarrassing way to check it is /mode #channelname 23:44:40 well that's what they want you to think 23:44:53 i just used /list 23:45:04 oerjan, that won't list +s channels 23:45:14 -!- Oranjer has joined. 23:45:23 00:42 #catlicking: No such nick/channel 23:45:57 oh? you mean the message would be fake? 23:46:17 -!- alise has joined. 23:46:22 oerjan, from /mode? then it doesn't exist 23:46:30 no, from /list 23:46:42 oerjan, well as I said, /list doesn't include +s channels 23:46:51 /mode gives a similar answer 23:46:53 unless you are on those channel 23:46:58 oerjan, /mode is trustable 23:47:03 it was /list #catlicking, of course 23:47:21 oerjan, I think +s would be hidden from that too. At least on some IRCDs 23:47:47 ok, not sure if it makes sense to hide it from only _some_ commands 23:47:51 * Mathnerd314 finds #crossfire 23:48:04 oerjan, sure it does. You can't hide it from /join for example 23:48:39 well true, that would require a very fiendish deception 23:48:40 oerjan, oh and +s also hides the channel from /whois, unless that person doing the /whois is also in that channel 23:48:52 not _impossible_, mind you 23:49:25 oerjan, basically it hides it from everywhere where you wouldn't have to know about the channel already 23:49:26 well that's pretty obvious it has to hide that 23:49:47 oerjan, and I guess special casing the "full match" variant of /list was too much work 23:49:56 AnMaster: yeah, but that still leaves /list with exact name as a dubious case 23:50:07 mhm 23:50:08 oerjan, see line above 23:53:54 This channel is mode +cn 23:54:14 zzo38, yes, what about it? 23:54:44 hm what's +n again 23:54:54 oerjan, no message to channel without being in it 23:54:58 ah 23:55:18 I don't know why it is a mode 23:55:27 I mean, it is the only sane variant 23:55:28 Enter HELP CMODE for help 23:55:35 presumably so you can turn it off 23:55:44 zzo38, you mean /quote help cmode probably 23:55:53 most clients do it that way 23:56:04 most clients have their own /help 23:56:08 This client doesn't do it that way 23:56:12 sure 23:56:17 but that is a special case 23:56:34 oerjan, yes but I can't see why anyone would want to turn it off 23:56:50 zzo38: like when you said (iirc) that we had changed the 332 TOPIC - almost no one else would see the 332 23:56:52 This client has no /HELP or /QUOTE command, it just generates an error message "UNKNOWN SLASH COMMAND" 23:57:01 hah 23:57:12 oerjan: Why not? Does someone turn it off? 23:57:16 zzo38, so you need to type /msg or such for every line you write to irc? 23:57:34 zzo38: the client formats topics in their own way 23:57:35 zzo38, are you intentionally being silly? 23:57:37 No, I just prefix it with the spacebar and it automatically types PRIVMSG and the current channel name and a colon 23:57:39 and yes what oerjan said 23:57:55 ... 23:57:58 That's what happens in my client when I start a line with space, it will type in that command instead of a space. 23:58:13 zzo38, isn't almost every line you type one starting with space? 23:58:29 About half of them are 23:58:42 zzo38: you are awesome 23:58:43 never forget that 23:58:43 zzo38: like in irssi when i joined the channel, it said: 00:39 Topic for #esoteric: #esoteric, the international hub for esoteric programming language design and deployment - #esoteric is not associated with the joke language Perl, please visit www.perl.org - logs: http://tunes.org/~nef/logs/esoteric/?C=M;O=D 23:58:47 zzo38, really? You do so many other things except chatting on irc? 23:59:04 -!- Azstal has joined. 23:59:11 Sometimes 23:59:12 irssi prepends the time to most things 23:59:26 zzo38, wouldn't it make more sense to make message to the current channel the default? 23:59:30 zzo38: which client is this? :p 23:59:37 Mathnerd314: his own 23:59:39 This client will also prepend the time to *all* things, but only if you type in /SET SHOWTIME + 23:59:40 Mathnerd314, his own 23:59:43 rule of thumb; if zzo38 is using some software, he wrot it 23:59:44 *wrote 23:59:49 *oh*