ArgBlazer explores decision landscapes using argumentation frameworks.
ArgBlazer lets you construct an argumentation framework (AF) incrementally, step forward and backward through the construction, and watch the extensions and decision outcomes update at every step.
Key features
Interactive graph visualization
Generates an interactive HTML report from YAML describing an argumentation framework—typed interactively in the playground editor, or read from a file in VS Code—displayed side by side with the YAML.
Extensions
Automatically computes and displays conflict-free, admissible, complete, preferred, grounded, and stable extensions.
Step-by-step construction
Construct an AF incrementally by adding arguments and attacks, and step forward and backward through the construction to observe how each argument affects the extensions and decision outcomes.
Cases
Assign arguments to named cases and show only the arguments belonging to selected cases, with extensions and decisions recomputed accordingly.
Decisions
Declare decisions of interest and specify how each answer is extracted from the AF via a criterion, a quantifier, and a choice of semantics; answers update automatically at every step.
Argument labeling
Selecting an extension colors each argument by its label, with a legend below the graph—In and Not in by default, and a checkbox to distinguish out and undec.
Graph layout control
Anchor annotations control which arguments are placed at the top or bottom of the graph layout.
Zoom controls
Zoom in, zoom out, and fit-to-view buttons on the graph.
Live reload
In VS Code, the report updates automatically whenever the YAML file is saved. In the playground, press Cmd+S (Mac) or Ctrl+S (Windows/Linux) to apply your changes in the browser.
Shareable URLs
The browser playground encodes your framework in the URL, so any exploration can be shared as a link.
Export to HTML
Right-click the report panel and select "Export as HTML" to save as a standalone HTML file.
Examples
Step-by-step construction
Arguments are introduced incrementally across steps, with the extensions recomputed at each step.
ARGUMENTS:
a:
step: 1
b:
step: 1
c:
step: 2
d:
step: 3
ATTACKS:
b: [a]
c: [b]
d: [c]
graph BT
classDef default fill:#D5E8D4,stroke:#000000
classDef ghost fill:transparent,stroke:none,color:transparent
subgraph r2[Rank 2]
b
end
subgraph r1[Rank 1]
a
end
class r1,r2 ghost
b --> a
graph BT
classDef default fill:#D5E8D4,stroke:#000000
classDef add fill:#D5E8D4,stroke:#000000,stroke-width:4px
classDef ghost fill:transparent,stroke:none,color:transparent
subgraph r3[Rank 3]
c
end
subgraph r2[Rank 2]
b
end
subgraph r1[Rank 1]
a
end
class r1,r2,r3 ghost
b --> a
c ==> b
class c add
graph BT
classDef default fill:#D5E8D4,stroke:#000000
classDef add fill:#D5E8D4,stroke:#000000,stroke-width:4px
classDef ghost fill:transparent,stroke:none,color:transparent
subgraph r4[Rank 4]
d
end
subgraph r3[Rank 3]
c
end
subgraph r2[Rank 2]
b
end
subgraph r1[Rank 1]
a
end
class r1,r2,r3,r4 ghost
b --> a
c --> b
d ==> c
class d add
Top / bottom layout
Annotations control which arguments are placed at the top or bottom of the graph.
ARGUMENTS:
a:
anchor: top
b:
c:
d:
anchor: bottom
e:
anchor: bottom
ATTACKS:
b: [a]
c: [b]
d: [c]
e: [b]
graph BT
classDef default fill:#D5E8D4,stroke:#000000
classDef ghost fill:transparent,stroke:none,color:transparent
subgraph r4[Rank 4]
d
end
subgraph r3[Rank 3]
c
e
end
subgraph r2[Rank 2]
b
end
subgraph r1[Rank 1]
a
end
class r1,r2,r3,r4 ghost
b --> a
c --> b
d --> c
e --> b
graph BT
classDef default fill:#D5E8D4,stroke:#000000
classDef ghost fill:transparent,stroke:none,color:transparent
subgraph r1[Rank 1]
d
e
end
subgraph r2[Rank 2]
c
b
end
subgraph r3[Rank 3]
a
end
class r1,r2,r3 ghost
b --> a
c --> b
d --> c
e --> b
Decisions
Decisions pose yes/no questions about the argumentation framework; each is answered against the computed extensions and updates at every step.
ARGUMENTS:
dine-in:
to-go:
soggy:
fryer:
ATTACKS:
to-go: [dine-in]
dine-in: [to-go]
soggy: [to-go]
fryer: [soggy]
DECISIONS:
"Can we get fried chicken to go?":
criterion: to-go
quantifier: at least one
semantics: preferred
"Must we get fried chicken to go?":
criterion: to-go
quantifier: all
semantics: preferred
graph BT
classDef default fill:#D5E8D4,stroke:#000000
classDef in fill:#0F7C0F,stroke:#000000,color:#ffffff
din["dine-in"]
tog["to-go"]
sog["soggy"]
fry["fryer"]
tog --> din
din --> tog
sog --> tog
fry --> sog
class tog,fry in
graph BT
classDef default fill:#D5E8D4,stroke:#000000
classDef in fill:#0F7C0F,stroke:#000000,color:#ffffff
din["dine-in"]
tog["to-go"]
sog["soggy"]
fry["fryer"]
tog --> din
din --> tog
sog --> tog
fry --> sog
class din,fry in
Argument labeling
Clicking an extension highlights the arguments it contains. By default the graph shows two colors—In and Not in; ticking "Distinguish Out/Undec" in the legend splits "Not in" into out (attacked by a member) and undec (neither).
graph BT
classDef in fill:#0F7C0F,stroke:#000000,color:#ffffff
classDef notin fill:#D5E8D4,stroke:#000000
din["dine-in"]
tog["to-go"]
sog["soggy"]
fry["fryer"]
tog --> din
din --> tog
sog --> tog
fry --> sog
class fry in
class din,tog,sog notin
graph BT
classDef in fill:#0F7C0F,stroke:#000000,color:#ffffff
classDef out fill:#D5E8D4,stroke:#000000
classDef undec fill:#FFFFFF,stroke:#000000
din["dine-in"]
tog["to-go"]
sog["soggy"]
fry["fryer"]
tog --> din
din --> tog
sog --> tog
fry --> sog
class fry in
class sog out
class din,tog undec
In the grounded extension {fryer}, soggy is out (attacked by fryer) while dine-in and to-go remain undecided (they only attack each other). Each theme gives the three labels distinct colors—Green: in (dark green), out (light green), undec (white); XRAY: in (blue), out (orange), undec (yellow).
YAML Structure
ArgBlazer reads YAML files with these top-level fields.
Field names are case-insensitive: exhibit, Attacks, etc. are accepted as well.
| Field | Required | Type | Description |
|---|---|---|---|
EXHIBIT |
No | String | Context information displayed in the Exhibit section |
ARGUMENTS |
Yes | Mapping | Argument definitions, keyed by argument ID (e.g. a, to-go). The ID labels the node in the graph and is referenced in ATTACKS and in a decision's criterion. An ID cannot begin with ~, which is reserved to mark exclusion in a decision's criterion. Arguments may also include the annotations below. |
ATTACKS |
No | Mapping | Attack relationships from attacker to targets, e.g. b: [a] means b attacks a. A single target may also be written without brackets: b: a |
DECISIONS |
No | Mapping | Yes/no questions keyed by question text; each has a criterion — an argument ID, or a list of them, where a ~ prefix excludes an argument and the terms combine conjunctively ([b, ~c] means "contains b and not c") — a quantifier (at least one, all, or none), and a semantics type (conflict_free, admissible, complete, preferred, grounded, or stable) |
Argument annotations
| Annotation | Type | Description |
|---|---|---|
summary |
String | Brief description shown on graph nodes |
details |
String or list | Extended details as a list of key-value pairs with arbitrary sub-fields (e.g. rule, evidence, conclusion) |
step |
Integer | Which step the argument is introduced (for incremental construction) |
anchor |
String | Place this argument at the top or bottom of the graph layout (top or bottom) |
cases |
List | The named cases this argument belongs to, used for filtering arguments. The scalar all is a reserved wildcard meaning every named case in the file (a list such as [all] is a literal case named "all") |