<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Notation for Declaratively Describing Arguments</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Simon Wells</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mark Snaith</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Edinburgh Napier University</institution>
          ,
          <addr-line>10 Colinton Road, Edinburgh, EH10 5DT, Scotland</addr-line>
          ,
          <country country="UK">UK</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Robert Gordon University</institution>
          ,
          <addr-line>Garthdee House, Aberdeen, AB10 7QB, Scotland</addr-line>
          ,
          <country country="UK">UK</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2026</year>
      </pub-date>
      <abstract>
        <p>We introduce the Simple Argument Description Notation (SADN), a declarative language for describing arguments. SADN is built upon the existing, document-oriented, SADFace argument description format and is used to interactively and declaratively construct argument descriptions. A worked illustrated example is presented in which an argument model is constructed through the application of SADN. The Simple Argument Description Notation (SADN1) is a language for describing arguments in an incremental, line-oriented declarative fashion. SADN is built upon the Simple Argument Description Format (SADFace) [1] which provides a core ontology of argumentative concepts and an implemented library for constructing and manipulating SADFace documents using either Python3 or Javascript. The core idea behind SADN is that the SADFace document is interpreted as a dynamic model of the argument at issue. The user makes line oriented declarations such that each declaration modifies the SADFace argument description, leaving a complete, coherent and consistent SADFace model at each stage. This builds upon prior work on declarative dialogue description languages [2]. The user might start with an empty model, or load an existing model for further manipulation and then execute SADN declarations where each declaration is a command in the Read-Evaluate-Print Loop (REPL) and each line of the REPL represents a distinct, indexed, temporal timestep in the life of the argument model. A key conceptual diference between SADFace and SADN lies in the idea that SADFace is a single static object, a multi-line document, whereas SADN extends this idea to interpret the SADFace document as a dynamic model that exists wholly and fully formed at each time step as indexed by REPL lines. One way of interpreting this relationship is as a single SADFace document representing the state of the SADN dialogue, or alternatively, that SADN generates a directed graph of succcessive SADFace documents, each representing the state of the world after a SADN declaration. SADN and SADFace should therefore be considered as isomorphic modes of interaction with the same underlying argumentative model. One motivation for this work is to better capture the dynamic process that relates dialogical dynamics to a argumentative structure. After any given utterance within a dialogue, there exists a corresponding argumentative structure that models the state of the arguments, made by the participants, for and against the issue that is at stake. This initial version of SADN focusses solely upon capturing the dynamic construction aspect of the argument model and leaves the next stage of capturing dialogue dynamics to future work. In the remainder of this paper we begin by briefly discussing related work, cover some background material, in the form of a brief introduction to the SADFace format and library implementation upon which SADN builds, then introduce an annotated presentation of the SADN commands. We present</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;Argument Description</kwd>
        <kwd>Notation</kwd>
        <kwd>Declarative Programming</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>an example of a SADN session and some discussion of supporting tooling and applications before
concluding with a discussion of future directions.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Related Work</title>
      <p>
        Two archetypal prior approaches to declarative argument descriptions include DeLP [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and ASPIC+ [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
However neither is a general purpose language for describing arguments, each of which is associated
with a particular, opinionated approach to, defeasible logic programming in the case of DeLP, and
structured argument evaluation in the case of ASPIC+. With SADN we seek to develop a general purpose
notation for describing arguments which can subsequently interoperate with other downstream and
upstream tools, including, but not limited to DeLP [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], ASPIC+ [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], AIF [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], TOAST [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], and others.
Because SADN reuses SADFace as a core model, and SADFace in turn is compatible with the core of AIF,
there is a reasonably rich and straightforward path from SADN through SADFace to AIF, suggesting an
opportunity for realising future executable pipelines processing argumentative information.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. The Simple Argument Description Format (SADFace)</title>
      <p>SADN builds directly upon the core concepts defined within SADFace, as an argument description
format, whilst also utilising the argumentative model built into the SADFace library implementation.
Therefore it is sensible to briefly describe those features of SADFace most pertinent to SADN.</p>
      <p>
        SADFace is a Javascript Object Notation (JSON) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] based document format for describing analysed
argument structure and associated meta-data. The aim of this work is to build argument tools for the
web. That is simple, flexible, extensible tools that fit into existing web-workflows and tool-chains. A
developer should be able to adopt SADFace and start describing arguments or using those descriptions,
really easily. Parsing a SADFace document into a Javascript application should not require any special
tools, it is just JSON. The structure of the format has been designed to align with a straightforward
model of argument structure, defined in such a way as to align with most of the intuitions that an
everyday understanding of argument will include, whilst still supporting more advanced features.
      </p>
      <p>Arguments are made up from statements (or strings if you’re a programmer) that capture either a
“claim” or supporting information for that claim. In SADFace these statements are called “Argument
Atoms”, or just “atoms”. A simple argument is a collection of such atoms that are linked together.
For a simple, single, argument we generally say that one of the atoms is a conclusion, and the other
atoms are premises supporting that conclusion. The exact way that premises support a conclusion is
defined by an argumentation scheme. An argumentation scheme captures a stereotypical pattern of
argumentative reasoning or inference, so diferent arguments can be categorised into diferent types. A
rough rule of thumb within SADFace is to consider every individual argument is being an instance of
an argumentation scheme.</p>
      <p>
        The underlying model of SADFace is the Mathematical Graph [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], a collection of nodes connected
together by edges. More specifically, SADFace uses a directed graph. In this case the edges have a
direction, they claim a relationship that works in a particular direction between any pair of nodes that
are connected by a given edge. A SADFace document contains a set of nodes and a set of edges. Edges
are quite simple, they have an ID so that the instance of the edge can be uniquely identified from all
other edges, and they also have a source and a target. The source and target in an edge are both IDs
of nodes, i.e. the ID of the node that this edge goes from, the source ID, and the ID of the node that
this edge goes to, the target ID. Nodes are slightly more complicated, currently there are two types of
node, atom nodes and scheme nodes. Atoms and schemes are linked together using the aforementioned
edges. There are also some restrictions upon which types of node can be lined directly to each other:
      </p>
      <p>
        Atoms cannot be linked directly to each other. They must be linked via a Scheme node. This is in line
with the underlying model of the Argument Interchange Format (AIF) [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] which restricts Information
or i-nodes, the equivalent of our Atoms, from being linked directly to each other. This is an important
" edges " : [
{
" i d " : " b00535db −25 b8 −45 b4 −99 e9 −2955 f a 0 b a 5 4 c " ,
" s o u r c e _ i d " : " 9 c f d 9 9 f 2 −2 cd3 −4 fba −8580 −7 e76add66e8b " ,
" t a r g e t _ i d " : " df5d8a22 − bf5d −4 da3 − b902 − c c d 4 5 a 3 3 f 5 c 2 "
} ,
. . .
] ,
" metadata " : {
" c o r e " : {
" a n a l y s t _ e m a i l " : " s . w e l l s @ n a p i e r . ac . uk " ,
" analyst_name " : " Simon W e l l s " ,
" c r e a t e d " : "2025 −02 −23 T02 : 2 7 : 3 6 " ,
" e d i t e d " : "2025 −10 −08 T16 : 5 2 : 3 2 " ,
" i d " : " 9 4 a975db −25 ae −4 d25 −93 cc −1 c 0 7 c 9 3 2 e 2 f 9 " ,
" v e r s i o n " : " 0 . 5 . 3 . 2 "
" i d " : " 9 c f d 9 9 f 2 −2 cd3 −4 fba −8580 −7 e76add66e8b " ,
" metadata " : { } ,
" s o u r c e s " : [ ] ,
" t e x t " : " I f you a r e g o i n g t o d i e then you s h o u l d t r e a s u r e e v e r y
moment " ,
" ty pe " : " atom "
" i d " : " df5d8a22 − bf5d −4 da3 − b902 − c c d 4 5 a 3 3 f 5 c 2 " ,
" name " : " Support " ,
" ty pe " : " scheme "
{
restriction as it means that for every link between a pair of atoms, for the link to be valid, it must define
a known argumentative relationship.
      </p>
      <p>Figure 1 shows a fragment of JSON that presents an abbreviated illustration of an argument described
in SADFace. Note that only one example of each element is included and the remainder of the full
analysis has been elided for brevity and replaced with ‘. . . ’.</p>
      <p>
        This description yields a visualisation, using the MonkeyPuzzle argument diagramming layout
method [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], as show inf Figure 2. SADFace has a canonical Python implementation2 which is free
software available through the Python Package Index (PyPi3) and released under the Gnu General
Public License (GPL) v.3.0 as a part of the wider Open Argumentation Platform4 [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
      </p>
      <sec id="sec-3-1">
        <title>2$ pip install sadface 3https://pypi.org/ 4http://www.openargumentation.org</title>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. The Simple Argument Description Notation (SADN)</title>
      <p>SADN is designed primarily to be used in a terminal or REPL, or else piped between command line
applications. The result of any given SADN expression is an argument structure that is a syntactically
valid5 SADFace model.</p>
      <sec id="sec-4-1">
        <title>4.1. SADN Commands</title>
        <p>The following is an annotated list of the core SADN commands for declarative SADFace argument
model construction and manipulation. Each command is depicted in bold and the annotations in regular
text. Some elements are depicted using the following form $UPPERCASE to indicate variables or
elements that are not SADN commands. Such elements includes identifiers, and text string values
associated with SADFace keys. Additionally, the vertical bar ‘|’ is used to indicate a choice between
alternatives, e.g.‘a | b’, meaning ‘a or b’.
atom(id:$ID, text:$TEXT) – Add a new atom node. $CONTENT is an optional quoted string
containing the textual content of the atom. If the atom command is executed with an existing $ID and a
new text $TEXT then this will cause the existing atom node’s text value to be updated with the
new $TEXT string.
scheme(id:$ID, name:$TEXT) – Add a new scheme node. $TEXT is an optional quoted string
containing the name of the associated argumentation scheme. If no $TEXT is supplied then
a generic “support” name will be used. If the scheme command is executed with an
existing $ID and a new name $TEXT then the existing scheme node will be updated with the new name.
Commentary: The atom and scheme commands are grouped together because they have the same basic
form and have similar efects. Each command can be run without arguments to yield, respectively, the
introduction of a single SADFace atom or scheme node with a generic name/content and automatically
generated ID into the SADFace model.
support(scheme:$ID, conclusion:$ID, premise:$ID, ...) – Create a new supportive relationship
between the existing nodes identified by the conclusion and premise IDs. The support command
allows an arbitrary number of premise IDs to be supplied. If no scheme ID is supplied then a new
generic “support” node is created .
attack(source:$ID, target:$ID) – Create a new attack relationship between the supplied nodes
identified by the source and target $IDs. Attack is a uni-directional conflict from one argument that is
directed towards another argument. A new conflict node of type attack is created as a result.</p>
        <sec id="sec-4-1-1">
          <title>5semantic validation is left to future work.</title>
          <p>disagree($ID, $ID, ...) – Create a new disagreement relationship between the nodes identified by
the supplied $IDs. Disagree is a bi-directional conflict between two or more arguments A new
conflict node of type disagreement is created as a result.</p>
          <p>Commentary: The support, attack, and disagree commands are grouped together because they
work similarly, used to create relationships between nodes, but have distinct individual semantic
interpretations in terms of how they afect the SADFace model.
argument(scheme:$TEXT, conclusion:$ID | text:$CONTENT, premise:$ID | text:$CONTENT, ...)
– Builds a complete argument structure in a single command. If no name $TEXT is supplied
then a generic ‘support’ label will be added to the scheme. The remainder of the arguments
are a comma separated list of arbitrary length of either $IDs referring to pre-existing nodes or
double-quoted $TEXT strings which cause new atoms to be created. The first ID supplied will be
interpreted as the concluding node, all other IDs will be interpreted as premises.</p>
          <p>Commentary: The argument command is syntactic sugar to enable an entire argument structure to be
constructed in one declaration and in a fairly ad-hoc manner using a mixture of IDs for pre-existing
atoms and content for atoms to be created during the execution of this command. The usefulness of
the argument() command for rapidly introducing entire argument structures comes at the expense of
some additional complexity.
remove(id:$ID, ...) – Remove the element identified by $ID from the model. This also removes any
dependent elements within the SADFace model such as edges if the removed element is either
the source or target of the edge.The remove operation is idempotent and repeated use on the
same $ID will make no further change to the model. If no $ID is supplied the remove has no
efect on the model.</p>
          <p>Commentary: The remove command is unique in that it is the only command that will remove
specified elements from the SADFace model
metadata(id:$ID, namespace:$TEXT, $KEY:$TEXT) – Used to add a metadata entry to the identified
namespace of the SADFace element identified by $ID. Elements that can support metadata blocks
are the model’s global metadata block, individual nodes, and individual resources. If the $KEY
already exists then the $TEXT updates itand if the $KEY doesn’t exist then that key is created.
Commentary: Name-spaced metadata at defined places in the model is a key to SADFace’s claim to
extensibility. The metadata command enables metadata to be captured as required during declarative
SADN REPL sessions.
atoms - Lists the atom nodes in the current SADFace model.
schemes - Lists the scheme nodes in the current SADFace model.
conflicts - Lists the conflict nodes, in the current SADFace model which includes both attacks and
disagreements.
edges - Lists the edges in the current SADFace model.</p>
          <p>
            Commentary: These are used primarily to see what nodes and edges are in the current model and to
access the mapping from UUID to local alias. Because the elements that make up a SADFace model
can be spread over an extended SADN REPL session and can be dificult to keep track of, it is useful
to be able to access, list, group, and display the elements of the model so that they can be more easily
manipulated. These commands work in concert with the print and prettyprint commands to support
interactive manipulation of the SADFace model.
export(type:$TYPE) – SADFace supports exporting the SADFace model into a range of other
textbased forms, for example, Dot and Cytoscape[
            <xref ref-type="bibr" rid="ref10">10</xref>
            ]. The export keyword converts the SADFace
model into the nominated model and displays it in the REPL.
save(type:$TYPE, name:$PATHNAME) – Saves the SADFace model to a file on disk. Save supports
all of the textual formats valid in the export keyword but adds binary formats that can’t be
usefully displayed in the REPL including jpg, png, and svg formats.
load(name:$PATHNAME) – Loads the SADFace document from the supplied pathname.
clear – Return the current situation to an empty default SADFace model.
print – Display the SADFace model as a single compact string.
prettyprint – Display the SADFace model in a pretty printed JSON form using tabs and newlines.
help – Display a list of available commands.
          </p>
          <p>Commentary: This final grouping of commands are all utility functions for manipulating, importing,
exporting, and working with SADN but don’t directly modify the SADFace model.</p>
          <p>Notice that some commands are complex and take one or more arguments which are embraced
in parenthesis whereas other simple commands include neither arguments nor parenthesis. Of the
commands that take arguments, notice that the argument lists are explicitly structured as comma
separated lists of key:value pairs.</p>
          <p>In any command that consumes an $ID (except for the remove command, if no $ID is supplied then a
new UUID and local UUID Alias will be created that are unique to the SADFace elements being created.
If the same command is called without specified $IDs then that command will complete each time with
new elements created containing generated IDs.</p>
          <p>Where commands can support more complex relationship structures, such as in the support, attack,
and disagree relationships, the first $ID is interpreted as the head element, and any remaining $ID
elements are interpreted as the tail element(s). For example, support(id:a1, id:a2, id:a3) yields an
argument where atom a1 is the conclusion, and the remaining atoms a2 and a3 are premises, all of
which are linked via a ‘support’ scheme node.</p>
        </sec>
      </sec>
      <sec id="sec-4-2">
        <title>4.2. UUID Aliasing</title>
        <p>One challenging user experience issue within SADN is the use of long, and quite unwieldy, universally
unique identifiers (UUIDs) which are core to how SADFace creates globally unique argument instances.
See Figure 1 for an illustration of a range of UUIDs associated with the various “id” keys in SADFace.
Manipulating UUIDs within the command line involves either error prone typing or else copy-pasting.
SADN introduces transparent local aliasing as syntactic sugar to make it easer to use SADN without
manipulating otherwise unwieldy UUIDS in the terminal and thus to improve the user experience.
UUIDs are replaced locally with short monotonically increasing unique identifiers whose basic form
runs together a lowercase letter code indicating node type and an integer (starting at 1 and incrementing
monotonically as necessary). For example, an Atom, having textual content, associated metadata, and a
unique ID might be depicted as follows in SADFace:
{</p>
        <p>But when instantiated in SADN, the atom identified by the UUID
“ae3f0c7f-9f69-4cab-9db33b9c46f56e09” might be referred to using the term a1 for Atom #1 within that specific SADN session.
Each SADFace element is treated similarly, assigned a letter code based upon type and a numeric
identifier based upon when the element was expressed during the current SADN session. Available
letter codes include a for Atom, s for scheme, c for conflicts, and e for edges. Internally SADN session
IDs are mapped to original UUIDs using a lookup table. If a SADFace document is read into a SADN
session then the original UUIDs are maintained in the lookup table and SADN sessions IDs are generated
incrementally as the document is processed. If a SADN session starts with an empty document, then
session IDs are generated incrementally as needed as the session progresses, UUIDs are also generated
for each element so that all SADFace models, generated through SADN, can be serialised to universally
valid SADFace documents.</p>
      </sec>
      <sec id="sec-4-3">
        <title>4.3. Tooling</title>
        <p>A limited prototype of SADN is included in the current SADFace release. To access this, you will need a
working Python 3 installation. SADFace can then be installed using pip, i.e. pip install sadface6. From
there, the SADFace REPL can be initiated using python3 -m sadface -i7. A SADFace configuration file
can be passed into the invocation of the SADN REPL which will cause the new SADFace model to be
built using configuration information, such as analyst email and name, from the file. This is achieved
using the following command python -m sadface -c test.cfg -i where the configuration is stored in the
test.cfg file 8</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Worked Illustrated Example</title>
      <p>In this example, we’ll recreate the example argument from the MonkeyPuzzle demo. We’ll show the
commands in the REPL, and where appropriate, the SADFace model and MonkeyPuzzle visualisation.
Upon starting the SADFace REPL without a configuration file or any other inputs you will be presented
with the following prompt at which you can type SADN commands:
The SADFace REPL. Type ’help’ or ’help &lt;command&gt;’ for assistance
&gt;
The associated SADFace model is empty, containing neither nodes nor edges or resources and the
core metadata will contain default information for the analyst name and email address keys, current
timestamps for the created and edited keys, a universally unique identifier for the ID key, and the
semantic version number for the version of SADFace associated with the model. By executing the pp
command, the abbreviated version of the prettyprint command from the list introduced in section 4.1,
the current model will be displayed as follows:
The SADFace REPL. Type ’help’ or ’help &lt;command&gt;’ for assistance
&gt; pp
{
"edges": [],
"metadata": {
"core": {
"analyst_email": "Default Analyst Email",
"analyst_name": "Default Analyst Name",
"created": "2025-10-29T17:53:05",
"edited": "2025-10-29T17:53:30",
"id": "4ab333ea-a003-4631-afa7-5f20806a8497",
"version": "0.5.3.2"
}
6It is best practise to install the SADFace tooling into a virtual environment
7NB. The invocation of Python might difer across platforms and installations.
8A valid starter configuration file can be found in the SADFace repo at SADFace/tools/python/etc/defaults.cfg.</p>
      <p>We can now add some nodes and edges to the model. Let’s start by adding the nodes for the initial
sub-argument, then we’ll use the print command and the list("atoms") commands to show the efect on
the model:
&gt; atom(text:"Every person is going to die")
&gt; atom(text:"You are a person")
&gt; atom(text:"You are going to die")
&gt; print
{"edges":[],"metadata":{"core":{"analyst_email":"Default Analyst Email","analyst_name":"
Default Analsyst Name","created":"2025-10-29T17:53:05","edited":"2025-10-29T17
:53:30","id":"4ab333ea-a003-4631-afa7-5f20806a8497","version":"0.5.3.2"}},"nodes
":[{"id":"a03ea3f2-70f2-42ed-962c-f15367e79de7","type":"atom","text":"Every person
is going to die","sources":[],"metadata":{}},{"id":"6e73e177-4e62-45e4-bd0d-62
d72891c339","type":"atom","text":"You are a person","sources":[],"metadata":{}},{"id
":"bba487d5-029a-4a1b-ae79-ad69c769382a","type":"atom","text":"You are going to die
","sources":[],"metadata":{}}],"resources":[]}
&gt;atoms
["a1":{"id":"a03ea3f2-70f2-42ed-962c-f15367e79de7", "text":"Every person is going to die
"}, "a2":{"id":"6e73e177-4e62-45e4-bd0d-62d72891c339", "text":"You are a person"}, "
a3":{"id":"bba487d5-029a-4a1b-ae79-ad69c769382a", "text":"You are going to die"}]
Now we’ll add the edges to join the atoms together into an argumentative structure. We’ll use the
support command to do this. We won’t specify a scheme ID as we haven’t created a scheme node yet.
Instead we’ll accept the scheme node generation as a side efect of creating the support structure. So
we’ll only identify the conclusion and premises, using the local atom IDs output from the list command
above and applying conclusion and premise labels. We’ll then use the schemes command to see the list of
scheme nodes, now that one has been created, and finish by displaying the current model using print
once more:
&gt; support(conclusion:"a3", premise:"a1", premise:"a2")
&gt;schemes
["s1":{"id":"b3b0e13a-8b8b-4e2a-9544-5ab401e58999", "name":"Support"}]
&gt; print
{"edges":[{"id":"81d94ca5-4cb1-4c4d-8486-708d45b45c4e","source_id":"a03ea3f2-70f2-42ed
-962c-f15367e79de7","target_id":"b3b0e13a-8b8b-4e2a-9544-5ab401e58999"},{"id":"233
af9c1-ba7e-4967-9c32-3025ac65ee67","source_id":"b3b0e13a-8b8b-4e2a-9544-5ab401e58999
","target_id":"bba487d5-029a-4a1b-ae79-ad69c769382a"},{"id":"75c9ef27-7ba4-4cbf-8fde
-e957698f472b","source_id":"6e73e177-4e62-45e4-bd0d-62d72891c339","target_id":"
b3b0e13a-8b8b-4e2a-9544-5ab401e58999"}],"metadata":{"core":{"analyst_email":"Default</p>
      <p>Analyst Email","analyst_name":"Default Analsyst Name","created":"2025-10-29T17
:53:05","edited":"2025-10-29T18:02:25","id":"4ab333ea-a003-4631-afa7-5f20806a8497","
version":"0.5.3.2"}},"nodes":[{"id":"a03ea3f2-70f2-42ed-962c-f15367e79de7","type":"
atom","text":"Every person is going to die","sources":[],"metadata":{}},{"id":"6
e73e177-4e62-45e4-bd0d-62d72891c339","type":"atom","text":"You are a person","
sources":[],"metadata":{}},{"id":"bba487d5-029a-4a1b-ae79-ad69c769382a","type":"atom
","text":"You are going to die","sources":[],"metadata":{}},{"id":"b3b0e13a-8b8b-4
e2a-9544-5ab401e58999","type":"scheme","name":"Support"}],"resources":[]}
Now is an opportune moment to view the visualisation of the argument structure constructed so far.
We’ll use MonkeyPuzzle to do this using the SADFace model from the REPL. The result is shown in
Figure 3</p>
      <p>Finally we’ll complete the argument map from the MonkeyPuzzle demonstration but this time we’ll
use the argument() command to combine a number of simpler commands into a single declaration.</p>
      <p>This combines supplying a mixture of local IDs from existing atoms, and strings to create new nodes
or reuse existing nodes, as required within the same command to build an argument structure in a
single declaration. Whilst such syntactic sugar is not necessary, and the same efect can be built from
primitive SADN commands, this approach does reduce the number of commands necessary to achieve
the same efect.
&gt; argument(conclusion: "You should treasure every moment", premise: "a3", premise: "If
you are going to die then you should treasure every moment")
&gt; atoms
["a1":{"id":"a03ea3f2-70f2-42ed-962c-f15367e79de7", "text":"Every person is going to die
"}, "a2":{"id":"6e73e177-4e62-45e4-bd0d-62d72891c339", "text":"You are a person"}, "
a3":{"id":"bba487d5-029a-4a1b-ae79-ad69c769382a", "text":"You are going to die"}, "
a4":{"id":"3b666117-d50c-4de8-b2ed-29f6ae98f10a", "text":"You should treasure every
moment"}, "a5":{"id":"df8e97d1-b2d6-4768-bd82-ea91a8820313", "text":"If you are
going to die then you should treasure every moment"}]
&gt; schemes
["s1":{"id":"b3b0e13a-8b8b-4e2a-9544-5ab401e58999", "name":"Support"}, "s2":{"id":"42
ba2acc-d8d2-4d8f-ae93-c7f8c383b4bb", "name":"Support"}]
&gt; print
{"edges":[{"id":"81d94ca5-4cb1-4c4d-8486-708d45b45c4e","source_id":"a03ea3f2-70f2-42ed
-962c-f15367e79de7","target_id":"b3b0e13a-8b8b-4e2a-9544-5ab401e58999"},{"id":"233
af9c1-ba7e-4967-9c32-3025ac65ee67","source_id":"b3b0e13a-8b8b-4e2a-9544-5ab401e58999
","target_id":"bba487d5-029a-4a1b-ae79-ad69c769382a"},{"id":"75c9ef27-7ba4-4cbf-8fde
-e957698f472b","source_id":"6e73e177-4e62-45e4-bd0d-62d72891c339","target_id":"
b3b0e13a-8b8b-4e2a-9544-5ab401e58999"},{"id":"e21ddbcc-ce50-4ce9-839e-5f8f5e2d5af4
","source_id":"df8e97d1-b2d6-4768-bd82-ea91a8820313","target_id":"42ba2acc-d8d2-4d8f
-ae93-c7f8c383b4bb"},{"id":"adbc1971-5334-4daa-86bb-d7d706a3b8cc","source_id":"42
ba2acc-d8d2-4d8f-ae93-c7f8c383b4bb","target_id":"3b666117-d50c-4de8-b2ed-29
f6ae98f10a"},{"id":"00695abb-e8aa-4f08-9af8-7fca55d53270","source_id":"bba487d5-029a
-4a1b-ae79-ad69c769382a","target_id":"42ba2acc-d8d2-4d8f-ae93-c7f8c383b4bb"}],"
metadata":{"core":{"analyst_email":"Default Analyst Email","analyst_name":"Default
Analsyst Name","created":"2025-10-29T17:53:05","edited":"2025-10-29T18:50:13","id
":"4ab333ea-a003-4631-afa7-5f20806a8497","version":"0.5.3.2"}},"nodes":[{"id":"
a03ea3f2-70f2-42ed-962c-f15367e79de7","type":"atom","text":"Every person is going to
die","sources":[],"metadata":{}},{"id":"6e73e177-4e62-45e4-bd0d-62d72891c339","type
":"atom","text":"You are a person","sources":[],"metadata":{}},{"id":"bba487d5-029a
-4a1b-ae79-ad69c769382a","type":"atom","text":"You are going to die","sources":[],"
metadata":{}},{"id":"b3b0e13a-8b8b-4e2a-9544-5ab401e58999","type":"scheme","name":"
Support"},{"id":"df8e97d1-b2d6-4768-bd82-ea91a8820313","type":"atom","text":"If you
are going to die then you should treasure every moment","sources":[],"metadata
":{}},{"id":"3b666117-d50c-4de8-b2ed-29f6ae98f10a","type":"atom","text":"You should
treasure every
moment","sources":[],"metadata":{}},{"id":"42ba2acc-d8d2-4d8f-ae93c7f8c383b4bb","type":"scheme","name":"Support"}],"resources":[]}</p>
      <p>The final Monkeypuzzle visualisation of the argument constructed in the SADN REPL can be seen in
Figure 4</p>
    </sec>
    <sec id="sec-6">
      <title>6. Applications</title>
      <p>
        There are a number of immediate applications for SADN. The primary application, in line with the earlier
example, is as an interactive declarative language, with supporting utilities, for constructing argument
models without needing to resort to manual argument diagramming software like MonkeyPuzzle. This
approach has been demonstrated in the worked example in section 5. MonkeyPuzzle and SADFace are
not the only target applications however, and the core commands could easily be reused to work with
other argument models and descriptions. One easy route towards this is through extending the export
functionality of SADFace to account for new models as they become available. A second application of
SADN is within an interactive argument evaluation context. In this application, SADN commands are
used to build a model that is then piped through additional tools to evaluate the argument on the fly,
for example, piping the state of the SADFace model from the SADN REPL through to a tool like TOAST
in order to evaluate the constructed model under the ASPIC+ theory. On design goal of SADN was to
produce a declarative language that could be used interactively when working with arguments, that
covers the core concepts of argumentative practise. This is similar to the goal of SADFace to cover those
same concepts from a document-oriented structured graph, perspective. This contrasts with the goals
of AIF, for example, which seeks to be a comprehensive upper ontology of argumentative concepts,
an approach that can bring additional complexity and reduce clarity for end-users. One additional
application that we are investigating is the use of SADN when providing structured argumentative
information to Large Language Models (LLMs) [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] in a prompt-style interface [
        <xref ref-type="bibr" rid="ref12 ref13">12, 13</xref>
        ]. Many argument
description formats are in graph-based file formats, expressed in JSON or XML, and whilst LLMs
have been gaining capabilities in parsing structure from such graphs, the underlying argumentative
relationships captured therein have proven elusive. The main interface to LLMs is textual, and interactive.
Users prompt the LLM to provide hopefully relevant responses and over multiple interactions, previous
results can afect future results, leading to a dialogue-like structure.
      </p>
    </sec>
    <sec id="sec-7">
      <title>7. Discussion &amp; Future Work</title>
      <p>There are a number of directions for future work. Firstly, refining the user experience of the SADN
notation by implementing more syntactic sugar and shortcuts to make input and manipulation simpler
and faster for experienced users. Secondly, improving the user experience within the SADFace REPL by
using suggested auto-complete data from existing variables and elements within the current model.
Thirdly, providing additional queues within the REPL using colour to diferentiate, i.e. keywords from
variables and elements. Fourthly, extending the notation to support construction of dialogues along
with the necessary machinery to link arguments with their associated dialogical elements.</p>
      <p>In conclusion, SADN enables us to eficiently build an argument description, declaratively,
interactively, and incrementally, in an eficient manner using a notation built upon the existing SADFace
argument description model.</p>
      <sec id="sec-7-1">
        <title>The author(s) have not employed any Generative AI tools.</title>
      </sec>
    </sec>
    <sec id="sec-8">
      <title>Acknowledgements</title>
      <p>Partly supported by the Engineering and Physical Sciences Research Council (EPSRC) of the UK
Government (grant number UKRI220).</p>
      <p>The authors wish to thank the reviewers for the kind, interested, and useful suggestions which will
inform the future directions of this work.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>J.</given-names>
            <surname>Douglas</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Wells</surname>
          </string-name>
          , Monkeypuzzle:
          <article-title>Towards next generation, free &amp; open-source, argument analysis tools</article-title>
          ,
          <source>in: Proceedings of the 17th International Workshop on Computational Models of Natural Argument (CMNA17)</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>S.</given-names>
            <surname>Wells</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Snaith</surname>
          </string-name>
          ,
          <article-title>Towards a declarative approach to constructing dialogue games</article-title>
          ,
          <source>in: Proceedings of the 21st International Workshop on Computational Models of Natural Argument (CMNA21)</source>
          ,
          <year>2021</year>
          , pp.
          <fpage>9</fpage>
          -
          <lpage>18</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A. J.</given-names>
            <surname>Garcia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G. R.</given-names>
            <surname>Simari</surname>
          </string-name>
          ,
          <article-title>Defeasible logic programming: DeLP-servers, contextual queries, and explanations for answers</article-title>
          ,
          <source>Argument &amp; Computation</source>
          <volume>5</volume>
          (
          <year>2014</year>
          )
          <fpage>63</fpage>
          -
          <lpage>88</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>S.</given-names>
            <surname>Modgil</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Prakken</surname>
          </string-name>
          ,
          <article-title>The aspic+ framework for structured argumentation: a tutorial</article-title>
          ,
          <source>Argument &amp; Computation</source>
          <volume>5</volume>
          (
          <year>2014</year>
          )
          <fpage>31</fpage>
          -
          <lpage>62</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>C.</given-names>
            <surname>Chesnevar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>McGinnis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Modgil</surname>
          </string-name>
          , I. Rahwan,
          <string-name>
            <given-names>C.</given-names>
            <surname>Reed</surname>
          </string-name>
          , G. Simari,
          <string-name>
            <given-names>M.</given-names>
            <surname>South</surname>
          </string-name>
          , G. Vreeswijk,
          <string-name>
            <given-names>S.</given-names>
            <surname>Willmott</surname>
          </string-name>
          ,
          <article-title>Towards an argument interchange format</article-title>
          ,
          <source>Knowledge Engineering Review</source>
          <volume>21</volume>
          (
          <year>2006</year>
          )
          <fpage>293</fpage>
          -
          <lpage>316</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>M.</given-names>
            <surname>Snaith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Reed</surname>
          </string-name>
          , Toast: online aspic+ implementation, in
          <source>: Proceedings of the Fourth International Conference on Computational Models of Argument</source>
          , IOS Press,
          <year>2012</year>
          , pp.
          <fpage>509</fpage>
          -
          <lpage>510</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>F.</given-names>
            <surname>Pezoa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. L.</given-names>
            <surname>Reutter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Suarez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ugarte</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Vrgoč</surname>
          </string-name>
          ,
          <article-title>Foundations of JSON schema</article-title>
          ,
          <source>in: Proceedings of the 25th International Conference on World Wide Web, International World Wide Web Conferences Steering Committee</source>
          ,
          <year>2016</year>
          , pp.
          <fpage>263</fpage>
          -
          <lpage>273</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>R.</given-names>
            <surname>Diestel</surname>
          </string-name>
          , Graph Theory, Springer Berlin, Heidelberg,
          <year>2025</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>S.</given-names>
            <surname>Wells</surname>
          </string-name>
          ,
          <article-title>The open argumentation platform (OAPL)</article-title>
          ,
          <source>in: Proceedings of Computational Models of Argument. (COMMA</source>
          <year>2020</year>
          ), Frontiers in Artifical Intelligence, IOS Press,
          <year>2020</year>
          , pp.
          <fpage>465</fpage>
          -
          <lpage>476</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>P.</given-names>
            <surname>Shannon</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Markiel</surname>
          </string-name>
          ,
          <string-name>
            <given-names>O.</given-names>
            <surname>Ozier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N. S.</given-names>
            <surname>Baliga</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Ramage</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Amin</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Schwikowski</surname>
          </string-name>
          , T. Ideker,
          <article-title>Cytoscape: a software environment for integrated models of biomolecular interaction networks</article-title>
          ,
          <source>Genome Research</source>
          <volume>13</volume>
          (
          <year>2003</year>
          )
          <fpage>2498</fpage>
          -
          <lpage>2504</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Vaswani</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Shazeer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Parmar</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Uszkoreit</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Jones</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. N.</given-names>
            <surname>Gomez</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Kaiser</surname>
          </string-name>
          ,
          <string-name>
            <surname>I. Polosukhin</surname>
          </string-name>
          ,
          <article-title>Attention is all you need</article-title>
          ,
          <source>in: Proceedings of the 31st International Conference on Neural Information Processing Systems</source>
          , NIPS'17, Curran Associates Inc.,
          <string-name>
            <surname>Red</surname>
            <given-names>Hook</given-names>
          </string-name>
          ,
          <string-name>
            <surname>NY</surname>
          </string-name>
          , USA,
          <year>2017</year>
          , p.
          <fpage>6000</fpage>
          -
          <lpage>6010</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>S.</given-names>
            <surname>Wells</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Snaith</surname>
          </string-name>
          ,
          <article-title>On the role of dialogue models in the age of large language models</article-title>
          ,
          <source>in: Proceeding of the the 23rd International Workshop on Computational Models of Natural Argument, CEUR</source>
          ,
          <year>2023</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>M.</given-names>
            <surname>Snaith</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Wells</surname>
          </string-name>
          ,
          <article-title>Retrieval augmented generation for immersive formal dialogue</article-title>
          ,
          <source>in: Proceedings of the Fifth European Conference on Argumentation</source>
          , College Publications, To Appear.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>