Functions | |
CERTIF | cweakening (char *name, CERTIF c, size_t m, const EXPR *bs) |
weakening rule (additional). More... | |
CERTIF | cassume (char *name, size_t num) |
assume rule (number 1 in Alethe). More... | |
CERTIF | ctrue (char *name) |
true rule (number 3 in Alethe). More... | |
CERTIF | cfalse (char *name) |
false rule (number 4 in Alethe). More... | |
CERTIF | cresolution (char *name, size_t nb, const CERTIF *premisses) |
th_resolution and resolution rules (number 6 and 7 in Alethe). More... | |
CERTIF | clia_generic (char *name, size_t nb, const EXPR *l) |
lia_generic rule (number 12 in Alethe). More... | |
CERTIF | ceq_reflexive (char *name, EXPR t) |
eq_reflexive rule (number 23 in Alethe). More... | |
CERTIF | ceq_transitive (char *name, size_t n, const EXPR *ts) |
eq_transitive rule (number 24 in Alethe). More... | |
CERTIF | ceq_congruent (char *name, size_t n, const EXPR *clause) |
eq_congruent rule (number 25 in Alethe). More... | |
CERTIF | ceq_congruent_pred (char *name, size_t n, const EXPR *clause) |
eq_congruent_pred rule (number 26 in Alethe). More... | |
CERTIF | ceq_congruent_pred_b (char *name, size_t n, const EXPR *clause) |
eq_congruent_pred_b rule (a small variant of the previous one). More... | |
CERTIF | cand (char *name, CERTIF c, int k) |
and rule (number 28 in Alethe). More... | |
CERTIF | cnot_or (char *name, CERTIF c, int k) |
not_or rule (number 29 in Alethe). More... | |
CERTIF | cor (char *name, CERTIF c) |
or rule (number 30 in Alethe). More... | |
CERTIF | cnot_and (char *name, CERTIF c) |
not_and rule (number 31 in Alethe). More... | |
CERTIF | cxor1 (char *name, CERTIF c) |
xor1 rule (number 32 in Alethe). More... | |
CERTIF | cxor2 (char *name, CERTIF c) |
xor2 rule (number 33 in Alethe). More... | |
CERTIF | cnot_xor1 (char *name, CERTIF c) |
not_xor1 rule (number 34 in Alethe). More... | |
CERTIF | cnot_xor2 (char *name, CERTIF c) |
not_xor2 rule (number 35 in Alethe). More... | |
CERTIF | cimplies (char *name, CERTIF c) |
implies rule (number 36 in Alethe). More... | |
CERTIF | cnot_implies1 (char *name, CERTIF c) |
not_implies1 rule (number 37 in Alethe). More... | |
CERTIF | cnot_implies2 (char *name, CERTIF c) |
not_implies2 rule (number 38 in Alethe). More... | |
CERTIF | cequiv1 (char *name, CERTIF c) |
equiv1 rule (number 39 in Alethe). More... | |
CERTIF | cequiv2 (char *name, CERTIF c) |
equiv2 rule (number 40 in Alethe). More... | |
CERTIF | cnot_equiv1 (char *name, CERTIF c) |
not_equiv1 rule (number 41 in Alethe). More... | |
CERTIF | cnot_equiv2 (char *name, CERTIF c) |
not_equiv2 rule (number 42 in Alethe). More... | |
CERTIF | cand_pos (char *name, size_t n, const EXPR *fs, int k) |
and_pos rule (number 43 in Alethe). More... | |
CERTIF | cand_neg (char *name, size_t n, const EXPR *fs) |
and_neg rule (number 44 in Alethe). More... | |
CERTIF | cor_pos (char *name, size_t n, const EXPR *fs) |
or_pos rule (number 45 in Alethe). More... | |
CERTIF | cor_neg (char *name, size_t n, const EXPR *fs, int k) |
or_neg rule (number 46 in Alethe). More... | |
CERTIF | cxor_pos1 (char *name, EXPR a, EXPR b) |
xor_pos1 rule (number 47 in Alethe). More... | |
CERTIF | cxor_pos2 (char *name, EXPR a, EXPR b) |
xor_pos2 rule (number 48 in Alethe). More... | |
CERTIF | cxor_neg1 (char *name, EXPR a, EXPR b) |
xor_neg1 rule (number 49 in Alethe). More... | |
CERTIF | cxor_neg2 (char *name, EXPR a, EXPR b) |
xor_neg2 rule (number 50 in Alethe). More... | |
CERTIF | cimplies_pos (char *name, EXPR a, EXPR b) |
implies_pos rule (number 51 in Alethe). More... | |
CERTIF | cimplies_neg1 (char *name, EXPR a, EXPR b) |
implies_neg1 rule (number 52 in Alethe). More... | |
CERTIF | cimplies_neg2 (char *name, EXPR a, EXPR b) |
implies_neg2 rule (number 53 in Alethe). More... | |
CERTIF | cequiv_pos1 (char *name, EXPR a, EXPR b) |
equiv_pos1 rule (number 54 in Alethe). More... | |
CERTIF | cequiv_pos2 (char *name, EXPR a, EXPR b) |
equiv_pos2 rule (number 55 in Alethe). More... | |
CERTIF | cequiv_neg1 (char *name, EXPR a, EXPR b) |
equiv_neg1 rule (number 56 in Alethe). More... | |
CERTIF | cequiv_neg2 (char *name, EXPR a, EXPR b) |
equiv_neg2 rule (number 57 in Alethe). More... | |
Our certificate format implements parts of the Alethe format.
Some missing aspects are:
Some additional aspects are:
not_not
is useless as SMTCoq reasons module double negationEach rule has the same name as in the document (with an additional c
at the beginning), and the documentation refers to the number of the rule in the document.
The first parameter of each rule is a name given to the step, to be used with the debugging checker. All names must be unique.
CERTIF cand | ( | char * | name, |
CERTIF | c, | ||
int | k | ||
) |
and
rule (number 28 in Alethe).
Given a proof of the clause {(and f1 ... fn)}
and a non-negative integer k
, proves the clause {fk}
.
name | The unique name given to the proof step. |
c | The proof of {(and f1 ... fn)} . |
k | An integer between 1 and n . |
CERTIF cand_neg | ( | char * | name, |
size_t | n, | ||
const EXPR * | fs | ||
) |
and_neg
rule (number 44 in Alethe).
Given the formulas f1 ... fn
, proves the tautological clause {(and f1 ... fn) (not f1) ... (not fn)}
.
name | The unique name given to the proof step. |
n | The number of formulas in the resulting conjunction. |
fs | A pointer to the list of formulas. |
CERTIF cand_pos | ( | char * | name, |
size_t | n, | ||
const EXPR * | fs, | ||
int | k | ||
) |
and_pos
rule (number 43 in Alethe).
Given the formulas f1 ... fn
and a non-negative integer k
, proves the tautological clause {(not (and f1 ... fn)) fk}
.
name | The unique name given to the proof step. |
n | The number of formulas in the resulting conjunction. |
fs | A pointer to the list of formulas. |
k | An integer between 1 and n . |
CERTIF cassume | ( | char * | name, |
size_t | num | ||
) |
assume
rule (number 1 in Alethe).
Refer to an assertion by its index, in the order they were given.
The first assertion has index 0.
name | The unique name given to the proof step. |
num | The index of the assertion. |
CERTIF ceq_congruent | ( | char * | name, |
size_t | n, | ||
const EXPR * | clause | ||
) |
eq_congruent
rule (number 25 in Alethe).
Proves the tautological clause {(not (= t1 u1)) ... (not (= tn un)) (= f(t1, ..., tn) f(u1, ..., un))}
tis
and uis
must be non-Boolean terms, and the codomain of f
must not be Bool
.name | The unique name given to the proof step. |
n | The number of literals in the final clause. |
clause | A pointer to the list of literals in the final clause. |
CERTIF ceq_congruent_pred | ( | char * | name, |
size_t | n, | ||
const EXPR * | clause | ||
) |
eq_congruent_pred
rule (number 26 in Alethe).
Proves the tautological clause {(not (= t1 u1)) ... (not (= tn un)) (= P(t1, ..., tn) P(u1, ..., un))}
tis
and uis
must be non-Boolean terms, and the codomain of P
must be Bool
.name | The unique name given to the proof step. |
n | The number of literals in the final clause. |
clause | A pointer to the list of literals in the final clause. |
CERTIF ceq_congruent_pred_b | ( | char * | name, |
size_t | n, | ||
const EXPR * | clause | ||
) |
eq_congruent_pred_b
rule (a small variant of the previous one).
Proves the tautological clause {(not (= t1 u1)) ... (not (= tn un)) (not P(t1, ..., tn)) P(u1, ..., un)}
tis
and uis
must be non-Boolean terms, and the codomain of P
must be Bool
.name | The unique name given to the proof step. |
n | The number of literals in the final clause. |
clause | A pointer to the list of literals in the final clause. |
CERTIF ceq_reflexive | ( | char * | name, |
EXPR | t | ||
) |
eq_reflexive
rule (number 23 in Alethe).
Given a term t
, proves the tautological clause {(= t t)}
.
name | The unique name given to the proof step. |
t | The term. |
CERTIF ceq_transitive | ( | char * | name, |
size_t | n, | ||
const EXPR * | ts | ||
) |
eq_transitive
rule (number 24 in Alethe).
Given the terms t1 ... tn
, proves the tautological clause {(not (= t1 t2)) ... (not (= t{n-1} tn)) (= t1 tn)}
tis
must be non-Boolean terms.name | The unique name given to the proof step. |
n | The number of terms. |
ts | A pointer to the list of terms. |
CERTIF cequiv1 | ( | char * | name, |
CERTIF | c | ||
) |
equiv1
rule (number 39 in Alethe).
Given a proof of the clause {(= a b)}
, proves the clause {(not a) b}
.
a
and b
must be Boolean expressionsname | The unique name given to the proof step. |
c | The proof of {(= a b)} . |
CERTIF cequiv2 | ( | char * | name, |
CERTIF | c | ||
) |
equiv2
rule (number 40 in Alethe).
Given a proof of the clause {(= a b)}
, proves the clause {a (not b)}
.
a
and b
must be Boolean expressionsname | The unique name given to the proof step. |
c | The proof of {(= a b)} . |
CERTIF cequiv_neg1 | ( | char * | name, |
EXPR | a, | ||
EXPR | b | ||
) |
equiv_neg1
rule (number 56 in Alethe).
Given the formulas a
and b
, proves the tautological clause {(= a b) (not a) (not b)}
name | The unique name given to the proof step. |
a | The left-hand side formula of the equality. |
b | The right-hand side formula of the equality. |
CERTIF cequiv_neg2 | ( | char * | name, |
EXPR | a, | ||
EXPR | b | ||
) |
equiv_neg2
rule (number 57 in Alethe).
Given the formulas a
and b
, proves the tautological clause {(= a b) a b}
name | The unique name given to the proof step. |
a | The left-hand side formula of the equality. |
b | The right-hand side formula of the equality. |
CERTIF cequiv_pos1 | ( | char * | name, |
EXPR | a, | ||
EXPR | b | ||
) |
equiv_pos1
rule (number 54 in Alethe).
Given the formulas a
and b
, proves the tautological clause {(not (= a b)) a (not b)}
name | The unique name given to the proof step. |
a | The left-hand side formula of the equality. |
b | The right-hand side formula of the equality. |
CERTIF cequiv_pos2 | ( | char * | name, |
EXPR | a, | ||
EXPR | b | ||
) |
equiv_pos2
rule (number 55 in Alethe).
Given the formulas a
and b
, proves the tautological clause {(not (= a b)) (not a) b}
name | The unique name given to the proof step. |
a | The left-hand side formula of the equality. |
b | The right-hand side formula of the equality. |
CERTIF cfalse | ( | char * | name | ) |
false
rule (number 4 in Alethe).
Proves the tautological clause {(not false)}.
name | The unique name given to the proof step. |
CERTIF cimplies | ( | char * | name, |
CERTIF | c | ||
) |
implies
rule (number 36 in Alethe).
Given a proof of the clause {(=> a b)}
, proves the clause {(not a) b}
.
name | The unique name given to the proof step. |
c | The proof of {(=> a b)} . |
CERTIF cimplies_neg1 | ( | char * | name, |
EXPR | a, | ||
EXPR | b | ||
) |
implies_neg1
rule (number 52 in Alethe).
Given the formulas a
and b
, proves the tautological clause {(implies a b) a}
name | The unique name given to the proof step. |
a | The left-hand side formula of the implication. |
b | The right-hand side formula of the implication. |
CERTIF cimplies_neg2 | ( | char * | name, |
EXPR | a, | ||
EXPR | b | ||
) |
implies_neg2
rule (number 53 in Alethe).
Given the formulas a
and b
, proves the tautological clause {(implies a b) (not b)}
name | The unique name given to the proof step. |
a | The left-hand side formula of the implication. |
b | The right-hand side formula of the implication. |
CERTIF cimplies_pos | ( | char * | name, |
EXPR | a, | ||
EXPR | b | ||
) |
implies_pos
rule (number 51 in Alethe).
Given the formulas a
and b
, proves the tautological clause {(not (implies a b)) (not a) b}
name | The unique name given to the proof step. |
a | The left-hand side formula of the implication. |
b | The right-hand side formula of the implication. |
CERTIF clia_generic | ( | char * | name, |
size_t | nb, | ||
const EXPR * | l | ||
) |
lia_generic
rule (number 12 in Alethe).
Proves the given clause in the theory of linear integer arithmetic.
name | The unique name given to the proof step. |
nb | The number of literals in the clause. |
l | A pointer to the literals of the clause. |
CERTIF cnot_and | ( | char * | name, |
CERTIF | c | ||
) |
not_and
rule (number 31 in Alethe).
Given a proof of the clause {(not (and f1 ... fn))}
, proves the clause {(not f1) ... (not fn)}
.
name | The unique name given to the proof step. |
c | The proof of {(not (and f1 ... fn))} . |
CERTIF cnot_equiv1 | ( | char * | name, |
CERTIF | c | ||
) |
not_equiv1
rule (number 41 in Alethe).
Given a proof of the clause {(not (= a b))}
, proves the clause {a b}
.
a
and b
must be Boolean expressionsname | The unique name given to the proof step. |
c | The proof of {(not (= a b))} . |
CERTIF cnot_equiv2 | ( | char * | name, |
CERTIF | c | ||
) |
not_equiv2
rule (number 42 in Alethe).
Given a proof of the clause {(not (= a b))}
, proves the clause {(not a) (not b)}
.
a
and b
must be Boolean expressionsname | The unique name given to the proof step. |
c | The proof of {(not (= a b))} . |
CERTIF cnot_implies1 | ( | char * | name, |
CERTIF | c | ||
) |
not_implies1
rule (number 37 in Alethe).
Given a proof of the clause {(not (=> a b))}
, proves the clause {a}
.
name | The unique name given to the proof step. |
c | The proof of {(not (=> a b))} . |
CERTIF cnot_implies2 | ( | char * | name, |
CERTIF | c | ||
) |
not_implies2
rule (number 38 in Alethe).
Given a proof of the clause {(not (=> a b))}
, proves the clause {(not b)}
.
name | The unique name given to the proof step. |
c | The proof of {(not (=> a b))} . |
CERTIF cnot_or | ( | char * | name, |
CERTIF | c, | ||
int | k | ||
) |
not_or
rule (number 29 in Alethe).
Given a proof of the clause {(not (or f1 ... fn))}
and a non-negative integer k
, proves the clause {(not fk)}
.
name | The unique name given to the proof step. |
c | The proof of {(not (or f1 ... fn))} . |
k | An integer between 1 and n . |
CERTIF cnot_xor1 | ( | char * | name, |
CERTIF | c | ||
) |
not_xor1
rule (number 34 in Alethe).
Given a proof of the clause {(not (xor a b))}
, proves the clause {a (not b)}
.
name | The unique name given to the proof step. |
c | The proof of {(not (xor a b))} . |
CERTIF cnot_xor2 | ( | char * | name, |
CERTIF | c | ||
) |
not_xor2
rule (number 35 in Alethe).
Given a proof of the clause {(not (xor a b))}
, proves the clause {(not a) b}
.
name | The unique name given to the proof step. |
c | The proof of {(not (xor a b))} . |
CERTIF cor | ( | char * | name, |
CERTIF | c | ||
) |
or
rule (number 30 in Alethe).
Given a proof of the clause {(or f1 ... fn)}
, proves the clause {f1 ... fn}
.
name | The unique name given to the proof step. |
c | The proof of {(or f1 ... fn)} . |
CERTIF cor_neg | ( | char * | name, |
size_t | n, | ||
const EXPR * | fs, | ||
int | k | ||
) |
or_neg
rule (number 46 in Alethe).
Given the formulas f1 ... fn
and a non-negative integer k
, proves the tautological clause {(or f1 ... fn) (not fk)}
.
name | The unique name given to the proof step. |
n | The number of formulas in the resulting disjunction. |
fs | A pointer to the list of formulas. |
k | An integer between 1 and n . |
CERTIF cor_pos | ( | char * | name, |
size_t | n, | ||
const EXPR * | fs | ||
) |
or_pos
rule (number 45 in Alethe).
Given the formulas f1 ... fn
, proves the tautological clause {(not (or f1 ... fn)) f1 ... fn}
.
name | The unique name given to the proof step. |
n | The number of formulas in the resulting disjunction. |
fs | A pointer to the list of formulas. |
CERTIF cresolution | ( | char * | name, |
size_t | nb, | ||
const CERTIF * | premisses | ||
) |
th_resolution
and resolution
rules (number 6 and 7 in Alethe).
Resolution of two or more clauses.
name | The unique name given to the proof step. |
nb | The number of clauses to be resolved. |
premisses | The proof of the clauses to be resolved. |
CERTIF ctrue | ( | char * | name | ) |
true
rule (number 3 in Alethe).
Proves the tautological clause {true}.
name | The unique name given to the proof step. |
CERTIF cweakening | ( | char * | name, |
CERTIF | c, | ||
size_t | m, | ||
const EXPR * | bs | ||
) |
weakening
rule (additional).
Given a proof of the clause {f1 ... fn}
and a possibly larger clause {f1 ... fn b[n+1] ... bm}
, proves the clause {f1 ... fn b[n+1] ... bm}
The order does not matter. The initial clause may contain the additional literals not false
and true
as well.
name | The unique name given to the proof step. |
c | The proof of {f1 ... fn}. |
m | The number of literals in the final clause {f1 ... fn b[n+1] ... bm} . |
bs | A pointer to the list of literals in the final clause. |
CERTIF cxor1 | ( | char * | name, |
CERTIF | c | ||
) |
xor1
rule (number 32 in Alethe).
Given a proof of the clause {(xor a b)}
, proves the clause {a b}
.
name | The unique name given to the proof step. |
c | The proof of {(xor a b)} . |
CERTIF cxor2 | ( | char * | name, |
CERTIF | c | ||
) |
xor2
rule (number 33 in Alethe).
Given a proof of the clause {(xor a b)}
, proves the clause {(not a) (not b)}
.
name | The unique name given to the proof step. |
c | The proof of {(xor a b)} . |
CERTIF cxor_neg1 | ( | char * | name, |
EXPR | a, | ||
EXPR | b | ||
) |
xor_neg1
rule (number 49 in Alethe).
Given the formulas a
and b
, proves the tautological clause {(xor a b) a (not b)}
name | The unique name given to the proof step. |
a | The left-hand side formula of the exclusive or. |
b | The right-hand side formula of the exclusive or. |
CERTIF cxor_neg2 | ( | char * | name, |
EXPR | a, | ||
EXPR | b | ||
) |
xor_neg2
rule (number 50 in Alethe).
Given the formulas a
and b
, proves the tautological clause {(xor a b) (not a) b}
name | The unique name given to the proof step. |
a | The left-hand side formula of the exclusive or. |
b | The right-hand side formula of the exclusive or. |
CERTIF cxor_pos1 | ( | char * | name, |
EXPR | a, | ||
EXPR | b | ||
) |
xor_pos1
rule (number 47 in Alethe).
Given the formulas a
and b
, proves the tautological clause {(not (xor a b)) a b}
name | The unique name given to the proof step. |
a | The left-hand side formula of the exclusive or. |
b | The right-hand side formula of the exclusive or. |
CERTIF cxor_pos2 | ( | char * | name, |
EXPR | a, | ||
EXPR | b | ||
) |
xor_pos2
rule (number 48 in Alethe).
Given the formulas a
and b
, proves the tautological clause {(not (xor a b)) (not a) (not b)}
name | The unique name given to the proof step. |
a | The left-hand side formula of the exclusive or. |
b | The right-hand side formula of the exclusive or. |