1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# kinds -*- sh -*-
#
# For documentation on this file format, please refer to
# src/theory/builtin/kinds.
#
theory THEORY_BAGS \
::CVC4::theory::bags::TheoryBags \
"theory/bags/theory_bags.h"
typechecker "theory/bags/theory_bags_type_rules.h"
rewriter ::CVC4::theory::bags::BagsRewriter \
"theory/bags/bags_rewriter.h"
properties parametric
properties check propagate presolve
# constants
constant EMPTYBAG \
::CVC4::EmptyBag \
::CVC4::EmptyBagHashFunction \
"expr/emptybag.h" \
"the empty bag constant; payload is an instance of the CVC4::EmptyBag class"
# the type
operator BAG_TYPE 1 "bag type, takes as parameter the type of the elements"
cardinality BAG_TYPE \
"::CVC4::theory::bags::BagsProperties::computeCardinality(%TYPE%)" \
"theory/bags/theory_bags_type_rules.h"
well-founded BAG_TYPE \
"::CVC4::theory::bags::BagsProperties::isWellFounded(%TYPE%)" \
"::CVC4::theory::bags::BagsProperties::mkGroundTerm(%TYPE%)" \
"theory/bags/theory_bags_type_rules.h"
enumerator BAG_TYPE \
"::CVC4::theory::bags::BagEnumerator" \
"theory/bags/theory_bags_type_enumerator.h"
# operators
operator UNION_MAX 2 "union for bags (max)"
operator UNION_DISJOINT 2 "disjoint union for bags (sum)"
operator INTERSECTION_MIN 2 "bag intersection (min)"
# {("a", 2), ("b", 3)} \ {("a", 1)} = {("a", 1), ("b", 3)}
operator DIFFERENCE_SUBTRACT 2 "bag difference1 (subtracts multiplicities)"
# {("a", 2), ("b", 3)} \\ {("a", 1)} = {("b", 3)}
operator DIFFERENCE_REMOVE 2 "bag difference remove (removes shared elements)"
operator BAG_IS_INCLUDED 2 "inclusion predicate for bags (less than or equal multiplicities)"
operator BAG_COUNT 2 "multiplicity of an element in a bag"
constant MK_BAG_OP \
::CVC4::MakeBagOp \
::CVC4::MakeBagOpHashFunction \
"theory/bags/make_bag_op.h" \
"operator for MK_BAG; payload is an instance of the CVC4::MakeBagOp class"
parameterized MK_BAG MK_BAG_OP 2 \
"constructs a bag from one element along with its multiplicity"
# The operator bag-is-singleton returns whether the given bag is a singleton
operator BAG_IS_SINGLETON 1 "return whether the given bag is a singleton"
operator BAG_CARD 1 "bag cardinality operator"
operator BAG_FROM_SET 1 "converts a set to a bag"
operator BAG_TO_SET 1 "converts a bag to a set"
# The operator choose returns an element from a given bag.
# If bag A = {("a", 1)}, then the term (choose A) is equivalent to the term a.
# If the bag is empty, then (choose A) is an arbitrary value.
# If the bag has cardinality > 1, then (choose A) will deterministically return an element in A.
operator BAG_CHOOSE 1 "return an element in the bag given as a parameter"
typerule UNION_MAX ::CVC4::theory::bags::BinaryOperatorTypeRule
typerule UNION_DISJOINT ::CVC4::theory::bags::BinaryOperatorTypeRule
typerule INTERSECTION_MIN ::CVC4::theory::bags::BinaryOperatorTypeRule
typerule DIFFERENCE_SUBTRACT ::CVC4::theory::bags::BinaryOperatorTypeRule
typerule DIFFERENCE_REMOVE ::CVC4::theory::bags::BinaryOperatorTypeRule
typerule BAG_IS_INCLUDED ::CVC4::theory::bags::IsIncludedTypeRule
typerule BAG_COUNT ::CVC4::theory::bags::CountTypeRule
typerule MK_BAG_OP "SimpleTypeRule<RBuiltinOperator>"
typerule MK_BAG ::CVC4::theory::bags::MkBagTypeRule
typerule EMPTYBAG ::CVC4::theory::bags::EmptyBagTypeRule
typerule BAG_CARD ::CVC4::theory::bags::CardTypeRule
typerule BAG_CHOOSE ::CVC4::theory::bags::ChooseTypeRule
typerule BAG_IS_SINGLETON ::CVC4::theory::bags::IsSingletonTypeRule
typerule BAG_FROM_SET ::CVC4::theory::bags::FromSetTypeRule
typerule BAG_TO_SET ::CVC4::theory::bags::ToSetTypeRule
construle UNION_DISJOINT ::CVC4::theory::bags::BinaryOperatorTypeRule
construle MK_BAG ::CVC4::theory::bags::MkBagTypeRule
endtheory
|