法律是否可能被寫成代碼?
文/章彥博
這是一篇「拋磚」與「擺立場」的文章,歡迎有理有據的批判與討論。
</blockquote>首先擺出個人的立場:「代碼司法」,在一定程度上,是可以的,至少交互式斷案是可行的。至于其「必要性」,則在于進一步去除司法過程中的「不公正」,并且賦予司法過程以「可重復性」。
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 就來了,還帶來了一個很讓人糾結的問題:
小明和小紅在小王家的樓頂玩耍,小紅開玩笑輕輕推了小明一把,小明撞到小王家屋頂的欄桿,但是這根欄桿正好松動,小明措手不及掉了下去,結果被小王 樓下小李家的游泳池接住了沒事,但小李鄰居小強出去旅游的時候把家里的寵物鱷魚寄養在了小李家的游泳池了,結果小明被鱷魚咬死了。
請問:這起事件里哪些人有哪些責任應該分別獲什么刑?
好的,我個人的觀點是,這些問題都可以寫成布爾表達式,具體到這個問題上是這樣的:
布爾表達式
解出來:
(((((年久失修 && 小王沒有維修) 欄桿是假冒產品) && 小紅推了小明一下 && 小明被推到欄桿上 && 小明沒抓穩欄桿) (小明自己跳下去的 && 小紅沒有阻止)) && 小李接受了鱷魚 && 小強寄養鱷魚 && 鱷魚愿意咬小明) (((((年久失修 && 小王沒有維修) 欄桿是假冒產品) && 小紅推了小明一下 && 小明被推到欄桿上 && 小明沒抓穩欄桿) (小明自己跳下去的 && 小紅沒有阻止)) && 小明不會游泳 && 小明沒有得到救治)
化簡一下,得到:
小明死了=(小明不會游泳 && 小紅沒有阻止 && 小明沒有得到救治 && 小明自己跳下去的) (小強寄養鱷魚 && 小紅沒有阻止 && 小李接受了鱷魚 && 鱷魚愿意咬小明 && 小明自己跳下去的) (小明不會游泳 && 小明沒抓穩欄桿 && 欄桿是假冒產品 && 小明沒有得到救治 && 小明被推到欄桿上 && 小紅推了小明一下) (年久失修 && 小明不會游泳 && 小王沒有維修 && 小明沒抓穩欄桿 && 小明沒有得到救治 && 小明被推到欄桿上 && 小紅推了小明一下) (小強寄養鱷魚 && 小明沒抓穩欄桿 && 小李接受了鱷魚 && 欄桿是假冒產品 && 鱷魚愿意咬小明 && 小明被推到欄桿上 && 小紅推了小明一下) (年久失修 && 小強寄養鱷魚 && 小王沒有維修 && 小明沒抓穩欄桿 && 小李接受了鱷魚 && 鱷魚愿意咬小明 && 小明被推到欄桿上 && 小紅推了小明一下)
分出來六種情況:
- 小明不會游泳 && 小紅沒有阻止 && 小明沒有得到救治 && 小明自己跳下去的
- 小強寄養鱷魚 && 小紅沒有阻止 && 小李接受了鱷魚 && 鱷魚愿意咬小明 && 小明自己跳下去的
- 小明不會游泳 && 小明沒抓穩欄桿 && 欄桿是假冒產品 && 小明沒有得到救治 && 小明被推到欄桿上 && 小紅推了小明一下
- 年久失修 && 小明不會游泳 && 小王沒有維修 && 小明沒抓穩欄桿 && 小明沒有得到救治 && 小明被推到欄桿上 && 小紅推了小明一下
- 小強寄養鱷魚 && 小明沒抓穩欄桿 && 小李接受了鱷魚 && 欄桿是假冒產品 && 鱷魚愿意咬小明 && 小明被推到欄桿上 && 小紅推了小明一下
- 年久失修 && 小強寄養鱷魚 && 小王沒有維修 && 小明沒抓穩欄桿 && 小李接受了鱷魚 && 鱷魚愿意咬小明 && 小明被推到欄桿上 && 小紅推了小明一下
來自: www.jianshu.com<span id="shareA4" class="fl"> </span>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!