(th_holds (= _
(apply _ _ (apply _ _ (read s1 s2) (apply _ _ (apply _ _ (apply _ _ (write s1 s2) t1) t2) t3)) t2) t3))))))))
+; read( a[i] = b, j ) == read( a, j ) if i != j
(declare row (! s1 sort
(! s2 sort
(! t2 (term s1)
(th_holds (= _ (apply _ _ (apply _ _ (read s1 s2) (apply _ _ (apply _ _ (apply _ _ (write s1 s2) t1) t2) t4)) t3)
(apply _ _ (apply _ _ (read s1 s2) t1) t3)))))))))))
+; i == j if read( a, j ) != read( a[i] = b, j )
(declare negativerow (! s1 sort
(! s2 sort
(! t2 (term s1)
(! u1 (! k (term s1)
(! u2 (th_holds (or (= _ t1 t2) (not (= _ (apply _ _ (apply _ _ (read s1 s2) t1) k) (apply _ _ (apply _ _ (read s1 s2) t2) k)))))
(holds cln)))
- (holds cln)))))))
\ No newline at end of file
+ (holds cln)))))))
#include <iosfwd>
#include <map>
-#include "proof/proof.h"
-#include "proof/proof_utils.h"
-#include "proof/skolemization_manager.h"
-#include "util/proof.h"
#include "expr/node.h"
#include "proof/clause_id.h"
#include "proof/proof.h"
+#include "proof/proof_utils.h"
+#include "proof/skolemization_manager.h"
#include "theory/logic_info.h"
#include "theory/substitutions.h"
#include "util/proof.h"
{}
virtual ~TheoryProof() {};
/**
- * Print a term belonging some theory, not neccessarily this one.
+ * Print a term belonging some theory, not necessarily this one.
*
* @param term expresion representing term
* @param os output stream
/**
* Print a term belonging to THIS theory.
*
- * @param term expresion representing term
+ * @param term expression representing term
* @param os output stream
*/
virtual void printOwnedTerm(Expr term, std::ostream& os, const ProofLetMap& map) = 0;