There are actually different ways to redefine a function in C++ and there
are ways to redefine variables. But, for the most part, there have to be
distinct ways to call the different versions of the definition.

I feel that redefinitions and different ways of looking at an item, whether
it is concrete or dynamic, are important features of intelligence.  And one
of my main ideas is that  cross-categorization (or cross-generalization)
are important features of intelligence.  Although this is different than
redefining modules it is a programming issue in AGI.  You cannot categorize
concepts within simple hierarchies except as a simplification. If the
elements or subsets of a set are distinct concepts then they must have
distinct features.  That means that they must be categorizable in ways
other than used to define the set.  This may not be a problem for certain
definitions of classes or sets where the distinctions are nominal or exist
in other dimensions that do not need to be considered but it does create a
problem when categorizing concepts.  Rereading your second paragraph I see
that this is relevant to your comments.  You could change the definitions
temporally.  But, that kind of fix would only be temporary. (Ha-ha,)  Ben
put a link in the opencog group to something called Allan's Interval
Algebra:  http://www.ics.uci.edu/~alspaugh/cls/shr/allen.html
While that is interesting to look at, it can only be used to track temporal
state changes of some objects as long as you track those changes as well.
The state changes (of the definitions for example) could have an impact on
the temporal states of the intervals.  This leads to the frame problem for
complex situations where you would like to be able to ignore those aspects
of the reference models which are not being changed (and would not have an
impact on a fundamental method that you wanted your program to rely on).
This might be feasible for a constrained problem but it is a major issue
when dealing with widely distributed knowledge (where the knowledge that
might be needed in some particular situations is not somehow conveniently
known).  There seems to be a solution to the Yale Shooting Problem but so
what?  The utilization of some more logical solutions are going to work in
some cases but not in others since they are based on further definition of
the problem.  So you can come up with all these cool logical and numerical
methods but once you realize that you would use something like Allen's
Interval Algebra in situations where you have incomplete knowledge and the
relevant knowledge might be extensive, then you end up back in the Frame
Problem.

So I feel that conceptual integration is the problem (for working with
conceptual insights) because once you find effective ways to integrate
different ways to define a conceptual subject matter then the program could
start to derive possible solution paths for kinds of situations that can be
relevant.  Because of cross-generalization methods these -kinds- of
solution paths could be used to derive possible solution paths in other
kinds of solutions.

So there are ways to work with redefinitions of the basic data management
systems.  However, these methods may not work with higher order conceptual
management. You have to figure out strong conceptual integration methods so
that the program will be able to derive strong ways to deal with incomplete
knowledge.  - Jim Bromer



On Fri, Sep 6, 2013 at 2:31 PM, Piaget Modeler <[email protected]>wrote:

> Hi All,
>
> Just wanted to get a survey.  I'm thinking about what modularity means in
> an interpreted language.  I'm working on a new language  for my research
> and came upon a question in modularity and interpreter design.
>
> If you have existing objects defined in memory and you load a new module
> which redefines the type hierarchy, what should happen?
>
> In most dialects of SQL,  when adding a module (i.e. a script), say to
> build
> a database, there is code to delete an existing object before defining
> the
> new object.  For example, when defining a new table, often there is code
> to drop the table beforehand:
>
> If ( exists(table(A))) then drop table A ;
> Create table A as blah blah blah...
>
> Redefinitions can obliterate existing database objects.  The scripting can
> be controlled by the developer so that redefinitions do not destroy
> existing
> objects but rather just signal errors.
>
> In 3 GL languages like C++, Java, etc. when a code module is accidentally
> included twice in a source file, what exactly happens? Does the compiler
> redefine or ignore the functions or objects in the duplicate module? What
> about interpreted languages like python?
>
> Your thoughts?
>
> Michael.
>    *AGI* | Archives <https://www.listbox.com/member/archive/303/=now>
> <https://www.listbox.com/member/archive/rss/303/24379807-f5817f28> |
> Modify<https://www.listbox.com/member/?&;>Your Subscription
> <http://www.listbox.com>
>



-------------------------------------------
AGI
Archives: https://www.listbox.com/member/archive/303/=now
RSS Feed: https://www.listbox.com/member/archive/rss/303/21088071-f452e424
Modify Your Subscription: 
https://www.listbox.com/member/?member_id=21088071&id_secret=21088071-58d57657
Powered by Listbox: http://www.listbox.com

Reply via email to