Skip to content

Releases: sdcondon/SCFirstOrderLogic

8.0.0

07 Jan 14:54

Choose a tag to compare

Changes compared to 7.7.1:

  • BREAKING: Across the library, changed "sentence" to "formula", since that's always what is meant. Wrote this library while learning the domain, and didn't fully appreciate the strict distinction between the two terms (its only a sentence if it has no free variables - which of course isn't necessarily the case for our "sentence" types).
  • BREAKING: Removed all the inference abstraction types from the "Inference" namespace. I'm going to put these into a new SCFirstOrderLogic.Inference.Abstractions package. Given the comparatively low download count of SCFirstOrderLogic.Inference.Basic, I strongly suspect people are doing their own thing when it comes to inference, and it is a bit weird and presumptuous to include these abstractions in the core package when there's no real reason why people should favour them over whatever makes the most sense for their application.
  • BREAKING: Removed all the "LinqKnowledgeBase" types. These were very minimal functionality (they just wrap an inner KB, adapting from passed LINQ expressions to formulae). Not going to bother including these in the new package (see above).
  • BREAKING: Moved the LINQ formula creation stuff from "LanguageIntegration" to "FormulaCreation.Linq" and renamed the FormulaFactory to LinqFormulaFactory. Without the LINQ KB abstractions complicating matters, it makes sense to consolidate the formula creation stuff a bit.
  • BREAKING: Renamed Literal.IsNegated to IsNegative - for consistency with IsPositive
  • BREAKING: Renamed SentenceManipulation.VariableManipulation namespace to SentenceManipulation.Substitution. Renamed VariableManipulationExtensions to SubstitutionExtensions.
  • BREAKING: Renamed VariableIdIgnorantEqualityComparer to VariableIdAgnosticEqualityComparer
  • BREAKING: Removed TFeature type param from feature vector indices, and instead just use the object type in vector components. Having a type param for this was needlessly constraining - we should only not have type compatibility between indices when the type of the associated values differs.
  • BREAKING: In FeatureVectorIndex, renamed TryGet to TryGetValue - which is more intuitive since its in line with IDictionary.
  • BREAKING: Removed obsolete SentenceParser (now FormulaParser) ctors.
  • CNFFormula fix - now throws if attempting to create empty formula with the ctor that accepts an enumerable of clauses
  • Added (optional) CancellationToken support to async visitor types in FormulaManipulation namespace.
  • Added (optional) CancellationToken support to async term and clause index types
  • Added a couple of ctors to CNFDefiniteClause.
  • Added ToFormula method to CNFFormula and CNFClause.
  • XML doc updates

Changes compared to 8.0.0-pre.3:

  • Just some very minor XML doc tweaks. I was planning to make some breaking changes to formatting (I don't like how the label scoping is implicit by formatter instance - I'd rather it be explicit, with, say, a MakeLabellingScope method on a formatter that is now intended as long-lived), but couldn't get it to a point where I was happy with it, so I'll come back to it at a later date.

8.0.0-pre.3

29 Dec 20:44

Choose a tag to compare

8.0.0-pre.3 Pre-release
Pre-release

Changes compared to 8.0.0-pre.2:

  • BREAKING: Removed all the inference abstraction types from the "Inference" namespace. I'm going to put these into a new SCFirstOrderLogic.Inference.Abstractions package. Given the comparatively low download count of SCFirstOrderLogic.Inference.Basic, I strongly suspect people are doing their own thing when it comes to inference, and it is a bit weird and presumptuous to include these abstractions in the core package when there's no real reason why people should favour them over whatever makes the most sense for their application.
  • BREAKING: Removed all the "LinqKnowledgeBase" types. These were very minimal functionality (they just wrap an inner KB, adapting from passed LINQ expressions to formulae). Not going to bother including these in the new package (see above).
  • BREAKING: Moved the LINQ formula creation stuff from "LanguageIntegration" to "FormulaCreation.Linq" and renamed the FormulaFactory to LinqFormulaFactory. Without the LINQ KB abstractions complicating matters, it makes sense to consolidate the formula creation stuff a bit.

Changes compared to 7.7.1:

  • BREAKING: Across the library, changed "sentence" to "formula", since that's always what is meant. Wrote this library while learning the domain, and didn't fully appreciate the strict distinction between the two terms (its only a sentence if it has no free variables - which of course isn't necessarily the case for our "sentence" types).
  • BREAKING: Removed all the inference abstraction types from the "Inference" namespace. I'm going to put these into a new SCFirstOrderLogic.Inference.Abstractions package. Given the comparatively low download count of SCFirstOrderLogic.Inference.Basic, I strongly suspect people are doing their own thing when it comes to inference, and it is a bit weird and presumptuous to include these abstractions in the core package when there's no real reason why people should favour them over whatever makes the most sense for their application.
  • BREAKING: Removed all the "LinqKnowledgeBase" types. These were very minimal functionality (they just wrap an inner KB adapting from passed LINQ expressions to formulae). Not going to bother including these in the new package (see above).
  • BREAKING: Moved the LINQ formula creation stuff from "LanguageIntegration" to "FormulaCreation.Linq" and renamed the FormulaFactory to LinqFormulaFactory. Without the LINQ KB abstractions complicating matters, it makes sense to consolidate the formula creation stuff a bit.
  • BREAKING: Renamed Literal.IsNegated to IsNegative - for consistency with IsPositive
  • BREAKING: Renamed SentenceManipulation.VariableManipulation namespace to SentenceManipulation.Substitution. Renamed VariableManipulationExtensions to SubstitutionExtensions.
  • BREAKING: Renamed VariableIdIgnorantEqualityComparer to VariableIdAgnosticEqualityComparer
  • BREAKING: Remove TFeature type param from feature vector indices, and instead just use the object type in vector components. Having a type param for this was needlessly constraining - we should only not have type compat between indices when the type of the associated values differs.
  • BREAKING: In FeatureVectorIndex, renamed TryGet to TryGetValue - which is more intuitive since its in line with IDictionary.
  • BREAKING: Removed obsolete SentenceParser (now FormulaParser) ctors.
  • CNFFormula fix - now throws if attempting to create empty formula with the ctor that accepts an enumerable of clauses
  • Added (optional) CancellationToken support to async visitor types in FormulaManipulation namespace.
  • Added (optional) CancellationToken support to async term and clause index types
  • Added a couple of ctors to CNFDefiniteClause.
  • Added ToFormula method to CNFFormula and CNFClause.
  • XML doc updates

8.0.0-pre.2

27 Dec 18:16

Choose a tag to compare

8.0.0-pre.2 Pre-release
Pre-release

Changes compared to 8.0.0-pre.1:

  • BREAKING: Removed TFeature type param from feature vector indices, and instead just use the object type for features in vector components. Having a type param for this was needlessly constraining - we should only not have type compatibility between indices when the type of the associated values differs.
  • BREAKING: Renamed Literal.IsNegated to IsNegative - for consistency with IsPositive
  • CNFFormula fix - now throws if attempting to create empty formula with the ctor that accepts an enumerable of clauses

Changes compared to 7.7.1:

  • BREAKING: Across the library, changed "sentence" to "formula", since that's always what is meant. Wrote this library while learning the domain, and didn't fully appreciate the strict distinction between the two terms.
  • BREAKING: Renamed Literal.IsNegated to IsNegative - for consistency with IsPositive
  • BREAKING: Renamed SentenceManipulation.VariableManipulation namespace to SentenceManipulation.Substitution. Renamed VariableManipulationExtensions to SubstitutionExtensions.
  • BREAKING: Renamed VariableIdIgnorantEqualityComparer to VariableIdAgnosticEqualityComparer
  • BREAKING: Remove TFeature type param from feature vector indices, and instead just use the object type in vector components. Having a type param for this was needlessly constraining - we should only not have type compat between indices when the type of the associated values differs.
  • BREAKING: In FeatureVectorIndex, renamed TryGet to TryGetValue - which is more intuitive since its in line with IDictionary.
  • BREAKING: In SteppableQuery, IsComplete and Result are no longer abstract. Instead, a protected SetResult method is present.
  • BREAKING: Removed obsolete SentenceParser (now FormulaParser) ctors.
  • CNFFormula fix - now throws if attempting to create empty formula with the ctor that accepts an enumerable of clauses
  • Added (optional) CancellationToken support to async visitor types in FormulaManipulation namespace.
  • Added (optional) CancellationToken support to async term and clause index types
  • Added a couple of ctors to CNFDefiniteClause.
  • Added ToFormula method to CNFFormula and CNFClause.
  • XML doc updates

8.0.0-pre.1

26 Dec 14:46

Choose a tag to compare

8.0.0-pre.1 Pre-release
Pre-release

Changes compared to 7.7.1:

  • BREAKING: Across the library, changed "sentence" to "formula", since that's always what is meant. Wrote this library while learning the domain, and didn't fully appreciate the strict distinction between the two terms.
  • BREAKING: Renamed SentenceManipulation.VariableManipulation namespace to SentenceManipulation.Substitution. Renamed VariableManipulationExtensions to SubstitutionExtensions.
  • BREAKING: Renamed VariableIdIgnorantEqualityComparer to VariableIdAgnosticEqualityComparer
  • BREAKING: In FeatureVectorIndex, renamed TryGet to TryGetValue - which is more intuitive since its in line with IDictionary.
  • BREAKING: In SteppableQuery, IsComplete and Result are no longer abstract. Instead, a protected SetResult method is present.
  • BREAKING: Removed obsolete SentenceParser (now FormulaParser) ctors.
  • Added (optional) CancellationToken support to async visitor types in FormulaManipulation namespace.
  • Added (optional) CancellationToken support to async term and clause index types
  • Added a couple of ctors to CNFDefiniteClause.
  • Added ToFormula method to CNFFormula and CNFClause.
  • XML doc updates

7.7.1

19 Apr 17:08

Choose a tag to compare

A long overdue fix - when parsing sentences, report completely unrecognised tokens as failures instead of just ignoring them.

7.7.0

17 Apr 13:02

Choose a tag to compare

  • SentenceParser additions. Probably not of use to many - but useful to me in docs site labs, so figure might be of use to others, too.
    • Added methods for parsing individual terms and declaration lists
    • Added overloads to allow for specification of the variables (beyond any in the sentence itself) that should be considered in scope when parsing
    • Added "TryParse.." methods
    • Added SentenceParserOptions record, for encapsulating parser config.
    • Underscores are now valid in identifiers
  • SentenceParser Parse methods now throw SyntaxErrorsException instead of ArgumentException when errors are encountered. Strictly speaking a breaking change, but not ready for another major version bump just yet - feel free to complain and I won't do it again. Still feel that download count is low enough that no-one will notice/care.
  • Minor performance improvement in FVI implementations - sort feature vectors a little more efficiently.
  • Minor performance improvement in CNFClause.IsHornClause

7.6.0

04 Apr 18:00

Choose a tag to compare

  • Improvements to SentenceFormatter. Now doesn't include brackets when not needed, and can combine multiple adjacent quantifications into one (e.g. will output "∀ x, y, .." instead of "∀ x, ∀ y, ..").
  • Added overloads for SentenceParser.Parse and ParseList that accept TextReader and Stream input.
  • Package tags updated

7.5.1

31 Mar 22:07

Choose a tag to compare

A fix to VariableManipulationExtensions. IsGeneralisationOf, IsInstanceOf, Subsumes and related methods could give the wrong result due to some idiotic overthinking during implementation.

7.5.0

09 Mar 14:24

Choose a tag to compare

Added async sentence and term visitor types - potentially of use in e.g. decorator KB/clause stores that do e.g. equality axiomisation.

7.4.0

01 Mar 16:48

Choose a tag to compare

Some minor improvements:

  • Some improvements to MaxDepthFeature and OccurenceCountFeature, to make the default feature creation and comparison logic a little more helpful:
    • MakeFeatureVector(CNFClause) methods now don't include features for SkolemFunctionIdentifiers in returned vectors.
    • MakeFeatureComparer() methods now return comparers that can handle EqualityIdentifier (considering it less informative than any other identifier type)
    • Added MakeFeatureVectorSelector(Func<object,bool>) methods, which return a feature vector creation delegate that uses the given filter to determine which identifiers should be included in the returned vector
  • Minor VariableSubstitution ApplyTo(CNFSentence) and ApplyTo(CNFClause) performance tweak