cpsa 3.6.8 → 3.6.9
raw patch · 4 files changed
+32/−5 lines, 4 files
Files
- ChangeLog +10/−0
- NEWS +5/−1
- cpsa.cabal +1/−1
- src/CPSA/Lib/Strand.hs +16/−3
ChangeLog view
@@ -1,3 +1,13 @@+2022-01-04 John D. Ramsdell <ramsdell@mitre.org>++ * cpsa.cabal (Version): Tagged as 3.6.9++2021-12-08 John D. Ramsdell <ramsdell@mitre.org>++ * src/CPSA/Lib/Strand.hs (origUgenDiffStrand): Expunge skeletons+ that have a value that is both uniq orig and uniq gen, and start+ on different strands.+ 2021-11-12 John D. Ramsdell <ramsdell@mitre.org> * cpsa.cabal (Version): Tagged as 3.6.8
NEWS view
@@ -1,5 +1,10 @@ CPSA NEWS + January 2022:++* Release 3.6.9 expunges skeletons that have a value that is both uniq+ orig and uniq gen, and start on different strands.+ November 2021: * Release 3.6.8 adds a stronger method for solving Diffie-Hellman@@ -163,4 +168,3 @@ * New, improved documentation. Included with the release is the CPSA manual which thoroughly documents the new and existing features of the tool and is also a good starting place for new users.-
cpsa.cabal view
@@ -1,5 +1,5 @@ Name: cpsa-Version: 3.6.8+Version: 3.6.9 Maintainer: mliskov@mitre.org Cabal-Version: >= 1.10 License: BSD3
src/CPSA/Lib/Strand.hs view
@@ -2400,11 +2400,24 @@ ((c,d) /= (a,b)) && ((c,d) /= (b,a))) rest))) -- Determine if a given PRS has a multiple origination of a--- non-numeric fresh value.-hasMultipleOrig :: PRS t p g s e c -> Bool+-- non-numeric fresh value. Also when a value is both uniq+-- orig and uniq gen, check to see if they start on different strands.+hasMultipleOrig :: Algebra t p g s e c => PRS t p g s e c -> Bool hasMultipleOrig prs = any (\(_, l) -> length l > 1) (korig (skel prs)) ||- any (\(_, l) -> length l > 1) (kugen (skel prs))+ any (\(_, l) -> length l > 1) (kugen (skel prs)) ||+ origUgenDiffStrand (korig (skel prs)) (kugen (skel prs))++-- When a value is both uniq orig and uniq gen, check to see if they+-- start on different strands.+origUgenDiffStrand :: Algebra t p g s e c => [(t, [Node])] ->+ [(t, [Node])] -> Bool+origUgenDiffStrand _ [] = False+origUgenDiffStrand orig ((t, ns) : ugen) =+ case lookup t orig of+ Nothing -> origUgenDiffStrand orig ugen+ Just ns' -> any f ns || origUgenDiffStrand orig ugen+ where f (s, _) = any (\(s', _) -> s /= s') ns' checkOrigs :: Algebra t p g s e c => Gist t g -> Gist t g -> (g, e) -> [Sid] -> Bool