214 fun mk_builtin_fun ctxt sym cts = |
214 fun mk_builtin_fun ctxt sym cts = |
215 (case (sym, cts) of |
215 (case (sym, cts) of |
216 (Sym ("true", _), []) => SOME mk_true |
216 (Sym ("true", _), []) => SOME mk_true |
217 | (Sym ("false", _), []) => SOME mk_false |
217 | (Sym ("false", _), []) => SOME mk_false |
218 | (Sym ("not", _), [ct]) => SOME (mk_not ct) |
218 | (Sym ("not", _), [ct]) => SOME (mk_not ct) |
219 | (Sym ("and", _), _) => SOME (mk_nary @{cterm "op &"} mk_true cts) |
219 | (Sym ("and", _), _) => SOME (mk_nary @{cterm HOL.conj} mk_true cts) |
220 | (Sym ("or", _), _) => SOME (mk_nary @{cterm "op |"} mk_false cts) |
220 | (Sym ("or", _), _) => SOME (mk_nary @{cterm HOL.disj} mk_false cts) |
221 | (Sym ("implies", _), [ct, cu]) => SOME (mk_implies ct cu) |
221 | (Sym ("implies", _), [ct, cu]) => SOME (mk_implies ct cu) |
222 | (Sym ("iff", _), [ct, cu]) => SOME (mk_iff ct cu) |
222 | (Sym ("iff", _), [ct, cu]) => SOME (mk_iff ct cu) |
223 | (Sym ("~", _), [ct, cu]) => SOME (mk_iff ct cu) |
223 | (Sym ("~", _), [ct, cu]) => SOME (mk_iff ct cu) |
224 | (Sym ("xor", _), [ct, cu]) => SOME (mk_not (mk_iff ct cu)) |
224 | (Sym ("xor", _), [ct, cu]) => SOME (mk_not (mk_iff ct cu)) |
225 | (Sym ("ite", _), [ct1, ct2, ct3]) => SOME (mk_if ct1 ct2 ct3) |
225 | (Sym ("ite", _), [ct1, ct2, ct3]) => SOME (mk_if ct1 ct2 ct3) |