let module P = PrimitiveTactics in
let _,metasenv,_,_ = proof in
let _,context,ty = List.find (function (m,_,_) -> m=goal) metasenv in
- if ((CicTypeChecker.type_of_aux' metasenv context term) = (C.Sort C.Prop))
+ if ((CicTypeChecker.type_of_aux' metasenv context term) = (C.Sort C.Prop)) (* ma questo controllo serve?? *)
then P.apply_tac
~term:(C.Appl [(C.Const ((U.uri_of_string "cic:/Coq/Init/Logic/absurd.con") , [] )) ; term ; ty]) ~status
else raise (ProofEngineTypes.Fail "Absurd: Not a Proposition")
let module U = UriManager in
let module P = PrimitiveTactics in
let module T = Tacticals in
- T.then_
+ try
+ T.then_
~start: P.intros_tac
~continuation:(
T.then_
~term:(C.MutInd (U.uri_of_string "cic:/Coq/Init/Logic/False.ind") 0 [] ))
~continuation: VariousTactics.assumption_tac)
~status
+ with
+ (ProofEngineTypes.Fail "Assumption: No such assumption") -> raise (ProofEngineTypes.Fail "Contradiction: No such assumption")
+ (* sarebbe piu' elegante se Assumtion sollevasse un'eccezione tutta sua che questa cattura, magari con l'aiuto di try_tactics *)
;;
(* Questa era in fourierR.ml