InutitionTC  0.30
gen_spec_checker.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (C) 2016 by University of Warsaw *
3  * *
4  * This file is part of IntuitionTC. *
5  * *
6  ****************************************************************************/
14 #ifndef _GEN_SPEC_CHECKER_H
15 #define _GEN_SPEC_CHECKER_H 1
16 #include <stdbool.h>
17 #include "vars_set.h"
18 #include "namemap.h"
19 
20 nameSet *freeNames(const Any any) ;
21 Any substT(Name n, Type *s, const Any /*t*/any) ;
22 Type *substT_type(Name n, Type *s, const Type const*t) ;
23 Term *substT_term(Name n, Type *s, const Term const * t) ;
24 Any substM(Name n, Term *s, const Any /*t*/any) ;
25 Type *substM_type(Name n, Term *s, const Type const*t) ;
26 Term *substM_term(Name n, Term *s, const Term const * t) ;
27 Kind *substM_kind(Name n, Term *s, const Kind const * t) ;
29 Any renameT(Name n1, Name n2, const Any a);
30 Any renameM(Name n1, Name n2, const Any a);
31 Any refreshWith(namemap r, nameSet *ns, const Any /*t*/any);
32 Term *refreshWith_term(namemap r, nameSet *ns, const Term const * t);
33 Type *refreshWith_type(namemap r, nameSet *ns, const Type const*t);
34 bool alphaeq_type(const Type const *t, const Type const *t_) ;
35 bool alphaeq_term(const Term const *t, const Term const *t_);
36 bool alphaeq(const Any t, const Any t_);
37 /*@ requires valid_Any(t) && valid_Any(t_);
38  @ assigns \nothing;
39  @*/
40 bool betaeq(const Any t, const Any t_);
41 Any nf(const Any /*t*/any);
42 Term *nf_term(const Term const * t);
43 Type *nf_type(const Type const*t);
44 
45 #endif
Finite sets with union operation.
Type * nf_type(const Type const *t)
147 153 nf (Tapp t m) = Tapp (nf t) (nf m) nf (Tall n t1 t2) = Tall n (nf t1) (nf t2) nf t@(Tvar _) =...
Definition: gen_spec_checker.c:1532
The representation of the set that holds strings.
Definition: vars_set.h:26
Any substM(Name n, Term *s, const Any any)
28 substM :: Name -> Term -> a -> a
Definition: gen_spec_checker.c:839
Operations on the data structure that represents dictionaries of names.
Any renameT(Name n1, Name n2, const Any a)
25 renameT :: Name -> Name -> a -> a
Definition: gen_spec_checker.c:873
The representation of the kinds in the typesystem.
Definition: checker.h:68
Type * substM_type(Name n, Term *s, const Type const *t)
138 145 substM n s t = sub t where sub t@(Tvar _) = t – substM does not touch Tvars sub t@(Tall n1 t...
Definition: gen_spec_checker.c:450
Term * substM_term(Name n, Term *s, const Term const *t)
219 244 substM n s t = sub t where fvs = freeNames s sub m@(Mvar n1) | n == n1 = s | otherwise = m su...
Definition: gen_spec_checker.c:674
The representation of the dictionary to hold strings under string keys.
Definition: namemap.h:29
Any renameM(Name n1, Name n2, const Any a)
FILE GenChecker.hs.
Definition: gen_spec_checker.c:880
Name freshNameFvs(nameSet *)
Definition: gen_spec_checker.c:61
Kind * substM_kind(Name n, Term *s, const Kind const *t)
Definition: gen_spec_checker.c:811
Term * nf_term(const Term const *t)
271 302 nf (Mlam x t e) = Mlam x (nf t) (nf e) nf (Mapp f a) = case whnf f of Mlam x t b -> nf (subst...
Definition: gen_spec_checker.c:1669
Type * refreshWith_type(namemap r, nameSet *ns, const Type const *t)
165 174 refreshWith r ns t = sub t where sub t@(Tvar n) = case Map.lookup n r of Nothing -> t Just n'...
Definition: gen_spec_checker.c:1101
bool alphaeq_type(const Type const *t, const Type const *t_)
155 163 alphaEq (Tvar n) (Tvar n') = n == n' alphaEq (Tall n t s) (Tall n' t' s') = alphaEq t t' && alpha...
Definition: gen_spec_checker.c:1241
The representation of the types in the typesystem.
Definition: checker.h:146
The wrapper that makes it possible to store in envmap different species of elements that occur in typ...
Definition: checker.h:329
The representation of the proof terms in the typesystem.
Definition: checker.h:298
bool alphaeq_term(const Term const *t, const Term const *t_)
Definition: gen_spec_checker.c:1275
Type * substT_type(Name n, Type *s, const Type const *t)
24 substT :: Name -> Type -> a -> a
Definition: gen_spec_checker.c:371
char * Name
The type to structurally represent identifier names.
Definition: checker.h:46
Term * substT_term(Name n, Type *s, const Term const *t)
195 217 substT n s t = sub t where fvs = freeNames s sub m@(Mvar _) = m – substT does not touch Mvar...
Definition: gen_spec_checker.c:540
Term * refreshWith_term(namemap r, nameSet *ns, const Term const *t)
33 refreshWith r ns = id
Definition: gen_spec_checker.c:1176