carneades / carneades-4

Version 4 of Carneades, implemented in Go
https://carneades.github.io/
Other
48 stars 13 forks source link

Assumption not appearing in the evaluated graph #29

Closed pallix closed 7 years ago

pallix commented 7 years ago

Hi Tom,

In the example below the assumption justTagged(d, and2) does not appear in the evaluated graph if not defined in the statements. Is this expected?

In general it's not clear to me when terms or assumptions need to be in the statements or not.

meta:
  title: Multi-parameter logic call 'and' operator

language:
  just/1: "just %s"
  justTagged/2: "just %s of `and` with tag %s"
  and/3: "and(%s,%s,%s)"
  and/4: "and(%s,%s,%s) with tag %s"

argument_schemes:
  - id: s_and
    variables: [A,B,C]
    conclusions:
      - and(A,B,C)
    premises:
      - just(A)
      - just(B)
      - just(C)

  - id: s_and_tag
    variables: [A,B,C,T]
    conclusions:
      - and(A,B,C,T)
    premises:
      - justTagged(A, T)
      - justTagged(B, T)
      - justTagged(C, T)

statements:
  a: a
  b: b
  c: c
   # if not mentioned here, does not appear on the graph?
   # justTagged(d, and2): justTagged(d, and2)

assumptions:
  - ¬just(a)
  - just(b)
  - just(c)
  # - just(d)
  - justTagged(a, and1)
  - justTagged(b, and1)
  - justTagged(c, and1)
  - justTagged(d, and2)
tfgordon commented 7 years ago

This behaviour is correct and expected. Statements do not appear in the argument graph unless they are declared in the statements block. Being listed in the assumptions block is not enough.

That said, if the file contains argumentation schemes, and not just arguments, the application of the schemes, when applied to the assumptions, can generate further statements and arguments. If the premise of a generated argument is an assumption which has not been declared as a statement, a statement will be generated for the assumption when adding the new argument to the graph.

I realize this may seem rather confusing. Perhaps it helps to keep in mind that the argument graph is defined by the statements, arguments and issues. The assumptions block has two purposes:

  1. Assuming some statements in the graph to be "in".
  2. Argumentation schemes are applied to the assumptions to generate arguments.