Z3Prover中的女士或老虎问题

时间:2018-11-26 17:43:08

标签: python z3 z3py

我正尝试使用Z3Prover来证明女士或老虎问题,如下所述:

共有三个房间。每个都包含一位女士或一只老虎,但不能同时包含两者。此外, 一个房间里有一位女士,另外两个房间里有老虎。每个房间都有一个 符号,最多三个符号之一是真实的。这三个标志是:

Room I: A TIGER IS IN THIS ROOM.
Room II: A LADY IS IN THIS ROOM.
Room III: A TIGER IS IN ROOM II.

哪个房间有女士?

我知道答案是那位女士在1号房里,所以第三个陈述是正确的,而其他陈述是错误的。但是我不知道如何在Z3中编写布尔证明,有人可以帮我吗?

1 个答案:

答案 0 :(得分:2)

这是一种方法:

<p-calendar
     [ngModel]="convertToDate(myTimestamp)"
     [locale]="calenderTranslateService.getTranslationForCalendar()"
     (onSelect)="convertToTimestamp($event)"
    [dateFormat]="calenderTranslateService.getDateFormatForCalendar()">
</p-calendar>

此编码中有一些冗余,例如关于老虎和女士计数的最后两个条件相互暗示。但这很明显。

运行此命令时,我得到:

toDate(timestamp) {
    if (timestamp==null) return null;
    return new Date(timestamp);
}

确实说夫人在1号房,只有第三个标志是正确的。 (此外,这是唯一的解决方案,因为在while循环中断言其否定会导致不满意的情况。)