Struct debug_sat::Graph [] [src]

pub struct Graph {
    pub exprs: Vec<Expression>,
    pub havox: HashMap<(usize, usize), bool>,
    pub map: HashMap<Expression, usize>,
    pub history: Vec<(usize, usize)>,
    pub cache: RefCell<Vec<Option<usize>>>,
}

Binds expressions together with constraints and acceleration data structures.

Exposes members to allow advanced introspection.

Fields

Expression nodes.

Equality and inequality constraints.

Contains a map to look up index of expressions.

Used to keep track of assumptions. Changes to the havox diagram are recorded to roll back to moment right before assumption being made.

Caches minimum id for equivalence classes.

Methods

impl Graph
[src]

[src]

Creates a new graph.

[src]

Logical FALSE has a fixed location 0.

[src]

Logical TRUE has a fixed location 1.

[src]

Returns id of existing expression.

[src]

Add variable.

name - index of variable referenced externally.

[src]

Add logical NOT.

[src]

Add logical EQ.

[src]

Add logical AND.

[src]

Add logical OR.

[src]

Add logical material implication.

[src]

Returns Some(true) if it is known that two things are equal. Returns Some(false) if it is known that two things are unequal. Returns None if it is unknown whether two things are equal.

The id is an edge of the format (min, max).

[src]

Returns whether it is known that two expressions are equivalent.

[src]

Checks whether it can be proven that one of the arguments are true. This means the return value depends on the other argument.

[src]

Checks whether it can be proven that and expression is false, by knowing that one of the arguments are false.

[src]

Checks whether it can be proven that one of the arguments are false. This means that the or expression is equal to the other argument.

[src]

Checks whether it can be proven that or expression is true, by knowing that one of the arguments are true.

[src]

Checks whether it can be proven that input to not expression is true. This means that the output is false.

[src]

Checks whether it can be proven that input to not expression is false. This means that the output is true.

[src]

Checks whether assumption is proven to be false.

[src]

Checks whether assumption is proven to be true. True assumption makes the imply expression is equal to the conclusion.

[src]

Checks whether arguments to eq expression are inequal.

This means that the eq expression must be equal to false.

[src]

Checks whether arguments to eq expression are equal.

This means that the eq expression must be equal to true.

[src]

Checks whether one side is proven to be equal to other side.

The equation must be equal to true. When the equation is true, one side is equal to another.

[src]

Checks whether one side is proven to be inequal to the other side.

The equation must be equal to false. When the equation is false, one side is inequal to another.

[src]

Checks that provably a ∧ ¬a results in a paradox.

[src]

Checks that provably a ∨ ¬a results in a tautology.

[src]

Checks whether it can be proven that the or expression is false. This means that both arguments must be false.

[src]

Checks whether it can be proven that the and expression is true. This means that both arguments must be true.

[src]

Check if it can be proven that output of not expression is true.

[src]

Check if it can be proven that output of not expression is false.

[src]

Check that it can be proven that an expression is either true or false.

[src]

Checks whether it can be proven that and expression has equal arguments, which means that the and expression is the same as the argument.

[src]

Checks whether it can be proven that and expression has inequal arguments. This means that the and expression is always false.

[src]

Checks whether it can be proven that or expression has equal arguments. This means that the or expression is always equal to its argument.

[src]

Checks whether it can be proven that or expression has inequal arguments. This means the or expression is always true.

[src]

Checks whether it can be proven that imply expression has equal arguments. This means the imply expression is always true.

[src]

Checks whether it can be proven that imply expression has inequal arguments. This means the imply expression is always equal to the second argument.

[src]

Checks that and[not] <=> or.

This is equivalent to not(and(a, b)) = or(not(a), not(b)).

[src]

Checks that or <=> and[not].

This is equivalent to or(not(a), not(b)) = not(and(a, b)).

[src]

Checks that or[not] <=> and.

This is equivalent to not(or(a, b)) = and(not(a), not(b)).

[src]

Checks that and <=> or[not].

This is equivalent to or(not(a), not(b)) = not(and(a, b)).

[src]

Checks that not . not <=> id.

[src]

Assume that two expressions are equivalent.

Returns an assumption that can be used to roll back change.

[src]

Assume that two expressions are inequivalent.

Returns an assumption that can be used to roll back change.

[src]

Solves as much as possible using all tactics.

Trait Implementations

impl Clone for Graph
[src]

[src]

Returns a copy of the value. Read more

1.0.0
[src]

Performs copy-assignment from source. Read more