summaryrefslogtreecommitdiff
path: root/src/theory/theory.h
diff options
context:
space:
mode:
authorAndrew Reynolds <andrew.j.reynolds@gmail.com>2012-08-31 16:48:20 +0000
committerAndrew Reynolds <andrew.j.reynolds@gmail.com>2012-08-31 16:48:20 +0000
commit3c4935c7c0c6774588af94c82307a960e58a1154 (patch)
treee518c60ec182e91300fe53293c42cd4b85e49d29 /src/theory/theory.h
parentec9e426df607f13e5a0c0f52fbc6ed5dbb79fdf9 (diff)
merge from fmf-devel branch. more updates to models: now with collectModelInfo with fullModel argument, most theory-specific implementation out of the model class, model printer relegated to printer classes. Also updates to finite mode finding, modifications to datatypes making them compatible with theory combination, support for theory-specific handling of user attributes, refactoring of uf models
Diffstat (limited to 'src/theory/theory.h')
-rw-r--r--src/theory/theory.h17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/theory/theory.h b/src/theory/theory.h
index 46244aec6..2f980fe2f 100644
--- a/src/theory/theory.h
+++ b/src/theory/theory.h
@@ -553,11 +553,11 @@ public:
* Get all relevant information in this theory regarding the current
* model. This should be called after a call to check( FULL_EFFORT )
* for all theories with no conflicts and no lemmas added.
+ * If fullModel is true, then we must specify sufficient information for
+ * the model class to construct constant representatives for each equivalence
+ * class.
*/
- virtual void collectModelInfo( TheoryModel* m ){
- Unimplemented("Theory %s doesn't support Theory::getModel interface",
- identify().c_str());
- }
+ virtual void collectModelInfo( TheoryModel* m, bool fullModel ){ }
/**
* Return a decision request, if the theory has one, or the NULL node
@@ -657,6 +657,15 @@ public:
*/
virtual std::string identify() const = 0;
+ /** Set user attribute
+ * This function is called when an attribute is set by a user. In SMT-LIBv2 this is done
+ * via the syntax (! n :attr)
+ */
+ virtual void setUserAttribute( std::string& attr, Node n ) {
+ Unimplemented("Theory %s doesn't support Theory::setUserAttribute interface",
+ identify().c_str());
+ }
+
/** A set of theories */
typedef uint32_t Set;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback