法律是否可能被写成代码?

作者: 章彦博 | 来源:发表于2014-11-18 22:05 被阅读860次

这是一篇「抛砖」与「摆立场」的文章,欢迎有理有据的批判与讨论。

首先摆出个人的立场:「代码司法」,在一定程度上,是可以的,至少交互式断案是可行的。至于其「必要性」,则在于进一步去除司法过程中的「不公正」,并且赋予司法过程以「可重复性」。

1

首先举一个实际的例子,下图是1998年袭击东非大使馆的人员网络

1998年袭击东非大使馆的人员网络

我们要找到他们的合作关系,也就是找出他们中有几个团体,这是可以通过代码做到的:

clique = FindClique[g, {5}, All]
{{"Fahad", "Fadhil", "Khalfan", "Awad", "Ghailani"}, {"Odeh", 
  "Owhali", "Fazul", "Azzam", "Atwah"}, {"Abdullah", "Odeh", "Owhali",
   "Fazul", "Atwah"}}

实际上,通过上面的代码就足以做到了。画出来就是这样:

合作关系

这样他们就能分成三个团伙,这也可以通过计算机解决:

三个团伙

我们甚至能直接找到这次活动的外部联系人:

With[{dar = First[clique]}, 
 Complement[Flatten[AdjacencyList[g, #] & /@ dar], dar]]
{"Abdullah", "Atwah", "Hage", "Odeh"}

这四个人:Abdullah, Atwah, Hage, Odeh,就是「外部联系人」。

我个人的观点是:凡可写成「流程图」的法律条款,皆可写成一个(至少是交互式的)判决程序。

2

知乎上的@KE meng 举出这个例子,认为计算机无法处理这样的问题:

小孩A把小孩B给打了,小孩B带着小孩B的爷爷去学校把小孩A给打成重伤,可是小孩B的爷爷是精神病患者,但是小孩A去打小孩B的行为是小孩A的家长指使的,为了让小孩A顺利地打小孩B,小孩A的父亲谎称有人做工,把小孩B的父亲(监护人)骗出了村子。

这个事件看起来的确很复杂,但从图论的角度看,是可以准确用计算机的语言描述的。
我大致考虑一下,一个事件,其有几个基本的组成部分:

  • 人;
  • 团体;
  • 时间轴;
  • 事件;
  • 物质;
  • 金钱;
  • ……

这些是常见的基本组成。
他们之间的常见关系是:

  • 人->事件:主动做……;
  • 人->人:唆使、被唆使,欺骗、殴打、……(事件);
  • 人->物质:使用;
  • 物质->事件:产生;
  • ……

这样的关系可以通过多个来表示。凡有力,则有施力者,有受力这,此处亦然,「行为」可以储存在节点的每一条边之上。

好,再来看刚刚的例子:

小孩A把小孩B给打了,小孩B带着小孩B的爷爷去学校把小孩A给打成重伤,可是小孩B的爷爷是精神病患者,但是小孩A去打小孩B的行为是小孩A的家长指使的,为了让小孩A顺利地打小孩B,小孩A的父亲谎称有人做工,把小孩B的父亲(监护人)骗出了村子。

可以画出这样的图:

GraphPlot[{{"A" -> "B", "打"}, {"B" -> "B爷爷(精神病)", 
   "指使打人"}, {"B家长" -> "B", "指使打人"}, {"B爷爷(精神病)" -> "A", 
   "打"}, {"B家长" -> "A父亲", "骗出村子"}, {"A父亲" -> "A", "无法保护"}}, 
 VertexLabeling -> True, DirectedEdges -> True]

出来的图就是这样的:

事件图

那么可以这样描述这件事发生的过程:

  • B爷爷成功打A = B爷爷打A && A父亲不在家
  • B爷爷打A = B指使B爷爷 && B爷爷同意
  • B爷爷同意 = Random[]
  • B指使B爷爷 = B家长指使B && A打了B && B认同要打A
  • B家长指使B打人 = A打了B && B家长认为需要打A
  • A父亲不在家 = B骗A父亲出村 || A父亲恰好不在家

好,上边的逻辑关系确立之后,通过布尔代数(这是可行的),可以计算出每个行为与「B爷爷成功打A」这件事之间的关联,从而可以分担责任,作出判决。


以上是一些大致的想法,希望和大家讨论讨论这个问题。


刚刚发布几分钟,@LostAbaddon就来了,还带来了一个很让人纠结的问题:

小明和小红在小王家的楼顶玩耍,小红开玩笑轻轻推了小明一把,小明撞到小王家屋顶的栏杆,但是这根栏杆正好松动,小明措手不及掉了下去,结果被小王楼下小李家的游泳池接住了没事,但小李邻居小强出去旅游的时候把家里的宠物鳄鱼寄养在了小李家的游泳池了,结果小明被鳄鱼咬死了。
.
请问:这起事件里哪些人有哪些责任应该分别获什么刑?

好的,我个人的观点是,这些问题都可以写成布尔表达式,具体到这个问题上是这样的:

布尔表达式

解出来:

(((((年久失修 && 小王没有维修) || 栏杆是假冒产品) && 小红推了小明一下 && 小明被推到栏杆上 && 
       小明没抓稳栏杆) || (小明自己跳下去的 && 小红没有阻止)) && 小李接受了鳄鱼 && 小强寄养鳄鱼 && 
   鳄鱼愿意咬小明) || (((((年久失修 && 小王没有维修) || 栏杆是假冒产品) && 小红推了小明一下 && 
       小明被推到栏杆上 && 小明没抓稳栏杆) || (小明自己跳下去的 && 小红没有阻止)) && 小明不会游泳 && 
   小明没有得到救治)

化简一下,得到:

小明死了=(小明不会游泳 && 小红没有阻止 && 小明没有得到救治 && 小明自己跳下去的) || (小强寄养鳄鱼 && 小红没有阻止 && 
   小李接受了鳄鱼 && 鳄鱼愿意咬小明 && 小明自己跳下去的) || (小明不会游泳 && 小明没抓稳栏杆 && 栏杆是假冒产品 &&
    小明没有得到救治 && 小明被推到栏杆上 && 小红推了小明一下) || (年久失修 && 小明不会游泳 && 小王没有维修 && 
   小明没抓稳栏杆 && 小明没有得到救治 && 小明被推到栏杆上 && 小红推了小明一下) || (小强寄养鳄鱼 && 
   小明没抓稳栏杆 && 小李接受了鳄鱼 && 栏杆是假冒产品 && 鳄鱼愿意咬小明 && 小明被推到栏杆上 && 
   小红推了小明一下) || (年久失修 && 小强寄养鳄鱼 && 小王没有维修 && 小明没抓稳栏杆 && 小李接受了鳄鱼 && 
   鳄鱼愿意咬小明 && 小明被推到栏杆上 && 小红推了小明一下)

分出来六种情况:

  1. 小明不会游泳 && 小红没有阻止 && 小明没有得到救治 && 小明自己跳下去的
  2. 小强寄养鳄鱼 && 小红没有阻止 && 小李接受了鳄鱼 && 鳄鱼愿意咬小明 && 小明自己跳下去的
  3. 小明不会游泳 && 小明没抓稳栏杆 && 栏杆是假冒产品 && 小明没有得到救治 && 小明被推到栏杆上 && 小红推了小明一下
  4. 年久失修 && 小明不会游泳 && 小王没有维修 && 小明没抓稳栏杆 && 小明没有得到救治 && 小明被推到栏杆上 && 小红推了小明一下
  5. 小强寄养鳄鱼 && 小明没抓稳栏杆 && 小李接受了鳄鱼 && 栏杆是假冒产品 && 鳄鱼愿意咬小明 && 小明被推到栏杆上 && 小红推了小明一下
  6. 年久失修 && 小强寄养鳄鱼 && 小王没有维修 && 小明没抓稳栏杆 && 小李接受了鳄鱼 && 鳄鱼愿意咬小明 && 小明被推到栏杆上 && 小红推了小明一下

相关文章

  • 法律是否可能被写成代码?

    这是一篇「抛砖」与「摆立场」的文章,欢迎有理有据的批判与讨论。 首先摆出个人的立场:「代码司法」,在一定程度上,是...

  • UIImageView setImage 伪代码

    写成伪代码的形式

  • 假如代码规范是法律你可能还缺代码道德

    一般来说,代码规范是一个企业每个开发人员都必须遵循的规定,发布前会有统一代码自动检测,违反任何一条都不允许发布。个...

  • 教育   法律   医疗

    教育,法律,医疗,这是今天日更的主题。 今天的主题,和现实贴的很近,如果动笔,很多人可能要写成论述文,甚至是批判文...

  • 区块链代码技术的法律保护

    未来这个世界最有价值的资产是什么? 代码。 在区块链世界,代码即法律(Code is Law),所有的规范都可以被...

  • Android代码混淆

    什么是代码混淆 代码混淆就是将代码中的各种元素,如变量,方法,类和包的名字改写成无意义的名字,增加项目反编译后被读...

  • 一起谈谈C语言里面的陷阱

    小编最开始编程的时候,除了英文标点被误写成中文标点外,可能被大家普遍遇到的是将比较运算符==误写成赋值运算符=,代...

  • 设计是否可能被AI代替

    阿里鲁班- AI要弄死美工的节奏 “数据是用来喂的”。 现在听着AI一头雾水,再过10年不懂AI就好像现在不懂互联...

  • JSPatch下发笔记10

    OC代码: JS代码: 总结:NSForegroundColorAttributeName 在js中要写成"NSC...

  • 明星“被死亡”说 是否触及法律底线?

    明星八卦绯闻不断,越是当红的明显免不了“被黑”,网上不断传出某某明星死亡的传闻,并且不在少数,从草根出身的本山大叔...

网友评论

  • 酒骑风:@三無行客 把法律当成工具马克思不是第一个,也不是最后一个。马克思法学的理论前提并不是统治阶级的意志。这么想就太天真了
  • 酒骑风:@三無行客 至于古典自然法,我恰恰认为楼主没提到点子上,自然法的核心是要强调法的存在的,没有实在法,自然法根本无从谈起。至于马克思主义法学也正是要追求法说的对,不讲法说了算的,这点也被法律实证主义者所不齿
  • 酒骑风:@三無行客 法律实证主义只是认为存在唯一的法,研究法的存在,根本不关心它是否公正,这个是奥斯丁以来的传统,分离命题的核心。让法律说的对不对其实并不重要,但并不意味着法官胡搅蛮缠法官可以通过说的对树立起民众的信任,但它的权威恰恰和对不对无关
  • LostAbaddon:@酒骑风 “法律的核心在于其说了算,说的对不对没那么重要”
    嗯,这点很同意。

    不过,个人其实质疑的是这种形式化操作的可行性——如果可行,那么对不对甚至是否公正我倒是不在乎。。。
  • 酒骑风:@LostAbaddon 其实最大的问题在于,凭什么被程式化的判决,是公正的~法律的核心在于其说了算,说的对不对没那么重要
  • 酒骑风:观点非常棒,我也在研究这个~

  • LostAbaddon: @章彦博 这又是一个坑,涉及到两个几乎不可能完成的任务:
    1,如何获得这个数值,如何获得最终责任相关系数;
    2,自然界中存在不可计算数和不可定义数,你如何确保你的计算不会遇到这样的问题。
    往深了说,你已经等于先假定问题是可计算的,再去做计算,但可计算这一点本就是你需要证明的东西。
  • 章彦博: @LostAbaddon 这里没有计算完,「年久失修」有一定概率,「鳄鱼愿意咬小明」也有一定概率。这些概率如果以具体的数值带入,便可以计算个体的行为与最终结果之间的相关系数。依此分担责任。
  • LostAbaddon:你的解其实不解决任何问题,因为这里“年久失修”或者“寄养鳄鱼”都是已知条件,本身不是未知,你罗列已知并不创造任何新的知识。
    这里的问题是:如何为上述所有已知的条件在最后结果的导致过程中定性以及相关的刑罚定量。
    并不是所有的年久失修都需要被判有罪的,所以你列出年久失修这个已知条件并不解决我所问的问题——而我所问的问题才是法律要解决的问题。
  • LostAbaddon:@桃白白 其实我也用Mathematica。。。
  • 章彦博:@LostAbaddon 刚刚对你第一个问题做了一些推理,已经更新在文章中了。

    你后面说「当然,我们可以退而求其次,让律师和法官做那些不能形式化的部分,而将法律形式化——但我还是很怀疑法律是否可以被形式化为纯逻辑系统。」,其实我也差不多就是这个意思,只不过是想尽量拓展「可形式化的边际」。
  • LostAbaddon:其实,法律和律师的作用在我看来,是从罗生门里找出一道门来。
    如果找出这道门的所有工作可以被形式化,那么就必然可以程序化。
    但形式化连物理都对付不了,对付这种社会问题,呵呵。
    当然,我们可以退而求其次,让律师和法官做那些不能形式化的部分,而将法律形式化——但我还是很怀疑法律是否可以被形式化为纯逻辑系统。
  • LostAbaddon:小明和小红在小王家的楼顶玩耍,小红开玩笑轻轻推了小明一把,小明撞到小王家屋顶的栏杆,但是这根栏杆正好松动,小明措手不及掉了下去,结果被小王楼下小李家的游泳池接住了没事,但小李邻居小强出去旅游的时候把家里的宠物鳄鱼寄养在了小李家的游泳池了,结果小明被鳄鱼咬死了。
    请问:这起事件里哪些人有哪些责任应该分别获什么刑?

本文标题:法律是否可能被写成代码?

本文链接:https://www.haomeiwen.com/subject/gvgitttx.html