GithubHelp home page GithubHelp logo

sdcondon / scfirstorderlogic Goto Github PK

View Code? Open in Web Editor NEW
4.0 3.0 0.0 4.92 MB

Simple first-order logic implementation for .NET.

Home Page: https://sdcondon.net/SCFirstOrderLogic/

License: MIT License

C# 97.14% HTML 2.19% CSS 0.51% ANTLR 0.16%
artificial-intelligence first-order-logic inference-engine linq-expressions dotnet

scfirstorderlogic's Introduction

Hi there! ๐Ÿ‘‹

I'm a professional developer from London in the UK. C# is my go-to language these days. My day job typically involves fairly standard enterprise back-end rigamarole - Web APIs, messaging, cloud platforms, databases, and such. My personal time interests tend to be a little more algorithmic in nature, as is hopefully evidenced by the repos you'll find here. Below, you will find a somewhat categorised overview of the most interesting public ones.

Testing

  • FlUnit: A .NET test framework in which tests are defined with a fluent builder. Higher base level of complexity than method-based frameworks, but makes writing succinct, expressive tests (especially parameterised tests) a breeze. No more "arrange, act, assert" comments needed to clarify your test structure, and no more awkward attribute-based test argument retrieval. I use it for all of my other projects, and while its not exactly taking over the world, download counts on NuGet suggest that at least some other people like it too:

AI and AI-adjacent

  • NuGet version (SCClassicalPlanning) SCClassicalPlanning: Basic but fully functional and documented classical planning implementations for .NET. Somewhat influenced by chapter 10 of "Artificial Intelligence: A Modern Approach" (Russell & Norvig).
  • NuGet version (SCFirstOrderLogic) SCFirstOrderLogic: Basic but fully functional and documented first-order logic implementations for .NET. Heavily influenced by chapters 8 and 9 of "Artificial Intelligence: A Modern Approach" (Russell & Norvig).
  • SCPropositionalLogic: Precursor to SCFirstOrderLogic. Basic but fully functional and documented propositional logic implementations. Based on chapter 7 of "Artificial Intelligence: A Modern Approach" (Russell & Norvig).
  • SCGraphTheory: There are obviously a large number of graph theory implementations out there for .NET. None of them really grabbed me though. In particular, I think graph theory is a domain that benefits greatly from a completely separate abstractions package - and it looks like mine's the only one out there that does this. Also perhaps worth noting that one of the most popular (QuickGraph) doesn't seem to have an abstraction for vertices. Which I thought was odd. There's probably a good reason, and I didn't spend very long looking at it, but.. in the end I fancied creating my own, underpinned by a nice, simple, separate abstraction.
    • NuGet version (SCGraphTheory.Abstractions) SCGraphTheory.Abstractions: Abstractions to facilitate graph algorithms that don't depend on a particular graph representation
    • NuGet version (SCGraphTheory.AdjacencyList) SCGraphTheory.AdjacencyList: Adjacency list implementation of the interfaces in SCGraphTheory.Abstractions
    • NuGet version (SCGraphTheory.Search) SCGraphTheory.Search: Search algorithms that work against any implementation of the interfaces found in SCGraphTheory.Abstractions
  • NuGet version (SCSetTrie) SCSetTrie: A few set trie implementations for .NET. That is, data structures for the storage of sets that facilitate fast retrieval of subsets and supersets of a query term.

Graphics

  • MyOTKE: I got interested in how OpenGL worked at one point, so I made this. A very basic .NET graphics library built on top of the Open Toolkit.
  • NuGet version (SharpFontStandard.Runtimes.WindowsOnly) SharpFontStandard.Runtimes: SharpFontStandard is a managed wrapper for FreeType. For it to work, you obviously need the native libraries at runtime, which it very sensibly doesn't bundle. However, all of the other available packages that exist to provide the native libraries seem to include them as package content, which is entirely the wrong approach, and doesn't work well when the thing that needs it is a library rather than an app. So I made this, which does things the right way - by utilising NuGet's support for runtime dependencies.

I'm occasionally moved to create a gist when I come up with something intreresting that is small enough to express in gist form:

  • SqlServerDockerFile: Dockerfile for a SQL server instance built to include a database defined in a given SQL script. Created as part of demo-ing an improved (more isolated) E2E testing approach for work.
  • DacPacDockerFile: Dockerfile for a SQL server instance built to include a database defined in a given SQL project. Created as part of demo-ing an improved (more isolated) E2E testing approach for work.
  • LinqDecomposer: Uses LINQ expressions to decompose and recompose objects, storing each property in a different backing store.
  • ExtensionScripts: Basic example of using MEF and the Roslyn scripting API to create a scriptable extension system.
  • Trie: Generic prefix tree, implementing IDictionary<TKey, TValue>.
  • BlockingCollectionBatchPipeline: A simple periodic batching pipeline using BlockingCollections

scfirstorderlogic's People

Contributors

sdcondon avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

scfirstorderlogic's Issues

Hello, there are some errors in the code.

Hello, thank you for your code sharing, I think it will be very helpful for me.
But I found some errors in the code:
SentenceParser.cs(114,79): error CS0246: The type or namespace name 'FirstOrderLogicParser' could not be found (are you missing a using directive or an assembly reference?)
SentenceParser.cs(74,48): error CS0246: The type or namespace name 'FirstOrderLogicBaseVisitor<>' could not be found (are you missing a using directive or an assembly reference?)
SentenceParser.cs(3,42): error CS0234: The type or namespace name 'Antlr' does not exist in the namespace 'SCFirstOrderLogic.SentenceCreation' (are you missing an assembly reference?)

Also, the FirstOrderLogicLexer is not found.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.