GithubHelp home page GithubHelp logo

unify's Introduction

Unify

opencog singnet
CircleCI CircleCI

Unify, the AtomSpace unifier, is an expression unifier for the AtomSpace. Given two expressions containing variables, it finds all terms that provide groundings for those variables.

It is used as a foundation for the term rewriting engine (the Unified Rule Engine or URE for short) for OpenCog.

Building and Installing

Prerequisites

To build the Unifier you need to build and install the AtomSpace first, see Building-and-installing-the-AtomSpace for more information.

Building Unify

Be sure to install the pre-requisites first! Perform the following steps at the shell prompt:

    cd unify
    mkdir build
    cd build
    cmake ..
    make -j

Libraries will be built into subdirectories within build, mirroring the structure of the source directory root.

Unit tests

To build and run the unit tests, from the ./build directory enter (after building opencog as above):

    make -j test

Tests can be run in parallel as well:

    make -j test ARGS=-j4

Install

After building, you must install Unify

    sudo make install

Examples

Examples can be found in this repository in the examples directory.

More info

The primary documentation for the URE is here:

unify's People

Contributors

amebel avatar kasimebrahim avatar konstantin-t avatar leungmanhin avatar linas avatar maparent avatar ngeiswei avatar noskill avatar pennachin avatar rtreutlein avatar vsbogd avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

unify's Issues

Provide Atomese wrapper

Provide an Atomese wrapper for Unify.

So, here's the deal: (Unify A B) is more or less the same thing as (Meet (Identical A B)) . However... There are some conceptual differences. Unify allows the form:

  (Unify
     (VariableList left-vars...)
     (VariableList right-vars..)
     left-expr
     right-expr)

where left-vars... are the things to be taken as variables in left-expr. There's nothing like this for IdenticalLink or MeetLink. We can almost get the same thing by writing

  (Meet
     (VariableList left-vars... right-vars..)
     (Identical left-expr right-expr))

except that this can fail if (Variable "$X") appears in left-vars, and also appears in right-expr, but not in right-vars. There is no way to handle this case in any kind of easy or natural way using MeetLink. And that is how Unify is different from (Meet (Identical ..))

The proposal is then to provide two forms: either a simple form, with no vardecls

  (Unify
     left-expr
     right-expr)

or the full form, with vardecls.

  (Unify
     (VariableList left-vars...)
     (VariableList right-vars..)
     left-expr
     right-expr)

Maybe also provide (VariableListAuto) which means "yank them out for me".

What about the output? (next post)

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.