]> matita.cs.unibo.it Git - helm.git/blob - helm/interface/cicXPath.ml
First very partial implementation of LetIn and bodyed Variables
[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.ALetIn (_,ann,_,_,_)         -> ann
23    | C.AAppl (_,ann,_)              -> ann
24    | C.AConst (_,ann,_,_)           -> ann
25    | C.AAbst (_,ann,_)              -> ann
26    | C.AMutInd (_,ann,_,_,_)        -> ann
27    | C.AMutConstruct (_,ann,_,_,_,_)-> ann
28    | C.AMutCase (_,ann,_,_,_,_,_,_) -> ann
29    | C.AFix (_,ann,_,_)             -> ann
30    | C.ACoFix (_,ann,_,_)           -> ann
31 ;;
32
33 let get_annotation_from_obj annobj =
34  let module C = Cic in
35   match annobj with
36      C.ADefinition (_,ann,_,_,_,_)        -> ann
37    | C.AAxiom (_,ann,_,_,_)               -> ann
38    | C.AVariable (_,ann,_,_,_)            -> ann
39    | C.ACurrentProof (_,ann,_,_,_,_)      -> ann
40    | C.AInductiveDefinition (_,ann,_,_,_) -> ann
41 ;;
42
43 exception IdUnknown of string;;
44
45 let get_annotation (annobj,ids_to_targets) xpath =
46  try
47   match Hashtbl.find ids_to_targets xpath with
48      Cic.Object annobj -> get_annotation_from_obj annobj
49    | Cic.Term annterm -> get_annotation_from_term annterm
50  with
51   Not_found -> raise (IdUnknown xpath)
52 ;;