module Labels where import DCLabel.Safe import DCLabel.PrettyShow -- Creating categories c1 = "Alice" c2 = "Alice" .\/. "Bob" c3 = (<>) -- Labels, i.e. conjunctions of disjunctions -- Observe the precedence of .\/. is higher than ./\. l1 = "Alice" .\/. "Bob" ./\. "Carla" l2 = "Alice" ./\. "Carla" -- DCLabels dc1 = newDC l1 l2 dc2 = newDC ("Deian") ("Alice") main = do putStrLn . prettyShow $ dc1 putStrLn . prettyShow $ dc2 putStrLn . prettyShow $ join dc1 dc2 putStrLn . prettyShow $ meet dc1 dc2 putStrLn . prettyShow $ dc1 putStrLn . prettyShow $ join dc1 top putStrLn . show $ canflowto dc1 top putStrLn . show $ canflowto bottom dc1 {- <{["Alice" \/ "Bob"] /\ ["Carla"]} , {["Alice"] /\ ["Carla"]}> <{["Deain"]} , {["Alice"]}> <{["Alice" \/ "Bob"] /\ ["Carla"] /\ ["Deain"]} , {["Alice"]}> <{["Alice" \/ "Bob" \/ "Deain"] /\ ["Carla" \/ "Deain"]} , {["Alice"] /\ ["Carla"]}> <{["Alice" \/ "Bob"] /\ ["Carla"]} , {["Alice"] /\ ["Carla"]}> <{ALL} , {}> True True -}