Giter Club home page Giter Club logo

first_order_logic_prover's Introduction

first_order_logic_prover's People

Contributors

lolisa avatar marisakirisame avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

first_order_logic_prover's Issues

bug in gentzen_system::is_valid

since the function explore a subtree until it terminate, and one of the subtree can be undecidable while the main tree is decidable(on correct code), this create unnecessary unhalted situation.

refactor need.

There are too many codes which do almost the same thing with propositional_calculus_proofer. For example, both of them do propositional calculus. This means a GREAT refractor, possibly one that will effect all the code( sound a lot of work but sadly is a must QAQ )

static assertion failed.

static_assert( std::is_convertible< or_and_or_not_type, negation_in_type >::value, "should be convertible" );

optimization needed

make branching share the same base sequent->that is, deducting sequent in base deduction tree effect the other tree derived from the same sequent.

I am deeply interested in this project. I have some newbie questions :)

  1. What source book, article, etc did you use to figure out how to code this?
  2. How does your resolution algorithm work?
  3. How does your proof checking algorithm work?
  4. Would you be interested in working on a project together that involves diagram chase-style proofs?

Just a brief overview in your answers is fine.

  1. Does the library have any memory leaks or with this algorithm area, or was it easy to rule out the possibility of those?
  2. Did you use OOP? When you create the objects such as ForAll, Prop, etc during runtime, are they created in a std::vector<Assertion*> stl structure, or what?
  3. Have you figured out how to convert to prenex-normal form?

In my application, at some point I will covert to prenex-normal form or even Skolem form, so that I can hash the formulas! That would mean near O(1) lookup time to see if P(x,y,z) matches Q in Q(x,y,z) => R(x,y,z) a theorem. You handle the variable matching via standardizing them from left-to-right with format indices %0, %1, %2, ...

so "forall a in A, f(a) in B" goes to "forall {0} in {1}, {2}({0}) in {3}". Now you have a standard form for the formulas!

Constants in a formula go through unchanged. You store the association in map<int, Variable> so that you can for example determine a theorem's conclusion in the users chosen variable alphabet.

Anyhow. As you can see, I really dig this project/type of project.

Make unit test run.

On my machine the unit test failed:
Running 5 test cases...
unknown location(0): fatal error in "gentzen_system_test": std::exception: boost::bad_get: failed value get using boost::get
unknown location(0): fatal error in "resolution_test": std::exception: boost::bad_get: failed value get using boost::get
../first_order_logic_prover/test.hpp(140): last checkpoint

*** 2 failures detected in test suite "Master Test Suite"
Press to close this window...

abstract to_CNF

sometimes CNF are better stored in set and sometimes list. Resolve this by making some functor argument for to_CNF

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.