Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

rover_prover

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rover_prover

  • 0.1.1
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

Rover Rover is an automated theorem prover for first-order logic written in Ruby.It is translation of theorem-prover from Python. For any provable formula, this program is guaranteed to find the proof (eventually). However, as a consequence of the negative answer to Hilbert's Entscheidungsproblem, there are some unprovable formulae that will cause this program to loop forever.

To get started, please gem install rover_prover:

$ rover_prover
Rover: First-Order Logic Theorem Prover
2019 Koki Ryu
2014 Stephan Boyer
Terms:

  x               (variable)
  f(term, ...)    (function)

Formulae:

  P(term)        (predicate)
  not P          (complement)
  P or Q         (disjunction)
  P and Q        (conjunction)
  P implies Q    (implication)
  forall x. P    (universal quantification)
  exists x. P    (existential quantification)

Enter formulae at the prompt. The following commands are also available for manipulating axioms:

  axioms              (list axioms)
  lemmas              (list lemmas)
  axiom <formula>     (add an axiom)
  lemma <formula>     (prove and add a lemma)
  remove <formula>    (remove an axiom or lemma)
  reset               (remove all axioms and lemmas)

Enter 'exit' command to exit the prompt.

Rover>

Example session:

Rover> P or not P
0.  ⊢ (P ∨ ¬P)
1.  ⊢ P, ¬P
2. P ⊢ P
Formula proven: (P ∨ ¬P)

Rover> P and not P
0.  ⊢ (P ∧ ¬P)
1.  ⊢ ¬P
2. P ⊢
Formula unprovable: (P ∧ ¬P)

Rover> forall x. P(x) implies (Q(x) implies P(x))
0.  ⊢ (∀x. (P(x) -> (Q(x) -> P(x))))
1.  ⊢ (P(v1) -> (Q(v1) -> P(v1)))
2. P(v1) ⊢ (Q(v1) -> P(v1))
3. P(v1), Q(v1) ⊢ P(v1)
Formula proven: (∀x. (P(x) -> (Q(x) -> P(x))))

Rover> exists x. (P(x) implies forall y. P(y))
0.  ⊢ (∃x. (P(x) -> (∀y. P(y))))
1.  ⊢ (∃x. (P(x) -> (∀y. P(y)))), (P(t1) -> (∀y. P(y)))
2.  ⊢ (∃x. (P(x) -> (∀y. P(y)))), (P(t1) -> (∀y. P(y))), (P(t2) -> (∀y. P(y)))
3. P(t1) ⊢ (∃x. (P(x) -> (∀y. P(y)))), (P(t2) -> (∀y. P(y))), (∀y. P(y))
4. P(t1) ⊢ (∃x. (P(x) -> (∀y. P(y)))), (P(t2) -> (∀y. P(y))), (∀y. P(y)), (P(t3) -> (∀y. P(y)))
5. P(t1), P(t2) ⊢ (∃x. (P(x) -> (∀y. P(y)))), (∀y. P(y)), (P(t3) -> (∀y. P(y))), (∀y. P(y))
6. P(t1), P(t2) ⊢ (∃x. (P(x) -> (∀y. P(y)))), (P(t3) -> (∀y. P(y))), (∀y. P(y)), P(v1)
7. P(t1), P(t2) ⊢ (∃x. (P(x) -> (∀y. P(y)))), (P(t3) -> (∀y. P(y))), (∀y. P(y)), P(v1), (P(t4) -> (∀y. P(y)))
8. P(t1), P(t2), P(t3) ⊢ (∃x. (P(x) -> (∀y. P(y)))), (∀y. P(y)), P(v1), (P(t4) -> (∀y. P(y))), (∀y. P(y))
9. P(t1), P(t2), P(t3) ⊢ (∃x. (P(x) -> (∀y. P(y)))), P(v1), (P(t4) -> (∀y. P(y))), (∀y. P(y)), P(v2)
10. P(t1), P(t2), P(t3) ⊢ (∃x. (P(x) -> (∀y. P(y)))), P(v1), (P(t4) -> (∀y. P(y))), (∀y. P(y)), P(v2), (P(t5) -> (∀y. P(y)))
11. P(t1), P(t2), P(t3), P(t4) ⊢ (∃x. (P(x) -> (∀y. P(y)))), P(v1), (∀y. P(y)), P(v2), (P(t5) -> (∀y. P(y))), (∀y. P(y))
t4 = v1
Formula proven: (∃x. (P(x) -> (∀y. P(y))))

Rover> axiom forall x. Equals(x, x)
Axiom added: (∀x. Equals(x, x))

Rover> axioms
(∀x. Equals(x, x))

Rover> lemma Equals(a, a)
0. (∀x. Equals(x, x)) ⊢ Equals(a, a)
1. (∀x. Equals(x, x)), Equals(t1, t1) ⊢ Equals(a, a)
t1 = a
Lemma proven: Equals(a, a)

Rover> lemmas
Equals(a, a)

Rover> remove forall x. Equals(x, x)
Axiom removed: (∀x. Equals(x, x))
Dependent axioms are also removed:
Equals(a, a)

FAQs

Package last updated on 02 Aug 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc