File: CONJ_ACI_RULE.doc

package info (click to toggle)
hol-light 20170109-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 36,568 kB
  • ctags: 8,549
  • sloc: ml: 540,018; cpp: 439; lisp: 286; java: 279; makefile: 262; sh: 229; yacc: 108; perl: 78; ansic: 57; sed: 39
file content (32 lines) | stat: -rw-r--r-- 964 bytes parent folder | download | duplicates (4)
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
\DOC CONJ_ACI_RULE

\TYPE {CONJ_ACI_RULE : term -> thm}

\SYNOPSIS
Proves equivalence of two conjunctions containing same set of conjuncts.

\DESCRIBE
The call {CONJ_ACI_RULE `t1 /\ ... /\ tn <=> u1 /\ ... /\ um`}, where both
sides of the equation are conjunctions of exactly the same set of conjuncts,
(with arbitrary ordering, association, and repetitions), will return the
corresponding theorem {|- t1 /\ ... /\ tn <=> u1 /\ ... /\ um}.

\FAILURE
Fails if applied to a term that is not a Boolean equation or the two sets of 
conjuncts are different.

\EXAMPLE
{
  # CONJ_ACI_RULE `(a /\ b) /\ (a /\ c) <=> (a /\ (c /\ a)) /\ b`;;
  val it : thm = |- (a /\ b) /\ a /\ c <=> (a /\ c /\ a) /\ b
}

\COMMENTS
The same effect can be had with the more general {AC} construct. However, for 
the special case of conjunction, {CONJ_ACI_RULE} is substantially more 
efficient when there are many conjuncts involved.

\SEEALSO
AC, CONJ_CANON_CONV, DISJ_ACI_RULE.

\ENDDOC