src/Pure/object_logic.ML
author wenzelm
Sat, 21 Nov 1998 12:17:18 +0100
changeset 5944 dcc446da8e19
parent 5840 e2d2b896c717
child 6768 26d64339c25a
permissions -rw-r--r--
added undos, redos;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5840
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
     1
(*  Title:      Pure/object_logic.ML
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
     2
    ID:         $Id$
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
     3
    Author:     Markus Wenzel, TU Muenchen
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
     4
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
     5
Object logic specific operations.
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
     6
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
     7
TODO:
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
     8
  - theory data instead of hardwired operations (!!);
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
     9
*)
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    10
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    11
signature OBJECT_LOGIC =
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    12
sig
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    13
  val dest_statement: string * term -> (string * term) list
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    14
  val setup: (theory -> theory) list
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    15
end;
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    16
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    17
structure ObjectLogic: OBJECT_LOGIC =
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    18
struct
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    19
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    20
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    21
fun dest_statement (name, prop) =
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    22
  let val concl = Logic.strip_imp_concl prop in
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    23
    [(name ^ "_prop", prop), (name ^ "_concl", concl)] @
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    24
      (case concl of Const ("Trueprop", _) $ t => [(name, t)] | _ => [])
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    25
  end;
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    26
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    27
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    28
(* FIXME *)
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    29
val setup = [];
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    30
e2d2b896c717 Object logic specific operations.
wenzelm
parents:
diff changeset
    31
end;