daikon.inv.binary.twoScalar
Class FloatLessThan

Object
  extended by Invariant
      extended by BinaryInvariant
          extended by TwoFloat
              extended by FloatLessThan
All Implemented Interfaces:
Serializable, Cloneable

public final class FloatLessThan
extends TwoFloat

Represents an invariant of "<" between two double scalars.

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from class Invariant
Invariant.ClassVarnameComparator, Invariant.ClassVarnameFormulaComparator, Invariant.InvariantComparatorForPrinting, Invariant.Match
 
Field Summary
static Logger debug
           
static boolean dkconfig_enabled
          Boolean.
 
Fields inherited from class TwoFloat
swap
 
Fields inherited from class Invariant
CONFIDENCE_JUSTIFIED, CONFIDENCE_NEVER, CONFIDENCE_UNJUSTIFIED, debugFlow, debugGuarding, debugIsObvious, debugIsWorthPrinting, debugPrint, debugPrintEquality, dkconfig_confidence_limit, dkconfig_fuzzy_ratio, dkconfig_simplify_define_predicates, falsified, isGuardingPredicate, min_mod_non_missing_samples, ppt, PROBABILITY_JUSTIFIED, PROBABILITY_NEVER, PROBABILITY_UNJUSTIFIED
 
Constructor Summary
protected FloatLessThan()
           
protected FloatLessThan(PptSlice ppt)
           
 
Method Summary
 InvariantStatus add_modified(double v1, double v2, int count)
          Default implementation simply calls check.
 InvariantStatus add(Object v1, Object v2, int mod_index, int count)
           
 InvariantStatus check_modified(double v1, double v2, int count)
           
protected  double computeConfidence()
          This method computes the confidence that this invariant occurred by chance.
 boolean enabled()
          Returns whether or not this invariant is enabled
 double eq_confidence()
           
static FloatLessThan find(PptSlice ppt)
           
 String format_using(OutputFormat format)
           
 NISuppressionSet get_ni_suppressions()
          Returns the non-instantiating suppressions for this invariant.
static FloatLessThan get_proto()
          Returns the prototype invariant for FloatLessThan
protected  FloatLessThan instantiate_dyn(PptSlice slice)
          Instantiate an invariant on the specified slice
 boolean instantiate_ok(VarInfo[] vis)
          Returns whether or not the specified var types are valid for FloatLessThan
 boolean isExact()
          Subclasses should override.
 boolean isExclusiveFormula(Invariant other)
           
 DiscardInfo isObviousDynamically(VarInfo[] vis)
          Return non-null if this invariant is necessarily true from a fact that can be determined dynamically (after checking data) -- for the given varInfos rather than the varInfos of this.
 boolean isSameFormula(Invariant other)
          Return true if both invariants are the same class and the order of the variables (swap) is the same.
 String repr()
          Returns a representation of the class.
protected  Invariant resurrect_done_swapped()
          Swaps the variables by inverting the state of swap.
static Class<? extends Invariant> swap_class()
          Returns the class that corresponds to this class with its variable order swapped
 
Methods inherited from class TwoFloat
add_unmodified, check_unmodified, check, get_swap, resurrect_done_unswapped, resurrect_done, valid_types, var1, var1, var2, var2
 
Methods inherited from class BinaryInvariant
add_unordered, check_unordered, find, is_symmetric
 
Methods inherited from class Invariant
add_sample, asInvClass, clear_falsified, clone_and_permute, clone, conf_is_ge, confidence_and, confidence_and, confidence_or, createGuardedInvariant, createGuardingPredicate, enoughSamples, falsify, find, format_too_few_samples, format_unimplemented, format, formatFuzzy, get_comparability, getConfidence, getGuardingList, getGuardingList, hasUninterestingConstant, instantiate, is_false, is_ni_suppressed, isActive, isAllPrestate, isInteresting, isObvious, isObviousDynamically_SomeInEquality, isObviousDynamically_SomeInEqualityHelper, isObviousDynamically, isObviousStatically_AllInEquality, isObviousStatically_SomeInEquality, isObviousStatically_SomeInEqualityHelper, isObviousStatically, isObviousStatically, isReflexive, isSameInvariant, isValidEscExpression, isValidExpression, isWorthPrinting, justified, log, log, logDetail, logOn, match, merge, mergeFormulasOk, permute, prob_and, prob_and, prob_is_ge, prob_or, repCheck, repr_prob, resurrect, simplify_format_double, simplify_format_long, simplify_format_string, state_match, toString, toString, transfer, usesVar, usesVar, usesVarDerived, varNames
 
Methods inherited from class Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

dkconfig_enabled

public static boolean dkconfig_enabled
Boolean. True iff FloatLessThan invariants should be considered.


debug

public static final Logger debug
Constructor Detail

FloatLessThan

protected FloatLessThan(PptSlice ppt)

FloatLessThan

protected FloatLessThan()
Method Detail

get_proto

public static FloatLessThan get_proto()
Returns the prototype invariant for FloatLessThan


enabled

public boolean enabled()
Returns whether or not this invariant is enabled

Overrides:
enabled in class Invariant

instantiate_ok

public boolean instantiate_ok(VarInfo[] vis)
Returns whether or not the specified var types are valid for FloatLessThan

Overrides:
instantiate_ok in class Invariant
See Also:
Invariant.valid_types(VarInfo[])

instantiate_dyn

protected FloatLessThan instantiate_dyn(PptSlice slice)
Instantiate an invariant on the specified slice

Overrides:
instantiate_dyn in class Invariant
Returns:
the new invariant

resurrect_done_swapped

protected Invariant resurrect_done_swapped()
Description copied from class: TwoFloat
Swaps the variables by inverting the state of swap.

Overrides:
resurrect_done_swapped in class TwoFloat

swap_class

public static Class<? extends Invariant> swap_class()
Returns the class that corresponds to this class with its variable order swapped


find

public static FloatLessThan find(PptSlice ppt)

repr

public String repr()
Description copied from class: TwoFloat
Returns a representation of the class. This includes the classname, variables, and swap state.

Overrides:
repr in class TwoFloat

format_using

public String format_using(OutputFormat format)
Specified by:
format_using in class Invariant

check_modified

public InvariantStatus check_modified(double v1,
                                      double v2,
                                      int count)
Specified by:
check_modified in class TwoFloat

add_modified

public InvariantStatus add_modified(double v1,
                                    double v2,
                                    int count)
Description copied from class: TwoFloat
Default implementation simply calls check. Subclasses can override.

Overrides:
add_modified in class TwoFloat

computeConfidence

protected double computeConfidence()
Description copied from class: Invariant
This method computes the confidence that this invariant occurred by chance. Users should use getConfidence() instead.

Overrides:
computeConfidence in class TwoFloat
See Also:
Invariant.getConfidence()

eq_confidence

public double eq_confidence()

isExact

public boolean isExact()
Description copied from class: Invariant
Subclasses should override. An exact invariant indicates that given all but one variable value, the last one can be computed. (I think that's correct, anyway.) Examples are IntComparison (when only equality is possible), LinearBinary, FunctionUnary. OneOf is treated differently, as an interface. The result of this method does not depend on whether the invariant is justified, destroyed, etc.

Overrides:
isExact in class Invariant

add

public InvariantStatus add(Object v1,
                           Object v2,
                           int mod_index,
                           int count)
Overrides:
add in class TwoFloat

isSameFormula

public boolean isSameFormula(Invariant other)
Description copied from class: TwoFloat
Return true if both invariants are the same class and the order of the variables (swap) is the same.

Overrides:
isSameFormula in class TwoFloat
Returns:
true iff the two invariants represent the same mathematical formula. Does not consider the context such as variable names, confidences, sample counts, value counts, or related quantities. As a rule of thumb, if two invariants format the same, this method returns true. Furthermore, in many cases, if an invariant does not involve computed constants (as "x>c" and "y=ax+b" do for constants a, b, and c), then this method vacuously returns true.

isExclusiveFormula

public boolean isExclusiveFormula(Invariant other)
Overrides:
isExclusiveFormula in class Invariant
Returns:
true iff the two invariants represent mutually exclusive mathematical formulas -- that is, if one of them is true, then the other must be false. This method does not consider the context such as variable names, confidences, sample counts, value counts, or related quantities.

isObviousDynamically

public DiscardInfo isObviousDynamically(VarInfo[] vis)
Description copied from class: Invariant
Return non-null if this invariant is necessarily true from a fact that can be determined dynamically (after checking data) -- for the given varInfos rather than the varInfos of this. Conceptually, this means, "Is this invariant dynamically obvious if its VarInfos were switched with vis?" Intended to be overriden by subclasses so they can filter invariants after checking; the overriding method should first call "super.isObviousDynamically(vis)". Since this method is dynamic, it should only be called after all processing.

Overrides:
isObviousDynamically in class Invariant

get_ni_suppressions

public NISuppressionSet get_ni_suppressions()
Returns the non-instantiating suppressions for this invariant.

Overrides:
get_ni_suppressions in class Invariant