]> matita.cs.unibo.it Git - helm.git/blob - helm/software/matita/contribs/TPTP/HEQ/HWC002-1.ma
Preparing for 0.5.9 release.
[helm.git] / helm / software / matita / contribs / TPTP / HEQ / HWC002-1.ma
1 set "baseuri" "cic:/matita/TPTP/HWC002-1".
2 include "logic/equality.ma".
3
4 (* Inclusion of: HWC002-1.p *)
5
6 (* -------------------------------------------------------------------------- *)
7
8 (*  File     : HWC002-1 : TPTP v3.2.0. Released v1.1.0. *)
9
10 (*  Domain   : Hardware Creation *)
11
12 (*  Problem  : Interchange inputs to outputs *)
13
14 (*  Version  : [ANL] axioms. *)
15
16 (*  English  : Design a circuit with inputs x and y whose outputs are y and  *)
17
18 (*             x, and contains no crossings of wires *)
19
20 (*  Refs     : [WO+92] Wos et al. (1992), Automated Reasoning: Introduction a *)
21
22 (*  Source   : [ANL] *)
23
24 (*  Names    : interchange.ver1.clauses [ANL] *)
25
26 (*  Status   : Unsatisfiable *)
27
28 (*  Rating   : 0.29 v3.1.0, 0.56 v2.7.0, 0.17 v2.6.0, 0.29 v2.5.0, 0.00 v2.4.0, 0.17 v2.2.1, 0.56 v2.2.0, 0.57 v2.1.0, 1.00 v2.0.0 *)
29
30 (*  Syntax   : Number of clauses     :   38 (   0 non-Horn;  23 unit;  30 RR) *)
31
32 (*             Number of atoms       :   53 (  20 equality) *)
33
34 (*             Maximal clause size   :    2 (   1 average) *)
35
36 (*             Number of predicates  :    2 (   0 propositional; 2-3 arity) *)
37
38 (*             Number of functors    :   11 (   3 constant; 0-4 arity) *)
39
40 (*             Number of variables   :   99 (   1 singleton) *)
41
42 (*             Maximal term depth    :    4 (   2 average) *)
43
44 (*  Comments : We represent the circuit built up so far by circuit(top(X),  *)
45
46 (*             middle(Y),bottom(Z)), where top and bottom are lists of *)
47
48 (*             outputs, counting outward from the middle. *)
49
50 (*           : The original uses the equality clauses as demodulators. *)
51
52 (* -------------------------------------------------------------------------- *)
53
54 (* ----Include definitions of AND, OR and NOT  *)
55
56 (* Inclusion of: Axioms/HWC001-0.ax *)
57
58 (* -------------------------------------------------------------------------- *)
59
60 (*  File     : HWC001-0 : TPTP v3.2.0. Released v1.0.0. *)
61
62 (*  Domain   : Hardware Creation *)
63
64 (*  Axioms   : Definitions of AND, OR and NOT *)
65
66 (*  Version  : [WO+92] axioms. *)
67
68 (*             Axiom formulation : Ground axioms. *)
69
70 (*  English  :  *)
71
72 (*  Refs     : [WO+92] Wos et al. (1992), Automated Reasoning: Introduction a *)
73
74 (*  Source   : [ANL] *)
75
76 (*  Names    :  *)
77
78 (*  Status   :  *)
79
80 (*  Syntax   : Number of clauses    :   10 (   0 non-Horn;  10 unit;  10 RR) *)
81
82 (*             Number of literals   :   10 (  10 equality) *)
83
84 (*             Maximal clause size  :    1 (   1 average) *)
85
86 (*             Number of predicates :    1 (   0 propositional; 2-2 arity) *)
87
88 (*             Number of functors   :    5 (   2 constant; 0-2 arity) *)
89
90 (*             Number of variables  :    0 (   0 singleton) *)
91
92 (*             Maximal term depth   :    2 (   2 average) *)
93
94 (*  Comments :  *)
95
96 (* -------------------------------------------------------------------------- *)
97
98 (* -------------------------------------------------------------------------- *)
99
100 (* -------------------------------------------------------------------------- *)
101
102 (* ----Problem axioms Split the middle, keeping the middle  *)
103
104 (* ----Split the middle, omitting the middle  *)
105
106 (* ----Join across the middle if it is empty, not keeping the sides  *)
107
108 (* ----Join across the middle, keeping the sides  *)
109
110 (* ----Join to middle, keeping the sides  *)
111
112 (* ----Join the two wires nearest the middle  *)
113
114 (* ----Put inverter on the middle wire  *)
115
116 (* ----Put inverter on the adjacent wires  *)
117
118 (* ----Subsumer to get rid of circuits which are the same on top and bottom  *)
119
120 (* ----Cannot construct the answer  *)
121 theorem prove_output_configuration:
122  ∀Univ:Set.∀X:Univ.∀X1:Univ.∀X2:Univ.∀X3:Univ.∀X4:Univ.∀Y:Univ.∀Y1:Univ.∀Y2:Univ.∀Y3:Univ.∀Y4:Univ.∀Z:Univ.∀Z1:Univ.∀Z2:Univ.∀Z3:Univ.∀myand:∀_:Univ.∀_:Univ.Univ.∀bottom:∀_:Univ.Univ.∀circuit:∀_:Univ.∀_:Univ.∀_:Univ.Prop.∀connect:∀_:Univ.∀_:Univ.Univ.∀middle:∀_:Univ.Univ.∀n0:Univ.∀n1:Univ.∀nil:Univ.∀not:∀_:Univ.Univ.∀or:∀_:Univ.∀_:Univ.Univ.∀table:∀_:Univ.∀_:Univ.∀_:Univ.∀_:Univ.Univ.∀top:∀_:Univ.Univ.∀H0:circuit (top (connect (table n0 n0 n1 n1) nil)) nil (bottom (connect (table n0 n1 n0 n1) nil)).∀H1:∀X:Univ.∀Y:Univ.eq Univ (connect X (connect X Y)) (connect X Y).∀H2:∀X:Univ.eq Univ (connect nil X) X.∀H3:eq Univ (table n1 n1 n1 n1) nil.∀H4:eq Univ (table n0 n0 n0 n0) nil.∀H5:eq Univ (not nil) nil.∀H6:∀X1:Univ.∀X2:Univ.∀X3:Univ.∀X4:Univ.eq Univ (not (table X1 X2 X3 X4)) (table (not X1) (not X2) (not X3) (not X4)).∀H7:∀X:Univ.eq Univ (or nil X) X.∀H8:∀X1:Univ.∀X2:Univ.∀X3:Univ.∀X4:Univ.∀Y1:Univ.∀Y2:Univ.∀Y3:Univ.∀Y4:Univ.eq Univ (or (table X1 X2 X3 X4) (table Y1 Y2 Y3 Y4)) (table (or X1 Y1) (or X2 Y2) (or X3 Y3) (or X4 Y4)).∀H9:∀X:Univ.eq Univ (myand nil X) X.∀H10:∀X1:Univ.∀X2:Univ.∀X3:Univ.∀X4:Univ.∀Y1:Univ.∀Y2:Univ.∀Y3:Univ.∀Y4:Univ.eq Univ (myand (table X1 X2 X3 X4) (table Y1 Y2 Y3 Y4)) (table (myand X1 Y1) (myand X2 Y2) (myand X3 Y3) (myand X4 Y4)).∀H11:∀X:Univ.∀Y:Univ.circuit (top X) Y (bottom X).∀H12:∀X1:Univ.∀X2:Univ.∀Z1:Univ.∀Z2:Univ.∀_:circuit (top (connect X1 X2)) nil (bottom (connect Z1 Z2)).circuit (top (connect (not X1) X2)) nil (bottom (connect (not Z1) Z2)).∀H13:∀X1:Univ.∀X2:Univ.∀Y:Univ.∀Z1:Univ.∀Z2:Univ.∀_:circuit (top (connect X1 X2)) (middle Y) (bottom (connect Z1 Z2)).circuit (top (connect (not X1) X2)) (middle Y) (bottom (connect (not Z1) Z2)).∀H14:∀X:Univ.∀Y:Univ.∀Z:Univ.∀_:circuit (top X) (middle Y) (bottom Z).circuit (top X) (middle (not Y)) (bottom Z).∀H15:∀X1:Univ.∀X2:Univ.∀X3:Univ.∀Y:Univ.∀Z1:Univ.∀Z2:Univ.∀Z3:Univ.∀_:circuit (top (connect X1 (connect X2 X3))) (middle Y) (bottom (connect Z1 (connect Z2 Z3))).circuit (top (connect (or X1 X2) X3)) (middle Y) (bottom (connect (or Z1 Z2) Z3)).∀H16:∀X1:Univ.∀X2:Univ.∀X3:Univ.∀Y:Univ.∀Z1:Univ.∀Z2:Univ.∀Z3:Univ.∀_:circuit (top (connect X1 (connect X2 X3))) (middle Y) (bottom (connect Z1 (connect Z2 Z3))).circuit (top (connect (myand X1 X2) X3)) (middle Y) (bottom (connect (myand Z1 Z2) Z3)).∀H17:∀X1:Univ.∀X2:Univ.∀Y:Univ.∀Z1:Univ.∀Z2:Univ.∀_:circuit (top (connect X1 X2)) (middle Y) (bottom (connect Z1 Z2)).circuit (top (connect (or Y X1) (connect X1 X2))) nil (bottom (connect (or Y Z1) (connect Z1 Z2))).∀H18:∀X1:Univ.∀X2:Univ.∀Y:Univ.∀Z1:Univ.∀Z2:Univ.∀_:circuit (top (connect X1 X2)) (middle Y) (bottom (connect Z1 Z2)).circuit (top (connect (myand Y X1) (connect X1 X2))) nil (bottom (connect (myand Y Z1) (connect Z1 Z2))).∀H19:∀X1:Univ.∀X2:Univ.∀Y1:Univ.∀Y2:Univ.∀_:circuit (top (connect X1 X2)) nil (bottom (connect Y1 Y2)).circuit (top (connect X1 X2)) (middle (or X1 Y1)) (bottom (connect Y1 Y2)).∀H20:∀X1:Univ.∀X2:Univ.∀Y1:Univ.∀Y2:Univ.∀_:circuit (top (connect X1 X2)) nil (bottom (connect Y1 Y2)).circuit (top (connect X1 X2)) (middle (myand X1 Y1)) (bottom (connect Y1 Y2)).∀H21:∀X1:Univ.∀X2:Univ.∀Y1:Univ.∀Y2:Univ.∀_:circuit (top (connect X1 X2)) nil (bottom (connect Y1 Y2)).circuit (top X2) (middle (or X1 Y1)) (bottom Y2).∀H22:∀X1:Univ.∀X2:Univ.∀Y1:Univ.∀Y2:Univ.∀_:circuit (top (connect X1 X2)) nil (bottom (connect Y1 Y2)).circuit (top X2) (middle (myand X1 Y1)) (bottom Y2).∀H23:∀X1:Univ.∀X2:Univ.∀Y:Univ.∀Z1:Univ.∀Z2:Univ.∀_:circuit (top (connect X1 X2)) (middle Y) (bottom (connect Z1 Z2)).circuit (top (connect (or Y X1) X2)) nil (bottom (connect (or Y Z1) Z2)).∀H24:∀X1:Univ.∀X2:Univ.∀Y:Univ.∀Z1:Univ.∀Z2:Univ.∀_:circuit (top (connect X1 X2)) (middle Y) (bottom (connect Z1 Z2)).circuit (top (connect (myand Y X1) X2)) nil (bottom (connect (myand Y Z1) Z2)).∀H25:∀X1:Univ.∀X2:Univ.∀Y:Univ.∀Z1:Univ.∀Z2:Univ.∀_:circuit (top (connect X1 X2)) (middle Y) (bottom (connect Z1 Z2)).circuit (top (connect (or Y X1) X2)) (middle Y) (bottom (connect (or Y Z1) Z2)).∀H26:∀X1:Univ.∀X2:Univ.∀Y:Univ.∀Z1:Univ.∀Z2:Univ.∀_:circuit (top (connect X1 X2)) (middle Y) (bottom (connect Z1 Z2)).circuit (top (connect (myand Y X1) X2)) (middle Y) (bottom (connect (myand Y Z1) Z2)).∀H27:eq Univ (not n1) n0.∀H28:eq Univ (not n0) n1.∀H29:eq Univ (or n1 n1) n1.∀H30:eq Univ (or n1 n0) n1.∀H31:eq Univ (or n0 n1) n1.∀H32:eq Univ (or n0 n0) n0.∀H33:eq Univ (myand n1 n1) n1.∀H34:eq Univ (myand n1 n0) n0.∀H35:eq Univ (myand n0 n1) n0.∀H36:eq Univ (myand n0 n0) n0.circuit (top (connect (table n0 n1 n0 n1) nil)) nil (bottom (connect (table n0 n0 n1 n1) nil))
123 .
124 intros.
125 autobatch depth=5 width=5 size=20 timeout=10;
126 try assumption.
127 print proofterm.
128 qed.
129
130 (* -------------------------------------------------------------------------- *)