src/HOL/Tools/Predicate_Compile/code_prolog.ML
changeset 38864 4abe644fcea5
parent 38797 abe92b33ac9f
child 38947 6ed1cffd9d4e
equal deleted inserted replaced
38859:053c69cb4a0e 38864:4abe644fcea5
   177             AppF (translate_const constant_table c, map (translate_term ctxt constant_table) args))
   177             AppF (translate_const constant_table c, map (translate_term ctxt constant_table) args))
   178       | _ => error ("illegal term for translation: " ^ Syntax.string_of_term ctxt t))
   178       | _ => error ("illegal term for translation: " ^ Syntax.string_of_term ctxt t))
   179 
   179 
   180 fun translate_literal ctxt constant_table t =
   180 fun translate_literal ctxt constant_table t =
   181   case strip_comb t of
   181   case strip_comb t of
   182     (Const (@{const_name "op ="}, _), [l, r]) =>
   182     (Const (@{const_name HOL.eq}, _), [l, r]) =>
   183       let
   183       let
   184         val l' = translate_term ctxt constant_table l
   184         val l' = translate_term ctxt constant_table l
   185         val r' = translate_term ctxt constant_table r
   185         val r' = translate_term ctxt constant_table r
   186       in
   186       in
   187         (if is_Var l' andalso is_arith_term r' andalso not (is_Var r') then ArithEq else Eq) (l', r')
   187         (if is_Var l' andalso is_arith_term r' andalso not (is_Var r') then ArithEq else Eq) (l', r')