SearcharxivSearch

arXiv subjects

Keehang Kwon

Publications and source records attributed to Keehang Kwon.

At least 19 recordsLinked to original sources

Implementing Dynamic Programming in Computability Logic Web

We present a novel definition of an algorithm and its corresponding algorithm language called CoLweb. The merit of CoLweb [1] is that it makes algorithm design so versatile. That is, it forces us to a high-level, proof-carrying, distributed-style approach to algorithm design for both non-distributed computing and distributed one. We argue that this approach simplifies algorithm design. In addition, it unifies other approaches including recursive logical/functional algorithms, imperative algorithms, object-oriented imperative algorithms, neural-nets, interaction nets, proof-carrying code, etc. As an application, we refine Horn clause definitions into two kinds: blind-univerally-quantified (BUQ) ones and parallel-universally-quantified (PUQ) ones. BUQ definitions corresponds to the traditional ones such as those in Prolog where knowledgebase is $not$ expanding and its proof procedure is based on the backward chaining. On the other hand, in PUQ definitions, knowledgebase is $expanding$ and its proof procedure leads to forward chaining and {\it automatic memoization}.

cs.AI

Removing Qualified Names in Modular Languages

Although the notion of qualified names is popular in module systems, it causes severe complications. In this paper, we propose an alternative to qualified names. The key idea is to import the declarations in other modules to the current module before they are used. In this way, all the declarations can be accessed locally. However, this approach is not efficient in memory usage. Our contribution is the {\it module weakening} scheme which allows us to import the minimal parts. As an example of this approach, we propose a module system for functional languages.

cs.PL

Evolving Recursive Definitions with Applications to Dynamic Programming

Inspired by computability logic\cite{Jap03}, we refine recursive function definitions into two kinds: blindly-quantified (BQ) ones and parallel universally quantified (PUQ) ones. BQ definitions corresponds to the traditional ones where recursive definitions are $not$ evolving. PUQ definitions are {\it evolving} in the course of computation, leading to automatic memoization. In addition, based on this idea, we propose a new, high-level object-oriented language.

cs.PL

A Heuristic Proof Procedure for Propositional Logic

Theorem proving is one of the oldest applications which require heuristics to prune the search space. Invertible proof procedures has been the major tool. In this paper, we present a novel and powerful heuristic called $nongshim$ which can be seen as an underlying principle of invertible proof procedures. Using this heuristic, we derive an invertible sequent calculus\cite{Ketonen,Troe} from sequent calculus for propositional logic.

cs.LO

Logical Pseudocode: Connecting Algorithms with Proofs

Proofs (sequent calculus, natural deduction) and imperative algorithms (pseudocodes) are two well-known coexisting concepts. Then what is their relationship? Our answer is that \[ imperative\ algorithms\ =\ proofs\ with\ cuts \] This observation leads to a generalization to pseudocodes which we call {\it logical pseudocodes}. It is similar to natural deduction proof of computability logic\cite{Jap03,Jap08}. Each statement in it corresponds to a proof step in natural deduction. Therefore, the merit over pseudocode is that each statement is guaranteed to be correct and safe with respect to the initial specifications. It can also be seen as an extension to computability logic web (\colw) with forward reasoning capability.

cs.LO

What is an Algorithm?: a Modern View

Although algorithm is one of the central subjects, there have been little common understandings of what an algorithm is. For example, Gurevich view algorithms as abstract state machines, while others view algorithms as recursors. We promote a third view: it is a combination to these two disparate views. This approach -- based on computability logic -- describes an algorithm as $A(I,O)$ where $I$ is a set of input services and $O$ an output service. It leads to the following modern definition: {\it An algorithm $A$ is a (tree of) sequence of legal moves for providing $O$ using $I$. } In the above, $A$ is written in an imperative language/abstract state machine and $I,O$ are written in recursors/logical specifications.

cs.LO

Computability-logic web: an alternative to deep learning

{\em Computability logic} (CoL) is a powerful, mathematically rigorous computational model. In this paper, we show that CoL-web, a web extension to CoL, naturally supports web programming where database updates are involved. To be specific, we discuss an implementation of the AI ATM based on CoL (CL9 to be exact). More importantly, we argue that CoL-web supports a general AI and, therefore, is a good alternative to neural nets and deep learning. We also discuss how to integrate neural nets into CoL-web.

cs.AI

Implementing Agent-Based Systems via Computability Logic CL2

Computability logic(CoL) is a powerful computational model. In this paper, we show that CoL naturally supports multi-agent programming models where resources (coffee for example) are involved. To be specific, we discuss an implementation of the Starbucks based on CoL (CL2 to be exact).

cs.AI

Agent-Based Proof Design via Lemma Flow Diagram

We discuss an agent-based approach to proof design and implementation, which we call {\it Lemma Flow Diagram} (LFD). This approach is based on the multicut rule with $shared$ cuts. This approach is modular and easy to use, read and automate. Thus, we consider LFD an appealing alternative to `flow proof' which is popular in mathematical education. Some examples are provided.

cs.LO

Towards Distributed Logic Programming based on Computability Logic

{\em Computability logic} (CoL) is a powerful computational model which views computational problems as games played by a machine and its environment. In this paper, we show that CoL naturally supports multiagent programming models with distributed control. To be specific, we discuss a distributed logic programming model based on CoL (CL1 to be exact), which we call CL1^{\Omega}. The key feature of this model is that it supports $dynamic/evolving$ knowledgebase of an agent. This model turns out to be a promising approach to reaching both general AI and future computing model.

cs.AI

Extending and Automating Basic Probability Theory with Propositional Computability Logic

Classical probability theory is formulated using sets. In this paper, we extend classical probability theory with propositional computability logic. Unlike other formalisms, computability logic is built on the notion of events/games, which is central to probability theory. The probability theory based on CoL is therefore useful for {\it automating} uncertainty reasoning. We describe some basic properties of this new probability theory. We also discuss a novel isomorphism between the set operations and computability logic operations.

cs.AI

A Heuristic Proof Procedure for First-Order Logic

Inspired by the efficient proof procedures discussed in {\em Computability logic} \cite{Jap03,Japic,Japfin}, we describe a heuristic proof procedure for first-order logic. This is a variant of Gentzen sequent system and has the following features: (a)~ it views sequents as games between the machine and the environment, and (b)~ it views proofs as a winning strategy of the machine. From this game-based viewpoint, a poweful heuristic can be extracted and a fair degree of determinism in proof search can be obtained. This article proposes a new deductive system LKg with respect to first-order logic and proves its soundness and completeness. We also discuss LKg', a variant of LKg with some optimizations added.

cs.LO

Local Modules in Imperative Languages

We propose a notion of local modules for imperative langauges. To be specific, we introduce a new implication statement of the form $D \supset G$ where $D$ is a module (i.e., a set of procedure declarations) and $G$ is a statement. This statement tells the machine to add $D$ to the program in the course of executing $G$. Thus, $D$ acts as a local module and will be discarded after executing $G$. It therefore provides efficient module management. We illustrate our idea via C^{mod}, an extension of the core C with the new statement. In addition, we describe a new constructive module language to improve code reuse. Finally, we describe a scheme which considerably improves the heap management in traditional languages.

cs.PL

Towards a Decidable LogicWeb via Length-Bounded Derivations

LogicWeb has traditionally lacked devices for dealing with intractable queries. We address this limitation by adopting length-bounded inference, a form of approximate reasoning. A length-bounded inference is of the form $prov(P,G,n)$ which is a success if a query $G$ can be proved from the web page $P$ within $n$ proof steps. It thus makes LogicWeb decidable and more tractable. During the process, we propose a novel module language for logic programming as a device for structuring programs and queries.

cs.LO

Anonymous Variables in Imperative Languages

In this paper, we bring anonymous variables into imperative languages. Anonymous variables represent don't-care values and have proven useful in logic programming. To bring the same level of benefits into imperative languages, we describe an extension to C wth anonymous variables.

cs.PL

Extending Functional Languages with High-Level Exception Handling

We extend functional languages with high-level exception handling. To be specific, we allow sequential-disjunction expressions of the form $E_0 \bigtriangledown E_1$ where $E_0, E_1$ are expressions. These expressions have the following intended semantics: sequentially $choose$ the first successful $E_i$ and evaluate $E_i$ where $i$ = 0 or 1. These expressions thus allow us to specify an expression $E_0$ with the failure-handling (exception handling) routine, i.e., expression $E_1$. We also discuss the class of sequential-conjunction function declarations which is a dual of the former.

cs.PL

On Answer Substitutions in Logic Programming

Answer substitutions play a central role in logic programming. To support {\it selective} answer substitutions, we refine $\exists x$ in goals into two different versions: the noisy version $\exists^o x$ and the silent version $\exists x$. The main difference is that only the instantiation in $\exists^o x$ will be recorded in the answer substitutions. Similarly for $\forall x$. In addition, we discuss the notion of don't-care constants and don't-know constants.

cs.LO

A Concurrent Model for Imperative Languages with Improved Atomicity

We propose a new concurrent model for imperative languages where concurrency occurs at a subprogram level. This model introduces a new {\it block sequential} statement of the form $#(G_1,\ldots,G_n)$ where each $G_i$ is a statement. This statement tells the machine to execute $G_1,\ldots,G_n$ sequentially and atomically (\ie, without interleaving). It therefore enhances atomicity and predictability in concurrent programming. We illustrate our idea via $C^{\|}$, an extension of the core concurrent C with the new block sequential statement.

cs.PL