A user on Discord reports the following:
test.k:
module TEST-SYNTAX
syntax Pgm ::= "quux"
endmodule
module TEST
imports TEST-SYNTAX
imports INT
configuration <k> $PGM:Pgm </k>
<c1> . </c1>
<c2> . </c2>
rule <k> quux => . </k>
<c1> . => !C:Int </c1>
<c2> . => !C:Int </c2>
endmodule
test-spec.k
requires "test.k"
module TEST-SPEC-SYNTAX
imports TEST-SYNTAX
endmodule
module VERIFICATION
imports K-EQUAL
imports TEST-SPEC-SYNTAX
imports TEST
endmodule
module TEST-SPEC
imports VERIFICATION
claim <k> quux => . </k>
<c1> . => ?C </c1>
<c2> . => ?C </c2>
endmodule
kprove output:
kore-exec: [384063] Warning (WarnStuckClaimState):
The configuration's term unifies with the destination's term, but the implication check between the conditions has failed. Location: /mnt/c/Users/brown/Code/ktest/test-spec.k:18:11-20:27
Context:
(InfoReachability) while checking the implication
#Not ( {
_DotVar1
#Equals
_DotVar1 +Int 1
} )
#And
<generatedTop>
<k>
.
</k>
<c1>
_DotVar1:Int ~> .
</c1>
<c2>
_DotVar1:Int ~> .
</c2>
</generatedTop>
[Error] Prover: backend terminated because the configuration cannot be
rewritten further. See output for more details
Should this proof go through? Can you write proofs over fresh variables like this?
A user on Discord reports the following:
test.k:module TEST-SYNTAX syntax Pgm ::= "quux" endmodule module TEST imports TEST-SYNTAX imports INT configuration <k> $PGM:Pgm </k> <c1> . </c1> <c2> . </c2> rule <k> quux => . </k> <c1> . => !C:Int </c1> <c2> . => !C:Int </c2> endmoduletest-spec.kkproveoutput:Should this proof go through? Can you write proofs over fresh variables like this?