Amnon H. Eden

Amnon H. Eden
  • PhD (Tel Aviv) Computer Science (Software Engineering); MSc (Tel Aviv) Computer Science (Machine Learning)
  • Principal Scientist at Sapience.org

Studying the utility values of currencies with applications to cryptocurrencies

About

100
Publications
66,823
Reads
How we measure 'reads'
A 'read' is counted each time someone views a publication summary (such as the title, abstract, and list of authors), clicks on a figure, or views or downloads the full-text. Learn more
1,458
Citations
Introduction
Dr Amnon H. Eden is a computer scientist, Principal Scientist at the Sapience.org thinktank, and an adviser to high-tech, fintech, and health organizations. Read more http://eden-study.org
Current institution
Sapience.org
Current position
  • Principal Scientist
Additional affiliations
September 2002 - May 2015
University of Essex
Position
  • Lecturer (US equiv.: Asst. Professor)

Publications

Publications (100)
Conference Paper
Full-text available
The terms architecture, design, and implementation are typically used informally in partitioning software specifications into three coarse strata of abstraction. Yet these strata are not well-defined in either research or practice, causing miscommunication and needless debate. To remedy this problem we formalize the Intension and the Locality crite...
Article
Full-text available
We examine the philosophical disputes among computer scientists concerning methodological, ontological, and epistemological questions: Is computer science a branch of mathematics, an engineering discipline, or a natural science? Should knowledge about the behaviour of programs proceed deductively or empirically? Are computer programs on a par with...
Article
Full-text available
Flexibility has been recognized as a desirable quality of software since the earliest days of software engineering. Classic and contemporary software design literature suggest that particular implementations are more flexible than others but stop short of suggesting objective criteria for quantifying such claims. To measure software flexibility in...
Preprint
Full-text available
Notions of value of currencies such as Bitcoin and the US Dollar presuppose that the exact value of each coin equals its exchange rate or price at each point in time, ie, the price of one coin is only ever defined in terms of another. Alternative notions of value are also defined in relative terms (e.g., the price of gold, or ‘purchasing value’). C...
Experiment Findings
We checked the correlation between the 'total value' of Bitcoin in terms of its USD market cap and the currency's entropy.
Article
Full-text available
A major impediment to the long-term quality of large and complex programs is inconsistency between design and implementation. Conflicts between intent and execution are common because detecting them is laborious, error-prone, and poorly supported, and because the costs of continuously maintaining design documents outweigh immediate gains. A growing...
Presentation
Full-text available
Three years have passed since the publication of the volume of essays “The Singularity Hypotheses”. Since 2013 public awareness of the concepts of an intelligence explosion has grown sharply – fuelled, in part, by statements from luminaries such as Stephen Hawking and Elon Musk. We return to update on the controversies about the Singularity:  What...
Data
Watch the full presentation and the discussion that followed: https://www.youtube.com/watch?v=G74Z-0fON9o
Technical Report
Full-text available
This report seeks to inform policy makers on the nature and the merit of the arguments for and against the concerns associated with a potential technological singularity. Part I describes the lessons learned from our investigation of the subject, separating the arguments of merit from the fallacies and misconceptions that confuse the debate and u...
Presentation
Full-text available
-- What is the mode of being (ontological category) of computer programs? -- To which ontology are programs committed? -- What is the nature of knowledge about programs? How is it gained? Is it a-priori or a-posteriori? -- What is the difference between testing a program and conducting an experiment? -- What is an implementation? What is its relati...
Presentation
Full-text available
Major technological changes have a transformative effect on every aspect of human life. Increasingly intelligent programs are responsible to paradigm shifts at a steadily accelerating rate, a trend which acceleration theories suggest is all but guaranteed to continue. We explore some of the most disruptive applications of artificial intelligence, e...
Conference Paper
Security design patterns are usually described using a variety of UML diagrams beside textual statements. Because, UML class diagrams are used to describe the structural aspects and UML sequence and/or activity diagrams are used to describe the behavioral aspects. So, when implementing, verifying, and/or detecting instances of those patterns, the i...
Conference Paper
We investigate intuitive claims made in security pattern catalogues using the formal language of Codecharts and the Two-Tier Programming Toolkit. We analyse the Check Point pattern's structure and explore claims about conformance (of programs to the pattern), about consistency (between different catalogues), and about the relation between (security...
Article
Full-text available
Software design, development and evolution commonly require programmers to model design decisions, visualize implemented programs, and detect conflicts between design and implementation. However, common design notations rarely reconcile theoretical concerns for rigor and minimality with the practical concerns for abstraction, scalability and automa...
Article
Representing design decisions for complex software systems, tracing them to code, and enforcing them throughout the lifecycle are pressing concerns for software architects and developers. To be of practical use, specification and modeling languages for software design need to combine rigor with abstraction and simplicity, and be supported by automa...
Chapter
Full-text available
Bill Joy in a widely read but controversial article claimed that the most powerful 21st century technologies are threatening to make humans an endangered species. Indeed, a growing number of scientists, philosophers and forecasters insist that the accelerating progress in disruptive technologies such as artificial intelligence, robotics, genetic en...
Article
The essays included in the special issue dedicated to the philosophy of computer science examine new philosophical questions that arise from reflection upon conceptual issues in computer science and the insights such an enquiry provides into ongoing philosophical debates.
Chapter
Finite StructuresAbstract Semantics FunctionsDesign ModelsProgram Modelling Revisited
Chapter
Verifying Closed SpecificationsVerifying Open SpecificationsVerifying Pattern ImplementationsTool Support for Automated Verification
Chapter
modelling design motifs - not part of any specific programs, problems of modelling design motifs, fundamentally different from problems of modelling programs;modelling design motifs - using Java Remote Method Invocation (RMI);variables, serving as placeholders - ranging over specific parts of program (classes, methods, and sets)
Chapter
motivation, or existing meaning - design decisions being deeply flawed, understanding these difficulties, to motivate presentation;managing complexity of software - conformance to design decisions, enforced throughout life cycle of programs, to maximum possible extent;programming languages, most accurate and detailed specifications - each programmi...
Chapter
reasoning about charts, and revisiting problem of abstraction - set of abstraction operators, allowing to reason rigorously about Codecharts;abstraction viz. predicate weakening - process of abstracting a chart by replacing ISOMORPHIC edge with a TOTAL edge;abstraction viz. generalization - abstracting a chart, by replacing a constant with a variab...
Chapter
Object-OrientationVisualizationRigourAutomated VerifiabilityScalabilityGenericityMinimalityInformation Neglect
Chapter
historical notes, and design patterns - important steps in software design advancement;formal languages of logic languages - and commercial object notations;languages, and mechanisms representing patterns - at once, as well-defined as logic sentences and intuitive
Chapter
Case Study: Enterprise JavaBeansCase Study: JUnit
Chapter
LePUS3 and Class-Z as First-Order LanguagesSpecifications in the Predicate LogicThe Axioms of Class-Based Programs
Chapter
Case Study: The Composite PatternCase Study: The Iterator PatternCase Study: The Factory Method PatternCase Study: The Abstract Factory PatternConcluding Remarks
Chapter
modelling early design revisited - design description language, representing program blueprints, articulating requirements without making premature commitments to implementation detail;design description language - representing program blueprints, articulating requirements without making premature commitments to implementation detail;Codechart 98....
Chapter
schemas, two specification languages - visual tokens, constituting LePUS3 and set of their symbolic transcriptions, referred as Class-Z;Class-Z suggesting, inspiration for schema notation - from the Z specification language;translating a Codechart to a schema
Chapter
Ad Hoc SymbolsModelling Information Hiding
Chapter
Modelling Individual ClassesModelling Individual Methods Modelling PropertiesModelling Implementation MinutiaModelling Simple RelationsModelling Indirect RelationsSubtyping
Chapter
Theory Versus PracticeDecidabilityAbstractionElegance
Chapter
UML versus Codecharts - de facto industry standard modelling language, questions about relationship to Codecharts;UML, rich and expressive set of notations - designed to articulate wide range of functional and nonfunctional specifications of software;composite patterns - modelled in UML's Class Diagram notation
Chapter
Modelling Sets of ClassesModelling Total Relations Between SetsModelling Sets of Methods (Clans)Modelling Isomorphic RelationsModelling Sets of Methods (Tribes)Modelling Class HierarchiesModelling Methods in HierarchiesModelling Properties of SetsCase Study: Total Versus. IsomorphicCase Study: JDOMCase Study: Java 3D
Chapter
Modelling Sets of HierarchiesModelling Sets of Sets of Methods (Clans)Modelling Sets of Sets of Methods (Tribes)Modelling Total Relations RevisitedModelling Isomorphic Relations Revisited
Article
Full-text available
Three controlled experiments testing the benefits that Java programmers gain from using the Two-Tier Programming Toolkit have recently been concluded. The first experiment offers statistically significant evidence (p-value: 0.02) that programmers who undertook only minimal (1-hour) training in using the current prototype exhibit 76% productivity ga...
Article
Full-text available
Goal-directed problem solving as originally advocated by Herbert Simon's means-ends analysis model has primarily shaped the course of design research on artificially intelligent systems for problem-solving. We contend that there is a definite disregard ...
Article
Full-text available
This document formally defines the elements in the syntax and the semantics of LePUS3 and the Class-Z specification languages. It was designed to satisfy the rigid requirements of mathematical logic, and it is therefore unsuitable for learning LePUS3 and Class-Z. More suitable for this purpose will be the book "Object-Oriented Modelling " [Eden und...
Article
Specification and [visual] modelling languages are expected to combine strong abstraction mechanisms with rigour, scalability, and parsimony. LePUS3 is a visual, object-oriented design description language axiomatized in a decidable subset of the first-order predicate logic. We demonstrate how LePUS3 is used to formally specify a structural design...
Conference Paper
Full-text available
The design navigator is a tool for reverse-engineering object-oriented programs into charts at any level of abstraction. The design navigator discovers the object-oriented building blocks in the design of programs and visualises them in terms of LePUS3, a formal design description language. We demonstrate that program visualization in a formal lang...
Conference Paper
Full-text available
LePUS3 [1] (lepus.org.uk) is a logic, visual, object-oriented Design Description Language: a formal specification language designed to capture and convey the building-blocks of object-oriented design. LePUS3 minimal vocabulary constitutes of abstraction mechanisms that can specify effectively and precisely design patterns and the design of JavaTM (...
Article
Full-text available
The Philosophy of Computer Science (PCS) is concerned with philosophical issues that arise from reflection upon the nature and practice of the academic discipline of computer science. But what is the latter? It is certainly not just programming. After all, many people who write programs are not computer scientists. For example, physicists, accounta...
Conference Paper
Full-text available
The Design Navigator is a semi-automated design mining tool which reverse engineers LePUS3 design charts from JavaTM 1.4 programs at any level of abstraction in reasonable time. We demonstrate the Design Navigator's step-wise charting process of Java Foundation Classes, generating decreasingly abstract charts of java.awt and discovering building-bl...
Article
Computer science has a significant role in the meta-activity associated with programming such as with the design and development of tools and methodologies that facilitate and aid the specification, development, implementation, and analysis of computing systems. The three caricaturing paradigms for computer science include the mathematical, the eng...
Article
This paper is a summary and evaluation of work presented at the AAAI 2005 Fall Symposium on Machine Ethics that brought together participants from the fields of Computer Science and Philosophy to the end of clarifying the nature of this newly emerging ...
Article
Full-text available
As a first step in the larger project of charting the ontology of computer programs, we pose three central questions: (1) Can programs, hardware, and metaprograms be organized into a meaningful taxonomy? (2) To what ontology are computer programs committed? (3) What explains the proliferation of programming languages and how do they come about? Tak...
Article
Full-text available
We examine the role of semantic theory in determining the ontology of programming languages. We explore how different semantic perspectives result in different ontologies. In particular, we compare the ontological implications of set-theoretic versus type-theoretic semantics. Key terms: Philosophy of computer science Related terms: Mathematical log...
Article
We describe a software development environment that supports Two-Tier Programming (TTP): An approach that redefines programming as the integration of conventional imple- mentation with design specifications. The TTP tool maintains a comprehensive represen- tation of programs by integrating specifications in two ties: 1. Design specifications are re...
Article
Full-text available
We distinguish three abstraction strata in software design statements: (i) Strategic design statements ('architectural design') determine global constraints, such as programming paradigms, architectural styles, component-based software enginering standards, design principles, and law-governed regularities; (ii) Tactical design statements ('detailed...
Article
Full-text available
Flexibility has been hailed as a desirable quality since the earliest days of software engineer-ing. Classic and modern literature suggest that particular programming paradigms, architectural styles and design patterns are more "flexible" than others but stop short of suggesting objective criteria for measur-ing such claims. We suggest that flexibi...
Article
Full-text available
Software co-evolution can be characterised as a way to “adjust” any given software implementation to a change (“shift”) in the software requirements. In this paper, we propose a formal definition of evolution complexity to precisely quantify the cost of adjusting a particular implementation to a change (“shift”) in the requirements. As a validation...
Conference Paper
Full-text available
We seek to distinguish Strategic design decisions (e.g., to adopt a programming paradigm, architectural style, CBSE standard or application framework) from tactical design decisions (e.g. to use a design pattern, refactoring or programming idiom). This distinction is important since strategic statements carry far-reaching implications over the impl...
Article
Full-text available
The terms architecture, design, and implementation are typically used informally in partitioning software specifications into three coarse strata of abstraction. But these strata are not well-defined in either research or practice and often overlap causing confusion and needless discussion. To remedy this problem we formally define two criteria: th...
Article
Full-text available
In practice, the development and maintenance (if any) of a system's design specifications are carried out in veritable isolation from the development and maintenance of the implementation. Design decisions are represented independently from the implementation and its analysis and verification are carried out (if at all) by a separate tool set. The...
Article
Full-text available
Definitions of software architecture abound. We've been collecting definitions from visi-tors to our Web site (http://www. sei. cmu. edu/architecture/definitions. html) and already have received dozens. However, we are interested not only in understanding the term "software architecture" but in clarifying the difference between architecture and oth...
Article
Full-text available
Progress was made in the understanding of object-oriented (O-O) design through the introduction of patterns of design and architecture. Few works, however, offer methods of precise specification for O-O design. This article provides a well-defined ontology and an underlying framework for the formal specification of O-O design: (1) We observe key de...
Conference Paper
Progress in the science of programming is reflected by the evolution of programming languages. We propose that the next step in this evolution is a more comprehensive kind of programs: To redefine the way programs are perceived and, consequently, to redefine what constitutes the activity of programming. Rather than treating architectural specificat...
Article
We present a visual formalism for the specification of object -oriented design and architectures . LePUS diagrams effectively capture and convey a concise description of design patterns. LePUS diagrams also offer lucid "roadmaps " ("architectural schemata") for elaborated libraries and frameworks, and make a documentation tool that is more powerful...
Article
Software architectures and designs "notations" are typically based on bubble-and-arc diagrams. Embellishing these diagrams may increase their information content but does not make a language. A formal language has syntax, semantics, and inference rules, so that reasoning and automatic manipulation are made possible. We describe LePUS, a formal lang...
Article
Full-text available
Historically, progress in the science of programming has primarily been reflected by the evolution of programming languages.
Article
. Rather than describing a specific implementation, Perry and Wolf [1] have established that architectural specifications set forth abstract constraints that need be met, thereby specifying a set of programs indirectly by means of desired properties (also intentional specifications.) The appropriate level of abstraction may vary, but specifications...
Article
dation, and recognition of architectural specifications [Eden 00]. Documentation of frameworks and programs (such as EJB -- Enterprise JavaBeans^TM in Figure 4.) LePUS diagrams effectively capture and convey concise "roadmaps" to the architecture of O-O programs, allowing for "system browsing" at the appropriate level of abstraction. LePUS is based...
Article
Progress was made in the understanding of objectoriented (O-O) architectures through the introduction of patterns of design and architecture. Few works, however, offer methods of precise specification for O-O architectures. This article provides a well-defined ontology and an underlying framework for the formal specification of O-O architectures: W...
Article
Full-text available
Design patterns describe common features of software systems. Notations intended to describe individual programs are unsuitable for formalizing patterns because they are not su#ciently abstract, expressive, and well-defined. We describe LePUS, a notation that is both formal and su#ciently abstract to represent patterns and provide a framework for r...
Conference Paper
Progress was made in the understanding of object-oriented (O-O) architectures through the introduction of patterns of design and architecture. Few works, however, offer methods of precise specification for O-O architectures.This article provides a well-defined ontology and an underlying framework for the formal specification of O-O architectures: W...
Article
. We address the problem of software invisibility and seek means to improve the comprehensibility of software. Architectural schemata are defined as visual "roadmaps" to the design of object oriented programs and construed in a formal language. We present LePUS Schemata, a formal language whose expressions convey architectural configurations and de...
Article
Full-text available
We observe recurring, fundamental motifs in object oriented architectures, discuss the possibility of their rigorous representation, and offer criteria for the evaluation of possible languages for their specification, such as expressiveness and completeness. We define a symbolic logic language, LePUS, whose basic abstractions are the motifs observe...
Article
We identify a compact and sufficient set of building blocks which constitute most design patterns of the GoF catalog: uniform sets of classes or functions, function clans, class hierarchies, and regularities (morphisms) thereof. The abstractions observed are manifested within a model in symbolic logic and defined in LePUS, a declarative, higher ord...
Article
Despite vast interest in design patterns, the specification and application of patterns is generally assumed to rely on manual implementation. We describe a precise method of specifying how a design pattern is applied: by phrasing it as an algorithm in a meta-programming language. We present a prototype of a tool that supports the specification of...
Article
A detailed case study in the representation of the STATE design pattern [1] serves us in providing an intuitive introduction to LePUS -- a symbolic logic language for the specification of recurring motifs in object oriented architectures. LePUS' constructs express accurately and concisely fundamental elements of O-O architecture, such as inheritanc...
Article
Full-text available
A discussion was chronicled in previous issues of C++ Report comparing three [candidate] patterns: OBSERVER, MULTICAST, and TYPED MESSAGE. The comparison took a number of pages to be conveyed, mostly using informal means or concrete instances. We use a formal pattern specification language - LePUS - to define each design pattern and to illuminate t...
Article
Full-text available
We identify a compact and sufficient set of building blocks which constitute most design patterns of the GoF catalog: uniform sets of classes or functions, function clans, class hierarchies, and regularities (morphisms) thereof. The abstractions observed are manifested within a model in symbolic logic and defined in LePUS, a declarative, higher ord...
Article
We discuss the prospects of precise specification of design patterns. We analyze the manuscript of the GoF patterns catalog, and prove that the essence of many design pat- terns can be preserved through the translation to some formal language.
Article
We discuss the prospects of precise specification of design patterns. We analyze the manuscript of the GoF patterns catalog, and prove that the essence of many design patterns can be preserved through the translation to some formal language. Contemporary Means of Specification There is widespread interest in design patterns [GoF 95; Coplien & Schmi...
Article
LePUS is a formal, visual notation proposed for the specification of design patterns a-la GoF. It is described through the diagrams of several patterns. This article is the 1 st of two, focusing on the fundamentals of LePUS. The upcoming 2 nd article will discuss relations between sets of entities and a PROLOG implementation. The Need for a Notatio...
Article
LePUS is a formal, visual notation proposed for the specification of design patterns a-la GoF. It is described through the diagrams of several patterns. This article is the 1 st of two, focusing on the fundamentals of LePUS. The upcoming 2 nd article will discuss relations between sets of entities and a PROLOG implementation. The Need for a Notatio...
Article
Full-text available
At present, the only means used for specifying design patterns are contemporary object notations [Rumbaugh et. al 91; Booch 94], lengthy verbal descriptions, and sample programs. The inherent ambiguity and incompleteness of these means preclude devising tool support and fuel disputes over "their true intention". We identified a compact set of abstr...
Conference Paper
Full-text available
Despite vast interest in design patterns, the specification and application of patterns is generally assumed to rely on manual implementation. We describe a precise method of specifying how a design pattern is applied: by phrasing it as an algorithm in a meta-programming language. We present a prototype of a tool that supports the specification of...
Article
Full-text available
Design patterns today form a principal heuristic of OOD and are widely used in numerous application domains. However, lack of suitable formalisms prevents the automation of the technical aspects in their implementation. We present an approach of rigorous specification of design patterns and a prototype of a tool that automates most of their applica...
Article
This is a catalog of micro-patterns, as defined in [Eden, Gil & Yehudai 97b; Eden & Yehudai 97c]. A detailed description of the trick [ibid.] that implements the lattice [ibid.] of the CACHE-PROXY design pattern [GoF 95] by a Smalltalk routine is included, and also the source code of a sample Eiffel program whose elements served as arguments to the...
Conference Paper
Full-text available
: Most of the study of patterns has been restricted to the composition of "new" patterns. These authors, however, believe that the investigation of design patterns is ripe for an endeavor at an underlying formal conceptual framework. In this article we address future directions in the investigation of design patterns and stress the significance of...
Article
Full-text available
This article sets forth a rigorous approach to the concept of a `design pattern language.' We present a method of using a programming language to manipulate constructs of ordinary OOP language (such as classes and relations). We show that the specification of many design patterns can be phrased as algorithms in this metaprogramming environment. The...
Thesis
Full-text available
A survey of cognitive research in concept acquisition and human performance in classification tasks; a comparative view of Machine Learning concept acquisition models; and an implementation of a human-oriented classification scheme
Article
Full-text available
LePUS3 is a specification and modelling language designed to capture the building blocks of O-O design at different levels of abstraction. We identify the set of LePUS3 specifica- tions that agree with (are satisfied by) an O-O program (represented by a LePUS3 design model) as the search space for a host of design mining problems such as: reverse e...
Article
Despite vast interest in design patterns, the specification and application of patterns is generally assumed to rely on manual implementation. We describe a precise method of specifying how a design pattern is applied: by phrasing it as an algorithm in a meta-programming language. We present a prototype of a tool that supports the specification of...
Article
This is a catalog of micro-patterns, as defined in (Eden, Gil & Yehudai 97b; Eden & Ye- hudai 97c). A detailed description of the trick (ibid.) that implements the lattice (ibid.) of t he CACHE-PROXY design pa ttern (GoF 95) by a S malltalk routine is included, and also the source code of a sample Eiffel program whose elements served as arguments t...
Article
The history of programming languages is largely a history of the interaction between on- tology and design. Recursion, abstract data types, objects and classes, were conceived as the direct result of the necessity to provide conceptual tools for problem solving and de- sign. Without them programming would probably have got stuck on translating poly...
Article
We present architectural schemata, visual "roadmaps" that provide a lucid picture of the design of object oriented programs. Construed in a formal language, architectural schemata can contribute significantly to the comprehensibility of large systems and provide a rigorous framework to their analysis. We present LePUS, a formal language for the spe...

Questions

Question (1)
Question
Eg, reasoning mechanisms, knowledge model, existing implementations/demonstrations, ...

Network

Cited By