├── KNOWNBUGS ├── docs ├── html │ ├── lascar │ │ ├── Lascar │ │ │ ├── .dummy │ │ │ ├── Ltsa │ │ │ │ ├── Make │ │ │ │ │ ├── argument-3-A │ │ │ │ │ │ └── index.html │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── module-type-ATTR │ │ │ │ │ └── index.html │ │ │ │ ├── module-type-T │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── Product │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── argument-1-S1 │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── argument-2-S2 │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── IProduct │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── argument-1-S │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── Product3 │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── argument-1-S1 │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── argument-2-S2 │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── argument-3-S3 │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── IProduct3 │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── argument-1-S │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ └── Trans │ │ │ │ │ ├── argument-1-S1 │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── argument-2-S2 │ │ │ │ │ └── Attr │ │ │ │ │ └── index.html │ │ │ ├── Dfa │ │ │ │ ├── Make │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── NFA │ │ │ │ │ │ ├── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── LTSA │ │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── LTSA │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── module-type-T │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── NFA │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── LTSA │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── Product │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── NFA │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── argument-1-S1 │ │ │ │ │ │ ├── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── NFA │ │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── argument-2-S2 │ │ │ │ │ │ ├── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── NFA │ │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── LTSA │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ └── Trans │ │ │ │ │ ├── argument-1-S1 │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── NFA │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── argument-2-S2 │ │ │ │ │ ├── Attr │ │ │ │ │ └── index.html │ │ │ │ │ └── NFA │ │ │ │ │ └── Attr │ │ │ │ │ └── index.html │ │ │ ├── Nfa │ │ │ │ ├── Make │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── LTSA │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── module-type-T │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── LTSA │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── Product │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── argument-1-S1 │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── argument-2-S2 │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── LTSA │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ └── Trans │ │ │ │ │ ├── argument-1-S1 │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── argument-2-S2 │ │ │ │ │ └── Attr │ │ │ │ │ └── index.html │ │ │ ├── Conv │ │ │ │ ├── ToDfa │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── NFA │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── argument-1-N │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── LTSA │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── ToMealy │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── M │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── argument-1-MM │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── FromLts │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── Fsm │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── M │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── argument-1-F │ │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ │ └── M │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── ToMoore │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ ├── argument-1-ME │ │ │ │ │ │ └── Attr │ │ │ │ │ │ │ └── index.html │ │ │ │ │ └── M │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ └── ToLts │ │ │ │ │ ├── argument-1-M │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── Repr │ │ │ │ │ └── Attr │ │ │ │ │ └── index.html │ │ │ ├── Mealy │ │ │ │ ├── Make │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── M │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ └── module-type-T │ │ │ │ │ ├── Attr │ │ │ │ │ └── index.html │ │ │ │ │ └── M │ │ │ │ │ └── Attr │ │ │ │ │ └── index.html │ │ │ ├── Fsm │ │ │ │ ├── Make │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── M │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ ├── module-type-T │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── M │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ └── Trans │ │ │ │ │ ├── argument-1-S1 │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── M │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── argument-2-S2 │ │ │ │ │ └── Attr │ │ │ │ │ └── index.html │ │ │ ├── Moore │ │ │ │ ├── Make │ │ │ │ │ ├── Attr │ │ │ │ │ │ └── index.html │ │ │ │ │ └── M │ │ │ │ │ │ └── Attr │ │ │ │ │ │ └── index.html │ │ │ │ └── module-type-T │ │ │ │ │ ├── Attr │ │ │ │ │ └── index.html │ │ │ │ │ └── M │ │ │ │ │ └── Attr │ │ │ │ │ └── index.html │ │ │ └── Lts │ │ │ │ ├── Make │ │ │ │ └── Repr │ │ │ │ │ └── Attr │ │ │ │ │ └── index.html │ │ │ │ ├── module-type-T │ │ │ │ └── Repr │ │ │ │ │ └── Attr │ │ │ │ │ └── index.html │ │ │ │ ├── Product │ │ │ │ └── Repr │ │ │ │ │ └── Attr │ │ │ │ │ └── index.html │ │ │ │ └── Product3 │ │ │ │ └── Repr │ │ │ │ └── Attr │ │ │ │ └── index.html │ │ ├── Utils │ │ │ ├── .dummy │ │ │ └── Stringable │ │ │ │ ├── module-type-T │ │ │ │ └── index.html │ │ │ │ ├── Pair │ │ │ │ ├── argument-1-M1 │ │ │ │ │ └── index.html │ │ │ │ └── argument-2-M2 │ │ │ │ │ └── index.html │ │ │ │ └── Triplet │ │ │ │ ├── argument-1-M1 │ │ │ │ └── index.html │ │ │ │ ├── argument-2-M2 │ │ │ │ └── index.html │ │ │ │ └── argument-3-M3 │ │ │ │ └── index.html │ │ └── index.html │ ├── fonts │ │ ├── KaTeX_Main-Bold.woff2 │ │ ├── KaTeX_AMS-Regular.woff2 │ │ ├── KaTeX_Main-Italic.woff2 │ │ ├── KaTeX_Math-Italic.woff2 │ │ ├── KaTeX_Fraktur-Bold.woff2 │ │ ├── KaTeX_Main-Regular.woff2 │ │ ├── KaTeX_SansSerif-Bold.woff2 │ │ ├── KaTeX_Script-Regular.woff2 │ │ ├── KaTeX_Size1-Regular.woff2 │ │ ├── KaTeX_Size2-Regular.woff2 │ │ ├── KaTeX_Size3-Regular.woff2 │ │ ├── KaTeX_Size4-Regular.woff2 │ │ ├── KaTeX_Caligraphic-Bold.woff2 │ │ ├── KaTeX_Fraktur-Regular.woff2 │ │ ├── KaTeX_Main-BoldItalic.woff2 │ │ ├── KaTeX_Math-BoldItalic.woff2 │ │ ├── KaTeX_SansSerif-Italic.woff2 │ │ ├── KaTeX_Caligraphic-Regular.woff2 │ │ ├── KaTeX_SansSerif-Regular.woff2 │ │ └── KaTeX_Typewriter-Regular.woff2 │ └── index.html └── tutorial │ ├── tutorial.key │ ├── Metadata │ │ ├── DocumentIdentifier │ │ ├── Properties.plist │ │ └── BuildVersionHistory.plist │ ├── Index.zip │ ├── Data │ │ ├── st0.jpg │ │ ├── st1.jpg │ │ ├── st2.jpg │ │ ├── st3.jpg │ │ ├── st4.jpg │ │ ├── st5.jpg │ │ ├── st6.jpg │ │ ├── st7.jpg │ │ ├── mt0@2x.jpg │ │ ├── mt1@2x.jpg │ │ ├── mt2@2x.jpg │ │ ├── mt3@2x.jpg │ │ ├── mt4@2x.jpg │ │ ├── mt5@2x.jpg │ │ ├── mt6@2x.jpg │ │ ├── mt7@2x.jpg │ │ ├── mt8@2x.jpg │ │ ├── mt9@2x.jpg │ │ ├── st0-1.jpg │ │ ├── mt10@2x.jpg │ │ ├── pasted-image.pdf │ │ ├── pasted-image-1.pdf │ │ ├── pasted-image-10.pdf │ │ ├── pasted-image-2.pdf │ │ ├── pasted-image-3.pdf │ │ ├── pasted-image-4.pdf │ │ ├── pasted-image-5.pdf │ │ ├── pasted-image-6.pdf │ │ ├── pasted-image-7.pdf │ │ ├── pasted-image-8.pdf │ │ ├── pasted-image-9.pdf │ │ ├── pasted-image-small.png │ │ ├── tile_paper_medgray.jpg │ │ ├── pasted-image-small-1.png │ │ ├── pasted-image-small-10.png │ │ ├── pasted-image-small-2.png │ │ ├── pasted-image-small-3.png │ │ ├── pasted-image-small-4.png │ │ ├── pasted-image-small-5.png │ │ ├── pasted-image-small-6.png │ │ ├── pasted-image-small-7.png │ │ ├── pasted-image-small-8.png │ │ ├── pasted-image-small-9.png │ │ ├── 110809_FamilyChineseOahu_EN_02016_981x654-small.jpg │ │ ├── 110809_FamilyChineseOahu_EN_00317_2040x1360-small.jpg │ │ └── 110809_FamilyChineseOahu_EN_02390_2880x1921-small.jpg │ ├── preview.jpg │ ├── preview-web.jpg │ └── preview-micro.jpg │ └── tutorial │ └── tutorial.html_files │ ├── home.png │ ├── next.png │ ├── prev.png │ ├── examples.001.png │ ├── examples.002.png │ ├── examples.003.png │ ├── examples.004.png │ ├── examples.005.png │ ├── examples.006.png │ ├── examples.007.png │ └── examples.008.png ├── examples ├── dfa │ ├── ex1 │ │ ├── .ocamlinit │ │ ├── dune │ │ └── Makefile │ └── ex2 │ │ ├── .ocamlinit │ │ ├── dune │ │ └── Makefile ├── lts │ ├── conv │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml │ ├── map1 │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml │ ├── map2 │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml │ ├── clock │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml │ ├── cntmod4 │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml │ ├── mutex │ │ ├── .ocamlinit │ │ ├── dune │ │ └── Makefile │ ├── simple1 │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml │ ├── simple2 │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml │ ├── products_1 │ │ ├── .ocamlinit │ │ ├── dune │ │ └── Makefile │ └── products_2 │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml ├── nfa │ └── ex1 │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml ├── fsm │ ├── altbit │ │ ├── .ocamlinit │ │ ├── dune │ │ └── Makefile │ ├── ctrdctr │ │ ├── .ocamlinit │ │ ├── dune │ │ └── Makefile │ ├── ctrmodn │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml │ ├── gensig1 │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml │ └── gensig2 │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml ├── mealy │ ├── simple │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml │ └── seqadder │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml ├── moore │ └── simple │ │ ├── .ocamlinit │ │ ├── dune │ │ ├── Makefile │ │ └── main.ml └── Makefile ├── src ├── bin │ ├── lascar_top.ml │ ├── Makefile │ └── dune ├── utils │ ├── _doc │ │ └── .keep │ ├── Makefile │ ├── dune │ ├── .depend │ ├── option.ml │ ├── dot.ml │ ├── filenameExt.ml │ ├── dot.mli │ ├── stringable.mli │ ├── stringable.ml │ ├── option.mli │ └── filenameExt.mli └── lib │ ├── Makefile │ ├── dune │ ├── builtins.mli │ ├── builtins.ml │ ├── fsm_value.mli │ └── .depend ├── etc ├── dune.app ├── toplevel.ini ├── Makefile └── Makefile.app ├── TODO ├── .gitignore ├── tests ├── test_fsm_actions.ml ├── test_fsm_conditions.ml ├── Makefile ├── test_fsm_transitions.ml ├── .ocamlinit ├── test.ml ├── dune └── test_fsm_exprs.ml ├── dune-project ├── lascar.opam ├── CHANGES.html ├── Makefile └── LICENSE /KNOWNBUGS: -------------------------------------------------------------------------------- 1 | * To be filled.. 2 | -------------------------------------------------------------------------------- /docs/html/lascar/Lascar/.dummy: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/html/lascar/Utils/.dummy: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /examples/dfa/ex1/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/dfa/ex2/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/lts/conv/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/lts/map1/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/lts/map2/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/nfa/ex1/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /src/bin/lascar_top.ml: -------------------------------------------------------------------------------- 1 | let () = Topmain.main () 2 | -------------------------------------------------------------------------------- /src/utils/_doc/.keep: -------------------------------------------------------------------------------- 1 | Do not remove this file ! 2 | -------------------------------------------------------------------------------- /examples/fsm/altbit/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/fsm/ctrdctr/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/fsm/ctrmodn/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/fsm/gensig1/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/fsm/gensig2/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/lts/clock/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/lts/cntmod4/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/lts/mutex/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/lts/simple1/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/lts/simple2/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/mealy/simple/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/moore/simple/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/lts/products_1/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/lts/products_2/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /examples/mealy/seqadder/.ocamlinit: -------------------------------------------------------------------------------- 1 | ../../../etc/toplevel.ini -------------------------------------------------------------------------------- /etc/dune.app: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar)) 4 | -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Metadata/DocumentIdentifier: -------------------------------------------------------------------------------- 1 | 10A78E8E-7201-4DF0-977E-313C11AD2803 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Main-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Main-Bold.woff2 -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Index.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Index.zip -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_AMS-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_AMS-Regular.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Main-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Main-Italic.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Math-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Math-Italic.woff2 -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/st0.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/st0.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/st1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/st1.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/st2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/st2.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/st3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/st3.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/st4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/st4.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/st5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/st5.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/st6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/st6.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/st7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/st7.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/preview.jpg -------------------------------------------------------------------------------- /src/bin/Makefile: -------------------------------------------------------------------------------- 1 | byte: 2 | dune build lascar_top.bc 3 | 4 | clean: 5 | dune clean 6 | 7 | clobber: clean 8 | @rm -f *~ 9 | -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Fraktur-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Fraktur-Bold.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Main-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Main-Regular.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_SansSerif-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_SansSerif-Bold.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Script-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Script-Regular.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Size1-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Size1-Regular.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Size2-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Size2-Regular.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Size3-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Size3-Regular.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Size4-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Size4-Regular.woff2 -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/mt0@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/mt0@2x.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/mt1@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/mt1@2x.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/mt2@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/mt2@2x.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/mt3@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/mt3@2x.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/mt4@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/mt4@2x.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/mt5@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/mt5@2x.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/mt6@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/mt6@2x.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/mt7@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/mt7@2x.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/mt8@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/mt8@2x.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/mt9@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/mt9@2x.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/st0-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/st0-1.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/preview-web.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/preview-web.jpg -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | - "classical" operations (product, union, ...) for NFAs and DFAs 2 | - Kripke structures 3 | - Buchi automata 4 | - SMV output 5 | -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Caligraphic-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Caligraphic-Bold.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Fraktur-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Fraktur-Regular.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Main-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Main-BoldItalic.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Math-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Math-BoldItalic.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_SansSerif-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_SansSerif-Italic.woff2 -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/mt10@2x.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/mt10@2x.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/preview-micro.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/preview-micro.jpg -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Caligraphic-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Caligraphic-Regular.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_SansSerif-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_SansSerif-Regular.woff2 -------------------------------------------------------------------------------- /docs/html/fonts/KaTeX_Typewriter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/html/fonts/KaTeX_Typewriter-Regular.woff2 -------------------------------------------------------------------------------- /examples/dfa/ex1/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/dfa/ex2/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/lts/clock/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/lts/conv/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/lts/map1/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/lts/map2/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/lts/mutex/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/nfa/ex1/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image.pdf -------------------------------------------------------------------------------- /examples/fsm/altbit/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/fsm/ctrdctr/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/fsm/ctrmodn/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/fsm/gensig1/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/fsm/gensig2/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/lts/cntmod4/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/lts/products_1/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/lts/products_2/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/lts/simple1/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/lts/simple2/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/mealy/seqadder/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/mealy/simple/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /examples/moore/simple/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name main) 3 | (libraries lascar ppx_show.runtime) 4 | (preprocess (pps ppx_deriving.show))) 5 | -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-1.pdf -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-10.pdf -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-2.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-2.pdf -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-3.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-3.pdf -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-4.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-4.pdf -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-5.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-5.pdf -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-6.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-6.pdf -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-7.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-7.pdf -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-8.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-8.pdf -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-9.pdf -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Metadata/Properties.plist: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Metadata/Properties.plist -------------------------------------------------------------------------------- /docs/tutorial/tutorial/tutorial.html_files/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial/tutorial.html_files/home.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial/tutorial.html_files/next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial/tutorial.html_files/next.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial/tutorial.html_files/prev.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial/tutorial.html_files/prev.png -------------------------------------------------------------------------------- /src/bin/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name lascar_top) 3 | (libraries compiler-libs.toplevel lascar) 4 | (link_flags (-linkall)) 5 | (modes byte)) 6 | 7 | -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-small.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/tile_paper_medgray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/tile_paper_medgray.jpg -------------------------------------------------------------------------------- /etc/toplevel.ini: -------------------------------------------------------------------------------- 1 | #directory "../../../_build/default/src/lib/.lascar.objs/byte";; 2 | #directory "../../../_build/default/src/utils/.utils.objs/byte";; 3 | -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-small-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-small-1.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-small-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-small-10.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-small-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-small-2.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-small-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-small-3.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-small-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-small-4.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-small-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-small-5.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-small-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-small-6.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-small-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-small-7.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-small-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-small-8.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/pasted-image-small-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/pasted-image-small-9.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial/tutorial.html_files/examples.001.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial/tutorial.html_files/examples.001.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial/tutorial.html_files/examples.002.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial/tutorial.html_files/examples.002.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial/tutorial.html_files/examples.003.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial/tutorial.html_files/examples.003.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial/tutorial.html_files/examples.004.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial/tutorial.html_files/examples.004.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial/tutorial.html_files/examples.005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial/tutorial.html_files/examples.005.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial/tutorial.html_files/examples.006.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial/tutorial.html_files/examples.006.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial/tutorial.html_files/examples.007.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial/tutorial.html_files/examples.007.png -------------------------------------------------------------------------------- /docs/tutorial/tutorial/tutorial.html_files/examples.008.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial/tutorial.html_files/examples.008.png -------------------------------------------------------------------------------- /etc/Makefile: -------------------------------------------------------------------------------- 1 | all: 2 | 3 | install: 4 | @for i in ../examples/*/*; do cp Makefile.app $$i/Makefile; done 5 | @for i in ../examples/*/*; do cp dune.app $$i/dune; done 6 | -------------------------------------------------------------------------------- /src/lib/Makefile: -------------------------------------------------------------------------------- 1 | byte: 2 | dune build lascar.cma 3 | 4 | native: 5 | dune build lascar.cmxa 6 | 7 | clean: 8 | dune clean 9 | 10 | clobber: clean 11 | @rm -f *~ 12 | -------------------------------------------------------------------------------- /src/utils/Makefile: -------------------------------------------------------------------------------- 1 | byte: 2 | dune build utils.cma 3 | 4 | native: 5 | dune build utils.cmxa 6 | 7 | clean: 8 | dune clean 9 | 10 | clobber: clean 11 | @rm -f *~ 12 | -------------------------------------------------------------------------------- /examples/Makefile: -------------------------------------------------------------------------------- 1 | test: 2 | @for i in [a-z]*/[a-z0-9]*; do (echo "** Testing in $$i"; cd $$i; make test); done 3 | 4 | 5 | clean: 6 | @for i in [a-z]*/[a-z0-9]*; do (cd $$i; make clean); done 7 | -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/110809_FamilyChineseOahu_EN_02016_981x654-small.jpg -------------------------------------------------------------------------------- /src/utils/dune: -------------------------------------------------------------------------------- 1 | (env 2 | (dev 3 | (flags 4 | (:standard -annot) 5 | (:standard -w -27-50)))) 6 | 7 | (library 8 | (name utils) 9 | (libraries camlp-streams) 10 | (public_name lascar.utils)) 11 | -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/110809_FamilyChineseOahu_EN_00317_2040x1360-small.jpg -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jserot/lascar/HEAD/docs/tutorial/tutorial.key/Data/110809_FamilyChineseOahu_EN_02390_2880x1921-small.jpg -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | _build/ 2 | docs/ 3 | config 4 | config-stamp 5 | doc/api/ 6 | *.cmi 7 | *.cmo 8 | *.cma 9 | *.annot 10 | *.cmxa 11 | *~ 12 | .depend 13 | .merlin 14 | HOWTO 15 | CHANGELOG.html 16 | README.html 17 | examples/*/*/*.dot 18 | examples/*/*/*.tex 19 | src/utils/_doc/ 20 | lascar.opam 21 | -------------------------------------------------------------------------------- /etc/Makefile.app: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).bc 8 | 9 | test: 10 | dune exec ./$(APP).bc 11 | 12 | run: 13 | dune exec ./$(APP).bc 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/dfa/ex1/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/dfa/ex2/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/fsm/altbit/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/lts/clock/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/lts/conv/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/lts/map1/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/lts/map2/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/lts/mutex/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/nfa/ex1/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /tests/test_fsm_actions.ml: -------------------------------------------------------------------------------- 1 | open Lascar 2 | 3 | module IntExpr = Fsm_expr.Make(Fsm_value.Int) 4 | module IntAction = Fsm_action.Make(IntExpr) 5 | 6 | let _ = 7 | List.iter 8 | (Test.test IntAction.lexer IntAction.parse IntAction.show) [ 9 | "k:=1+2"; 10 | "k:=k+1"; 11 | "k=1" 12 | ] 13 | -------------------------------------------------------------------------------- /examples/fsm/ctrdctr/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/fsm/ctrmodn/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/fsm/gensig1/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/fsm/gensig2/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/lts/cntmod4/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/lts/products_1/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/lts/products_2/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/lts/simple1/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/lts/simple2/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/mealy/seqadder/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/mealy/simple/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /examples/moore/simple/Makefile: -------------------------------------------------------------------------------- 1 | DOTVIEWER=graphviz 2 | APP=main 3 | 4 | all: run 5 | 6 | build: 7 | dune build ./$(APP).exe 8 | 9 | test: 10 | dune exec ./$(APP).exe 11 | 12 | run: 13 | dune exec ./$(APP).exe 14 | for f in *.dot; do $(DOTVIEWER) $$f; done 15 | 16 | clean: 17 | @\rm -f *.dot *.tex .merlin 18 | @\rm -f *~ 19 | -------------------------------------------------------------------------------- /tests/test_fsm_conditions.ml: -------------------------------------------------------------------------------- 1 | open Lascar 2 | 3 | module IntExpr = Fsm_expr.Make(Fsm_value.Int) 4 | module IntCondition = Fsm_condition.Make(IntExpr) 5 | 6 | let _ = 7 | List.iter 8 | (Test.test IntCondition.lexer IntCondition.parse IntCondition.show) [ 9 | "k=1"; 10 | "k>1+2*3"; 11 | "k=" 12 | ] 13 | -------------------------------------------------------------------------------- /docs/tutorial/tutorial.key/Metadata/BuildVersionHistory.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | TE-v1.0.6 (Oct 16 2013) 6 | 5B54 7 | M6.0-1473-1 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/lib/dune: -------------------------------------------------------------------------------- 1 | (env 2 | (dev 3 | (flags 4 | (:standard -annot) 5 | (:standard -w -27-32-34-50)))) 6 | 7 | (library 8 | (name lascar) 9 | (public_name lascar) 10 | (modules builtins conv dfa fsm fsm_action fsm_condition fsm_expr fsm_transition fsm_value lts ltsa mealy moore nfa valuation) 11 | (preprocess (pps ppx_deriving.show)) 12 | (libraries utils)) 13 | -------------------------------------------------------------------------------- /tests/Makefile: -------------------------------------------------------------------------------- 1 | byte: 2 | dune build ./test_fsm_exprs.bc 3 | dune build ./test_fsm_conditions.bc 4 | dune build ./test_fsm_actions.bc 5 | dune build ./test_fsm_transitions.bc 6 | 7 | run: 8 | dune exec ./test_fsm_exprs.bc 9 | dune exec ./test_fsm_conditions.bc 10 | dune exec ./test_fsm_actions.bc 11 | dune exec ./test_fsm_transitions.bc 12 | 13 | clean: 14 | dune clean 15 | 16 | clobber: clean 17 | @rm -f *~ 18 | -------------------------------------------------------------------------------- /tests/test_fsm_transitions.ml: -------------------------------------------------------------------------------- 1 | open Lascar 2 | 3 | module IntExpr = Fsm_expr.Make(Fsm_value.Int) 4 | module Transition = Fsm_transition.Make(IntExpr) 5 | 6 | let _ = 7 | List.iter 8 | (Test.test Transition.lexer Transition.parse Transition.show) [ 9 | ""; 10 | "k>1"; 11 | "k>1,c=0"; 12 | "k>1 | u:=u+1"; 13 | "| s:=0"; 14 | "k>1,c=0 | u:=u+1, s:=0"; 15 | ] 16 | -------------------------------------------------------------------------------- /tests/.ocamlinit: -------------------------------------------------------------------------------- 1 | #directory "/Users/jserot/Dev/ml/lascar/_build/default/src/lib/.lascar.objs/byte";; 2 | #directory "/Users/jserot/Dev/ml/lascar/_build/default/src/lib/.lascar.objs/native";; 3 | #directory "/Users/jserot/Dev/ml/lascar/_build/default/src/utils/.utils.objs/byte";; 4 | #directory "/Users/jserot/Dev/ml/lascar/_build/default/src/utils/.utils.objs/native";; 5 | #load "/Users/jserot/Dev/ml/lascar/_build/default/src/utils/utils.cma";; 6 | #load "/Users/jserot/Dev/ml/lascar/_build/default/src/lib/lascar.cma";; 7 | -------------------------------------------------------------------------------- /docs/html/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | index 5 | 6 | 7 | 8 | 9 | 10 |
11 |
12 |

OCaml package documentation

13 |
    14 |
  1. lascar
  2. 15 |
16 |
17 |
18 | 19 | -------------------------------------------------------------------------------- /tests/test.ml: -------------------------------------------------------------------------------- 1 | let string_of_token t = 2 | let open Genlex in 3 | match t with 4 | | Int n -> "Int " ^ string_of_int n 5 | | Float n -> "Float " ^ string_of_float n 6 | | Char n -> "Char " ^ String.make 1 n 7 | | String n -> "String " ^ n 8 | | Ident n -> "Ident " ^ n 9 | | Kwd n -> "Kwd " ^ n 10 | 11 | let test lexer parser show s = 12 | let r = match Utils.Parsing.run ~lexer ~parser s with 13 | | Ok e -> show e 14 | | Error None -> "syntax error " 15 | | Error (Some t) -> "syntax error at token " ^ string_of_token t in 16 | Printf.printf "%s => %s\n" s r 17 | -------------------------------------------------------------------------------- /tests/dune: -------------------------------------------------------------------------------- 1 | (executable 2 | (name test_fsm_exprs) 3 | (modules test_fsm_exprs) 4 | (libraries lascar test) 5 | (modes byte)) 6 | 7 | (executable 8 | (name test_fsm_conditions) 9 | (modules test_fsm_conditions) 10 | (libraries lascar test) 11 | (modes byte)) 12 | 13 | (executable 14 | (name test_fsm_actions) 15 | (modules test_fsm_actions) 16 | (libraries lascar test) 17 | (modes byte)) 18 | 19 | (executable 20 | (name test_fsm_transitions) 21 | (modules test_fsm_transitions) 22 | (libraries lascar test) 23 | (modes byte)) 24 | 25 | (library 26 | (name test) 27 | (modules test) 28 | (libraries utils) 29 | (modes byte)) 30 | 31 | -------------------------------------------------------------------------------- /dune-project: -------------------------------------------------------------------------------- 1 | (lang dune 3.1) 2 | (name lascar) 3 | (source (github jserot/lascar)) 4 | (license MIT) 5 | (authors "Jocelyn Sérot ") 6 | (maintainers "Jocelyn Sérot ") 7 | (bug_reports "jocelyn.serot@uca.fr") 8 | (homepage "http://github.com/jserot/lascar") 9 | (documentation "http://jserot.github.io/lascar") 10 | 11 | (package 12 | (name lascar) 13 | (synopsis "A library for manipulating Labeled Transition Systems in OCaml") 14 | (description "A library for manipulating Labeled Transition Systems in OCaml") 15 | (depends 16 | (ppxlib (>= 0.13.0)) 17 | (ppx_deriving (>= 4.5)) 18 | (ocaml (>= 4.10)))) 19 | 20 | (generate_opam_files true) 21 | -------------------------------------------------------------------------------- /tests/test_fsm_exprs.ml: -------------------------------------------------------------------------------- 1 | open Lascar 2 | 3 | module IntExpr = Fsm_expr.Make(Fsm_value.Int) 4 | 5 | let _ = 6 | List.iter 7 | (Test.test IntExpr.lexer IntExpr.parse IntExpr.show) [ 8 | "1"; 9 | "-1"; 10 | "1+2"; 11 | "-1+2"; 12 | "1+(-2)"; 13 | "1+2*3"; 14 | "1*2+3"; 15 | "1*(2+3)"; 16 | "k+1"; 17 | "-k"; 18 | "(-k)*2"; 19 | "+" 20 | ] 21 | 22 | module BoolExpr = Fsm_expr.Make(Fsm_value.Bool) 23 | 24 | let _ = 25 | List.iter 26 | (Test.test BoolExpr.lexer BoolExpr.parse BoolExpr.show) [ 27 | "k"; 28 | "0"; 29 | "1"; 30 | "k && 1"; 31 | "k && u || v"; 32 | "k && (u||v)"; 33 | "u||v && k"; 34 | "~u"; 35 | "~(u&&v)"; 36 | "~~" 37 | ] 38 | -------------------------------------------------------------------------------- /examples/lts/cntmod4/main.ml: -------------------------------------------------------------------------------- 1 | (* A modulo-4 counter defined as the synchronized product of two modulo-2 counters *) 2 | 3 | open Utils 4 | open Lascar 5 | 6 | module Bit = Lts.Make (Builtins.Int) (Builtins.String) 7 | 8 | let a0 = Bit.create ~states:[0;1] ~itrans:["",0] ~trans:[0,"u",1; 1,"d",0] 9 | let a1 = Bit.create ~states:[0;1] ~itrans:["",0] ~trans:[0,"u",1; 1,"d",0] 10 | 11 | let _ = Bit.dot_output "a1" ~options:[Dot.RankdirUD] a1 12 | let _ = Bit.dot_output "a0" ~options:[Dot.RankdirUD] a0 13 | (* let _ = Bit.tex_output "a1" "a1.tex" a1 *) 14 | (* let _ = Bit.tex_output "a0" "a0.tex" a0 *) 15 | 16 | module Ctr = Lts.Product(Bit)(Bit) 17 | 18 | let a = Ctr.synchronized_product [Some "u", None; Some "d", Some "u"; Some "d", Some "d"] a0 a1 19 | let _ = Ctr.dot_output "a" ~options:[Dot.RankdirLR] a 20 | let _ = Ctr.tex_output "a" a 21 | 22 | -------------------------------------------------------------------------------- /examples/lts/simple2/main.ml: -------------------------------------------------------------------------------- 1 | (* Basic example, with state attributes *) 2 | 3 | open Utils 4 | open Lascar 5 | 6 | module State = struct 7 | type t = S0 | S1 | S2 [@@deriving show {with_path=false}] 8 | let compare = Stdlib.compare 9 | let to_string = show 10 | end 11 | 12 | module Attr = Builtins.Bool 13 | 14 | module Label = Builtins.String 15 | 16 | module S = Ltsa.Make(State)(Label)(Attr) 17 | 18 | open State 19 | 20 | let s = S.create 21 | ~states:[S0,false; S1,true; S2,false] 22 | ~itrans:["",S0] 23 | ~trans:[S0,"a",S1; 24 | S1,"b",S0; 25 | S1,"c",S2; 26 | S2,"d",S2; 27 | S0,"e",S2] 28 | 29 | let qs, ts = S.states' s, S.transitions s 30 | 31 | let _ = S.dot_output "simple" ~options:[Dot.RankdirLR; Ltsa.Circular] s 32 | 33 | let _ = S.tex_output "simple" s 34 | 35 | let _ = S.dot_output_execs "simple_execs" ~options:[Dot.RankdirUD] 3 s 36 | -------------------------------------------------------------------------------- /examples/mealy/simple/main.ml: -------------------------------------------------------------------------------- 1 | (* Building a Mealy automata and converting it to Moore automata *) 2 | 3 | open Utils 4 | open Lascar 5 | 6 | module S = 7 | struct 8 | type t = A | B [@@deriving show {with_path=false}] 9 | let compare = Stdlib.compare 10 | let to_string = show 11 | end 12 | 13 | module ME = Mealy.Make (S) 14 | 15 | open S 16 | 17 | let me1 = ME.create 18 | ~inps:["e"] 19 | ~outps:["s"] 20 | ~states:[A; B] 21 | ~istate:A 22 | ~trans:[A, (["e",false],["s",false]), A; 23 | A, (["e",true],["s",false]), B; 24 | B, (["e",true],["s",false]), B; 25 | B, (["e",false],["s",true]), A] 26 | 27 | let _ = ME.dot_output "me1" ~options:[Dot.RankdirLR] me1 28 | 29 | module MM = Conv.ToMoore(ME) 30 | 31 | let mm1 = MM.conv ~init:(Some (A,["s",true])) me1 32 | 33 | let _ = MM.dot_output "mm1" ~options:[Dot.RankdirLR] mm1 34 | -------------------------------------------------------------------------------- /examples/lts/conv/main.ml: -------------------------------------------------------------------------------- 1 | open Utils 2 | open Lascar 3 | 4 | module State = struct 5 | type t = S0 | S1 | S2 [@@deriving show {with_path=false}] 6 | let compare = Stdlib.compare 7 | let to_string = show 8 | end 9 | 10 | module Label = Builtins.String 11 | 12 | module Attr = Builtins.String 13 | 14 | module M1 = Ltsa.Make (State)(Label)(Attr) 15 | 16 | open State 17 | 18 | let s1 = M1.create 19 | ~states:[S0, "p"; S1, "q"; S2, "r"] 20 | ~itrans:["",S0] 21 | ~trans:[S0,"a",S1; 22 | S1,"b",S0; 23 | S1,"c",S2; 24 | S2,"d",S2; 25 | S0,"e",S2] 26 | 27 | let _ = M1.dot_output "s1" ~options:[Dot.RankdirUD] s1 28 | 29 | module M2 = Conv.ToLts(M1) 30 | 31 | let s2 = M2.conv s1 32 | 33 | let _ = M2.dot_output "s2" ~options:[Dot.RankdirUD] s2 34 | 35 | module M3 = Conv.FromLts(M2) 36 | 37 | let s3 = M3.conv s2 38 | 39 | let _ = M3.dot_output "s3" ~options:[Dot.RankdirUD] s3 40 | -------------------------------------------------------------------------------- /examples/lts/map2/main.ml: -------------------------------------------------------------------------------- 1 | (* Using the [Trans] functor for converting btw LTS *) 2 | 3 | open Utils 4 | open Lascar 5 | 6 | module State = struct 7 | type t = S0 | S1 | S2 [@@deriving show {with_path=false}] 8 | let compare = Stdlib.compare 9 | let to_string = show 10 | end 11 | 12 | module Label = Builtins.String 13 | 14 | module S = Lts.Make (State) (Label) 15 | 16 | open State 17 | 18 | let s = S.create 19 | ~states:[S0; S1; S2] 20 | ~itrans:["",S0] 21 | ~trans:[S0,"a",S1; 22 | S1,"b",S0; 23 | S1,"c",S2; 24 | S2,"d",S2; 25 | S0,"e",S2] 26 | 27 | let _ = S.dot_output "simple" ~options:[Dot.RankdirUD] s 28 | 29 | module State' = Builtins.Int 30 | 31 | module S' = Lts.Make (State') (Label) 32 | 33 | module F = Lts.Trans (S) (S') 34 | 35 | let s' = F.map (function S0 -> 0 | S1 -> 1 | S2 -> 2) (function s -> s ^ s) s 36 | 37 | let _ = S'.dot_output "simple2" s' 38 | 39 | -------------------------------------------------------------------------------- /src/utils/.depend: -------------------------------------------------------------------------------- 1 | dot.cmo : dot.cmi 2 | dot.cmx : dot.cmi 3 | dot.cmi : 4 | filenameExt.cmo : filenameExt.cmi 5 | filenameExt.cmx : filenameExt.cmi 6 | filenameExt.cmi : 7 | listExt.cmo : listExt.cmi 8 | listExt.cmx : listExt.cmi 9 | listExt.cmi : 10 | misc.cmo : misc.cmi 11 | misc.cmx : misc.cmi 12 | misc.cmi : 13 | option.cmo : option.cmi 14 | option.cmx : option.cmi 15 | option.cmi : 16 | orderedTypeExt.cmo : orderedTypeExt.cmi 17 | orderedTypeExt.cmx : orderedTypeExt.cmi 18 | orderedTypeExt.cmi : 19 | setExt.cmo : orderedTypeExt.cmi listExt.cmi setExt.cmi 20 | setExt.cmx : orderedTypeExt.cmx listExt.cmx setExt.cmi 21 | setExt.cmi : orderedTypeExt.cmi 22 | stringExt.cmo : stringExt.cmi 23 | stringExt.cmx : stringExt.cmi 24 | stringExt.cmi : 25 | stringable.cmo : stringable.cmi 26 | stringable.cmx : stringable.cmi 27 | stringable.cmi : 28 | tree.cmo : dot.cmi tree.cmi 29 | tree.cmx : dot.cmx tree.cmi 30 | tree.cmi : dot.cmi 31 | -------------------------------------------------------------------------------- /lascar.opam: -------------------------------------------------------------------------------- 1 | # This file is generated by dune, edit dune-project instead 2 | opam-version: "2.0" 3 | synopsis: "A library for manipulating Labeled Transition Systems in OCaml" 4 | description: "A library for manipulating Labeled Transition Systems in OCaml" 5 | maintainer: ["Jocelyn Sérot "] 6 | authors: ["Jocelyn Sérot "] 7 | license: "MIT" 8 | homepage: "http://github.com/jserot/lascar" 9 | doc: "https://jserot.github.io/lascar/" 10 | bug-reports: "jocelyn.serot@uca.fr" 11 | depends: [ 12 | "dune" {>= "3.1"} 13 | "ppxlib" {>= "0.13.0"} 14 | "ppx_deriving" {>= "4.5"} 15 | "ocaml" {>= "4.10"} 16 | "odoc" {with-doc} 17 | ] 18 | build: [ 19 | ["dune" "subst"] {dev} 20 | [ 21 | "dune" 22 | "build" 23 | "-p" 24 | name 25 | "-j" 26 | jobs 27 | "@install" 28 | "@runtest" {with-test} 29 | "@doc" {with-doc} 30 | ] 31 | ] 32 | dev-repo: "git+https://github.com/jserot/lascar.git" 33 | -------------------------------------------------------------------------------- /src/utils/option.ml: -------------------------------------------------------------------------------- 1 | (**********************************************************************) 2 | (* *) 3 | (* LASCAr *) 4 | (* *) 5 | (* Copyright (c) 2017-present, Jocelyn SEROT. All rights reserved. *) 6 | (* *) 7 | (* This source code is licensed under the license found in the *) 8 | (* LICENSE file in the root directory of this source tree. *) 9 | (* *) 10 | (**********************************************************************) 11 | 12 | let map f x = match x with None -> None | Some x -> Some (f x) 13 | 14 | let iter f x = match x with None -> () | Some x -> f x 15 | 16 | let to_string f x = match x with None -> "" | Some x -> f x 17 | -------------------------------------------------------------------------------- /examples/fsm/ctrmodn/main.ml: -------------------------------------------------------------------------------- 1 | (* FSM model of a modulo-n counter *) 2 | 3 | open Utils 4 | open Lascar 5 | 6 | module S = 7 | struct 8 | type t = E [@@deriving show {with_path=false}] 9 | let compare = Stdlib.compare 10 | let to_string = show 11 | end 12 | 13 | open S 14 | 15 | module F = Fsm.Make(S)(Fsm_value.Int) 16 | 17 | let mk n = 18 | let open F in 19 | create 20 | ~inps:[] 21 | ~outps:[] 22 | ~vars:["c", ListExt.range Fun.id 0 (n-1)] 23 | ~states:[E,[]] 24 | ~istate:(mk_acts "c:=0", E) 25 | ~trans:[ 26 | E, ([Test ("c", "<", EBinop ("-", EConst n, EConst 1))], mk_acts "c:=c+1"), E; 27 | E, ([Test ("c", "=", EBinop ("-", EConst n, EConst 1))], mk_acts "c:=0"), E 28 | ] 29 | 30 | let m1 = mk 4 31 | 32 | let _ = F.dot_output "m1" m1 33 | 34 | module FF = Conv.Fsm(F) 35 | 36 | let m2 = FF.defactorize ~init:(Some ([],(E,["c",0]))) ["c"] m1 37 | 38 | let _ = FF.dot_output ~options:[Dot.RankdirLR] "m2" m2 39 | -------------------------------------------------------------------------------- /CHANGES.html: -------------------------------------------------------------------------------- 1 |

Changes

2 |

0.6 (Aug, 18, 2019)

3 |
* removed dependency on camlp4 by rewriting the Fsm_expr, Fsm and ListExt parsers
 4 | * dunified build and install process
5 |

0.5 (Apr, 9, 2018)

6 |
* Library is now packed under Lascar module to prevent name clash
7 |

0.4 (Feb, 5, 2018)

8 |
* OPAMification
 9 | * Home page and documentation moved to separate web site
10 | * Added INSTALL
11 | * CHANGELOG now in .md format
12 |

0.3 (Dec, 14, 2017)

13 |
* Added functions [map_state], [map_attr] and [map_label]
14 | * Added modules [Builtins.{Int,String,Bool}]. Rewrote some examples accordingly
15 |

0.2 (Nov 27, 2107)

16 |
* Added [ListExt.update_assoc]
17 |

0.1 (Nov 6, 2107)

18 |
* First public version
19 | -------------------------------------------------------------------------------- /src/lib/builtins.mli: -------------------------------------------------------------------------------- 1 | (**********************************************************************) 2 | (* *) 3 | (* LASCAr *) 4 | (* *) 5 | (* Copyright (c) 2017-present, Jocelyn SEROT. All rights reserved. *) 6 | (* *) 7 | (* This source code is licensed under the license found in the *) 8 | (* LICENSE file in the root directory of this source tree. *) 9 | (* *) 10 | (**********************************************************************) 11 | 12 | (** {2 Pre-defined modules to be used as functor arguments} *) 13 | 14 | module Int : Utils.OrderedTypeExt.T with type t=int 15 | 16 | module String : Utils.OrderedTypeExt.T with type t=string 17 | 18 | module Bool : Utils.OrderedTypeExt.T with type t=bool 19 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: doc 2 | 3 | all: build doc 4 | 5 | build: 6 | dune build src/utils/utils.cma 7 | dune build src/utils/utils.cmxa 8 | dune build src/lib/lascar.cma 9 | dune build src/lib/lascar.cmxa 10 | 11 | utop: 12 | dune utop src 13 | 14 | install: 15 | dune build @install 16 | 17 | INSTALL_DOCDIR=`opam var doc` 18 | 19 | opam.install: 20 | opam install . 21 | rm -rf $(INSTALL_DOCDIR)/lascar 22 | cp -r _build/default/_doc/_html/ $(INSTALL_DOCDIR)/lascar 23 | 24 | opam.remove: 25 | opam remove . 26 | rm -rf $(INSTALL_DOCDIR)/lascar 27 | 28 | opam.show: 29 | opam info lascar 30 | 31 | doc.view: 32 | open -a Safari _build/default/_doc/_html/index.html 33 | 34 | doc: 35 | dune build @doc 36 | cp -r _build/default/_doc/_html/* ./docs/html 37 | 38 | html: README.md 39 | pandoc -t html -o README.html README.md 40 | pandoc -t html -o CHANGES.html CHANGES.md 41 | 42 | test: 43 | (cd examples; make) 44 | 45 | clean: 46 | dune clean 47 | (cd examples; make clean) 48 | \rm -f README.html 49 | 50 | clobber: clean 51 | \rm -f *~ 52 | 53 | 54 | -------------------------------------------------------------------------------- /examples/lts/map1/main.ml: -------------------------------------------------------------------------------- 1 | (* Using the [map_xxx] functions for transforming a LTS *) 2 | 3 | open Utils 4 | open Lascar 5 | 6 | module S = Ltsa.Make (Builtins.Int) (Builtins.String) (Builtins.Bool) 7 | 8 | let s = S.create 9 | ~states:[0,true; 1,false; 2,false] 10 | ~itrans:["i",0] 11 | ~trans:[0,"a",1; 12 | 1,"b",0; 13 | 1,"c",2; 14 | 2,"d",2; 15 | 0,"e",2] 16 | 17 | let _ = S.dot_output "simple" ~options:[Dot.RankdirUD] s 18 | 19 | let s1 = s 20 | |> S.map_label String.capitalize_ascii 21 | |> S.map_state (function q -> q*10) 22 | |> S.map_attr not 23 | 24 | let _ = S.dot_output "simple1" s1 25 | 26 | let s2 = 27 | let relabel q q' l = match q with 28 | | Some q -> String.capitalize_ascii l ^ "[" ^ string_of_int q ^ "->" ^ string_of_int q' ^ "]" 29 | | None -> String.capitalize_ascii l ^ "[->" ^ string_of_int q' ^ "]" in 30 | s |> S.map_state_attr (function (q,a) -> q*10, not a) 31 | |> S.map_transition (function (q,l,q') -> q, relabel q q' l, q') 32 | 33 | let _ = S.dot_output "simple2" s2 34 | 35 | -------------------------------------------------------------------------------- /src/utils/dot.ml: -------------------------------------------------------------------------------- 1 | (**********************************************************************) 2 | (* *) 3 | (* LASCAr *) 4 | (* *) 5 | (* Copyright (c) 2017-present, Jocelyn SEROT. All rights reserved. *) 6 | (* *) 7 | (* This source code is licensed under the license found in the *) 8 | (* LICENSE file in the root directory of this source tree. *) 9 | (* *) 10 | (**********************************************************************) 11 | 12 | type graph_style = .. 13 | 14 | type graph_style += 15 | | SubGraph (** Draw graph as a subgraph (to be inserted in an enclosing graph) *) 16 | | RankdirUD (** Draw graph in the Up-down direction *) 17 | | RankdirLR (** Draw graph in the Left-right direction *) 18 | 19 | type node_style = { node_shape: string; node_style: string } 20 | -------------------------------------------------------------------------------- /examples/fsm/gensig2/main.ml: -------------------------------------------------------------------------------- 1 | (* This is a reformulation of ../gensig1 in which the output [s] is assigned to states *) 2 | 3 | open Utils 4 | open Lascar 5 | 6 | module S = 7 | struct 8 | type t = Off | On [@@deriving show {with_path=false}] 9 | let compare = Stdlib.compare 10 | let to_string = show 11 | end 12 | 13 | open S 14 | 15 | module F = Fsm.Make(S)(Fsm_value.Int) 16 | 17 | let mk n = 18 | let open F in 19 | create 20 | ~inps:["start",[0;1]] 21 | ~outps:["s",[0;1]] 22 | ~vars:["k", ListExt.range Fun.id 0 n] 23 | ~states:[Off,["s",0]; On,["s",1]] 24 | ~istate:([], Off) 25 | ~trans:[ 26 | Off, mk_trans "start=1 | k:=0", On; 27 | On, ([Test ("k", "<", EConst n)], mk_acts "k:=k+1"), On; 28 | On, ([Test ("k", "=", EConst n)], []), Off 29 | ] 30 | 31 | let m1 = mk 2 32 | 33 | let _ = F.dot_output "m1" m1 34 | 35 | module FF = Conv.Fsm(F) 36 | 37 | let m2 = FF.defactorize ~init:(Some ([],(Off,["k",0]))) [] m1 38 | 39 | let _ = FF.dot_output ~options:[Dot.RankdirLR] "m2" m2 40 | 41 | let _ = FF.dot_output_execs "m2_execs" ~options:[Dot.RankdirLR] 8 m2 42 | 43 | 44 | -------------------------------------------------------------------------------- /src/utils/filenameExt.ml: -------------------------------------------------------------------------------- 1 | (**********************************************************************) 2 | (* *) 3 | (* LASCAr *) 4 | (* *) 5 | (* Copyright (c) 2017-present, Jocelyn SEROT. All rights reserved. *) 6 | (* *) 7 | (* This source code is licensed under the license found in the *) 8 | (* LICENSE file in the root directory of this source tree. *) 9 | (* *) 10 | (**********************************************************************) 11 | 12 | let split_suffix name = 13 | try 14 | let i = String.rindex name '.' in 15 | String.sub name 0 i, String.sub name i (String.length name - i) 16 | with 17 | Not_found -> name, "" 18 | 19 | let add_before_suffix name e = 20 | let b, s = split_suffix name in 21 | b ^ e ^ s 22 | 23 | let replace_suffix name s = 24 | let b, _ = split_suffix name in 25 | b ^ "." ^ s 26 | 27 | -------------------------------------------------------------------------------- /examples/lts/products_2/main.ml: -------------------------------------------------------------------------------- 1 | (* Internal and external product of LTSAs *) 2 | 3 | open Utils 4 | open Lascar 5 | 6 | module S = Ltsa.Make(Builtins.String)(Builtins.Int)(Builtins.String) 7 | 8 | let a1 = S.create ~states:["A","";"B",""] ~trans:["A",1,"B"; "B",2,"A"] ~itrans:[0,"A"] 9 | let a2 = S.create ~states:["u","";"v",""] ~trans:["u",3,"v"; "v",4,"u"; "v",5,"v"] ~itrans:[0,"u"] 10 | 11 | let _ = S.succs a1 "A" 12 | 13 | let _ = S.dot_output "A1" ~options:[Dot.RankdirUD] a1 14 | let _ = S.dot_output "A2" ~options:[Dot.RankdirUD] a2 15 | let _ = S.tex_output "A1" a1 16 | let _ = S.tex_output "A2" a2 17 | 18 | module M = struct 19 | type state = string 20 | type label = int 21 | type attr = string 22 | let merge_state (s1,s2) = s1 ^ s2 23 | let merge_label = function None, None -> 0 | Some l1, None -> l1 | None, Some l2 -> l2 | Some l1, Some l2 -> 10*l1+l2 24 | let merge_attr (a1,a2) = a1 ^ a2 25 | end 26 | 27 | module P1 = Ltsa.IProduct (S) (M) 28 | 29 | let p1 = P1.synchronous_product a1 a2 30 | let _ = P1.dot_output "IntProd" p1 31 | 32 | 33 | module P2 = Ltsa.Product (S) (S) 34 | 35 | let p2 = P2.synchronous_product a1 a2 36 | let _ = P2.dot_output "ExtProd" p2 37 | -------------------------------------------------------------------------------- /examples/fsm/gensig1/main.ml: -------------------------------------------------------------------------------- 1 | (* FSM model of a signal generator. 2 | Output [s] goes to 1 with input [start] and stays to 1 for [n] "cycles" *) 3 | 4 | open Utils 5 | open Lascar 6 | 7 | module S = 8 | struct 9 | type t = Off | On [@@deriving show {with_path=false}] 10 | let compare = Stdlib.compare 11 | let to_string = show 12 | end 13 | 14 | open S 15 | 16 | module F = Fsm.Make(S)(Fsm_value.Int) 17 | 18 | let mk n = 19 | let open F in 20 | create 21 | ~inps:["start",[0;1]] 22 | ~outps:["s",[0;1]] 23 | ~vars:["k", ListExt.range Fun.id 0 n] 24 | ~states:[Off,[]; On,[]] 25 | ~istate:([], Off) 26 | ~trans:[ 27 | Off, mk_trans "start=1 | k:=0,s:=1", On; 28 | On, ([Test ("k", "<", EConst n)], mk_acts "k:=k+1"), On; 29 | On, ([Test ("k", "=", EConst n)], mk_acts "s:=0"), Off 30 | ] 31 | 32 | let m1 = mk 2 33 | 34 | let _ = F.dot_output "m1" m1 35 | 36 | module FF = Conv.Fsm(F) 37 | 38 | let m2 = 39 | FF.defactorize ~init:(Some ([],(Off,["k",0]))) [] m1 40 | 41 | let _ = FF.dot_output ~options:[Dot.RankdirLR] "m2" m2 42 | 43 | let _ = FF.dot_output_execs "m2_execs" ~options:[Dot.RankdirLR] 8 m2 44 | 45 | 46 | -------------------------------------------------------------------------------- /src/utils/dot.mli: -------------------------------------------------------------------------------- 1 | (**********************************************************************) 2 | (* *) 3 | (* LASCAr *) 4 | (* *) 5 | (* Copyright (c) 2017-present, Jocelyn SEROT. All rights reserved. *) 6 | (* *) 7 | (* This source code is licensed under the license found in the *) 8 | (* LICENSE file in the root directory of this source tree. *) 9 | (* *) 10 | (**********************************************************************) 11 | 12 | (** {2 Types for controling the aspect of .dot output files} *) 13 | 14 | type graph_style = .. 15 | 16 | type graph_style += 17 | | SubGraph (** Draw graph as a subgraph (to be inserted in an enclosing graph) *) 18 | | RankdirUD (** Draw graph in the Up-down direction *) 19 | | RankdirLR (** Draw graph in the Left-right direction *) 20 | 21 | type node_style = { node_shape: string; node_style: string } 22 | -------------------------------------------------------------------------------- /src/lib/builtins.ml: -------------------------------------------------------------------------------- 1 | (**********************************************************************) 2 | (* *) 3 | (* LASCAr *) 4 | (* *) 5 | (* Copyright (c) 2017-present, Jocelyn SEROT. All rights reserved. *) 6 | (* *) 7 | (* This source code is licensed under the license found in the *) 8 | (* LICENSE file in the root directory of this source tree. *) 9 | (* *) 10 | (**********************************************************************) 11 | 12 | (** Pre-defined functor arguments *) 13 | 14 | module Int = struct 15 | type t = int 16 | let compare = Stdlib.compare 17 | let to_string = string_of_int 18 | end 19 | 20 | module String = struct 21 | type t = string 22 | let compare = Stdlib.compare 23 | let to_string x = x 24 | end 25 | 26 | module Bool = struct 27 | type t = bool 28 | let compare = Stdlib.compare 29 | let to_string = string_of_bool 30 | end 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018-2021 Jocelyn SEROT (jocelyn.serot@uca.fr) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | That's all there is to it! 24 | -------------------------------------------------------------------------------- /docs/html/lascar/index.html: -------------------------------------------------------------------------------- 1 | 2 | index (lascar.index)

lascar index

Library lascar

The entry point of this library is the module: Lascar.

Library lascar.utils

The entry point of this library is the module: Utils.

-------------------------------------------------------------------------------- /examples/moore/simple/main.ml: -------------------------------------------------------------------------------- 1 | (* Building a Moore automata and converting it to Mealy automata *) 2 | 3 | open Utils 4 | open Lascar 5 | 6 | module S = 7 | struct 8 | type t = Q0 | Q1 | Q2 | Q3 [@@deriving show {with_path=false}] 9 | let compare = Stdlib.compare 10 | let to_string = show 11 | end 12 | 13 | open S 14 | 15 | module MM = Moore.Make (S) 16 | 17 | let mm1 = MM.create 18 | ~inps:["c"] 19 | ~outps:["s0";"s1"] 20 | ~states:[Q0, ["s0",false; "s1",false]; 21 | Q1, ["s0",false; "s1",true]; 22 | Q2, ["s0",true; "s1",false]; 23 | Q3, ["s0",true; "s1",true]] 24 | ~istate:Q0 25 | ~trans:[Q0, ["c",false], Q0; 26 | Q0, ["c",true], Q1; 27 | Q1, ["c",false], Q1; 28 | Q1, ["c",true], Q2; 29 | Q2, ["c",false], Q2; 30 | Q2, ["c",true], Q3; 31 | Q3, ["c",false], Q3; 32 | Q3, ["c",true], Q0] 33 | 34 | let _ = MM.dot_output "mm1" mm1 35 | 36 | let _ = MM.unwind 4 mm1 37 | 38 | let _ = MM.dot_output_execs ~options:[Dot.RankdirUD] "mm1_execs" 4 mm1 39 | 40 | module ME = Conv.ToMealy(MM) 41 | 42 | let me1 = ME.conv mm1 43 | 44 | let _ = ME.dot_output "me1" ~options:[Dot.RankdirUD] me1 45 | -------------------------------------------------------------------------------- /src/utils/stringable.mli: -------------------------------------------------------------------------------- 1 | (**********************************************************************) 2 | (* *) 3 | (* LASCAr *) 4 | (* *) 5 | (* Copyright (c) 2017-present, Jocelyn SEROT. All rights reserved. *) 6 | (* *) 7 | (* This source code is licensed under the license found in the *) 8 | (* LICENSE file in the root directory of this source tree. *) 9 | (* *) 10 | (**********************************************************************) 11 | 12 | (** {2 String-convertible types} *) 13 | 14 | module type T = sig 15 | type t 16 | val to_string: t -> string 17 | end 18 | 19 | module Pair (M1: T) (M2: T) : 20 | sig 21 | include T with type t = M1.t * M2.t 22 | val mk: M1.t -> M2.t -> t 23 | end 24 | 25 | module Triplet (M1: T) (M2: T) (M3: T) : 26 | sig 27 | include T with type t = M1.t * M2.t * M3.t 28 | val mk: M1.t -> M2.t -> M3.t -> t 29 | end 30 | 31 | -------------------------------------------------------------------------------- /examples/nfa/ex1/main.ml: -------------------------------------------------------------------------------- 1 | (* Basic building and manipulation of non-determinitic finite automata (NFA) *) 2 | 3 | open Utils 4 | open Lascar 5 | 6 | module Int = struct include Builtins.Int let epsilon = 0 end 7 | module String = struct include Builtins.String let epsilon = "" end 8 | 9 | module A = Nfa.Make (Int) (String) 10 | 11 | let a1 = A.create 12 | ~states:[0;1;2] 13 | ~symbols:["a";"b"] 14 | ~istate:0 15 | ~trans:[0,"a",[0;1]; 16 | 0,"b",[0]; 17 | 1,"b",[2]] 18 | ~astates:[2] 19 | 20 | let _ = A.dot_output "a1" a1 21 | 22 | let accept ss = 23 | Printf.printf "Symbol sequence [%s] is %s\n" 24 | (ListExt.to_string String.to_string "" ss) 25 | (if A.accept a1 ss then "accepted" else "not accepted") 26 | 27 | let _ = List.iter accept [["a";"b"]; ["b";"b"]] 28 | 29 | let a2 = A.totalize a1 100 30 | 31 | let _ = A.dot_output "a2" a2 32 | 33 | let _ = A.unwind 4 a1 34 | 35 | let _ = A.dot_output_execs ~options:[Dot.RankdirLR] "a1_execs" 2 a1 36 | 37 | module A' = Nfa.Make (String) (Int) 38 | 39 | module F = Nfa.Trans (A) (A') 40 | 41 | let a3 = F.map (function x -> "S" ^ string_of_int x) (function "a" -> 1 | "b" -> 2 | _ -> 0) a1 42 | 43 | let _ = A'.dot_output "a3" a3 44 | -------------------------------------------------------------------------------- /examples/lts/simple1/main.ml: -------------------------------------------------------------------------------- 1 | (* Basic example, without state attributes *) 2 | 3 | open Lascar 4 | open Utils 5 | 6 | module State = struct 7 | type t = S0 | S1 | S2 [@@deriving show {with_path=false}] 8 | let compare = Stdlib.compare 9 | let to_string = show 10 | end 11 | 12 | module Label = Builtins.String 13 | 14 | module S = Lts.Make (State) (Label) 15 | 16 | open State 17 | 18 | (* One-step building *) 19 | 20 | let s = S.create 21 | ~states:[S0; S1; S2] 22 | ~itrans:["",S0] 23 | ~trans:[S0,"a",S1; 24 | S1,"b",S0; 25 | S1,"c",S2; 26 | S2,"d",S2; 27 | S0,"e",S2] 28 | 29 | let qs, ts = S.states' s, S.transitions s 30 | 31 | let _ = S.dot_output "simple" ~options:[Dot.RankdirUD] s 32 | 33 | let _ = S.tex_output "simple" s 34 | 35 | let _ = S.dot_output_execs "simple_execs" 4 s 36 | 37 | (* Incremental building *) 38 | 39 | let s' = 40 | S.empty 41 | |> (S.add_state S0) 42 | |> (S.add_state S1) 43 | |> (S.add_state S2) 44 | |> (S.add_transition (S0,"a",S1)) 45 | |> (S.add_transition (S1,"b",S0)) 46 | |> (S.add_transition (S1,"c",S2)) 47 | |> (S.add_transition (S2,"d",S2)) 48 | |> (S.add_transition (S0,"e",S2)) 49 | |> (S.add_itransition ("",S0)) 50 | 51 | let _ = S.dot_output "simple2" ~options:[Dot.RankdirUD] s' 52 | -------------------------------------------------------------------------------- /docs/html/lascar/Utils/Stringable/module-type-T/index.html: -------------------------------------------------------------------------------- 1 | 2 | T (lascar.Utils.Stringable.T)

Module type Stringable.T

type t
val to_string : t -> string
-------------------------------------------------------------------------------- /src/utils/stringable.ml: -------------------------------------------------------------------------------- 1 | (**********************************************************************) 2 | (* *) 3 | (* LASCAr *) 4 | (* *) 5 | (* Copyright (c) 2017-present, Jocelyn SEROT. All rights reserved. *) 6 | (* *) 7 | (* This source code is licensed under the license found in the *) 8 | (* LICENSE file in the root directory of this source tree. *) 9 | (* *) 10 | (**********************************************************************) 11 | 12 | module type T = sig 13 | type t 14 | val to_string: t -> string 15 | end 16 | 17 | module Pair (M1: T) (M2: T) = 18 | struct 19 | type t = M1.t * M2.t 20 | let to_string (e1,e2) = M1.to_string e1 ^ "," ^ M2.to_string e2 21 | let mk e1 e2 = e1,e2 22 | end 23 | 24 | module Triplet (M1: T) (M2: T) (M3: T) = 25 | struct 26 | type t = M1.t * M2.t * M3.t 27 | let to_string (e1,e2,e3) = M1.to_string e1 ^ "," ^ M2.to_string e2 ^ "," ^ M3.to_string e3 28 | let mk e1 e2 e3 = e1,e2,e3 29 | end 30 | -------------------------------------------------------------------------------- /src/lib/fsm_value.mli: -------------------------------------------------------------------------------- 1 | (**********************************************************************) 2 | (* *) 3 | (* LASCAr *) 4 | (* *) 5 | (* Copyright (c) 2017-present, Jocelyn SEROT. All rights reserved. *) 6 | (* *) 7 | (* This source code is licensed under the license found in the *) 8 | (* LICENSE file in the root directory of this source tree. *) 9 | (* *) 10 | (**********************************************************************) 11 | 12 | (** {2 Values occuring in FSM expressions and FSMs} *) 13 | 14 | module type T = sig 15 | type t [@@deriving show] 16 | val to_string: t -> string 17 | val binary_ops: (string * ((t -> t -> t) * int)) list (** name, (fun, infix level); ex: +, -, *, ... *) 18 | val unary_ops: (char * (t -> t)) list (** name, fun *) 19 | val of_int: int -> t 20 | val of_string: string -> t 21 | end 22 | 23 | (** Some predefined instances *) 24 | module Int : T with type t = int 25 | 26 | module Bool : T with type t = bool 27 | -------------------------------------------------------------------------------- /src/utils/option.mli: -------------------------------------------------------------------------------- 1 | (**********************************************************************) 2 | (* *) 3 | (* LASCAr *) 4 | (* *) 5 | (* Copyright (c) 2017-present, Jocelyn SEROT. All rights reserved. *) 6 | (* *) 7 | (* This source code is licensed under the license found in the *) 8 | (* LICENSE file in the root directory of this source tree. *) 9 | (* *) 10 | (**********************************************************************) 11 | 12 | (** {2 Several functions operating on values of type ['a option]} *) 13 | 14 | val map: ('a -> 'b) -> 'a option -> 'b option 15 | (** [apply f v] is [Some (f x)] if [v] is [Some x], [None] if [v] is [None] *) 16 | 17 | val iter: ('a -> unit) -> 'a option -> unit 18 | (** [iter f x] applies [f] to [v] if [x] is [Some v], does nothing if [x] is [None] *) 19 | 20 | val to_string: ('a -> string) -> 'a option -> string 21 | (** [to_string f v] is [f x] if [v] is [Some x], [""] if [v] is [None] *) 22 | 23 | 24 | -------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/Make/argument-3-A/index.html: -------------------------------------------------------------------------------- 1 | 2 | A (lascar.Lascar.Ltsa.Make.A)

Parameter Make.A

type t
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/module-type-ATTR/index.html: -------------------------------------------------------------------------------- 1 | 2 | ATTR (lascar.Lascar.Ltsa.ATTR)

Module type Ltsa.ATTR

Signature of the module describing state attributes

type t
val to_string : t -> string
-------------------------------------------------------------------------------- /examples/mealy/seqadder/main.ml: -------------------------------------------------------------------------------- 1 | (* A sequential adder described as a Mealy automata *) 2 | 3 | open Utils 4 | open Lascar 5 | 6 | module S = 7 | struct 8 | type t = C0 | C1 [@@deriving show {with_path=false}] 9 | let compare = Stdlib.compare 10 | let to_string = show 11 | end 12 | 13 | open S 14 | 15 | module ME = Mealy.Make (S) 16 | 17 | let me1 = ME.create 18 | ~inps:["x1"; "x2"] 19 | ~outps:["s"] 20 | ~states:[C0; C1] 21 | ~istate:C0 22 | ~trans:[C0, (["x1",false;"x2",false],["s",false]), C0; 23 | C0, (["x1",false;"x2",true],["s",true]), C0; 24 | C0, (["x1",true;"x2",false],["s",true]), C0; 25 | C0, (["x1",true;"x2",true],["s",false]), C1; 26 | C1, (["x1",false;"x2",false],["s",true]), C0; 27 | C1, (["x1",false;"x2",true],["s",false]), C1; 28 | C1, (["x1",true;"x2",false],["s",false]), C1; 29 | C1, (["x1",true;"x2",true],["s",true]), C1] 30 | 31 | let _ = ME.dot_output "me1" ~options:[Dot.RankdirLR] me1 32 | 33 | module MM = Conv.ToMoore(ME) 34 | 35 | let mm1 = MM.conv ~init:(Some (C0,["s",false])) me1 36 | 37 | let _ = MM.dot_output "mm1" ~options:[Dot.RankdirLR(*;Ltsa.NoAttr*)] mm1 38 | 39 | module ME1 = Conv.ToMealy(MM) 40 | 41 | let me2 = ME1.conv mm1 42 | 43 | let _ = ME1.dot_output "me2" ~options:[Dot.RankdirLR] me2 44 | 45 | -------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Make/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Make.Attr)

Module Make.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/module-type-T/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.T.Attr)

Module T.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Nfa/Make/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Nfa.Make.Attr)

Module Make.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Nfa/module-type-T/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Nfa.T.Attr)

Module T.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Utils/Stringable/Pair/argument-1-M1/index.html: -------------------------------------------------------------------------------- 1 | 2 | M1 (lascar.Utils.Stringable.Pair.M1)

Parameter Pair.M1

type t
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Utils/Stringable/Pair/argument-2-M2/index.html: -------------------------------------------------------------------------------- 1 | 2 | M2 (lascar.Utils.Stringable.Pair.M2)

Parameter Pair.M2

type t
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/ToDfa/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.ToDfa.Attr)

Module ToDfa.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Mealy/Make/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Mealy.Make.Attr)

Module Make.Attr

type t = unit
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Mealy/module-type-T/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Mealy.T.Attr)

Module T.Attr

type t = unit
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Product/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Product.Attr)

Module Product.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Nfa/Product/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Nfa.Product.Attr)

Module Product.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /examples/lts/clock/main.ml: -------------------------------------------------------------------------------- 1 | (* A clock described as a synchronized product of two automata : 2 | one for the hours, the other for the minutes *) 3 | 4 | open Utils 5 | open Lascar 6 | 7 | module H = 8 | Lts.Make (Builtins.Int) (Builtins.String) 9 | 10 | module M = H 11 | 12 | let mk_state i = i 13 | 14 | let mk_label p i = p ^ string_of_int i 15 | 16 | let mk_transition p i j = i, mk_label p i, j 17 | let mk_transition' p i = i, mk_label p i, i+1 18 | 19 | let create f p n = 20 | f 21 | ~states:(ListExt.range mk_state 0 (n-1)) 22 | ~itrans:["",0] 23 | ~trans:((mk_transition p (n-1) 0) :: ListExt.range (mk_transition' p) 0 (n-2)) 24 | 25 | let hours_per_day = 4 26 | let minutes_per_hour = 4 27 | 28 | let hr = create H.create "h" hours_per_day 29 | let mn = create M.create "m" minutes_per_hour 30 | 31 | let _ = H.dot_output "hours" ~options:[Dot.RankdirUD] hr 32 | let _ = M.dot_output "minutes" ~options:[Dot.RankdirUD] mn 33 | 34 | module Clock = Lts.Product (M) (H) 35 | 36 | let clock = 37 | Clock.synchronized_product 38 | (ListExt.range (function i -> Some (mk_label "m" i), None) 0 (minutes_per_hour-2) 39 | @ ListExt.range (function i -> Some (mk_label "m" (minutes_per_hour-1)), Some (mk_label "h" i)) 0 (hours_per_day-1)) 40 | mn 41 | hr 42 | 43 | let _ = Clock.dot_output "clock" ~options:[Dot.RankdirLR] clock 44 | -------------------------------------------------------------------------------- /src/utils/filenameExt.mli: -------------------------------------------------------------------------------- 1 | (**********************************************************************) 2 | (* *) 3 | (* LASCAr *) 4 | (* *) 5 | (* Copyright (c) 2017-present, Jocelyn SEROT. All rights reserved. *) 6 | (* *) 7 | (* This source code is licensed under the license found in the *) 8 | (* LICENSE file in the root directory of this source tree. *) 9 | (* *) 10 | (**********************************************************************) 11 | 12 | (** {2 Extension to the [Stdlib.Filename] module} *) 13 | 14 | val split_suffix: string -> string * string 15 | (** [split_suffix fname] removes any suffix from [fname] and returns both the resulting name and the removed suffix *) 16 | 17 | val add_before_suffix: string -> string -> string 18 | (** if [split_suffix fname] gives [(base,suff)], [add_before_suffix fname s] returns [base^s^suff] *) 19 | 20 | val replace_suffix: string -> string -> string 21 | (** if [split_suffix fname] gives [(base,suff)], [replace_suffix fname s] returns [base^"."^s] *) 22 | 23 | -------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/ToMealy/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.ToMealy.Attr)

Module ToMealy.Attr

type t = unit
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Utils/Stringable/Triplet/argument-1-M1/index.html: -------------------------------------------------------------------------------- 1 | 2 | M1 (lascar.Utils.Stringable.Triplet.M1)

Parameter Triplet.M1

type t
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Utils/Stringable/Triplet/argument-2-M2/index.html: -------------------------------------------------------------------------------- 1 | 2 | M2 (lascar.Utils.Stringable.Triplet.M2)

Parameter Triplet.M2

type t
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Utils/Stringable/Triplet/argument-3-M3/index.html: -------------------------------------------------------------------------------- 1 | 2 | M3 (lascar.Utils.Stringable.Triplet.M3)

Parameter Triplet.M3

type t
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/Make/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.Make.Attr)

Module Make.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/module-type-T/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.T.Attr)

Module T.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/FromLts/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.FromLts.Attr)

Module FromLts.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/Fsm/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.Fsm.Attr)

Module Fsm.Attr

type t = Valuation.t
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Fsm/Make/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Fsm.Make.Attr)

Module Make.Attr

type t = Valuation.t
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Fsm/module-type-T/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Fsm.T.Attr)

Module T.Attr

type t = Valuation.t
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/Product/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.Product.Attr)

Module Product.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/IProduct/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.IProduct.Attr)

Module IProduct.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/Product3/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.Product3.Attr)

Module Product3.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/IProduct3/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.IProduct3.Attr)

Module IProduct3.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Make/NFA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Make.NFA.Attr)

Module NFA.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/ToDfa/NFA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.ToDfa.NFA.Attr)

Module NFA.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/module-type-T/NFA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.T.NFA.Attr)

Module NFA.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /src/lib/.depend: -------------------------------------------------------------------------------- 1 | ltsa.cmo : ltsa.cmi 2 | ltsa.cmx : ltsa.cmi 3 | lts.cmo : ltsa.cmi lts.cmi 4 | lts.cmx : ltsa.cmx lts.cmi 5 | nfa.cmo : ltsa.cmi nfa.cmi 6 | nfa.cmx : ltsa.cmx nfa.cmi 7 | dfa.cmo : nfa.cmi ltsa.cmi dfa.cmi 8 | dfa.cmx : nfa.cmx ltsa.cmx dfa.cmi 9 | valuation.cmo : valuation.cmi 10 | valuation.cmx : valuation.cmi 11 | mealy.cmo : valuation.cmi ltsa.cmi lts.cmi mealy.cmi 12 | mealy.cmx : valuation.cmx ltsa.cmx lts.cmx mealy.cmi 13 | moore.cmo : valuation.cmi ltsa.cmi moore.cmi 14 | moore.cmx : valuation.cmx ltsa.cmx moore.cmi 15 | fsm_expr.cmo : fsm_expr.cmi 16 | fsm_expr.cmx : fsm_expr.cmi 17 | fsm.cmo : valuation.cmi ltsa.cmi fsm_expr.cmi fsm.cmi 18 | fsm.cmx : valuation.cmx ltsa.cmx fsm_expr.cmx fsm.cmi 19 | conv.cmo : valuation.cmi nfa.cmi moore.cmi mealy.cmi ltsa.cmi lts.cmi \ 20 | fsm_expr.cmi fsm.cmi dfa.cmi conv.cmi 21 | conv.cmx : valuation.cmx nfa.cmx moore.cmx mealy.cmx ltsa.cmx lts.cmx \ 22 | fsm_expr.cmx fsm.cmx dfa.cmx conv.cmi 23 | builtins.cmo : builtins.cmi 24 | builtins.cmx : builtins.cmi 25 | ltsa.cmi : 26 | lts.cmi : ltsa.cmi 27 | nfa.cmi : ltsa.cmi 28 | dfa.cmi : nfa.cmi ltsa.cmi 29 | valuation.cmi : 30 | mealy.cmi : valuation.cmi ltsa.cmi lts.cmi 31 | moore.cmi : valuation.cmi ltsa.cmi 32 | fsm_expr.cmi : 33 | fsm.cmi : valuation.cmi ltsa.cmi fsm_expr.cmi 34 | conv.cmi : valuation.cmi nfa.cmi moore.cmi mealy.cmi ltsa.cmi lts.cmi \ 35 | fsm.cmi dfa.cmi 36 | builtins.cmi : 37 | -------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/ToDfa/argument-1-N/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.ToDfa.N.Attr)

Module N.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Product/NFA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Product.NFA.Attr)

Module NFA.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Trans/argument-1-S1/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Trans.S1.Attr)

Module S1.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Trans/argument-2-S2/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Trans.S2.Attr)

Module S2.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Moore/Make/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Moore.Make.Attr)

Module Make.Attr

val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Moore/module-type-T/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Moore.T.Attr)

Module T.Attr

val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Nfa/Trans/argument-1-S1/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Nfa.Trans.S1.Attr)

Module S1.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Nfa/Trans/argument-2-S2/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Nfa.Trans.S2.Attr)

Module S2.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/ToMoore/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.ToMoore.Attr)

Module ToMoore.Attr

val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Product/argument-1-S1/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Product.S1.Attr)

Module S1.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Product/argument-2-S2/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Product.S2.Attr)

Module S2.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Nfa/Product/argument-1-S1/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Nfa.Product.S1.Attr)

Module S1.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Nfa/Product/argument-2-S2/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Nfa.Product.S2.Attr)

Module S2.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/ToMoore/argument-1-ME/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.ToMoore.ME.Attr)

Module ME.Attr

type t = unit
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/Fsm/M/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.Fsm.M.Attr)

Module M.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Fsm/Make/M/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Fsm.Make.M.Attr)

Module M.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Fsm/module-type-T/M/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Fsm.T.M.Attr)

Module M.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Mealy/Make/M/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Mealy.Make.M.Attr)

Module M.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Moore/Make/M/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Moore.Make.M.Attr)

Module M.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/ToMealy/M/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.ToMealy.M.Attr)

Module M.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/ToMoore/M/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.ToMoore.M.Attr)

Module M.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Make/LTSA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Make.LTSA.Attr)

Module LTSA.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Lts/Make/Repr/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Lts.Make.Repr.Attr)

Module Repr.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Mealy/module-type-T/M/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Mealy.T.M.Attr)

Module M.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Moore/module-type-T/M/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Moore.T.M.Attr)

Module M.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Nfa/Make/LTSA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Nfa.Make.LTSA.Attr)

Module LTSA.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/ToLts/argument-1-M/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.ToLts.M.Attr)

Module M.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/module-type-T/LTSA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.T.LTSA.Attr)

Module LTSA.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Lts/module-type-T/Repr/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Lts.T.Repr.Attr)

Module Repr.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Nfa/module-type-T/LTSA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Nfa.T.LTSA.Attr)

Module LTSA.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/ToDfa/LTSA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.ToDfa.LTSA.Attr)

Module LTSA.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/ToLts/Repr/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.ToLts.Repr.Attr)

Module Repr.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Product/LTSA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Product.LTSA.Attr)

Module LTSA.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Lts/Product/Repr/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Lts.Product.Repr.Attr)

Module Repr.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/Trans/argument-1-S1/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.Trans.S1.Attr)

Module S1.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/Trans/argument-2-S2/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.Trans.S2.Attr)

Module S2.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Nfa/Product/LTSA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Nfa.Product.LTSA.Attr)

Module LTSA.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/Fsm/argument-1-F/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.Fsm.F.Attr)

Module F.Attr

type t = Valuation.t
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Lts/Product3/Repr/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Lts.Product3.Repr.Attr)

Module Repr.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/IProduct/argument-1-S/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.IProduct.S.Attr)

Module S.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/Product/argument-1-S1/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.Product.S1.Attr)

Module S1.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/Product/argument-2-S2/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.Product.S2.Attr)

Module S2.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Fsm/Trans/argument-1-S1/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Fsm.Trans.S1.Attr)

Module S1.Attr

type t = Valuation.t
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Fsm/Trans/argument-2-S2/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Fsm.Trans.S2.Attr)

Module S2.Attr

type t = Valuation.t
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/IProduct3/argument-1-S/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.IProduct3.S.Attr)

Module S.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/Product3/argument-1-S1/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.Product3.S1.Attr)

Module S1.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/Product3/argument-2-S2/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.Product3.S2.Attr)

Module S2.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Ltsa/Product3/argument-3-S3/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Ltsa.Product3.S3.Attr)

Module S3.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Trans/argument-1-S1/NFA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Trans.S1.NFA.Attr)

Module NFA.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Trans/argument-2-S2/NFA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Trans.S2.NFA.Attr)

Module NFA.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Product/argument-1-S1/NFA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Product.S1.NFA.Attr)

Module NFA.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Product/argument-2-S2/NFA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Product.S2.NFA.Attr)

Module NFA.Attr

type t = bool
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/ToMealy/argument-1-MM/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.ToMealy.MM.Attr)

Module MM.Attr

val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Conv/Fsm/argument-1-F/M/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Conv.Fsm.F.M.Attr)

Module M.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Dfa/Make/NFA/LTSA/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Dfa.Make.NFA.LTSA.Attr)

Module LTSA.Attr

type t = attr
val to_string : t -> string
-------------------------------------------------------------------------------- /docs/html/lascar/Lascar/Fsm/Trans/argument-1-S1/M/Attr/index.html: -------------------------------------------------------------------------------- 1 | 2 | Attr (lascar.Lascar.Fsm.Trans.S1.M.Attr)

Module M.Attr

type t = attr
val to_string : t -> string
--------------------------------------------------------------------------------