demo_basic_theorem.htm
来自「Delphi脚本控件」· HTM 代码 · 共 551 行 · 第 1/3 页
HTM
551 行
<font color="blue"><b>If</b></font> R.length = 1 <font color="blue"><b>Then</b></font>
<font color="blue"><b>If</b></font> R.Sign(0) = <font color="Red">"+"</font> <font color="blue"><b>Then</b></font>
S = S1
P = POS
<font color="blue"><b>Else</b></font>
S = S2
P = NEG
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>If</b></font> (<font color="blue"><b>Not</b></font> STest(S, R)) <font color="blue"><b>And</b></font> (<font color="blue"><b>Not</b></font> STest(P, R)) <font color="blue"><b>Then</b></font>
P.Add(R)
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Else</b></font>
Stack.Push(R)
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Next</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Next</b></font>
<font color="blue"><b>Loop</b></font> <font color="blue"><b>Until</b></font> Stack.Count = 0
result = Contradict(A, S1, NEG)
<font color="blue"><b>If</b></font> <font color="blue"><b>Not</b></font> result <font color="blue"><b>Then</b></font>
result = Contradict(A, S2, POS)
<font color="blue"><b>If</b></font> <font color="blue"><b>Not</b></font> result <font color="blue"><b>Then</b></font>
S1.AddClauses(POS)
S2.AddClauses(NEG)
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Finally</b></font>
POS.Dispose()
NEG.Dispose()
Stack.Free()
<font color="blue"><b>Return</b></font> result
<font color="blue"><b>End</b></font> <font color="blue"><b>Try</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Function</b></font> TRU(A <font color="blue"><b>As</b></font> TClauseList, SupportSet <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>, TryNumber <font color="blue"><b>As</b></font> <font color="blue"><b>Integer</b></font>) <font color="blue"><b>As</b></font> <font color="blue"><b>Boolean</b></font>
<font color="blue"><b>Dim</b></font> S, S1, S2, S3 <font color="blue"><b>As</b></font> TClauseList
<font color="blue"><b>Dim</b></font> I, J, K, L, N <font color="blue"><b>AS</b></font> <font color="blue"><b>Integer</b></font>
<font color="blue"><b>Dim</b></font> W <font color="blue"><b>As</b></font> TList
<font color="blue"><b>Dim</b></font> C <font color="blue"><b>As</b></font> TClause
S1 = <font color="blue"><b>New</b></font> TClauseList()
S2 = <font color="blue"><b>New</b></font> TClauseList()
S3 = <font color="blue"><b>New</b></font> TClauseList()
W = <font color="blue"><b>New</b></font> TList()
<font color="blue"><b>Try</b></font>
<font color="blue"><b>For</b></font> I=0 <font color="blue"><b>to</b></font> A.Count - 1
C = A(I)
<font color="blue"><b>If</b></font> C.length = 1 <font color="blue"><b>Then</b></font>
<font color="blue"><b>If</b></font> C.Sign(0) = <font color="Red">"+"</font> <font color="blue"><b>Then</b></font>
S1.Add(C)
<font color="blue"><b>Else</b></font>
S2.Add(C)
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Else</b></font>
S3.Add(C)
<font color="blue"><b>If</b></font> SupportSet(I) <> <font color="blue"><b>NULL</b></font> <font color="blue"><b>Then</b></font>
S = <font color="blue"><b>New</b></font> TClauseList()
<font color="blue"><b>For</b></font> J=0 <font color="blue"><b>To</b></font> SupportSet(I).length - 1
C = SupportSet(I)(J)
S.Add(C)
<font color="blue"><b>Next</b></font>
W.Add(S)
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Next</b></font>
<font color="blue"><b>If</b></font> Contradict(A, S1, S2) <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> true
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
K = 0
<font color="blue"><b>For</b></font> I=0 <font color="blue"><b>to</b></font> TryNumber - 1
N = A.Count()
<font color="blue"><b>If</b></font> GUnit(A, S1, S2, W[K], S3[K]) <font color="blue"><b>Then</b></font>
<font color="blue"><b>Return</b></font> true
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>If</b></font> A.Count > N <font color="blue"><b>Then</b></font>
<font color="blue"><b>For</b></font> J=0 <font color="blue"><b>To</b></font> S3.Count - 1
<font color="blue"><b>If</b></font> J = K <font color="blue"><b>Then</b></font>
W(J).Clear
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>For</b></font> L=N <font color="blue"><b>To</b></font> A.Count - 1
<font color="blue"><b>If</b></font> A(L).length = 1 <font color="blue"><b>Then</b></font>
W(J).Add(A(L))
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Next</b></font>
<font color="blue"><b>Next</b></font>
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
K = K + 1
<font color="blue"><b>If</b></font> K = S3.Count <font color="blue"><b>Then</b></font>
K = 0
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Next</b></font>
<font color="blue"><b>Finally</b></font>
S1.Dispose()
S2.Dispose()
S3.Dispose()
<font color="blue"><b>End</b></font> <font color="blue"><b>Try</b></font>
<font color="blue"><b>Return</b></font> false
<font color="blue"><b>End</b></font> <font color="blue"><b>Function</b></font>
<font color="blue"><b>Dim</b></font> A = <font color="Red">"A"</font>
<font color="blue"><b>Dim</b></font> D = <font color="Red">"D"</font>
<font color="blue"><b>Dim</b></font> F = <font color="Red">"F"</font>
<font color="blue"><b>Dim</b></font> H = <font color="Red">"H"</font>
<font color="blue"><b>Dim</b></font> L = <font color="Red">"L"</font>
<font color="blue"><b>Dim</b></font> P = <font color="Red">"P"</font>
<font color="blue"><b>Dim</b></font> X = <font color="Red">"X"</font>
<font color="blue"><b>Dim</b></font> Y = <font color="Red">"Y"</font>
<font color="blue"><b>Dim</b></font> I, N <font color="blue"><b>As</b></font> <font color="blue"><b>Integer</b></font>
<font color="blue"><b>Dim</b></font> Clauses <font color="blue"><b>As</b></font> TClauseList
<font color="blue"><b>Dim</b></font> SupportSet <font color="blue"><b>As</b></font> TList
<font color="blue"><b>Sub</b></font> AddClause(E <font color="blue"><b>As</b></font> <font color="blue"><b>Variant</b></font>)
Clauses.Add(<font color="blue"><b>New</b></font> TClause(E))
<font color="blue"><b>End</b></font> <font color="blue"><b>Sub</b></font>
Num = 0
Clauses = <font color="blue"><b>New</b></font> TClauseList()
SupportSet = <font color="blue"><b>New</b></font> TList()
AddClause([[<font color="Red">"+"</font>,L,X,[F,X]] ])
AddClause([[<font color="Red">"-"</font>,L,X,X] ])
AddClause([[<font color="Red">"-"</font>,L,X,Y],[<font color="Red">"-"</font>,L,Y,X] ])
AddClause([[<font color="Red">"-"</font>,D,X,[F,Y]],[<font color="Red">"+"</font>,L,Y,X] ])
AddClause([[<font color="Red">"+"</font>,P,X],[<font color="Red">"+"</font>,D,[H,X],X] ])
AddClause([[<font color="Red">"+"</font>,P,X],[<font color="Red">"+"</font>,P,[H,X]] ])
AddClause([[<font color="Red">"+"</font>,P,X],[<font color="Red">"+"</font>,L,[H,X],X] ])
AddClause([[<font color="Red">"-"</font>,P,X],[<font color="Red">"-"</font>,L,A,X],[<font color="Red">"+"</font>,L,[F,A],X]])
<font color="blue"><b>For</b></font> I=0 <font color="blue"><b>To</b></font> Clauses.Count - 1
<font color="blue"><b>If</b></font> I >= 2 <font color="blue"><b>Then</b></font>
SupportSet.Add([Clauses(0), Clauses(1)])
<font color="blue"><b>Else</b></font>
SupportSet.Add(<font color="blue"><b>NULL</b></font>)
<font color="blue"><b>End</b></font> <font color="blue"><b>If</b></font>
<font color="blue"><b>Next</b></font>
<font color="blue"><b>println</b></font> <font color="Red">"Source clauses:"</font>
Clauses.Dump()
<font color="blue"><b>println</b></font> <font color="Red">"-------------------------------"</font>
<font color="blue"><b>println</b></font> <font color="Red">"Theorem proving"</font>
<font color="blue"><b>println</b></font> <font color="Red">"Unit binary resolution"</font>
<font color="blue"><b>println</b></font> <font color="Red">"-------------------------------"</font>
<font color="blue"><b>println</b></font> <font color="Red">"Theorem :"</font>
<font color="blue"><b>println</b></font> <font color="Red">"The set of prime numbers is infinite"</font>
N = Clauses.Count()
TRU(Clauses, SupportSet, 20)
Clauses.Output(N)
<font color="blue"><b>For</b></font> I=0 <font color="blue"><b>To</b></font> Clauses.Count - 1
Clauses(I).Free
<font color="blue"><b>Next</b></font>
Clauses.Dispose
SupportSet.Free
</pre>
</blockquote>
<p>
<HR>
<font size = 1 color ="gray">
Copyright © 1999-2005
VIRT Laboratory. All rights reserved.
</font>
</body>
</html>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?