2024/05/01

Newest at the top

2024-05-01 04:48:03 +0200waldo(~waldo@user/waldo) (Quit: waldo)
2024-05-01 04:45:22 +0200peterbecich(~Thunderbi@syn-047-229-123-186.res.spectrum.com) (Ping timeout: 268 seconds)
2024-05-01 04:45:19 +0200terrorjack(~terrorjac@2a01:4f8:c17:87f8::)
2024-05-01 04:43:24 +0200terrorjack(~terrorjac@2a01:4f8:c17:87f8::) (Quit: The Lounge - https://thelounge.chat)
2024-05-01 04:43:21 +0200gues54302(~username@3.184.70.115.static.exetel.com.au)
2024-05-01 04:42:35 +0200Square3(~Square4@user/square) (Ping timeout: 268 seconds)
2024-05-01 04:29:44 +0200td_(~td@i53870927.versanet.de)
2024-05-01 04:27:50 +0200td_(~td@i53870902.versanet.de) (Ping timeout: 245 seconds)
2024-05-01 04:21:27 +0200cashew(~cashewsta@65.17.175.150)
2024-05-01 04:17:49 +0200Axman4765Bynbo7
2024-05-01 04:17:42 +0200Axman4765(~Axman6@user/axman6)
2024-05-01 04:13:50 +0200Katarushisu1(~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net)
2024-05-01 04:12:09 +0200 <c_wraith> no, I mean that if a problem like this is hard, there are just a *lot* of distinct subproblems.
2024-05-01 04:11:54 +0200 <talismanick> It's probably be none-too-expensive to preface the interpreter with the reduction rules, so long as the free monad/binary decision tree is built and consumed incrementally, right?
2024-05-01 04:11:39 +0200Katarushisu1(~Katarushi@finc-20-b2-v4wan-169598-cust1799.vm7.cable.virginm.net) (Read error: Connection reset by peer)
2024-05-01 04:09:58 +0200 <talismanick> The reduction of a Boolean function is canonical (up to variable ordering), so maybe it's not a problem in this case...
2024-05-01 04:08:09 +0200 <talismanick> c_wraith: the cost of bookkeeping is prohibitive for free monads in general, you mean?
2024-05-01 04:05:28 +0200skionly heard someone mention Soufflé the other week, recognized the mention of BDDBDDB, but hasn't looked at it
2024-05-01 04:02:45 +0200 <c_wraith> Ah, not quite. Patricia tries have a fixed fanout of 2
2024-05-01 04:01:17 +0200 <c_wraith> Which... sounds sorta like Patricia Tries, actually.
2024-05-01 04:01:01 +0200 <c_wraith> B-trees are already lexicographically ordered. I'm betting it's more like adjusting the number of bits in a node in order keep the fan-out within particular bounds.
2024-05-01 03:59:41 +0200 <talismanick> found it: https://souffle-lang.github.io/pdf/pmam19.pdf
2024-05-01 03:59:28 +0200 <talismanick> ski: I think Souffle now uses a concurrent B-tree/trie hybrid (lexicographically-ordered B-tree?)
2024-05-01 03:50:54 +0200wroathe(~wroathe@user/wroathe) (Ping timeout: 252 seconds)
2024-05-01 03:49:59 +0200 <ski> (not clear how would apply something like that to BDDs, though)
2024-05-01 03:49:07 +0200 <ski> (what i was thinking about was encoding the sharing in the type, or rather, in the decomposition process, making it mandatory, thereby making sure it will happen in the result as well)
2024-05-01 03:47:32 +0200 <ski> there's also a problem that when traversing a structure with sharing, producing a new parallel structure, that would normally lose all sharing
2024-05-01 03:46:30 +0200ski. o O ( "BDD-Based Deductive Databasee" <https://bddbddb.sourceforge.net/> ; "Soufflé - A Datalog Synthesis Tool for Static Analysis" <https://souffle-lang.github.io> )
2024-05-01 03:43:11 +0200waleee(~waleee@h-176-10-144-38.NA.cust.bahnhof.se) (Quit: WeeChat 4.1.2)
2024-05-01 03:38:18 +0200 <c_wraith> well, no. The problem is sharing only happens when explicitly introduced, and doing that is going to require bookkeeping. And the memory cost of that bookkeeping is ridiculous.
2024-05-01 03:36:16 +0200 <talismanick> Is the problem is that laziness memoizes and shares for you without asking, making every tree equivalent to a DAG but not the one you want?
2024-05-01 03:32:04 +0200 <talismanick> kind of like SAT solving
2024-05-01 03:31:46 +0200 <talismanick> https://en.wikipedia.org/wiki/Binary_decision_diagram
2024-05-01 03:31:22 +0200 <ski> s/re/are/
2024-05-01 03:31:19 +0200skidoesn't recall what those re
2024-05-01 03:31:09 +0200 <talismanick> yeah
2024-05-01 03:30:28 +0200 <ski> hm, is "BDD" Binary Decision Diagram ?
2024-05-01 03:29:18 +0200 <talismanick> is it the kind of thing where it becomes obvious when you write it down?
2024-05-01 03:29:12 +0200otto_s(~user@p4ff27c65.dip0.t-ipconnect.de)
2024-05-01 03:29:11 +0200 <ski> or, in terms of composition, if `Compose (Compose ar0 ar1a) (Compose ar1b ar2) = ar012', then `ar1a = ar1b'. so we have something like `Compose :: (ar0 :: Slice n) -> (ar1 :: Slice n) -> Agree ar0 ar1 => Slice (1+n)', where `Agree (Singleton x) (Singleton y)' as well as `(ar1a = ar1b) => Agree (Compose ar0 ar1a) (Compose ar1b ar2)' (where `Agree :: Slice n -> Slice n -> Constraint')
2024-05-01 03:27:48 +0200otto_s(~user@p4ff27e40.dip0.t-ipconnect.de) (Ping timeout: 252 seconds)
2024-05-01 03:26:03 +0200 <talismanick> because, if one can assume "maximal sharing", I feel like I can see in my head how a BDD might be implemented with a (real) free monad
2024-05-01 03:24:25 +0200 <ski> basically, we have, if `Just (ar01,ar12) = decompose ar012', `Just (ar0,ar1a) = decompose ar01' and `Just (ar1b,ar2) = decompose ar12', then `ar1a = ar1b'
2024-05-01 03:23:41 +0200 <talismanick> I'm feeling a little stupid, then, trying to understand https://hackage.haskell.org/package/zsdd/docs/Data-Diagram.html
2024-05-01 03:18:35 +0200 <ski> advantage of the sharing
2024-05-01 03:18:29 +0200 <ski> given an array/vector with indices from `0' to `n-1' (incl.), we could decompose this into one slice from `0' to `n-2' and one from `1' to `n-1', guaranteed to overlap on the `1' to `n-2' part. eventually, we'd get down to singleton slices, which could be the base case of a dynamic programming, then results percolating back up in a "lattive"-like structure, rather than a tree, proper, thereby taking
2024-05-01 03:15:53 +0200waldo(~waldo@user/waldo)
2024-05-01 03:15:04 +0200 <ski> iow, i'm thinking of something like a catamorphism
2024-05-01 03:15:01 +0200 <c_wraith> you can embed basically anything you want into f
2024-05-01 03:14:50 +0200 <c_wraith> pick f carefully.