User's Guide for the NARS Applet

Pei Wang

Last changed: August 2007


Input/Output Language

In this demonstration, NARS implements the following formal language, Narsese, which is defined and explained in the book "Rigid Flexibility: The Logic of Intelligence".

The input and output of the applet are sequences of Narsese sentences, plus number of inference steps to be carried out. The following is roughly the Narsese grammar rules in BNF notation.

                        GRAMMAR RULE                         BRIEF EXPLANATION
           <sentence> ::= <statement>"." [<truth-value>]     // judgment to be remembered
                        | <statement>"?"                     // question to be answered
                        | <statement>"!" [<truth-value>]     // goal to be realized
           <statement> ::= "<"<term> <relation> <term>">"    // two terms related to each other
                        | <term>                             // a term can name a statement
           <relation> ::= "-->"                              // inheritance
                        | "<->"                              // similarity
                        | "{--"                              // instance
                        | "--]"                              // property
                        | "{-]"                              // instance-property
                        | "==>"                              // implication
                        | "<=>"                              // equivalence
                        | "=/>"                              // predictive implication
                        | "=|>"                              // concurrent implication
                        | "=\>"                              // retrospective implication
                        | "</>"                              // predictive equivalence
                        | "<|>"                              // concurrent equivalence
               <term> ::= <word>                             // an atomic constant term
                        | <variable>                         // an atomic variable term
                        | <compound-term>                    // a term with internal structure
                        | <statement>                        // a statement can serve as a term
      <compound-term> ::= "{" <term> {","<term>} "}"         // extensional set
                        | "[" <term> {","<term>} "]"         // intensional set
                        | "(&," <term> {","<term>} ")"       // extensional intersection
                        | "(|," <term> {","<term>} ")"       // intensional intersection
                        | "(-," <term> "," <term> ")"        // extensional difference
                        | "(~," <term> "," <term> ")"        // intensional difference
                        | "(*," <term> {","<term>} ")"       // product
                        | "(/," <term> {","<term>} ")"       // extensional image
                        | "(\," <term> {","<term>} ")"       // intensional image
                        | "(--," <term> ")"                  // negation
                        | "(||," <term> {","<term>} ")"      // disjunction
                        | "(&&," <term> {","<term>} ")"      // conjunction
                        | "(&/," <term> {","<term>} ")"      // sequential events
                        | "(&|," <term> {","<term>} ")"      // parallel events
                        | "(/>," <term> ")"                  // future event
                        | "(|>," <term> ")"                  // present event
                        | "(\>," <term> ")"                  // past event
           <variable> ::= "#"<word>                          // independent variable
                        | "#"<word> "(" {"#"<word>} ")"      // dependent variable
                        | "#"                                // anonymous term as place holder
                        | "?"<word>                          // query variable for term to be find
        <truth-value> ::= "%"<frequency>";"<confidence>"%"   // two real numbers in [0,1]
               <word> : string in an alphabet


Graphical User Interface

The GUI of NARS consists of several windows. In the following, they are described one by one.

Main Window

MainWindow (26K)

This window contains a menu bar, a text area, a clock field, and four command buttons.

Input Window

InputWindow (17K)

This window contains a text area and four command buttons.

Inference Log Window

InferenceWindow (44K)

This window contains a text area and three command buttons.

Bag Window

BagWindow (17K)

This window contains a text area, a slider, and three command buttons.

Parameter Window

ParameterWindow (8K)

This window contains a slider and three command buttons.

Message Window

MessageWindow (13K)

This window contains a text area and a bottom.

Color Usage

The following color convention is used in the GUI: