Case Demonstrations: Framework vs Court¶
Each case shows three sections:
- Identity — persons and acts mapped to Haskell values
- Fact Translation — case law facts mapped to framework encodings
- Judgment Comparison — actual court holding vs framework output
Generated by python3 scripts/assemble-cases.py after python3 scripts/generate-cases.py.
The framework output is purely mechanical — once facts are mapped, no human judgment is involved.
Pipeline Summary¶
Recognized facts (natural language)
│
│ ← Human/LLM judgment (the only non-mechanical step)
▼
Identity + Fact Translation (tables above)
│
│ ← Purely mechanical (evaluateAll + renderJudgment)
▼
Framework output (right column above)
│
│ ← LLM subagent (fixed directive, zero context)
▼
Match verification (match.yaml)
Case 1: 미성년자의 신용구매 (대법원 2005다71659)¶
판정: ⚠ 부분 일치 — 최종 결론(유효)과 근거 조문(제5조)은 일치하나, 판례의 핵심 논증인 묵시적 동의·처분허락 법리(§6)와 신의칙(§2) 항변 배척 논의를 프레임워크가 전혀 다루지 못하고 있다. 프레임워크는 제5조 제1항만 인용하며 단순히 '유효'라고 결론짓고 있어, 동의 존부에 대한 판단 과정이 누락되어 있다.
Identity¶
| ID | 역할 | Haskell |
|---|---|---|
minor |
미성년자 (만 19세, 신용구매계약 체결자) | PersonId "minor" |
guardian |
법정대리인 | PersonId "guardian" |
merchant |
신용카드 가맹점 (상대방) | PersonId "merchant" |
contract |
신용구매계약 | ActId "contract" |
Fact Translation¶
- 계약 체결자는 미성년자이다
- 미성년자에게 법정대리인이 있다
- 법정대리인의 묵시적 처분허락이 소득 범위 내에서 인정됨
IsMinor minorHasGuardian minor guardianHasConsent guardian contract
Judgment Comparison¶
주문¶
상고를 기각한다. 상고비용은 원고가 부담한다.
판결요지¶
[1] 법정대리인의 동의 없이 신용구매계약을 체결한 미성년자가 그 동의 없음을 이유로 위 계약을 취소하는 것이 신의칙에 위배되지 않음
[2] 미성년자의 법률행위에 대한 법정대리인의 동의는 묵시적으로도 가능함
[3] 미성년자의 법률행위에 있어서 법정대리인의 묵시적 동의나 처분허락의 인정 여부를 판단할 때, "미성년자의 연령·지능·직업·경력, 법정대리인과의 동거 여부, 독자적인 소득의 유무와 그 금액, 경제활동의 여부, 계약의 성질·체결경위·내용, 기타 제반 사정을 종합적으로 고려"하여야 하며, 신용카드 구매와 현금구매를 달리 볼 필요 없음
[4] 만 19세 이상 미성년자가 월 소득범위 내에서 신용구매계약을 체결한 경우, 스스로 얻은 소득에 대하여는 법정대리인의 묵시적 처분허락이 있었다고 봄
이유¶
"행위무능력자 제도는 사적자치의 원칙이라는 민법의 기본이념, 특히 자기책임 원칙의 구현을 가능케 하는 도구로서 인정되는 것이고, 거래의 안전을 희생시키더라도 행위무능력자를 보호하고자 함에 근본적인 입법취지가 있는 것인바"에 비추어, ... 미성년자가 이러한 신뢰에 반하여 취소권을 행사하는 것이 정의관념에 비추어 용인될 수 없는 정도라고 보기 어려움. ... 그러나 "미성년자가 법률행위를 함에 있어서 요구되는 법정대리인의 동의는 언제나 명시적이어야 하는 것은 아니고 묵시적으로도 가능한 것이며", ... 원고는 1982년 8월 26일생으로 사건 당시 만 19세 2개월 내지 4개월의 성년에 거의 근접한 나이였고, 월 60만 원 이상의 소득을 얻고 있었으며, ... 원고가 스스로 얻은 소득에 대하여는 법정대리인의 묵시적 처분허락이 있었다고 봄.
Case 2: 통정허위표시 — 선의 제3자 심리 미진 (대법원 94다12074)¶
판정: ⚠ 부분 일치 — 프레임워크는 §108①(통정허위표시 무효)과 §108②(선의의 제3자 보호)를 정확히 적용하여 법률행위를 유효로 판단하였고, 이는 대법원이 설시한 법리(선의의 제3자에 대해서는 허위표시도 표시된 대로 효력이 있다)와 일치한다. 다만 대법원은 피고들이 실제로 선의인지 여부에 대한 사실심리가 필요하다고 보아 파기환송한 반면, 프레임워크는 선의를 전제로 곧바로 유효라고 결론내려 사실인정의 조건부 판단이 누락되어 있다.
Identity¶
| ID | 역할 | Haskell |
|---|---|---|
corp |
소외 회사 (태영공영, 부동산 원소유자) | PersonId "corp" |
sooe1 |
소외 1 (허위 가등기 명의인) | PersonId "sooe1" |
defendants |
피고들 (소외 2로부터 양수한 자, 선의 여부 미심리) | PersonId "defendants" |
sham-act |
소외 회사-소외 1 간 허위 매매예약 | ActId "sham-reservation" |
Fact Translation¶
- 소외 회사와 소외 1 간 매매예약은 통정허위표시이다
- 소외 1은 허위임을 알고 있었다
- 피고들의 선의 여부는 미심리 (환송 사유)
HiddenIntentionCounterpartyKnewBonaFideThirdParty 여부 미확인
Judgment Comparison¶
주문¶
원심판결을 파기하고 사건을 서울고등법원에 환송한다.
판결요지¶
[1] 상대방과 통정한 허위의 의사표시는 무효이나, "허위표시에 의하여 외형상 형성된 법률관계를 토대로 실질적으로 새로운 법률상 이해관계를 맺은 선의의 제3자에 대하여는 허위표시의 당사자뿐만 아니라 그 누구도 허위표시의 무효를 대항하지 못"한다.
[2] 통정한 허위의 가등기 및 본등기로 인하여 원고의 소유권이전등기가 말소된 후, 다시 그 본등기에 기하여 피고가 부동산을 양수하여 소유권이전등기를 마친 경우, 피고가 선의의 제3자라면 원고는 허위표시의 무효를 주장할 수 없다.
이유¶
원심판결이 선의의 제3자에 대한 허위표시의 효력에 관한 법리를 오해하고 심리를 미진하여 판결에 영향을 미친 위법이 있다. 따라서 원심판결을 파기하고 사건을 환송한다.
Case 3: 통정허위표시 — 제3자 지위 부정 (대법원 2019다280375)¶
판정: ❌ 불일치 — 프레임워크는 제108조 제2항을 기계적으로 적용하여 선의의 제3자 보호에 의해 유효라고 판단하였으나, 대법원은 후속 등기권리자들이 허위의 가등기 자체가 아닌 원인무효의 본등기를 신뢰 기반으로 삼았으므로 제108조 제2항의 제3자에 해당하지 않는다고 판시하여 무효라고 결론지었다. 프레임워크의 결론(유효)과 법원의 결론(무효)이 정면으로 모순된다.
Identity¶
| ID | 역할 | Haskell |
|---|---|---|
gap |
갑 (부동산 소유자) | PersonId "gap" |
eul |
을 (허위 가등기 수령자) | PersonId "eul" |
mu |
무 (최종 매수인, 제3자 해당 여부 쟁점) | PersonId "mu" |
sham-act |
갑-을 간 허위 매매예약 | ActId "sham-reservation" |
Fact Translation¶
- 갑과 을의 매매예약은 통정한 허위의 의사표시이다
- 을은 허위 의사표시임을 알고 있었다 (통정)
- 무는 선의의 제3자에 해당하지 않는다 (법원 판단)
HiddenIntentionCounterpartyKnewBonaFideThirdParty 부재
Judgment Comparison¶
주문¶
원심판결을 파기하고, 사건을 서울동부지방법원 합의부에 환송한다.
판결요지¶
[1] 상대방과 통정한 허위의 의사표시는 무효이며, 이러한 무효를 선의의 제3자에게 대항하지 못하게 한 취지는 "이를 기초로 하여 별개의 법률원인에 의하여 고유한 법률상의 이익을 갖는 법률관계에 들어간 자를 보호"하기 위한 것. 제3자의 범위는 형식적이 아닌 "실질적으로 새로운 법률상 이해관계를 맺었는지 여부에 따라" 판단해야 함.
[2] 가등기의 명의인이 통정한 허위의 의사표시가 철회된 후 일방적으로 마친 본등기는 "원인무효의 등기"이며, 부동산등기에 공신력이 없는 우리 법제하에서는 특별한 사정이 없는 한 무효. ... 후순위 등기인들은 "허위 가등기 자체를 기초로 하여 새로운 법률상 이해관계를 맺은 제3자"로 볼 수 없음.
이유¶
소외 1 명의의 본등기는 "통정한 허위의 의사표시 자체에 기한 것이 아니라, 이러한 통정한 허위의 의사표시가 철회된 이후에" 마쳐진 등기. 가등기의 설정행위와 본등기의 설정행위는 "엄연히 구분"되므로, 후순위 등기인들의 신뢰 대상은 가등기가 아닌 본등기에 불과함. 따라서 이들이 "허위 가등기 자체를 기초로 하여 새로운 법률상 이해관계를 맺은 제3자"로 볼 수 없다.
Case 4: 착오 + 중대한 과실 + 상대방 이용 (대법원 2013다49794)¶
판정: ⚠ 부분 일치 — 프레임워크와 판결 모두 민법 제109조를 적용하여 착오에 의한 의사표시의 취소 문제를 다루고 있으나, 프레임워크는 중대한 과실 시 취소 불가라는 원칙만 적용하여 '유효'로 결론을 내렸다. 반면 대법원은 상대방이 착오를 알고 이용한 경우 중과실이 있더라도 취소가 가능하다는 예외 법리를 제시하여, 프레임워크가 포착하지 못한 핵심 예외가 존재한다.
Identity¶
| ID | 역할 | Haskell |
|---|---|---|
declarant |
표의자 (착오로 의사표시를 한 자) | PersonId "declarant" |
counterparty |
상대방 (착오를 알고 이용한 자) | PersonId "counterparty" |
declaration |
의사표시 (착오 있는 법률행위) | ActId "declaration" |
Fact Translation¶
- 표의자에게 중대한 과실이 있었음
- 상대방이 표의자의 착오를 알고 이를 이용하였음
GrossNegligenceCounterpartyKnew
Judgment Comparison¶
주문¶
상고를 기각한다. 상고비용은 피고가 부담한다.
판결요지¶
[1] 민법 제109조는 의사표시에 착오가 있는 경우 이를 취소할 수 있도록 하여 표의자를 보호하면서도, 그 착오가 법률행위의 내용의 중요 부분에 관한 것이 아니거나 표의자의 중대한 과실로 인한 경우에는 그 취소권 행사를 제한하는 한편, 표의자가 의사표시를 취소하는 경우에도 그 취소로 선의의 제3자에게 대항하지 못하도록 하여 거래의 안전과 상대방의 신뢰를 아울러 보호하고 있다. 이러한 민법 제109조의 법리는 그 적용을 배제하는 취지의 별도의 규정이 있거나 당사자의 합의로 그 적용을 배제하는 등의 특별한 사정이 없는 한 원칙적으로 모든 사법(私法)상의 의사표시에 적용된다고 보아야 한다. ...
[2] 민법 제109조 제1항 단서는 의사표시의 착오가 표의자의 중대한 과실로 인한 때에는 그 의사표시를 취소하지 못한다고 규정하고 있는데, 위 단서 규정은 표의자의 상대방의 이익을 보호하기 위한 것이므로, 상대방이 표의자의 착오를 알고 이를 이용한 경우에는 그 착오가 표의자의 중대한 과실로 인한 것이라고 하더라도 표의자는 그 의사표시를 취소할 수 있다.
이유¶
민법 제109조의 법리는 원칙적으로 모든 사법상 의사표시에 적용되며, 금융투자상품시장 거래도 별도의 배제 규정이 없으면 민법 제109조가 적용된다는 원심의 판단을 수긍. 상대방이 표의자의 착오를 알고 이를 이용한 경우 중대한 과실이 있더라도 취소 가능하다는 원심의 판단이 정당. 사건에서 피고 직원이 비정상적 주문가격을 확인한 후 이를 이용해 단시간 내 반복적으로 매도주문을 한 것으로 인정.
Case 5: 상대방 대리인의 사기 (제3자 사기 부정) (대법원 98다60828)¶
판정: ❌ 불일치 — 프레임워크는 §110(2)를 적용하여 제3자 사기 상황으로 판단하고 법률행위가 유효하다고 결론지었으나, 대법원은 출장소장이 상대방(은행)과 동일시할 수 있는 자이므로 제3자에 해당하지 않아 §110(2)의 제한이 적용되지 않고 취소 가능하다고 판시하였다. 프레임워크가 '상대방과 동일시할 수 있는 자'의 법리를 반영하지 못한 것이 핵심 오류이다.
Identity¶
| ID | 역할 | Haskell |
|---|---|---|
bank |
원고 은행 (상대방) | PersonId "bank" |
defendants |
피고들 (사기에 의해 약정한 자) | PersonId "defendants" |
branch-mgr |
출장소장 (은행과 동일시되는 자, 사기 행위자) | PersonId "branchMgr" |
agreement |
금전소비대차 및 연대보증 약정 | ActId "agreement" |
Fact Translation¶
- 출장소장이 피고들을 기망하여 약정 체결
- 출장소장은 제3자가 아니라 은행과 동일시되는 자 (법원 판단)
ThirdPartyFraudCustom: AgentIdentifiableWithCounterparty (ADT 미지원)
Judgment Comparison¶
주문¶
상고를 기각한다. 상고비용은 원고의 부담으로 한다.
판결요지¶
[1] 상대방 있는 의사표시에 관하여 제3자가 사기나 강박을 한 경우에는 상대방이 그 사실을 알았거나 알 수 있었을 경우에 한하여 그 의사표시를 취소할 수 있으나, "상대방의 대리인 등 상대방과 동일시할 수 있는 자의 사기나 강박은 제3자의 사기·강박에 해당하지 아니한다."
[2] 은행의 출장소장이 어음할인을 부탁받자 그 어음이 부도날 경우를 대비하여 담보조로 받아두는 것이라고 속이고 금전소비대차 및 연대보증 약정을 체결한 후 그 대출금을 자신이 인출하여 사용한 사안에서, 위 출장소장의 행위는 "은행 또는 은행과 동일시할 수 있는 자의 사기일 뿐 제3자의 사기로 볼 수 없으므로," 은행이 그 사기사실을 알았거나 알 수 있었을 경우에 한하여 위 약정을 취소할 수 있는 것은 아니라고 본 사례.
이유¶
소외 1은 원고 은행 출장소장으로서 피고들에게 위 어음들이 부도날 경우를 대비하여 담보의 의미로 받아두는 것이라고 거짓말하고 이에 속은 피고들로 하여금 ... 금전소비대차약정서 등 대출관련 서류에 서명·날인하게 한 다음 ... 그 금원을 인출, 임의 사용하였다. ... 소외 1의 사기는 원고 또는 원고와 동일시할 수 있는 자의 사기일 뿐 제3자의 사기로 볼 수 없으므로, 원고가 소외 1의 사기사실을 알았거나 알 수 있었을 경우에 한하여 피고가 위 약정을 취소할 수 있다고 볼 것은 아니다.
Case 6: 무권대리 + 표현대리 불성립 (대법원 91다32190)¶
판정: ❌ 불일치 — 법원은 고객유치·투자상담 등의 업무위임이 사실행위에 불과하여 기본대리권이 될 수 없다고 보아 제126조 표현대리 성립을 부정하였으나, 프레임워크는 제126조를 그대로 적용하여 유효라고 판단하였다. 프레임워크가 기본대리권의 성질(법률행위 위임 vs 사실행위 위임)을 구별하지 못한 것이 불일치의 원인이다.
Identity¶
| ID | 역할 | Haskell |
|---|---|---|
principal |
증권회사 (본인) | PersonId "principal" |
agent |
사실상 투자상담사 (무권대리인) | PersonId "agent" |
counterparty |
고객/투자자 (상대방) | PersonId "counterparty" |
contract |
예탁금 수령 및 위탁매매계약 | ActId "contract" |
Fact Translation¶
- 대리인이 권한을 넘어 계약 체결
- 위임받은 업무는 사실행위에 불과하여 기본대리권 부정
ExceededScopeCustom: NoBasicAgencyAuthority (ADT 미지원)
Judgment Comparison¶
주문¶
각 상고를 기각한다. 상고비용은 상고인 각자의 부담으로 한다.
판결요지¶
가. 증권회사의 직원이 아니면서도 사실상 투자상담사의 역할을 하는 자에게 유가증권 매매의 위탁 권유 등과 관련하여 증권회사를 대리하여 예탁금을 수령하거나 위탁매매계약을 체결할 권한이 있고 또 그것이 증권업계의 일반적인 관행이라고 볼 수 없다고 한 사례.
나. 민법 제126조의 표현대리가 성립하기 위하여는 무권대리인에게 법률행위에 관한 기본대리권이 있어야 하는데, 증권회사로부터 위임받은 고객의 유치, 투자상담 및 권유, 위탁매매약정실적의 제고 등의 업무는 사실행위에 불과하므로 이를 기본대리권으로 하여서는 권한초과의 표현대리가 성립할 수 없다.
이유¶
원심은 소외 강명복이 투자상담사로서 등록을 하지 아니한 채 피고 회사 장안동지점장의 묵인하에 사실상 투자상담사로서 근무하면서 고객을 유치하고 고객들을 상대로 투자상담 등의 업무를 한 사실이 인정되나 위 강명복이 피고 회사를 대리하여 고객으로부터 예탁금을 수령할 권한이 있는 자로는 볼 수 없다고 판단하였다. ... 증권회사로부터 위임받은 고객의 유치, 투자상담 및 권유, 위탁매매약정실적의 제고 등의 업무는 사실행위에 불과하므로 이를 기본대리권으로 하여서는 권한초과의 표현대리가 성립할 수 없다.
Analysis: Current Limitations and Extensibility¶
Current State¶
Across 6 Supreme Court cases, the framework accurately encodes statutory text (조문) but does not yet reflect case-law doctrines (판례법리) — judge-made exceptions established through precedent.
| Case | Match | Missing doctrine |
|---|---|---|
| 2005다71659 | ⚠️ partial | Reasoning chain for §6 implied consent (처분허락) |
| 94다12074 | ⚠️ partial | Conditional judgment pending fact-finding (선의 여부) |
| 2013다49794 | ⚠️ partial | Counterparty exploitation defeats gross-negligence bar (§109 판례법리) |
| 2019다280375 | ❌ mismatch | Registration chain validity analysis (등기법 layer) |
| 98다60828 | ❌ mismatch | Agent identifiable with counterparty ≠ third party (§110②) |
| 91다32190 | ❌ mismatch | Factual-act delegation ≠ basic agency authority (§126 prerequisite) |
What This Means¶
The mismatches are not design limitations — they are encoding coverage gaps. The framework's core engine already supports the exact mechanism needed to close them: stratified defeasible reasoning.
Each legal rule can override a lower layer's verdict, and the entire override chain is preserved as a type-level proof term:
-- Base rule application
JBase :: Verdict → ArticleRef → Text → Judgment '[l]
-- Higher layer overrides lower layer's verdict
JOverride :: Judgment prev → Verdict → ArticleRef → Text → Judgment (l ': prev)
-- Higher layer delegates (does not override)
JDelegate :: Judgment prev → Judgment (l ': prev)
To close the gaps identified above:
98다60828 — Add an AgentIdentifiableWithCounterparty fact. When present,
a new layer overrides §110②'s third-party fraud restriction. The existing
§110 rules remain untouched.
2013다49794 — Add a CounterpartyExploitedMistake fact. When present,
a new layer overrides §109's gross-negligence bar. The existing §109 rule
remains untouched.
91다32190 — Add a DelegatedFactualActOnly fact. When present,
it blocks §126 apparent authority from applying as a precondition. The
existing §126 rule remains untouched.
Each extension adds new fact types and new layers without modifying existing rules. This is the defeasible reasoning engine working as designed.
The Verification Pipeline as a Development Tool¶
This comparison pipeline mechanically identifies where the framework needs to grow:
- Encode a court case as facts
- Generate framework output (purely mechanical)
- A zero-context LLM compares output against the actual judgment
- Each mismatch is the next doctrine to encode
Mismatch ≠ failure. Mismatch = next work item.
Appendix: Verification Methodology¶
Match Verification Subagent¶
Each case is verified by an LLM subagent that compares the framework output against the actual court judgment. The subagent operates under these constraints:
- Model: Claude (claude-opus-4-6 via Claude Code Agent tool)
- Context provided: None — only
fulltext.mdandframework-output.md - Directive:
scripts/directives/verify-match.md
The subagent has no knowledge of the project architecture, Haskell code, or any other case. It reads only the two specified files and outputs a YAML verdict.
Match Criteria¶
- true: Framework's final judgment essentially aligns with the court's holding
- partial: Alignment on some issues, divergence on others
- false: Framework's conclusion contradicts the court's decision