Theory HoTT_Base
theory HoTT_Base
imports Pure
begin
section ‹Expressions, judgments, and universes›
typedecl expr
typedecl level
judgment has_type :: "expr ⇒ expr ⇒ prop"
(infix "∷⇩h" 50)
consts
level_zero :: level
level_succ :: "level ⇒ level"
level_less :: "level ⇒ level ⇒ prop"
(infix "≺⇩l" 50)
universe :: "level ⇒ expr"
text ‹
The level relation is a strict order. Pure has no falsity, so irreflexivity
is stated in its ex-falso form: a hypothetical self-relation ‹i ≺⇩l i›
derives an arbitrary Pure proposition. Every axiom below holds in the
intended model, which reads levels as natural numbers, ‹level_succ› as the
successor, and ‹≺⇩l› as the strict order; there the irreflexivity
premise is impossible, so the axiom is sound and serves only to derive
asymmetry.
›
axiomatization where
level_step: "i ≺⇩l level_succ i" and
level_trans: "i ≺⇩l j ⟹ j ≺⇩l k ⟹ i ≺⇩l k" and
level_irrefl: "i ≺⇩l i ⟹ PROP W" and
universe_form: "universe i ∷⇩h universe (level_succ i)" and
universe_cumul:
"i ≺⇩l j ⟹ A ∷⇩h universe i ⟹ A ∷⇩h universe j" and
type_conversion:
"a ∷⇩h A ⟹ A ≡ B ⟹ a ∷⇩h B" and
term_conversion:
"a ≡ b ⟹ a ∷⇩h A ⟹ b ∷⇩h A"
lemma level_two_steps:
"i ≺⇩l level_succ (level_succ i)"
by (rule level_trans[OF level_step level_step])
lemma level_asym:
assumes ij: "i ≺⇩l j"
and ji: "j ≺⇩l i"
shows "PROP W"
by (rule level_irrefl[OF level_trans[OF ij ji]])
lemma level_succ_not_below:
assumes "level_succ i ≺⇩l i"
shows "PROP W"
by (rule level_asym[OF level_step assms])
lemma level_two_steps_not_below:
assumes "level_succ (level_succ i) ≺⇩l i"
shows "PROP W"
by (rule level_asym[OF level_two_steps assms])
lemma universe_cumul_two:
assumes "A ∷⇩h universe i"
shows "A ∷⇩h universe (level_succ (level_succ i))"
by (rule universe_cumul[OF level_two_steps assms])
end