7.0.0-pre.2
Pre-release
Pre-release
Changes compared to 7.0.0-pre.1:
- BREAKING: Further breaking changes to sentence manipulation logic:
- Renamed CNFClauseExtensions in the
SentenceManipulation.Normalisation
namespace toNormalisationExtensions
. - Combined
CNFClauseExtensions
andTermExtensions
inVariableManipulation
namespace into a singleVariableManipulationExtensions
class. ToCNF
method removed from Sentence class, replaced by extension method inNormalisationExtensions
.- Sentence-accepting ctor for CNFSentence removed.
- Renamed CNFClauseExtensions in the
- Added first pass of a feature vector index implementation to a new
ClauseIndexing
namespace. It does need some (performance and robustness in the face of duplicates being added) tweaks and further testing prior to proper v7 release. Such changes are fairly likely to be breaking changes. But this is a good starting point. - Minor changes to
Unifier
class - trivial performance improvement when working with Predicates.
Changes compared to 6.0.0:
- BREAKING: Removed
Constant
type from the model. There has never been any real need for it - a constant is just a function with arity zero. Now that parsing is somewhat configurable (lessening the chance of confusion/issues occurring due to zero arity functions being specifiable with or without parentheses), there really is no excuse not to get rid of this. - BREAKING: significant re-organisation of sentence manipulation logic. Two motivations here. First, to tidy up the SentenceManipulation namespace, by moving concrete manipulation classes downward into one of two sub-namespaces (
Normalisation
andVariableManipulation
), leaving just the abstractions in SentenceManipulation itself. Second, to push the specifics of our CNF conversion logic (notably, the standardised variable and Skolem function identifier types) downward, so that they don't pollute our model. The CNFSentence and CNFClause types should be usable without needing to also use our conversion logic. If consumers want to normalise using their own logic/identifiers, that should be doable without confusion. Specifics:- CNFExplainer moved from SentenceFormatting to SentenceManipulation.Normalisation.
- CNFInspector moved from SentenceManipulation to SentenceManipulation.Normalisation.
- CNFClause.Restandardise method removed, replaced with extension methods in Normalisation namespace.
- SkolemFunctionIdentifier and StandardisedVariableIdentifier moved from SCFirstOrderLogic to SCFirstOrderLogc.SentenceManipulation.Normalisation.
- CNFClause unification extension methods moved from SentenceManipulation.Unification to SentenceManipulation.VariableManipulation, & class renamed from CNFClauseExtensions to
NormalisationExtensions
. ToCNF
method removed from Sentence class, replaced by extension method inNormalisationExtensions
.- Sentence-accepting ctor for CNFSentence removed.
- VariableSubstitution and MutableVariableSubstitution moved from SentenceManipulation to SentenceManipulation.VariableManipulation.
- Unifier moved from SentenceManipulation.Unification to SentenceManipulation.VariableManipulation.
- Added first pass of a feature vector index implementation to a new
ClauseIndexing
namespace. It does need some (performance and robustness in the face of duplicates being added) tweaks and further testing prior to proper v7 release. Such changes are fairly likely to be breaking changes. But this is a good starting point. - Added some extension methods for Terms to the new SentenceManipulation.VariableManipulation namespace. Specifically, added
IsInstanceOf(Term)
,IsGeneralisationOf(Term)
andOrdinalise()
. - Added an implicit conversion operator to OperableFunction, to eliminate a situation where the compiler complains due to ambiguity. Should probably also make several other similar additions to other operable types, but.. haven't bothered for now.
- Minor changes to
Unifier
class - trivial performance improvement when working with Predicates. - Package README update
- As always, some XML doc improvements