* elisp/hoa-mode.el, elisp/Makefile.am, elisp/README: New files. * debian/copyright, configure.ac, README, Makefile.am: Adjust. * doc/org/init.el.in: Adjust to load hoa-mode.el. * doc/org/spot.css: Add entries for HOA mode. * doc/org/hoa.org, doc/org/ltldo.org, doc/org/oaut.org, doc/org/tut20.org, doc/org/tut21.org, doc/org/tut22.org, doc/org/tut30.org: Make the HOA outputs as HOA.
67 lines
1.8 KiB
Org Mode
67 lines
1.8 KiB
Org Mode
# -*- coding: utf-8 -*-
|
|
#+TITLE: Creating an automaton in C++
|
|
#+SETUPFILE: setup.org
|
|
#+HTML_LINK_UP: tut.html
|
|
|
|
This example demonstrates how to create an automaton in C++, and then print it.
|
|
|
|
#+BEGIN_SRC C++ :results verbatim :exports both :wrap SRC hoa
|
|
#include <iostream>
|
|
#include "twaalgos/hoa.hh"
|
|
#include "twa/twagraph.hh"
|
|
|
|
int main(void)
|
|
{
|
|
// The dict is used to maintain the correspondence between the
|
|
// atomic propositions and the BDD variables to label the edges of
|
|
// the automaton.
|
|
spot::bdd_dict_ptr dict = spot::make_bdd_dict();
|
|
// This creates an empty automaton that we have yet to fill.
|
|
spot::twa_graph_ptr aut = make_twa_graph(dict);
|
|
|
|
// Since a BDD is associated to every atomic proposition, the
|
|
// register_ap() function returns a BDD variable number
|
|
// that can be converted into a BDD using bdd_ithvar().
|
|
bdd p1 = bdd_ithvar(aut->register_ap("p1"));
|
|
bdd p2 = bdd_ithvar(aut->register_ap("p2"));
|
|
|
|
// Set the acceptance condition of the automaton to Inf(0)&Inf(1)
|
|
aut->set_generalized_buchi(2);
|
|
|
|
// States are numbered from 0.
|
|
aut->new_states(3);
|
|
|
|
// new_edge() takes 3 mandatory parameters:
|
|
// source state, destination state, label
|
|
// and a last optional parameter can be used
|
|
// to specify membership to acceptance sets.
|
|
aut->new_edge(0, 1, p1);
|
|
aut->new_edge(1, 1, p1 & p2, {0});
|
|
aut->new_edge(1, 2, p2, {1});
|
|
aut->new_edge(2, 1, p1 | p2, {0, 1});
|
|
|
|
// Print the resulting automaton.
|
|
print_hoa(std::cout, aut);
|
|
return 0;
|
|
}
|
|
#+END_SRC
|
|
|
|
#+RESULTS:
|
|
#+BEGIN_SRC hoa
|
|
HOA: v1
|
|
States: 3
|
|
Start: 0
|
|
AP: 2 "p1" "p2"
|
|
acc-name: generalized-Buchi 2
|
|
Acceptance: 2 Inf(0)&Inf(1)
|
|
properties: trans-labels explicit-labels trans-acc
|
|
--BODY--
|
|
State: 0
|
|
[0] 1
|
|
State: 1
|
|
[0&1] 1 {0}
|
|
[1] 2 {1}
|
|
State: 2
|
|
[0 | 1] 1 {0 1}
|
|
--END--
|
|
#+END_SRC
|