(* ---------------------------------------------------------------------- *) (* 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] *)