1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
(********
Isabelle/HoTT: Dependent sum (dependent pair)
Feb 2019
********)
theory Sum
imports HoTT_Base
begin
axiomatization
Sum :: "[t, t ⇒ t] ⇒ t" and
pair :: "[t, t] ⇒ t" ("(2<_,/ _>)") and
indSum :: "[t ⇒ t, [t, t] ⇒ t, t] ⇒ t"
syntax
"_Sum" :: "[idt, t, t] ⇒ t" ("(2∑'(_: _')./ _)" 20)
"_Sum'" :: "[idt, t, t] ⇒ t" ("(2∑_: _./ _)" 20)
translations
"∑(x: A). B" ⇌ "(CONST Sum) A (λx. B)"
"∑x: A. B" ⇌ "(CONST Sum) A (λx. B)"
abbreviation Pair :: "[t, t] ⇒ t" (infixr "×" 50)
where "A × B ≡ ∑_: A. B"
axiomatization where
― ‹Type rules›
Sum_form: "⟦A: U i; ⋀x. x: A ⟹ B x: U i⟧ ⟹ ∑x: A. B x: U i" and
Sum_intro: "⟦⋀x. x: A ⟹ B x: U i; a: A; b: B a⟧ ⟹ <a, b>: ∑x: A. B x" and
Sum_elim: "⟦
p: ∑x: A. B x;
C: ∑x: A. B x ↝ U i;
⋀x y. ⟦x: A; y: B x⟧ ⟹ f x y: C <x,y> ⟧ ⟹ indSum C f p: C p" and
Sum_cmp: "⟦
a: A;
b: B a;
B: A ↝ U i;
C: ∑x: A. B x ↝ U i;
⋀x y. ⟦x: A; y: B x⟧ ⟹ f x y: C <x,y> ⟧ ⟹ indSum C f <a, b> ≡ f a b" and
― ‹Congruence rules›
Sum_form_eq: "⟦A: U i; B: A ↝ U i; C: A ↝ U i; ⋀x. x: A ⟹ B x ≡ C x⟧
⟹ ∑x: A. B x ≡ ∑x: A. C x"
lemmas Sum_form [form]
lemmas Sum_routine [intro] = Sum_form Sum_intro Sum_elim
lemmas Sum_comp [comp] = Sum_cmp
lemmas Sum_cong [cong] = Sum_form_eq
end
|