Open tothtamas28 opened 8 months ago
These are special-cased because there are multiple ways to write the symbols; this is for historical compatibility. We should be able to drop #True
and #False
and similar cases then make the check stricter. Possible that we rely on this somewhere, so be careful when removing cases.
Trickiest case is the empty K sequence; we are definitely using this.
There is a consensus among the K development team that we should standardise on .K
as the canonical unit element of K sequences, and deprecate .
. This will require a migration process for downstream code.
Blocked on actually removing .
in favour of .K
; that's a pretty breaking change so I want to leave warnings on for a little while before doing so. Once it's gone, we can finish removing the special-casing.
Make sure that this is atomic as a dependency update; downstream projects should be up to date before putting this through:
@tothtamas28
Take notes on what we do manually here, and then how could we automate it to help with changes of this sort in the future.
Blocked on #4066
kast.md
defines#Top
as https://github.com/runtimeverification/k/blob/01b4a3826b9c0037698efd553fcb519a0fc61b24/k-distribution/include/kframework/builtin/kast.md?plain=1#L141and
#True
as https://github.com/runtimeverification/k/blob/01b4a3826b9c0037698efd553fcb519a0fc61b24/k-distribution/include/kframework/builtin/kast.md?plain=1#L143(Similarly for
#Bottom
and#False
.)Both productions have the same
klabel
and aresymbol
-s. However, according to the K User Manual,In this case, it is not enforced. As a consequence, there are productions in
compiled.json
that have the sameklabel
(field, not the attribute), which makes processing productions more difficult.Possible fixes:
symbol
uniqueness. Drop#True
and#False
as they do not seem to be indispensable.compiled.json
.