我正在使用 Coq 的 ideslave(又名 XML 协议)。通过调用<call val="Goal"><unit/></call>
,典型的反馈看起来像
<value val="good"><option val="some"><goals><list><goal><string>239</string><list><richpp><_><pp>P : <constr.reference>ProgrammingLanguage</constr.reference></pp></_></richpp><richpp><_><pp>iP : <constr.reference>ImperativeProgrammingLanguage</constr.reference> <constr.variable>P</constr.variable></pp></_></richpp><richpp><_><pp>state : <constr.type>Type</constr.type></pp></_></richpp><richpp><_><pp>state_R : <constr.reference>Relation</constr.reference> <constr.variable>state</constr.variable></pp></_></richpp><richpp><_><pp>BSS : <constr.reference>BigStepSemantics</constr.reference> <constr.variable>P</constr.variable> <constr.variable>state</constr.variable></pp></_></richpp><richpp><_><pp>iBSS : <constr.path>Total</constr.path>.<constr.reference>ImpBigStepSemantics</constr.reference> <constr.variable>P</constr.variable> <constr.variable>state</constr.variable> <constr.variable>BSS</constr.variable></pp></_></richpp><richpp><_><pp>b : <constr.reference>bool_expr</constr.reference></pp></_></richpp><richpp><_><pp>c : <constr.reference>cmd</constr.reference></pp></_></richpp><richpp><_><pp>s1 : <constr.variable>state</constr.variable></pp></_></richpp><richpp><_><pp>ms2, ms3 : <constr.reference>MetaState</constr.reference> <constr.variable>state</constr.variable></pp></_></richpp><richpp><_><pp>H : <constr.path>Total</constr.path>.<constr.reference>eval_bool</constr.reference> <constr.variable>s1</constr.variable> <constr.variable>b</constr.variable></pp></_></richpp><richpp><_><pp>H0 : <constr.path>Total</constr.path>.<constr.reference>forward</constr.reference> (<constr.reference>Terminating</constr.reference> <constr.variable>s1</constr.variable>) <constr.variable>ms2</constr.variable></pp></_></richpp><richpp><_><pp>H1 : <constr.reference>lift_relation</constr.reference> (<constr.keyword>fun</constr.keyword> (s : <constr.variable>state</constr.variable>) (ms : <constr.reference>MetaState</constr.reference> <constr.variable>state</constr.variable>) => <constr.reference>access</constr.reference> <constr.variable>s</constr.variable> <constr.variable>c</constr.variable> <constr.variable>ms</constr.variable>)\n <constr.variable>ms2</constr.variable> <constr.variable>ms3</constr.variable></pp></_></richpp><richpp><_><pp>H2 : <constr.variable>ms3</constr.variable><constr.notation> =</constr.notation> <constr.reference>Error</constr.reference><constr.notation> \\/</constr.notation> <constr.variable>ms3</constr.variable><constr.notation> =</constr.notation> <constr.reference>NonTerminating</constr.reference></pp></_></richpp></list><richpp><_><pp><constr.path>Partial</constr.path>.<constr.reference>loop_access_fin</constr.reference>\n (<constr.keyword>fun</constr.keyword> (s : <constr.variable>state</constr.variable>) (ms : <constr.reference>MetaState</constr.reference> <constr.variable>state</constr.variable>) => <constr.reference>access</constr.reference> <constr.variable>s</constr.variable> <constr.variable>c</constr.variable> <constr.variable>ms</constr.variable>)\n (<constr.keyword>fun</constr.keyword> s : <constr.variable>state</constr.variable> => <constr.path>Total</constr.path>.<constr.reference>eval_bool</constr.reference> <constr.variable>s</constr.variable> <constr.variable>b</constr.variable>) <constr.variable>s1</constr.variable> <constr.variable>ms3</constr.variable></pp></_></richpp></goal></list><list><pair><list/><list><goal><string>250</string><list><richpp><_><pp>P : <constr.reference>ProgrammingLanguage</constr.reference></pp></_></richpp><richpp><_><pp>iP : <constr.reference>ImperativeProgrammingLanguage</constr.reference> <constr.variable>P</constr.variable></pp></_></richpp><richpp><_><pp>state : <constr.type>Type</constr.type></pp></_></richpp><richpp><_><pp>state_R : <constr.reference>Relation</constr.reference> <constr.variable>state</constr.variable></pp></_></richpp><richpp><_><pp>BSS : <constr.reference>BigStepSemantics</constr.reference> <constr.variable>P</constr.variable> <constr.variable>state</constr.variable></pp></_></richpp><richpp><_><pp>iBSS : <constr.path>Total</constr.path>.<constr.reference>ImpBigStepSemantics</constr.reference> <constr.variable>P</constr.variable> <constr.variable>state</constr.variable> <constr.variable>BSS</constr.variable></pp></_></richpp><richpp><_><pp>b : <constr.reference>bool_expr</constr.reference></pp></_></richpp><richpp><_><pp>c : <constr.reference>cmd</constr.reference></pp></_></richpp><richpp><_><pp>s1, s2, s3, s4 : <constr.variable>state</constr.variable></pp></_></richpp><richpp><_><pp>ms : <constr.reference>MetaState</constr.reference> <constr.variable>state</constr.variable></pp></_></richpp><richpp><_><pp>H : <constr.path>Total</constr.path>.<constr.reference>eval_bool</constr.reference> <constr.variable>s1</constr.variable> <constr.variable>b</constr.variable></pp></_></richpp><richpp><_><pp>H0 : <constr.variable>s1</constr.variable><constr.notation> <=</constr.notation> <constr.variable>s2</constr.variable></pp></_></richpp><richpp><_><pp>H1 : <constr.reference>access</constr.reference> <constr.variable>s2</constr.variable> <constr.variable>c</constr.variable> (<constr.reference>Terminating</constr.reference> <constr.variable>s3</constr.variable>)</pp></_></richpp><richpp><_><pp>H2 : <constr.variable>s3</constr.variable><constr.notation> <=</constr.notation> <constr.variable>s4</constr.variable></pp></_></richpp><richpp><_><pp>H3 : <constr.path>Total</constr.path>.<constr.reference>loop_access_fin</constr.reference>\n (<constr.keyword>fun</constr.keyword> (s : <constr.variable>state</constr.variable>) (ms : <constr.reference>MetaState</constr.reference> <constr.variable>state</constr.variable>) => <constr.reference>access</constr.reference> <constr.variable>s</constr.variable> <constr.variable>c</constr.variable> <constr.variable>ms</constr.variable>)\n (<constr.keyword>fun</constr.keyword> s : <constr.variable>state</constr.variable> => <constr.path>Total</constr.path>.<constr.reference>eval_bool</constr.reference> <constr.variable>s</constr.variable> <constr.variable>b</constr.variable>) <constr.variable>s4</constr.variable> <constr.variable>ms</constr.variable></pp></_></richpp><richpp><_><pp>IHloop_access_fin : <constr.path>Partial</constr.path>.<constr.reference>loop_access_fin</constr.reference>\n (<constr.keyword>fun</constr.keyword> (s : <constr.variable>state</constr.variable>) (ms : <constr.reference>MetaState</constr.reference> <constr.variable>state</constr.variable>) =>\n <constr.reference>access</constr.reference> <constr.variable>s</constr.variable> <constr.variable>c</constr.variable> <constr.variable>ms</constr.variable>) (<constr.keyword>fun</constr.keyword> s : <constr.variable>state</constr.variable> => <constr.path>Total</constr.path>.<constr.reference>eval_bool</constr.reference> <constr.variable>s</constr.variable> <constr.variable>b</constr.variable>)\n <constr.variable>s4</constr.variable> <constr.variable>ms</constr.variable></pp></_></richpp></list><richpp><_><pp><constr.path>Partial</constr.path>.<constr.reference>loop_access_fin</constr.reference>\n (<constr.keyword>fun</constr.keyword> (s : <constr.variable>state</constr.variable>) (ms0 : <constr.reference>MetaState</constr.reference> <constr.variable>state</constr.variable>) => <constr.reference>access</constr.reference> <constr.variable>s</constr.variable> <constr.variable>c</constr.variable> <constr.variable>ms0</constr.variable>)\n (<constr.keyword>fun</constr.keyword> s : <constr.variable>state</constr.variable> => <constr.path>Total</constr.path>.<constr.reference>eval_bool</constr.reference> <constr.variable>s</constr.variable> <constr.variable>b</constr.variable>) <constr.variable>s1</constr.variable> <constr.variable>ms</constr.variable></pp></_></richpp></goal></list></pair><pair><list/><list><goal><string>212</string><list><richpp><_><pp>P : <constr.reference>ProgrammingLanguage</constr.reference></pp></_></richpp><richpp><_><pp>iP : <constr.reference>ImperativeProgrammingLanguage</constr.reference> <constr.variable>P</constr.variable></pp></_></richpp><richpp><_><pp>state : <constr.type>Type</constr.type></pp></_></richpp><richpp><_><pp>state_R : <constr.reference>Relation</constr.reference> <constr.variable>state</constr.variable></pp></_></richpp><richpp><_><pp>BSS : <constr.reference>BigStepSemantics</constr.reference> <constr.variable>P</constr.variable> <constr.variable>state</constr.variable></pp></_></richpp><richpp><_><pp>iBSS : <constr.path>Total</constr.path>.<constr.reference>ImpBigStepSemantics</constr.reference> <constr.variable>P</constr.variable> <constr.variable>state</constr.variable> <constr.variable>BSS</constr.variable></pp></_></richpp><richpp><_><pp>b : <constr.reference>bool_expr</constr.reference></pp></_></richpp><richpp><_><pp>c : <constr.reference>cmd</constr.reference></pp></_></richpp><richpp><_><pp>s : <constr.variable>state</constr.variable></pp></_></richpp><richpp><_><pp>ms : <constr.reference>MetaState</constr.reference> <constr.variable>state</constr.variable></pp></_></richpp><richpp><_><pp>H : <constr.reference>access</constr.reference> <constr.variable>s</constr.variable> (<constr.reference>Swhile</constr.reference> <constr.variable>b</constr.variable> <constr.variable>c</constr.variable>) <constr.variable>ms</constr.variable></pp></_></richpp><richpp><_><pp>H0 : <constr.path>Total</constr.path>.<constr.reference>loop_access_inf</constr.reference>\n (<constr.keyword>fun</constr.keyword> (s : <constr.variable>state</constr.variable>) (ms : <constr.reference>MetaState</constr.reference> <constr.variable>state</constr.variable>) => <constr.reference>access</constr.reference> <constr.variable>s</constr.variable> <constr.variable>c</constr.variable> <constr.variable>ms</constr.variable>)\n (<constr.keyword>fun</constr.keyword> s : <constr.variable>state</constr.variable> => <constr.path>Total</constr.path>.<constr.reference>eval_bool</constr.reference> <constr.variable>s</constr.variable> <constr.variable>b</constr.variable>) <constr.variable>s</constr.variable></pp></_></richpp><richpp><_><pp>H1 : <constr.variable>ms</constr.variable><constr.notation> =</constr.notation> <constr.reference>NonTerminating</constr.reference></pp></_></richpp></list><richpp><_><pp><constr.path>Partial</constr.path>.<constr.reference>loop_access_fin</constr.reference>\n (<constr.keyword>fun</constr.keyword> (s0 : <constr.variable>state</constr.variable>) (ms0 : <constr.reference>MetaState</constr.reference> <constr.variable>state</constr.variable>) => <constr.reference>access</constr.reference> <constr.variable>s0</constr.variable> <constr.variable>c</constr.variable> <constr.variable>ms0</constr.variable>)\n (<constr.keyword>fun</constr.keyword> s0 : <constr.variable>state</constr.variable> => <constr.path>Total</constr.path>.<constr.reference>eval_bool</constr.reference> <constr.variable>s0</constr.variable> <constr.variable>b</constr.variable>) <constr.variable>s</constr.variable> <constr.variable>ms</constr.variable><constr.notation> \\/</constr.notation>\n<constr.path>Partial</constr.path>.<constr.reference>loop_access_inf</constr.reference>\n (<constr.keyword>fun</constr.keyword> (s0 : <constr.variable>state</constr.variable>) (ms0 : <constr.reference>MetaState</constr.reference> <constr.variable>state</constr.variable>) => <constr.reference>access</constr.reference> <constr.variable>s0</constr.variable> <constr.variable>c</constr.variable> <constr.variable>ms0</constr.variable>)\n (<constr.keyword>fun</constr.keyword> s0 : <constr.variable>state</constr.variable> => <constr.path>Total</constr.path>.<constr.reference>eval_bool</constr.reference> <constr.variable>s0</constr.variable> <constr.variable>b</constr.variable>) <constr.variable>s</constr.variable><constr.notation> /\\</constr.notation> <constr.variable>ms</constr.variable><constr.notation> =</constr.notation> <constr.reference>NonTerminating</constr.reference></pp></_></richpp></goal></list></pair><pair><list/><list/></pair></list><list/><list/></goals></option></value>
如您所见(如您所知),“目标”标签下有四个列表。Coq 文档给了它们四个名称(当前目标、背景目标、搁置目标和废弃目标)。
我的问题:
后三个目标类别是什么:背景目标、搁置目标和废弃目标?我找不到关于“搁置”和“放弃”目标的文档。
三者在哪些方面有所不同?他们的名字很相似。
为什么我们要
pair
在背景下列出目标(即第二个列表),然后在 下再次列出,pair
然后才是实际目标?pair
第一个和第二个下的背景目标之间有区别pair
吗?
感谢您的帮助!