1
Fork 0
mirror of https://git.cs.ou.nl/joshua.moerman/mealy-decompose.git synced 2025-04-29 17:57:44 +02:00

nothing really

This commit is contained in:
Joshua Moerman 2024-04-29 17:42:54 +02:00
parent 4127546f67
commit 22bec3873b
4 changed files with 8 additions and 13 deletions

View file

@ -19,7 +19,8 @@ import Data.Tuple (swap)
import System.Environment
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
myWriteFile :: FilePath -> String -> IO ()

View file

@ -19,7 +19,6 @@ common stuff
default-language: GHC2021
default-extensions:
RecordWildCards
ghc-options: -Wall
library
import: stuff

View file

@ -7,11 +7,11 @@ import Control.Monad.Trans.Class
import Control.Monad.Trans.State.Strict
import Data.Foldable (minimumBy)
import Data.Function (on)
import Data.Functor.Identity
import Data.List (tails)
import Data.Map.Strict qualified as Map
import Data.List (tails, stripPrefix)
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 Prelude hiding (Word)
@ -165,12 +165,7 @@ makeClosedAndConsistentA mq = loop False where
-- eenvoudiger.
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
removePrefix [] w2 = Just w2
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]]
shortestSuffix = minimumBy (comparing length) [suf | r <- Set.toList rowIndices, Just suf <- [stripPrefix r ce]]
newSuffixes = filter (not . null) . tails . drop 1 $ shortestSuffix

View file

@ -6,9 +6,9 @@ import Control.Monad (replicateM)
import Control.Monad.IO.Class (liftIO)
import Control.Monad.Trans.State.Strict
import Data.Bifunctor (first)
import Data.Function (on)
import Data.List (minimumBy)
import Data.Map.Strict qualified as Map
import Data.Ord (comparing)
import Data.Set qualified as Set
data MergerStats = MergerStats
@ -35,7 +35,7 @@ heuristicMerger components strategy = do
in ((os, p3), score ps p3)
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
minComb n projs = minimumBy (compare `on` snd) (allCombs n projs)
minComb n projs = minimumBy (comparing snd) (allCombs n projs)
safeStrategy ms@MergerStats{..}
| numberOfComponents <= 1 = Stop
| otherwise = strategy ms