author wenzelm Tue, 14 Oct 2008 15:16:09 +0200 changeset 28585 be3c44ac3e86 parent 28573 6403f0e16269 child 28592 824f8390aaa2 permissions -rw-r--r--
```
ID:         \$Id\$
Author:     Lawrence C Paulson
Author:     Jia Meng, NICTA
Author:     Fabian Immler, TUM
*)

imports Record Hilbert_Choice
uses
"Tools/polyhash.ML"
"Tools/res_clause.ML"
("Tools/res_axioms.ML")
("Tools/res_hol_clause.ML")
("Tools/res_reconstruct.ML")
("Tools/res_atp.ML")
("Tools/atp_manager.ML")
"~~/src/Tools/Metis/metis.ML"
("Tools/metis_tools.ML")
begin

definition COMBI :: "'a => 'a"
where "COMBI P == P"

definition COMBK :: "'a => 'b => 'a"
where "COMBK P Q == P"

definition COMBB :: "('b => 'c) => ('a => 'b) => 'a => 'c"
where "COMBB P Q R == P (Q R)"

definition COMBC :: "('a => 'b => 'c) => 'b => 'a => 'c"
where "COMBC P Q R == P R Q"

definition COMBS :: "('a => 'b => 'c) => ('a => 'b) => 'a => 'c"
where "COMBS P Q R == P R (Q R)"

definition fequal :: "'a => 'a => bool"
where "fequal X Y == (X=Y)"

lemma fequal_imp_equal: "fequal X Y ==> X=Y"

lemma equal_imp_fequal: "X=Y ==> fequal X Y"

text{*These two represent the equivalence between Boolean equality and iff.
They can't be converted to clauses automatically, as the iff would be
expanded...*}

lemma iff_positive: "P | Q | P=Q"
by blast

lemma iff_negative: "~P | ~Q | P=Q"
by blast

text{*Theorems for translation to combinators*}

lemma abs_S: "(%x. (f x) (g x)) == COMBS f g"
apply (rule eq_reflection)
apply (rule ext)
done

lemma abs_I: "(%x. x) == COMBI"
apply (rule eq_reflection)
apply (rule ext)
done

lemma abs_K: "(%x. y) == COMBK y"
apply (rule eq_reflection)
apply (rule ext)
done

lemma abs_B: "(%x. a (g x)) == COMBB a g"
apply (rule eq_reflection)
apply (rule ext)
done

lemma abs_C: "(%x. (f x) b) == COMBC f b"
apply (rule eq_reflection)
apply (rule ext)
done

subsection {* Setup of external ATPs *}

use "Tools/res_axioms.ML" setup ResAxioms.setup
use "Tools/res_hol_clause.ML"
use "Tools/res_reconstruct.ML" setup ResReconstruct.setup
use "Tools/res_atp.ML"

use "Tools/atp_manager.ML"

text {* basic provers *}

text {* provers with stuctured output *}

text {* on some problems better results *}

text {* remote provers via SystemOnTPTP *}