(*--"\<^bold>C\<^bold>O\<^bold>U\<^bold>N\<^bold>T\<^bold>E\<^bold>R\<^bold>X (cTest)"*) theory cTest imports Complex_Main begin typedecl sT consts inP :: "sT => sT => bool" (infixl "\\<^isub>\" 55) abbreviation niP :: "sT => sT => bool" (infixl "\\<^isub>\" 55) where "niP p q == \(p \\<^isub>\ q)" axiomatization where Ax_x\<^isup>N: "(\x. x \\<^isub>\ r \ x \\<^isub>\ s) \ r = s" consts emS :: "sT" ("\") axiomatization where Ax_emS: "(x \\<^isub>\ \)" consts paS :: "sT => sT => sT" syntax "_paS" :: "sT => sT => sT" ("(\(_,_)\)") translations "\r,s\" == "CONST paS r s" axiomatization where Ax_paS: "x \\<^isub>\ \r,s\ \ (x = r \ x = s)" theorem paS_is_unique: "(\x. x \\<^isub>\ r \ (x = p \ x = q)) \ r = \p,q\" by(metis Ax_x\<^isup>N Ax_paS) definition siS :: "sT => sT" where "siS r = paS r r" notation siS ("(\(_)\)") theorem siS_is_unique: "(\x. x \\<^isub>\ r \ x = s) \ r = \s\" by(metis siS_def paS_is_unique) consts seS :: "sT => (sT => bool) => sT" syntax "_seS" :: "sT => (sT => bool) => sT" ("(\(_./ _)\)") translations "\q. P\" == "CONST seS q P" axiomatization where Ax_seS: "\q::sT. \P::(sT => bool). x \\<^isub>\ \q. P\ \ (x \\<^isub>\ q \ P x)" function PT :: "sT => bool" where "PT x = (x \\<^isub>\ \\\\. PT\)" by(auto) theorem PT_formula : "PT x = (x \\<^isub>\ \\\\. PT\)" sorry theorem "\\\\. PT\ \\<^isub>\ \ \\\\. PT\ \ \ PT \\\\. PT\ \ \\\\. PT\ \\<^isub>\ \\\\. PT\" by(metis Ax_seS siS_is_unique PT_formula) --"Metis: The assumptions are inconsistent" (* For phi(x) = x \\<^isub>\ u, state the following axiom per the normal axiom scheme, as if it let u occur in phi(x): \q.\u.\x. (x \\<^isub>\ q \ x \\<^isub>\ u) \ x \\<^isub>\ u. Now, let q = \\\ and u = \. So (\ \\<^isub>\ \\\ \ \ \\<^isub>\ \) \ \ \\<^isub>\ \. ISAR: axiomatization where PT_axiom: "\q.\u.\x. (x \\<^isub>\ q \ x \\<^isub>\ u) \ x \\<^isub>\ u" theorem "(\ \\<^isub>\ \\\ \ \ \\<^isub>\ \) \ \ \\<^isub>\ \" by(metis (full_types) PT_axiom) theorem "(a \\<^isub>\ \a\ \ a \\<^isub>\ a) \ a \\<^isub>\ a" by(metis (full_types) PT_axiom) *) (* function consist_test_1 :: "sT => bool" where "consist_test_1 x = (x \\<^isub>\ (seS \\\ consist_test_1))" by(auto) theorem consist_test_1_formula : "consist_test_1 x = (x \\<^isub>\ (seS \\\ consist_test_1))" sorry theorem consist_test_1_iff: "\x. x \\<^isub>\ (seS \\\ consist_test_1) \ (x \\<^isub>\ \\\ \ consist_test_1 x)" apply simp by(metis Ax_seS consist_test_1_formula) theorem "\x. ~(x \\<^isub>\ \\\ \ consist_test_1 x)" apply(simp) by(metis Ax_seS consist_test_1_formula) theorem "\x. x \\<^isub>\ (seS \\\ consist_test_1)" by(metis Ax_seS consist_test_1_formula) *) end --"\<^bold>[\<^bold>\\<^bold>]"