Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
cool
Manage
Activity
Members
Labels
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Hans-Peter Deifel
cool
Commits
2a84977e
Commit
2a84977e
authored
11 years ago
by
Thorsten Wißmann
Browse files
Options
Downloads
Patches
Plain Diff
Implement complete KD rule
parent
b7445f7e
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
CoAlgLogics.ml
+24
-4
24 additions, 4 deletions
CoAlgLogics.ml
CoAlgMisc.ml
+3
-2
3 additions, 2 deletions
CoAlgMisc.ml
with
27 additions
and
6 deletions
CoAlgLogics.ml
+
24
−
4
View file @
2a84977e
...
@@ -71,10 +71,11 @@ let mkRule_MultiModalK sort bs sl =
...
@@ -71,10 +71,11 @@ let mkRule_MultiModalK sort bs sl =
*)
*)
let
mkRule_MultiModalKD
sort
bs
sl
=
let
mkRule_MultiModalKD
sort
bs
sl
=
assert
(
List
.
length
sl
=
1
);
(* TODO: Why? *)
assert
(
List
.
length
sl
=
1
);
(* TODO: Why? *)
let
s1
=
List
.
hd
sl
in
(* [s1] = List.hd sl *)
let
roles
=
S
.
makeBS
()
in
let
roles
=
S
.
makeBS
()
in
(* step 1: for each ∀R._ add R *)
(* step 1: for each ∀R._ add R *)
let
addRoleIfBox
formula
=
let
addRoleIfBox
formula
=
if
lfGetType
sort
formula
=
E
xF
then
if
lfGetType
sort
formula
=
A
xF
then
ignore
(
S
.
addBS
roles
(
lfGetDest3
sort
formula
))
ignore
(
S
.
addBS
roles
(
lfGetDest3
sort
formula
))
else
()
else
()
in
in
...
@@ -89,9 +90,28 @@ let mkRule_MultiModalKD sort bs sl =
...
@@ -89,9 +90,28 @@ let mkRule_MultiModalKD sort bs sl =
(* step 3: for each R in roles enforce one successor *)
(* step 3: for each R in roles enforce one successor *)
let
getRules
r
acc
=
(* add the rule for a concrete R *)
let
getRules
r
acc
=
(* add the rule for a concrete R *)
let
dep
r
bsl
=
let
dep
r
bsl
=
bsetIter
(
rmRoleIfDiamond
)
bs
;
assert
(
List
.
length
bsl
=
1
);
(* -+ *)
let
bs1
=
List
.
hd
bsl
in
(* -+-> [bs1] := bsl *)
let
res
=
bsetMake
()
in
(* res := { ∀R.D ∈ bs | D ∈ bs1} *)
let
f
formula
=
if
lfGetType
sort
formula
=
AxF
&&
lfGetDest3
sort
formula
=
r
&&
bsetMem
bs1
(
lfGetDest1
sort
formula
)
then
ignore
(
bsetAdd
res
formula
)
else
()
in
bsetIter
f
bs
;
(* fill res *)
res
in
let
succs
=
bsetMake
()
in
(* succs := {D | ∀r.D ∈ bs *)
let
f
formula
=
if
lfGetType
sort
formula
=
AxF
&&
lfGetDest3
sort
formula
=
r
then
ignore
(
bsetAdd
succs
(
lfGetDest1
sort
formula
))
else
()
in
in
acc
bsetIter
f
bs
;
(
dep
r
,
[(
s1
,
succs
)])
::
acc
in
in
(*
(*
mkRule_MultiModalKD sort bs [s1]
mkRule_MultiModalKD sort bs [s1]
...
@@ -189,7 +209,7 @@ let mkRule_Fusion sort bs sl =
...
@@ -189,7 +209,7 @@ let mkRule_Fusion sort bs sl =
"plug-in" function.
"plug-in" function.
*)
*)
let
getExpandingFunctionProducer
=
function
let
getExpandingFunctionProducer
=
function
|
MultiModalK
->
mkRule_MultiModalK
D
|
MultiModalK
->
mkRule_MultiModalK
|
MultiModalKD
->
mkRule_MultiModalKD
|
MultiModalKD
->
mkRule_MultiModalKD
|
Choice
->
mkRule_Choice
|
Choice
->
mkRule_Choice
|
Fusion
->
mkRule_Fusion
|
Fusion
->
mkRule_Fusion
This diff is collapsed.
Click to expand it.
CoAlgMisc.ml
+
3
−
2
View file @
2a84977e
...
@@ -532,8 +532,9 @@ let rec detClosure nomTbl hcF fset atset nomset s f =
...
@@ -532,8 +532,9 @@ let rec detClosure nomTbl hcF fset atset nomset s f =
detClosure
nomTbl
hcF
fset
atset
nomset
s
f2
detClosure
nomTbl
hcF
fset
atset
nomset
s
f2
|
C
.
HCEX
(
_
,
f1
)
|
C
.
HCEX
(
_
,
f1
)
|
C
.
HCAX
(
_
,
f1
)
->
|
C
.
HCAX
(
_
,
f1
)
->
if
func
<>
MultiModalK
||
List
.
length
sortlst
<>
1
then
if
(
func
<>
MultiModalK
&&
func
<>
MultiModalKD
)
raise
(
C
.
CoAlgException
"Ex/Ax-formula is used in wrong sort."
)
||
List
.
length
sortlst
<>
1
then
raise
(
C
.
CoAlgException
"Ex/Ax-formula is used in wrong sort."
)
else
()
;
else
()
;
detClosure
nomTbl
hcF
fset
atset
nomset
(
List
.
hd
sortlst
)
f1
detClosure
nomTbl
hcF
fset
atset
nomset
(
List
.
hd
sortlst
)
f1
|
C
.
HCMIN
_
|
C
.
HCMIN
_
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment