2025/03/27

Newest at the top

2025-03-27 05:13:20 +0100 <EvanR> ultrafinitism would forbid infinite and most of the finite values
2025-03-27 05:12:51 +0100 <haskellbridge> <Bowuigi> Why do you need to constraint infinities?
2025-03-27 05:12:37 +0100 <haskellbridge> <Bowuigi> Doesn't totality forbid infinitely large values (excluding codata, which can still be encoded, tho not evaluated on its entirety) via Church-Rosser?
2025-03-27 05:11:55 +0100Square(~Square@user/square) Square
2025-03-27 05:11:14 +0100 <EvanR> for incredibly small values of infinity, such and such
2025-03-27 05:11:01 +0100 <haskellbridge> <Bowuigi> A what
2025-03-27 05:10:43 +0100 <EvanR> an ultrafinitist interpretation might get you lower than the lowest common denominator
2025-03-27 05:10:25 +0100 <haskellbridge> <Bowuigi> Unless you want to play around with bottoms, which is ok I guess
2025-03-27 05:10:07 +0100 <haskellbridge> <Bowuigi> EvanR it gets you the "lowest common denominator" of the members of all the semantics. On a lot of cases these are the most useful
2025-03-27 05:09:10 +0100 <haskellbridge> <Bowuigi> But in this case you wanted to get the members of a fixpoint function so assuming totality would be dumb lol
2025-03-27 05:09:03 +0100 <EvanR> assuming totality, that seems to call for a whole different semantics
2025-03-27 05:08:46 +0100 <monochrom> Oh domains are difficult, it never "helps" to get them involved. But I was going for clarifying *what* to count.
2025-03-27 05:08:24 +0100 <haskellbridge> <Bowuigi> Assuming totality and equating using funext/homotopies is an easy way to get most of the useful terms
2025-03-27 05:07:23 +0100 <EvanR> so maybe domains didn't help clear up "how to count" as much as you hoped
2025-03-27 05:06:57 +0100 <haskellbridge> <Bowuigi> (Assuming the usual 'bottom x = bottom')
2025-03-27 05:06:25 +0100 <haskellbridge> <Bowuigi> They are equal under function extensionality
2025-03-27 05:06:22 +0100 <haskellbridge> <Liamzee> ah
2025-03-27 05:06:13 +0100 <haskellbridge> <Liamzee> also (\x -> bottom) can be evaluated without triggering bottom?
2025-03-27 05:06:11 +0100 <EvanR> but you might be right there's no way to observe the difference
2025-03-27 05:06:09 +0100 <monochrom> I know Haskell's seq can distinguish them. But I also know that the Haskell Report confesses that this is why seq deviates from denotational semantics.
2025-03-27 05:05:14 +0100 <EvanR> one is more defined than the other, obviously
2025-03-27 05:05:06 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) (Ping timeout: 252 seconds)
2025-03-27 05:04:59 +0100 <monochrom> I have trouble distinguishing ⊥ from \x -> ⊥
2025-03-27 05:04:15 +0100 <haskellbridge> <Bowuigi> Yes
2025-03-27 05:03:57 +0100 <EvanR> ⊥, \x -> x, \x -> ⊥, \x -> ()
2025-03-27 05:03:56 +0100 <haskellbridge> <Bowuigi> Backslashes*
2025-03-27 05:03:37 +0100 <haskellbridge> <Bowuigi> Matrix might have eaten some parens
2025-03-27 05:03:22 +0100 <haskellbridge> <Bowuigi> Sorry, \x -> bottom and \() -> bottom
2025-03-27 05:02:50 +0100 <haskellbridge> <Bowuigi> \x -> bottom and _ -> bottom are the same thing, () -> bottom is \x -> case x of () -> bottom which already returns bottom on every case
2025-03-27 05:02:13 +0100 <monochrom> Oh you can always proofread and edit before pressing enter.
2025-03-27 05:01:46 +0100 <haskellbridge> <Liamzee> i wish i could delete my imprecise blather
2025-03-27 05:01:38 +0100 <EvanR> at the very least, use a universe
2025-03-27 05:01:17 +0100 <EvanR> "the cardinality of all types" wwwwwwwwhwhhhhhaaaaaaaat
2025-03-27 05:01:00 +0100 <haskellbridge> <Liamzee> i mean if you restrict a, instead of newtyping, it's equal to the cardinality of all types
2025-03-27 05:00:57 +0100 <haskellbridge> <Bowuigi> Yeah
2025-03-27 05:00:54 +0100 <haskellbridge> <Bowuigi> \x -> ()
2025-03-27 05:00:43 +0100 <EvanR> \x -> ()
2025-03-27 05:00:35 +0100 <EvanR> ?
2025-03-27 05:00:33 +0100 <EvanR> \() -> ⊥
2025-03-27 05:00:05 +0100 <EvanR> ⊥, \x -> x, \x -> ⊥,
2025-03-27 05:00:01 +0100merijn(~merijn@host-vr.cgnat-g.v4.dfn.nl) merijn
2025-03-27 04:59:16 +0100 <EvanR> for () -> () you'd have
2025-03-27 04:58:53 +0100 <EvanR> if you use domains, for Nat you'd have ⊥, Z, S ⊥, S Z, S (S ⊥), S (S Z), ...
2025-03-27 04:56:53 +0100JuanDaugherty(~juan@user/JuanDaugherty) JuanDaugherty
2025-03-27 04:56:44 +0100 <haskellbridge> <Liamzee> so in that case, the only inhabitant is a value that produces bottom, which i guess is 1
2025-03-27 04:56:22 +0100 <haskellbridge> <Liamzee> sorry, my mistake for not being specific
2025-03-27 04:56:10 +0100 <EvanR> newtype Mu a = Mu (Mu a -> a)
2025-03-27 04:54:01 +0100 <EvanR> where exactly, since I asked what the type needed to be and you said "function"
2025-03-27 04:53:46 +0100 <haskellbridge> <Liamzee> yes, but how would you manufacture a non-bottom value of type a?
2025-03-27 04:53:31 +0100 <haskellbridge> <Liamzee> or rather the typechecker