Git Product home page Git Product logo

opennars's Introduction

OpenNARS Logo Open-NARS is the open-source version of NARS, a general-purpose AI system, designed in the framework of a reasoning system. This project is an evolution of the v1.5 system. The mailing list discusses both its theory and implementation.

Build Status codecov Codacy Badge

How to build OpenNARS

Using mvn:

for each of the projects:

https://github.com/opennars/opennars-parent.git     
https://github.com/opennars/opennars.git     
https://github.com/opennars/opennars-lab.git     
https://github.com/opennars/opennars-applications.git     
https://github.com/opennars/opennars-gui.git

git clone 'project'
cd 'project_dir'
mvn clean install 

optionally append -Dmaven.javadoc.skip=true to skip documentation generation

cd 'project_dir'
mvn exec:java

Alternatively, using IntelliJ IDE:

Install git https://git-scm.com/downloads

Install OpenJDK 11 https://jdk.java.net/11/

Install community edition IntelliJ https://www.jetbrains.com/idea/download/

Checkout https://github.com/opennars/opennars.git

Checkout https://github.com/opennars/opennars-lab.git

Checkout https://github.com/opennars/opennars-applications.git

You can either checkout within Intellij or use the Github desktop (available from the github clone button in the repo)

Build opennars

If this is a fresh install you will be prompted to enter the jdk path (where you installed it above) You may be prompted to update maven dependencies - do this if prompted

Build opennars-lab

Select org.opennars.lab.launcher.Launcher as the main entry point

Build opennars-applications

Select org.opennars.applications.Launcher

Application Launchers

The launchers are the easiest way to run the various apps

opennars-lab

Main GUI - Main user interface for NARS

Test Chamber - Simulation environment for testing behaviours

Micro world	- Behaviour learning by simple insect like creature

NAR Pong - The classic pong game

Language Lab - For experimenting with parts of speech (POS) and grammar learning

Perception Test - Pattern matching experiment

Prediction Test - Predicts a waveform - Can be run directly from Intellij (Current issue with running with launcher)

Vision - Vision experiment - Can be run direcly from Intellij (Current issue with running with launcher)

opennars-applications

Main GUI - A simple MIT license GUI

Crossing - A smart city traffic intersection simulation

Identity mapping - An experimental setup for testing aspects of Relations Frame Theory (RFT)

Opennars Core is run directly by the Lab and Applications Launchers.

Example Narsese files

Here is a link to some Narses examples including:

Toothbrush example - how to use a toothbrush to undo a screw?

Detective example - who is the criminal?

https://github.com/opennars/opennars/tree/master/src/main/resources/nal/application

Theory Overview

Non-Axiomatic Reasoning System (NARS) processes tasks imposed by its environment, which may include human users or other computer systems. Tasks can arrive at any time, and there is no restriction on their contents as far as they can be expressed in Narsese, the I/O language of NARS.

There are several types of tasks:

  • Judgment - To process it means to accept it as the system's belief, as well as to derive new beliefs and to revise old beliefs accordingly.
  • Question - To process it means to find the best answer to it according to current beliefs.
  • Goal - To process it means to carry out some system operations to realize it.

As a reasoning system, the architecture of NARS consists of a memory, an inference engine, and a control mechanism.

The memory contains a collection of concepts, a list of operators, and a buffer for new tasks. Each concept is identified by a term, and contains tasks and beliefs directly on the term, as well as links to related tasks and terms.

The inference engine carries out various type of inference, according to a set of built-in rules. Each inference rule derives certain new tasks from a given task and a belief that are related to the same concept.

The control mechanism repeatedly carries out the working cycle of the system, generally consisting of the following steps:

  1. Select tasks in the buffer to insert into the corresponding concepts, which may include the creation of new concepts and beliefs, as well as direct processing on the tasks.
  2. Select a concept from the memory, then select a task and a belief from the concept.
  3. Feed the task and the belief to the inference engine to produce derived tasks.
  4. Add the derived tasks into the task buffer, and send report to the environment if a task provides a best-so-far answer to an input question, or indicates the realization of an input goal.
  5. Return the processed belief, task, and concept back to memory with feedback.

All the selections in steps 1 and 2 are probabilistic, in the sense that all the items (tasks, beliefs, or concepts) within the scope of the selection have priority values attached, and the probability for each of them to be selected at the current moment is proportional to its priority value. When an new item is produced, its priority value is determined according to its parent items, as well as the type of mechanism that produces it. At step 5, the priority values of all the involved items are adjusted, according to the immediate feedback of the current cycle.

At the current time, the most comprehensive description of NARS are the books Rigid Flexibility: The Logic of Intelligence and Non-Axiomatic Logic: A Model of Intelligent Reasoning . Various aspects of the system are introduced and discussed in many papers, most of which are available here.

Beginners can start at the following online materials:

Contents

  • core - reasoning engine
  • nal - examples/unit tests

The core is derived from the code of Pei Wang.

Run Requirements

  • Java 8+ (OpenJDK 10 recommended)

Example Files

For an overview of reasoning features, see working examples (tests) in the nal folder, also explained in SingleStepTestingCases and MultiStepExamples.

Development Requirements

  • Maven

Links

opennars's People

Contributors

1h1e1s1 avatar biaktfn avatar freemo avatar hjorleifurh avatar hmlatapie avatar patham9 avatar ptrman avatar tonylo1 avatar trevershick avatar yuhongsun96 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  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  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

opennars's Issues

Chained Variable Substitution(?) doesn't work

' database with operations associated with words
< (, a-executed, word-opA) --> word-for-operation >.
< (
, b-executed, word-opB) --> word-for-operation >.

< (*, c-executed, word-opC) --> word-for-operation >.

< (&&, < (, #executedA, #wordA) --> word-for-operation >, < (, #executedB, #wordB) --> word-for-operation > )==> <(,(,#wordA,word-then,#wordB), (&/, #executedA, #executedB) ) --> REPRESENT>>.
'question (works)
''<(,(,word-opA,word-then,word-opB), ? ) --> REPRESENT>?

< (&&, <(,(,#wordA,#middleWord,#wordB), #innerSequence ) --> REPRESENT>,< (, #executeCondition, #wordExecute) --> word-for-operation > )==> < (, (*,#wordA,#middleWord,#wordB,word-execute,#wordExecute ), < #innerSequence =/> #executeCondition > ) --> REPRESENT>>.

' question
<(,(,word-opA,word-then,word-opB,word-execute,word-opB), ? ) --> REPRESENT>?

answer should be
<(,(,word-opA,word-then,word-opB,word-execute,word-opB), < (&/, a-execute, b-execute) =/> b-execute > ) --> REPRESENT>.

but nars doesn't derive it after ~5000 steps

Unexpected truth value update in temporal Analogy

IN: <<robin --> bird> <|> <robin --> animal>>. 
IN: <<robin --> [flying]> =\> <robin --> bird>>.

<<robin --> [flying]> =\> <robin --> animal>>. %1.00;0.81%
<<robin --> [flying]> =\> <robin --> animal>>. %1.00;0.81%

<<robin --> [flying]> =\> <robin --> bird>>. %1.00;0.73% <--(Unexpected)

Confidence should not be updated to 0.73. 

conditions and loops

Introduction of conditions and loops may be useful for high level thought processes or primitives of such.

Two basic primitives we already discussed are conditions and loops.

= Conditions

Conditions are used to feed goals depending on an assignment/value of a term (for example with a PART) ex:
(#, codepath, 0). // Path0 will be the goal

Switch is an op which emits a goal based on the assignment:

^switch(codepath, Path0, Path1, Path2)!

= Loops

ExecuteTimes(2,Op())!

in narsese:

<(,{SELF},2,<(,{SELF},blub) --> ^testop>) --> ^executeTimes>!

Documentation (nars core)

The job is here:

  1. Remove all dead code from nars.core.
  2. Remove unnecessary new lines, the policy should be as it was in 1.5.5 here.
  3. Add comprehensive documentation to all functions in nars.core, with proper references to pages in related publications.
  4. Generate Javadoc or other literate programming tool based documentation of nars.core.

use fewer bits for termlink prefix elements

currently 8 bits are used for each component however since there are currently less than 10 we can use as few as 4 bits each. this not only saves a (negliglbe) amount of memory but speeds comparisons and improves hashing

Add all past and current developers to the POM as well as contributors file.

For now im just adding my own name to the pom and contributors file as a developer. We need to add all past developers however to ensure they get credit. The example line in the pom is as follows:

    <developers>
        <developer>
            <id>JeffreyPhillipsFreeman</id>
            <name>Jeffrey Phillips Freeman</name>
            <email>[email protected]</email>
            <url>http://JeffreyFreeman.me</url>
            <organization>Syncleus</organization>
            <organizationUrl>http://www.syncleus.com</organizationUrl>
            <roles>
                <role>Chief Technology Officer</role>
                <role>Project Owner</role>
                <role>Developer</role>
            </roles>
            <timezone>-5</timezone>
        </developer>
    </developers>

Failed testcases in temporal analogy

             IN: <<robin --> bird> </> <robin --> animal>>. 
             IN: <<robin --> [flying]> =/> <robin --> bird>>.

Expected output :

             OUT: <<robin --> [flying]> =/> <robin --> animal>>.
             OUT: <<robin --> animal> =\> <robin --> bird>>.

Actual:

            No output

---------------------------------------------------------------------------------------------

           IN: <<robin --> bird> </> <robin --> animal>>. 
           IN:<<robin --> bird> =\> <robin --> [flying]>>.

Expected output:

           OUT: <<robin --> [flying]> =/> <robin --> animal>>.
           OUT: <<robin --> animal> =\> <robin --> bird>>.

Actual:

           No output

off-heap state access and boost fusion

I wanted to see if i could make the java-side build as simple as humanly possible for at least a benchmark cut of opennars to test a notion i have to reify beans into BytebUffer expanses projected onto slabs.

A follow on would be to utilize the slabs as a proto dialect; and build a reference u-tree spirit parser for the narsese grammars for c++ side event interrop with proto to-from java.

https://github.com/jnorthrup/prautobeans is a maven-plugin based proto IDL parserto generate java interface proxies ( GWT Autobeans/Splittable) with bytebuffer backing stores, a complimentary library https://github.com/jnorthrup/drunken-wallhack is able to map GWT Autobeans to zero-copy json input parsed on the fly -- with two flavors of stateful and attribute-seek-only implementations, both significantly faster than gson at large input.

the first question is:
does mavenization fit the long-term of opennars?

i am for maven because there's potential to bring along some portable and robust c++ artifacts using boost headers-as-libraries in maven compilation, and if any part of that needs help being cleaner i might hack it the way it needs to be upstream in maven-native-plugin if it made sense and enabled other projects to work with this one. the motorola bluez driver project has immaculate c++ build execution under maven, it's very clean to bring over.

Wiki Image Scratchpad

_scratchpad_

github issues allow image pasting. github wiki does not. link things from issues into the wiki conveniently to host images.

the nars grammar
image

BudgetValue.revise results in (very slightly) negative durability value

in the meantime, setting to zero to prevent RuntimeException in ShortFloat

ERR: java.lang.RuntimeException: BudgetValue.revise resulted in negative durability; set to 0; aveAri(dif=-1.00016594E-4, task.getDurability=0.0) = -5.0008297E-5 [nars.inference.BudgetFunctions.revise(BudgetFunctions.java:131), nars.inference.LocalRules.revision(LocalRules.java:90), nars.entity.Concept.processJudgment(Concept.java:168), nars.entity.Concept.directProcess(Concept.java:133), nars.storage.Memory.immediateProcess(Memory.java:604), nars.storage.Memory.processNewTask(Memory.java:539), nars.storage.Memory.workCycle(Memory.java:509), nars.core.NAR.workCycle(NAR.java:333), nars.core.NAR.tick(NAR.java:355), nars.core.NAR.step(NAR.java:216), nars.core.NARRun.run(NARRun.java:147), nars.core.NARRun.runInference(NARRun.java:86), nars.core.NARRun.main(NARRun.java:68)]

Test cases (nars_core)

Before adding new testcases:

  1. Make the test cases runnable from the IDE test run directly (not demanding to click on the specific test file anymore)
  2. Update the NAL7/8/9 testcases to the current handling to make them pass again too.
  3. Add the missing checks in core that currently lead to some caught exceptions. (DEBUG=true helps here)

Then:
4. Add tests for the list term connector and term indices, and other testcases for NAL.
5. Add tests for memory and control.

Failed testcases Temporal Analogy

<(&/,<(*,Robot_01,Gear) --> D>,<(*,Robot_01,Accelerator) --> Step_on>) 
<|> 
(&/,<(*,Robot_01,feet) --> D>,<(*,Robot_01,Car_02) --> Step_on>)>. 

<(&/,<(*,Robot_01,Car_02) --> Turn_on>,<(*,Robot_01,Hand_Brake) --> Lift>) 
=\> 
(&/,<(*,Robot_01,Gear) --> D>,<(*,Robot_01,Accelerator) --> Step_on>)>.

Unexpected output: <(&/, <(*, Robot_01, Gear) --> D>, <(*, Robot_01, Accelerator) --> Step_on>) <|> (&/, <Gear --> (/, D, Robot_01,_)>, <(*, Robot_01, Accelerator --> Step_on>)> %1.00, 0.81%

--------------------------------------------------------------------------------------------------------

BudgetValue.revise results in (very slightly) negative durability value

in the meantime, setting to zero to prevent RuntimeException in ShortFloat

ERR: java.lang.RuntimeException: BudgetValue.revise resulted in negative durability; set to 0; aveAri(dif=-1.00016594E-4, task.getDurability=0.0) = -5.0008297E-5 [nars.inference.BudgetFunctions.revise(BudgetFunctions.java:131), nars.inference.LocalRules.revision(LocalRules.java:90), nars.entity.Concept.processJudgment(Concept.java:168), nars.entity.Concept.directProcess(Concept.java:133), nars.storage.Memory.immediateProcess(Memory.java:604), nars.storage.Memory.processNewTask(Memory.java:539), nars.storage.Memory.workCycle(Memory.java:509), nars.core.NAR.workCycle(NAR.java:333), nars.core.NAR.tick(NAR.java:355), nars.core.NAR.step(NAR.java:216), nars.core.NARRun.run(NARRun.java:147), nars.core.NARRun.runInference(NARRun.java:86), nars.core.NARRun.main(NARRun.java:68)]

Separate Window for Answers to be listed

Please can we have a separate window to display inference output answers. It is a real pain to have to keep scrolling up the output window to see if an answer has been found.

Input channels (nars_core)

Some observations:

One one hand it should remain that all input comes from addInput(string); method,
but on the other hand not all input modalities can be processed by the general policy of event bag very effectively. That raises the question:
How to allow modality-specific control strategies, "custom channels" which only report their highest priority results into event bag, while being addressed by addInput without complicating the interface?

Idea:
Allow certain sensory input terms to be registered to go into a certain input channel.
These then don't enter NARS directly, but enter the custom channel instead, and are processed in that channel using a custom policy. The best results will be retrieved from the NARS instance automatically for transition to event bag.

Configure mailing list addresses and add to parent pom.

We currently have google groups setup. This supports posting and receiving notifications through a special mailing list. Configure this to go through opennars.org domain and then add it to the opennars parent pom as follows:

    <mailingLists>
        <mailingList>
            <name>OpenNARS Discussion Forumn</name>
            <subscribe>[email protected]</subscribe>
            <unsubscribe>[email protected]</unsubscribe>
            <post>[email protected]</post>
            <archive>https://groups.google.com/forum/#!forum/open-nars</archive>
        </mailingList>
    </mailingLists>

Failed testcases in Temporal Deduction with variable

IN: <(&&,<$x --> [boy]>,<$x --> [girl]>) =\> (&&,<$x --> [jumping]>,<$x --> [with-wings]>)>. 
IN: <(&&,<$y --> [flying]>,<$y --> bird>) =\> (&&,<$y --> [boy]>,<$y --> [girl]>)>.

Expected outputs:

OUT: <(&&,<$1 --> [flying]>,<$1 --> bird>) =\>  (&&,<$1 --> [jumping]>,<$1 --> [with-wings]>)>.
OUT: <(&&,<$1 --> [jumping]>,<$1 --> [with-wings]>) =/> (&&,<$1 --> [flying]>,<$1 --> bird>)>.

Actual:

No outputs

--------------------------------------------------------------------------------------------------------------

IN: <(&/,<$x --> [boy]>,<$x --> [girl]>) =\> (&/,<$x --> [flying]>,<$x --> [with-wings]>)>. 
IN: <(&/,<$y --> [with-Beak]>,<$y --> bird>) =\> (&/,<$y --> [boy]>,<$y --> [girl]>)>.

Expected outputs:

OUT: <(&/,<$x --> [with-Beak]>,<$x --> bird>) =\> (&/,<$x --> [flying]>,<$x --> [with-wings]>)>.
OUT: <(&/,<$x --> [flying]>,<$x --> [with-wings]>) =/> (&/,<$x --> [with-Beak]>,<$x --> bird>)>.

Actual:

No outputs

complete webserver interface(s)

should have standard REST and WebSocket interface. improve UI design.

the REST interface will allow OpenNARS to be used as a component in websites

Restructure packages and decide on new structure.

Currently the root package of "nars" is non-standard. Standard practice is to name the root package off a domain name you own and thus guarantees uniqueness across the java universe. I suggest org.opennars.*

fix javascript operator

js evaluation output is however coded wrongly, it should be <(^js,"1+1","2") --> js_evaluation>. and not <(*,(^js,"1+1",#1),"2") --> js_evaluation>. like Sehs operator feedbacks

Split OpenNARS to repros/packages/jar's

The OpenNARS core should have its own project. I would suggest that this openNARS project is stripped away of all non-core functionality so that we still have all commit history of the core. All other functionality (Lab/GUI/etc) should get transfered into its own repro(s).

This makes it way easier to use OpenNARS/core in other projects.

Maven build failure: ClassNotFoundException: net.bytebuddy.dynamic.ModifierResolver

With Oracle JDK 1.8.0_74 and commit eee2158

$ mvn install
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.430 s
[INFO] Finished at: 2016-02-15T14:30:16+01:00
[INFO] Final Memory: 29M/404M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19:test (default-test) on project nars_util: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:2.19:test failed: There was an error in the forked process
[ERROR] org.testng.TestNGException:
[ERROR]
[ERROR] An error occurred while instantiating class com.github.fge.grappa.matchers.join.JoinMatcherBuildTest: net/bytebuddy/dynamic/ModifierResolver
[ERROR] at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:394)
[ERROR] at org.testng.internal.ClassHelper.createInstance(ClassHelper.java:295)
[ERROR] at org.testng.internal.ClassImpl.getDefaultInstance(ClassImpl.java:118)
[ERROR] at org.testng.internal.ClassImpl.getInstances(ClassImpl.java:183)
[ERROR] at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:128)
[ERROR] at org.testng.TestRunner.initMethods(TestRunner.java:416)
[ERROR] at org.testng.TestRunner.init(TestRunner.java:242)
[ERROR] at org.testng.TestRunner.init(TestRunner.java:212)
[ERROR] at org.testng.TestRunner.<init>(TestRunner.java:159)
[ERROR] at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:549)
[ERROR] at org.testng.SuiteRunner.init(SuiteRunner.java:161)
[ERROR] at org.testng.SuiteRunner.<init>(SuiteRunner.java:114)
[ERROR] at org.testng.TestNG.createSuiteRunner(TestNG.java:1290)
[ERROR] at org.testng.TestNG.createSuiteRunners(TestNG.java:1277)
[ERROR] at org.testng.TestNG.runSuitesLocally(TestNG.java:1131)
[ERROR] at org.testng.TestNG.run(TestNG.java:1048)
[ERROR] at org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:132)
[ERROR] at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.executeMulti(TestNGDirectoryTestSuite.java:224)
[ERROR] at org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:113)
[ERROR] at org.apache.maven.surefire.testng.TestNGProvider.invoke(TestNGProvider.java:146)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.invokeProviderInSameClassLoader(ForkedBooter.java:286)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:240)
[ERROR] at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:121)
[ERROR] Caused by: java.lang.NoClassDefFoundError: net/bytebuddy/dynamic/ModifierResolver
[ERROR] at org.mockito.internal.creation.bytebuddy.CachingMockBytecodeGenerator.<init>(CachingMockBytecodeGenerator.java:20)
[ERROR] at org.mockito.internal.creation.bytebuddy.ByteBuddyMockMaker.<init>(ByteBuddyMockMaker.java:22)
[ERROR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[ERROR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[ERROR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[ERROR] at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
[ERROR] at java.lang.Class.newInstance(Class.java:442)
[ERROR] at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:33)
[ERROR] at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:12)
[ERROR] at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:11)
[ERROR] at org.mockito.internal.util.MockUtil.<clinit>(MockUtil.java:23)
[ERROR] at org.mockito.internal.MockitoCore.<init>(MockitoCore.java:44)
[ERROR] at org.mockito.Mockito.<clinit>(Mockito.java:1101)
[ERROR] at com.github.fge.grappa.matchers.join.JoinMatcherBuildTest.<clinit>(JoinMatcherBuildTest.java:46)
[ERROR] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
[ERROR] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
[ERROR] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
[ERROR] at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
[ERROR] at org.testng.internal.ObjectFactoryImpl.newInstance(ObjectFactoryImpl.java:29)
[ERROR] at org.testng.internal.ClassHelper.createInstance1(ClassHelper.java:382)
[ERROR] ... 22 more
[ERROR] Caused by: java.lang.ClassNotFoundException: net.bytebuddy.dynamic.ModifierResolver
[ERROR] at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
[ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[ERROR] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
[ERROR] at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[ERROR] ... 42 more
[ERROR] -> [Help 1]

Decide on one sentance byline for OpenNARS

Decide on a one sentance byline that describes OpenNARS. Set this as the description on GitHub and it will also be used in maven to describe the project and elsewhere such as in the pom and in the readme.

HeapBag analysis and verification

HeapBag uses an iterative Heapsort which requires no allocation and accuracy (how many iterations performed, and when) is adjustable. It is most similar to CurveBag and uses the same type of curve function which is adjustable. However instead of CurveBag's insertion sort HeapBag swaps items into place, probably more efficiently than (and probably should replace) BubbleBag

contexts/namespaces via literal prefixes

investigate the possibility of implementing multiple namespaces/contexts within NARS through an optional literal naming convention involving a prefix code. the presence of a prefix would automatically imply inheritance, product, and/or intensional set relationship between the prefix's concept and its contents. subspaces can be defined by appending prefixes.

example, if '.' used to indicate contexts:

  • namespace.item1
  • namespace.item2
  • namespace.subnamespace.item

this could be implemented either internally or through a macro pre-processor step

"Multitask" Test Case Runner and Analysis

test framework for running combinations of test cases in parallel, for evaluating multitasking and attention focus abilities.

for example, if we know the performance of 2 different test cases, what is the performance of running them at the same time? does it take 2x (assuming they involve mostly independent concerns) or does it take significantly more time? does it need a memory 2x as large, or even more?

measuring this will help tune scalabilty.

screenshot_2015-06-04_20-27-59

Online Help / Tutorial App

simple 1-window application for learning NAL/NARS:

sidebar has a tree of unit tests organized by NAL level, gathered form nal/test files. when clicked, they open it as an example showing the inputs, their english meaning (in comments), and expected output. NAR executes this and shows the output. the entire example can be analyzed and each statement can be graphed using the statement graph viewer. this will help people to learn how the various NARS features work because they can go through each example and see it in action, at every step of the execution.

this app can also include the wiki pages, serving as an online help system and self-contained NARS course.

conceptbag view Fix

broke while abstracting Bag.. can be fixed but will work slightly differently in that instead of browsing by level, it will be by priority. 100 levels it will have the same result

enable proguard builds again

proguard produces optimized and minified .jar's for releases. we don't need to use its obfuscation features though

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.