| 1 | % (c) 2016-2021 Lehrstuhl fuer Softwaretechnik und Programmiersprachen, | |
| 2 | % Heinrich Heine Universitaet Duesseldorf | |
| 3 | % This software is licenced under EPL 1.0 (http://www.eclipse.org/org/documents/epl-v10.html) | |
| 4 | ||
| 5 | :- module(ltl2ba, [ltl2ba_init/0,c_call_ltl2ba/6]). | |
| 6 | ||
| 7 | :- use_module(library(lists)). | |
| 8 | :- use_module('../../src/module_information.pl'). | |
| 9 | :- use_module('../../src/debug.pl'). | |
| 10 | ||
| 11 | :- module_info(group,ltl). | |
| 12 | :- module_info(description,'This is the interface to the LTL2BA tool for LTL to NBA conversion.'). | |
| 13 | ||
| 14 | % ProB Tcl/Tk has the command "Download and Install LTL2BA Tool" in the Help menu | |
| 15 | % it will download from: | |
| 16 | % https://stups.hhu-hosting.de/downloads/ltl2ba_pl/sicstus4.8/ | |
| 17 | % which in turn is built from | |
| 18 | % https://gitlab.cs.uni-duesseldorf.de/stups/prob/ltl2ba_pl | |
| 19 | ||
| 20 | /* the C interface */ | |
| 21 | foreign_resource(ltl2ba, [cltl2ba]). | |
| 22 | foreign(cltl2ba,c,cltl2ba(+term,+term,+term,+term,+term,-term)). | |
| 23 | ||
| 24 | :- dynamic loaded_ltl2ba/0. | |
| 25 | :- meta_predicate c_call_ltl2ba(-,1,1,3,-,-). | |
| 26 | ||
| 27 | ltl2ba_init :- | |
| 28 | loadfr. | |
| 29 | ||
| 30 | loadfr :- (loaded_ltl2ba -> true | |
| 31 | ; print('Initialise LTL2BA...'), nl, | |
| 32 | load_foreign_resource(library(ltl2ba)), | |
| 33 | assertz(loaded_ltl2ba) | |
| 34 | ). | |
| 35 | ||
| 36 | c_call_ltl2ba(LtlFormulaAsAtom,InitStateCallback,FiniteStateCallback,TransitionCallback,Verbose,Result) :- | |
| 37 | cltl2ba(LtlFormulaAsAtom,InitStateCallback,FiniteStateCallback,TransitionCallback,Verbose,Result). |