src/HOL/Library/refute.ML
changeset 60924 610794dff23c
parent 60190 906de96ba68a
child 61770 a20048c78891
equal deleted inserted replaced
60923:020becec359c 60924:610794dff23c
  1154     (* for ALL types, not ...)                                             *)
  1154     (* for ALL types, not ...)                                             *)
  1155     val _ = null (Term.add_tvars t []) orelse
  1155     val _ = null (Term.add_tvars t []) orelse
  1156       error "Term to be refuted contains schematic type variables"
  1156       error "Term to be refuted contains schematic type variables"
  1157 
  1157 
  1158     (* existential closure over schematic variables *)
  1158     (* existential closure over schematic variables *)
  1159     val vars = sort_wrt (fst o fst) (Term.add_vars t [])
  1159     val vars = sort_by (fst o fst) (Term.add_vars t [])
  1160     (* Term.term *)
  1160     (* Term.term *)
  1161     val ex_closure = fold (fn ((x, i), T) => fn t' =>
  1161     val ex_closure = fold (fn ((x, i), T) => fn t' =>
  1162       HOLogic.exists_const T $
  1162       HOLogic.exists_const T $
  1163         Abs (x, T, abstract_over (Var ((x, i), T), t'))) vars t
  1163         Abs (x, T, abstract_over (Var ((x, i), T), t'))) vars t
  1164     (* Note: If 't' is of type 'propT' (rather than 'boolT'), applying   *)
  1164     (* Note: If 't' is of type 'propT' (rather than 'boolT'), applying   *)