## Model Components

The knowledge base which ORION uses to solve problems is made up of various components. These are linked together into a consistent network form and the existence of a variety of components means that most problems can be described and solved by ORION. If no solution is reached, it can likewise be determined why no solution is available. The following are ORION's model components:

 ORION has full details of the functioning of its operator primitives, such as addition, logical implication and set intersection, both for searching and determination of consistency. This information is not accessible to, or modifiable by, the user. Numerical equations permit description of the relations among variables. Equations may be in any acceptable algebraic form and may include other components. Examples are: ``` x^2 + 3*x = 45 x = 3*y + 5*z sin(x) = user(a,b,c,d) / fib(4) Numbers may be simple reals, x = 123.45 or integer ranges, x = 1..5,9,21 or real ranges, x = 12<->27 or any mixture x = 1,3..7,9.5<->12.7 ``` Logical propositions describing the relations among logical variables. Examples are: ``` A@ AND B@ EQV C@ OR D@ A@ NOR E@ ``` Orion will coerce logical ORs to close coupled numerical ORs where appropriate, as ``` x = 3 OR x = 5 will become x = 3,5 ``` String equations and relations ``` A\$ = B\$ + "MORE INFORMATION" ``` List equations ``` A% = (B% + C%) UNION (D% - {3}) X% = {P,Q,R,S,"RB211",40} ``` Lists may have elements which are possibly included,                                    ``` L% = {1..5,?=,7,8} ``` or which are known not to be included, although some elements are unknown, as ``` L% = {1..5,???,7} ``` Equations relating to objects ` IF A# IN L% THEN XX# = Y# ` Equations of undefined type ``` A? = B? + C? IF X? = 5 OR X? = "DON'T KNOW" THEN .... ``` List lookup to represent a variety of otherwise unknown functions, such as piece-wise linear data, step-wise linear data and discrete data. Distributions and relations representing information mined from data, or non-analytic functions Logical environments where the logical variable at the head of the environment "owns" or controls the statements within the environment. These are like logical planes on which the text of the model is written. Compound structures assembled from components which can then be used as components in higher level structures. These structures are user-definable and are called subnets. Subnet invocations, which function like autonomous objects, using logic in subnets to drive them. Functions over members of a list, giving an effect similar to DO loops in conventional programming. Rules for user defined functions which may be directly computable or require inferencing using free variables. Active Functions, such as GENERATE, which may produce multiple solutions. External Functions, which become part of the Orion language, and whose rules are provided programmatically by the user or Model Developer. Functions in scripts, running an interpreted language.