第二十二章 策展
重做从第二天早上开始。
松枝把研究室的门反锁了,讨论课请了助教代一节。桌上清空,只留三样东西:白板,一摞案卷,一台不联网的旧笔记本电脑。他在白板最上方写了一行字,算是这次重做的题设:理论哪儿漏了。
然后他把这个问法拆了。一份理论出错,只有两种错法:规则错了,或者输入错了。规则是人写的,写在明处,四页纸加三页补充,随时可以接受任何审稿。输入是数据,五个系统导出的三百多条记录,清洗过,编过号,各自带着日程。
先验规则。这是快的一面。他把四页纸又当审稿人读了一遍,读到第三遍,接缝还是那半页,诚实声明还在,没有新增的可疑之处。规则那一侧,他挑不出新的毛病。三起案子替规则做过三次检验,其中一次是命案级的事实验证,白川的名字和日期,白纸黑字。
那就验输入。
他没有先碰数据集。他先做了一件绕路的事,因为他答应过自己,这一次要把「以为没有问题」的东西全部当成问题。他调出的是另一份卷宗:丰洲仓库,三浦太一。
证物清单他一项一项重新过。胶带,市售通用规格。一次性雨衣,用过,遗留在现场。样样对得上的现场,是做出来的。墙上那张纸,手写的数列题,他亲手判的模仿犯。他把复印件抽出来又读了一遍。十个数,模一百六十五,第四十四项,答案十六。他的判词还在那一页上:下等。现在他知道那台机器是谁的,方法是谁递的。判词两个字,这一次读向他自己。手机,通话记录干净,备忘录十几条,琐事。最后一条是草稿,写在六月里,没有收件人,也没有发出去。
下个月开始,我不做了。对不起,也谢谢你。
七月里他在这条草稿上停过一秒。这一次他停下来,没有再翻页。他把它读了很多遍,读到能背。写这句话的人不知道自己躺在谁的规则里,他到死都不知道自己是哪条数据里的一个点。松枝当时把这条草稿归了类:不属于任何一套规则。这个归类本身现在看着刺眼。
他翻到自己写的那页排除意见。八月一日,署名,五条:定义域,层进,布设的指纹,模仿,时序。他一条一条读下去。写法是他刻意选的最笨的那种,每条一段,不省略前提,不跳步。他写过很多证明,这一页是他少数敢押上名字的东西。
现在他逐条问:哪一条错了?
定义域,三浦不在数据集里,这一条是事实,到今天仍然是事实。层进,签名归零,这一条是观察,观察没有变。这两条他现在仍然敢押上名字。剩下三条是另一回事。成本观里,从两份现场的反差到「两套成本不可能出自同一套审美」,中间那一步不是观察,是归纳。模仿与时序也一样,是他拿着前三案的规则当尺子量出来的。尺子是凶手做的。
这份排除意见作为推理,前半截还站得住,后半截押在别人写的规则上。而凶手写的规则不是自然律。它在流程上走完的那一天,这桩案子就从所有正式的视野里掉了出去,卷宗换了手,警部补调走了,新来的人很客气。推理不是没输。输在他把凶手写的规则当成了自然律。
他想起八月一日那天,伊达坐在他对面说的话。您这套排除,前提是所有规则都来自前三案。规则是凶手写的。他写了三条规则,您用这三条规则判第四个案子出局。可是写规则的人,随时可以不写。
他当时答:对,这是所有归纳的死穴,我承认。他答得干脆,干脆得像在课堂上承认一条公理。承认了,然后照原样做。
八月六日下午,伊达说佐藤还是该看着,他给了三条,伊达拆不动,认了。直觉比证据先到,规则压过了直觉,这已经是第二回。
下午他给伊达打了电话,请他过来一趟。伊达到的时候带着雨具,八月的雨说来就来。松枝把白板转过来,白板上是他上午写的东西。
"三浦案,"松枝说,"我可能签错了。"
伊达在白板前站了一会儿,没有立刻坐下。他从随身的本子里取出一张便签,展开,放在桌上。便签上是他的字,一笔一画:三浦案,伊达持保留意见。日期,八月一日。
"我们说好的。"伊达说,"真相对不住您这套排除,您拿这张纸来找我,我认。今天您来了。我认。"
"您不认点别的吗?"松枝说,"您可以说您早就看出来了。"
"我看出来的是「不对」,不是「对」。"伊达把便签收回本子里,"不对和对之间隔着十万八千里。我那天要是拿得出证据,我拼了命也不让您签那页字。我拿不出来,我只有后背发紧。后背发紧上不了卷宗,这个道理我干了二十年,认。"
"那我现在告诉您我后背也发紧。"松枝说,"晚了十七天。"
"不晚。"伊达说,"三浦的卷宗还在,人还没烧成灰,线还在。松枝先生,您今天是来认账的,还是来干活的?"
"干活的。"
"那就干活。"伊达在白板前的椅子上坐下来,"您查您的,我查我的。不过我先问一句:您现在信的,是哪边漏了?"
"我还不知道。"松枝说,"规则我验了三遍,验不出新的东西。明天我验数据。"
"数据。"伊达重复了一遍,"数据不是早川先生管的吗?"
"是。所以我要验的,是我自己在数据上签过的每一次字。"
"要不要他配合调档?"
"不用。"松枝说,"原始件在物证系统,不经过他。"
伊达看了他两秒,点了点头,没再问。
第二天,松枝调来了原始库。
手续很简单,原始导出件一直封存在本部物证系统里,五个系统,五份,四月份封的,封条完好。它们由警方直接从五个系统导出,当天封存;早川四个月里接触的,一直是清洗用的副本。他要的时候登记了调阅,用途写的是例行复核,伊达以办案协作名义办了调阅,当日归还。早川上星期说过,旧档整理完毕,随时可调阅。这话是真的,调阅单一递,当天下午东西就到了他的研究室。
他把五份原始导出件和清洗后的数据集并排摆开,又把那册清洗日志放在手边。日志他熟,每条改动一行,前后两版都留着。
这一次他不抽查。他全查。
理论用到的字段只有两类:编号字段,日程字段。日程字段他先过,公开登记,学会官网、研究室通知、会议手册,逐条对出处,三百多条里涉及日程的几十条,一条一条核对,全部吻合。电子库四个月来的全部变更记录,他也调了,逐条对去向,对得上每一期周报。
编号字段量大,他按名单相关度排了序,从名单上的人开始。白川的行,对得上。林的行,对得上。小島的行,对得上。
验到佐藤那一行。日程字段,对得上。编号字段。
他的目光停住了。
原始导出件里,旧系统登记的是 215,现属系统登记的是 216。清洗日志里有一条改动记录:以现属系统为准,215 改为 216。改动时间是四月,理由是转岗导致职员号末位不一致,复核记录齐全。
他做的第一件事不是算。他把这一行单独抄出来,压在桌角。「只有一处」这四个字,要等全部验完才敢说。这一行现在只是单独的一行。
名单之外的行,第三天他全部验完:三百多条,原始值对清洗值,一个数字一个数字,从天亮验到天黑。每验完一行都是对的。桌角那页纸随着每一行变得更重。验完最后一行,他把它拿起来。上面只有一行字。
没有第二处改动。到这时,「只有一处」这四个字才敢说出口。
他把那页纸拿回来。改动时间,四月。他记得那一分钟。第二天上午,会议室,投影,黄色的离群行。早川把两个窗口并排调出来,说,转岗造成的,这种事很常见。伊达问哪边是对的。早川说,图书馆是现属系统,以现属为准,216。敲了几个键,215 变成了 216,黄色的底色消失了,校验标记变成通过。他当时在日志里敲了一行字,保存,然后多停了一秒。
松枝当时看着这一分钟发生。他记得自己当时想过:顺序是对的,每一步都有出处,先查现属系统,再定基准,再改,改完留日志。他还想过,中村说过,对材料诚实,不添,不减,早川做的正是这件事。一条脏数据被核实,被归位。他目击了这次改动,并且在心里替它签过字。
然后他做那件他必须做的事:用原始值重算。
主键先算。学籍号映射的主键不受这条改动影响,佐藤的主键一直满足整除条件,六月十日名单开出来,他在第四行,靠的就是这个键。这条没有疑问。
然后他先做旧动作。216。除以一百九十九,余十七。十七代进方程,右端一百五十四。平方表翻到九十九的平方,没有。勒让德符号,没有。曲线上没有这个点。这个结论他算了四个月,四个月里每一次都一样。
然后他拿过另一张纸,写下 215。
笔尖悬着,没有落下去。他知道自己在做什么。他要算的已经不是剔除了。
模一百九十九。除法。余数,16。
16。轨道第四格的横坐标。八月五日夜里,第四格空着,他把三浦填了进去:时序的第四案,纸上的答案,都指向那一格。现在原始值告诉他,那一格本来是佐藤的。三浦不是第四格的人,三浦是被填进第四格的人。
他把笔搁下。笔尖碰到纸面,滚了一下,他伸手按住。
他起身,从三浦案的卷宗里抽出那张纸的复印件,不是墙上的数列题,是夹在后面的、他自己七月写的便签。「第四十四项,等于十六。」他自己的字。
两件物并排躺在桌上:他的便签,七月,十六;今晚的草稿,八月,16。同一个数,两次都是他自己写的。第一次他以为那是答案。第二次他知道,那是格子。中间隔着他亲手填进去的三浦。
他没有对这两张纸说任何话。
一个单位。一个字段的一次改动,改动方向是从旧系统改向现属系统,理由充分,流程完整,留痕齐全。这次改动发生在四月,那时候白川还活着,高野还活着,椭圆曲线还没有出现在任何一块白板上,标记点还没有被任何人画出来,那条轨道还要过四个月才被他想出来。
而这次改动改动的那个字段,正是四个月后那条轨道要读的字段。
他把两个数并排写在纸上。中间隔着一。
215,在。216,不在。
那组截图在他邮箱里躺了一夜。黄底的离群行,两个编号,一行小字。他昨天看见它的时候,目光停了一瞬,却没有读进去。
他靠在椅背上,盯着天花板。
把这套理论对着原始值重跑一遍:佐藤実的主键满足,轨道落在第四格,全部条件都成立。他不是被理论排除的。精化后的理论从来没有判他出局,理论读到的是 216。有人在他读到之前,把这个数从 215 改成了 216。
松枝把这份重算从头到尾又做了一遍,第二遍的结果和第一遍一字不差。他又做了第三遍,这一遍他把林和小島也带上了:两个人的编号照旧落在自己的格里,不动。三百多条记录里,被改动过的编号字段只有一处,一处只动了一个人,一个人只动了一个单位,这一个单位恰好把他挡在了四个月后才会存在的那条轨道的门外。
他想起六月十日,名单第一次开出来的那个上午。四个人,四行,佐藤在第四行,七月五日,研究室年会。雏形理论把他收进来过。他曾经包含在理论里,堂堂正正,靠他自己真实的编号。然后他退出去,退出得也堂堂正正,靠一个被改过的编号。一进一出,他当时读到的都是规则的中立。现在他看到那条轨迹的另一端连着一只手:四月,清洗,一个单位;六月,名单,包含;八月,精化,剔除。三个点,一条线,线的每一笔都合法,都留痕,都经得起抽查。
他想起自己当时下过的判断:这份数据的底座,是他经手过的案件材料里最结实的一块。底座是结实的。结实到四个月里没有任何一个人觉得需要再敲它一锤。
数据被策展过。
他把这六个字写在白板上,写在「理论哪儿漏了」的下面。写完他没有觉得找到了答案。这六个字不是答案,是一扇门。门后面的问题更冷:这次改动在四月的逻辑是什么?
四月,那条轨道不存在于任何人的脑子里。改动先于条件。他把这条写下来,又停住。不够。曲线可以围着既有的号码造。数据在前,曲线在后,这个方向天然成立。一个六月才动手的人,围着四月的一对数造一条曲线,不需要预知任何事。时间锁锁不住那只手。
他把这条划掉。真正能锁的不是时间,是数。这条曲线的第四格是 16,是 215 的余数;17 处没有点,是 216 的余数。它是围着这一对数造出来的。能把这两个数造进一条曲线的人,一只手数得过来。
他写到这里,笔停住了。
他没有再往下写。他知道再往下写会写出一个名字,他今天还不打算写它。他把这张纸折起来,压进抽屉最底下,锁上。
他在白板前站到腿麻。天色从亮到暗,他没有开灯。
夜里十点,他收拾桌面。五份原始导出件装回封套,清洗日志归位,重算的三份草稿按顺序钉好,收进抽屉,锁上。做这些事的时候他的动作和平时一样慢。只有他自己知道,这双手今天下午抖过一次,就一次,在看到 215 的余数的那一刻。
手机亮了一下,例行推送。监测脚本:林条目无变动。推送后面附着顾问工作记录的本周存档。他点开,扫了一眼。本周的整理很短:旧档调阅登记两条,原始库五份导出件出库复核,调阅人是他自己,用途例行复核。数据侧把这个星期的调阅记得清清楚楚,和过去二十几个星期一样,什么都留痕。
记录的最末一行,只有一句话。
他的目光从那句话上扫过去了,没有读进去。他满脑子都是 215 和 216,都是那一条隔着一的两个余数。他锁了屏,去洗杯子,关灯,锁门。走廊很长,光从两边的门缝里漏出来,一道一道。他想的是明天:明天开始,要把这套理论从第一行起,对着原始数据,重新推一遍。不是核对,是重演。他要亲手看着自己错在哪一行。
那份他扫了一眼就关掉的记录里,最末的那句话,是这个星期唯一新写的一句。
〔顾问工作记录 · 21〕 调阅登记(本周)。 8 月,原始库五份导出件出库,调阅人:松枝教授,用途:例行复核。清洗日志(4 月交接版)同批出库。当日归还登记前留置研究室。 名单字段无变动。林条目正常,特级执行中。监测脚本运行中,推送次数:0。 旧档清理完毕。前后两版留痕核对一致。 他开始重算了。