blob: 919f2f111ea95d0acf492304b5fec81a9d46e202 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
(**************************************************************************)
(* *)
(* SMTCoq *)
(* Copyright (C) 2011 - 2015 *)
(* *)
(* Michaël Armand *)
(* Benjamin Grégoire *)
(* Chantal Keller *)
(* *)
(* Inria - École Polytechnique - MSR-Inria Joint Lab *)
(* *)
(* This file is distributed under the terms of the CeCILL-C licence *)
(* *)
(**************************************************************************)
open Entries
open Coqlib
let gen_constant modules constant = lazy (gen_constant_in_modules "SMT" modules constant)
(* Int63 *)
let int63_modules = [["Coq";"Numbers";"Cyclic";"Int63";"Int63Native"]]
let mkInt : int -> Term.constr =
fun i -> Term.mkInt (Uint63.of_int i)
let cint = gen_constant int63_modules "int"
(* PArray *)
let parray_modules = [["Coq";"Array";"PArray"]]
let max_array_size : int =
Parray.trunc_size (Uint63.of_int 4194303)
let mkArray : Term.types * Term.constr array -> Term.constr =
Term.mkArray
(* Differences between the two versions of Coq *)
type names_id_t = Names.identifier
let dummy_loc = Pp.dummy_loc
let mkConst c =
{ const_entry_body = c;
const_entry_type = None;
const_entry_secctx = None;
const_entry_opaque = false;
const_entry_inline_code = false}
let error = Errors.error
let coqtype = lazy Term.mkSet
let declare_new_type t =
Command.declare_assumption false (Decl_kinds.Local,Decl_kinds.Definitional) (Lazy.force coqtype) [] false None (dummy_loc, t);
Term.mkVar t
let declare_new_variable v constr_t =
Command.declare_assumption false (Decl_kinds.Local,Decl_kinds.Definitional) constr_t [] false None (dummy_loc, v);
Term.mkVar v
let extern_constr = Constrextern.extern_constr true Environ.empty_env
let vernacentries_interp expr =
Vernacentries.interp (Vernacexpr.VernacCheckMayEval (Some (Glob_term.CbvVm None), None, expr))
let pr_constr_env = Printer.pr_constr_env
let lift = Term.lift
let mk_sat_tactic tac = tac
let tclTHENLAST = Tacticals.tclTHENLAST
let assert_before = Tactics.assert_tac
let vm_cast_no_check = Tactics.vm_cast_no_check
let mk_smt_tactic tac gl =
let env = Tacmach.pf_env gl in
let sigma = Tacmach.project gl in
let t = Tacmach.pf_concl gl in
tac env sigma t gl
|