From 1ccd93665a01acdc25b37409e94b71615ced5393 Mon Sep 17 00:00:00 2001 From: Josh Chen Date: Thu, 28 May 2020 14:08:26 +0200 Subject: more List and Maybe --- spartan/data/List.thy | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'spartan/data/List.thy') diff --git a/spartan/data/List.thy b/spartan/data/List.thy index 52f042b..c581019 100644 --- a/spartan/data/List.thy +++ b/spartan/data/List.thy @@ -50,19 +50,29 @@ lemmas abbreviation "ListRec A C \ ListInd A (\_. C)" +Lemma (derive) ListCase: + assumes + "A: U i" "\xs. xs: List A \ C xs: U i" and + nil_case: "c\<^sub>0: C (nil A)" and + cons_case: "\x xs. \x: A; xs: List A\ \ f x xs: C (cons A x xs)" and + "xs: List A" + shows "?List_cases A (\xs. C xs) c\<^sub>0 (\x xs. f x xs) xs: C xs" + by (elim xs) (fact nil_case, rule cons_case) + +lemmas List_cases [cases] = ListCase[rotated 4] + + +section \Notation\ + definition nil_i ("[]") where [implicit]: "[] \ nil ?" -definition cons_i (infixr "#" 50) +definition cons_i (infixr "#" 120) where [implicit]: "x # xs \ cons ? x xs" translations "[]" \ "CONST List.nil A" "x # xs" \ "CONST List.cons A x xs" - - -section \List notation\ - syntax "_list" :: \args \ o\ ("[_]") translations -- cgit v1.2.3