抽象层次结构的形式表示


9

介绍

我正在撰写有关抽象三角洲建模(ADM)的博士学位论文,该摘要是对能够作用于产品(如“软件产品”)的修改(称为deltas)的抽象代数描述。这可以用于将一组相关产品(“产品系列”)组织为一个简单的核心产品和一组有条件应用的增量,从而可以更好地重用基础产品。

增量建模的细节对于我的问题并不是重要,但是ADM可以作为一个很好的例子来说明这个问题,因此我将介绍最重要的概念。

背景

感兴趣的主要结构是三角肌 。产品来自全集。增量来自具有合成运算符的单点半体和中性元素。语义评估运算符转换一个'syntactic'delta转换为关系(P,D,,ϵ,[[]])P(D,,ϵ):D×DDϵD[[]]:D2P×PdD[[d]]P×P决定如何修改产品。d

由于ADM是抽象代数,因此我的大部分工作都是从乘积和增量的具体本质中抽象出来的,并证明了许多结果而没有下降到更具体的水平。预期这些结果将延续到更具体的领域,但我尚未对此进行形式化。

有一些示例和案例研究在特定领域中起作用:面向对象的源代码,代码,自然数,移动电话配置文件等。还有一些中间的抽象阶段,例如嵌套键值对。对于每个I,我都重新定义(或“优化”)。LATEX(P,D,,ϵ,[[]])

我想使这个层次结构明确:(1)为读者提供更大的清晰度, (2)使用来自更抽象级别的结果来正式证明其合理性。

我的问题:我应该如何正式组织这些抽象级别?

我希望能够对三角肌使用简单的优化关系进行推理。而且我觉得可以简单地通过调用和上的子集关系来定义它。但是我还不确定。是否存在针对我正在描述的问题的现有方法?出版物我应该阅读?PD

三角肌阶层

为了让您更好地理解我的意思,这里是我想到的三角肌抽象层次结构:

  • 抽象三角肌:这是基本的三角肌,产品和增量仍然可以是任何东西。大多数理论都基于这一理论,并且大多数结果都在这一水平上得到了证明。
    • 关系三角肌:这里,增量是上的关系,是恒等函数。 P[[]]
      • 功能性三角肌:在这里,增量是功能性的(或“确定性的”)。
    • 自然数三角肌:这是最简单的混凝土三角肌,仅用于说明三角肌精化。这里,乘积是自然数,而delta是表示多项式运算的简单数字序列。P=ND=N+
    • 嵌套键-值对Deltoid:任何将键映射到值或子层次结构的层次结构的中间抽象级别。Delta可以在任何“深度”对该树进行修改。
      • OOP Deltoid:用于面向对象程序的抽象表示。它们基本上是嵌套的键/值对,因为程序将模块名映射到类集,将类名映射到方法集,将方法名映射到方法实现。
        • ABS Deltoid:ABS是一种真正的面向对象的编程语言。
      • 电话配置文件Deltoid:在这里,产品是设置(例如音量,屏幕亮度等)到对应域中的值的平面映射。
    • LATEX Deltoid:产品是文档,而delta通过重新定义宏来对其进行修改。LATEX

好吧,这应该使您对我的想法有一个清晰的认识。注意,顺便说一下,对于任何三角肌,是从到同构同构,它属于对应的关系三角肌。[[]]DD

实际层次可能更大。根据我将使用哪种改进理论,它的组织方式也可能不同。例如,如果我对和进行简单的子集关系,则ABS Deltoid将不适合嵌套键值对Deltoid,因为它的乘积和增量实际上是纯文本(源代码)。但是,如果使用同构,给出的层次结构可能仍然有效。PD


3
您能否更清楚地表明抽象层次结构是什么?什么东西是其他什么东西的抽象?
戴夫·克拉克2013年

嗨,戴夫!我更新了我的问题。我希望这可以澄清一些事情。
mhelvens

4
如何为每种三角肌建立类别,然后研究它们之间的左,右伴随函子(如果有)?
Martin Berger 2013年

恐怕我不精通范畴论。:-(
mhelvens

Answers:


8

我相信查找抽象解释理论对您会有所帮助,该理论为基于格的程序分析稍有不同的领域中的类似问题提供了非常彻底的答案。

在我看来,您正在使用基于代数的框架。我在这里使用通用代数的意义上的代数一词,我假设对代数结构的约束是由术语之间的相等性给出的。抽象(或层次结构)进入图片有两种不同的感觉。

  1. 抽象是两个特定代数之间的关系。您可能要说一个代数具有比另一个代数更丰富的结构,或者您可以用一个代数解决的每个问题都可以用另一个代数解决。这种关系就是形式化的购买同态或代数之间的其他映射。
  2. 作为代数族的抽象层次结构。在您的情况下,这些将是具有某些属性的三角肌家族。作为更一般的示例,请考虑所有部分排序的集合。我们可以将晶格,分布晶格和布尔晶格视为具有更丰富属性的一系列子族。

这两个概念密切相关但又不同。

两种结构之间的抽象

抽象解释的见解在于,赋予您考虑的结构以顺序概念很有用。考虑两种结构

(M,fM)(N,fN),带有 fM:MMfN:NN 作为感兴趣的操作。

通用代数意义上的同态看起来像这样:

h:MN 是满足平等的功能 h(fM(a))=fN(h(a))

我们可以将上面出现的两个结构视为预定结构

(M,=,fM)(N,=,fN)

我们可以将同态重写为一个满足

  1. 如果 a=b 然后 h(a)=h(b)
  2. 对所有人 aMh(fM(a))=fN(h(a))

现在,假设您还有其他一些可行的近似概念。例如,当我们在程序验证中处理状态集时,子集包含对于某些应用是有意义的,或者在自动推导中处理公式时,蕴含是有意义的。更笼统地说,我们可以考虑

(M,,fM)(N,,fN),在哪里 是预购商品。

现在,我们可以使用抽象函数代替同构

α:MN 这是

  1. 单调的,意味着每当 ab 我们有 α(a)α(b)
  2. 与操作半通勤: α(fM(a))fN(α(a)) 对所有人 aM

抽象函数明确提出以下想法: N 是对结构的抽象 M,然后评估中的一项 N 不能产生更精确的结果(相对于 N),而不是评估 M 然后将其映射到 N

现在我们可以问是否有必要用抽象而不是细化的方法来解决问题。意思是,我们不能说M 是对 N并按条件制定条件。这正是具体化功能所要做的。

一个具体化功能 γ:NM单调和满足不等式fM(γ(b))γ(fN(b))

抽象和具体化条件在抽象解释中称为健全性条件。在特殊情况下αγ形成Galois连接时,抽象和具体化条件是等效的。通常,它们不是等效的。

到目前为止,我们所做的每一件事都只是形式化了一对结构之间的抽象概念。我所说的话可以用范畴论的语言更简洁地概括。由于您在上面发表了评论,因此我避免了使用类别。

抽象层次结构

假设我们有一个结构 M被赋予预购和一些操作。我们可以考虑所有结构N 这样 N 是...的抽象 M在上述意义上。如果我们有那个N1 是...的抽象 N2 两者都是 M,我们具有层次结构的三个元素。关系“是...的抽象”允许我们定义结构之间的前置关系。让我们将通过抽象排序的结构族称为层次结构

如果考虑您的示例,则看来您的抽象三角肌可能是某个层次结构中最大元素的候选者。我不确定,因为抽象的三角肌似乎是三角肌家族而不是特定的三角肌。

现在,您可以考虑不同的层次结构。所有三角肌的层次结构。基于上述各种考虑的子层次结构。抽象解释上下文中的一个特定示例是与给定powerset晶格在Galois连接中的完整晶格的层次结构,以及仅由分布或布尔布尔晶格组成的子层次结构。

正如马丁·伯杰(Martin Berger)在评论中指出的那样,层次结构之间的抽象概念被类别之间的附加概念所捕获。

分类的观点

有一条评论要求对类别进行更多评论。该评论不再存在,但我还是会回应。

让我们退后一步,从更一般的角度看一下您在设计三角肌中正在做的事情以及我上面已经描述的内容。我们有兴趣了解我们在软件上下文中操作的实体的基本结构以及这些实体之间的关系。

第一个重要的认识是,我们不仅对一组元素感兴趣,而且对我们可以在这些元素上执行的操作以及这些操作的属性感兴趣。这种直觉驱动着面向对象编程中类的设计以及代数结构的定义。您已经在deltoid的定义中明确了这种直觉,该定义已经确定了一些令人感兴趣的操作。更一般而言,这是代数描述的基础思维过程。我们需要确定我们的操作是什么以及它们具有什么属性。此步骤告诉我们正在使用的类型结构。

第二个认识是我们不仅对一组元素感兴趣,而且对抽象关系也很感兴趣。我能想到的最简单的形式化抽象方法是考虑预定集。我们可以将预排序集合视为对集合中包含近似概念的事物的严格概括。

理想情况下,我们希望在以上两种见解都是一流公民的环境中工作。意思是说,我们想要一个像代数一样的类型化设置,但也想要一个前置变量的近似感知设置。朝这个方向的第一步是考虑晶格。格子是概念上有趣的结构,因为我们可以用两种等效的方式对其进行定义。

  1. 我们可以方程式地将晶格定义为一个集合 (L,,)配备了见面和加入操作。然后,我们可以得出通过定义偏序ab 随时保持 ab=a
  2. 另一种方法是将晶格定义为部分有序集 (L,) 满足中的每一对元素 L具有唯一的最大下限和最小上限。然后,我们可以从偏序中推导出Meet和Join操作。

因此,晶格是一种数学结构,可以从代数或逼近的角度进行研究。此处的缺点是,晶格的元素本身不具有影响近似关系的类型结构。意思是,我们不能基于具有更多或更少结构的概念来比较元素。

在您遇到问题的情况下,您可以将类别视为对预言的自然概括,它可以捕捉代数环境中的近似概念(在态射中)和类型结构。类别理论的设置使我们可以省去各种不必要的区别,而将重点放在您关心的实体的结构上以及该结构的近似上。通用属性和附加功能为您提供了非常强大的词汇和工具,以帮助您了解您感兴趣的结构的概况,并对甚至不同抽象级别等直观概念也可以进行严格的数学处理。

关于我对抽象三角肌的评论,看来您想要的是一个类别。抽象三角肌是类似于集合类别的特定类别。您还在考虑其他类别。我最初以为您定义的三角函数在范畴论的意义上将是终端(或最终)对象。

您正在研究类别理论为其提供非常令人满意的答案的问题。希望您能自己得出这个结论。

参考文献

  1. 逻辑程序的抽象解释和应用,Patrick Cousot和Radhia Cousot。本文的前半部分是有关抽象解释主题的一般教程风格的介绍。
  2. 抽象解释框架 Patrick Cousot和Radhia Cousot。本文非常详细地讨论了我上面概述的有关抽象和具体化功能的所有可能性。
  3. 程序分析框架的系统设计,Patrick Cousot和Radhia Cousot。这篇文章介绍了程序分析环境中抽象层次的概念。
  4. Francesco Ranzato和Francesco Tapparo 通过抽象解释进行广义强保存。本文将这些思想应用于保留时态逻辑公式的不同抽象上下文中。您将在此处找到布尔和分布抽象的有效示例。
  5. 抽象解释,逻辑关系和Kan扩展,Samson Abramsky。提出了关于上述顺序理论材料的范畴理论观点。

感谢您的详尽回答!缺少类别非常令人赞赏。;-)(将来我将不得不学习一些中间类别理论。)我将看一下您的参考资料。-=#=-同时,我对您的陈述有一个疑问:“抽象三角肌似乎是一个三角肌家族,而不是一个特定的三角肌”。您能解释一下抽象三角肌在这方面与其他方面有何不同吗?不能将任何代数结构视为其所有精化的族吗?
mhelvens 2013年

@VijayD感谢您对CT的更新。我对此感到内,然后将其删除。我深信CT更适合OP的问题。看到您的更新后,我甚至更加确信。我认为,如果OP不想使用CT进行操作,其他人也会这样做。
scaaahu

范畴论似乎很可能为我的问题提供最佳答案。我期待对此进行研究,并更好地理解这些答案。确实,我缺乏时间学习和应用类别理论不应成为在此网站上给出“次等”答案的借口。-=#=-尽管如此,我非常感谢Vijay的考虑。他在半身像方面的回答非常有用。-=#=-所以我现在不能使用类别。但是我一定会在以后的工作中探讨该选项。谢谢大家!
mhelvens

您处于学习该主题的最佳位置,因为您面临的问题是您已经很好理解并且可以从分类的角度直接进行分析。我发现这是学习某些东西的最佳方式,并敦促您不要拖延,因为有关范畴论的文章似乎令人生畏。我敢肯定有小部分需要研究。防守端祝你好运。
Vijay D

9

您正在攻读博士学位。说“我不太精通X”不是借口。如果您还不错,那么说“我的顾问不知道 X”也不是借口。

您在应使用类别的位置使用Monoid。您的monoid操作假设您可以将任何δ在一起。但这确实有意义,例如,您将如何组成“添加塑料外壳”和“添加金属外壳”?我想你的一些δ导致空关系,因为它们没有意义。您应该对这种事情感到怀疑。

作为一个感兴趣的观察者,似乎monoid应该是一个类别,因此我们可以组成两个 δ仅在使它们组合起来有意义的情况下。然后,您的语义评估只是集合和关系类别的一个函子。然后您会看到还有许多其他类别可以使用。功能增量将对应于映射到集合和函数类别中的函子,自然数deltoid是映射至自然数上的多项式的等式(视为类别)的函子,等等。

我不确定您是否会在一般理论上过于认真地将LaTeX和诺基亚手机正规化。但是,当然您的理论应该适用于此类示例(当您发现手机实际上没有明确定义的语义时,不要挂断电话)。

通过坚持使用预定的技术(由您的顾问?)和它的外观,您确实在改变自己。


2
总的来说,我同意你的看法。而且我从未用过任何借口。:-)但是,在这种情况下,我的大部分论文都已经写好了,并且在我的所有出版物中都使用了他的词法。-=#=-话虽如此,您的观点很好。在塑料/金属套管示例中,我现在通过允许合成来处理它,但要使生成的增量评估为空关系(如您所猜)。一切都定义明确,因此到目前为止已经足够。但我可以看到您的建议更为优雅。您给了我学习范畴论的另一个很好的理由。谢谢!
mhelvens

@mhelvens我是一位退休的软件工程师,长期从事该行业。来到退休后TCS。我问你一个现实生活中的问题。假设您在论文中成功使用Monoid将诺基亚电话产品正式化,如果苹果宣布收购诺基亚,您在口头答辩中会说些什么?该公告会破坏您的模型吗?在我看来,理论越笼统,模型就会越好。
scaaahu 2013年

@scaaahu有趣的问题。:-)让我首先回答:“不,完全没有。” 该理论与设备的“类型”无关。-=#=-我向您保证,没有必要使我相信泛化的好处。(实际上,我认为有时我会做得过分。)碰巧的是,我没有及时遇到类别理论,因为它对我的博士论文很有用。正如我所说,我确实同意这可能是一种有价值的方法。但是距论文截止日期只有两个月,现在还不是从根本上改变我的方法的时候。
mhelvens

显然,您准备好了博士后;-)
Andrej Bauer

资助申请已发送出去。:-)我希望我能够在这个领域继续。
mhelvens
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.