From 64d2a5c60acce40113362c9d7eca8cd633362d23 Mon Sep 17 00:00:00 2001 From: Josh Chen Date: Tue, 5 Feb 2019 18:32:43 +0100 Subject: Add cong named theorem for congruence rules --- HoTT_Base.thy | 9 ++++++--- Prod.thy | 5 +++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/HoTT_Base.thy b/HoTT_Base.thy index 88cf986..e74ef31 100644 --- a/HoTT_Base.thy +++ b/HoTT_Base.thy @@ -68,16 +68,19 @@ text \We use the notation @{prop "B: A \ U i"} to abbreviate type section \Named theorems\ -named_theorems comp named_theorems form +named_theorems comp +named_theorems cong text \ The named theorems above will be used by proof methods defined in @{file HoTT_Methods.thy}. -@{attribute comp} declares computation rules, which are used by the \compute\ method, and may also be passed to invocations of the method \subst\ to perform equational rewriting. - @{attribute form} declares type formation rules. These are mainly used by the \cumulativity\ method, which lifts types into higher universes. + +@{attribute comp} declares computation rules, which are used by the \compute\ method, and may also be passed to invocations of the method \subst\ to perform equational rewriting. + +@{attribute cong} declares congruence rules, the definitional equality rules of the type theory. \ (* Todo: Set up the Simplifier! *) diff --git a/Prod.thy b/Prod.thy index a28c52a..0de7d89 100644 --- a/Prod.thy +++ b/Prod.thy @@ -66,6 +66,7 @@ Note that this is a separate rule from function extensionality. lemmas Prod_form [form] lemmas Prod_routine [intro] = Prod_form Prod_intro Prod_elim lemmas Prod_comp [comp] = Prod_cmp Prod_uniq +lemmas Prod_cong [cong] = Prod_form_eq Prod_intro_eq section \Function composition\ @@ -98,12 +99,12 @@ end lemma compose_assoc: assumes "A: U i" "f: A \ B" "g: B \ C" "h: TT x: C. D x" shows "compose A (compose B h g) f \ compose A h (compose A g f)" -by (derive lems: assms Prod_intro_eq) +by (derive lems: assms cong) lemma compose_comp: assumes "A: U i" and "\x. x: A \ b x: B" and "\x. x: B \ c x: C x" shows "(,\\x: B. c x) o (,\\x: A. b x) \ ,\\x: A. c (b x)" -by (derive lems: assms Prod_intro_eq) +by (derive lems: assms cong) abbreviation id :: "t \ t" where "id A \ ,\\x: A. x" -- cgit v1.2.3