内部代数
在抽象代数中，内部代数是采用了集合的拓扑内部概念的特定类型的代数结构。内部代数之对于拓扑和模态逻辑 S4 如同布尔代数之对于集合论和普通命题逻辑。内部代数形成了模態代數的一个簇。
内部代数是带有如下标识(signature)的代数结构< "S", ·, +, ', 0, 1, >，其中< "S", ·, +, ', 0, 1 >是布尔代数，后缀 是一元运算内部算子，它满足如下恒等式： "x" 叫做 "x" 的内部。
内部算子的对偶是闭包算子，定义为 "x" = (("x" ') )'。"x" 叫做 "x" 的闭包。通过对偶原理，闭包算子满足如下恒等式:
如果闭包算子被选取为原始的，则内部算子可以定义为 "x" = (("x" ' ))'。所以内部代数的理论可以使用闭包算子替代内部算子来形式化，这种情况下，考虑的是形如 < "S", ·, +, ', 0, 1, > 的闭包代数，这里的 < "S", ·, +, ', 0, 1 > 是布尔代数而 是满足上述恒等式的闭包算子。闭包代数和内部代数形成了对偶对，它们是“带有算子的布尔代数”的例证。关于这个主题(主要是波兰拓扑学)的早期文献涉及了闭包算子，但是内部算子的形式化最终成为标准。
内部代数的元素被称为开的，当且仅当"x" = "x"，开元素的补被称为闭的并，这也等价于"x" = "x"。显然，一个元素的内部总是开的而闭包总是闭的。
既开又闭的元素叫做闭开的。显然，0 和 1 是闭开的。
闭元素的内部称为正规开的，开元素的闭包称为正规闭的。
内部代数称为布尔的，若它的元素都是开的(因此是闭开的)。布尔内部代数可以同一于普通布尔代数，因为它们的内部和闭包算子不提供有意义的额外结构。特殊情况是平凡内部代数类，它们是特征化为恒等式 0 = 1 的单一元素的内部代数。
内部代数作为代数结构的优点是有同态。给定两个内部代数 "A" 和 "B"，映射 "f" : "A" → "B" 是内部代数同态，当且仅当 "f" 是底层布尔代数 "A" 和 "B" 之间的同态，它还保持内部和闭包。所以:
拓扑态射(topomorphism)是另一种重要的更一般性的在内部代数之间的态射。映射 "f" : "A" → "B" 是拓扑态射，当且仅当 "f" 是在底层布尔代数 "A" 和 "B" 上的同态，并且还保持 "A" 的开放和闭合元素。所以:
所有内部代数同态都是拓扑态射，当时不是所有拓扑态射都是内部代数同态。
给定一个拓扑空间 X = < "X", "T" >，你可以形成 "X" 的幂集布尔代数:
并扩展它为一个内部代数
这里的 是普通的拓扑内部算子，定义为
对应的闭包算子定义为
在 X 中 "S"  是 "S" 的最大开子集而 "S"  是 "S" 的最小闭超集。内部代数 A(X) 的开放、闭合、正规开放、正规闭合和闭开元素就是 X 在通常拓扑学意义上开集、闭集、正规开集、正规闭集和闭开集。
所有完全的原子内部代数都同构于为某个拓扑空间 X 形成的 A(X) 内部代数。此外所有内部代数都可以被嵌入到给内部代数以集合的拓扑域表示的那样一个内部代数中。结构 A(X) 的性质就是定义内部代数的真正动机。因为这种与拓扑学的亲密联系，内部代数也叫做拓扑布尔代数。
给定在两个拓扑空间之间的连续映射
我们可以定义完全拓扑态射
为
对于 Y 的所有子集 "S"。在两个完全原子内部代数之间的所有完全拓扑态射可以以这种方式导出。如果 Top 是拓扑空间和连续映射的范畴而 Cit 是完全原子内部代数和完全拓扑态射的范畴，则 Top 和 Cit 是对偶同构而 A : Top → Cit 是作为范畴的对偶同构的逆变函子。A("f") 是同态当且仅当 "f" 是连续开映射。
在这种范畴的对偶同构下很多自然的拓扑概念对应于代数性质，特别是连通性对应于不可简约性质:依据开子集的拓扑的拓扑空间的现代公式化，激发了内部代数的可供选择的公式化: 广义拓扑空间是如下形式的代数结构
这里的 < "B", ·, +, ', 0, 1 > 是普通的布尔代数，而 "T" 是在 "B" 上的一元关系("B" 的子集)使得:"T" 被称为在布尔代数中的广义拓扑。
给定一个内部代数它的开放元素形成了广义拓扑。反过来给定一个广义拓扑空间
我们可以定义 "B" 上的一个内部算子为 "b"  = ∑{"a" ∈"T" : "a" ≤ "b"} 因此生成了其开放元素正好都是 "T" 的内部代数。所以广义拓扑空间等价于内部代数。
把内部代数考虑为广义拓扑空间，拓扑态射接着是带有增加的算子的布尔代数的标准同态，所以可以应用来自泛代数的标准结果。
邻域的拓扑概念可以推广到内部代数：元素y被称为是元素x的邻域，当且仅当x ≤ y。x 的所有邻域的集合 N(x) 构成形成邻域滤子。这也导致了内部代数的另一种公式化:
在布尔代数上的邻域函数是从它的底层集合B到它的滤子的集合的映射N使得：内部代数的元素到它的邻域的滤子的映射 "N" 是在内部代数底层的布尔代数上的邻域函数。此外，给定带有底层集合 "B" 的布尔代数上邻域函数 "N"，我们可以定义一个内部算子为 "x" = max { y ∈ "B" : "x" ∈ "N(y)" } 从而获得一个内部代数。接着 "N(x)" 正好就是这个内部代数内 "x" 在的领域的滤子。所以内部代数等价于带有指定邻域函数的布尔代数。
依据领域函数，开放元素正好就是那些元素 "x" 使得 "x" ∈ "N(x)"。依据开元素 "x" ∈ "N(y)" 当且仅当有开元素 "z" 使得 "y" ≤ "z" ≤ "x"。
领域函数可以更一般的定义在(交)-半格上生成叫做邻域半格的结构。内部代数可以被看作就是布尔邻域格，就是说底层半格形成布尔代数的领域格。
给定在模态逻辑 S4中一个理论(形式句子的集合) "M"，我们可以形成它的 Lindenbaum-Tarski代数:
这里的 ~ 是在 "M" 中的句子的等价关系，"p" ~ "q" 当且仅当 "p" 和 "q" 在 "M" 中是逻辑等价的，而 "M" / ~ 是在这个关系下等价类的集合。则 L("M") 是内部代数。在这种情况下的内部算子对应于模态算子 □(必然性)，而闭包算子对应于 ◊(可能性)。这种结构是模态代数和模态逻辑的更一般结果的特殊情况。
L("M") 的开放元素对应于只在必然为真时为真的那些句子，而闭合元素对应于只在必然为假时为假的那些句子。
因为它们与 S4 的关系，内部代数有时叫做 S4 代数或 Lewis 代数，得名于逻辑学家 C. I. Lewis，他首先提议了模态逻辑 S4 和 S5。
因为内部代数是带有算子的(正常)布尔代数，它们可以被表示为在适当关系结构上集合域。特别是，因为它们是模态代数，它们可以被表示为在叫做 模态框架的一个单一二元关系上的集合的域。对应于内部代数的模态框架正好就是预序集合。预序集合(也叫做“S4-框架”)提供了模态逻辑 S4 的 Kripke语义，而在内部代数和预序之间的联系密切关联于它们与模态逻辑的联系。
给定一个预序集合 X = < "X", « > 我们可以构造一个内部代数
从 "X" 的幂集布尔代数，这里的内部算子 定义为
对应的闭包算子定义为
"S"  是从 "S" 之外的“世界”不可访问的所有“世界”的集合，而 "S"  是从在 "S" 之内的某个“世界”可以访问的所有“世界”的集合。所有内部代数都可以嵌入为某个预序集合 X 形成内部代数 B(X) 中，给予上述提及的作为集合域(预序域)的表示。
这个构造和表示定理是对模态代数和模态框架的更一般结果的特殊情况。在这种考虑下，内部代数有着特定价值，因为它们联系于拓扑学。这种构造提供了带有拓扑的预序集合 X ，这个Alexandrov拓扑生成拓扑空间 T(X)，它的开集是:
对应的闭集是:
换句话说，开集的“世界”从外部(上部集合)是不可访问的，而闭集从内部(下部集合)是不能访问所有外部“世界”的。此外 B(X) = A(T(X))。
任何一元布尔代数都可以被认为是内部算子是全称量词而闭包算子是存在量词的内部代数。一元布尔代数正好就是满足恒等式 "x" = "x" 的内部代数的一个簇。换句话说，它们正好是其中所有开放元素都是闭合的，或者等价的说所有闭合元素都是开发的内部代数。此外，这种内部代数正好是半单纯内部代数。它们也是对应于模态逻辑 S5 的内部代数，所以也叫做 S5 代数。
由于预序集合和内部代数之间的联系，它们对应的预序是等价关系，反映了这种预序集合为 S5 提供了 Kripke 语义的事实。这还反映了在量化的一元逻辑(一元布尔代数为它提供了代数描述)和 S5 之间的联系，这里的模态算子 □(必然性)和 ◊(可能性)可以在使用模态全称和存在量化的 Kripke 语义中解释，而不需要借助可及关系。
内部代数的开放元素形成了Heyting代数而闭合元素形成了对偶 Heyting 代数。正规开放元素和正规闭合元素分别对应于这些代数的伪补元和对偶的伪补元，因而形成了布尔代数。闭开元素对应于补元素，因而形成了这些布尔代数和这个内部代数自身的公共子代数。所有 Heyting代数可以被表示为内部代数的开放元素。
Heyting 代数对直觉逻辑扮演了内部代数对于模态逻辑 S4 和布尔代数对于命题逻辑的相同角色。在 Heyting 代数和内部代数之间的联系反映了在直觉逻辑和 S4 之间的联系，直觉逻辑的理论可以被解释为闭合在必然性下的 S4 理论。
给定一个内部代数 A，闭包算子服从导出算子   的公理。因此通过采用闭包算子为导出算子，可以形成与 A 有相同底层布尔代数的导出代数 D(A)。
所以内部代数是导出代数。从这个角度看，它们正好是满足恒等式 "x" ≥ "x" 的导出代数的一个簇。导出代数为模态逻辑 WK4 提供了适当的代数语义。所以导出代数对应于拓扑导出集合和 WK4，如同内部/闭包代数的对应于拓扑内部/闭包和 S4。 给定带有导出算子 的导出代数 V，我们可以形成与 V 有相同底层布尔代数的一个内部代数 I(V)，带有内部和闭包算子分别定义为 "x" = "x"·"x" '  ' 和 "x" = "x" + "x"。所以所有导出代数都可以被当作内部代数。此外给定一个内部代数 A，我们有 I(D(A)) = A。但是，D(I(V)) = V 不对于所有导出代数 V 成立。
Gregorczyk 证明了闭包代数的基本理论的不可决定性。