Class ConditionalStructure

java.lang.Object
org.tweetyproject.logics.cl.semantics.ConditionalStructure
All Implemented Interfaces:
Comparator<NicePossibleWorld>

public class ConditionalStructure extends Object implements Comparator<NicePossibleWorld>
Represents a conditional structure as introduced in Section 3.5 "Conditionals in Nonmonotonic Reasoning and Belief Revision" of Gabrielle Kern-Isberner Internally it saves the data to two nested Maps. The first map maps to each PossibleWorld a map of Conditionals to Generators and the second map maps to each Conditional a map of PossibleWorlds to Generators. Those two maps allow fast access to the data of the ConditionalStructure. The first map can be used to support a nice representation of the ConditionalStructure and the second map can be used for further processing depending on the Conditionals (for Kappa values in C-Representation for example). To change the representation of the ConditionalStructure the user can provide a Comparator<NicePossibleWorld> implementation that changes the sort behavior of the world data map or he/she can provide a Comparator<Pair<Proposition, Boolean>> to change the ordering of the literals in the NicePossibleWorld representation. The later approach will fit for most situations. The default sorting behavior depends on the representation behavior of NicePossibleWorld that can also be adapt because it uses the toString method() and sorts this string alphabetically so that all possible worlds for a,b,c are represented in the following order: a b c a b-c a-b c a-b-c -a b c -a b-c -a-b c -a-b-c The default Sorting provides a clean binary switching of true/false like counting a bit string. If the user wants another ordering like c a b the Sorting behavior of the NicePossibleWorld shall be adapted by providing a Comparator<Pair<Proposition, Boolean>> implementation that implements the relation "c < a < b" by using the setWorldRepresentation() method. If the user wants to use a sorting depending on the Generator count for the worlds the setWorldSorting() method can be used to provide the correct sorting method.
Author:
Tim Janus
  • Constructor Details

    • ConditionalStructure

      public ConditionalStructure()
      Default-Ctor generates empty Conditional structure
    • ConditionalStructure

      public ConditionalStructure(Comparator<NicePossibleWorld> comparator)
      Ctor: Generates an empty ConditionalStructure that uses the given Comparator to sort its worldData map.
      Parameters:
      comparator - An implementation for sorting the world data if null is given the default sorting behavior is used.
    • ConditionalStructure

      public ConditionalStructure(Collection<Conditional> conditionals)
      Ctor: generates a conditional structure containing the given conditionals
      Parameters:
      conditionals - A collection of conditionals that shall form the ConditionalStructure
    • ConditionalStructure

      public ConditionalStructure(Collection<Conditional> conditionals, Comparator<NicePossibleWorld> comparator)
      Ctor: Generates a ConditionalStructure containing the given conditionals and using the given comparator to sort the worldData map.
      Parameters:
      conditionals - A collection of conditionals that shall form the ConditionalStructure
      comparator - An implementation for sorting the world data
  • Method Details

    • getConditionals

      public Set<Conditional> getConditionals()
      Returns:
      An unmodifiable set of all conditionals in this ConditionalStructure
    • getPossibleWorlds

      public Set<NicePossibleWorld> getPossibleWorlds()
      Returns:
      An unmodifiable set of all possible worlds in this ConditionalStructure
    • getFalsifiyingWorlds

      public List<NicePossibleWorld> getFalsifiyingWorlds(Conditional cond)
    • getVerifyingWorlds

      public List<NicePossibleWorld> getVerifyingWorlds(Conditional cond)
    • getWorldGenerators

      Processes the map from Conditionals to Generators for a given PossibleWorld
      Parameters:
      world - The PossibleWorld thats Generators shall be returned
      Returns:
      A map containing all Generators for the world as values and the associated conditionals as key.
    • getConditionalGenerators

      public Map<NicePossibleWorld,ConditionalStructure.Generator> getConditionalGenerators(Conditional conditional)
      Processes the Map form PossibleWorlds to the Generators of the given Conditional
      Parameters:
      conditional - The Conditional
      Returns:
      null if no such map exists or the map mapping the PossibleWorlds to Generators for the given Conditional
    • getSignature

      public Collection<Proposition> getSignature()
      Returns:
      An unmodifiable Collection containing all propositions that altogether form the signature of the ConditionalStructure
    • setWorldSorting

      public void setWorldSorting(Comparator<NicePossibleWorld> comparator)
      Changes the ordering of the PossibleWorlds for representation purposes, before using this method proof if the goal can be easier achieved using the setWorldRepresentation() method that allows changing the ordering of the literals in the world representation.
      Parameters:
      comparator - The implementation sorting the possible worlds
    • setWorldRepresentation

      public void setWorldRepresentation(Comparator<Pair<Proposition,Boolean>> comparator)
      Changes the internal representations of the worlds, normally the propositions of a world are ordered alphabetically but this behavior can be changed using this method.
      Parameters:
      comparator - The new implementation of a Comparator that provides the new sorting behavior for the Propositions in a PossibleWorld.
    • addConditional

      public boolean addConditional(Conditional cond)
      Adds the given Conditional to the ConditionalStructure and updates the structure.
      Parameters:
      cond - The new Conditional
      Returns:
      True if the conditional is added and ConditionalStructure is updated, false if the Conditional is already part of the ConditionalStructure
    • removeConditional

      public boolean removeConditional(Conditional cond)
      Removes the given Conditional from the ConditionalStructure and updates the structure.
      Parameters:
      cond - The Conditional that shall be removed
      Returns:
      True if the Conditional is part of the ConditionalStructure and was removed, false if the Conditional is not part of the ConditionalStructure and nothing happened.
    • clear

      public void clear()
      Clears the ConditionalStructure, after calling this method the Structure is empty.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • compare

      public int compare(NicePossibleWorld o1, NicePossibleWorld o2)
      Specified by:
      compare in interface Comparator<NicePossibleWorld>