It's interesting that in programming the bifunctor was described as CxC -> C and NOT CxC -> CxC. Because at first glance the result also looks like a cartesian product. And in haskell bimap is (a -> b) -> (c -> d) -> p a c -> p b d. p a c -> p b d seems to correspond to CxC -> CxC at first glance. But I guess it is not necessarily because the two functions might not produce all possible values, therefore we are not guarnteed to have a cartesian product of all possible types in the category. There could be pairs of functions (both completely surjective over C) that map CxC-> CxC, but a bifunctor is open to all kinds of functions that don't output the whole of C in their codomain. Therefore we have to describe the bifunctor in programming as CxC -> C. Is this correct?
27 дней назад
I regret not having this lecture eight years ago. Better late than never
Hello, I'm from Vietnam, I've finished watching playlist 1 of category theory, in playlist 2 there are some videos without subtitles, please add them. Thanks you so much !!!
i feel like i actually understand epics and monic now, wow. after all these years. finally!!!!!!! thank you! the most understandable category theory introduction EVER!
Came to learn and deep dive into Category Theory but feel like I am getting vibes of Vedanta infused Philosophical renderings that I typically hear in Pravachans at my local Madhva Temples on Multiverse and Brahman pervading Creation while containing Creation (Set of all Sets). Loving this introduction so far. Yeah I agree with your sentiment that the more you discover stuff the more Philosophical you get. No doubt about that.
I'm trying to grasp 41:00 and running into problems. So for natural numbers and multiplication what would be the "morphism"? If I think correctly. I have element 5, I have morphism "multiply by 4", I get element 20. Obviously, "multiply by 4" will map set of natural numbers N into N, same for any morphism "multiply by k". Which leads me to question. In such formulation, the morphism itself in cathegory theory isn't actually tied to the element of N. so " multiply by 1" is identity morphism, but from the standpoint of cathegory theory we don't really know that this "1" is from that dot "m", because we don't really know what's inside the dot. Doesn't this mean that it's possible for cathegory to have identity morphism but for the derived set to not have identity element? If you take the previously talked about "<=" relation and construct monoid in N with it, it seems you won't get a "set theory monoid" from "cathegory theory monoid" with it.
I guess for me the "unintuitive" part is that in cathegory theory we don't postulate that "arrows" are the members of "m" dot here. I understand why they are members of hom-set, but we have to postulate (?) their relation to elements in m when we convert from cathegory theory to set theory, right? So we have to postulate that "multiply by k" morphism has one-to-one relation to elements of m. I wonder if it is possible to do this in more minimal way? Like axiomatically say "identity morphism corresponds to 1" , and then i'm not sure what extra things we need to postulate to get to "monoid in set theory". But if you read this, I'd really like to check - am I correct in my understanding that we need to postualte the mapping between elements of m and morphism or is there a way around it?
Oh, I think I used term "morphism" in a wrong way here. I meant "arrows". So "multiply by 4" is an arrow and the set of all of these arrows is morphism.
I've watched all the Haskell videos. Although I knew Haskell before (up to parallelism) your way of presenting things is so clear and it was so cool to refresh my knowledge! Thank you for that!
1:01 talk about sets in terms of category so that we can generalize it to an arbitrary category 2:52 'any' means if exists, so if not exists, then it's automatically true 6:25 the value of empty category
2:44 pure function 8:48 definition of relation 10:11 definition of relation, cartesian product 11:32 comparison between relation and function 34:34 if I can't tell about the internals(elements), how can I talk about morphism's properties? (in terms of category theory)
4:30 definition of category 6:36 barber's paradox(Russell's paradox) 13:25 language constrains us 14:58 category is like a graph 15:54 "how is it possible that you can have more than one arrow? Aren't they all the same?" / "no, they are different ... you just give them different names" 18:18 definition of 'composable' 27:40 meaning of "two compositions are isomorphic" 33:19 bottom value for infinite loop 35:20 definition of types in programming 37:45 using category theory as a abstract and simplified(high-level) model for understanding programming language
21:21 practical motivation of learning category theory in terms of programming 37:23 abstract approach used in most of academic subjects 46:04 meaning of category theory
The insights and perspectives shared in this lecture are truly beautiful. Once seen, they stay with you forever. My sincere thank you for the entire series, and especially for this lecture!
I'm looking for help anywhere. My question is I see (T(X)) and (T(T(X))) are parentheses around Monads, is this the wrap that is mentioned in Monad literature?
Brilliant series. -Just a minor correction: At --21:10-- I think you intended to say that "f is mapped to u after f" rather than "u is mapped to u after f".-
So if I'm following, you were giving the way the functor maps morphisms, mapping f::Y->X to C(f,a)::C(X,a)->C(Y,a). To do this you constructed C(Y,a) elementwise from C(X,a) (where u is from C(X,a)) using f. Thank you for replying and promptly too!
28:30 I viewed this part again to understand how epsilon natural transformation is constructed from the composition of functors FoU and the monad tripple (T, eta, mu). But you use sigma to construct sigma. The object (a, sigma) is our goal, not our start. In essense, the co-unit is the inverse of the combined functor FoU. Using method from your explanation, you would be able to construct an inverse for any endofunctor, but obviously not all endofunctors have an inverse at all
Our goal is, for any (a, sigma) (which is a monad algebra), to construct epsilon as an algembra morphism. It turns out that this algebra morphism is given by sigma. Draw the diagram that defines an algebra morphism.
@@DrBartosz I understand that sigma satisfies all the conditions, but there could be a few morphisms like this, how do we know which one to take? For example if C is Hask and a is Int, T is list, we can have 2 separate objects in CT: (int, max) and (int, min) with sigma taking maximum or minimum from the list. Both sigmas satisfy all conditions, monadic and algebra
actually the way we constructed EM category there should be only one object with the same carrier, but we only know about evaluation functions of the objects like Ta, other objects have unknown sigma. Maybe it reminds the situation with functions from the initial object in Set: these functions can never be called?
@@skibaa1 I'm not sure what you're struggling with. We're implementing a function epsilon that takes a monad algebra as an input and produces another monad algebra. We don't care how many algebras there are.
@@DrBartosz we have to construct the inverse function for LoR(a). If we look at Set, and take function int->int for example f(x)=x+1, when we construct an inverse function f’(x) = x-1, it will return to the original int, for any value of int. So if we start from specific value of int 42, f will map it to 43, and f’ will map back to 42. Now lets return to EM categ. I look at object a=(int, sigma) and morphism LoR(a) ending at object ([int], mu) and try to construct epsilon(a), I need to construct such epsilon that for any (legal) value of (int, sigma) will undo the mapping to ([int], mu). So if the initial value of a was (42, min) then our LoR will map it to ([42], mu). Also if we start from (42, [max]) it will end on the same value, our forgetful functor is not monic. So how can we construct such epsilon(a) that will take a value of ([42], mu) and guess we started with (42, min)? This all is even before we are talking that epsilon must be natural, I even dont understand how to construct a component of it for a concrete a
19:03 when you have object (a, sigma) and f: a->b how exactly you construct gamma:Fb->b ? Lifting f to Fa->Fb does not help you at all, if you need to start at Fb and to construct b
probably the morphisms in the category of algebras should be also pairs of functions, one for converting the carriers and another for converting the evaluator
You start with two arbitrary algebras and ask the question: Are there any morphisms between them? An algebra morphism is defined as a morphism between the carriers that makes the diagram commute.
I truly appreciate your explanation. I'd like to add that while in a locally small category, C(a, b) is referred to as a Hom-set, in a broader context, it's considered a Hom-class.
Does the "best" apex of a cone correspond to an arbitrary record type (or N-tuple) in Haskell? Where all the morphisms from the index category is just functions, and the identity morphism of the apex are lifted functions that operate instead on the record type? Edit: and conversely the cocone would be an arbitrary sum type Edit2: so for example if we have only Int and String in the index category (which would be (Int, String) as delta c) and the single function show :: Int -> String The identity morphism of delta c in C would contain the function showDC :: (Int, String) -> (Int, String) which would show the int and "store" it in the second part of the tuple. I.e. showDC :: (Int, String) -> (Int, String) showDC = \(i, s) -> (i, show i) And of course show will also be mapped to showDCD :: (Int, String) -> String and showD :: Int -> String as well
This is amazing. I have very little experience in set theory aside from the very basics, and also no experience in computer science (I am a beginner in programming) but I was able to understand this lecture clearly. I take that to mean you are very thorough and very good at simplifying/explaining things! I appreciate that you don’t just assume knowledge and instead go over every detail with examples! Thank you for posting this on RU-vid for free. I’m someone who is curious about mathematics but has no time or money to enroll in a course right now, so things like this are truly a blessing.
You've said the word "schizophrenia" somewhere... I would probably agree that something in mathematics, including category theory, is timeless. This would be a schizophrenic statement. Well, how can commutativity be timeless?! If it is a time sequence: x*y, and the inverse of it is y*x. x+y and the inverse of y+x. Like all of yours: limits, infinite periodic fractions. Even the set of irrational numbers is a time sequence - every single irrational "number".
Mathematicians tend to say, "I forgot where they came from."🤣 Amnesia... however. And all because of the build-up of abstraction... 1+1=2. And when you subtract 1 from two: 2-1=1. That is, you have a subtractible and the difference with a probability of 0.5 coincides with each of the terms in the first expression. And all because - "I forgot where they came from." And you have to describe this forgetfulness with probability theory... which is a property of your forgetfulness...🤣