84 |
84 |
85 fun z3_mk_builtin_num _ i T = |
85 fun z3_mk_builtin_num _ i T = |
86 if T = @{typ real} then SOME (Numeral.mk_cnumber @{ctyp real} i) |
86 if T = @{typ real} then SOME (Numeral.mk_cnumber @{ctyp real} i) |
87 else NONE |
87 else NONE |
88 |
88 |
89 val mk_uminus = Thm.capply @{cterm "uminus :: real => _"} |
89 val mk_uminus = Thm.capply (Thm.cterm_of @{theory} @{const uminus (real)}) |
90 val mk_add = Thm.mk_binop @{cterm "op + :: real => _"} |
90 val mk_add = Thm.mk_binop (Thm.cterm_of @{theory} @{const plus (real)}) |
91 val mk_sub = Thm.mk_binop @{cterm "op - :: real => _"} |
91 val mk_sub = Thm.mk_binop (Thm.cterm_of @{theory} @{const minus (real)}) |
92 val mk_mul = Thm.mk_binop @{cterm "op * :: real => _"} |
92 val mk_mul = Thm.mk_binop (Thm.cterm_of @{theory} @{const times (real)}) |
93 val mk_div = Thm.mk_binop @{cterm "op / :: real => _"} |
93 val mk_div = Thm.mk_binop (Thm.cterm_of @{theory} @{const divide (real)}) |
94 val mk_lt = Thm.mk_binop @{cterm "op < :: real => _"} |
94 val mk_lt = Thm.mk_binop (Thm.cterm_of @{theory} @{const less (real)}) |
95 val mk_le = Thm.mk_binop @{cterm "op <= :: real => _"} |
95 val mk_le = Thm.mk_binop (Thm.cterm_of @{theory} @{const less_eq (real)}) |
96 |
96 |
97 fun z3_mk_builtin_fun (I.Sym ("-", _)) [ct] = SOME (mk_uminus ct) |
97 fun z3_mk_builtin_fun (I.Sym ("-", _)) [ct] = SOME (mk_uminus ct) |
98 | z3_mk_builtin_fun (I.Sym ("+", _)) [ct, cu] = SOME (mk_add ct cu) |
98 | z3_mk_builtin_fun (I.Sym ("+", _)) [ct, cu] = SOME (mk_add ct cu) |
99 | z3_mk_builtin_fun (I.Sym ("-", _)) [ct, cu] = SOME (mk_sub ct cu) |
99 | z3_mk_builtin_fun (I.Sym ("-", _)) [ct, cu] = SOME (mk_sub ct cu) |
100 | z3_mk_builtin_fun (I.Sym ("*", _)) [ct, cu] = SOME (mk_mul ct cu) |
100 | z3_mk_builtin_fun (I.Sym ("*", _)) [ct, cu] = SOME (mk_mul ct cu) |