(* ---------------------------------------------------------------------- *)
(*  Operators                                                             *)
(* ---------------------------------------------------------------------- *)
let dest_beq = dest_binop `(<=>)`;;
let t_tm = `T`;;
let f_tm = `F`;;

parse_as_infix ("<>",(12,"right"));;

let NEQ = new_definition
 `x <> y <=> ~(x = y)`;;
let nqt = `(<>):A -> A -> bool`;; let mk_neq (l,r) = try let ty = type_of l in let nqt' = inst[ty,aty] nqt in mk_comb(mk_comb(nqt',l),r) with Failure _ -> failwith "mk_neq";; (* ---------------------------------------------------------------------- *) (* Unfiled *) (* ---------------------------------------------------------------------- *) let IMP_AND_THM = TAUT `(p ==> q ==> r) <=> (p /\ q ==> r)`;; let AND_IMP_THM = TAUT `(p /\ q ==> r) <=> (p ==> q ==> r)`;; let is_pos tm = not (is_neg tm);; let CONJ_LIST thms = end_itlist CONJ thms;; (* CONJ_LIST [TRUTH;TRUTH;TRUTH] *)