
Implements a lightweight ASPIC+-like framework for structured argumentation, offering a Prolog interpreter with GUI and library integration via Gradle, Maven, and NPM.
Arg2P is an implementation of the ASPIC+ framework for structured argumentation. Built on top of the tuProlog engine, it runs on the JVM, in JavaScript (Node.js and browsers) and in Python, with the same API.
More details are available on the official wiki.
Arg2P is described in:
Individual features — burden of persuasion, defeasible preferences, modularity, causality, distributed reasoning — have their own papers, listed on the References page of the wiki.
If you use Arg2P in academic work, please cite:
@article{arg2p,
author = {Calegari, Roberta and Omicini, Andrea and Pisano, Giuseppe and Sartor, Giovanni},
title = {{Arg2P}: an argumentation framework for explainable intelligent systems},
journal = {Journal of Logic and Computation},
volume = {32},
number = {2},
pages = {369--401},
year = {2022},
doi = {10.1093/logcom/exab089}
}@phdthesis{pisano2024argumentation,
author = {Pisano, Giuseppe},
title = {Argumentation for legal reasoning: meta-models, technology and beyond},
school = {Alma Mater Studiorum --- Universit\`a di Bologna},
year = {2024},
doi = {10.48676/unibo/amsdottorato/11671}
}Arg2p is available as a 2P-Kt library.
To import the Arg2p module into your Kotlin-based Gradle project, declare the dependency in your build.gradle(.kts) file
(<VERSION> is the latest release, shown by the Maven Central badge above):
repositories {
mavenCentral()
}
dependencies {
implementation("it.unibo.tuprolog.argumentation:arg2p-jvm:<VERSION>")
}import it.unibo.tuprolog.argumentation.Arg2p
fun main() {
val (graph) =
Arg2p.of(
"""
f1 :=> d.
f2 :=> -d.
""".trimIndent(),
).graphs()
graph.labellings.forEach {
println("${it.label} : ${it.argument.conclusion}")
}
}For a complete example, check out the GitHub demo.
The Arg2P software is available on NPM as a JavaScript library as well. It can be found under the @tuprolog organization.
To use the library, add the dependency to your package.json (<VERSION> is the latest release, shown by the npm
badge above):
{
"dependencies": {
"@tuprolog/arg2p": "<VERSION>"
}
}import { Arg2p } from '@tuprolog/arg2p'
const [graph] = Arg2p.of(`
f1 :=> d.
f2 :=> -d.`).graphs()
graph.labellings.forEach(it => console.log(`${it.label} : ${it.argument.descriptor}`))For a complete example, see the repository.
The same API, in snake case, is on PyPI: pip install arg2p (the wheel bundles a Java runtime).
from arg2p import Arg2p
(graph,) = Arg2p.of("f1 :=> d.\nf2 :=> -d.").graphs()
for labelled in graph.labellings:
print(f"{labelled.label} : {labelled.argument.conclusion}")The Arg2p IDE is available on the Releases section of the GitHub repository.
In the latest release page, download the Asset named:
arg2p-ide-<VERSION>-redist.jar
a self-contained, executable Jar containing the 2P-Kt-based Prolog interpreter (<VERSION> is the release
version).
After you download the jar, you can simply launch it by running:
java -jar arg2p-ide-<VERSION>-redist.jarIf your JVM is properly configured, you can also start the IDE by double-clicking the JAR file.
Try Arg2P directly in your browser using the Web Playground.
No installation required. It runs in two modes: Structured, to write a theory and query it as in the
desktop IDE, and Abstract, to draw an argumentation framework and evaluate it with abstract::solve/5
under any of the supported semantics. It ships ready-made examples, and setups can be shared as a link.
If you encounter any issues, please report them on the GitHub Issues page.
Your feedback helps improve the project!
Arg2P is an implementation of the ASPIC+ framework for structured argumentation. Built on top of the tuProlog engine, it runs on the JVM, in JavaScript (Node.js and browsers) and in Python, with the same API.
More details are available on the official wiki.
Arg2P is described in:
Individual features — burden of persuasion, defeasible preferences, modularity, causality, distributed reasoning — have their own papers, listed on the References page of the wiki.
If you use Arg2P in academic work, please cite:
@article{arg2p,
author = {Calegari, Roberta and Omicini, Andrea and Pisano, Giuseppe and Sartor, Giovanni},
title = {{Arg2P}: an argumentation framework for explainable intelligent systems},
journal = {Journal of Logic and Computation},
volume = {32},
number = {2},
pages = {369--401},
year = {2022},
doi = {10.1093/logcom/exab089}
}@phdthesis{pisano2024argumentation,
author = {Pisano, Giuseppe},
title = {Argumentation for legal reasoning: meta-models, technology and beyond},
school = {Alma Mater Studiorum --- Universit\`a di Bologna},
year = {2024},
doi = {10.48676/unibo/amsdottorato/11671}
}Arg2p is available as a 2P-Kt library.
To import the Arg2p module into your Kotlin-based Gradle project, declare the dependency in your build.gradle(.kts) file
(<VERSION> is the latest release, shown by the Maven Central badge above):
repositories {
mavenCentral()
}
dependencies {
implementation("it.unibo.tuprolog.argumentation:arg2p-jvm:<VERSION>")
}import it.unibo.tuprolog.argumentation.Arg2p
fun main() {
val (graph) =
Arg2p.of(
"""
f1 :=> d.
f2 :=> -d.
""".trimIndent(),
).graphs()
graph.labellings.forEach {
println("${it.label} : ${it.argument.conclusion}")
}
}For a complete example, check out the GitHub demo.
The Arg2P software is available on NPM as a JavaScript library as well. It can be found under the @tuprolog organization.
To use the library, add the dependency to your package.json (<VERSION> is the latest release, shown by the npm
badge above):
{
"dependencies": {
"@tuprolog/arg2p": "<VERSION>"
}
}import { Arg2p } from '@tuprolog/arg2p'
const [graph] = Arg2p.of(`
f1 :=> d.
f2 :=> -d.`).graphs()
graph.labellings.forEach(it => console.log(`${it.label} : ${it.argument.descriptor}`))For a complete example, see the repository.
The same API, in snake case, is on PyPI: pip install arg2p (the wheel bundles a Java runtime).
from arg2p import Arg2p
(graph,) = Arg2p.of("f1 :=> d.\nf2 :=> -d.").graphs()
for labelled in graph.labellings:
print(f"{labelled.label} : {labelled.argument.conclusion}")The Arg2p IDE is available on the Releases section of the GitHub repository.
In the latest release page, download the Asset named:
arg2p-ide-<VERSION>-redist.jar
a self-contained, executable Jar containing the 2P-Kt-based Prolog interpreter (<VERSION> is the release
version).
After you download the jar, you can simply launch it by running:
java -jar arg2p-ide-<VERSION>-redist.jarIf your JVM is properly configured, you can also start the IDE by double-clicking the JAR file.
Try Arg2P directly in your browser using the Web Playground.
No installation required. It runs in two modes: Structured, to write a theory and query it as in the
desktop IDE, and Abstract, to draw an argumentation framework and evaluate it with abstract::solve/5
under any of the supported semantics. It ships ready-made examples, and setups can be shared as a link.
If you encounter any issues, please report them on the GitHub Issues page.
Your feedback helps improve the project!