File: syntax.sos
[Reduce File] [Raw File]
Module unsat_proofs:frat
Builds on unsat_proofs:lrat
fratProof ::= addOriginal(int, clause, fratProof)
| endOriginal(proof)
Projection fratProof :
proof ::= ...
| endFrat(int, finalClauses)
| endFratPrf(int, [int], finalClauses)
| addProofless(int, clause, proof)
| relocateClause(int, int, proof)
| deleteFrat(int, clause, proof)
| commentProof(string, proof)
rupProof Known emptyClause Prf
------------------------------------------------------ [Proj-EndFrat]
Known |{proof}- endFrat(ID, FC) ~~> emptyLrat(ID, Prf)
------------------------------------------- [Proj-EndFratPrf]
Known |{proof}- endFratPrf(ID, Prf, FC) ~~>
emptyLrat(ID, Prf)
rupProof Known C Prf
---------------------------------------------- [Proj-AddProofless]
Known |{proof}- addProofless(ID, C, Rest) ~~>
addLrupProof(ID, C, Prf, Rest)
T != F
mem (F, C) Known
---------------------------------------------- [Proj-RelocateProof]
Known |{proof}- relocateClause(F, T, Rest) ~~>
addLrupProof(T, C, [F],
deleteLratProof(F, Rest))
----------------------------------------------------- [Proj-RelocateProofSame]
Known |{proof}- relocateClause(ID, ID, Rest) ~~> Rest
--------------------------------------- [Proj-DeleteFrat]
K |{proof}- deleteFrat(ID, C, Rest) ~~>
deleteLratProof(ID, Rest)
------------------------------------------------ [Proj-CommentProof]
K |{proof}- commentProof(Comment, Rest) ~~> Rest
finalClauses ::= addFClause(int, clause, finalClauses)
| endFClause
Projection finalClauses :
File: check.sos
[Reduce File] [Raw File]
Module unsat_proofs:frat
Fixed Judgment fratProveFormula : formula fratProof
formulaToKnown 1 F KnownClauses
checkFratProof KnownClauses [] Prf
================================== [FratProveFormula]
fratProveFormula F Prf
Judgment checkFratProof : [(int, clause)] [(int, clause)] fratProof*
select (ID, C) CRest Clauses
checkFratProof CRest (ID, C)::Known Rest
----------------------------------------------------- [CFP-AddOriginal]
checkFratProof Clauses Known addOriginal(ID, C, Rest)
checkProof Known Prf
--------------------------------------------- [CFP-EndOriginal]
checkFratProof Clauses Known endOriginal(Prf)
remove_all Known ID KRest
rupProof Known emptyClause Prf
checkFinalClauses (ID, emptyClause)::KRest Final
------------------------------------------------ [CP-EndFrat]
checkProof Known endFrat(ID, Final)
remove_all Known ID KRest
rupProof Known emptyClause Prf
checkFinalClauses (ID, emptyClause)::KRest Final
------------------------------------------------ [CP-EndFratPrf]
checkProof Known endFratPrf(ID, Prf, Final)
remove_all Known ID KRest
rupProof Known C Prf
checkProof (ID, C)::KRest Rest
------------------------------------------ [CP-AddProofless]
checkProof Known addProofless(ID, C, Rest)
To != From
remove_all Known To KRest
select (From, C) KRest2 KRest
checkProof (To, C)::KRest2 Rest
----------------------------------------------- [CP-RelocateClause]
checkProof Known relocateClause(From, To, Rest)
select (ID, C) KRest Known
checkProof KRest Rest
---------------------------------------- [CP-DeleteFrat]
checkProof Known deleteFrat(ID, C, Rest)
checkProof Known Rest
-------------------------------------------- [CP-CommentProof]
checkProof Known commentProof(Comment, Rest)
Judgment checkFinalClauses : [(int, clause)] finalClauses*
select (ID, C) KRest Known
checkFinalClauses KRest Rest
----------------------------------------------- [CFC-AddFClause]
checkFinalClauses Known addFClause(ID, C, Rest)
------------------------------- [CFC-EndOriginal]
checkFinalClauses [] endFClause
File: elaboration.sos
[Reduce File] [Raw File]
Module unsat_proofs:frat
clauseUsedness ::= needed | unknown
Projection clauseUsedness :
Judgment elaborate : {[(int, clause)] proof* [(int, clauseUsedness)]
proof}
endKnownClauses FC Needed
select (ID, needed) NRest Needed
rupProof Known emptyClause Prf
makeUsed NRest Prf Updated
---------------------------------------- [Ela-EndFrat]
{elaborate Known endFrat(ID, FC) Updated
emptyLrat(ID, Prf)}
endKnownClauses FC Needed
select (ID, needed) NRest Needed
makeUsed NRest Prf Updated
------------------------------------------------ [Ela-EndFratPrf]
{elaborate Known endFratPrf(ID, Prf, FC) Updated
emptyLrat(ID, Prf)}
select (ID, C) KRest Known
elaborate KRest Rest Needed ERest
----------------------------------------- [Ela-DeleteFrat]
{elaborate Known deleteFrat(ID, C, Rest)
(ID, unknown)::Needed ERest}
select (ID, C) KRest Known
elaborate KRest Rest Needed ERest
------------------------------------------ [Ela-DeleteLratProof]
{elaborate Known deleteLratProof(ID, Rest)
(ID, unknown)::Needed ERest}
remove_all Known ID KRest
elaborate (ID, C)::KRest Rest Needed ERest
select (ID, needed) NRest Needed
makeUsed NRest Prf Updated
--------------------------------------------- [Ela-AddLrupProofNeeded]
{elaborate Known
addLrupProof(ID, C, Prf, Rest)
Updated addLrupProof(ID, C, Prf, ERest)}
remove_all Known ID KRest
elaborate (ID, C)::KRest Rest Needed ERest
select (ID, unknown) NRest Needed
------------------------------------------ [Ela-AddLrupProofUnknown]
{elaborate Known
addLrupProof(ID, C, Prf, Rest)
NRest ERest}
remove_all Known ID KRest
elaborate (ID, C)::KRest Rest Needed ERest
select (ID, needed) NRest Needed
rupProof Known C Prf
makeUsed NRest Prf Updated
-------------------------------------------- [Ela-AddProoflessNeeded]
{elaborate Known addProofless(ID, C, Rest)
Updated addLrupProof(ID, C, Prf, ERest)}
remove_all Known ID KRest
elaborate (ID, C)::KRest Rest Needed ERest
select (ID, unknown) NRest Needed
------------------------------------------ [Ela-AddProoflessUnknown]
{elaborate Known addProofless(ID, C, Rest)
NRest ERest}
select (From, C) KRest Known
elaborate (To, C)::KRest Rest Needed ERest
select (To, needed) NRest Needed
----------------------------------------------- [Ela-RelocateNeeded]
{elaborate Known relocateClause(From, To, Rest)
(From, needed)::NRest
relocateClause(From, To, ERest)}
select (From, C) KRest Known
elaborate (To, C)::KRest Rest Needed ERest
select (To, unknown) NRest Needed
----------------------------------------------- [Ela-RelocateUnknown]
{elaborate Known relocateClause(From, To, Rest)
(From, unknown)::NRest ERest}
elaborate Known Rest Needed ERest
-------------------------------------------------------- [Ela-Comment]
elaborate Known commentProof(Comment, Rest) Needed ERest
Known |{proof}- P ~~> PT
elaborate Known PT Needed EP
---------------------------- [Ela-D]*
elaborate Known P Needed EP
Judgment endKnownClauses : finalClauses* [(int, clauseUsedness)]
----------------------------- [EKC-End]
endKnownClauses endFClause []
isEmpty C
endKnownClauses Rest KRest
---------------------------------------- [EKC-AddEmpty]
{endKnownClauses addFClause(ID, C, Rest)
(ID, needed)::KRest}
!isEmpty C
endKnownClauses Rest KRest
----------------------------------------- [EKC-AddNonEmpty]
{endKnownClauses addFClause(ID, C, Rest)
(ID, unknown)::KRest}
Judgment isEmpty : clause*
------------------- [IsEmpty-EmptyClause]
isEmpty emptyClause
|{clause}- C ~~> CT
isEmpty CT
------------------- [IsEmpty-D]*
isEmpty C
Fixed Judgment makeUsed : {[(int, clauseUsedness)] [int]
[(int, clauseUsedness)]}
======================= [MU-Nil]
makeUsed Known [] Known
select (ID, needed) KRest Known
makeUsed KRest Rest KOut
========================================== [MU-ConsNeeded]
makeUsed Known ID::Rest (ID, needed)::KOut
select (ID, unknown) KRest Known
makeUsed KRest Rest KOut
========================================== [MU-ConsUnknown]
makeUsed Known ID::Rest (ID, needed)::KOut
Fixed Judgment addDeletes : [int] proof proof
================= [AD-Nil]
addDeletes [] P P
addDeletes Rest P PRest
================================================ [AD-Cons]
addDeletes ID::Rest P deleteLratProof(ID, PRest)