TaPAS  0.2
prestaf-automata.h
Go to the documentation of this file.
1 /*
2  * prestaf-automata.h -- MAO constructors for Presburger formulas
3  *
4  * This file is a part of the PresTAF project.
5  *
6  * Copyright (C) 2010 CNRS UMR 5800 & Université Bordeaux I (see AUTHORS file).
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
21  * 02110-1301 USA
22  */
23 
29 #ifndef __PRESTAF_AUTOMATA_H__
30 # define __PRESTAF_AUTOMATA_H__
31 
32 # include <ccl/ccl-hash.h>
33 # include <sataf/sataf.h>
34 
35 BEGIN_C_DECLS
36 
37 # define LCA_EQ 0
38 # define LCA_GT 1
39 # define LCA_GEQ 2
40 # define LCA_LT 3
41 # define LCA_LEQ 5
42 
46 extern sataf_mao *
47 prestaf_crt_linear_constraint_automaton(int type, const int *alpha,
48  int alpha_size, int b);
49 
53 extern sataf_mao *
54 prestaf_crt_add_variable_automaton(sataf_msa *msa, uint32_t i, uint32_t n);
55 
59 extern sataf_mao *
60 prestaf_crt_inv_project_automaton(sataf_msa *msa, int width,
61  const int *selection, int selsize);
62 
66 extern sataf_mao *
67 prestaf_crt_apply_automaton(sataf_msa *R, sataf_msa *A);
68 
72 extern sataf_mao *
73 prestaf_crt_invapply_automaton(sataf_msa *R, sataf_msa *A);
74 
78 extern sataf_mao *
79 prestaf_crt_quantifier_automaton(int forall, uint32_t i, uint32_t n,
80  sataf_msa *fset);
81 
82 extern sataf_mao *
83 prestaf_crt_quantifier_automaton2(int forall, uint32_t i, uint32_t n,
84  sataf_msa *fset);
85 
86 extern sataf_mao *
87 prestaf_crt_unfolding_automaton(int m, sataf_msa *fset);
88 
89 extern void
90 prestaf_unfold_to_dot (ccl_log_type log, sataf_mao *self, const char **sigma,
91  const char *graph_name, const char *graph_type);
92 
93 extern sataf_mao *
94 prestaf_crt_intersect_new_cond (sataf_msa *X, sataf_msa *Y, ccl_hash *Ycond);
95 
96 extern sataf_mao *
97 prestaf_crt_new_cond (sataf_msa *X, ccl_hash *Xcond);
98 
99 extern sataf_mao *
100 prestaf_crt_from_exit_automaton (int s0, sataf_ea *ea, const uint8_t *final);
101 
102 END_C_DECLS
103 
104 #endif /* ! __PRESTAF_AUTOMATA_H__ */
struct sataf_ea_st sataf_ea
Type for the data structure encoding Exit Automata.
Definition: sataf.h:99
sataf_mao * prestaf_crt_linear_constraint_automaton(int type, const int *alpha, int alpha_size, int b)
struct sataf_mao_st sataf_mao
Type of a Marked Automaton Object (MAO).
Definition: sataf.h:65
enum ccl_log_type_enum ccl_log_type
Enum that indicates which kind of message has to be displayed. Each kind of message can be displayed ...
Definition: ccl-log.h:50
A dynamic association table implemented by hashing.
struct ccl_hash_st ccl_hash
abstract type of an hash table.
Definition: ccl-hash.h:57
struct sataf_msa_st sataf_msa
Type for the data structure encoding Marked Shared Automata.
Definition: sataf.h:81