This module extends the HOL logic with the theory of ordered pairs. This involves giving theory object definitions for the product type operator, the pairing function and the constants "FST" and "SND", and proving a few basic properties. Syntax functions and equality congruence rules are also provided.
Function or value | Description |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The "MkPairRep" function returns the concrete representation for a given pair's two components (i.e. the representation in terms of existing types, before the product type is defined). This representation is a function that takes two arguments and returns `true` for just one combination of its arguments - when each argument is equal to its respective pair component. This is used to define both "IsPairRep" and the pairing function. |- MkPairRep = (\(x:'a) (y:'b) a b. a = x /\ b = y)
|
|
|
|
This is the equality congruence rule for pairing. It takes two equality theorems, and pairs corresponding sides of the first theorem with the second, unioning the assumptions. A1 |- x1 = x2 A2 |- y1 = y2 ------------------------------ A1 u A2 |- (x1,y1) = (x2,y2) See also: mk_pair1_rule, mk_pair2_rule, mk_bin_rule.
|
|
|
The pairing function, called "PAIR", takes two arguments and returns the corresponding element in the product type. It is simply defined as the product type's abstraction of the "MkPairRep" function. It has special support in the parser/printer, so that the quotation `(t1,t2)` is parsed/ printed for the internal term `PAIR t1 t2`. |- PAIR = (\(x:'a) (y:'b). PairAbs (MkPairRep x y))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|