我的印象是,总的来说,传统代数对于计算机科学而言过于具体。因此,计算机科学家要么使用较弱的(并因此使用更通用的)结构,要么对传统结构进行泛化,以使它们能够满足其需求。我们还使用范畴论很多,数学家并不认为这是代数的一部分,但我们不知道为什么不代数。我们发现将传统数学划分为“代数”和“拓扑”作为单独的分支是不方便的,甚至是毫无意义的,因为代数通常是一阶的,而拓扑则有可能处理更高阶的方面。因此,计算机科学中使用的结构混有代数和拓扑。实际上,我想说的是它们比代数更倾向于拓扑。从我们的角度来看,将推理归类为“代数”和“逻辑”是另一种毫无意义的划分,因为代数涉及方程式属性,而逻辑也涉及所有其他种类的属性。
回到您的问题,半群和类半群词在自动机理论中被大量使用。艾伦伯格(Eilenberg)撰写了两卷集,其中第二集几乎完全是代数。有人告诉我他正在计划四册,但是他的年龄不允许完成该项目。让·埃里克·平(Jean-Eric Pin)在在线书中对此内容进行了现代化改造。自动机是“ monoid模块”(也称为“半身像动作”或“动作”),对于计算机科学而言,它们处于适当的普遍水平。传统的环形模块可能太具体了。
格理论是指称语义学发展的主要力量。当计算机科学家与数学家共同开发出连续的网格,然后将其推广到领域时,拓扑结构被混入了网格理论中。我想说领域理论是计算机科学家自己的数学,而传统数学对此一无所知。
通用代数用于定义数据类型的代数规范。到了那里,计算机科学家立即发现需要处理更一般的属性:条件方程(也称为方程式Horn子句)和一阶逻辑属性,仍然使用通用代数的相同思想。正如您将要注意的那样,代数现在已合并到模型理论中。
范畴论是类型论的基础。随着计算机科学家不断发明新的结构来处理各种计算现象,类别理论是一个放置所有这些思想的非常令人欣慰的框架。我们还使用由类别理论支持的结构,这些结构在“传统”数学中不存在,例如函子类别。此外,代数回来到从视图中使用一个明确的点图片单子和效果代数理论。 Coalgebras是代数的对偶,也有很多应用。
因此,“代数”在计算机科学中有广泛的应用,但它不是传统代数教科书中发现的那种代数。
附加说明:范畴论是代数有一种具体的意义。 Monoid是代数的基本结构。它由一个有关联的二进制“乘法”运算符组成。范畴论通过将“类型”与mono半群的元素关联起来对此进行了概括。仅当类型匹配时,才可以“相乘”元素:如果和然后。例如,矩阵具有一个乘法运算,从而使它们成为一个monoid。但是,矩阵(其中和a :X → Y b :Y → Z a b :X → Z n × n m × n m na:X→Ya:X→Yb:Y→Zab:X→Zn×nm×nmn可能会有所不同)形成一个类别。因此,monoid是具有单一类型的类别的特殊情况。环是具有单个类型的加性类别的特例。模块是函子的特殊情况,其中源类别和目标类别具有单一类型。等等。范畴论是类型代数,其类型使其比传统代数无限适用。