From 9b17aac85aa650a7a9d6463d3d01f1eb228d4572 Mon Sep 17 00:00:00 2001 From: Josh Chen Date: Tue, 11 Sep 2018 08:59:16 +0200 Subject: Go back to higher-order application notation --- Prod.thy | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) (limited to 'Prod.thy') diff --git a/Prod.thy b/Prod.thy index b0408b9..35d6b07 100644 --- a/Prod.thy +++ b/Prod.thy @@ -36,17 +36,17 @@ abbreviation Function :: "[Term, Term] \ Term" (infixr "\Type rules\ axiomatization where - Prod_form: "\A: U(i); B: A \ U(i)\ \ \x:A. B(x): U(i)" + Prod_form: "\A: U i; B: A \ U i\ \ \x:A. B x: U i" and - Prod_intro: "\\x. x: A \ b(x): B(x); A: U(i)\ \ \<^bold>\x. b(x): \x:A. B(x)" + Prod_intro: "\\x. x: A \ b x: B x; A: U i\ \ \<^bold>\x. b x: \x:A. B x" and - Prod_elim: "\f: \x:A. B(x); a: A\ \ f`a: B(a)" + Prod_elim: "\f: \x:A. B x; a: A\ \ f`a: B a" and - Prod_appl: "\\x. x: A \ b(x): B(x); a: A\ \ (\<^bold>\x. b(x))`a \ b(a)" + Prod_appl: "\\x. x: A \ b x: B x; a: A\ \ (\<^bold>\x. b x)`a \ b a" and - Prod_uniq: "f : \x:A. B(x) \ \<^bold>\x. (f`x) \ f" + Prod_uniq: "f : \x:A. B x \ \<^bold>\x. (f`x) \ f" and - Prod_eq: "\\x. x: A \ b(x) \ b'(x); A: U(i)\ \ \<^bold>\x. b(x) \ \<^bold>\x. b'(x)" + Prod_eq: "\\x. x: A \ b x \ c x; A: U i\ \ \<^bold>\x. b x \ \<^bold>\x. c x" text " The Pure rules for \\\ only let us judge strict syntactic equality of object lambda expressions; Prod_eq is the actual definitional equality rule. @@ -55,15 +55,15 @@ text " " text " - In addition to the usual type rules, it is a meta-theorem that whenever \\x:A. B x: U(i)\ is derivable from some set of premises \, then so are \A: U(i)\ and \B: A \ U(i)\. + In addition to the usual type rules, it is a meta-theorem that whenever \\x:A. B x: U i\ is derivable from some set of premises \, then so are \A: U i\ and \B: A \ U i\. That is to say, the following inference rules are admissible, and it simplifies proofs greatly to axiomatize them directly. " axiomatization where - Prod_wellform1: "(\x:A. B(x): U(i)) \ A: U(i)" + Prod_wellform1: "(\x:A. B x: U i) \ A: U i" and - Prod_wellform2: "(\x:A. B(x): U(i)) \ B: A \ U(i)" + Prod_wellform2: "(\x:A. B x: U i) \ B: A \ U i" text "Rule attribute declarations---set up various methods to use the type rules." @@ -75,9 +75,9 @@ lemmas Prod_routine [intro] = Prod_form Prod_intro Prod_elim section \Function composition\ -definition compose :: "[Term, Term] \ Term" (infixr "o" 70) where "g o f \ \<^bold>\x. g`(f`x)" +definition compose :: "[Term, Term] \ Term" (infixr "o" 110) where "g o f \ \<^bold>\x. g`(f`x)" -syntax "_COMPOSE" :: "[Term, Term] \ Term" (infixr "\" 70) +syntax "_COMPOSE" :: "[Term, Term] \ Term" (infixr "\" 110) translations "g \ f" \ "g o f" -- cgit v1.2.3