(benchmark circus_po_1 ; circus_po_1 é o nome do exemplo, tirei da minha cabeça :logic UNKNOWN ; indica se usamos alguma teoria pré-definida, não é nosso caso :extrafuns ((secondp Int)) ; cada constante é declarada como uma função sem parâmetro que retorna um Int :extrafuns ((minutep Int)) :extrapreds ((inrange Int Int Int)) ; declarei um predicado "inrange", que é ternário, e definido abaixo. :status unknown ; indica qual o resultado que esperamos da verificação - útil para testar o provador - não é de interesse aqui :formula ; a fórmula que vamos tentar mostrar insatisfatível (que é a negação do que queremos provar válido) (not (implies (forall (?x Int) (?l Int) (?h Int) ; aqui introduzo a definição de "inrange", como não é predefinido (iff (inrange ?x ?l ?h) (and (<= ?l ?x) (<= ?x ?h)))) (iff (and (and (and (inrange secondp 0 59) ; aqui vem a primeira PO. (inrange minutep 0 59) true) true) (= secondp minutep) (= minutep 0)) (and (= secondp 0) (= minutep 0)) )) ) )