FO(.): Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
→‎Example: suggest to align comments; suggest to mention <, >= (as examples of built-in predicates - guessed); fix missing ")"
align comments
Line 29: Line 29:


vocabulary V{
vocabulary V{
age: () → ℤ // function declaration
age: () → ℤ // function declaration
prescriptive, vote: () → 𝔹 // predicate declarations
prescriptive, vote: () → 𝔹 // predicate declarations
}
}

Revision as of 09:23, 1 February 2022

In computer science, FO(.) (a.k.a. FO-dot) is a knowledge representation language based on first-order logic.[1]

It has 4 types of statements:

  • Function and predicate declarations,
  • Axioms, i.e., logic sentences about possible worlds,
  • Definitions that specify a unique interpretation of a defined symbol, given the interpretation of its parameters. Definitions can be inductive.
  • Enumerations, i.e., definitions of symbols by enumeration.

An FO-dot knowledge base cannot be run. It is a "bag of information", to be used as input to various generic reasoning algorithms: e.g., to determine relevant questions, to compute consequences of new facts, and to explain them.

FO(.) extends first-Order logic with: types, aggregates, arithmetic, (inductive) definitions, partial functions, and intensional objects.

FO-dot is used by these reasoning engines:

Example

The following voting laws

  • you must be at least 18 years old to vote;
  • if the law is prescriptive, voting is mandatory.

can represented in FO(.) as follows:

vocabulary V{
  age: () → ℤ                            // function declaration
  prescriptive, vote: () → 𝔹             // predicate declarations
}
theory T:V {
  age()< 18 ⇒ ¬vote().                   // axiom: if you are less than 18, you may not vote.
  prescriptive() ⇒ (age()≥ 18 ⇒ vote()). // axiom: if prescriptive: if you are at least 18, you must vote
}

In this code, AB indicates a function from A to B; 𝔹 denotes the booleans, ¬ denotes negation, and denotes material conditional. Predicates < and ≥ are built-in and have their usual meaning.

Such knowledge base can be turned automatically into an Interactive Lawyer[6] (see here[7])

References

  1. ^ Denecker, Marc (2000). "Extending classical logic with inductive definitions". International Conference on Computational Logic: 703–717.
  2. ^ "IDP-Z3". Retrieved 2022-02-01.
  3. ^ De Cat, Broes; Bogaerts, Bart; Bruynooghe, Maurice; Janssens, Gerda; Denecker, Marc (2018). "Predicate logic as a modeling language: the IDP system". Declarative Logic Programming: Theory, Systems, and Applications: 279–323. doi:10.1145/3191315.3191321.
  4. ^ "IDP". Retrieved 2022-02-01.
  5. ^ "FOLASP". Retrieved 2022-02-01.
  6. ^ "Interactive Consultant". Retrieved 2022-02-01.
  7. ^ "Interactive Consultant". Retrieved 2022-02-01.

External links