mirror of
https://git.cs.ou.nl/joshua.moerman/mealy-decompose.git
synced 2025-04-30 02:07:44 +02:00
nothing really
This commit is contained in:
parent
4127546f67
commit
22bec3873b
4 changed files with 8 additions and 13 deletions
|
@ -19,7 +19,8 @@ import Data.Tuple (swap)
|
||||||
import System.Environment
|
import System.Environment
|
||||||
import Text.Megaparsec
|
import Text.Megaparsec
|
||||||
|
|
||||||
converseRelation :: (Ord a, Ord b) => Map.Map a b -> Map.Map b [a]
|
|
||||||
|
converseRelation :: Ord b => Map.Map a b -> Map.Map b [a]
|
||||||
converseRelation m = Map.fromListWith (++) . fmap (second pure . swap) . Map.assocs $ m
|
converseRelation m = Map.fromListWith (++) . fmap (second pure . swap) . Map.assocs $ m
|
||||||
|
|
||||||
myWriteFile :: FilePath -> String -> IO ()
|
myWriteFile :: FilePath -> String -> IO ()
|
||||||
|
|
|
@ -19,7 +19,6 @@ common stuff
|
||||||
default-language: GHC2021
|
default-language: GHC2021
|
||||||
default-extensions:
|
default-extensions:
|
||||||
RecordWildCards
|
RecordWildCards
|
||||||
ghc-options: -Wall
|
|
||||||
|
|
||||||
library
|
library
|
||||||
import: stuff
|
import: stuff
|
||||||
|
|
13
src/LStar.hs
13
src/LStar.hs
|
@ -7,11 +7,11 @@ import Control.Monad.Trans.Class
|
||||||
import Control.Monad.Trans.State.Strict
|
import Control.Monad.Trans.State.Strict
|
||||||
|
|
||||||
import Data.Foldable (minimumBy)
|
import Data.Foldable (minimumBy)
|
||||||
import Data.Function (on)
|
|
||||||
import Data.Functor.Identity
|
import Data.Functor.Identity
|
||||||
import Data.List (tails)
|
import Data.List (tails, stripPrefix)
|
||||||
import Data.Map.Strict qualified as Map
|
|
||||||
import Data.Map.Merge.Strict qualified as MapMerge
|
import Data.Map.Merge.Strict qualified as MapMerge
|
||||||
|
import Data.Map.Strict qualified as Map
|
||||||
|
import Data.Ord (comparing)
|
||||||
import Data.Set qualified as Set
|
import Data.Set qualified as Set
|
||||||
import Prelude hiding (Word)
|
import Prelude hiding (Word)
|
||||||
|
|
||||||
|
@ -165,12 +165,7 @@ makeClosedAndConsistentA mq = loop False where
|
||||||
-- eenvoudiger.
|
-- eenvoudiger.
|
||||||
processCounterexampleA :: (Applicative f, Ord i) => Word i -> MQ f i o -> LStarState i o -> f (LStarState i o)
|
processCounterexampleA :: (Applicative f, Ord i) => Word i -> MQ f i o -> LStarState i o -> f (LStarState i o)
|
||||||
processCounterexampleA ce mq table@LStarState{..} = addColumnsA newSuffixes mq table where
|
processCounterexampleA ce mq table@LStarState{..} = addColumnsA newSuffixes mq table where
|
||||||
removePrefix [] w2 = Just w2
|
shortestSuffix = minimumBy (comparing length) [suf | r <- Set.toList rowIndices, Just suf <- [stripPrefix r ce]]
|
||||||
removePrefix _ [] = Nothing
|
|
||||||
removePrefix (a:w1) (b:w2)
|
|
||||||
| a == b = removePrefix w1 w2
|
|
||||||
| otherwise = Nothing
|
|
||||||
shortestSuffix = minimumBy (compare `on` length) [suf | r <- Set.toList rowIndices, Just suf <- [removePrefix r ce]]
|
|
||||||
newSuffixes = filter (not . null) . tails . drop 1 $ shortestSuffix
|
newSuffixes = filter (not . null) . tails . drop 1 $ shortestSuffix
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,9 +6,9 @@ import Control.Monad (replicateM)
|
||||||
import Control.Monad.IO.Class (liftIO)
|
import Control.Monad.IO.Class (liftIO)
|
||||||
import Control.Monad.Trans.State.Strict
|
import Control.Monad.Trans.State.Strict
|
||||||
import Data.Bifunctor (first)
|
import Data.Bifunctor (first)
|
||||||
import Data.Function (on)
|
|
||||||
import Data.List (minimumBy)
|
import Data.List (minimumBy)
|
||||||
import Data.Map.Strict qualified as Map
|
import Data.Map.Strict qualified as Map
|
||||||
|
import Data.Ord (comparing)
|
||||||
import Data.Set qualified as Set
|
import Data.Set qualified as Set
|
||||||
|
|
||||||
data MergerStats = MergerStats
|
data MergerStats = MergerStats
|
||||||
|
@ -35,7 +35,7 @@ heuristicMerger components strategy = do
|
||||||
in ((os, p3), score ps p3)
|
in ((os, p3), score ps p3)
|
||||||
isSortedOn f ls = and $ zipWith (\a b -> f a < f b) ls (drop 1 ls)
|
isSortedOn f ls = and $ zipWith (\a b -> f a < f b) ls (drop 1 ls)
|
||||||
allCombs n projs = fmap combine . filter (isSortedOn fst) $ replicateM n projs
|
allCombs n projs = fmap combine . filter (isSortedOn fst) $ replicateM n projs
|
||||||
minComb n projs = minimumBy (compare `on` snd) (allCombs n projs)
|
minComb n projs = minimumBy (comparing snd) (allCombs n projs)
|
||||||
safeStrategy ms@MergerStats{..}
|
safeStrategy ms@MergerStats{..}
|
||||||
| numberOfComponents <= 1 = Stop
|
| numberOfComponents <= 1 = Stop
|
||||||
| otherwise = strategy ms
|
| otherwise = strategy ms
|
||||||
|
|
Loading…
Add table
Reference in a new issue