You're reading the public-facing archive of the Category Theory Zulip server.
To join the server you need an invite. Anybody can get an invite by contacting Matteo Capucci at name dot surname at gmail dot com.
For all things related to this archive refer to the same person.
I'm software architect and I use ologs to design the components of a system -- the abstractions and their relationship.
Since I'm new to ologs I need to use instances to make sure an aspect is valid. If the instances of two types connect well, then the aspect becomes valid.
For drawing boxes and arrows we have plenty of tools: draw.io, quiver, catcolab etc. But none of them offer instances.
More, on complex diagrams I use (co)spans, (co)products, facts, universal properties ... also none of these are available in classic diagram creator tools.
So I was left with a custom homemade React app which does these basics [1].
But I still wonder if a.) are there people creating ologs with instances b.) how they manage to do it without a dedicated app?
Thanks a lot!
In principle, most data sets (instances), such as SQL data sets, can be put into 'categorical normal form', so that you can e.g. do functorial data migration on them using e.g. SQL or whatever you'd like. And checking olog instances against their olog schemas is pretty easy (decidable). (vs checking morphisms of ologs, which is hard/undecidable.) For tooling that manipulates olog instances, there's the old FQL tool https://github.com/categoricalData/fql that operates by SQL translation. The newer CQL tool https://categoricaldata.net will use external engines such as egglog or the E theorem prover to operate. CQL also contains EASIK and a CQL <-> EASIK bridge for editing olog schemas https://mta.ca/~rrosebru/project/Easik/ . CQL is operated primarily by writing formulae in regular logic, to be close to database theory, rather than using graphical notations, and provides data import/export to SQL, CSV, XML, JSON, RDF, etc. Do please ping me if you want to use it and I can help you set it up!
CatColab does have simple support for instances as "diagrams" in a model, by the way. Facts are in a PR merging pretty soon that will allow for cospan composition of models. I'd be interested to understand more how you use co/products and such in what sounds like a diagram-drawing workflow!
The other software we use at Topos for instances is CatLab in AlgebraicJulia. It mainly considers instances in terms of data structures, not in terms of drawing diagrams, but has visualization capabilities via export to GraphViz.
Thanks @Ryan Wisnesky! The first tool I've met after learning about ologs / functorial migrations was FQL/CQL. That EASIK screenshot triggered, I guess, the idea to have a fully featured olog editor. Something similar, but without the db aspect (schema, sql, db, code, java). A pure thinking / design tool in the browser, so easy to use as pen and paper.
@Kevin Carlson I've checked the CatColab's olog feature and my impression is that this a tool for advanced ACT practitioners who, by experience, can draw boxes and arrows on the fly, which are always correct (valid aspects, commute). And these olog diagrams together with other diagrams are part of a larger research process.
In contrast, I'm an olog end-user, somebody who likes to understand the relationships between a person
and a car
, somebody who wants to draw a person box, a car box, then see why he can't just connect these two things with a has
arrow.
I've re-created all the ologs from Spivak's "OLOGS: A CATEGORICAL FRAMEWORK FOR KNOWLEDGE REPRESENTATION" first with pen and paper, then with my home made app. The biggest hurdle with pen and paper was the instances, that's why I've created the app.
Now I use this technique to design / architect software [1], and a friend of mine, a political scientist is using ologs to decide the truthiness of a simple sentence, which is usually the end result of a long research of his entire department.
More, we are playing olog games with friends ... they come up with a mundane / hard / funny question / thing and we put it into the olog editor and see if it's true, how it works, how to twist it to make it true.
In other words I believe ologs are a general purpose tool, easy to learn as the Pythagoras theorem, and everybody should use it, young and old :D :P
When posting here I was wondering if anybody else came already to this conclusion, and more, if by chance there is an olog tool for end users like me.
[1] This is a long article how I've created the list
software concept using ologs for structure and finite state machines for behavior. The olog part, with screenshots featuring product types is here: https://www.osequi.com/studies/list/list.html#provably-correct-structure-with-ologs
Thanks! But what is it about CatColab that makes you feel that way? We don't intend it to require any particular brilliance from the practitioner, so it'd be great to understand why it reads like that to you. I don't understand, in particular, why you feel like you need to always come up with "valid aspects" and commutative diagrams in CatColab; I don't particularly even know what you mean by "validity" here, or why you can't back up and change an olog in CatColab as well as in your preferred tool.
Good question, Kevin. What makes Catcolab feel like it's only for experts, @Csongor
I'm good at math but terrible at everything to do with software, so let's see how hard it is for me to set up an olog on Catcolab. I type "olog Catcolab" into a search engine, blunder my way to
and try to avoid getting intimidated by not reading anything, just trying to figure out how to start creating an olog. I don't see anything that tells me how to do it, so I click on an example:
I see an olog: some boxes with arrows going between them, labeled by text. I don't see how to create new boxes, but I can type new words into the existing boxes. So it seems to work.
Okay, there's a weird little gray thing with a plus sign on it near the bottom, so I try that. Using that I'm able to create a new type "A dog" and a new aspect "A dog has as owner an author". So it seems to work.
At top left there's a bunch of gray lines, and if I click on those I get to choose "New model", and if I click on that I see "Informal". I don't know what that means, but I bet it's the kind of model. So I click on that and I get a big menu with a lot of choices of kind of model. To avoid becoming intimidated by all these choices, I just click on "olog".
Then I get a mostly empty page that says "Untitled" - but luckily, in gray it says "Click button or press Shift-Enter to create a cell", and thanks to the example I sort of know how to create an olog by clicking on this.
This seems roughly as easy or hard as doing, say, a money transfer on my bank account.
Cool! That's not ideal but it could definitely be worse and we're aware of most of the points at which it was harder than it really needs to be. I do notice that you don't seem to have wandered into the "new analysis" button, which is where you would actually visualize your olog, nor the "new diagram" button, which is where you would instantiate one.
I saw them, actually. I was just trying to get started....
Sure, I guess I should have said something more like "did you experience any distress at not having drawn or instantiated these ologs yet, or were you just getting started?"
@Kevin Carlson I guess the keyword is "olog end user" ... a person who reads the Spivak paper and expects a whiteboard where he can draw ologs [1]
In contrast, when I open CatColab > Get Started > Menu ... I see "New model" ... Me, as an olog practitioner I don't even know what a model would be ... No word about models in the Spivak paper.
So the key thing is the lens: you, researchers have a tremendous knowledge about CT/ACT, an olog end user knows only types, aspects, instances, facts ... boxes and arrows, and the content (instances) of the boxes defines the validity of the arrows.
Don't get me wrong, CatColab is perhaps the best tool for research, various modelling, but there are users (hopefully there will be) who needs only to draw boxes, add content, and see how the arrows behave. These users might not even have math education, or heard about category theory, like my political sciences friend who likes using it that simple digital whiteboard.
[1] A quick screencast of my olog app, a simple whiteboard: https://drive.google.com/file/d/1NKPk1kMLjWIZNnql4orbLPUm27UmB98Z/view?usp=sharing
[2] A screenshot of CatColab / Menu: https://drive.google.com/file/d/1veuTqPkE7FW1Hvb45z5EPZtvxx1N9ecl/view?usp=sharing
One sec, updating the links from Google Drive to something freely accessible
OK, that helps a lot; the most key distinction is that CatColab is not just for building ologs, but also for "models" of many other "theories" (there is a certain "theory" whose models are "ologs") so to make it comfortable for somebody who just wants ologs we ought to have a version of the user interface that hides all the different theories.
Great! Those are the two 'free' links:
[1] - https://limewire.com/d/DpTKB#7tXc7QWjf6
[2] - https://limewire.com/d/o2Fao#Gy1HCaZWBA
On the other hand John said it perfectly: "try to avoid getting intimidated by not reading anything" ... CatColab would be intimidating for someone who knows only a few things about ologs and nothing about CT/ACT
Thanks for those! I can't really see the whole interface in your app, I guess you use a keyboard interaction to make a new entity type? I like the interface for tables quite a lot.
Try it at your own peril :D https://oe-clean.surge.sh/ .... for example pressing 'h' brings up the menu, and drawing arrows is not always successful, it might drop a new type/thing instead
hint: double click to get started, aka drop a type/thing
pro tip: start drawing an arrow from an existing box then drop it for a new box
Dark mode is more user friendly ....
I hope, @Kevin Carlson, that it would be pretty easy to create an interface for Catcolab that only does ologs, or only does some other sort of model. And maybe it could have a little red dot in the lower right corner (I'm joking, I hate these cryptic icons that are so fashionable nowadays) that if you clicked on it would say "YOU HAVE EATEN THE RED PILL: ALL OF THIS WAS JUST A TINY PORTION OF WHAT CATCOLAB IS CAPABLE OF", or something a bit less ridiculous, and welcome you to a broader framework.