src/HOL/SVC_Oracle.ML
author paulson
Mon, 02 Aug 1999 11:26:43 +0200
changeset 7144 0feee8201d67
child 7162 8737390d1d0a
permissions -rw-r--r--
the SVC oracle theory
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7144
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
     1
(*  Title:      HOL/SVC_Oracle
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
     2
    ID:         $Id$
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
     3
    Author:     Lawrence C Paulson
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
     4
    Copyright   1999  University of Cambridge
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
     5
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
     6
Installing the oracle for SVC (Stanford Validity Checker)
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
     7
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
     8
Based upon the work of Søren T. Heilmann
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
     9
*)
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    10
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    11
(*Present the entire subgoal to the oracle, assumptions and all, but possibly
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    12
  abstracted.  Use via compose_tac, which performs no lifting but will
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    13
  instantiate variables.*)
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    14
val svc_tac = SUBGOAL
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    15
  (fn (prem,i) => 
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    16
   let val (svc_prem, insts) = Svc.abstract prem
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    17
       val th = invoke_oracle thy "svc_oracle" 
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    18
	             (sign_of thy, Svc.OracleExn svc_prem)
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    19
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    20
    in compose_tac (false, th, 0) i
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    21
    end handle Svc.OracleExn _ => no_tac);
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    22
0feee8201d67 the SVC oracle theory
paulson
parents:
diff changeset
    23