You are currently browsing the category archive for the ‘Exercises illustrating Symbolic Analysis’ category.

We have a definition for scientific symbolic framework at:

In this post we use it for a domain specific purpose, for handling a navigator, the software JvnMobileGis.

For analyzing this kind of practical application together with its source, there is a relevant approach in modeling, MDE, and the concepts CIM, PIM and PSM: Computation Independent Model, Platform Independent and Platform Specific Models. Some parts of them are domain specific (DS) and some implementation specifics (IS).

A specific framework for a navigator using symbolic analysis

We define the symbolic analysis framework for navigating in 10 levels as follows:

  1. Ontology is a set of domain specific (DS) concepts for a navigator plus implementation specific (IS) symbols.  Concepts can be regarded as non-grounded higher level symbols. Navigator concepts are the map, the objects, the feature of the object, a road etc. The implementation specific concepts are a menu, a user interface, a database, a socket etc.
  2. Epistemology is a set of transformation rules from concepts to IS symbols. There are two directions: one to develop software and map features to code and another transformation principles how symbols could be connected into concepts. Both transformation directions need some knowledge and they create new knowledge. They describe semantics of each symbol in the ontology.
  3. Paradigm is here reductionist: how to describe ontology and epistemology and the theories and methods as atomic elements. Its “competitor” is holistic approach.
  4. Methodology is a set of theories how ontology will be transformed using epistemology to information, capable of expressing knowledge. There are domain specific theories for the product, the navigator plus implementation specific theories for the software expressed as a symbolic notation.
  5. Method is any way to use the framework in practice. Some methods are for the product, the UI and some for developing software and some for analyzing it.
  6. Tool is a specific means to apply the method in practice. A tool can be any tool, which applies (here) symbolic execution or symbolic analysis, for example for simulating code. The user can work as a tool, too, in order to make something that is impossible for the computer, or something for checking what computer does correctly, or not.
  7. Activity is a human interaction intended for understanding code. The high level types of activities are a) using the product, b)  forward engineering for creating artefacts or c) reverse engineering: finding a bug, browsing code in order to understand some principles etc.
  8. Action is a piece of activity: using the product or forward or reverse engineering.
  9. Sub-action is a part of an action. Lowest sub-actions are primitives like reading an item, making a decision etc.
  10. Lowest level is practical data for the method, tool, activity, action and sub-action. In symbolic analysis practical data can be non-symbolic or symbolic. Non-symbolic data in a program can have any type of the type system of the original source code. Symbolic data can have at most any type in the ontology. It is then very much richer than the non-symbolic notation.

Using the levels 1-10 a complete conceptual framework for any programming language and any operating system and for any application area can be written. There are – as we know – limitations how to ground concepts, but we can model them in many phases using the modeling technology. After the modeling process we can in most cases sharpen our concepts into the symbolic level.

Some links


A typical if-statement contains an expression as a condition and then the execution part, say statements S1.. SN. Possible it contains an else-part, too, but it is not discussed here.

Symbolic evaluation produces redundant information about all symbols and their execution results, s.e. side effects. Their internal semantics is compatible with the original clauses, which makes combining results and commands very easy.

Implementation of the conditional statement in the atomistic model

For the symbolic atomistic model, all conditions either simple or complex, has only one reference in the if-statement, and the other parameters of the conditions are links to that main reference. Therefore, evaluating a condition results to a situation, where there is a value to be assigned to that condition symbol (atom). The whole expression then is connected to this new side effect symbol.

Modeling the then-part of the if-statement

The execution part of   the if-statement is a list referring to the corresponding statements. Therefore the internal model for an if-statement is if((C, [S1….SN]).

Simulating the if-statement

Simulating the condition C gives a new symbol R, which contains the result of evaluation or an expression, which holds the information about subterms and the semantics of the condition. If the condition is A==B, and A is not known and B is 1, then the side effect, say SE,  for C contains an expression eq(A, 1).

Proofing conditional statements

In all cases it is possible for the user to try to validate each simulation result against his assumptions. If SE is not wrong, or contains unexpected information, then it is possible for him to return, and to check the parameters. Because of that all simulated information can be processed as graphs. It is useful to add birectional links from symbols to their side effect symbols, which principle makes proofing programs and visualizing results rather easy.

Erkki Laitila, PhD (2008) computer engineer (1977)