]> matita.cs.unibo.it Git - helm.git/blob - helm/interface/cicXPath.ml
Initial revision
[helm.git] / helm / interface / cicXPath.ml
1 (******************************************************************************)
2 (*                                                                            *)
3 (*                               PROJECT HELM                                 *)
4 (*                                                                            *)
5 (*                Claudio Sacerdoti Coen <sacerdot@cs.unibo.it>               *)
6 (*                                 14/06/2000                                 *)
7 (*                                                                            *)
8 (*                                                                            *)
9 (******************************************************************************)
10
11 let get_annotation_from_term annterm =
12  let module C = Cic in
13   match annterm with
14      C.ARel (_,ann,_,_)             -> ann
15    | C.AVar (_,ann,_)               -> ann
16    | C.AMeta (_,ann,_)              -> ann
17    | C.ASort (_,ann,_)              -> ann
18    | C.AImplicit (_,ann)            -> ann
19    | C.ACast (_,ann,_,_)            -> ann
20    | C.AProd (_,ann,_,_,_)          -> ann
21    | C.ALambda (_,ann,_,_,_)        -> ann
22    | C.AAppl (_,ann,_)              -> ann
23    | C.AConst (_,ann,_,_)           -> ann
24    | C.AAbst (_,ann,_)              -> ann
25    | C.AMutInd (_,ann,_,_,_)        -> ann
26    | C.AMutConstruct (_,ann,_,_,_,_)-> ann
27    | C.AMutCase (_,ann,_,_,_,_,_,_) -> ann
28    | C.AFix (_,ann,_,_)             -> ann
29    | C.ACoFix (_,ann,_,_)           -> ann
30 ;;
31
32 let get_annotation_from_obj annobj =
33  let module C = Cic in
34   match annobj with
35      C.ADefinition (_,ann,_,_,_,_)        -> ann
36    | C.AAxiom (_,ann,_,_,_)               -> ann
37    | C.AVariable (_,ann,_,_)              -> ann
38    | C.ACurrentProof (_,ann,_,_,_,_)      -> ann
39    | C.AInductiveDefinition (_,ann,_,_,_) -> ann
40 ;;
41
42 exception IdUnknown of string;;
43
44 let get_annotation (annobj,ids_to_targets) xpath =
45  try
46   match Hashtbl.find ids_to_targets xpath with
47      Cic.Object annobj -> get_annotation_from_obj annobj
48    | Cic.Term annterm -> get_annotation_from_term annterm
49  with
50   Not_found -> raise (IdUnknown xpath)
51 ;;