00:00:34 -!- Phantom_Hoover has quit (Remote host closed the connection).
00:16:34 <HackEso> gianni schicchi? ¯\(°_o)/¯
00:16:41 <HackEso> Gianni Schicchi? ¯\(°_o)/¯
00:17:28 -!- b_jonas has quit (Quit: leaving).
00:28:07 -!- Lord_of_Life has quit (Ping timeout: 240 seconds).
00:30:02 -!- Lord_of_Life has joined.
00:32:38 <oerjan> `le/rn lie group//Lie groups are groups that try being too smooth for their own good.
00:32:40 <HackEso> Learned 'lie group': Lie groups are groups that try being too smooth for their own good.
01:42:04 <kmc> is there a way to link to a webpage while also injecting a custom stylesheet
01:42:13 <kmc> some of these ham websites are painfully bad
01:42:20 <kmc> otoh, they don't tend to contain 800 MB of JavaScript
01:45:40 <kmc> well, you can at least run a javascript: url after loading it
01:57:06 -!- theology has joined.
01:57:19 -!- theology has left ("Leaving").
02:56:20 -!- FreeFull has quit.
02:58:13 <ski> orin : "oren-hates-git" -- perhaps you should be friends with JordiGH (works on Octave, iirc. is often in #emacs, and at least sometimes in ##math)
02:59:09 <ski> hm, would `Rel' rather be the categories of modules (or "modules" ?) over the boolean semi-ring ?
02:59:28 <ski> (or maybe all of them are free ?)
03:00:29 * ski has pondered covariant vs. contravariant powerset functor a bit, doesn't seem to really get it yet, though
03:01:03 <shachaf> The covariant one is weird.
03:02:16 <ski> afaiu, it's about to ⌜{f(x) | x ∈ S}⌝, iow (direct / existential) image
03:07:35 <esowiki> [[Brainfuck]] https://esolangs.org/w/index.php?diff=60328&oldid=60325 * Ais523 * (-103) Undo revision 60325 by [[Special:Contributions/Cortex|Cortex]] ([[User talk:Cortex|talk]]): we probably don't need an alternative program that's slightly broken; if it's the length you care about, ",[.>,]" is the same length and actually works
03:12:00 <ski> if the covariant is ⌜℘⌝, and the contravariant is ⌜(Ω ←)⌝, then "Sets for Mathematics" (Lawvere,Rosebrugh) talks some about a weird ⌜(Ω ←)² ⟵ ℘⌝, that they write with an integral sign. uncurrying, we get ⌜Ω A ⟵ ℘ A × (Ω ← A)⌝ which expresses whether there's any overlap between a "covariant subset" and a "contravariant subset"
03:16:31 <ski> (in ⌜Rel⌝, ⌜Ω ⟵ A⌝ would correspond to ⌜ɪ ⟵ A⌝, where ⌜ɪ⌝ is the neutral element for the tensor, namely the singleton set. then ⌜Ω ← A⌝ is the object that corresponds to "names" of relations in ⌜ɪ ⟵ A⌝, while ⌜℘ A⌝ is the object that corresponds to "names" of relations in ⌜A ⟵ ɪ⌝, and then this "overlaps?" operation ist just composition in ⌜Rel⌝ (and converting back to an element of ⌜Ω⌝))
03:16:59 <ski> btw, this operation is a normal natural transformation, nothing weird there
03:17:57 <ski> (er .. sorry, i said we get ⌜Ω A ⟵ ℘ A × (Ω ← A)⌝, but obviously i meant we get ⌜Ω ⟵ ℘ A × (Ω ← A)⌝ ..)
03:18:47 <ski> otoh (as i mentioned briefly in #haskell), there is a conversion ⌜(Ω ← A) ⟵ ℘ A⌝, which is a *dinatural* transformation, because it's of "mixed type"
03:19:07 <ski> (dinatural in ⌜A⌝, obv. ..)
03:19:58 <ski> if we uncurry this, we get ⌜Ω ⟵ A × ℘ A⌝, which is just our only friend, the membership predicate ⌜∈⌝
03:23:16 -!- fractal has quit (Ping timeout: 244 seconds).
03:23:16 -!- ATMunn_ has quit (Ping timeout: 244 seconds).
03:23:25 -!- ATMunn has joined.
03:25:16 <ski> while, the other direction ⌜℘ A ⟵ (Ω ← A)⌝ ought to correspond to the general (set) comprehension (sans (direct) image notation, as above), so just ⌜{x : A | χ x = ⊤}⌝, or ⌜{x : A | χ x}⌝ for short (where ⌜χ x⌝ is typically thought of some expression ⌜⋯x⋯⌝ (possibly) depending on ⌜x⌝. cf. this comprehension with plain ⌜λ x ↦ ⋯x⋯⌝)
03:28:26 <ski> (oh .. and i really wonder why ends and coends are written using integral notation. maybe cooends could be thought of as "sums" if you squint, but ends !?)
03:29:41 <ski> (also, is there a notion of taking the exponential of the integral of the log of an integral, getting some kind of "continuous product", if integral is to be "continuous sum" ? .. and would this be related to logarithmic differentiation ?)
03:29:55 <ski> (er, of the log of an integrand)
03:32:29 <ski> (the book seemed to suggest that the integral notation for the "overlaps" functor would be somehow related to "ordinary" integrals, with a bounded ("bornological") integration domain (subset), and the integrand being otoh continuous)
03:33:13 <ski> (apparently "open subsets" is contravariant (not much surprise), while "bounded subsets" is covariant)
03:36:18 <ski> hm, another perhaps related thing. an element of a free module (or vector space) can be written as a "formal" (finite / with finite support) sum over scalar coefficients scaling the basis elements (the elements of the starting set we're "freeing")
03:37:26 <ski> (or, if we're proving that a given module / vector space has a basis, we'd pick a family of elements of the space, and index the coefficients with the same index set)
03:42:06 -!- fractal has joined.
03:45:24 <ski> so, at least for finite-dimensional, you can apparently think of this as a sum (/ "existential" / coend) over the tensor of two functors from ⌜FinSet⌝ to the ring (considered as an abelian(?) category), respectively to ⌜Set⌝, the former *covariant* (using the sums in the ring to model nondeterminism with direct / existential images), ..
03:45:38 <ski> .. while the latter (familiarly) would be contravariant (as per inverse image, which is precomposition on the classifying morphism), no nondeterminism of ⌜Ω⌝ needed here
03:48:17 <ski> .. also the monoid ring construction is also *covariant* in the monoid (also using ring nondeterminism. convolution on the monoid elements, which works because everything is finite support)
03:48:56 <ski> sorry, should be commutative monoids
03:49:47 <ski> this construction yields the familiar polynomial rings, if you take the monoid to be the free monoid (over the set of indeterminates, then)
03:50:10 <ski> (so convolution gives the usual rule for polynomial multiplication)
03:52:35 <ski> .. however, i was wondering about "formal power series", where you scrap the finite support in the sums. if you want to generalize that to a not necessarily free monoid, it seems that, for it to be well-defined, the (still commutative) monoid needs to have the property that every element can be decomposed into "two parts" in finitely many ways
03:54:49 <ski> (perhaps the monoid ring works out with a non-commutative monoid (and non-commutative ring) as well, as long as when you interpret it, with "evaluation" (application / substitution), the ring among where you select values for the indeterminates commutes with the coefficient ring ..)
03:59:08 <ski> (.. in general, when you interpret a polynomial, you don't need to pick the indeterminate values from the coefficient ring. you could pick them from a super ring (e.g. a (say commutative) subring of square matrices / linear endotransformations. we can embed the scalars as scalings of the identity. or you don't even need the translation to be an inclusion (injective). but probably more theorems fail then)
04:06:48 <ski> (so, a polynomial ring over a coordinate ring ⌜R⌝ is the free "ring under ⌜R⌝" (living in the coslice category wrt ⌜R⌝ / the category of rings under ⌜R⌝, being those with a designated extra structure for interpreting the elements of ⌜R⌝ in each ring in the category. (you can always do this for ⌜ℤ⌝, so "free ring over a set" is just polynomial ring with integer coefficients))
04:10:00 <ski> (hm, there's probably some relation of ⌜ℤ⌝ to neutral element of tensor here ..)
04:10:37 <ski> (recall that an abelian group is a module over ⌜ℤ⌝)
04:17:54 <ski> (.. i wonder whether the monoid ring construction can be thought of as a free construction .. or at least as an adjoint. i've also pondered, a little, more explicit constructions of polynomial rings. one is the CPS-like encoding ⌜R ← (R ← X)⌝, where ⌜X⌝ is the set of indeterminates. so, given a valuation (value environment) giving values for all indeterminates, we get a corresponding value for the polynomial ..))
04:22:43 <ski> (.. but this presumably needs to be restricted in some way (possibly restricting one or both arrows to functions that respect some structure), otherwise we could express non-polynomials in this way)
04:25:29 <ski> (anyway, we should have ⌜∀ S. S ← (S ← X)⌝ rather, where ⌜S⌝ is an arbitrary ring "under" ⌜R⌝, so that we can interpret the coefficients in ⌜R⌝ in this ring (often a superring) ⌜S⌝. now pure CPS shows even more :)
04:29:56 <ski> (still, there's another representation, ⌜R ← (ℕ ← X)⌝, where both arrows should be restricted to finite support (think `Map'), which makes them *covariant* in the domain, afaiui. each value in ⌜ℕ ← X⌝ (the free commutative monoid over ⌜X⌝, recall ⌜ℕ⌝ is free (commutative) monoid over singleton) would be a combination of exponents, for each indeterminate (but with finite support, so only finitely many with non-zero exponent))
04:34:31 <ski> (then, the other arrow having finite support means that we only consider assigning to *finitely* many such "monomials", a coefficient in ⌜R⌝. and if we wanted to, we could "expand" this as before, into ⌜∀ S | S ⟵ R. S ← (ℕ ← X)⌝, but that's actually the same thing as plain ⌜R ← (ℕ ← X)⌝, since ⌜R⌝ only occurs covariantly (both sides of the arrows should be positive/covariant, in this case, because of finite support))
04:36:19 <ski> (probably i should use another notation for the finite support arrow. i've seen "raised to an exponent enclosed in round brackets", i think. also cf. arrays in e.g. array-oriented languages)
04:36:52 <ski> (that notation also being used for monoid ring, at least in one book)
04:38:15 <ski> so .. hm, i would like to better understand these two constructions, and their (hopeful) equivalence, perhaps under some extra conditions (?)
04:40:23 <ski> also the situation with generalization to formal power series (but for a not-necessarily-free (commutative) monoid of "monomials", that nevertheless has this "finite convolute/splitting" property, that ##math didn't know a name for, when i asked
04:41:45 <ski> hm, this became a loosely tangled "rant" (rather "reflection", perhaps), on some things related to co- and contra- variance, that i've been pondering lately
04:56:41 -!- nfd9001 has joined.
04:56:50 -!- danieljabailey has joined.
04:58:51 -!- nfd has quit (Ping timeout: 244 seconds).
05:16:32 -!- lambdabot has quit (Remote host closed the connection).
05:19:16 -!- lambdabot has joined.
07:13:52 <oerjan> i guess sam really is immune to the sauce, then.
07:23:06 -!- xkapastel has quit (Quit: Connection closed for inactivity).
08:15:52 -!- MDude has quit (Ping timeout: 245 seconds).
08:18:06 -!- MDude has joined.
08:21:45 * oerjan is surprised that this girl genius creature can be surprised
08:25:29 <orin> why is there no biderectional bit shift operator
08:26:49 <oerjan> > (4 `shift` 1, 4 `shift` (-1))
08:32:10 <orin> also I contend that fscanf should have a variant which is guaranteed to read exactly one line
08:36:04 <oerjan> ginormous line coming up...
08:44:10 <orin> should be fine as long as after it reads enough it skips past the next \n
08:45:08 <orin> i mean with normal fscanf you can put all the inputs on ones line
08:47:12 <orin> whereas fortran READ statement reads exactly one card
08:48:03 <orin> another example of fortran being less error-prone than C
09:22:26 -!- AnotherTest has joined.
10:46:40 -!- oerjan has quit (Quit: Later).
11:39:58 -!- mich181189 has quit (Ping timeout: 258 seconds).
11:41:34 -!- mich181189 has joined.
11:52:00 -!- arseniiv has joined.
12:29:06 -!- Lord_of_Life has quit (Ping timeout: 252 seconds).
12:30:44 -!- Lord_of_Life has joined.
12:47:16 -!- Essadon has joined.
13:42:38 -!- wob_jonas has joined.
13:43:04 <wob_jonas> Wow. I didn't know there were more than 2**17 different unicode characters.
13:56:02 <wob_jonas> And apparently the majority of those are hanzi/kanji.
13:57:58 -!- xkapastel has joined.
14:03:56 <orin> expected ‘const struct bdfglyph * const* const’ but argument is of type ‘struct bdfglyph **’
14:04:02 <orin> how is that incompatible?!
14:04:35 <orin> C const as implemented by gcc makes no sense
14:06:02 <wob_jonas> the expected one is const * const *
14:06:41 <orin> the function is pormising not to modify literally anything, but GCC doesn't seem to pick up on that
14:09:21 <orin> i mean it's only a warning but its a STUPID warning
14:10:17 <wob_jonas> I thought it was forbidden to cast a T** to a T const** but allowed to cast it to a T const* const*
14:10:49 <orin> doesn't seem to be allowed
14:17:37 <orin> int main(int argc, char **argv){const char *const *const constargv = argv;return 0;}
14:19:08 <orin> tcc also warns about it
14:19:32 <orin> but I would expect gcc to be less lazy when deciding what's incompatible
14:34:38 -!- tromp has quit (Remote host closed the connection).
14:39:55 -!- fmease has joined.
14:49:14 -!- tromp has joined.
16:07:39 -!- xkapastel has quit (Quit: Connection closed for inactivity).
16:17:27 -!- xkapastel has joined.
17:19:55 <kmc> that's a lot of const
17:21:02 <kmc> cdecl doesn't like const struct bdfglyph * const* const
17:25:19 -!- wob_jonas has quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client).
17:28:31 -!- sebbu has quit (Ping timeout: 255 seconds).
17:50:34 -!- sebbu has joined.
17:50:38 <orin> Yay, I'm getting a cubicle with a window on the 20th floor
17:51:35 <orin> kmc: what about if you give it a name
17:51:39 <orin> kmc: const struct bdfglyph * const* const x;
18:14:13 -!- FreeFull has joined.
18:30:07 <esowiki> [[User:Fmease]] N https://esolangs.org/w/index.php?oldid=60329 * Fmease * (+114) Create page
18:52:00 -!- b_jonas has joined.
19:07:06 <shachaf> ski: whoa, was all that for me?
19:12:34 -!- Phantom_Hoover has joined.
19:12:35 -!- Phantom_Hoover has quit (Changing host).
19:12:35 -!- Phantom_Hoover has joined.
19:14:28 <fizzie> orin: It's fine in C++ but not in C, as I guess you've discovered.
19:19:29 <fizzie> The C++ rules around const are much more nuanced. In C it's just the one level of const-ness you can add to a pointer, and the types "below" that must be already compatible.
19:20:51 <fizzie> The conversion via a cast might be legal in C too, but I've got enough of a headache to not puzzle that out now.
19:27:00 <b_jonas> fizzie: ah, so that's why I thought
19:27:11 <b_jonas> I'm more familiar with the C++ rules than the C ones
19:58:26 -!- orby has joined.
20:00:34 -!- b_jonas has quit (Quit: leaving).
20:07:15 -!- MDude has quit (Remote host closed the connection).
20:23:59 -!- MDude has joined.
20:41:05 <ski> shachaf : i dunno. if you're interested in that kind of stuff
20:43:33 -!- Cale has quit (Ping timeout: 250 seconds).
20:56:44 -!- Cale has joined.
22:05:21 -!- Remavas has joined.
22:39:14 <shachaf> ski: I am, I just didn't see it
22:39:24 <shachaf> And still haven't read it, but I'll look when I'm at my computer
23:29:43 -!- Remavas has quit (Read error: Connection reset by peer).
23:30:11 -!- Remavas has joined.
23:45:53 -!- Vorpal has quit (Ping timeout: 245 seconds).
23:46:00 -!- AnotherTest has quit (Ping timeout: 252 seconds).
23:46:31 -!- arseniiv has quit (Ping timeout: 255 seconds).
23:51:27 -!- Vorpal has joined.
23:53:57 <moony__> ghidra has an impressively smart decompiler
23:54:57 <zzo38> Even though "Game of XYZABCDE - Part II" (xyzabcde2 for short) is not yet completed (it will take a while; one thing that has to be done is to figure out what rooms to put), the source code of so far can be downloaded (it is in the public domain and will remain so even once it is completed).
23:56:36 -!- Cale has quit (Ping timeout: 252 seconds).
23:56:36 <zzo38> Since while outside it will be possible to fly above many locations, to avoid having to add flying rooms explicitly for each such room (in some cases it is necessary, but sometimes it won't be), there is a prototype Y.SkyRoom to use the default flying above, and a special room R.FlyingAboveRoom for this purpose.