This file documents the changes to KeY's structure and the philosophy behind them. The general goal is to achieve language independence for KeY, i.e., to no longer have data structure suited only for Java in the core. Anything Java-specific should be in a separate module.
- Added
ncore
module; this stands for "new core" and contains language-independent structures for terms, formulas, etc.- Created
SyntaxElement
interface; used for bothLanguageElement
andLogicElement
- Created
LanguageElement
interface; used for AST structure of target languages - Created
LogicElement
interface; currently only used forTerm
- Might be useful for splitting terms and formulas---if desired in the future
- Created
Term
interface; intended to replacecore.Term
- Moved
Name
,Named
, andSorted
toncore
- Created abstract, language-independent operator interfaces and abstract classes in
op
Modality
is changed to abstract class; must be implemented for each target language
- Language-independent
Sort
andAbstractSort
- No implementation of
Sort
inncore
- No concrete sorts (e.g.,
ANY
,FORMULA
)
- No implementation of
Modality
has akind
of typeModalityKind
, i.e., box, diamond, etc.Modality
references program
- Created
- Changes to
core
- Removed dependency of
Operator
onTerm
- Created
ldt.JavaDLTheory
, which now holdsANY
,FORMULA
, etc. sorts - Classes and interfaces now depend on
ncore
structures - Removed
AbstractSort
; makeSort
an abstract class and integrate oldAbstractSort
functionality - Move most
Term
methods toncore
- Move
Visitor
interface toncore
- Modality now references the program
- Add
JavaModalityKind
Term
no longer hasjavaBlock
field- Update matching and term creation
- Modality has new equality
- Equal iff kind and program are correct
- Removed dependency of
- Anything in
ncore
must be language-independent; no references to Java-specific things core
depends onncore
and introduces Java-specifics
- Create new core for language
- Create specific sorts and DLTheory
- Create AST interfaces (how?)