Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 117 lines (72 sloc) 3.831 kb
5d23c7a @yav Add totality axioms, which are not used at the moment.
authored
1 These are the axioms in non-canonicalized form.
2
3
391753d @yav An explicit list of all axioms.
authored
4 General properties of equality:
5
6 eq_refl :: forall a. (a ~ a)
7 eq_trans :: forall a b c. (a ~ b, b ~ c) => (a ~ c)
8 eq_sym :: forall a b. (a ~ b) => (b ~ a)
9
10
11 Interactions between equality and any function or predicate.
12 Here, insantiated to the function and predicate symbols of the theory:
13
14 add_fun :: forall a b c1 c2. (a + b ~ c1, a + b ~ c2) => (c1 ~ c2)
15 mul_fun :: forall a b c1 c2. (a * b ~ c1, a * b ~ c2) => (c1 ~ c2)
16 exp_fun :: forall a b c1 c2. (a ^ b ~ c1, a ^ b ~ c2) => (c1 ~ c2)
17
000a0d0 @yav Fix typo.
authored
18 add_cong :: forall a b x y. (a ~ x, b ~ y) => (a + b ~ x + y)
19 mul_cong :: forall a b x y. (a ~ x, b ~ y) => (a * b ~ x * y)
20 exp_cong :: forall a b x y. (a ~ x, b ~ y) => (a ^ b ~ x ^ y)
21 leq_cong :: forall a b x y. (a ~ x, b ~ y, a <= b) => (x <= y)
391753d @yav An explicit list of all axioms.
authored
22
23
24 Definitions on literals (`a` and `b` are concrete literals):
25
26 add_def a b :: a + b ~ $(a + b)
5b15732 @yav Fix typos.
authored
27 mul_def a b :: a * b ~ $(a * b)
28 exp_def a b :: a ^ b ~ $(a ^ b)
391753d @yav An explicit list of all axioms.
authored
29 leq_def a b :: $(a <= b) => (a <= b)
30
5d23c7a @yav Add totality axioms, which are not used at the moment.
authored
31
391753d @yav An explicit list of all axioms.
authored
32 Units:
33
34 add_unit_R :: forall a. a + 0 ~ a
35 mul_unit_R :: forall a. a * 1 ~ a
36 exp_unit_R :: forall a. a ^ 1 ~ a
37
38 Anihilators:
39
40 mul_anih_R :: forall a. a * 0 ~ 0
41 exp_anih_R :: forall a. a ^ 0 ~ 1
42 exp_anih_L :: forall a. (1 <= a) => 0 ^ a ~ 0
43
44 Commutativity:
45
46 add_comm :: forall a b. a + b ~ b + a
37936ca @yav Fix typos.
authored
47 mul_comm :: forall a b. a * b ~ b * a
391753d @yav An explicit list of all axioms.
authored
48
49 Associativity:
50
51 add_assoc :: forall a b c. (a + b) + c ~ a + (b + c)
52 mul_assoc :: forall a b c. (a * b) * c ~ a * (b * c)
53
54
55 Distributivity:
56
37936ca @yav Fix typos.
authored
57 add_mul_distr :: forall a b c. (a + b) * c ~ (a * c) + (b * c)
391753d @yav An explicit list of all axioms.
authored
58 mul_exp_distr :: forall a b c. (a * b) ^ c ~ (a ^ c) * (b ^ c)
59
60
61 Exponentiation and other operators:
62
63 exp_add :: forall a b c. a ^ (b + c) ~ (a ^ b) * (a ^ c)
64 exp_mul :: forall a b c. a ^ (b * c) ~ (a ^ b) ^ c
65
66 Cancellation:
67
68 add_cancel_L :: forall a b1 b2. ( a + b1 ~ a + b2) => (b1 ~ b2)
69 mul_cancel_L :: forall a b1 b2. (1 <= a, a * b1 ~ a * b2) => (b1 ~ b2)
70 exp_cancel_L :: forall a b1 b2. (2 <= a, a ^ b1 ~ a ^ b2) => (b1 ~ b2)
71 exp_cancel_R :: forall a1 a2 b. (1 <= b, a1 ^ b ~ a2 ^ b) => (a1 ~ a2)
72
73
74 General properties of order:
75
76 leq_refl :: forall a. (a <= a)
77 leq_trans :: forall a b c. (a <= b, b <= c) => (a <= c)
78 leq_antisym :: forall a b. (a <= b, b <= a) => (a ~ b)
79
aa78bec @yav Add missing axiom "forall a. 0 <= a"
authored
80 leq0 :: forall a. 0 <= a
81
391753d @yav An explicit list of all axioms.
authored
82 Monotonicity (congruence with respect to order):
83
84 add_mono :: forall a b x y. (a <= x, b <= y) => (a + b <= x + y)
85 mul_mono :: forall a b x y. (a <= x, b <= y) => (a * b <= x * y)
86 exp_mono :: forall a b x y. (a <= x, b <= y) => (a ^ b <= x ^ y)
87
88 Cancellation and order:
89
90 leq_add_cancel_L :: forall a b1 b2. ( a + b1 <= a + b2) => (b1 <= b2)
91 leq_mul_cancel_L :: forall a b1 b2. (1 <= a, a * b1 <= a * b2) => (b1 <= b2)
92 leq_exp_cancel_L :: forall a b1 b2. (2 <= a, a ^ b1 <= a ^ b2) => (b1 <= b2)
93 leq_exp_cancel_R :: forall a1 a2 b. (1 <= b, a1 ^ b <= a2 ^ b) => (a1 <= a2)
94
5d23c7a @yav Add totality axioms, which are not used at the moment.
authored
95
96 Perhaps...
97 ----------
98
99 Totality. These do not fit with the standard evidence structure because
100 of the existential. They are useful for naming terms (i.e., the existential
101 is always eliminated by introducing a fresh variable).
102
103 -- conceptual
104 add_tot :: forall a b. exists c. a + b ~ c
105 mul_tot :: forall a b. exists c. a * b ~ c
106 exp_tot :: forall a b. exists c. a ^ b ~ c
107
108 -- To make things fit, where `c` should start off as a fresh variable.
109 add_tot a b c :: a + b ~ c
110 mul_tot a b c :: a * b ~ c
111 exp_tot a b c :: a ^ b ~ c
112
113 iMaybe this sould be done with some sort of `let` construct.
114
115
116
Something went wrong with that request. Please try again.