arXiv ScienceSearch

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

Choice Disjunctive Queries in Logic Programming

One of the long-standing research problems on logic programming is to treat the cut predicate in a logical, high-level way. We argue that this problem can be solved by adopting linear logic and choice-disjunctive goal formulas of the form $G_0 \add G_1$ where $G_0, G_1$ are goals. These goals have the following intended semantics: $choose$ the true disjunct $G_i$ and execute $G_i$ where $i (= 0\ {\rm or}\ 1)$, while $discarding$ the unchosen disjunct. Note that only one goal can remain alive during execution. These goals thus allow us to specify mutually exclusive tasks in a high-level way.

cs.LO

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

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^Ω. 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

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

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

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

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

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

Priority, Cut, If-Then-Else and Exception Handling in Logic Programming

One of the long-standing problems on logic programming is to express {\it priority}-related operations -- default reasoning, if-then-else, cut, exception handling, etc -- in a high-level way. We argue that this problem can be solved by adopting computability logic and prioritized sequential-disjunctive goal formulas of the form $G_0 \bigtriangledown^* G_1$ where $G_0, G_1$ are goals. These goals have the following intended semantics: sequentially $choose$ the first true goal $G_i$ and execute $G_i$ where $i (= 0\ {\rm or}\ 1)$. These goals thus allow us to specify a task $G_0$ with the failure-handling (exception handling) routine $G_1$. This new goal can also be seen as a logic-equivalent of the $if$-$then$-$else$ statement in imperative language. We also discuss sequential-conjunction clauses which are {\it dual} of sequential-disjunctive goals.

cs.LO

A New Statement for Selection and Exception Handling in Imperative Languages

Diverse selection statements -- if-then-else, switch and try-catch -- are commonly used in modern programming languages. To make things simple, we propose a unifying statement for selection. This statement is of the form seqor(G_1,...,G_n) where each $G_i$ is a statement. It has a a simple semantics: sequentially choose the first successful statement $G_i$ and then proceeds with executing $G_i$. Examples will be provided for this statement.

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

Logic Programming with Macro Connectives

Logic programming such as Prolog is often sequential and slow because each execution step processes only a single, $micro$ connective. To fix this problem, we propose to use $macro$ connectives as the means of improving both readability and performance.

cs.PL

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

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