Coder Social home page Coder Social logo

zachjhansen / zanthem-next Goto Github PK

View Code? Open in Web Editor NEW

This project forked from potassco/anthem-next

0.0 0.0 0.0 658 KB

A translator between answer set programs and first-order logic

License: MIT License

Ruby 0.21% Python 0.20% Rust 99.11% OpenEdge ABL 0.48%

zanthem-next's People

Contributors

teiesti avatar zachjhansen avatar

zanthem-next's Issues

Problem sequence naming

Currently the Problem::from_components and Problem::from_derivation_components will overwrite files in out-dir since all problems in the sequence have the same name - need to add an iterator e.g. problem_1, problem_2, etc.

Vladimir's Request #2 (Input Declarations)

The issue you encountered was because currently every placeholder needs its own line, e.g.

Input: a$i.
Input: b$i.

Collapsing these statements onto one line is a work-in-progress improvement.

Inductive lemma naming

If the user does not name an inductive lemma F, then the TPTP format will produce

tff( _base_case, conjecture, F).

This is an error - Vampire does not accept formula names beginning with an underscore. So if the formula is unnamed, then the inductive lemma should just be named "base_case" rather than "_base_case"

Vladimir's Request #1 (Function Constants)

Hi Zach,

By making function constants explicitly sorted, parsing specs or lemmas can be accomplished independent of context (the provided user guide).

Let’s try to find a way to achieve your goal—parsing formulas independent of context—without the unfortunate side effect of introducing two different names for the same placeholder.

What if we treat every placeholder as a constant of the sort “general”? That will make p(n+1) syntactically incorrect even when n is a placeholder, but this is okay; we can write

exists N ( N = n and p(N+1) ).

This is the same trick that we use with general variables: since p(X+1) is not allowed, we write

exists N ( N = X and p(N+1) ).

The statement

input: n$i.

(or n -> integer, as in the old antem—whichever you like better) will have the same meaning as

input n.
assumption: exists N (N = n).

As I understand, you can help vampire to speed up search by using the sort integer when you represent n in the TPTP language. But this is an implementation detail, not related to the meaning of the input statement.

What do you think?

Best,
Vladimir

Making definitions universal

Definitions should always be universal - or logic should be added to address the following scenario:

definition(forward): p <-> q.
definition(backward): g <-> p.

this is an invalid sequence of definitions since g depends on p, yet the definition of p is not defined for the backward direction.

Vladimir's Request #5: Conditional Inductive Lemmas

forall N$ (N$ >= 1 -> (not exists M$ sqrtb(M$) -> N$*N$ <= b$i))

This formula is not long, but to us humans it looks a little strange. It will be easier to understand what we are actually proving by induction is we rewrite that formula as

not exists M$ sqrtb(M$) -> forall N$ (N$ >= 1 -> N$*N$ <= b$i).

This observation suggests that it would be useful to allow “conditional” inductive lemmas:

C -> forall N$ ( … -> … ),

where C is a formula without free variables. It should be processed exactly as

forall N$ ( C and … -> … ).

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.