【英】罗伯特·A.科瓦尔斯基 著 杨安卓等 译:作为逻辑程序的立法 ||《地方立法研究》
作为逻辑程序的立法
作 者 :[英]罗伯特·A.科瓦尔斯基(英国帝国理工学院计算机系教授)
译 者 :杨安卓(华中科技大学法学院讲师),赵舒婷(华中科技大学法学院研究生)
来 源 :《地方立法研究》2019年第4期,因篇幅较长,已略去原文注释。
立法通常采用的语言风格与逻辑编程语言有许多相似之处。然而,1981年《英国国籍法》《密歇根大学租赁终止条款》和《伦敦地铁紧急情况告示》中的法律语言示例表明,逻辑编程的基本模型可以通过几种方式得到有效的扩展。这些扩展包括类型的引入、相关条款、普通否定和击败否定、完整性约束、元推理和程序符号。除立法和编程之间的相似处之外,法律与算法还有其他重要的相似之处。例如,它需要根据社会和政治规范来验证立法,并且需要组织、开发、维护和重复使用大量复杂的法律规范和程序。算法和法律之间的相似性表明,这些不同领域之间有可能实现有效结论与技术手段之间的双向转换。本文探讨的一种可能性是,适当扩展的逻辑程序设计语言的语言结构,是使立法语言本身变得更简单、清晰的可能方式。
关键词 :立法 法律 逻辑编程 程序
◆ 一、引言
◆ 二、1981年《英国国籍法》
◆ 三、《密歇根大学租赁终止条款》
◆ 四、《伦敦地铁紧急情况告示》
◆ 五、其他算法范例
◆ 六、计算与法律的其他关系
◆ 七、结论
一
引言
立法语言的特点是运用自然语言表达一般规则,以规范人类活动。为有效达到这一目的,它需要比普通语言更精确,并且需要尽可能地让不同人以同样的方式理解它。在这方面,立法可被视为用人类语言表达的程序,由人类而不是由计算机执行。因此,立法语言也可以作为计算的模型,提出使编程语言更像人类语言的同时仍然保持机器的可执行性的方法。在本文中,我将着重比较立法语言和逻辑编程语言。我认为,虽然逻辑编程在这种比较中有着较佳的表现,但它需要通过将类型扩展、相关条款、普通否定和击败否定、完整性约束、元推理和程序符号等扩展结合起来进行改进。我还将指出,在某些情况下,立法本身可以通过以一种更类似于这种扩展逻辑编程形式的方式重新表达而得到改进。
我将研究三个例子:第一个是1981年《英国国籍法》的若干章节,第二个是《密歇根大学租赁终止条款》,第三个是《伦敦地铁紧急情况告示》。笔者和他的同事早前研究了第一个例子,作为使用逻辑程序设计代表立法的例证。第二个案例是由艾伦(Allen)和撒克逊(Saxon)研究的,作为使用逻辑来消除法律合同制定中的歧义的一个例子。第三个被笔者确定作为公告的一个例子,不仅意味着要精确,而且要尽可能使公众清楚。在先前对1981年《英国国籍法》的调查研究中,我们既强调了使用逻辑编程来构建法律应用的前景,也强调了试图使用逻辑编程来表达知识。在本文中,我只关注第二个问题,更具体地说,是研究逻辑编程和法律语言之间相似性和差异性,以及更广泛地研究算法和法律之间的其他相似之处。
二
1981年《英国国籍法》
三
《密歇根大学租赁终止条款》
四
《伦敦地铁紧急情况告示》
《伦敦地铁紧急情况告示》具有很多逻辑程序的特征,但也与之有一些显著的差异:
紧急告示
按下报警信号按钮提醒司机
如果列车的任何部分在车站
司机会马上停车
如果没有,列车将继续开往下一站,那里更容易得到帮助
不当适用将罚款50英镑。
从知识表示的角度来看,第一句话可能是最有趣的。它以程序形式表达,表明程序形式的表达有时比声明性风格中的“等效”语句更合适:
你是在提醒司机
如果你按下报警信号按钮。
但是,请注意,程序形式可视为声明形式的程序解释的汇编版本。与大多数已编译的知识表示一样,接收方将知识付诸实施所需的工作较少。
这个例子和其他类似的例子表明,如果同时允许声明性和过程性语法,逻辑编程就可以变得更像自然语言。在逻辑程序设计的程序解释下,声明性语法:
A if B and C
以及程序语法
to do A do B and do C
会是等同的。事实上,两种表达方式都具有相同的声明性意义:
A if B and C
和同样的程序意义:
to do A do B and do C.
然而,逻辑程序的过程语法不包括任意的命令式编程语言结构。例如,如果没有进一步的扩展,它将不会包括如下纯粹的命令语句:
按下报警信号按钮。
逻辑编程语言中的所有命令性语句都必须嵌入一个过程中,该过程包含其目的的表达。我将在第5.1节和第5.2节中讨论逻辑程序的可能扩展,包括被视为完整性约束的无目的程序。为了简化对紧急告示的讨论,我忽略了,并且在很大程度上,将继续忽略告示中提到的不同行为和情况之间的时间关系。但是,我们应该注意到,为准确起见,告示的标题应并入这句话的结论中:
按下警报信号按钮,
警告司机紧急情况。
告示的第二句以逻辑编程形式明确表达。然而,即使考虑到这个短语:
司机将立即停车是司机会马上停下列车的缩写
这句话没有表达其意图,因为它缺少了一个完整的条件。通过补充上一句结论中缺失的条件,可以使句子的意思更加明确:
司机将立即停车
如果你提醒司机有紧急情况
并且列车的任何部分都在一个车站里。
当然,这个句子意思的精确表达比英语要烦琐得多。然而,很难看出如何简化逻辑编程表示,使其更接近英语,又不会失去其精度。
第三句开头是对前一句明确陈述的条件的暗示。暂时忽略最后的评论,句子的所有条件都充分明确,其逻辑形式为:
列车将继续开往下一站
如果你提醒司机有紧急情况
并且列车的任何部分都不在车站内。
但这一逻辑并不涵盖其在英语中的全部意图,因为无论司机是否接到紧急情况警报,列车通常都会继续行驶到下一个车站。当然,这意味着列车将在下一站停下来,并在那里提供帮助。这是该短语含义的一部分:
在这里可以更容易地提供帮助。
此外,无论是否是下一站,大概都会在车站提供帮助。因此,我们可以用这两句话来更好地接近第三句的预期含义:
列车将在下一站停靠
如果你提醒司机有紧急情况
并且列车的任何部分都不在车站内。
紧急情况下会提供帮助
如果你提醒司机紧急情况
并且列车停在一个车站。
修订后的句子的第二句抓住了句子末尾评论的部分含义。据推测,其余的含义可以用元声明来表达,即获得帮助的程序比不在车站时停止列车的替代程序更好。
告示的最后一句在结论-条件形式中有一个简单的表述:
罚款50英镑
如果您不正确地使用警报信号按钮。
这与纯粹的命令性声明形成对比,该声明表达的是一项禁令,但没有表达目的:
请勿不当使用报警信号按钮。
与纯粹命令式的禁止声明相反,英语句子的程序解释载有明确的目的表达:
如果你想要50英镑的罚款,
可以不恰当地按下警报信号按钮!
顺便提一下,请注意句子的程序语法与声明性含义的不同之处。英语程序句:
如果你想要A,那就做B
实际上具有潜在的声明意义
A if B
虽然伦敦地铁告示的英文可以改进,但它无疑是清晰易懂的。我相信它的清晰度是由于至少有三个特点:
•明确使用结论-条件形式
•适当使用程序形式,以及
•使用省略号来避免不必要的陈述
前两个特性可以有效地应用于当今计算机语言的设计和改进。第三个特征目前很难实现,尽管未来可能会在这些方面取得一些进展。
五
其他算法范例
前面的例子说明了法律语言的一些典型特征及其与逻辑程序形式的关系。然而,也可以找到其他算法范例的指示。
条件-行为产生规则是由纽厄尔(Newell)和司马贺(Simon)开发的人类心理学模型,并被用来实现专家系统。它们也可以在公告语言中找到。例如,在伦敦地铁的车厢中显示有以下告示:
请让出这个座位
如果老人或残疾人需要它
这是对早期含糊不清且可能令人不安的告示的明显改进
请放弃这个座位
给老人或残障人士
但即使明确使用“if”这个词,句子也不符合逻辑编程形式,因为明显的结论:
请放弃这个座位
是命令式的,而不是声明式的。此外,这句话没有表达一个目的。表达规则的条件-行为形式可以转换为逻辑编程形式,具体方法是:
做一件好事
显性而非隐性。由此产生的陈述可以在程序上表达:
做一件好事
放弃这个座位
如果老人或残疾人需要它
或以声明的方式:
你做得很好
如果你放弃你的座位给一个人
这个人需要你的座位并且
这个人是老人或残障人士
每一条命令都有明确或隐含的目的,这是法律哲学中的一个重要理论。使用逻辑编程形式,迫使目的明确,是这个理论的精神。将显式目的与命令关联起来,可以解释冲突命令的相对优点,甚至可以解释命令在给定上下文中是否合适。
尽管如此,自然语言确实允许不带目的地表达命令,甚至似乎存在完整性约束形式的逻辑编程模拟。
多年来,伦敦地铁在车厢自动门上方一直张贴着这样的告示:
堵塞车门会导致延误并且是危险的
换句话说
如果你堵塞车门会导致延误
如果你堵塞车门会有危险
只要延误和危险被认为是不可取的,一个有思想的人就会得出这样的结论:堵塞车门也是不可取的。
但是,伦敦地铁管理局最近改变了一些列车的通告措辞。新牌子上写着:
不要挡住车门
这是我们时代变迁的悲哀反映。要么延迟和危险不再被认为是不受欢迎的,要么不能指望公众来推断其行为的后果。
但是对于一个逻辑程序员来说,这个新告示是令人担忧的,不仅因为它表明了英国底层社会可能正在恶化的状况,而且还因为它代表着从一种逻辑编程风格向一种更迫切的风格的转变。但是仔细考虑一下,措辞的变化让人想起最近通过包含完整性约束来扩展逻辑编程的努力。
这种扩展是由逻辑编程的数据库应用程序驱动的。许多研究已经研究了逻辑编程中完整性约束的性质和开发有效的完整性检查方法。在所有这些方法中,完整性约束被视为数据库或程序随着时间的推移而必须满足的属性。如果数据库的内容描述了世界上的事务状态,则对世界各国施加义务或禁止的命令可以解释为对数据库状态的完整性约束。
完整性约束可以用包括否认在内的任何一阶逻辑语句的形式表示。因此,命令:
不要堵门
可以用否定来表示
¬你堵门
它表达了对发生在世界上的事件的描述的完整性约束。
类似地,条件-动作规则:
请让出这个座位
如果老人或残疾人需要它
可以解释为具有隐含形式的完整性约束
你给一个人让座
如果你坐在座位上
而那个人需要你的座位
并且这个人是老人或残疾人
因此,如果数据库记录了一个人坐在老人或残疾人需要的座位上,并且数据库中没有记录该人将座位让给老人或残疾人的情况,那么数据库的完整性将受到侵犯。如果违反了完整性,则决定如何恢复完整性是另一个问题。也许这就是“目的”或“制裁”可能发挥作用的地方。
因此,没有目的的命令似乎与通过包含完整性约束而扩展的逻辑程序兼容。此外,在完整性约束和逻辑程序规则之间甚至存在转换,这类似于无目的命令和有目的程序之间的转换,给定表示为一阶句子的完整性约束:
C
引入新的谓词S并将约束转换为规则:
S if not C
加上新的约束:
¬S.
新的谓词S可以被解释为一个“约束”,如果违反了原始约束,它就会被应用。这种转换已被用于关于演绎数据库中完整性约束的文献中,以将任意一阶完整性约束转换为拒绝形式。
这一转变与制裁的法律原则之间的类比表明,有可能采用法律技术来处理违反命令的行为,以解决在演绎数据库中恢复完整性的问题。这是一个值得进一步调查的有趣的可能性。
近年来,面向对象编程的范式在计算中变得越来越重要。因此,研究它在何种程度上与自然语言,尤其是立法语言有相似之处是很有趣的。
当我们看到常用名词如“人”“时间”和“承租人”作为一种面向对象的变量类型时,我们已经看到了英语中面向对象的一些特点。面向对象的其他表现似乎更难以在立法的实际语言中找到,但在个别案件的描述和整个法律的组织中更容易找到。
在自然语言描述中,通常是围绕每个句子开头的一个主题将句子组合在一起。这些主题有助于组织交流,类似于使用对象组织计算知识的方式。
例如,比较这一对句子:
首相走出机舱
记者们立即包围了她
与
首相走出机舱
她就立即被记者包围
心理语言学家发现第二对句子比第一对句子更容易理解,尽管第二对句子使用的是被动语态而不是主动语态。比较容易理解的两句话有相同的主题,而另外两句话有不同的主题。这些例子表明,围绕对象组织知识可以使知识更加连贯,更容易让人理解。
在法律领域,通常将不同的法律领域组织成与对象层次结构类似的层次结构。因此,一个国家可能有一个关于一般刑法的法规,另一个涉及公共场所行为的法规,以及一个涉及公共建筑行为的法规。例如,无论是否在公共场所,任何地方都可能禁止攻击和殴打。然而,光着身子走路可能只在公共场所被禁止,但在自己家里是允许的。另一方面,吸烟可能只在公共场合中被禁止,但在其他地方是允许的。
因此,自然语言似乎支持对象的两个概念:小对象(用于组织对个体的描述,类似于类型和主题)和大对象(用于组织整个知识领域的层次结构)。从这个角度来看,逻辑编程和面向对象对应于自然语言的不同方面并且是互补的。
然而,计算中的对象概念具有其他特征,如状态的变化,而这些特征在自然语言中没有明显的对应关系。这些特征似乎与模拟世界上物体的行为联系更紧密,而不是描述它们的行为。
有几种尝试将面向对象应用于法律推理。其中一些,如戈登(Gordon)的Oblog,基于对象作为类型和主题的视图,这与逻辑编程和自然语言含义的表示完全兼容。其他的,像尼塔(Nitta)等人对专利法的处理是基于使用对象来模拟行为。
在专利法示例中使用对象进行仿真是特别有意义的,因为专利程序,义务和禁止是用于生成和过滤专利申请模拟的变化状态的方式。似乎有可能的是,如果模拟的变化状态被视为数据库状态,那么专利法中表达的义务和禁令可能被视为完整性约束。这种可能性将在面向对象编程中的命令式语句与演绎数据库和逻辑编程中的完整性约束之间建立有趣的联系。
无论对这些可能性进行更详细调查的结果如何,毫无疑问,立法在计算科学本身之外提供了一个丰富的领域,在这个领域内可以研究不同计算范式之间的关系。这些研究不必仅限于编程语言,而是可以有效地扩展到计算的许多其他方面。
六
计算与法律的其他关系
在某种程度上,我们可以真正将立法视为由人们执行的程序,我们也可以期望在程序规范和软件管理等其他算法问题中找到其与法律的类似之处。
(一)规范和政策的类比
正如程序的编写要满足一定的规则一样,法律的起草是为了实现政策,即社会或政治目标。例如,一方面,1981年《英国国籍法》的目的是“制定关于公民身份和国籍的新规定,并修订1971年《英国居留权移民法》,特别是限制前英国殖民地居民向联合王国移民”。《密歇根大学租赁终止条款》可能包括以下目标:禁止在宿舍内的不合群行为,限制合法学生的居住权,以及不给被迫终止居留的个人造成不必要的困难。另一方面,伦敦地铁紧急情况的规则旨在在真正的紧急情况下尽可能有效和迅速地提供帮助,避免在出现错误警报时带来不便和不必要的麻烦。
程序规范与法律文件的政策有许多共同的特点。例如,一个程序的主要义务可能是满足它的规范,同样,法律文件的主要义务应该是实现它的社会和政治目标。此外,在这两种情况下。规范和策略常常定义不清、不一致,或者是相互冲突的需求之间妥协的结果。
在计算中开发的验证程序是否符合其规范的正式方法比为法律开发的任何相应方法都要先进得多。凯彭(Bench Capon)对将基于逻辑的软件验证的形式化方法应用于社会保障法规验证问题的可行性进行了初步研究。
因此,程序验证技术的转让是法律领域可能从其与计算的相似性中获益的一个领域。在软件管理等其他领域,这两个领域的好处可能会更为平等。
正如程序需要修改以适应不断变化的规则一样,立法也需要修改以适应不断变化的社会和政治需要。但是,程序既难以构建也难以更改。事实上,程序的使用时间往往比规范的使用时间长得多。
法律方面的情况也好不到哪里去,立法往往远远落后于社会和政治变革。过时和错误的立法仅仅是为了“法律和秩序”而执行。但是,法律的起草者们已经开发出了一些巧妙的手段来适应、修改和修订旧的法律。灵活使用模糊和未定义的术语,如“良好品格”“生命,肢体或财产将受到损害”和“不当使用”极大地提高了立法的灵活性及其适应变化的能力。这种模糊术语的使用让人想起在计算机编程中使用数据抽象和封装,这允许程序的较低级别发生更改,同时保持较高级别不变。
许多立法明确涉及废除或修改以前的立法。例如,1981年的《英国国籍法》废除了1948年至1965年的《英国国籍法》,并修正了1971年的《移民法》。特别是修订通常用元级语句表示,该语句描述了如何编辑旧文本以创建新文本。元级语句还用于从同一法案中的类似条款创建新条款。
例如,1981年《英国国籍法》第6.2条对与英国公民结婚的人的入籍做出了特别规定。这些要求与第6.1节中适用的要求类似,但包括较短的居住要求,省略了对英语、威尔士语或苏格兰盖尔语有足够知识的要求,并包括:
“第1(1)(b)段规定的要求”
这个对1(1)(b)的元级引用实际上是对要求的引用
“他具有良好的品格”
元语言的这种特殊用法是相当不寻常的,因为元语言形式的英语表达式实际上比等效的对象级表达式长。通常,元语言公式比对象级公式更简洁。
因此,立法的源代码常常将关于话语领域的对象级语句与关于其他立法文本或同一立法中其他条款的元逻辑语句混合在一起。使用这种元级别语句而不是等同的对象级语句的主要目的是明确不同但相似的文本之间的关系。
立法语言还使用了出色的技术来重用以前的立法。例如,在1981年的《英国国籍法》中,它规定,根据1981年的《英国国籍法》,成为英国公民的条件之一是:
根据1948年至1965年《英国国籍法》的任何规定,
就1948年法案第5(1)条的但书而言,被视为仅通过血统成为联合王国和殖民地公民,或如果是男性则被视为如此。
最后一个短语是反事实条件的一个例子。凯彭提出了这种反事实的元逻辑解释。由此我们可以设想元编程如何在逻辑编程环境中实现这种反事实的软件重用。
在人工智能中,有时会将基于案例的推理与基于规则的推理进行对比,通常认为这两种推理之间存在冲突。有人认为,人们推理是通过不同案例之间的类比,而不是通过演绎的规则应用来推理。
这两种推理的区别也存在于法律的核心问题。在某种程度上,它甚至反映在西方两大主要法律传统的显著特征之中。英美等国的普通法体系更注重通过案例进行推理。大陆法系,例如欧洲大陆法系,更强调通过编纂规则进行推理。事实上,在这两种法律体系中,这两种推理相互作用、相互补充。
例如,在基于规则的立法中,基于案例的推理在确定模糊概念的含义方面发挥着基础性作用。概念的先前案例可作为新案例的先例。
另外,在以案件为基础的法律论证中,在设立先例的案件中,为做出一项决定所提出的理由往往是一般性的,并诉诸一般性原则。此外,判例法的授权重述有效地将个别案件的判例重新表述为一般的、基于规则的形式,尽管这种基于案例的规则并不具有与立法规则相同的约束力。事实上,我们可以认为,法律从案例推理到规则推理是一个自然的发展过程。
七
结论
算法和法律之间的相似性似乎涵盖了计算软件的所有领域。此外,立法起草的语言风格结合了计算机语言在编程、程序规范、数据库描述和查询、完整性约束和人工智能知识表示等不同领域的表达能力。因此,这种语言风格可以很好地指导将来如何统一这些不同的计算领域。
计算和法律之间的相似性超越了语言风格。它们还扩展到了两个领域在开发、维护和重用大型和复杂的语言文本体方面所共有的问题。在这里,在两个领域之间转移有用的技术也是可能的。
在本文中,我主要关注逻辑程序设计和立法之间的相似之处。我已经指出了立法语言表明逻辑程序设计的基本模型可以有用地扩展的几种方式,包括类型的引入,相对条款,普通否定和击败否定,完整性约束,元推理和程序符号。我相信,在这种扩展的帮助下,逻辑编程可以为未来提供基础,单一计算机语言将适用于所有计算领域,就像自然语言适用于所有法律领域一样。
(责任编辑:陈 颀)
(公众号学生编辑:蔡梓园)
★ 人工智能与算法——“网络法的理论与视野”工作坊专题五 ||《地方立法研究》
★ 数据与治理——“网络法的理论与视野”工作坊专题四 ||《地方立法研究》
★ 隐私与被遗忘权——“网络法的理论与视野”工作坊专题三 ||《地方立法研究》
★ 版权与平台——“网络法的理论与视野”工作坊专题二 ||《地方立法研究》
★ 网络法研究方法论——“网络法的理论与视野”工作坊专题一||《地方立法研究》