diff options
author | Josh Chen | 2020-06-03 13:09:30 +0200 |
---|---|---|
committer | Josh Chen | 2020-06-03 13:09:30 +0200 |
commit | e513fc2958133e3a00c06ebcd1214741843acf08 (patch) | |
tree | 717ab2e413e8fee071d1e4b22b2ed224f473d081 /spartan/data | |
parent | 8c0205ade477f732fceb484bf5986fdbc6469667 (diff) |
1. Type information context data
2. Small reformulations of rules
3. Bool
Diffstat (limited to 'spartan/data')
-rw-r--r-- | spartan/data/List.thy | 6 | ||||
-rw-r--r-- | spartan/data/More_Types.thy | 8 |
2 files changed, 11 insertions, 3 deletions
diff --git a/spartan/data/List.thy b/spartan/data/List.thy index 8fdaa1d..1798a23 100644 --- a/spartan/data/List.thy +++ b/spartan/data/List.thy @@ -52,14 +52,14 @@ abbreviation "ListRec A C \<equiv> ListInd A (\<lambda>_. C)" Lemma (derive) ListCase: assumes - "A: U i" "\<And>xs. xs: List A \<Longrightarrow> C xs: U i" and + "xs: List A" and nil_case: "c\<^sub>0: C (nil A)" and cons_case: "\<And>x xs. \<lbrakk>x: A; xs: List A\<rbrakk> \<Longrightarrow> f x xs: C (cons A x xs)" and - "xs: List A" + "\<And>xs. xs: List A \<Longrightarrow> C xs: U i" shows "?List_cases A (\<lambda>xs. C xs) c\<^sub>0 (\<lambda>x xs. f x xs) xs: C xs" by (elim xs) (fact nil_case, rule cons_case) -lemmas List_cases [cases] = ListCase[rotated 4] +lemmas List_cases [cases] = ListCase[unfolded ListCase_def] section \<open>Notation\<close> diff --git a/spartan/data/More_Types.thy b/spartan/data/More_Types.thy index 625f639..1d7abb9 100644 --- a/spartan/data/More_Types.thy +++ b/spartan/data/More_Types.thy @@ -90,6 +90,14 @@ definition "Bool \<equiv> \<top> \<or> \<top>" definition "true \<equiv> inl \<top> \<top> tt" definition "false \<equiv> inr \<top> \<top> tt" +Lemma + BoolF: "Bool: U i" and + Bool_true: "true: Bool" and + Bool_false: "false: Bool" + unfolding Bool_def true_def false_def by typechk+ + +lemmas [intros] = BoolF Bool_true Bool_false + \<comment> \<open>Can define if-then-else etc.\<close> |