argumentation_schemes/lib.rs
1//! # argumentation-schemes
2//!
3//! Walton argumentation schemes with critical questions for structured
4//! social reasoning. Each scheme is a recognisable reasoning pattern
5//! (expert opinion, ad hominem, argument from consequences) that carries
6//! its own critical questions — the follow-up challenges a competent
7//! reasoner would raise.
8//!
9//! Builds on the [`argumentation`] crate's ASPIC+ layer: scheme instances
10//! compile to ASPIC+ premises and defeasible rules that can be evaluated
11//! via Dung semantics.
12//!
13//! ## Quick example
14//!
15//! ```
16//! use argumentation_schemes::catalog::default_catalog;
17//! use std::collections::HashMap;
18//!
19//! let catalog = default_catalog();
20//! let scheme = catalog.by_key("argument_from_expert_opinion").unwrap();
21//!
22//! let bindings: HashMap<String, String> = [
23//! ("expert".to_string(), "alice".to_string()),
24//! ("domain".to_string(), "military".to_string()),
25//! ("claim".to_string(), "fortify_east".to_string()),
26//! ]
27//! .into_iter()
28//! .collect();
29//!
30//! let instance = scheme.instantiate(&bindings).unwrap();
31//! assert_eq!(instance.premises.len(), 3);
32//! assert_eq!(instance.critical_questions.len(), 6);
33//! ```
34//!
35//! ## References
36//!
37//! - Walton, D., Reed, C., & Macagno, F. (2008). *Argumentation Schemes.*
38//! Cambridge University Press.
39//! - Modgil, S. & Prakken, H. (2014). *The ASPIC+ framework.*
40//! Argument & Computation 5(1).
41
42#![deny(missing_docs)]
43#![warn(clippy::all)]
44
45pub mod aif;
46pub mod aspic;
47pub mod catalog;
48pub mod critical;
49pub mod error;
50pub mod instance;
51pub mod registry;
52pub mod scheme;
53pub mod types;
54
55pub use aif::{AifDocument, AifEdge, AifNode, aif_to_instance, instance_to_aif};
56pub use aspic::{add_counter_argument, add_scheme_to_system};
57pub use error::Error;
58pub use instance::{CriticalQuestionInstance, SchemeInstance, instantiate};
59pub use registry::CatalogRegistry;
60pub use scheme::{ConclusionTemplate, PremiseSlot, SchemeMetadata, SchemeSpec};
61pub use types::{Challenge, SchemeCategory, SchemeId, SchemeStrength, SlotRole};