<p>Partial functions are ubiquitous in Knowledge Representation applications, ranging from practical, e.g., business applications, to more abstract, e.g., mathematical and programming applications. Expressing propositions about partial functions may lead to non/denoting terms. These result in undefinedness errors and ambiguity, causing subtle modeling and reasoning problems. In our approach, formulae are well-defined (<i>true</i> or <i>false</i>) and non/ambiguous in all structures. We develop a base extension of three-valued predicate logic, in which partial function terms are <i>guarded</i> by domain expressions, ensuring the well/definedness property despite the three-valued nature of the underlying logic. This property allows us to define the satisfaction relation of the new logic in terms of the standard two-valued logic of total functions. To tackle the verbosity of this core language, we propose different ways to increase convenience by means of disambiguating annotations and non-commutative connectives. As a practically relevant result, we prove that many different <i>unnesting</i> methods, which eliminate (partial) functions by replacing them with their graph predicates, are equivalence-preserving in the proposed language. Furthermore, we present an extension of the logic with <i>definitions</i> of partial functions and give their semantics in terms of the existing semantics for inductive definitions of sets. Finally, we explore the connection to functional programming.</p>

错误:搜索内容不能为空,请输入英文关键词
错误:关键词超出字数限制,请精简
高级检索

A prudent logic of partial functions

  • Đorđe Marković,
  • Robbe Van den Eede,
  • Marc Denecker

摘要

Partial functions are ubiquitous in Knowledge Representation applications, ranging from practical, e.g., business applications, to more abstract, e.g., mathematical and programming applications. Expressing propositions about partial functions may lead to non/denoting terms. These result in undefinedness errors and ambiguity, causing subtle modeling and reasoning problems. In our approach, formulae are well-defined (true or false) and non/ambiguous in all structures. We develop a base extension of three-valued predicate logic, in which partial function terms are guarded by domain expressions, ensuring the well/definedness property despite the three-valued nature of the underlying logic. This property allows us to define the satisfaction relation of the new logic in terms of the standard two-valued logic of total functions. To tackle the verbosity of this core language, we propose different ways to increase convenience by means of disambiguating annotations and non-commutative connectives. As a practically relevant result, we prove that many different unnesting methods, which eliminate (partial) functions by replacing them with their graph predicates, are equivalence-preserving in the proposed language. Furthermore, we present an extension of the logic with definitions of partial functions and give their semantics in terms of the existing semantics for inductive definitions of sets. Finally, we explore the connection to functional programming.