Class OmegaQuery<I,​D>

  • Type Parameters:
    I - the input type
    D - the output type

    public class OmegaQuery<I,​D>
    extends Object
    A query that represents information about infinite words in an ultimately periodic pattern. That is, for two finite strings u, v, this class represents the query of the infinite word uvω.

    When answering OmegaQueries, one needs to specify the periodicity p of the looping suffix v, i.e. for what p the answer contains information about the response to the query uvp which can then be generalized to the infinite case since u(vp)ω = uvω.

    If one cannot determine this value (e.g. because the response exhibits a non-periodic pattern), one may specify a negative value for p. isUltimatelyPeriodic() then consequently returns false. In this case the output of the query (getOutput()) may be undefined.

    See Also:
    DefaultQuery, Query, ObservableSUL.getState()
    • Constructor Detail

      • OmegaQuery

        public OmegaQuery​(Word<I> prefix,
                          Word<I> loop,
                          int repeat)
    • Method Detail

      • answer

        public void answer​(@Nullable D output,
                           int periodicity)
      • getPrefix

        public Word<I> getPrefix()
      • getLoop

        public Word<I> getLoop()
      • getRepeat

        public int getRepeat()
      • getOutput

        public @Nullable D getOutput()
      • getPeriodicity

        public int getPeriodicity()
      • isUltimatelyPeriodic

        public boolean isUltimatelyPeriodic()
      • asDefaultQuery

        public DefaultQuery<I,​@Nullable D> asDefaultQuery()
      • equals

        public final boolean equals​(@Nullable Object o)
        Overrides:
        equals in class Object
      • hashCode

        public final int hashCode()
        Overrides:
        hashCode in class Object