Skip to content

7.0.0-pre.2

Pre-release
Pre-release
Compare
Choose a tag to compare
@sdcondon sdcondon released this 27 Aug 12:27
· 43 commits to main since this release

Changes compared to 7.0.0-pre.1:

  • BREAKING: Further breaking changes to sentence manipulation logic:
    • Renamed CNFClauseExtensions in the SentenceManipulation.Normalisation namespace to NormalisationExtensions.
    • Combined CNFClauseExtensions and TermExtensions in VariableManipulation namespace into a single VariableManipulationExtensions class.
    • ToCNF method removed from Sentence class, replaced by extension method in NormalisationExtensions.
    • Sentence-accepting ctor for CNFSentence removed.
  • 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 and VariableManipulation), 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 in NormalisationExtensions.
    • 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) and Ordinalise().
  • 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