diff options
author | Josh Chen | 2018-05-14 10:42:22 +0200 |
---|---|---|
committer | Josh Chen | 2018-05-14 10:42:22 +0200 |
commit | bd6fd85d8c102f006c89ec471f7f8cc701a0dd4d (patch) | |
tree | aa909ce8aebc9c2d1d1b3b3f3725e95777212aaa /test.thy | |
parent | 5b217a7eb36906eabdcb6ec626a2d02e0f94c308 (diff) |
Added precedences. Need to figure out how to organize metatypes.
Diffstat (limited to '')
-rw-r--r-- | HoTT_Test.thy (renamed from test.thy) | 26 |
1 files changed, 21 insertions, 5 deletions
@@ -1,21 +1,36 @@ -theory test +theory HoTT_Test imports HoTT begin text \<open>Check trivial stuff:\<close> + lemma "Null : U" by (rule Null_form) +lemma "\<lbrakk>A \<equiv> B; x : B\<rbrakk> \<Longrightarrow> x : A" +proof - + assume "A \<equiv> B" + then have "B \<equiv> A" by (rule Pure.symmetric) + then have "x : B \<Longrightarrow> x :A" by (rule equal_types) + oops +(* qed---figure out how to discharge assumptions *) + text \<open> Do functions behave like we expect them to? (Or, is my implementation at least somewhat correct?... \<close> -lemma "A \<equiv> B \<Longrightarrow> (\<^bold>\<lambda>x. x) : B\<rightarrow>A" +\<comment> {* NOTE!!! The issues with substitution here. +We need the HoTT term \<open>b\<close> and the type family \<open>B\<close> to indeed be a Pure \<lambda>-term! +This seems to mean that I have to implement the HoTT types in more than one Pure type. +See CTT.thy for examples. +*} + +lemma "A \<equiv> B \<Longrightarrow> (\<^bold>\<lambda>x:A. x) : B\<rightarrow>A" proof - - have "A \<equiv> B \<Longrightarrow> B \<equiv> A" by (rule DefEq_symmetry) - then have "\<And>x. A \<equiv> B \<Longrightarrow> x : B \<Longrightarrow> x : A" by (rule equal_types) - thus "A \<equiv> B \<Longrightarrow> (\<^bold>\<lambda>x. x) : B\<rightarrow>A" by (rule Function_intro) + have "A \<equiv> B \<Longrightarrow> B \<equiv> A" by (rule Pure.symmetric) + then have "\<And>x::Term. A \<equiv> B \<Longrightarrow> x : B \<Longrightarrow> x : A" by (rule equal_types) + thus "A \<equiv> B \<Longrightarrow> (\<^bold>\<lambda>x:A. x) : B\<rightarrow>A" by (rule Function_intro) qed lemma "\<^bold>\<lambda>x. \<^bold>\<lambda>y. x : A\<rightarrow>B\<rightarrow>A" @@ -25,6 +40,7 @@ proof - qed text \<open>Here's a dumb proof that 2 is a natural number:\<close> + lemma "succ(succ 0) : Nat" proof - have "0 : Nat" by (rule Nat_intro1) |