]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/interface/cicXPath.ml
Initial revision
[helm.git] / helm / interface / cicXPath.ml
diff --git a/helm/interface/cicXPath.ml b/helm/interface/cicXPath.ml
new file mode 100644 (file)
index 0000000..2df9707
--- /dev/null
@@ -0,0 +1,51 @@
+(******************************************************************************)
+(*                                                                            *)
+(*                               PROJECT HELM                                 *)
+(*                                                                            *)
+(*                Claudio Sacerdoti Coen <sacerdot@cs.unibo.it>               *)
+(*                                 14/06/2000                                 *)
+(*                                                                            *)
+(*                                                                            *)
+(******************************************************************************)
+
+let get_annotation_from_term annterm =
+ let module C = Cic in
+  match annterm with
+     C.ARel (_,ann,_,_)             -> ann
+   | C.AVar (_,ann,_)               -> ann
+   | C.AMeta (_,ann,_)              -> ann
+   | C.ASort (_,ann,_)              -> ann
+   | C.AImplicit (_,ann)            -> ann
+   | C.ACast (_,ann,_,_)            -> ann
+   | C.AProd (_,ann,_,_,_)          -> ann
+   | C.ALambda (_,ann,_,_,_)        -> ann
+   | C.AAppl (_,ann,_)              -> ann
+   | C.AConst (_,ann,_,_)           -> ann
+   | C.AAbst (_,ann,_)              -> ann
+   | C.AMutInd (_,ann,_,_,_)        -> ann
+   | C.AMutConstruct (_,ann,_,_,_,_)-> ann
+   | C.AMutCase (_,ann,_,_,_,_,_,_) -> ann
+   | C.AFix (_,ann,_,_)             -> ann
+   | C.ACoFix (_,ann,_,_)           -> ann
+;;
+
+let get_annotation_from_obj annobj =
+ let module C = Cic in
+  match annobj with
+     C.ADefinition (_,ann,_,_,_,_)        -> ann
+   | C.AAxiom (_,ann,_,_,_)               -> ann
+   | C.AVariable (_,ann,_,_)              -> ann
+   | C.ACurrentProof (_,ann,_,_,_,_)      -> ann
+   | C.AInductiveDefinition (_,ann,_,_,_) -> ann
+;;
+
+exception IdUnknown of string;;
+
+let get_annotation (annobj,ids_to_targets) xpath =
+ try
+  match Hashtbl.find ids_to_targets xpath with
+     Cic.Object annobj -> get_annotation_from_obj annobj
+   | Cic.Term annterm -> get_annotation_from_term annterm
+ with
+  Not_found -> raise (IdUnknown xpath)
+;;