Model.java
01 package org.qedeq.kernel.bo.logic.model;
02 
03 /**
04  * A model for our mathematical world. It should have entities, functions and predicates.
05  * There should also be predicate and function constants.
06  *
07  @author  Michael Meyling
08  */
09 public interface Model {
10 
11     /**
12      * Get model description.
13      *
14      @return  Model description. */
15     public String getDescription();
16 
17     /**
18      * Get number of all entities in this model.
19      *
20      @return  Number of entities.
21      */
22     public int getEntitiesSize();
23 
24     /**
25      * Get entity <code>number</code>. Also transforms the value of
26      * an entity into the entity itself.
27      *
28      @param   number  Get entity with this number and value.
29      @return  Entity.
30      */
31     public Entity getEntity(final int number);
32 
33     /**
34      * Get number of predicates with <code>size</code> number of arguments.
35      *
36      @param   size    Number of arguments.
37      @return  Number of predicates in this model.
38      */
39     public int getPredicateSize(final int size);
40 
41     /**
42      * Get predicate of this model.
43      *
44      @param   size    Number of arguments for predicate.
45      @param   number  Number of predicate.
46      @return  Predicate for this model.
47      */
48     public Predicate getPredicate(final int size, final int number);
49 
50     /**
51      * Get predicate constant of this model.
52      *
53      @param   con     Predicate constant we are looking for.
54      @return  Predicate for this model.
55      */
56     public Predicate getPredicateConstant(final ModelPredicateConstant con);
57 
58     /**
59      * Get number of functions for this model.
60      *
61      @param   size    Number of arguments for function.
62      @return  Number of functions in this model.
63      */
64     public int getFunctionSize(final int size);
65 
66     /**
67      * Get function.
68      *
69      @param   size    Number of arguments for function.
70      @param   number  Number of function.
71      @return  Function in this model.
72      */
73     public Function getFunction(final int size, final int number);
74 
75     /**
76      * Get function constant.
77      *
78      @param   con     Function constant we are looking for.
79      @return  Function in this model.
80      */
81     public Function getFunctionConstant(final ModelFunctionConstant con);
82 
83     /**
84      * Create entity out of entity list. This is a transformation of a list
85      * of elements into a class containing these elements.
86      *
87      @param   array   List of elements.
88      @return  Class that contains (exactly?) these elements.
89      */
90     public Entity comprehension(final Entity[] array);
91 
92 }