carneades / carneades-4

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

Schemes with conclusion being a variable cause problems during instantiation #25

Closed pallix closed 7 years ago

pallix commented 7 years ago

Hi Tom :),

When the premises of a scheme having a variable as a conclusion can be grounded with statements put in the assumptions, it fails to generate an argument but also blocks the generation for the other schemes.

For example the following file stops to produce any argument during the evaluation, when the commented lines are uncommented:

meta:
  title: Walton Argumentation Schemes
  notes: >
    Here we illustrate one way to represent many of the argumentation schemes of Doug Walton,
    including critical questions. 
  source: >
    Walton, Douglas and Reed, Chris and Macagno, Fabrizio (2008). 
    Argumentation Schemes. Cambridge University Press.

language:
  just/1: "just %s"
  in/2: "%s contains %s as a member."
  more_coherent_explanation/2: "There exists a more coherent explanation than theory %s of observation %s."
  observed/1:  "%s has been observed."
  explanation/2: "Theory %s explains %s."
  has_occurred/1: "An event %s has occurred."
  causes/2: "Event %s causes event %s."
  interference/1: "An event has occurred which interferes with event %s."
  will_occur/1: "An event %s will occur."

statements:
   expert(joe,climate): Joe is a climate expert.
   in_domain(¬caused_by(global_warming,humans),climate): >
      The claim that global warming is not caused by humans is in the climate domain.
   asserts(joe,¬caused_by(global_warming,humans)): >
      Joe asserts that global warming is not caused by humans.
   ¬caused_by(global_warming,humans): >
      Global warming is not caused by humans.
   based_on_evidence(asserts(joe,¬caused_by(global_warming,humans))): 
      "Joe's assertion is based on evidence."
   observed(s): observed
   explanation(t,s): explanation
   in(t,h): in

argument_schemes:

  # - id: abduction
  #   variables: [S,T,H]
  #   conclusions: [H]
  #   premises:
  #     - observed(S)
  #     - explanation(T,S)
  #     - in(T,H)
  #   exceptions:
  #     - more_coherent_explanation(T,S)

  - id: abduction_working
    variables: [S,T,H]
    conclusions:
      - just(H)
    premises:
      - observed(S)
      - explanation(T,S)
      - in(T,H)
    exceptions:
      - more_coherent_explanation(T,S)

assumptions:
  - observed(s)
  - explanation(t,s)
  - in(t,h)

Yours, Pierre

tfgordon commented 7 years ago

Hi Pierre,

Nice to hear from you. Hope all is well. I will look into this an get back to you ASAP.

Tom


From: Pierre Allix notifications@github.com Sent: Tuesday, March 28, 2017 3:52 PM To: carneades/carneades-4 Cc: Subscribed Subject: [carneades/carneades-4] Schemes with conclusion being a variable cause problems during instantiation (#25)

Hi Tom :),

When the premises of a scheme having a variable as a conclusion can be grounded with statements put in the assumptions, it fails to generate an argument but also blocks the generation for the other schemes.

For example the following file stops to produce any argument during the evaluation, when the commented line are uncommented:

meta: title: Walton Argumentation Schemes notes: > Here we illustrate one way to represent many of the argumentation schemes of Doug Walton, including critical questions. source: > Walton, Douglas and Reed, Chris and Macagno, Fabrizio (2008). Argumentation Schemes. Cambridge University Press.

language: just/1: "just %s" in/2: "%s contains %s as a member." more_coherent_explanation/2: "There exists a more coherent explanation than theory %s of observation %s." observed/1: "%s has been observed." explanation/2: "Theory %s explains %s." has_occurred/1: "An event %s has occurred." causes/2: "Event %s causes event %s." interference/1: "An event has occurred which interferes with event %s." will_occur/1: "An event %s will occur."

statements: expert(joe,climate): Joe is a climate expert. in_domain(¬caused_by(global_warming,humans),climate): > The claim that global warming is not caused by humans is in the climate domain. asserts(joe,¬caused_by(global_warming,humans)): > Joe asserts that global warming is not caused by humans. ¬caused_by(global_warming,humans): > Global warming is not caused by humans. based_on_evidence(asserts(joe,¬caused_by(global_warming,humans))): "Joe's assertion is based on evidence." observed(s): observed explanation(t,s): explanation in(t,h): in

argument_schemes:

- id: abduction

variables: [S,T,H]

conclusions: [H]

premises:

- observed(S)

- explanation(T,S)

- in(T,H)

exceptions:

- more_coherent_explanation(T,S)

assumptions:

Yours, Pierre

- You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/carneades/carneades-4/issues/25, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AAsP-y_fX4YiWQqSjs4iXb-DzC5JHcXrks5rqRCjgaJpZM4MrpwQ.

tfgordon commented 7 years ago

But the expert witness scheme works, also when its premises match assumptions. I can reproduce the problem with the abduction scheme, but do not yet see the difference between these two schemes causing this problem. I will keep looking. The example below works, but you need to add the langauge. Statements need not be declared; they will be derived automatically.

argument_schemes:
  - id: abduction
    variables: [S,T,H]
    conclusions: [H]
    premises:
      - observed(S)
      - explanation(T,S)
      - in(T,H)
    exceptions:
      - more_coherent_explanation(T,S)

  - id: expert_opinion
    meta:
      title: Argument from Expert Opinion
      source: >
        Douglas Walton, Appeal to Expert Opinion, The Pennsylvania University Press,
        University Park, Albany, 1997, p.211-225.
    variables: [W,D,S]
    premises:
      - expert(W,D)
      - in_domain(S,D)
      - asserts(W,S)
    exceptions:
      - untrustworthy(W)
      - inconsistent_with_other_experts(S)
    assumptions:
      - based_on_evidence(asserts(W,S))
    conclusions:
      - S

assumptions:
  - biased(joe)
  - expert(joe, climate)
  - asserts(joe,¬caused_by(global_warming,humans))
  - in_domain(¬caused_by(global_warming, humans), climate)
  # - observed(wet)
  - explanation(weather,wet)
  - in(weather,rain)
tfgordon commented 7 years ago

I found the problem. The predicate of the conclusion of the abductive argument, s, was not declared in the language block. The predicates of all statements to be derived by the schemes must also be declared. The abduction example below, with the predicate of the conclusion added to the language, works.

meta:
  title: Abduction Argumentation Scheme
  note: This example only works if the conclusion, rain, is
        declared in the language. More generally, the predicates
        of all statements to be derived by the schemes must be declared.
  source: >
    Walton, Douglas and Reed, Chris and Macagno, Fabrizio (2008). 
    Argumentation Schemes. Cambridge University Press.

language:
  explanation/2: "Theory %s explains %s."
  in/2: "%s contains %s as a member."
  more_coherent_explanation/2: "There exists a more coherent explanation than theory %s of observation %s."
  observed/1:  "%s has been observed."
  rain/0: "It rained."

argument_schemes:
  - id: abduction
    variables: [S,T,H]
    conclusions: [H]
    premises:
      - observed(S)
      - explanation(T,S)
      - in(T,H)
    exceptions:
      - more_coherent_explanation(T,S)

assumptions:
  - observed(wet)
  - explanation(weather,wet)
  - in(weather,rain)
tfgordon commented 7 years ago

Please let me know if I can close this issue now.

pallix commented 7 years ago

Indeed, it works. Thank you. I'm closing the issue.