author | blanchet |
Mon, 23 Jan 2012 17:40:32 +0100 | |
changeset 47148 | 0b8b73b49848 |
parent 46748 | b18f62e40429 |
child 48961 | 33afcfad3f8d |
permissions | -rw-r--r-- |
blanchet@40132 | 1 |
(* Title: HOL/ATP.thy |
blanchet@40132 | 2 |
Author: Fabian Immler, TU Muenchen |
blanchet@40132 | 3 |
Author: Jasmin Blanchette, TU Muenchen |
blanchet@40132 | 4 |
*) |
blanchet@40132 | 5 |
|
blanchet@40139 | 6 |
header {* Automatic Theorem Provers (ATPs) *} |
blanchet@40132 | 7 |
|
blanchet@40132 | 8 |
theory ATP |
blanchet@43926 | 9 |
imports Meson |
blanchet@44958 | 10 |
uses "Tools/lambda_lifting.ML" |
blanchet@44958 | 11 |
"Tools/monomorph.ML" |
blanchet@43949 | 12 |
"Tools/ATP/atp_util.ML" |
blanchet@43926 | 13 |
"Tools/ATP/atp_problem.ML" |
blanchet@40419 | 14 |
"Tools/ATP/atp_proof.ML" |
blanchet@47148 | 15 |
"Tools/ATP/atp_proof_redirect.ML" |
blanchet@47148 | 16 |
("Tools/ATP/atp_problem_generate.ML") |
blanchet@47148 | 17 |
("Tools/ATP/atp_proof_reconstruct.ML") |
blanchet@46393 | 18 |
("Tools/ATP/atp_systems.ML") |
blanchet@40132 | 19 |
begin |
blanchet@40132 | 20 |
|
blanchet@43926 | 21 |
subsection {* Higher-order reasoning helpers *} |
blanchet@43926 | 22 |
|
blanchet@43926 | 23 |
definition fFalse :: bool where [no_atp]: |
blanchet@43926 | 24 |
"fFalse \<longleftrightarrow> False" |
blanchet@43926 | 25 |
|
blanchet@43926 | 26 |
definition fTrue :: bool where [no_atp]: |
blanchet@43926 | 27 |
"fTrue \<longleftrightarrow> True" |
blanchet@43926 | 28 |
|
blanchet@43926 | 29 |
definition fNot :: "bool \<Rightarrow> bool" where [no_atp]: |
blanchet@43926 | 30 |
"fNot P \<longleftrightarrow> \<not> P" |
blanchet@43926 | 31 |
|
blanchet@43926 | 32 |
definition fconj :: "bool \<Rightarrow> bool \<Rightarrow> bool" where [no_atp]: |
blanchet@43926 | 33 |
"fconj P Q \<longleftrightarrow> P \<and> Q" |
blanchet@43926 | 34 |
|
blanchet@43926 | 35 |
definition fdisj :: "bool \<Rightarrow> bool \<Rightarrow> bool" where [no_atp]: |
blanchet@43926 | 36 |
"fdisj P Q \<longleftrightarrow> P \<or> Q" |
blanchet@43926 | 37 |
|
blanchet@43926 | 38 |
definition fimplies :: "bool \<Rightarrow> bool \<Rightarrow> bool" where [no_atp]: |
blanchet@43926 | 39 |
"fimplies P Q \<longleftrightarrow> (P \<longrightarrow> Q)" |
blanchet@43926 | 40 |
|
blanchet@43926 | 41 |
definition fequal :: "'a \<Rightarrow> 'a \<Rightarrow> bool" where [no_atp]: |
blanchet@43926 | 42 |
"fequal x y \<longleftrightarrow> (x = y)" |
blanchet@43926 | 43 |
|
nik@44537 | 44 |
definition fAll :: "('a \<Rightarrow> bool) \<Rightarrow> bool" where [no_atp]: |
nik@44537 | 45 |
"fAll P \<longleftrightarrow> All P" |
nik@44537 | 46 |
|
nik@44537 | 47 |
definition fEx :: "('a \<Rightarrow> bool) \<Rightarrow> bool" where [no_atp]: |
nik@44537 | 48 |
"fEx P \<longleftrightarrow> Ex P" |
blanchet@43926 | 49 |
|
blanchet@43926 | 50 |
subsection {* Setup *} |
blanchet@43926 | 51 |
|
blanchet@47148 | 52 |
use "Tools/ATP/atp_problem_generate.ML" |
blanchet@47148 | 53 |
use "Tools/ATP/atp_proof_reconstruct.ML" |
blanchet@46393 | 54 |
use "Tools/ATP/atp_systems.ML" |
blanchet@43926 | 55 |
|
blanchet@40132 | 56 |
setup ATP_Systems.setup |
blanchet@40132 | 57 |
|
blanchet@40132 | 58 |
end |