From d164af275ed0c0d9e32f771fd105a86db1078ec2 Mon Sep 17 00:00:00 2001 From: Joscha Date: Thu, 31 Oct 2019 19:33:43 +0000 Subject: [PATCH] Prepare files for making repository public --- LICENSE | 43 +++++++----------- README.md | 35 ++++++++++++++ package.yaml | 10 ++-- resources/minimization_example_dfa.png | Bin 0 -> 31269 bytes .../minimization_example_dfa_minimized.png | Bin 0 -> 23910 bytes 5 files changed, 56 insertions(+), 32 deletions(-) create mode 100644 resources/minimization_example_dfa.png create mode 100644 resources/minimization_example_dfa_minimized.png diff --git a/LICENSE b/LICENSE index 102126f..510a6d6 100644 --- a/LICENSE +++ b/LICENSE @@ -1,30 +1,21 @@ -Copyright Author name here (c) 2019 +MIT License -All rights reserved. +Copyright (c) 2019 Garmelon -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. - * Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - * Neither the name of Author name here nor the names of other - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index c564de6..1dfbd7b 100644 --- a/README.md +++ b/README.md @@ -1 +1,36 @@ # rextra + +At the moment, rextra can display DFAs and NFAs using Graphviz, +convert between NFAs and DFAs, and minimize DFAs. + +The representation of DFAs and NFAs assumes an infinite alphabet: + +DFA states always contain a default transition (marked with `*` in the +visualisations), which is taken if the current token doesn't appear in +any of the other transitions. + +NFA transitions either apply to a set of tokens, or to all tokens +*except* a specified set. In the visualisation, the character `Σ` +denotes the alphabet of tokens. + +## Example + +This example minimizes the DFA shown on the +[wikipedia article about DFA minimization](https://en.wikipedia.org/wiki/DFA_minimization). + +Transitions for the token `1` are specified explicitly (where +necessary), while transitions for the token `0` are represented by the +default transition marked with `*`. + +This ghci session shows the minimization of the DFA mentioned above. + +``` haskell +>>> Just a = dfa [ ("a",[('1',"c")],"b"), ("b",[('1',"d")],"a"), ("c",[('1',"f")],"e"), ("d",[('1',"f")],"e"), ("e",[('1',"f")],"e"), ("f",[],"f") ] "a" ["c","d","e"] +>>> saveDotAsPng "dfa.png" $ dfaToDot a +``` +![](resources/minimization_example_dfa.png) +``` haskell +>>> saveDotAsPng "dfa_minimized.png" $ dfaToDot $ minimizeDfa a +``` +![](resources/minimization_example_dfa_minimized.png) + diff --git a/package.yaml b/package.yaml index e2da93f..1b3ad81 100644 --- a/package.yaml +++ b/package.yaml @@ -1,10 +1,10 @@ name: rextra version: 0.1.0.0 github: "Garmelon/rextra" -license: BSD3 -author: "Author name here" -maintainer: "example@example.com" -copyright: "2019 Author name here" +license: MIT +author: "Garmelon" +maintainer: "joscha@plugh.de" +copyright: "2019 Garmelon" extra-source-files: - README.md @@ -23,8 +23,6 @@ dependencies: - transformers >= 0.5.6 && < 0.6 - containers >= 0.6 && < 0.7 - graphviz >= 2999.20 && < 2999.21 -- fgl >= 5.7 && < 5.8 -# algebraic-graphs >= 0.4 && < 0.5 library: source-dirs: src diff --git a/resources/minimization_example_dfa.png b/resources/minimization_example_dfa.png new file mode 100644 index 0000000000000000000000000000000000000000..32eec0509e5150444cf0146581c252c9e6e01aae GIT binary patch literal 31269 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%0D@-PJL7u3p`m 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
q=s-rnk^Df<^MK79Igx6{Iuv^1}kTu0p! zr?xN32nrJFxu9FKgHuscPjB1y?bk0}Y!uwZF39W}CfBuSd;a}vmoIPLwhgqVNi}K0 z*|hrKZ?}tZ9ld#T=W&@+3Q7wffLiXWR%KmV6Uot3^YiI+31#iH)Kp6=t4SxH_|7)_ zdg6#t#|n*opA^E^#cbTLL1CiD!Gj0+0|p>FGz09?ieMFE=wY zGdo)ubg-tYzyJA5moDA9b?e+YzPuDEmq&k=Pc`T0(>U>Ok0YB*^C@W-dA6zM9Cm-? Zr?0(b{=#946$1kUgQu&X%Q~loCIEdKwLSm< literal 0 HcmV?d00001 diff --git a/resources/minimization_example_dfa_minimized.png b/resources/minimization_example_dfa_minimized.png new file mode 100644 index 0000000000000000000000000000000000000000..464f58e6793f2d6fef423092983e3ad46a26f90a GIT binary patch literal 23910 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 C9Q(-t literal 0 HcmV?d00001