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:
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 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 ()
|
||||
|
|
|
@ -19,7 +19,6 @@ common stuff
|
|||
default-language: GHC2021
|
||||
default-extensions:
|
||||
RecordWildCards
|
||||
ghc-options: -Wall
|
||||
|
||||
library
|
||||
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 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
|
||||
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue