src/HOL/Tools/Sledgehammer/metis_clauses.ML
changeset 38795 848be46708dc
parent 38786 e46e7a9cb622
child 38864 4abe644fcea5
equal deleted inserted replaced
38794:2d638e963357 38795:848be46708dc
    93    last nine entries of the table unless you know what you are doing. *)
    93    last nine entries of the table unless you know what you are doing. *)
    94 val const_trans_table =
    94 val const_trans_table =
    95   Symtab.make [(@{type_name Product_Type.prod}, "prod"),
    95   Symtab.make [(@{type_name Product_Type.prod}, "prod"),
    96                (@{type_name Sum_Type.sum}, "sum"),
    96                (@{type_name Sum_Type.sum}, "sum"),
    97                (@{const_name "op ="}, "equal"),
    97                (@{const_name "op ="}, "equal"),
    98                (@{const_name "op &"}, "and"),
    98                (@{const_name HOL.conj}, "and"),
    99                (@{const_name "op |"}, "or"),
    99                (@{const_name HOL.disj}, "or"),
   100                (@{const_name HOL.implies}, "implies"),
   100                (@{const_name HOL.implies}, "implies"),
   101                (@{const_name Set.member}, "member"),
   101                (@{const_name Set.member}, "member"),
   102                (@{const_name fequal}, "fequal"),
   102                (@{const_name fequal}, "fequal"),
   103                (@{const_name COMBI}, "COMBI"),
   103                (@{const_name COMBI}, "COMBI"),
   104                (@{const_name COMBK}, "COMBK"),
   104                (@{const_name COMBK}, "COMBK"),
   428   | predicate_of thy (t, pos) =
   428   | predicate_of thy (t, pos) =
   429     (combterm_from_term thy [] (Envir.eta_contract t), pos)
   429     (combterm_from_term thy [] (Envir.eta_contract t), pos)
   430 
   430 
   431 fun literals_of_term1 args thy (@{const Trueprop} $ P) =
   431 fun literals_of_term1 args thy (@{const Trueprop} $ P) =
   432     literals_of_term1 args thy P
   432     literals_of_term1 args thy P
   433   | literals_of_term1 args thy (@{const "op |"} $ P $ Q) =
   433   | literals_of_term1 args thy (@{const HOL.disj} $ P $ Q) =
   434     literals_of_term1 (literals_of_term1 args thy P) thy Q
   434     literals_of_term1 (literals_of_term1 args thy P) thy Q
   435   | literals_of_term1 (lits, ts) thy P =
   435   | literals_of_term1 (lits, ts) thy P =
   436     let val ((pred, ts'), pol) = predicate_of thy (P, true) in
   436     let val ((pred, ts'), pol) = predicate_of thy (P, true) in
   437       (FOLLiteral (pol, pred) :: lits, union (op =) ts ts')
   437       (FOLLiteral (pol, pred) :: lits, union (op =) ts ts')
   438     end
   438     end