←2010-03-06 2010-03-07 2010-03-08→ ↑2010 ↑all
00:10:51 -!- ais523 has quit (Remote host closed the connection).
00:12:46 -!- BeholdMyGlory has quit (Remote host closed the connection).
00:25:48 -!- coppro has joined.
00:37:35 <augur> o hai
00:38:07 <augur> oerjan, yet iff symbolically is merely <->
00:38:15 <augur> a single-lined double arrow
00:39:49 <augur> also
00:39:51 <augur> CAFFEINE! :D
00:44:48 <augur> who was it that suggested lo carb monster
00:48:26 <augur> oh, noone here
00:50:33 -!- kar8nga has quit (Remote host closed the connection).
01:05:24 -!- lament has quit (Ping timeout: 276 seconds).
01:06:52 <Quadrescence> augur: (ノ゚ο゚)ノミ★゜・。。・゜゜・。。・゜☆゜・。。・゜゜・。。・゜
01:07:07 -!- lament has joined.
01:07:11 <Oranjer> hahahahaha
01:10:33 <augur> wtf is that
01:10:54 <Oranjer> beats me, I can't see it
01:11:02 <pikhq> Quadrescence: なぜ絵文字を使いますか。
01:11:21 <Quadrescence> shiiiiiiit
01:11:42 <pikhq> 何?
01:12:02 <Quadrescence> I have no idea what you're saying.
01:12:39 <pikhq> Japanese-script-using failure.
01:13:07 <Quadrescence> Fortunately I don't know Japanese.
01:17:23 <pikhq> Then why are you using
01:17:29 <pikhq> JIS art?
01:17:30 <pikhq> :P
01:17:43 -!- MizardX has quit (Ping timeout: 268 seconds).
01:25:20 <Quadrescence> pikhq: because i speak japanese
01:25:32 <pikhq> Quadrescence: 本当に?
01:25:38 <Quadrescence> yes
01:26:47 <pikhq> でも、「絵文字」を知らない。
01:27:46 <pikhq> Hrm. ... Emoji is wrong word. JIS art.
01:31:05 -!- oerjan has joined.
01:50:26 <Sgeo> Hm, alise isn't here?
02:05:02 <Sgeo> So, keywords do exist in Common Lisp
02:07:22 -!- benuphoenix has joined.
02:07:51 <pikhq> Not ATM.
02:10:30 -!- zzo38 has joined.
02:13:08 -!- benuphoenix has quit (Quit: leaving).
02:22:53 <zzo38> Do you know how to make hypervisor mode in ARM-based computer?
02:51:34 -!- zzo38 has quit (Remote host closed the connection).
03:07:36 -!- lament has quit (Ping timeout: 276 seconds).
03:11:06 -!- lament has joined.
03:21:23 -!- adu has joined.
03:35:12 -!- oerjan has quit (Quit: leaving).
04:57:22 -!- Khazar has joined.
05:15:46 <Oranjer> goodnight!
05:15:48 -!- Oranjer has left (?).
05:17:45 <Khazar> It is time to put those Haitian jigaboos in their place! No matter how many times the civilized world donates money, opens schools, rebuilds their nation, and holds their little monkey paws, the damn niggers can never get it right. They never will! The same goes for New Orleans! Cancun in Mexico suffered few fatalities after their major hurricane, and the rebuilding is already completed. Wha
05:17:45 <Khazar> t have the niggers in New Orleans done? If you are sick of this, join Chimpout Forum! http://www.chimpout.com/forum We welcome all races except for NIGGGGGGGERS! We are not white supremacists, just negro inferiorists! http://www.chimpout.com/forum
05:19:41 <pikhq> lament: Art thou awake?
05:20:27 <pikhq> Khazar: 馬鹿ね。
05:27:24 -!- Azstal has quit (Ping timeout: 256 seconds).
05:53:19 -!- adu has quit (Quit: adu).
05:59:56 <Gregor> ... wow.
06:00:01 <Gregor> Good ol' fashioned spam I guess.
06:00:12 <pikhq> Not all that "good ol' fashioned".
06:00:21 <pikhq> If it were that, Khazar would be giving the GNAA spiel.
06:00:30 <Gregor> Rarely has "good ol' fashioned" meant "good" :P
06:01:44 <pikhq> Heheh.
06:02:17 <Gregor> Curious, I would expect a spambot to join various channels, but Khazar is only on #esoteric.
06:02:35 <pikhq> Curious.
06:02:55 <pikhq> Probably more of a *troll* than a spambot, then.
06:05:01 -!- lament has quit (Ping timeout: 264 seconds).
06:06:07 <Gregor> Naw, a troll would be responsive, I assume.
06:06:10 <Gregor> Just a moron.
06:09:01 -!- lament has joined.
06:09:15 <pikhq> Mmm.
06:10:22 <Gregor> lament: Can has kickban on Khazar plz kthx
06:13:44 <Gregor> Alternatively, can have access +o on Gregor? :P
06:15:15 <Khazar> it isn't spam
06:15:22 <Khazar> where did I mention viagra or porn?
06:15:54 <pikhq> You opted form "chimpout" instead.
06:15:57 <pikhq> Erm. For.
06:16:06 <Gregor> Oh wow, it is a "human".
06:16:07 <Gregor> Shocking.
06:16:29 <Gregor> If nothing else, your racist idiocy has no relevance to this channel and is unsolicited, making it spam.
06:16:40 <Khazar> we have discovered that on Freenode, it is wiser to be more lowkey
06:16:42 <pikhq> Advertising a site that is offensive to many and sought out by few is generally considered spam.
06:16:45 <Khazar> precluding the usage of bots
06:16:48 <Khazar> it is more profitable
06:16:57 <Khazar> if you are interested in such a job in irc marketing
06:17:06 <Gregor> That would be because people on Freenode are, in general, more intelligent than turnips.
06:17:10 <Khazar> email recursoshumanos@telvista.com.mx
06:17:20 <Gregor> Whereas the target audience for your site is in the 0.25-to-0.75 turnips intelligence range.
06:17:34 <pikhq> People on Freenode are more likely to be offended by marketing in general, you know.
06:17:40 <Gregor> Which would place them just a tad below intelligent design advocates, and roughly on par with flat-Earth-theorists.
06:18:13 <pikhq> (... Particularly here. Have you *seen* the crazy shit we write?)
06:18:46 <Khazar> i once knew a nigger named esoteric
06:18:54 <Gregor> It's too bad that "recursos" means "resources" instead of "recursive", "recursive humans" == an awesome concept :P
06:19:02 <Khazar> he had a sister named shaquanda
06:19:16 <coppro> New idea: let's all /ignore
06:19:23 <coppro> 3, 2, 1, go
06:19:26 <pikhq> Khazar: Would you please be so kind as to inform us of the reasons for your opinion?
06:19:44 <Gregor> pikhq: Oh dear :P
06:19:50 <pikhq> I am certain that they are detailed, profound, and may well be enlightening as to certain aspects of the human condition.
06:20:23 <Khazar> Average Human IQ 100 Average Nigger IQ 80 Of course there are negroes that have normal IQs, but you are much more likely to run into a feral ape
06:20:28 <Khazar> than a magic negro
06:20:42 <Khazar> many who don't see this have been isolated from the bulk of the nigger population
06:20:49 <Khazar> and just know a few magic ones in the workplace
06:20:55 <Gregor> Well, with such "compelling" evidence as that, I'm sure convinced haw haw X-D
06:21:16 -!- Khazar has quit (Quit: Haiti=Mierda).
06:21:21 <Gregor> Daaaamn :P
06:21:28 <Gregor> Magic ones are OK I guess.
06:21:29 <pikhq> Alas.
06:21:33 <Gregor> I know a few magic ones.
06:21:56 <pikhq> I guess we need to sprinkle some pixy dust on everyone.
06:22:02 <pikhq> Thus making magical negroes.
06:22:09 <Gregor> Sounds about right to me.
06:22:19 <pikhq> (*Everyone* to allow for the possibility of racial mixes, of course.)
06:22:26 <Gregor> Naturalismo.
06:22:38 <Gregor> Now, let us discuss recursive humans.
06:22:53 <Gregor> I think something along the lines of Russian nesting dolls.
06:22:57 <pikhq> The idea intrigues me, and I would like to subscribe to relevant newsletters.
06:23:03 -!- coppro has quit (Remote host closed the connection).
06:24:00 -!- coppro has joined.
06:43:24 -!- ElMexicano has joined.
06:43:26 <ElMexicano> It is time to put those Haitian jigaboos in their place! No matter how many times the civilized world donates money, opens schools, rebuilds their nation, and holds their little monkey paws, the damn niggers can never get it right. They never will! The same goes for New Orleans! Cancun in Mexico suffered few fatalities after their major hurricane, and the rebuilding is already completed. Wha
06:43:26 <ElMexicano> t have the niggers in New Orleans done? If you are sick of this, join Chimpout Forum! http://www.chimpout.com/forum We welcome all races except for NIGGGGGGGERS! We are not white supremacists, just negro inferiorists! http://www.chimpout.com/forum
06:44:01 <pikhq> ElMexicano: It remains unintelligent here.
06:44:27 <Gregor> OK, the straight-up reappearing and pasting the same thing is bizarre :P
06:44:34 <pikhq> Yeah.
06:45:21 <pikhq> ElMexicano: なぜ、おメキシコ人、それと思うかな。
06:46:02 <Gregor> pikhq: Google translates that as "Why Mexicans us, I think it is." :P
06:46:12 <Gregor> Not the most understandable translation I've ever seen.
06:46:23 <pikhq> Gregor: That's because Japanese is a royal pain to translate.
06:46:30 <pikhq> *Highly* context-dependent.
06:46:44 <pikhq> That is "Why, oh Mexican, do you think that?"
06:47:17 <pikhq> Should've done it in keigo so I could translate it was "Wherefore doth thou think that, most honerable Mexican?"
06:47:48 <Sgeo> Could be bots
06:48:21 <Sgeo> -ElMexicano- VERSION xchat 2.8.6 Ubuntu
06:48:22 <pikhq> Unfortunately, I can't remember the appropriate verb.
06:48:37 <Sgeo> ElMexicano, are you, in fact, a human? Prove it.
06:52:21 <pikhq> Apparently not.
06:52:33 <ElMexicano> It is time to put those Haitian jigaboos in their place! No matter how many times the civilized world donates money, opens schools, rebuilds their nation, and holds their little monkey paws, the damn niggers can never get it right. They never will! The same goes for New Orleans! Cancun in Mexico suffered few fatalities after their major hurricane, and the rebuilding is already completed. Wha
06:52:33 <ElMexicano> t have the niggers in New Orleans done? If you are sick of this, join Chimpout Forum! http://www.chimpout.com/forum We welcome all races except for NIGGGGGGGERS! We are not white supremacists, just negro inferiorists! http://www.chimpout.com/forum
06:54:33 -!- ElMexicano has quit (Quit: Haiti=Mierda).
06:54:37 -!- Chazz has joined.
06:54:57 <coppro> Hey Chazz
06:55:07 -!- werdan7 has joined.
06:55:11 <Chazz> Hai
06:56:18 * Sgeo points to the channel logs
06:57:45 <coppro> he seems to be using a single hostname
06:58:46 <pikhq> Yeah.
07:10:15 <augur> who wants to hear some obnoxious bullshit from contemporary formal semanticists? :D
07:15:58 <Gregor> ALWAYS
07:16:19 <augur> Gregor: OK
07:16:47 <augur> so apparently these nutballs try to account for the meaning of modal adjectives like, say, "always"
07:16:53 <augur> using the following _syntactic_ structures
07:17:40 <Gregor> Transforming the meaning of "always" into something purely syntactic...?
07:17:50 <augur> [λs [s [ssh [always [λr [r [John complained]]]]]]]
07:18:07 <augur> no, they just try to invent a shit ton of extra syntax so that the syntax maps neatly into logic
07:19:13 -!- Linuxiano has joined.
07:19:25 <Linuxiano> It is time to put those Haitian jigaboos in their place! No matter how many times the civilized world donates money, opens schools, rebuilds their nation, and holds their little monkey paws, the damn niggers can never get it right. They never will! The same goes for New Orleans! Cancun in Mexico suffered few fatalities after their major hurricane, and the rebuilding is already completed. Wha
07:19:25 <Linuxiano> t have the niggers in New Orleans done? If you are sick of this, join Chimpout Forum! http://www.chimpout.com/forum We welcome all races except for NIGGGGGGGERS! We are not white supremacists, just negro inferiorists! http://www.chimpout.com/forum
07:20:03 <augur> *sigh*
07:20:06 <augur> lament!
07:20:50 <Gregor> augur: Just to be clear, that's the sentence "John always complained", yes?
07:20:52 <Gregor> Or something along those lines.
07:20:56 <augur> yes.
07:21:19 <augur> the best argued syntax for that is at most [always [John complained]]
07:21:44 <augur> but typical semanticists add in a whole bunch of other shit because otherwise they cant explain anything
07:22:04 <Gregor> That is the way of formal semantics :P
07:22:16 <augur> its not
07:22:22 <augur> there are some formal semanticists that dont do that
07:22:31 <Gregor> If I knew the context I could maybe understand what function each additional layer serves, but I'm too tired and need to sleep, so I'll do that instead :P
07:22:39 <augur> its just annoying that they stick the shit into the syntax not the semantics
07:22:44 <augur> ah well ok
07:22:49 <augur> its basically
07:23:18 <augur> s, ssh, and r are situation variables
07:23:27 <augur> john is just some person value lets say
07:23:46 <augur> complained is a function of type Ind -> Sit -> Bool
07:24:02 <augur> always is of type (Sit -> Bool) -> Sit -> Sit -> Bool
07:24:52 <augur> so if this were in haskellish
07:25:44 <pikhq> ... Sticking semantics into syntax = failure.
07:25:50 <augur> \s -> always (\r -> (complained John r)) ssh s
07:26:09 <augur> pikhq: its so true.
07:26:31 <augur> i mean, its one thing if you map from one to the other relatively transparently or something
07:26:46 <augur> but to use your syntax as a place to encode your logical objects
07:26:55 <augur> the whole theory just blows up and becomes incredibly complex
07:31:37 <Linuxiano> It is time to put those Haitian jigaboos in their place! No matter how many times the civilized world donates money, opens schools, rebuilds their nation, and holds their little monkey paws, the damn niggers can never get it right. They never will! The same goes for New Orleans! Cancun in Mexico suffered few fatalities after their major hurricane, and the rebuilding is already completed. Wha
07:31:41 <Linuxiano> t have the niggers in New Orleans done? If you are sick of this, join Chimpout Forum! http://www.chimpout.com/forum We welcome all races except for NIGGGGGGGERS! We are not white supremacists, just negro inferiorists! http://www.chimpout.com/forum
07:32:29 * Sgeo pokes werdan7
07:36:45 -!- Linuxiano has quit (Quit: Haiti=Mierda).
07:41:27 <Gregor> `translate mierda
07:41:36 <HackEgo> crap
07:54:43 <uorygl> `translate No hagas mierda estúpida.
07:54:45 <HackEgo> Do not do stupid shit.
07:55:00 <uorygl> Darn these inconsistent translations.
07:55:52 <uorygl> `translate Con voz como John Scott / Ronco, ronco / Formó todos los coros
07:55:55 <HackEgo> With a voice like John Scott / snoring, snoring / formed the choirs
07:56:30 <uorygl> `translate Con voz como John Scott / Ronco, ronco / Formó todos los coros / Tocó: Doblo con Mollo, bombo con Moro, / tom tom con Porno, joropo con Tormo, bongó con Don Johnson / Tocó con Toto, los Lobos, los Door, los Moscos / Compró dos vox
07:56:32 <HackEgo> the flies / bought two vox
07:56:44 <uorygl> `translate Con voz como John Scott / Ronco, ronco / Formó todos los coros / Tocó: Doblo con Mollo, bombo con Moro, / tom tom con Porno, joropo con Tormo, bongó con Don Johnson
07:56:46 <HackEgo> With a voice like John Scott / snoring, snoring / formed the choirs / played: Double Mollo, hype with Moro, / tom tom for Porno, joropo with Tormo, bongo with Don Johnson
07:58:01 <uorygl> `translatefromto en es The others are crazy; I know them; I don't support them.
07:58:03 <HackEgo> Los otros son locos, yo los conozco, yo no los admite.
07:59:35 <uorygl> `translatefromto As I eat how I eat, nothing swims at all; nothing swims at all like I eat.
07:59:37 <HackEgo> No output.
07:59:43 <uorygl> `translatefromto As I eat how I eat, nothing swims at all.
07:59:45 <HackEgo> No output.
07:59:56 <uorygl> `translatefromto en es As I eat how I eat, nothing swims at all; nothing swims at all like I eat.
07:59:58 <HackEgo> Como yo como cómo comer, nada nada en absoluto, nada en nada como comer.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:00:15 <uorygl> `translate Como como como como como como como como.
08:00:17 <HackEgo> How how how how how how how how.
08:00:32 <uorygl> `translate Como nada nada como nada como como nada nada como como nada como nada nada como.
08:00:35 <HackEgo> As nothing like nothing like nothing like nothing like nothing like nothing like nothing like anything.
08:03:01 <uorygl> `translatefromto en es Whence do I insist that thou beest?
08:03:03 <HackEgo> żDe dónde puedo insistir en que beest tú?
08:04:20 <Chazz> o.O
08:04:43 <uorygl> `translate The quick brown fox jumpeth over the lazy dog.
08:04:46 <HackEgo> var sl_select, tl_select, web_sl_select, web_tl_select;var ctr, web_ctr, h;var tld = ".com";var sug_lab = "";var sug_thk = "";var sug_exp = "";var dhead = "Dictionary";var dmore = "View detailed dictionary";var tr_in = "Translating...";var isurl = "";var show_roman = "Show romanization";var hide_roman =
08:04:55 <uorygl> `translatefromto en es The quick brown fox jumpeth over the lazy dog.
08:04:57 <HackEgo> El rápido jumpeth el saxofón detrás del palenque de paja.
08:06:26 <uorygl> `translatefromto en es The large round potato jumpeth over the square ruse.
08:06:28 <HackEgo> La gran jumpeth patata redonda sobre el ardid cuadrados.
08:07:00 <uorygl> `translatefromto en es In computer science, the term type punning referreth to a programming technique that subverteth or circumventeth the type system of a programming language.
08:07:02 <HackEgo> En informática, el término tipo referreth juegos de palabras a una técnica de programación que subverteth o circumventeth el sistema de tipo de un lenguaje de programación.
08:10:35 -!- Chazz has quit (Read error: Connection reset by peer).
08:31:47 <lament> what what
08:32:12 <lament> oh mexicans
08:33:20 -!- ChanServ has set channel mode: +o lament.
08:33:25 -!- lament has set channel mode: +b *!*@*.cable.dyn.cableonline.com.mx.
08:33:29 -!- lament has set channel mode: -o lament.
08:34:07 <lament> it's strange that one of his nicks was khazar
08:36:04 * augur shrugs
08:36:08 <augur> crazy people
08:37:05 <lament> also his platform is silly
08:37:23 <lament> "we're not white supremacists, just negro inferiorists"
08:37:33 <augur> well its true
08:37:37 <augur> if hes mexican, hes not white
08:37:43 <lament> well sure
08:37:48 <augur> but he still hates black people
08:37:53 <lament> but it seems like it would be hard to find support
08:38:00 <lament> since if someone hates blacks, he's probably racist
08:38:01 <augur> inside the US maybe :p
08:38:08 <lament> and so hates other races too
08:38:14 <augur> lots of people outside the US are overtly racist
08:38:16 <augur> oh yes, this is true
08:54:19 -!- amca has joined.
09:07:07 -!- tombom has joined.
09:24:44 -!- adam_d has joined.
09:41:37 -!- adu has joined.
09:51:33 -!- Leonidas has quit (Remote host closed the connection).
09:51:36 -!- Leonidas has joined.
09:57:13 -!- oerjan has joined.
10:21:47 -!- jcp has quit (Quit: I will do anything (almost) for a new router.).
10:25:20 -!- oerjan has quit (Quit: leaving).
11:11:39 -!- adu has quit (Quit: adu).
11:14:23 -!- amca has quit (Quit: Farewell).
11:30:02 -!- sebbu2 has joined.
11:32:38 -!- sebbu has quit (Ping timeout: 246 seconds).
11:35:24 <AnMaster> does anyone know if it is possible on 32-bit x86, to atomically write or read a 64-bit integer from memory?
11:35:35 <AnMaster> without mutexes or such I mean
11:36:14 <olsner> you do have cmpxchg8b
11:36:29 <olsner> and maybe lock prefixes work for 8-byte accesses
11:36:34 <AnMaster> olsner, yes, but that doesn't help for plain read or write
11:36:37 <AnMaster> afaik
11:36:53 <AnMaster> olsner, what if you want to read without changing the value, but want to do so atomically
11:38:29 <AnMaster> olsner, for the use case I consider, any sort of mutexes or such just have way too much overhead
11:39:16 <AnMaster> and collisions are extremely likely.
11:42:25 <AnMaster> olsner, the use case is async threaded funge. And specifically it's funge space. Assuming we have (part of it) implemented as a static non-sparse array, and the rest of it as a tree structure or hash table, then it should be possible I think to only require locking for the the non-static part
11:42:46 <AnMaster> and since most programs operate around origo, this should help quite a bit
11:42:56 <AnMaster> the issue is how to handle 64-bit funge on 32-bit systems
11:43:28 <olsner> looks like you need cmpxchg8b - if you just use the same value for the comparison and the exchange, you'll get the current value read back into edx:eax ... not sure how to do writing easily though (except spinning until you get two consecutive exchanges in between another writer)
11:43:39 <AnMaster> hm
11:43:45 <olsner> *lock cmpxchg8b, that is
11:44:04 <AnMaster> sounds somewhat messy but okay
11:44:22 <AnMaster> I guess atomically writing or reading the native word size on both x86 and x86_64 should be trivial?
11:44:51 <olsner> iirc, simple memory transfers in the native word size are always atomic
11:45:28 <olsner> which could mean that 64-bit access in 32-bit mode *on 64-bit hardware* is also atomic
11:45:36 <AnMaster> olsner, how backwards
11:45:48 <AnMaster> but what about the actual MMU and system bus and so on
11:45:59 <AnMaster> isn't there a possibility of that causing a mess there?
11:46:28 <AnMaster> olsner, and can you do 32-bit atomic reads, writes and CAS on x86_64 in 64-bit mode?
11:46:53 <AnMaster> that is, without causing it to operate on 32 extra bits you don't want to touch
11:47:13 <olsner> it does get messy in the rest of the system, but there are synchronization protocols for that, like making sure that only one cpu "owns" memory for write access at any time
11:47:36 <AnMaster> olsner, you mean cache coherency and such?
11:47:44 <olsner> yes, exactly... it also gets extra messy with NUMA, if you want to do atomic stuff to another cpu:s memory
11:47:59 <AnMaster> olsner, I don't own a numa system, so I can't test
11:48:10 <AnMaster> oh btw, is L1 data cache coherrent?
11:48:37 <AnMaster> iirc I read somewhere there are some restrictions on L1 instruction cache, but I have no idea about L1 data cache
11:48:54 <olsner> iirc, recent AMD multi-core systems are all numa, they split up the memory between the cpu:s
11:50:19 <AnMaster> olsner, I have a 64-bit sempron that is not SMP or multicore, plus a core2duo system
11:50:31 <AnMaster> so only the latter allows me to test this
11:51:18 <AnMaster> olsner, btw, do you happen to know any sort of concurrent-access hash table or balanced tree thingy?
11:51:26 <AnMaster> RCU seems to have a high update overhead
11:51:56 <olsner> testing doesn't prove the absence of bugs though... what you want to do is get to the bottom of which guarantees you actually have according to the x86 specs :)
11:52:11 <AnMaster> multiple readers, and preferably "multiple writers-in-different-parts" should be supported
11:52:45 <AnMaster> olsner, of course. But testing is required to see that I didn't mess up something
11:53:24 <AnMaster> also implementing this won't happen straight away. Consider the current stage early investigation of what possibilities I have for it
11:53:43 -!- MigoMipo has joined.
11:54:57 <AnMaster> olsner, also how does out of order execution affect this sort of things
11:55:08 <AnMaster> hrrm
11:55:27 <AnMaster> well that shouldn't be a problem unless it splits up a single read or write
11:56:50 <AnMaster> and the LOCK prefix seems to force a memory barrier according to AMD docs at least
11:57:27 <olsner> some care will be required, to say the least
11:58:25 <AnMaster> olsner, of course
11:58:46 <olsner> not sure if any of it will cause problems, but you best prove that it won't :P
11:59:27 <AnMaster> olsner, also I suspect that 64-bit cells would be faster than 32-bit cells, due to less data being in each cache line -> less chance of two threads fighting over same cache line
12:00:25 <AnMaster> for "normal" funge 64-bit cells are somewhat slower than 32-bit cells, on x86_64. Most likely for the same (or rather, opposite) reason
12:00:39 <AnMaster> s/for the same/due to the same/
12:06:04 <AnMaster> olsner, it seems LOCK XCHG can be used for stores
12:06:49 <AnMaster> I guess to optimise this, the funge *implementation* should self modify to only use it in case of multiple threads
12:06:58 <AnMaster> XD
12:07:06 <olsner> does xchg work for 64-bit words though?
12:08:02 <AnMaster> hm good point *opens another pdf*
12:08:59 <AnMaster> olsner, there is an 64-bit form
12:09:09 <AnMaster> and there is nothing saying that LOCK prefix doesn't work for it
12:09:16 <AnMaster> that is on x86-64 though
12:09:24 <AnMaster> not sure about 64-bit on 32-bit
12:11:28 -!- MizardX has joined.
12:12:26 <AnMaster> olsner, what I can't figure out is if lock xchg is required if you don't care about the data being visible right way
12:12:56 <AnMaster> specifically, what if you do a normal write, then another cpu does a normal write to the same cache line, but not to the same specific address
12:13:21 <AnMaster> will the first write get lost if it wasn't flushed to main memory yet
12:13:33 <AnMaster> I suppose it shouldn't...
12:16:03 <fizzie> AnMaster: I just went and wrote a JSON parser in Forth, because I could not think of anything more sensible. I'm classifying this as your fault too.
12:16:08 <olsner> I think it's set up so that it won't be cached in more than one place if anyone writes
12:17:10 -!- BeholdMyGlory has joined.
12:20:14 <AnMaster> fizzie, ?
12:20:46 <AnMaster> fizzie, now write a FORTH-to-JSON serialiser and deserialiser
12:20:57 <AnMaster> alternatively, use xml instead of json
12:20:59 -!- MissPiggy has joined.
12:21:10 <AnMaster> in both cases the result is something that should never have existed
12:21:34 <AnMaster> olsner, hm
12:23:01 <AnMaster> I wonder what mmap()ing /dev/mem does
12:23:10 <AnMaster> I don't dare test that though
12:24:00 <olsner> mmap:ing /dev/mem sounds like a sensible way to use it
12:24:11 <AnMaster> har
12:24:16 <olsner> address space is usually larger than the amount of physical memory anyway
12:24:18 <AnMaster> olsner, it is a char device, not a block device
12:24:34 <AnMaster> which makes me think it can't be used that way
12:24:53 <fizzie> AnMaster: Forth is a bit too low-level for "sensible" serialization to any structured format. There's cells, floating-point values and blocks of memory; that's about it. (And of course no run-time type information anywhere.) I could of course serialize some custom-defined structures into JSON, but...
12:25:16 <AnMaster> fizzie, well, write a FORTH interpreter that reads the program fro ma JSON format then!
12:25:28 <AnMaster> from a*
12:27:20 <fizzie> What I have now parses JSON into (type, data) pairs, where the types map mostly to JSON types (bool, int, float, string, array, object) and data is two cells (the value 0 or -1 for bool, a signed-integer cell for int, a float for a float, a pointer-length pair for a string, a pointer-length pair for an array and a pointer to unbalanced binary tree "string => json-value" map for an object).
12:28:02 <AnMaster> fizzie, I didn't know Forth had pairs
12:28:06 <olsner> AnMaster: the man page for mem links to mmap :)
12:28:20 <AnMaster> olsner, mem(4)?
12:28:21 <AnMaster> not here
12:28:35 <fizzie> AnMaster: It's not a native pair, of course; just a memory block the size of three cells.
12:28:40 <AnMaster> SEE ALSO
12:28:41 <AnMaster> chown(1), mknod(1), ioperm(2)
12:28:42 <AnMaster> is all
12:28:53 <olsner> hmm, probably got a different manpage that, it was mem(7D)
12:29:03 <AnMaster> olsner, I don't have mem(7D)
12:29:11 <AnMaster> I don't even have 7D at all
12:29:41 <AnMaster> olsner, what weird OS is it?
12:29:49 <fizzie> SunOS at least has a 7D section.
12:29:51 <fizzie> (For devices.)
12:29:57 <AnMaster> when googling, the only 7D I can find is indeed SunOS
12:30:01 <olsner> I googled, so that wasn't even linux
12:30:04 <AnMaster> ah
12:30:21 <olsner> but it'd be screwed up not to be able to mmap it :)
12:30:39 <AnMaster> olsner, you could use normal fseek and such on it
12:30:57 <olsner> yeah, but how irksome
12:32:05 <fizzie> You can mmap /dev/mem, according to kernel sources:
12:32:07 <fizzie> * capabilities for /dev/mem, /dev/kmem and similar directly mappable character
12:32:07 <fizzie> * devices
12:32:07 <fizzie> * - permits shared-mmap for read, write and/or exec
12:32:07 <fizzie> * - does not permit private mmap in NOMMU mode (can't do COW)
12:32:07 <fizzie> * - no readahead or I/O queue unplugging required
12:32:40 <AnMaster> mhm
12:32:56 <AnMaster> fizzie, what file is that from?
12:33:05 <fizzie> fs/char_dev.c
12:33:11 <AnMaster> also mmaping a char device seems just backwards to me
12:33:27 <AnMaster> and well, I have no clue what the heck readahead would *mean* on /dev/mem
12:34:26 <AnMaster> fizzie, also, iirc /dev/mem is restricted these days to only allow BIOS and PCI space or such (needed for X)
12:34:36 <AnMaster> well, it's a kernel option
12:34:45 <AnMaster> pretty sure I have it turned on
12:34:51 <fizzie> Yes, I seem to remember reading a description like that.
12:35:04 <AnMaster> and I don't even have a /dev/kmem
12:35:08 <AnMaster> for some unknown reason
12:35:32 <AnMaster> further, I wonder what grepping /dev/mem would do
12:35:39 <AnMaster> I don't want to actually try that either
12:36:09 <AnMaster> man mem says "Examining and patching is likely to lead to unexpected results when read-only or write-only bits are present."
12:36:34 <AnMaster> which I guess refers to the page flags
12:37:18 <fizzie> "CONFIG_STRICT_DEVMEM: -- If this option is switched on, the /dev/mem file only allows userspace access to PCI space and the BIOS code and data regions. This is sufficient for dosemu and X and all common users of /dev/mem. If in doubt, say Y."
12:38:48 <AnMaster> fizzie, and I presume /dev/kmem can be turned off elsewhere?
12:40:06 <fizzie> Possibly. Or it might be that it's just not generated by default nowadays and you have to manually make the device node if you want it. I'm not sure I want to start source-diving for it.
12:40:47 <AnMaster> fizzie, my laptop which is on an older kernel has /dev/kmem
12:40:54 <AnMaster> but then it is also on a distro generic kernel
12:40:58 <AnMaster> unlike my desktop
12:41:57 <fizzie> I don't seem to have /dev/kmem either on this desktop.
12:43:06 <AnMaster> fizzie, strange, om my laptop I also have /dev/oldmem
12:43:17 <AnMaster> $ ls -l /dev/*mem
12:43:17 <AnMaster> crw-r----- 1 root kmem 1, 2 2009-07-25 23:32 /dev/kmem
12:43:17 <AnMaster> crw-r----- 1 root kmem 1, 1 2010-03-05 11:17 /dev/mem
12:43:18 <AnMaster> crw-rw---- 1 root root 1, 12 2010-03-05 11:17 /dev/oldmem
12:43:30 <AnMaster> whatever that is
12:44:38 <AnMaster> grepping sources on there turns up just one hit
12:44:41 <AnMaster> ./include/linux/crash_dump.h:extern ssize_t copy_oldmem_page(unsigned long, char *, size_t,
12:44:45 <AnMaster> and that doesn't seem relevant
12:44:54 <AnMaster> oh wait that is just headers
12:44:55 <AnMaster> not sources
12:45:40 <AnMaster> hm
12:45:42 <AnMaster> #ifdef CONFIG_CRASH_DUMP
12:45:42 <AnMaster> [12] = { "oldmem", 0, &oldmem_fops, NULL },
12:45:42 <AnMaster> #endif
12:45:49 <AnMaster> from drivers/char/mem.c
12:47:09 <fizzie> There seems to be a CONFIG_DEVKMEM flag, I just didn't notice it in the configura-a-tron.
12:47:26 <AnMaster> fizzie, "configura-a-tron"?
12:47:36 <fizzie> make menuconfig, or such.
12:47:41 <AnMaster> fizzie, I meant the spelling
12:47:43 <AnMaster> not the meaning
12:47:53 -!- oklokok has quit (Remote host closed the connection).
12:47:53 <fizzie> "Say Y here if you want to support the /dev/kmem device. The /dev/kmem device is rarely used, but can be used for certain kind of kernel debugging operations. When in doubt, say "N"."
12:48:08 <fizzie> It's just random irregular spellamatics.
12:48:16 -!- oklokok has joined.
12:48:31 <AnMaster> fizzie, I meant the a at the end of the first word should be an e
12:50:38 <fizzie> Not if it's from the word "configurator".
12:50:50 <fizzie> "Welcome to the prerelease of Adobe® Configurator. Configurator is an open source utility that enables the easy creation of panels (palettes) for use in ..."
12:50:53 <fizzie> See, a real word.
12:51:31 <AnMaster> heh
12:53:20 <fizzie> I can't find any other JSON libraries for Forth by googling (at least on the first three pages of results). I may have found an untapped market here.
12:55:12 -!- tombom has quit (Ping timeout: 258 seconds).
12:55:53 <AnMaster> fizzie, so publish the thing XD
12:56:19 <AnMaster> fizzie, now you need to write an XML DOM thingy with xpath support for Forth too!
12:56:35 -!- tombom has joined.
12:59:07 -!- kar8nga has joined.
13:02:33 <AnMaster> fizzie, is there any way to list kexec loaded kernels btw?
13:05:44 <AnMaster> [85909.348091] sdhci-pci 0000:15:00.2: Will use DMA mode even though HW doesn't fully claim to support it.
13:05:48 <AnMaster> how reassuring!
13:05:52 <AnMaster> fizzie, ^
13:07:52 <fizzie> I have about three zillion lines of
13:07:54 <fizzie> ehci_hcd 0000:00:12.2: force halt; handhake ffffc90000072024 0000c000 00000000 -> -110
13:07:57 <fizzie> in my dmesg buffer.
13:08:08 <fizzie> I'm not sure I want to know what "handhake" is.
13:08:13 <AnMaster> fizzie, something strange with usb 2.0 it sounds like
13:12:55 <AnMaster> fizzie, look for what usb device might cause it
13:13:04 <AnMaster> lsusb and look for "0000:00:12.2" perhaps
13:13:23 <AnMaster> well, it would be split up there
13:13:33 <fizzie> It's no longer connected; based on timestamps I think that was around when I used that USB sound stick thing.
13:13:48 <AnMaster> sound stick?
13:14:07 <fizzie> It sounds stupid to call it a "sound card" when it doesn't resemble a card at all.
13:14:27 <AnMaster> aah
13:14:33 <AnMaster> did it work well?
13:14:53 <fizzie> Yes, no problems there.
13:15:46 <AnMaster> hm
13:15:55 <fizzie> http://www.terratec.net/en/products/Aureon_Dual_USB_9842.html -- got that in order to get optical s/pdif out of the iBook back when I was using it as a TV box.
13:17:40 <AnMaster> ah
13:18:23 <AnMaster> fizzie, what exactly is wrong with normal copper for audio?
13:19:03 <AnMaster> wow, they explicitly support linux
13:19:05 <AnMaster> that's unusual
13:20:58 -!- ais523 has joined.
13:21:36 <fizzie> Well, nothing wrong with coaxial s/pdif either, but the iBook only has one 3.5mm headphone plug, no other audio outputs at all.
13:22:09 <ais523> nothing wrong with 3.5mm headphone plugs
13:22:29 <fizzie> And for some reason or another, the output from that was pretty noisy when connected to the amplifier; whereas with digital output there's of course no noise to speak of.
13:23:42 <AnMaster> fizzie, why s/pdif?
13:23:54 <AnMaster> ah
13:23:56 <AnMaster> well
13:24:07 <AnMaster> a good 3.5mm plug should be just as good
13:24:13 <AnMaster> of course, a noisy one is rather strange
13:25:33 -!- uorygl has quit (Read error: Connection reset by peer).
13:25:48 -!- uorygl has joined.
13:25:58 <fizzie> I don't know about that; at least with digital connections you get the d/a conversion done at the amplifier, which is a bit more audibly oriented device than a regular PC box. (I'm sure that the outputs from a real sound card would be a different thing.)
13:28:01 <fizzie> Also, I could get multichannel sound out from the iBook through that thing. It's just that with only two speakers connected to the amplifier, the benefits of that are a bit theoretical.
13:39:30 <AnMaster> fizzie, does the amplifier beat a sb live?
13:40:26 <fizzie> I have no idea about that, but at least it's bound to be reasonably good, as opposed to the sort of random motherboard-integrated stuff I otherwise have.
13:40:39 <fizzie> I did say that a real sound card might have also helped.
13:40:45 <AnMaster> well yes
13:40:55 <AnMaster> I was just trying to compare it to my "real soundcard"
13:41:57 <fizzie> I am not aware of any benchmarks, really.
13:42:17 <fizzie> It's a harman/kardon AVR-147; the manufacturer is reasonably well-known.
13:43:03 <fizzie> "A 24-Bit/twin-core Cirrus Logic CS 49510 DSP processor with 32-bit post processor and 192kHz/24-bit D/A conversion", say the marketing hype, but of course you never know.
13:43:42 <fizzie> And given that it's generally just 16-bit 48/44.1 kHz digital stuff that gets sent over the s/pdif link, I'm not sure how much that matters.
13:45:23 <AnMaster> heh
13:47:20 <fizzie> I'm not even sure if the S/PDIF link supports all that. The standard sample resolution for s/pdif seems to be 20 bits, and 24-bit samples are a bit of a hack.
13:50:24 <AnMaster> heh
13:50:30 <AnMaster> only 24 bits? ;P
13:51:23 <AnMaster> it should be represented as an accurate physics model of the source using numbers from R or something!
13:52:05 <fizzie> The owner's manual is silent about whether it supports the s/pdif 24-bit thing, but at least the straight 2-channel PCM digital input "only" goes up to 96 kHz sample rates.
13:53:55 <fizzie> It does support decoding the 5.1 surround DTS 96/24 format, which technically speaking is 24 bits and 96 kHz, but that involves some compression, I think.
13:55:20 <fizzie> I am a bit doubtful whether the alsa drivers would know how to stick 96 kHz 24-bit samples out of the pipe anyway, even if it supported that.
13:56:21 <AnMaster> fun... http://en.wikipedia.org/wiki/Thread_join redirects to thread, and that doesn't explain what thread join is...
13:58:55 <fizzie> Quick history-browsing seems to suggest that it didn't explain joins back when the redirect was made, either.
13:59:04 <AnMaster> indeed
14:20:44 <cheater2> bored
14:21:15 <MissPiggy> cheater, watch videos about technological singularity: http://www.youtube.com/user/singist
14:22:46 <AnMaster> "This would be cleaner in C++ with templates." <-- shudder, this is from a README of a library in C
14:22:57 <AnMaster> also I can't imagine how it would be cleaner:
14:23:06 <AnMaster> "The cleanest way to use these routines is probably to define the stack node type with an initial AO_t link field, so that the conversion between the link-field pointer and the stack element pointer is just a compile-time cast. But other possibilities exist. (This would be cleaner in C++ with templates.)"
14:23:13 <AnMaster> is the full paragraph
14:23:37 <AnMaster> oh and this is from libatomic_ops, which is bundled with libgc
14:25:38 <AnMaster> lockless two-thread concurrent stack seems fun
14:29:22 -!- oklokok has quit (Ping timeout: 265 seconds).
14:32:47 -!- ais523 has changed nick to ais523|away.
14:33:18 -!- ais523|away has changed nick to ais523.
14:33:22 -!- FireFly has joined.
14:34:02 -!- alise has joined.
14:35:04 -!- augur has quit (Quit: Leaving...).
14:35:39 <alise> so I'm trying to define induction on the naturals set-ly
14:35:42 <alise> I think it's
14:35:59 <MissPiggy> define? as an axiom?
14:36:08 <alise> well, just formulate
14:36:10 <MissPiggy> you could look up set theory if you want the answers
14:36:17 <alise> i know that
14:36:27 <alise> i didn't mean like that
14:36:30 <MissPiggy> do you take back what you said yesterday
14:36:37 <alise> what exactly
14:36:48 <MissPiggy> when I said enjoy your russles paradox then you called me an idiot
14:37:06 <MissPiggy> (other than not being able to spell russell)
14:37:08 <alise> i mean obviously we state it as intersect(P(0), (forall n. intersect(P(n), P(S(n)))) subset-of (forall n. P(n))
14:37:13 <alise> MissPiggy: no
14:37:26 <alise> well, I take back that you're an idiot personally
14:37:29 <alise> but your statement was idiotic
14:37:41 <alise> you can perfectly well have set builder notation without russell popping in
14:37:50 <alise> it's just sugar...
14:38:05 <MissPiggy> you can't have self application of functions though
14:38:14 <MissPiggy> (functions defined in the usual way)
14:38:19 <alise> well forall n. blah is isomorphic to function from n to blah and I have that so
14:38:36 <alise> MissPiggy: yeah i'm gonna have to work out a nice way to combine all this
14:39:29 <MissPiggy> you can model lambda calculus in set thoery, that's scott domains and such
14:39:49 <alise> also, self application as in f(f)? or as in recursion
14:40:38 <MissPiggy> f(f)
14:41:47 <alise> I've no qualm with that.
14:41:58 <alise> I don't see f(f) as intuitively well-founded.
14:43:01 <MissPiggy> yeah because if f : A -> B, then you're saying that A -> B = A but that's a source of problems
14:43:20 <alise> Exactly.
14:43:27 <alise> Even id(id) is not neccessarily well-founded.
14:43:33 <MissPiggy> that's what I was TRYING to say the other day :P
14:43:53 <alise> So?
14:44:01 <alise> It's not Russell's paradox because you don't allow it :P
14:44:04 <MissPiggy> okay
14:44:13 <alise> And I really don't mind id(id) not being possible to be honest
14:44:30 <MissPiggy> I need to do some study today but I'm really fucking lazy
14:44:58 -!- ais523 has changed nick to ais523|away.
14:45:01 <alise> One issue I have is that I don't think !(p&!q) = the regular set of pair sfunction structure
14:45:21 <MissPiggy> !(p&!q) is classically used for p -> q?
14:45:23 <alise> it's ~(p intersect ~q)
14:45:27 <alise> MissPiggy: yeah
14:45:44 * MissPiggy never really got why people would do that .. but can't complain because it does work
14:45:48 <alise> i just think it's a nice identity :P
14:46:06 <alise> i mean it's not like you get many constructivist set theorists so
14:48:00 <alise> wait P->Q is actually P superset Q
14:48:01 <alise> not subset
14:48:27 <alise> I reasoned subset because a->b = x elem a -> x elem b = b superset-of a = a subset-of b
14:49:18 -!- ais523|away has changed nick to ais523.
14:49:55 <alise> no longer scarfaic?
14:50:06 -!- hodyna has joined.
14:50:33 <MissPiggy> yeah P->Q means P <= Q
14:51:46 <MissPiggy> because false implies everything (ex falso quodlibet) is just saying that bottom is <= anything
14:53:00 <alise> yeah
14:53:13 <alise> apparently some people write P->Q as P =) Q though
14:53:16 <alise> which is weird
14:54:01 <MissPiggy> set thoery is weird :P
14:55:28 -!- ais523 has changed nick to ais523|away.
14:55:48 -!- ais523|away has changed nick to ais523.
14:57:15 -!- alise_ has joined.
14:57:22 <alise_> anyway so
14:57:36 -!- alise has quit (Ping timeout: 252 seconds).
14:58:08 <alise_> I think {E : x <- S, y <- S, ...} is the purest form of set building
14:58:35 <alise_> but {E : P x, Q x y, ...} is easier to make useful
14:58:41 <alise_> the latter sucks though because it depends on logic
14:58:44 <MissPiggy> I think of it as syntactic sugar for the axioms
14:58:46 <alise_> whereas logic should be defined with sets
15:00:55 <alise_> also I don't think you can define the naturals with just set building which upsets me
15:01:10 <alise_> N = {0} union {{n} union n : n <- N}
15:01:17 <MissPiggy> you don't want me to give it away?
15:01:37 <alise_> Money? Please do.
15:02:03 <alise_> I'm rather strange... I know type theory but I don't even know the regular definitions used when implementing mathematics in set theory.
15:02:24 <alise_> Martin-Lob roolz, ZFC droolz.
15:06:53 <alise_> S = { (n, {n} union n) | n <- N }
15:06:57 -!- ais523 has changed nick to ais523|away.
15:07:01 <alise_> S = { {n, {n, {n} union n}} | n <- N }
15:09:08 -!- ais523|away has changed nick to ais523.
15:09:54 <alise_> I was thinking of having a nice axiom but I've forgotten where it is
15:11:18 <alise_> i think induction is the coolest thing ever. srsly
15:14:45 <MissPiggy> yeah
15:15:09 <MissPiggy> if you have a type
15:15:20 <MissPiggy> months := January | Feb....
15:15:24 <MissPiggy> then induction = case analysis
15:15:40 <MissPiggy> if you have N := O | S N, induction is the normal idea, with links to recursion
15:15:47 -!- ais523 has changed nick to ais523|away.
15:15:52 <MissPiggy> but then you get things like O := Z | S O | Lim (N -> O)
15:15:57 <alise_> it is ubiquitous
15:15:57 <MissPiggy> where you have transfinite induction
15:16:07 <MissPiggy> and beyond that you get inductive-recursive definitions
15:16:17 <MissPiggy> where you simultaneuously define a type and an elimiation on it
15:16:20 <alise_> even just induction on the naturals though, is so cool
15:16:42 <alise_> it's like we have a base, and a way to ascend... and then suddenly we ascend to infinity
15:16:51 <alise_> yes, it's a totally trivial concept
15:16:53 <alise_> but it's AWESOME
15:17:04 <MissPiggy> trivial??
15:17:55 <alise_> well as in
15:18:08 -!- ais523|away has changed nick to ais523.
15:18:11 <alise_> it's not like supergroupsetgraphtheory's metacalculus
15:18:30 <alise_> but it's so general and powerful and simple
15:18:35 -!- ais523 has quit (Remote host closed the connection).
15:21:25 <alise_> 22:16:57 <Khazar> if you are interested in such a job in irc marketing
15:21:26 <alise_> Surreal.
15:22:38 <alise_> haha magic negros what
15:22:44 <MissPiggy> ??
15:23:39 <MissPiggy> my biggest problem right now is getting some notes written
15:27:00 <alise_> grep http://tunes.org/~nef/logs/esoteric/10.03.06 for Khazar and read on
15:27:32 <alise_> hmm i wish logic was a more common foundation for mathematics than set theory, would be... logical?
15:28:15 <MissPiggy> logic as a foundation?
15:29:52 <alise_> sure. hasn't this been done, i heard something about "plural quantification" that basically let logic talk about what set theory talks about
15:31:01 * alise_ ponders: Basing forall on exists or vice versa?
15:31:50 <MissPiggy> you can implement exists in dependent type theory
15:32:03 -!- oklokok has joined.
15:32:21 -!- alise__ has joined.
15:32:48 <alise__> forall x. P == ~(exists x. ~P)
15:32:57 <alise__> exists x. P == ~(forall x. ~P)
15:33:00 <alise__> erm
15:33:02 <alise__> forall x. P == ~(exists x. ~P)
15:33:05 <alise__> exists x. P == ~(forall x. ~P)
15:33:09 <alise__> forall x. P == ~(exists x. ~P)
15:33:11 <alise__> dsfsdf
15:33:13 <alise__> sdfsdf
15:33:16 <alise__> forall x. P == ~(exists x. ~P)
15:33:20 <alise__> exists x. P == ~(forall x. ~P)
15:33:39 <alise__> "For all x, P is true." "There does not exist an x such that P is false."
15:34:05 <alise__> "There exists an X such that P." "Not for all X, P is false."
15:34:17 <MissPiggy> that's classical alise
15:34:21 <alise__> So defining forall in terms of exist is intuitively superior because "Not for all ..." reads horribly.
15:34:23 <alise__> MissPiggy: Yes, it is.
15:34:31 <alise__> I'm taking a break from constructivism just to explore.
15:34:55 <MissPiggy> disgusting.
15:35:07 <alise__> Like Haskell!
15:35:14 <alise__> MissPiggy: I presume you're not being entirely serious
15:35:20 <MissPiggy> http://i.imgur.com/vv9OO.png
15:35:22 -!- alise_ has quit (Ping timeout: 252 seconds).
15:35:25 <MissPiggy> haskell is grrrrrrreat
15:36:09 <MissPiggy> I don't like haskell because I'm too stupid to program in it
15:36:55 <MissPiggy> I write 1/4 of a progarm then get worried about its correctness and give up
15:37:33 <alise__> http://en.wikipedia.org/wiki/Plural_quantification
15:40:24 -!- oerjan has joined.
15:41:58 -!- alise__ has quit (Ping timeout: 252 seconds).
15:42:53 -!- tombom_ has joined.
15:44:01 -!- tombom has quit (Ping timeout: 276 seconds).
15:44:02 -!- alise has joined.
15:47:44 <alise> eq = {(x,x) | true} is not ok in zfc :(
15:53:02 <alise> I wonder if I should represent it as eq = { (S, {(x,x) | x <- S}) | S <- * }
15:53:10 <alise> Then eq(N) is { (0,0), (1,1), ... }
15:54:58 <alise> r2f = { (R, {(x,{(y, xRy) | y <- S}) | x <- S}) | R <- BiRel }
15:55:21 <alise> if we take eq to actually mean eq(S) then r2f(eq)(2)(2) = true, r2f(eq)(2)(4) = false
15:55:29 <alise> asuming xRy stands for (x,y) in R, which ... it does
15:56:02 <alise> of course if we allowed more sugar on top of (x,y) = {{x},{x,y}} we could just say r2f = \(R:BinRel). \(x:S). \(y:S). xRy
15:56:26 -!- ais523 has joined.
15:58:03 <alise> hi ais523
15:58:13 <ais523> hi
15:59:40 <alise> ais523: does "eq = { (x,x) | x <- someset }" make you balk?
15:59:50 <ais523> reminds me of Proud
15:59:51 <alise> (the correct answer is no)
15:59:56 <alise> whereby = i mean := that is
16:00:00 <alise> ais523: but does it make you balk?
16:00:10 <ais523> no
16:00:22 <alise> good
16:00:24 <alise> (ZFC doesn't allow it)
16:00:27 <ais523> although that sort of thing probably works better in uncomputable langs
16:00:46 <alise> it's not uncomputable at all
16:00:53 <alise> it isn't even infinite if someset isn't infinite
16:01:01 <ais523> I know
16:01:02 <alise> take someset := {1,2,3}
16:01:11 <alise> then we get eq = {(1,1), (2,2), (3,3)}
16:01:14 <ais523> oh, I thought someset included all sets, somehow
16:01:25 <alise> yeah that's inconsistent :)
16:01:36 <oerjan> alise: um of course zfc allows { (x,x) | x <- someset }
16:01:46 <alise> well yes
16:01:50 <alise> but not the combined set for all sets
16:02:02 <alise> hmm i wonder if it allows it if you exclude eq from the results
16:02:50 <oerjan> huh?
16:02:52 <alise> (x,y) := {{x},{x,y}}
16:02:53 <alise> \(x:t).y := { (x,y) | x <- t }
16:02:58 <alise> eq := \(S:Set_0). { (x,x) | x <- S}
16:03:01 <alise> oerjan: as in
16:03:17 <alise> eq := { (x,x) | x <- everything } (except there's no universal set, but)
16:03:32 <alise> imagine say forall sets s { (x,x) | x <- s }, except you exclude (eq,eq) from it
16:04:31 <oerjan> no. you cannot have {(x,x) | x is an ordinal}
16:04:40 <alise> exactly
16:04:43 <alise> but
16:04:55 <alise> there is no set of all ordinals
16:05:24 <oerjan> but excluding (eq,eq) won't be enough to exclude those
16:05:30 -!- alise_ has joined.
16:05:37 <alise_> what did i miss since my last utterance?
16:05:40 <oerjan> but excluding (eq,eq) won't be enough to exclude those
16:05:54 <ais523> <oerjan> but excluding (eq,eq) won't be enough to exclude those
16:05:56 <ais523> just one line
16:05:59 <alise_> yes but
16:06:01 <alise_> we quantify over sets
16:06:03 <alise_> and there is no set of all ordinals
16:06:07 <alise_> so that problem doesn't exist
16:06:35 <alise_> eq = union-of-forall (x:Set0). { (y,y) | x <- y }
16:06:48 <oerjan> alise: the problem is your eq contains enough members that if it were a set, you could use it to _construct_ the set of all ordinals!
16:07:46 <AnMaster> <alise> ais523: does "eq = { (x,x) | x <- someset }" make you balk? <-- what do you mean with "<-" here? "element from set"?
16:07:58 <ais523> AnMaster: it's syntax from a hypothetical lang, I think
16:08:02 <AnMaster> well sure
16:08:03 <alise_> oerjan: ah
16:08:17 <alise_> oerjan: paramaterising over the set has no problems though, does it?
16:08:18 <AnMaster> but I still wonder what it means in this context
16:08:31 <alise_> obviously if S1 /= S2, then x in S1 /= y in S2
16:08:38 <oerjan> alise_: well no, the diagonal of a set is of course a set
16:08:40 <AnMaster> alise_, ^
16:08:47 <alise_> so:
16:08:51 <alise_> eq := \(S:Set_n). { (x,x) | x <- S}
16:08:58 <alise_> Set_n meaning "work out the damn levels yourself" here ;-)
16:09:08 <alise_> then eq on two different sets is
16:09:16 <alise_> given x in S1 and y in S2
16:09:28 -!- alise has quit (Ping timeout: 252 seconds).
16:09:32 <alise_> (S1 eq S2) & (x eq(S1) y)
16:09:36 <AnMaster> *shrug* I guess you aren't going to answer it
16:09:41 <alise_> AnMaster: huh what
16:09:49 <alise_> well if you account for subsets then
16:09:50 <AnMaster> alise_, "<AnMaster> <alise> ais523: does "eq = { (x,x) | x <- someset }" make you balk? <-- what do you mean with "<-" here? "element from set"?"
16:09:54 <AnMaster> alise_, that
16:09:55 <alise_> (S1 subset-of S2) & (x eq(S2) y)
16:10:04 <alise_> AnMaster: set builder notation, look it up
16:10:09 <AnMaster> alise_, also (x,x) means what here? tuple construction?
16:10:19 <alise_> (x,y) is {{x},{x,y}}.
16:10:35 <AnMaster> alise_, I have not seen <- in set builder notation
16:10:41 <alise_> wait then (x,x) is not okay
16:10:44 <alise_> AnMaster: well it means in
16:10:45 <alise_> so there :P
16:10:50 <alise_> (x,x) = {{x},{x,x}}
16:10:55 <AnMaster> alise_, why not the e-ish shape for that?
16:11:11 <alise_> and {x,x} is, well, {x}
16:11:11 <alise_> or more specifically i'm too lazy
16:11:11 <alise_> AnMaster: windows loathes unicode input
16:11:21 <alise_> well, I guess (x,x) = {{x},{x}} is fine actually
16:11:27 <alise_> except wait
16:11:32 <alise_> not really
16:11:38 <alise_> since you can't use the usual definition of second element
16:11:48 <oerjan> AnMaster: it looks like a strange hybrid between set building (with element) and list/monad comprehensions from haskell. of course for the Set monad, <- means the same as element of in set building.
16:12:03 <AnMaster> alise_, yeah I had only seen the ∈ notation for it
16:12:07 <AnMaster> thus the confusion
16:12:27 <alise_> oerjan: yeah i'm just using more convenient syntax to type out
16:12:30 <AnMaster> <- reminded me of list comprehensions though
16:12:44 <alise_> hey i can define Ethingy as a relation itself :)
16:12:52 <alise_> wait, no
16:12:58 <AnMaster> oerjan, yeah erlang has <- in list/binary comprehensions too
16:13:05 <alise_> that results in "x in y" meaning "(x,y) in 'in'"
16:13:18 <AnMaster> alise_, yearghs
16:14:03 <AnMaster> alise_, I think you need to have some operators that you can not define in terms of other ones
16:14:10 <alise_> you don't say
16:14:10 <AnMaster> that is, they are not syntax sugar
16:14:23 <alise_> they're called axioms
16:14:25 <AnMaster> alise_, captain obvious at your service!
16:14:41 <alise_> of course i'd have the definition of the 'in' relation be axiomatic but even that doesn't work :)
16:15:51 <AnMaster> alise_, what about defining x in S by using {x} ⊆ S ?
16:16:01 <AnMaster> not sure if that is completely valid
16:16:06 <alise_> then i don't need to define the in relation :P
16:16:07 <alise_> also, it is
16:16:13 <alise_> well no
16:16:19 <alise_> because you used strict subset
16:16:21 <alise_> instead of subset
16:16:22 <alise_> bad boy
16:16:23 <AnMaster> alise_, no I didn't?
16:16:32 <AnMaster> alise_, there is a line below it here
16:16:33 <alise_> or do i have that the other way around
16:16:39 <alise_> i'm so used just to using ascii notation
16:18:49 <alise_> oerjan: wait oh dear
16:19:00 <alise_> eq := \(S:Set_n). { (x,x) | x <- S }
16:19:02 <alise_> is too large too
16:19:04 <alise_> because it desugars to
16:19:19 -!- augur has joined.
16:19:27 <alise_> eq := { (S, { (x,x) | x <- S }) | S <- Set_n }
16:19:30 <alise_> oerjan: right?
16:19:59 <oerjan> *facepalm*
16:20:21 <alise_> oerjan: i feel small :P
16:20:51 <oerjan> it's a _subset_ of Set, but not an element, afaict
16:21:23 <oerjan> your contradiction only appears if you think all subsets of Set should be elements
16:21:47 <AnMaster> <alise_> i'm so used just to using ascii notation <-- I don't know what the ascii notation is for that
16:22:09 <AnMaster> the math notation is a lot easier to read due to being the way I'm used to seeing it
16:22:13 <alise_> oerjan: well I have the regular hierarchy Set_1 = {Set_0}
16:22:13 <alise_> Set_2 = {Set_1}
16:22:14 <alise_> and so on
16:22:26 <alise_> Set_0 = everything not in the Set_n hierarchy
16:22:33 <alise_> by Set_n in eq, just imagine another wrapper function with n
16:22:49 <oerjan> alise_: um shouldn't that be Set_1 = {x | x subset Set_0} ?
16:23:02 <oerjan> etc.
16:23:28 <alise_> well Set_0 elem Set_1
16:23:30 <alise_> whereby elem i mean is in
16:23:38 <alise_> eq = { (n, { (S, { (x,x) | x <- S }) | S <- Set(n) }) | n <- Nat (or some other type for the levels) }
16:23:50 <alise_> still too big
16:23:53 <oerjan> naturally, but Set_1 would contain many other elements
16:23:53 <alise_> all our eggs in one set
16:24:02 <alise_> oerjan: such as?
16:24:29 <AnMaster> alise_, what do you mean "too big"?
16:24:34 <oerjan> such as _every_ subclass of Set
16:24:40 <AnMaster> alise_, and what language is this in?
16:24:55 <alise_> AnMaster: too big meaning we can derive the set of all ordinals from it
16:25:06 <alise_> basically i'm trying to define equality as a relation without causing everything to break
16:25:07 <AnMaster> ah
16:25:08 <alise_> and set theory
16:25:15 <oerjan> alise_: take a look at Von Neumann-Bernays-Godel theory
16:25:19 <alise_> oerjan: where Set is? Set_0?
16:25:44 <AnMaster> alise_, why exactly is that bad? Allows some messy paradox?
16:25:52 <alise_> anyway, it seems to me that since all my notions are defined in terms of sets, "eq", no matter how paramaterised, is still a fucking gigantic set
16:25:56 <alise_> although... wait
16:26:27 <alise_> eq has the cardinality of the natural numbers, eq(n) has the cardinality of Set(n), eq(n)(S) has the cardinality of S
16:26:41 <alise_> so maybe if we avoid letting people combine all these into one, it's safe? oerjan?
16:29:00 <oerjan> alise_: in NBG theory, eq is a perfectly legal _class_. it is not a set.
16:29:08 <AnMaster> alise_, btw you might like this comment from a library that is embedded inside libgc: "This would be cleaner in C++ with templates."
16:29:21 <alise_> oerjan: yeah
16:29:34 <alise_> but that sort of defeats the entire point of building everything on sets
16:29:34 <oerjan> NBG only has two levels, but i guess that's easy to generalize
16:29:34 <AnMaster> (something I disagree with)
16:29:38 <alise_> AnMaster: saw, in the logs.
16:29:42 <alise_> and it's probably right
16:29:51 <AnMaster> alise_, right
16:29:52 <alise_> C is almost unusable due to its lack of parameterised types
16:30:07 <alise_> oerjan: then isn't class just = Set_1?
16:30:18 <alise_> which is the set of the set of sets
16:30:18 <AnMaster> alise_, well, here all it neded was a pointer to a special field. *shrug*
16:30:29 <alise_> well i guess "the set of" doesn't make much sense since we're not talking types hrtr
16:30:30 <alise_> *here
16:30:34 <oerjan> alise_: well possibly
16:30:41 <alise_> but i mean this is the same way you disallow russell's paradox isn't it?
16:30:51 <alise_> not allowing sets to contain members "higher" than themselves?
16:30:53 <alise_> well the traditional way
16:31:38 <oerjan> alise_: as long as you distinguish eq(n) as different levels, i think you should be fine
16:31:57 <alise_> basically all of this is leading to creating a fun lil' set theoretic esolang (Hyper Set Language is, well, not crappy but zzo38 in that it's... completely and utterly inconsistent in every way)
16:32:04 <alise_> (in the formal sense of inconsistent)
16:32:15 <oerjan> you wouldn't need an extra S parameter though - just use Set(n) ?
16:32:19 <alise_> of course i will run into problems in that set theory isn't really constructivist, for instance you won't be able to do the reals
16:32:34 <alise_> oerjan: hmm really? so eq(n) is the equivalences of every set of level n?
16:32:53 <alise_> so e.g. eq(0) is all we ever care about really
16:33:01 <alise_> since it's rare that we'll ever want to compare the Set_1, Set_2 and so on bonanza
16:33:08 <AnMaster> alise_, isn't equality a relation on sets already? Isn't it in some areas _defined_ as being the reflexive, symetric, antisymetric, and transitive?
16:33:26 <AnMaster> s/\?/ relation?/
16:33:37 <alise_> no equality isn't a real relation in zfc because it's too big
16:34:02 <AnMaster> alise_, well, I don't remember if it was zfc even I was thinking about
16:34:07 <AnMaster> or a more naive set theory
16:34:26 <oerjan> alise_: that's my intuition of it
16:34:36 <alise_> oerjan: nice
16:34:57 <alise_> of course, slight issue in that to paramaterise on level we need a function Set
16:35:05 <alise_> Set : (n:Nat) -> Set (n+1)
16:35:14 <alise_> there is a bit of a circularity here...
16:35:27 <AnMaster> alise_, wait, is eq "equals" or "equivalence"?
16:35:30 <alise_> thankfully though the result type doesn't matter in set theory
16:35:32 <AnMaster> if the latter, then ignore what I said
16:35:34 <alise_> because values aren't tied to sets
16:35:39 <alise_> AnMaster: equality
16:35:49 <alise_> oerjan: complicates the axioms, though
16:36:19 <alise_> hmm Set(n) is "the value of x in the tuple (n,x) that is in Set"
16:36:31 <alise_> so we have Set := { (0,Set_0), (1,Set_1), ... }
16:36:39 <alise_> quiz: what set level can we put Set into?
16:36:49 <alise_> it contains Set_0, it contains Set_1, ...
16:36:54 <alise_> so, great
16:36:57 <alise_> Set_omega contains Set :-)
16:37:06 <oerjan> alise_: if you take that too far i think you're going to get an inconsistency eventually
16:37:15 <oerjan> just a hunch though
16:37:41 <oerjan> a very vague one :D
16:37:43 <alise_> oerjan: yeah isn't this what principa mathematica set up only to be whooped by godel?
16:37:49 <AnMaster> alise_, all this strange ASCII notation for perfectly fine symbols confuse me :(
16:38:01 <alise_> AnMaster: oh shut up
16:38:55 <oerjan> alise_: hm, i don't really know the PM type system, or how far _up_ it goes
16:39:29 <alise_> up, up and away!
16:39:57 <oerjan> otoh "large cardinals" in my intuition is much about how to simulate this kind of stuff inside zfc
16:40:32 <alise_> mm
16:41:45 <alise_> large cardinals are hilarious
16:41:55 <alise_> dunno why i just love the huge list of them on wikipedia
16:42:27 <AnMaster> what exactly is the point of "const volatile"? No it isn't a pointer.
16:43:00 <oerjan> as in, strongly inaccessible cardinals allow you to put models of ZFC inside each other, http://en.wikipedia.org/wiki/Grothendieck_universe
16:43:02 <AnMaster> oh wait, nvm, figured it out
16:43:41 <alise_> imho zfc is pretty shitty
16:45:40 <AnMaster> <alise_> dunno why i just love the huge list of them on wikipedia <-- link?
16:45:43 <alise_> i am totally underqualified to hold that position though
16:46:26 -!- benuphoenix has joined.
16:46:35 <AnMaster> alise_, since: Large cardinal (Redirected from List of large cardinals)
16:46:41 <AnMaster> and that contains no such list
16:46:46 <AnMaster> I guess it is elsewhere?
16:47:07 <alise_> see top of article redirected to
16:47:08 <alise_> http://en.wikipedia.org/wiki/List_of_large_cardinal_properties
16:47:13 <AnMaster> ah
16:47:14 -!- benuphoenix has left (?).
16:50:49 <alise_> I should formulate my own set theory so that it can be laughed at how horrible it is
16:51:07 <pikhq> Good morrow.
16:51:55 <AnMaster> pikhq, intentional typo?
16:51:57 <alise_> !(exists x. x in {}) seems like a reasonable start
16:52:02 <alise_> no
16:52:06 <alise_> intentional untypo
16:52:27 <alise_> which is
16:52:49 -!- tombom__ has joined.
16:53:01 <alise_> !(exists x. {x} subset-of {})
16:53:18 <alise_> then
16:53:23 <alise_> forall x. x superset-of {}
16:55:30 <alise_> AnMaster: actually i think in is more fundamental than subset
16:55:42 -!- tombom_ has quit (Ping timeout: 268 seconds).
16:55:54 <alise_> x subset-of y := forall z, z in y -> z in x
16:56:21 <alise_> although that requires implication be something other than subset
16:56:25 <alise_> otherwise we have a circularity
17:00:21 <AnMaster> <alise_> intentional untypo?
17:00:24 <AnMaster> err
17:00:27 <AnMaster> <-- ?
17:00:28 <AnMaster> I meant
17:00:38 <AnMaster> <alise_> AnMaster: actually i think in is more fundamental than subset <-- what is? equals?
17:00:39 <AnMaster> well could be
17:01:09 <AnMaster> <alise_> x subset-of y := forall z, z in y -> z in x <-- ... notation please...
17:01:21 <AnMaster> I can't read it
17:01:22 <AnMaster> :P
17:01:40 <alise_> yes, you ca
17:01:42 <alise_> *can
17:04:05 <AnMaster> no
17:04:18 -!- alise has joined.
17:04:23 <alise> as i said before i was cut off
17:04:31 <alise> and being obstructive in your communication will just result in me... not communicating
17:05:30 -!- tombom__ has quit (Ping timeout: 248 seconds).
17:06:00 -!- tombom__ has joined.
17:06:13 <AnMaster> alise, was it ∀z(z ∈ y → z ∈ x)
17:06:14 <AnMaster> ?
17:06:28 <alise> yes. as you well knew
17:06:40 <alise> and it turns out, you know english!
17:06:44 <AnMaster> alise, but since you defined <- to be "in", shouldn't -> be "in" the other way?
17:07:12 -!- alise__ has joined.
17:07:23 <alise__> so, at this point is where i just stop bothering to talk as you do not understand ad hoc notation
17:07:31 <AnMaster> alise_, there is xemacs for windows. There is M-x set-input-mode TeX
17:07:34 <AnMaster> it does wonders
17:07:49 <AnMaster> alise__, I find ad hoc notation confusing and hard to read
17:07:53 <AnMaster> *shrug*
17:08:02 <AnMaster> bbl
17:08:08 -!- alise_ has quit (Ping timeout: 252 seconds).
17:08:26 <alise__> as does your mother
17:08:58 <AnMaster> alise__, that one doesn't even make sense
17:09:48 <AnMaster> I mean, "your mother 'finds ad hoc notation confusing and hard to read'" is not even an insult is it?
17:10:21 <oerjan> that's what she said!
17:10:28 <AnMaster> oerjan, :P
17:11:04 -!- alise has quit (Ping timeout: 252 seconds).
17:11:48 <AnMaster> considering how bad autoconf code is, I wonder what autoconf itself is like
17:11:52 <AnMaster> ais523, any idea?
17:12:06 <ais523> AnMaster: likewise bad
17:12:18 <AnMaster> ais523, shouldn't it be even worse logically?
17:12:27 <ais523> the code generated by autoconf is much better than the code of autoconf itself
17:12:28 <AnMaster> considering it can generate such messy configure output
17:12:34 <AnMaster> ais523, whoa
17:13:05 <ais523> I put
17:13:22 <AnMaster> ?
17:13:28 <alise__> he put
17:13:29 <ais523> *I put quite a lot of effort into learning how autoconf itself works, to use it properly; it seems GNU didn't
17:13:40 <ais523> sorry, touchpad error deleted most of my message after I'd already written it
17:13:58 <AnMaster> ais523, no undo in your client?
17:14:19 <ais523> AnMaster: doesn't help after you've already pressed return
17:14:22 <ais523> race condition
17:14:28 <ais523> I deleted it /as/ I was pressing return
17:14:46 <AnMaster> ah
17:17:53 -!- hodyna has left (?).
17:18:02 -!- alise__ has quit (Ping timeout: 252 seconds).
17:20:28 <AnMaster> btw that new "swap as compressed pages in ram" thingy seems really interesting
17:20:44 <AnMaster> and quite a lot faster than normal swap with a lot of the benefit
17:21:00 <AnMaster> experimental staging driver in 2.6.33 it seems
17:27:41 -!- hiato has joined.
17:40:05 -!- MigoMipo has quit (Remote host closed the connection).
17:47:51 -!- alise has joined.
17:50:55 -!- Wareya has quit (Ping timeout: 265 seconds).
17:52:07 -!- jcp has joined.
17:55:34 -!- MigoMipo has joined.
17:58:16 <alise> i love this little machine
17:59:07 -!- Quadrescence has quit (Ping timeout: 265 seconds).
18:00:48 <AnMaster> alise, dpi?
18:02:49 <alise> the screen is not great. it's very TN (colour distortion is pretty much unavoidable). but 1366x768 @ 13" = 120 ppi
18:03:09 <alise> 13.6" = 115 ppi, so whatever the exact size it's a good ppi
18:03:44 <AnMaster> alise, aren't most monitors TN?
18:03:59 <alise> yes. but it's very TN i.e. not a very high quality TN
18:04:04 <AnMaster> ah
18:04:15 <alise> i.e. if you look at it even slightly off the proper place you get dark to light gradient over the whole thing
18:04:28 <alise> and if you look at it a bit too much from above than you should it's all white-washed
18:04:31 <AnMaster> alise, I think my desktop is TN but rather high quality TN, while my thinkpad is lower quality TN
18:04:42 <alise> but from a good angle - and those are the most common angles to look at a laptop from - it's fine
18:04:44 <AnMaster> though, the colour doesn't change that quickly for the laptop
18:04:54 <alise> this thing is almost certainly worse than a thinkpad display
18:05:04 <alise> but consider, thinkpad costs like a thousand and a bit pounds
18:05:13 <alise> this costs something like £475
18:05:22 -!- Asztal has joined.
18:05:35 <alise> spoiler: it's not very fast, though; single core 1.2ghz and no virtualisation in sight. well at least i think it's single core
18:05:35 <AnMaster> alise, I can see line in supposedly "smooth" gradients on my thinkpad (such as in gimp colour picker). Not so on my desktop
18:05:48 <alise> beats an Atom any day
18:05:48 <AnMaster> I'm not sure if that is due to the monitor or the intel graphics
18:06:39 <AnMaster> alise, also thinkpads are great but the greatness was not spent on the speakers at all, and only a little bit of it on the display
18:07:08 -!- oerjan has quit (Quit: Good night).
18:07:30 <AnMaster> alise, iirc thinkpad uses some magnesium cage thingy internally though. And the keyboard has drainage holes (you can see them when looking at the laptop from below
18:07:31 <AnMaster> )
18:07:54 <AnMaster> (beats me why they end up right below it, shouldn't that mean it could flow to the battery and fry things badly?
18:07:55 <AnMaster> )
18:10:06 -!- alise has quit (Ping timeout: 252 seconds).
18:10:10 -!- kar8nga has quit (Remote host closed the connection).
18:13:38 -!- alise has joined.
18:13:54 <AnMaster> alise, see log
18:14:14 <AnMaster> also that connection must be annoying
18:14:17 <AnMaster> still in a taxi?
18:14:22 <alise> seen the logs
18:14:23 <alise> also, no
18:14:30 <alise> turns out taxis stop sometimes :(
18:14:35 <AnMaster> alise, how boring
18:15:03 <alise> it's just that this place has no interwebs
18:15:17 <AnMaster> also, there goes my plans for a taxi based perpetum mobile :(
18:17:37 -!- Quadrescence has joined.
18:19:22 <AnMaster> alise, this is somewhat amusing to read: http://llvm.org/docs/ReleaseNotes.html#whatsnew
18:19:33 <AnMaster> (yeah I know they haven't yet filled it in... but still)
18:19:48 <AnMaster> ... is really a popular feature it seems
18:21:29 <alise> argh oerjan isn't here any more
18:21:38 <AnMaster> alise, why argh?
18:22:08 <alise> wanted to quiz him about mathqs :P
18:23:28 <AnMaster> alise, lucky him who left
18:25:33 <AnMaster> hm... FAUST "Functional AUdio STream"... What are the chances of that name NOT being designed to fit the acronym?
18:25:57 <AnMaster> alise, ^
18:26:09 <alise> Low.
18:27:08 <alise> So I wrote what I wanted in TeXmacs but it can't copy to Unicode.
18:27:31 <AnMaster> alise, TeXmacs? Isn't that some weird type setting thingy that isn't compatible with LaTeX?
18:27:48 <AnMaster> I tried it and found it irritating to say the least
18:28:14 <alise> It isn't weird and it can export to LaTeX.
18:28:24 <AnMaster> true
18:28:33 <AnMaster> alise, from what I remember it rendered text blurry when editing
18:28:56 <AnMaster> probably perfect for you with your no-hinting mania though
18:29:10 <AnMaster> (pdfs never turn out that blurry)
18:29:32 <alise> Not blurry, and the PDFs look exactly the same depending on your font settings.
18:29:32 <AnMaster> (well, I mean, pdf with text in... pdf with a photo of blurry text could of course)
18:29:45 <alise> It looks exactly like the .ps files that TeX generates, in fact.
18:29:57 <AnMaster> huh
18:30:32 <alise> Also, I use slight hinting on linux
18:30:45 <alise> What's the LaTeX for the bold, non-italic set names used as variables>
18:30:46 <alise> *variables?
18:30:46 <AnMaster> okay
18:30:52 <alise> Like \forall x \in X
18:30:56 <alise> what do you enclose X in?
18:31:02 <AnMaster> alise, hm *tries to remember*
18:31:43 <AnMaster> \mathbb N?
18:32:09 <AnMaster> alise, I couldn't remember, so I checked what lyx did when I clicked the button for it :P
18:32:12 <fizzie> \mathbb is the doublestruck style, if you want that.
18:32:18 <AnMaster> \mathbb{N}
18:32:19 <alise> No.
18:32:29 <fizzie> If you just want non-italic bold, that'd be mathbf.
18:32:36 <alise> Thanks.
18:32:44 <AnMaster> fizzie, bold, set -> blackboard bold in my parser
18:32:48 <alise> No, that is italic for single-letter names.
18:32:49 <AnMaster> not sure how that happened
18:33:37 <AnMaster> alise, what fizzie said produces bold here?
18:33:46 <AnMaster> well, in lyx preview at least
18:34:26 <alise> Sigh.
18:34:58 <AnMaster> alise, I don't know what you want then :/
18:36:20 <alise> Anyway whatever.
18:38:45 -!- Sgeo has quit (Ping timeout: 265 seconds).
18:40:14 -!- kar8nga has joined.
18:40:14 <fizzie> Whatever indeed; though I have to note that for me \mathbf{X} (even for single-letter strings) certainly produces non-italic bold; I had to use amsmath's \boldsymbol{} recently to get some homework answers compatible with the homework questions, which used italic-bold style for vectors and matrices.
18:40:49 <alise> Well, the $...$ is in italic-formatted stuff.
18:40:58 <AnMaster> alise, ?
18:41:10 <AnMaster> you use \mathbf{foo} *inside* $$
18:41:43 <AnMaster> works for me
18:41:51 <MissPiggy> $$ DESU $$
18:41:58 <AnMaster> MissPiggy, $$?
18:42:14 <AnMaster> it was between those that it was supposed to be inserted
18:42:17 <AnMaster> not between two of them
18:42:43 <AnMaster> anyway, isn't display style different? \[ or something ?
18:43:27 <coppro> $$ is set apart, $ is not
18:44:01 <fizzie> $$ x $$ is not the recommended way of doing displaymath in LaTeX, though.
18:44:05 <fizzie> It's the older TeX-style.
18:44:12 <AnMaster> aha
18:44:17 <coppro> yeah; amsmath has a bunch of better options
18:44:28 <AnMaster> well I'm not old enough to having used TeX directly
18:44:30 <AnMaster> only LaTeX
18:44:35 <fizzie> No, I mean, just plain LaTeX has better options; $$ is not even officially part of LaTeX.
18:44:38 <fizzie> \[ .. \] is.
18:44:45 <AnMaster> fizzie, indeed
18:45:07 <coppro> oh, I did not know that
18:45:10 <AnMaster> no one in their right mind uses just plain TeX
18:45:44 <fizzie> "While the double dollar sign (still) works in LaTeX, it is not part of the "official" LaTeX command set (in fact, most books on LaTeX don't even mention it) and its use is discouraged. Use the bracket pair "\[", "\]" instead." -- though that's from a guide. I think I saw it in a more reputable source too, though.
18:45:47 <AnMaster> (with exception of Knuth and those that implement LaTeX, ConTeXt and such)
18:46:05 <AnMaster> fizzie, what is the reason for that though?
18:46:09 -!- user2 has joined.
18:46:20 <AnMaster> My guess is that it involves equation numbering or such
18:46:53 -!- hiato has quit (Quit: leaving).
18:47:30 <fizzie> Another guide says that $$ can lead to wrong spacing in "some situations". And yet another says that \[ .. \] is preferred because the ending tag is different, which helps in error checking. It will still do close to the same thing.
18:51:19 <AnMaster> fizzie, but then why hasn't $ $ been replaced to help error checking as well?
18:51:49 <fizzie> LaTeX does define \( .. \) as a replacement for $ .. $, but I haven't seen anyone seriously advocate the use of that.
18:52:20 -!- user2 has left (?).
18:53:00 * AnMaster is irritated at llvm.org for not providing a list with all sub projects such as clang and klee
18:53:16 <AnMaster> the project using llvm list seems to be "non-llvm.org based projects"
18:57:26 <fizzie> They seem to call those things sub-projects, but there's not much of a list to be seen.
18:57:47 <AnMaster> fizzie, I said sub project above yeah
18:57:51 <fizzie> Ah.
18:57:57 <AnMaster> fizzie, klee and clang are the two I know about
18:57:58 <fizzie> Well, http://llvm.org/docs/ReleaseNotes.html has a sort of a list in the status update section.
18:58:12 <AnMaster> fizzie, yes sure, but I want to see the full list, and any that aren't yet there
18:58:26 <AnMaster> also looking at the svn ( http://llvm.org/viewvc/llvm-project/ ) doesn't help much
18:58:32 <AnMaster> for example, cfe turns out to be clang
18:59:12 <AnMaster> ah http://compiler-rt.llvm.org/ exists at least
18:59:26 <AnMaster> fizzie, trying to do a zone transfer on llvm.org didn't work very well either ;)
18:59:43 <fizzie> Yes, that rarely works.
19:00:04 <AnMaster> fizzie, no idea if it was on my side or their side it was blocked
19:00:40 -!- Wareya has joined.
19:01:02 <AnMaster> poolalloc.llvm.org did not exist for example
19:01:03 <fizzie> Their side, probably. I have a feeling that the current BIND example configs (and defaults for other servers) nowadays allow zone transfers only for explicitly listed secondary nameservers.
19:01:19 <AnMaster> fizzie, probably
19:01:23 <AnMaster> why though?
19:02:30 <fizzie> To avoid leaking any unnecessary information about the structure of their network, is I guess the official explanation. Not that it should hurt in the usual case, but why go advertise around 1quasi-private things like that if it isn't necessary.
19:03:22 <AnMaster> 1quasi?
19:03:29 <Deewiant> quasi
19:03:46 <AnMaster> Deewiant, I think that 1 was intentional
19:04:10 <Deewiant> I doubt it.
19:04:18 <fizzie> If it was intentional, I don't recall what the intention was.
19:05:47 <AnMaster> heh
19:06:05 <AnMaster> this poolalloc thing seems very interesting
19:06:30 <fizzie> Oh, there's another stated reason; AXFR replies are several times larger than any other (usual) DNS messages, so DNS-based ways of doing DDoS attacks (like the usual: send a whole lot of small UDP dns requests with the same spoofed source IP) are made worse by allowing those.
19:07:31 <fizzie> http://www.auscert.org.au/render.html?it=80 for example seems to recommend against it.
19:13:54 <AnMaster> the project "safecode" seems fairly interesting too
19:19:01 <AnMaster> interesting ones found so far: clang, klee, poolalloc, safecode. Poolalloc seems to be an optimisation pass to automatically detect and rewrite code that would benefit from using a memory pool
19:19:41 -!- tombom_ has joined.
19:21:30 -!- alise_ has joined.
19:23:15 -!- tombom__ has quit (Ping timeout: 276 seconds).
19:23:32 -!- alise__ has joined.
19:23:42 <alise__> I think that, on balance, laptops were definitely designed by someone without a penis.
19:24:54 -!- alise has quit (Ping timeout: 252 seconds).
19:25:15 <AnMaster> alise__, oh?
19:25:22 <AnMaster> alise__, is it getting fried?
19:25:53 <alise__> XD No.
19:26:00 -!- alise_ has quit (Ping timeout: 252 seconds).
19:26:00 <alise__> It's just not the most comfortable position for a computer
19:26:19 <AnMaster> alise__, I was about to suggest "or because you find it so comfortable?"
19:26:22 <AnMaster> :P
19:26:26 <alise__> >_<
19:26:30 <fizzie> Oh; I thought this was some sort of attituditional complaint about laptops lacking some metaphorical BALLS.
19:26:45 <alise__> Is that an invisible laptop on your lap or are you just happy to see me?
19:26:51 <AnMaster> fizzie, yeah they have nipples instead (at least thinkpads does XD)
19:27:18 <AnMaster> alise__, hey, did I mention that joke someone told me about modern smart phones being so big?
19:27:47 <AnMaster> it went: is that a smartphone in your pocket, or are you just happy to see me?
19:28:01 <alise__> So a manly laptop with a TrackPoint should be referred to as a hermaphrodite?
19:28:25 <AnMaster> alise__, I think you can take a sexual joke too far :P
19:28:28 <alise__> AnMaster has a laptop from a range that used to be manly and sturdy but is now merely Asian. I hereby refer to it as a ladyboy.
19:28:38 <AnMaster> alise__, haha
19:28:53 <alise__> LadyPad: The laptop that doubles up as a... I'm stopping this right here.
19:28:56 <AnMaster> alise__, you know, when I called lenovo support I ended up at IBM
19:28:58 <AnMaster> last week
19:29:27 <AnMaster> (a small crack in the plastic that makes up the palm rest, went on warranty, user replaceable part)
19:29:39 <AnMaster> err wait, it was this week even
19:29:45 <AnMaster> still isn't past midnight
19:29:57 <AnMaster> should be delivered tomorrow or the day after that I guess
19:38:19 -!- Sgeo has joined.
19:53:08 -!- alise__ has quit (Ping timeout: 252 seconds).
19:54:04 -!- coppro has quit (Quit: I am leaving. You are about to explode.).
20:15:37 -!- Ilari has quit (Ping timeout: 260 seconds).
20:17:51 <AnMaster> fizzie, safecode proved useful too
20:17:59 <AnMaster> found a wtf in cfunge using it
20:18:14 <AnMaster> unlikely to actually cause any harm in practise, but very wrong stiff
20:18:15 -!- Ilari has joined.
20:18:16 <AnMaster> still*
20:18:22 * uorygl ponders whether "A is evidence for B" is equivalent to "~A is evidence for ~B"
20:18:26 * AnMaster corrects the order of those free() calls
20:18:30 <uorygl> Defining "A is evidence for B" as P(B|A) > P(B).
20:19:01 <AnMaster> wait no
20:19:04 <AnMaster> that isn't the issue...
20:20:52 <uorygl> That's perhaps better expressed as P(A and B) > P(A)*P(B). Take the complement, and you get 1 - P(~A or ~B) > (1 - P(~A))(1 - P(~B)). Expand, and you have 1 - P(~A or ~B) > 1 - P(~A) - P(~B) + P(~A)P(~B)...
20:21:18 <Deewiant> AnMaster: What'd it find?
20:22:15 <uorygl> Expand some more, and you have 1 - P(A and B) - P(A and ~B) - P(~A and B) > 1 - P(~A and ~B)P(~A and B) - P(~A and ~B)P(A and ~B) + P(~A)P(~B)...
20:22:27 <uorygl> To quote a friend of mine, ow ow ow ow!
20:24:43 <uorygl> Er, I did that wrong.
20:25:11 <uorygl> Expand some more, and you have 1 - P(A and B) - P(A and ~B) - P(~A and B) > 1 - P(~A and ~B) - P(~A and B) - P(~A and ~B) - P(A and ~B) + P(~A)P(~B). Which is much better, as we can now eliminate stuff.
20:25:19 <AnMaster> Deewiant, I'm not sure...
20:25:25 <AnMaster> Deewiant, looking closer at it it makes no sense
20:25:32 <AnMaster> Deewiant, I suspect broken debug info
20:26:01 <AnMaster> Deewiant, or something. I added a printf debug thingy before that point, it stopped at same point but the printf message was never output
20:28:35 -!- alise has joined.
20:29:32 -!- ais523 has quit (Remote host closed the connection).
20:30:49 <uorygl> So, -P(A and B) > -2P(~A and ~B) + P(~A)P(~B). Rearrange some: 2P(~A and ~B) > P(A and B) + P(~A)P(~B).
20:32:00 <Ilari> Let a = P(B|A), b = P(B|~A), c = P(A), d = P(B). Now ac + b(1-c) = d. A being evidence for B means that a > d. OTOH, if ~A is not evidence for ~B, 1 - P(B|~A) <= 1 - P(B) => b >= d. Thus, ac + b(1-c) = d > dc + d(1-c) = d. Impossible.
20:32:29 -!- alise_ has joined.
20:33:06 -!- alise has quit (Ping timeout: 252 seconds).
20:33:11 * alise_ ponders the implementation of ⊥-elim : ⊥ → ∀a·a
20:33:52 <alise_> Orthodoxy defines it as an empty case-analysis of its argument, giving ⊥-elim x := case x {}
20:34:11 <alise_> But this does not gel if you most commonly do case analysis via pattern matching.
20:34:43 <alise_> This translates to foo p = q; foo q = e'
20:34:44 <alise_> So consider foo x := case x {p -> e; q -> e'}
20:34:59 <alise_> So, for each case, emit the function with the pattern and result in the appropriate place.
20:35:14 <alise_> This would suggest that the implementation is in fact the null string, and just the type signature should suffice.
20:35:16 <alise_> But then what of type inferrence?
20:35:23 <AnMaster> okay this does indeed make no sense..
20:35:28 <alise_> Define this.
20:36:04 <AnMaster> alise_, the "bug" the experimental llvm tool sc detected
20:36:16 <alise_> k
20:36:20 <AnMaster> because switching order of two statements make the second error out. And they should not affect each other
20:36:38 <AnMaster> freeing two different fields in a struct
20:36:46 <AnMaster> (both are pointers)
20:36:49 <alise_> Agda implements it as "⊥-elim ()".
20:37:04 <alise_> I assume () is just an empty nesting there, but doing /any/ case analysis on the empty type should be verboten.
20:37:26 <alise_> Having no right-hand side, meanwhile, basically makes it mandatory that the compiler c
20:37:30 <alise_> *handles this special case.
20:38:13 <alise_> Perhaps the empty case analysis is still the best.
20:38:35 <alise_> Complete:
20:38:45 <alise_> data ⊥ : Type
20:39:01 * AnMaster tries again with llvm-gcc instead of clang to generate the llvm .bc files
20:39:25 <AnMaster> fun that crashes in *yet* another place
20:39:58 -!- alise has joined.
20:40:16 <AnMaster> and something likes to strip the debug info down to bare minimum
20:40:24 <alise> Fuck this
20:40:33 <alise> data ⊥ : Type
20:40:48 <AnMaster> alise, 3G stick?
20:41:31 -!- alise__ has joined.
20:41:47 <AnMaster> okay, now it reliably crashes in the same place (using llvm-gcc) irrespective of the order of the calls there
20:41:54 <alise__> \zxdcfghjk
20:42:01 <AnMaster> alise__, 3G stick?
20:42:11 <alise__> data ⊥ : Type
20:42:13 <alise__> ⊥-elim : ⊥ → ∀a·a
20:42:15 <alise__> ⊥-elim false := case false {}
20:42:22 <alise__> hd
20:42:24 <alise__> yesssssssssss
20:42:26 <alise__> irejg
20:42:30 <alise__> i sent it all before disconnecting
20:42:55 <AnMaster> oh I think it dislikes me freeing the null pointer
20:42:57 <AnMaster> perhaps
20:43:00 -!- alise_ has quit (Ping timeout: 252 seconds).
20:43:02 <AnMaster> which should be valid
20:43:14 <alise__> it's unreliable
20:43:26 <AnMaster> alise__, what? free(NULL)?
20:43:41 <alise__> yes. many systems behave badly
20:43:55 <AnMaster> alise__, even C89 says that should be valid
20:44:09 <AnMaster> so you don't need to check if everything was allocated in the structure you are freeing up
20:44:21 <alise__> by having (free NULL ≡ ⊥)
20:44:26 <AnMaster> alise__, ..?
20:44:29 <alise__> AnMaster: tough
20:44:31 <alise__> it's still unreliable
20:44:33 <alise__> anyway
20:44:35 <alise__> then you could do
20:44:40 <AnMaster> alise__, examples of systems it fails on?
20:44:44 <alise__> ⊥-elim (free NULL)
20:44:45 <AnMaster> sure I can add an if()
20:44:50 <alise__> and derive ANYTHING!
20:44:50 -!- alise has quit (Ping timeout: 252 seconds).
20:44:58 <alise__> AnMaster: mostly old ones, I am not your personal memory bank
20:45:02 <alise__> but I know it's true
20:45:19 <AnMaster> alise__, I doubt llvm targets them though
20:45:32 <alise__> it's still trying to help you avoid bugs
20:45:34 <alise__> stop whinging
20:45:42 <AnMaster> hm
20:45:44 -!- dougx has joined.
20:46:04 <AnMaster> alise__, I take advantage of free(NULL) in cfunge. If so it should be possible to turn that warning off. :/
20:46:40 <alise__> It's a bug-finding tool.
20:46:43 <alise__> It's supposed to annoy you.
20:47:00 <AnMaster> alise__, actually sc is supposed to add run time checks to production code for actual bugs
20:47:14 <AnMaster> so it detects (with low overhead) out of array bounds access and such
20:47:15 <AnMaster> in C code
20:47:41 <alise__> K
20:47:47 <AnMaster> alise__, also it gives error for my call to putchar()
20:47:53 <AnMaster> well according to the line number at least
20:48:23 <AnMaster> perhaps due to using a VLA in that function. I don't know
20:48:26 <fizzie> As a slightly related thing, ANSI C allows realloc(NULL, x) as equivalent to malloc(x), but at least according to comp.lang.c FAQ "several earlier implementations do not support it, so it may not be fully portable"; they don't list problematic implementations, though.
20:48:42 <fizzie> free(NULL) might be more common than realloc(NULL, x), though..
20:48:45 <AnMaster> fizzie, heh, another thing I made use of somewhere
20:48:56 <AnMaster> to just need one code path instead of two
20:50:31 <Gregor> realloc(NULL, x) isn't uncommon at all.
20:51:11 <fizzie> Maybe not, since it's reasonably convenient.
20:51:25 <Gregor> However, it's OK for the same reason as free(NULL), for data structures with e.g. a length and pointer field, where the length is zero if the pointer is NULL. Ignore the length's value, expand, realloc, you're OK.
20:52:17 <AnMaster> Gregor, yeah pretty much how I used it iirc
20:52:35 <fizzie> For that sort of thing having a fixed "prevsize*2" rule for the expanding is not a very good idea, though. :p
20:53:13 <Gregor> True :P
20:53:58 <AnMaster> also it reports alignment error on calling a function pointer
20:54:00 <AnMaster> either that
20:54:19 <AnMaster> or on assigning the return value to a bool
20:55:07 * AnMaster wonders whatever is on 0x419d70
20:55:20 <AnMaster> well the debug info is mostly stripped somewhere (I don't know where, irritating anyway)
20:55:25 <AnMaster> so I can't figure it out really
20:59:05 <AnMaster> hm... seems to be the function pointer itself
20:59:09 <AnMaster> and I suspect it is wrong here
21:00:59 -!- Guest21507 has joined.
21:01:13 -!- Guest21507 has quit (Client Quit).
21:10:09 <AnMaster> alise__, also it seems to dislike calling free() on something you got from strdup()
21:10:28 <AnMaster> which the man page explicitly says should be freed using free()
21:10:57 <Gregor> lolwtf
21:11:23 <AnMaster> Gregor, well, it is an svn version, and there is no stable version yet
21:11:27 <AnMaster> so I'm not *too* surprised
21:11:41 <AnMaster> Gregor, you know how it is with llvm projects I assume
21:11:41 <AnMaster> ?
21:11:54 <Gregor> Not much of a clue.
21:11:58 -!- alise__ has quit (Ping timeout: 252 seconds).
21:12:07 <AnMaster> you are *bound* to get at least two assertion errors on anything non-trivial
21:12:16 <AnMaster> that requires some tracking down to figure out what the heck is going on
21:12:44 <AnMaster> (in this case I have to force llvm itself to not optimise things into vector stuff using SSE for example)
21:13:18 <AnMaster> and they love to use assert(0 && "foo is not implemented yet"); for erroring out
21:14:00 <AnMaster> Gregor, clang is now past this phase
21:14:12 <AnMaster> and the clang static analyser seems to only crash sometimes nowdays
21:14:19 <Gregor> Sweet
21:14:56 <AnMaster> Gregor, it is pretty easy to crash llvm tools in general though. Heck it is easy to make llvm unable to compile itself if even
21:14:59 <AnMaster> or used to be at least
21:15:04 -!- dougx has left (?).
21:15:19 <AnMaster> was easy in 2.6. 2.7 is to be released on April or May iirc
21:15:37 <Deewiant> In a month; the code freeze is in some hours
21:16:05 <AnMaster> Deewiant, and the major new hot feature in almost all categories is "..." I see: http://llvm.org/docs/ReleaseNotes.html#whatsnew
21:16:13 <AnMaster> ... is the new black or something
21:16:23 <Deewiant> Rather, the release notes haven't yet been written
21:16:34 <AnMaster> Deewiant, I know, but I prefer my interpretation
21:16:48 <Deewiant> Whatever makes you happy
21:17:10 <AnMaster> Deewiant, for a start, mine is funnier
21:34:23 -!- adu has joined.
21:38:37 <Wareya> why do people keep asking me to debug PHP scripts
21:40:16 <AnMaster> Wareya, no idea. Do you know PHP at all?
21:40:34 <Wareya> barely
21:40:44 <AnMaster> well, no idea then
21:41:11 <AnMaster> Wareya, but while you are at it, please go formally prove the entire mediawiki codebase will you? ;P
21:41:55 <AnMaster> night →
21:42:20 <Wareya> night
21:48:34 -!- alise has joined.
21:48:37 <Wareya> hi
21:48:39 <alise> I realised something [obvious]
21:48:43 <Wareya> okay
21:49:17 <alise> You don't need special syntax for forall and the like.
21:49:19 <alise> e.g.
21:49:21 <alise> ∀ : Type → (Type → Type) → Type
21:49:38 <alise> then
21:49:40 <alise> id : ∀Type (λa. a → a)
21:50:02 <alise> Hmm, actually, since forall is implicit arguments I guess it's actually
21:50:47 <alise> ∀ : ∀Type (λa. (a → Type) → Type)
21:50:48 <alise> Which is, alas, circular.
21:51:04 <alise> Also you need to handle the type levels and whatnot
21:51:27 -!- alise_ has joined.
21:52:01 <alise_> What did I last say?
21:52:38 <MissPiggy> alise, http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Libraries.RulesForTheStandardSetFormers
21:52:45 <MissPiggy> scroll to the very bottom,
21:52:46 <MissPiggy> see: π : (a : U) -> (T a -> U) -> U
21:52:50 <MissPiggy> T (π a b) = Π (T a) (\x -> T (b x))
21:53:05 <MissPiggy> this is an example of an inductive-recursive definition (like I was talking about earlier)
21:54:07 <alise_> you mean how implementing the obvious type for induction in a dep-type lang gives you recursion?
21:54:07 <alise_> or is this a separate thing
21:54:40 <MissPiggy> umm
21:55:17 <alise_> seems pretty similar from those two lines at least
21:55:36 -!- alise has quit (Ping timeout: 252 seconds).
21:55:55 <alise_> Hey, actually, I can define forall nonrecursively.
21:56:15 -!- adu has quit (Quit: adu).
21:56:48 <alise_> ∀-Type : (Type → Type) → Type
21:56:49 <alise_> ∀ : ∀-Type (λa. (a → Type) → Type)
21:56:59 <alise_> Of course, the two are still axioms.
22:02:30 <alise_> http://pastie.org/858677.txt?key=x2vpvu1ou7e3uyjcbd8ybg
22:02:44 <alise_> (Note: T is merely an unfortunate name, not \top)
22:03:05 * alise_ replaces it with X locally
22:03:50 <alise_> Actually, \gamma, since it looks like "y" and "y" evokes "mi" evokes "me".
22:10:57 <alise_> Hmm, my \mu-elim fails to actually let you go through the recursive structure. I should fix that.
22:11:16 <Sgeo> (greet "alise")
22:11:39 <alise_> map : ∀Type (λa. ∀Type (λb. (a → b) → RecList a → RecList b))
22:11:39 <alise_> map f := μ-elim (∨-elim (λ_. unit) (∨-elim (λx xs. cons (f x) (map f xs)) (λxs ys. consRec (map f xs) (map f ys))))
22:11:50 <alise_> is certainly theoretic, but it's still packed with explicit recursion.
22:11:53 <alise_> As pretty as it is.
22:15:14 <alise_> MissPiggy: hmm, with a proper recursion combinator I could easily have my core language be point-free couldn't I?
22:20:08 <pikhq> alise_: Yes, with a fixed-point combinator, point-free-ness is feasible.
22:20:50 <alise_> pikhq: *structural recursion combinator
22:20:54 <alise_> fix : (a -> a) -> a is unsound.
22:21:10 <alise_> consider:
22:21:24 <alise_> id-specialised : _|_ -> _|_
22:21:27 <alise_> fix id-specialised : _|_
22:21:38 <alise_> _|_-elim (fix id-specialised) : a
22:21:49 <alise_> Yay, now we can derive anything.
22:23:24 <pikhq> alise_: Okay, fine. You want Mu, not y.
22:25:49 -!- kar8nga has quit (Remote host closed the connection).
22:26:41 <alise_> y is even more unsound than the named definition of fix, which is a stunning anti-achievement :P
22:27:08 <pikhq> y is indeed quite unsound. It doesn't work with types.
22:27:41 <alise_> you can type it in some systems
22:27:41 <alise_> specifically designed for it
22:27:55 <pikhq> Mmm.
22:27:58 <alise_> The problem is that structural recursion requires mu (p |) and that bothers me
22:28:08 <alise_> I already have |-elim, it'd be nice to have an independent mu-elim
22:28:13 <alise_> but I can't think of a type for it at all
22:28:29 <alise_> mu-elim : ... -> mu a -> ?
22:28:43 <alise_> we know that a : * -> *
22:28:54 <alise_> so we could exploit that somehow to replace the recursive bits with something of our own design
22:28:57 <alise_> like (), say
22:29:37 <alise_> for instance that gives for nats () | ()
22:29:50 <alise_> so we can distinguish it in the function given by left/right
22:29:55 <alise_> but then what of the return value?
22:30:17 <alise_> we need to somehow "reduce" it
22:30:18 <alise_> so that we can further eliminate it
22:30:31 <alise_> so what do we need for structural recursion: a base case, and a step case
22:30:42 <alise_> but how do we distinguish the two if all we have is mu a where a : * -> *?
22:31:03 <MissPiggy> alise did you raed it?
22:31:18 * Sgeo should check his KI-mail
22:31:42 <alise_> MissPiggy: i'm doing so
22:31:58 <MissPiggy> was just wondering because if you didn't I can try not to link anything to you
22:32:05 <MissPiggy> which would save me time obviously
22:32:25 <alise_> you're so happy-go-lucky
22:33:14 <alise_> MissPiggy: i don't get what you're trying to express with your quotes
22:33:20 <alise_> that pi is structural recursion there?
22:33:38 <MissPiggy> every function is defined by structural recursion
22:33:42 <MissPiggy> pi is syntax for forall
22:33:59 <MissPiggy> kinda like
22:33:59 <MissPiggy> 21:48 < alise> ∀ : Type → (Type → Type) → Type
22:34:17 <alise_> ah. right
22:34:56 <alise_> MissPiggy: is it possible to define mu-elim without having it be (mu (a |)) or similar
22:34:59 <alise_> instead just being mu a?
22:35:17 <alise_> mu-elim : (a something -> ?) -> ... -> mu a -> ?
22:36:47 <MissPiggy> alise, in Coq I can define:
22:36:49 <MissPiggy> Inductive Mu : Set := roll : list Mu -> Mu.
22:37:01 <MissPiggy> or
22:37:01 <MissPiggy> Inductive Mu : Set := roll : (Mu * nat) -> Mu.
22:37:16 <MissPiggy> or even
22:37:16 <MissPiggy> Inductive Mu : Set := roll : (nat -> list Mu) -> Mu.
22:37:25 <MissPiggy> lots of different ones
22:37:32 <MissPiggy> but I can't defined
22:37:33 <MissPiggy> Inductive Mu (F : Set -> Set) : Set := roll : F (Mu F) -> Mu F.
22:37:45 <MissPiggy> that is not valid _unless F is known to be a strictly positive functor_
22:38:04 <MissPiggy> supposing F were a SPF, what would the induction scheme for Mu F be?
22:38:16 <alise_> oh you do it with functors?
22:38:24 <alise_> MissPiggy: by that question do you mean "implement Mu"?
22:38:36 <MissPiggy> no
22:38:48 <alise_> then what
22:38:59 <MissPiggy> you don't know how to calcuate induction schemes from data defintions yet
22:39:01 <MissPiggy> ?
22:39:10 <alise_> I was just attempting to clarify the question.
22:39:34 <alise_> I certainly know how to derive maybe from Maybe and the like if that's what you're referring to.
22:39:39 <MissPiggy> yes
22:39:42 <alise_> Oh, I see, Mu there is a type
22:39:48 <MissPiggy> except more dependent
22:39:48 <alise_> I don't know Coq syntax, I thought it was a function type
22:39:56 <MissPiggy> oh you should learn Coq
22:40:04 <alise_> Yes, I believe so too.
22:40:10 <MissPiggy> it will compute a lot of things for you which would take ages otherwise
22:40:20 <alise_> In my system I was going to have mu be axiomatic to solve this, like the Epigram people.
22:40:28 <alise_> (the definition problem)
22:40:32 <alise_> Anyway, the induction scheme.
22:41:01 <alise_> (I denote, I think from Agda, the inducterifier for T with T-elim,)
22:41:34 <alise_> Let me try and do this bit by bit.
22:41:41 <alise_> Mu-elim : ... -> Mu F -> something that doesn't involve mu
22:42:11 <alise_> (Admittedly I have not actually researched the mechanical ways to do things like this because Surely The Computer Can Work It Out For Me, so this will be slapdash and stupid.)
22:42:57 <alise_> Well, we have (a->b)->f a->f b
22:43:01 <alise_> which works out to
22:43:16 <alise_> (mu f -> b)->f (mu f)->f b
22:43:20 <MissPiggy> N := O : N | S : N -> N
22:43:25 <alise_> MissPiggy: i'm aware
22:43:31 <MissPiggy> k I'll just not bother
22:44:10 <alise_> So if we can transform the "guts" of some mu to something else, we can eliminate the mu.
22:44:39 <alise_> But the guts are also recursive.
22:44:55 <alise_> (mu (f (mu f)) -> b) -> f (mu (f (mu f))) -> f b
22:45:23 <alise_> MissPiggy: I should learn the mechanical method for this. But my hunch is that we will be transforming the Fs into another type, and keeping the recursive structure.
22:45:47 <alise_> With some opportunity for a base case.
22:45:57 <alise_> Presumably along the lines of the elimination given by fmap above.
22:48:52 <alise_> MissPiggy: Your silence is bothersome.
22:49:32 <alise_> ((forall x. a x -> b x) -> mu a -> mu b)
22:49:43 <alise_> is presumably doable but leaves no opportunity for a base case
22:49:57 <MissPiggy> dealing with a situation
22:50:00 <alise_> hmm... i think
22:54:57 <Wareya> cool
22:56:28 -!- tombom_ has quit (Quit: Leaving).
23:01:50 <alise_> we
23:04:20 * Sgeo visits a possibly malicious site from a school computer
23:04:45 -!- sshc has quit (Ping timeout: 240 seconds).
23:04:59 -!- MigoMipo has quit (Remote host closed the connection).
23:05:05 -!- sshc has joined.
23:05:40 <Sgeo> Beh, nothing useful
23:17:00 -!- adam_d has quit (Quit: Leaving).
23:20:29 <alise_> MissPiggy: it'd be cool if you just told me the induction schema :D
23:24:33 <alise_> apparently epigram has one single elimination operator that works on every single type
23:24:39 <alise_> which is fantastic if it really works
23:26:50 <Sgeo> alise_ has me on ignore?
23:26:59 <Sgeo> Well, probably not
23:26:59 <alise_> no
23:32:09 <MissPiggy> I think I gave up on
23:32:10 <MissPiggy> 22:42 < MissPiggy> N := O : N | S : N -> N
23:32:10 <MissPiggy> 22:43 < alise_> MissPiggy: i'm aware
23:36:07 <alise_> i did not know that more was forthcoming
23:36:13 <alise_> if you don't want to answer fine
23:36:52 <MissPiggy> I was going to say what the induction principle for N was
23:39:46 * Sgeo goes to visit his Relto
23:40:40 <alise_> MissPiggy: I did not realise this at the time. Please, go on.
23:41:23 <MissPiggy> you know this one already, P(O) -> (forall n, P(n) -> P(S n)) -> forall n, P(n)
23:41:38 <MissPiggy> and for B := T | F we have P(T) -> P(F) -> forall b, P(b)
23:42:52 <alise_> yeah
23:42:55 <MissPiggy> it gets more interesting with ordinal-induction, where you have something like O := Z : O | S : O -> O | L : (N -> O) -> I
23:42:59 <MissPiggy> oops
23:43:05 <MissPiggy> O := Z : O | S : O -> O | L : (N -> O) -> O
23:43:08 <alise_> -> O prs'mbly
23:43:48 <MissPiggy> P(Z) -> (forall o, P(o) -> P(S o)) -> (forall l, (forall n, P(f n)) -> P(l f))
23:43:50 <MissPiggy> oopr
23:43:55 <MissPiggy> P(Z) -> (forall o, P(o) -> P(S o)) -> (forall l, (forall n, P(f n)) -> P(l f)) -> forall o, P(o)
23:44:09 <alise_> wait sec
23:44:13 <alise_> gimme a second to read that
23:44:28 <alise_> From whence f in this definition?
23:44:32 <alise_> You do not quantify over it.
23:44:39 <MissPiggy> oops
23:44:47 <MissPiggy> P(Z) -> (forall o, P(o) -> P(S o)) -> (forall f, (forall n, P(f n)) -> P(l f)) -> forall o, P(o)
23:44:53 <MissPiggy> f : N -> O
23:44:57 <alise_> From whence l?
23:45:00 <MissPiggy> grr
23:45:04 <MissPiggy> P(Z) -> (forall o, P(o) -> P(S o)) -> (forall f, (forall n, P(f n)) -> P(L f)) -> forall o, P(o)
23:45:09 <MissPiggy> this is correct now
23:45:17 <alise_> now lemme read it :P
23:45:58 <alise_> so the last one is "show that for all f : * -> * and all n : Nat, P (f n) implies P (L f)."
23:46:07 <MissPiggy> f : N -> O
23:46:10 <alise_> so if it's true for any type-function, so to speak, it's true for L f
23:46:14 <alise_> L that function, that is
23:46:19 <alise_> MissPiggy: right
23:46:27 <alise_> how do we use this?
23:46:46 <MissPiggy> if f is a family of nat indexed ordinals, then L f is an ordinal
23:47:03 <alise_> yeah
23:47:07 <MissPiggy> so if you can prove P for every (f n), then P (L f) holds -- principle of transfinite induction from set theory
23:47:18 <alise_> gotcha
23:47:27 <alise_> it's just nested induction basically
23:47:32 <MissPiggy> yes
23:47:35 <MissPiggy> !! exacty!!
23:47:37 <alise_> so, wait
23:47:45 <alise_> we have P (_ : N -> O) and yet P (_ : O)
23:47:52 <alise_> no wait
23:47:52 <MissPiggy> no
23:47:53 <alise_> it's f n
23:47:54 <alise_> right
23:47:54 <alise_> gotcha
23:47:55 <alise_> sweet
23:47:55 <MissPiggy> P : O -> *
23:48:00 <alise_> okay, so, next thing
23:48:23 <MissPiggy> now it gets more difficult
23:48:50 <MissPiggy> what if we defined a strange type of trees like this
23:49:00 <MissPiggy> T := L : T | B : list T -> T
23:49:34 <alise_> hmm
23:49:45 <alise_> presumably we have to nest list induction
23:49:46 <MissPiggy> lets jsut remember that list T is equivalent to Sigma n, Fin n -> T
23:50:01 <MissPiggy> so we could write
23:50:21 <MissPiggy> T' := L' : T' | B' : (n : N) -> (Fin n -> T) -> T
23:50:33 <alise_> I am unfamiliar with your definitions of Sigma/Fin in this particular case.
23:51:06 <alise_> If you give me the definitions directly we can swiftly move on.
23:51:20 <MissPiggy> <n, p> : Sigma n, P(n) it's a dependent pair
23:51:46 <MissPiggy> Fin 0 = False, Fin 1 = (), Fin 2 = Bool, Fin 3 = {yes,no,maybe}, Fin 4 = {north, south, east, west}, ..
23:52:00 <alise_> so Fin n is what set theorists would term n
23:52:06 <alise_> and, uh, what?
23:52:21 <alise_> sigma as in dependent quantification?
23:52:23 <MissPiggy> "Sigma" is like exists, except that it's data rather than proofs
23:52:31 <alise_> right but you have to specify a type...
23:52:48 <MissPiggy> Fin : N -> *
23:52:55 <alise_> And is it Sigma a, b the syntax?
23:52:55 <alise_> like Forall a, b
23:52:58 <MissPiggy> so n is a natural number in Sigma n, Fin n -> T
23:53:04 <MissPiggy> well you could write
23:53:09 <alise_> right, but i still do not get Sigma
23:53:11 <MissPiggy> Sigma N (\n -> Fin n -> T)
23:53:15 <alise_> rewrite it with dot notation
23:53:16 <alise_> ok so it's
23:53:18 <MissPiggy> if it was defined as
23:53:23 <alise_> sigma (n:N). Fin n -> T
23:53:38 <MissPiggy> Sigma (T : *) (P : T -> *) : <_,_> : (t : T) -> P t -> Sigma T P
23:53:41 <MissPiggy> oops
23:53:44 <MissPiggy> Sigma (T : *) (P : T -> *) := <_,_> : (t : T) -> P t -> Sigma T P
23:53:45 <alise_> I am still unsure why we specifically chose this to isomorph list to.
23:54:04 <MissPiggy> a lists is say, 4::4::3::2::5::5::nil,
23:54:23 <MissPiggy> so that's equivalent to the function {#0->4,#1->4,#2->3,...}
23:54:31 <MissPiggy> (using # notation for elements of Fin)
23:54:58 <alise_> And 0->4,1->4, etc but fair dos.
23:55:00 <alise_> Why do we need Sigma here?
23:55:06 <MissPiggy> the reason is because we can compute the induction principle for T, but we DOnt know how to do T yet
23:55:09 <MissPiggy> oops
23:55:10 <MissPiggy> the reason is because we can compute the induction principle for T', but we DOnt know how to do T yet
23:55:22 -!- Gracenotes has quit (Remote host closed the connection).
23:55:52 <alise_> no what i mean is
23:55:55 <alise_> I get how a list is isomorphic to Fin n -> T
23:55:58 <MissPiggy> no
23:55:59 <alise_> oh i see
23:56:02 <alise_> we're using sigma to quantify
23:56:05 <MissPiggy> list is isomorphic to Sigma n, Fin n -> T
23:56:18 <alise_> can you use the notation forall (n:N) in future? Sorry; it's just heavily ingrained in my mind.
23:56:27 <MissPiggy> because (Sigma n, Fin n -> T) : *, but (forall n, Fin n -> T) : N -> *
23:56:28 <alise_> My mind parses that Sigma very badly :/ A personal failing.
23:56:39 <MissPiggy> list T : * whereas Vector T : N -> *
23:56:46 <alise_> Hmm. I see.
23:56:52 <alise_> Not in mine.
23:56:55 <alise_> forall is implicit in mine.
23:56:59 <alise_> Then {n:N} ->, I suppose.
23:57:19 <MissPiggy> anyway you can do the induction principle for T' the same way as we did O
23:57:50 <alise_> Can you repeat T''s definition with {x:T} -> notation?
23:57:53 <alise_> I think I will understand it then.
23:58:04 <MissPiggy> T' := L' : T' | B' : (n : N) -> (Fin n -> T') -> T'
23:58:25 <alise_> *{n : N} ->
23:58:32 <alise_> But, gotcha.
23:58:32 <MissPiggy> it's not implicit
23:58:38 <alise_> Except that only handles infinite lists
23:58:41 <MissPiggy> what do you mean by {}?
23:58:43 <alise_> MissPiggy: oh right
23:58:45 <MissPiggy> no it only handles finite lists
23:58:46 <alise_> sorry
23:58:49 <alise_> really?
23:58:50 <MissPiggy> every natural number is finite
23:58:55 <alise_> yes, but
23:58:58 <alise_> Fin 984350934580345
23:59:05 <MissPiggy> that's still finite :D
23:59:06 <alise_> doesn't work as a param to a 5-length list
23:59:23 <alise_> no it isn't you have to be able to access element N for every natural N
23:59:30 <alise_> which is the very definition of countably infinite...
←2010-03-06 2010-03-07 2010-03-08→ ↑2010 ↑all