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
/*++
Copyright (c) 2012 Microsoft Corporation
Module Name:
quasi_macros_tactic.h
Abstract:
Quasi-Macros
Author:
Christoph (cwinter) 2012-10-26
Tactic Documentation
## Tactic quasi-macro-finder
### Short Description
Identifies and applies quasi-macros.
### Long Description
A quasi macro defines a function symbol that contains more arguments than the number of bound variables it defines.
The additional arguments are functions of the bound variables.
### Example
```z3
(declare-fun f (Int Int Int) Int)
(declare-fun p (Int) Bool)
(declare-const a Int)
(assert (forall ((x Int) (y Int)) (= (f x y 1) (* 2 x y))))
(assert (p (f 8 a (+ a 8))))
(apply quasi-macros)
```
### Notes
* Supports proofs and cores
--*/
class ast_manager;
class tactic;
tactic * ;
;