mirror of
https://github.com/Z3Prover/z3
synced 2025-05-09 00:35:47 +00:00
Z3 sources
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
This commit is contained in:
parent
3f9edad676
commit
e9eab22e5c
1186 changed files with 381859 additions and 0 deletions
62
lib/dl_mk_simple_joins.h
Normal file
62
lib/dl_mk_simple_joins.h
Normal file
|
@ -0,0 +1,62 @@
|
|||
/*++
|
||||
Copyright (c) 2006 Microsoft Corporation
|
||||
|
||||
Module Name:
|
||||
|
||||
dl_mk_simple_joins.h
|
||||
|
||||
Abstract:
|
||||
|
||||
<abstract>
|
||||
|
||||
Author:
|
||||
|
||||
Leonardo de Moura (leonardo) 2010-05-20.
|
||||
|
||||
Revision History:
|
||||
|
||||
--*/
|
||||
#ifndef _DL_MK_SIMPLE_JOINS_H_
|
||||
#define _DL_MK_SIMPLE_JOINS_H_
|
||||
|
||||
#include"map.h"
|
||||
#include"obj_pair_hashtable.h"
|
||||
|
||||
#include"dl_context.h"
|
||||
#include"dl_rule_set.h"
|
||||
#include"dl_rule_transformer.h"
|
||||
|
||||
namespace datalog {
|
||||
|
||||
/**
|
||||
\brief Functor for creating rules that contain simple joins.
|
||||
A simple join is the join of two tables.
|
||||
|
||||
After applying this transformation, every rule has at most one join.
|
||||
So, the rules will have the form
|
||||
|
||||
HEAD :- TAIL.
|
||||
HEAD :- TAIL_1, TAIL_2.
|
||||
|
||||
We also assume a rule may contain interpreted expressions that work as filtering conditions.
|
||||
So, we may also have:
|
||||
|
||||
HEAD :- TAIL, C_1, ..., C_n.
|
||||
HEAD :- TAIL_1, TAIL_2, C_1, ..., C_n.
|
||||
|
||||
Where the C_i's are interpreted expressions.
|
||||
|
||||
We say that a rule containing C_i's is a rule with a "big tail".
|
||||
*/
|
||||
class mk_simple_joins : public rule_transformer::plugin {
|
||||
context & m_context;
|
||||
public:
|
||||
mk_simple_joins(context & ctx);
|
||||
|
||||
rule_set * operator()(rule_set const & source, model_converter_ref& mc, proof_converter_ref& pc);
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
#endif /* _DL_MK_SIMPLE_JOINS_H_ */
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue